From 13a64ef64c3cd5c2066d66c1228ff789c06bc5d8 Mon Sep 17 00:00:00 2001 From: Siddharth Bhat Date: Sun, 31 Mar 2024 15:57:39 +0100 Subject: [PATCH] new run, this time saving CSV intermediate --- .../plot-stage2.ipynb | 1947 +++++++++++++++++ .../plot-stage3.ipynb | 1721 +++++++++++++++ .../run-lean-stage-bench-worker.sh | 75 + .../run-lean-stage-bench-wrapper.sh | 3 + .../speedcenter-worker.sh | 47 + .../speedcenter-wrapper.sh | 3 + 6 files changed, 3796 insertions(+) create mode 100644 1-runs/run-2024-03-31---15-55---tcg40/plot-stage2.ipynb create mode 100644 1-runs/run-2024-03-31---15-55---tcg40/plot-stage3.ipynb create mode 100644 1-runs/run-2024-03-31---15-55---tcg40/run-lean-stage-bench-worker.sh create mode 100755 1-runs/run-2024-03-31---15-55---tcg40/run-lean-stage-bench-wrapper.sh create mode 100644 1-runs/run-2024-03-31---15-55---tcg40/speedcenter-worker.sh create mode 100755 1-runs/run-2024-03-31---15-55---tcg40/speedcenter-wrapper.sh diff --git a/1-runs/run-2024-03-31---15-55---tcg40/plot-stage2.ipynb b/1-runs/run-2024-03-31---15-55---tcg40/plot-stage2.ipynb new file mode 100644 index 000000000000..b9bdfb16a7dd --- /dev/null +++ b/1-runs/run-2024-03-31---15-55---tcg40/plot-stage2.ipynb @@ -0,0 +1,1947 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "305ca8eb-b873-4f3e-aa55-9d0adeab7fe9", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from IPython.display import display, HTML\n", + "from datetime import timedelta\n", + "import seaborn as sns\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "56f9cc1a-76c5-488f-9fa2-a6eade40369d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "noreuse\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileConditionMetricValue
0Init/Prelude.leanreuse_across_ctor_disabledrss147406848
1Init/Prelude.leanreuse_across_ctor_disablednum_alloc1321689
2Init/Prelude.leanreuse_across_ctor_disablednum_small_alloc26538112
3Init/Prelude.leanreuse_across_ctor_disablednum_dealloc1273439
4Init/Prelude.leanreuse_across_ctor_disablednum_small_dealloc26156876
...............
8495Lake/Main.leanreuse_across_ctor_disablednum_segments4
8496Lake/Main.leanreuse_across_ctor_disablednum_pages3715
8497Lake/Main.leanreuse_across_ctor_disablednum_exports0
8498Lake/Main.leanreuse_across_ctor_disablednum_recycled_pages743
8499Lake/Main.leanreuse_across_ctor_disabledtime_elapsed_ms903
\n", + "

8500 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " File Condition Metric \\\n", + "0 Init/Prelude.lean reuse_across_ctor_disabled rss \n", + "1 Init/Prelude.lean reuse_across_ctor_disabled num_alloc \n", + "2 Init/Prelude.lean reuse_across_ctor_disabled num_small_alloc \n", + "3 Init/Prelude.lean reuse_across_ctor_disabled num_dealloc \n", + "4 Init/Prelude.lean reuse_across_ctor_disabled num_small_dealloc \n", + "... ... ... ... \n", + "8495 Lake/Main.lean reuse_across_ctor_disabled num_segments \n", + "8496 Lake/Main.lean reuse_across_ctor_disabled num_pages \n", + "8497 Lake/Main.lean reuse_across_ctor_disabled num_exports \n", + "8498 Lake/Main.lean reuse_across_ctor_disabled num_recycled_pages \n", + "8499 Lake/Main.lean reuse_across_ctor_disabled time_elapsed_ms \n", + "\n", + " Value \n", + "0 147406848 \n", + "1 1321689 \n", + "2 26538112 \n", + "3 1273439 \n", + "4 26156876 \n", + "... ... \n", + "8495 4 \n", + "8496 3715 \n", + "8497 0 \n", + "8498 743 \n", + "8499 903 \n", + "\n", + "[8500 rows x 4 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "reuse\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileConditionMetricValue
0Init/Prelude.leanreuse_across_ctor_disabledrss147394560
1Init/Prelude.leanreuse_across_ctor_disablednum_alloc1321689
2Init/Prelude.leanreuse_across_ctor_disablednum_small_alloc26538165
3Init/Prelude.leanreuse_across_ctor_disablednum_dealloc1273439
4Init/Prelude.leanreuse_across_ctor_disablednum_small_dealloc26156925
...............
8495Lake/Main.leanreuse_across_ctor_disablednum_segments4
8496Lake/Main.leanreuse_across_ctor_disablednum_pages3715
8497Lake/Main.leanreuse_across_ctor_disablednum_exports0
8498Lake/Main.leanreuse_across_ctor_disablednum_recycled_pages743
8499Lake/Main.leanreuse_across_ctor_disabledtime_elapsed_ms820
\n", + "

8500 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " File Condition Metric \\\n", + "0 Init/Prelude.lean reuse_across_ctor_disabled rss \n", + "1 Init/Prelude.lean reuse_across_ctor_disabled num_alloc \n", + "2 Init/Prelude.lean reuse_across_ctor_disabled num_small_alloc \n", + "3 Init/Prelude.lean reuse_across_ctor_disabled num_dealloc \n", + "4 Init/Prelude.lean reuse_across_ctor_disabled num_small_dealloc \n", + "... ... ... ... \n", + "8495 Lake/Main.lean reuse_across_ctor_disabled num_segments \n", + "8496 Lake/Main.lean reuse_across_ctor_disabled num_pages \n", + "8497 Lake/Main.lean reuse_across_ctor_disabled num_exports \n", + "8498 Lake/Main.lean reuse_across_ctor_disabled num_recycled_pages \n", + "8499 Lake/Main.lean reuse_across_ctor_disabled time_elapsed_ms \n", + "\n", + " Value \n", + "0 147394560 \n", + "1 1321689 \n", + "2 26538165 \n", + "3 1273439 \n", + "4 26156925 \n", + "... ... \n", + "8495 4 \n", + "8496 3715 \n", + "8497 0 \n", + "8498 743 \n", + "8499 820 \n", + "\n", + "[8500 rows x 4 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "reuse = pd.read_csv('1711699885---29-03-2024---08:11:25.noreuse.stage2.csv',\n", + " names=[\"File\", \"Condition\", \"Metric\", \"Value\"])\n", + "noreuse = pd.read_csv('1711699885---29-03-2024---08:11:25.noreuse.stage3.csv', \n", + " names=[\"File\", \"Condition\", \"Metric\", \"Value\"])\n", + "print(\"noreuse\"); display(noreuse);\n", + "print(\"reuse\"); display(reuse);" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2912e2fe-5706-4831-a8b0-77fc8e6a2133", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "time (reuse): 0:35:56.367000 | time (noreuse): 0:35:30.234000\n" + ] + } + ], + "source": [ + "# Filtering the rows where Metric is 'time_elapsed_ms' and then summing the 'Value' column for both DataFrames\n", + "sum_time_elapsed_reuse = reuse[reuse[\"Metric\"] == \"time_elapsed_ms\"][\"Value\"].sum()\n", + "sum_time_elapsed_no_reuse = noreuse[noreuse[\"Metric\"] == \"time_elapsed_ms\"][\"Value\"].sum()\n", + "\n", + "sum_time_elapsed_reuse, sum_time_elapsed_no_reuse\n", + "\n", + "# Ensuring the values are in a compatible format for timedelta\n", + "time_reuse = timedelta(milliseconds=int(sum_time_elapsed_reuse))\n", + "time_no_reuse = timedelta(milliseconds=int(sum_time_elapsed_no_reuse))\n", + "\n", + "# Formatting as hours:minutes:seconds.milliseconds again\n", + "time_format_reuse = str(time_reuse)\n", + "time_format_no_reuse = str(time_no_reuse)\n", + "print(f\"time (reuse): {time_format_reuse} | time (noreuse): {time_format_no_reuse}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a8f14d78-1cf1-4d14-a128-76fa55975629", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileCondition_reuseMetricValue_reuseCondition_no_reuseValue_no_reuse
0Init/Prelude.leanreuse_across_ctor_disabledrss147394560reuse_across_ctor_disabled147406848
1Init/Prelude.leanreuse_across_ctor_disablednum_alloc1321689reuse_across_ctor_disabled1321689
2Init/Prelude.leanreuse_across_ctor_disablednum_small_alloc26538165reuse_across_ctor_disabled26538112
3Init/Prelude.leanreuse_across_ctor_disablednum_dealloc1273439reuse_across_ctor_disabled1273439
4Init/Prelude.leanreuse_across_ctor_disablednum_small_dealloc26156925reuse_across_ctor_disabled26156876
.....................
8495Lake/Main.leanreuse_across_ctor_disablednum_segments4reuse_across_ctor_disabled4
8496Lake/Main.leanreuse_across_ctor_disablednum_pages3715reuse_across_ctor_disabled3715
8497Lake/Main.leanreuse_across_ctor_disablednum_exports0reuse_across_ctor_disabled0
8498Lake/Main.leanreuse_across_ctor_disablednum_recycled_pages743reuse_across_ctor_disabled743
8499Lake/Main.leanreuse_across_ctor_disabledtime_elapsed_ms820reuse_across_ctor_disabled903
\n", + "

8500 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " File Condition_reuse Metric \\\n", + "0 Init/Prelude.lean reuse_across_ctor_disabled rss \n", + "1 Init/Prelude.lean reuse_across_ctor_disabled num_alloc \n", + "2 Init/Prelude.lean reuse_across_ctor_disabled num_small_alloc \n", + "3 Init/Prelude.lean reuse_across_ctor_disabled num_dealloc \n", + "4 Init/Prelude.lean reuse_across_ctor_disabled num_small_dealloc \n", + "... ... ... ... \n", + "8495 Lake/Main.lean reuse_across_ctor_disabled num_segments \n", + "8496 Lake/Main.lean reuse_across_ctor_disabled num_pages \n", + "8497 Lake/Main.lean reuse_across_ctor_disabled num_exports \n", + "8498 Lake/Main.lean reuse_across_ctor_disabled num_recycled_pages \n", + "8499 Lake/Main.lean reuse_across_ctor_disabled time_elapsed_ms \n", + "\n", + " Value_reuse Condition_no_reuse Value_no_reuse \n", + "0 147394560 reuse_across_ctor_disabled 147406848 \n", + "1 1321689 reuse_across_ctor_disabled 1321689 \n", + "2 26538165 reuse_across_ctor_disabled 26538112 \n", + "3 1273439 reuse_across_ctor_disabled 1273439 \n", + "4 26156925 reuse_across_ctor_disabled 26156876 \n", + "... ... ... ... \n", + "8495 4 reuse_across_ctor_disabled 4 \n", + "8496 3715 reuse_across_ctor_disabled 3715 \n", + "8497 0 reuse_across_ctor_disabled 0 \n", + "8498 743 reuse_across_ctor_disabled 743 \n", + "8499 820 reuse_across_ctor_disabled 903 \n", + "\n", + "[8500 rows x 6 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_merged = pd.merge(reuse, noreuse, on=[\"File\", \"Metric\"], suffixes=('_reuse', '_no_reuse'))\n", + "display(df_merged)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "6c6fc924-32ba-4821-842b-a48c0489c96e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

time_elapsed_ms

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0Lean/Compiler/IR.lean738148474650.269542
1Lean/Compiler/InitAttr.lean11052196109149.681239
2Lean/PrettyPrinter/Delaborator/SubExpr.lean1065189783243.858724
3Lean/Compiler/IR/UnboxResult.lean50589539043.575419
4Lean/Compiler/LCNF/PullLetDecls.lean1306229198542.994326
..................
845Lean/Elab/Tactic/Delta.lean25881325-1263-95.320755
846Lean/Elab/Tactic/Symm.lean1794886-908-102.483070
847Lean/Elab/Eval.lean1821896-925-103.236607
848Lean/Elab/PreDefinition/WF/TerminationArgument...34751695-1780-105.014749
849Lean/Elab/AuxDef.lean28571280-1577-123.203125
\n", + "

850 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse \\\n", + "0 Lean/Compiler/IR.lean 738 \n", + "1 Lean/Compiler/InitAttr.lean 1105 \n", + "2 Lean/PrettyPrinter/Delaborator/SubExpr.lean 1065 \n", + "3 Lean/Compiler/IR/UnboxResult.lean 505 \n", + "4 Lean/Compiler/LCNF/PullLetDecls.lean 1306 \n", + ".. ... ... \n", + "845 Lean/Elab/Tactic/Delta.lean 2588 \n", + "846 Lean/Elab/Tactic/Symm.lean 1794 \n", + "847 Lean/Elab/Eval.lean 1821 \n", + "848 Lean/Elab/PreDefinition/WF/TerminationArgument... 3475 \n", + "849 Lean/Elab/AuxDef.lean 2857 \n", + "\n", + " Value_no_reuse absolute_diff %Decrease \n", + "0 1484 746 50.269542 \n", + "1 2196 1091 49.681239 \n", + "2 1897 832 43.858724 \n", + "3 895 390 43.575419 \n", + "4 2291 985 42.994326 \n", + ".. ... ... ... \n", + "845 1325 -1263 -95.320755 \n", + "846 886 -908 -102.483070 \n", + "847 896 -925 -103.236607 \n", + "848 1695 -1780 -105.014749 \n", + "849 1280 -1577 -123.203125 \n", + "\n", + "[850 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcaUlEQVR4nO3deVwVZf//8fc5IKssbggoIu67pqa3ZS6JYZllaWplmS226G2mbd5puZVZaZam1F23VtpmmXVnueHSnRqpqW1oaBiVopEpCArCuX5/+ON8O4HKHFkO8Ho+Hj5qrplr5jNnzsB5MzPXsRljjAAAAAAAxWYv7wIAAAAAoKIhSAEAAACARQQpAAAAALCIIAUAAAAAFhGkAAAAAMAighQAAAAAWESQAgAAAACLCFIAAAAAYBFBCgAAAAAsIkgBQBUwZcoU2Wy2MtlWr1691KtXL+f0xo0bZbPZ9P7775fJ9m+77TY1bNiwTLb1d4cPH9bgwYNVq1Yt2Ww2zZ07t1zqKMvjXZr+/l6qqMrzPQmg9BCkABTLb7/9pv79+ys4OFitWrXSf//730LLLF++XGFhYTp+/Hiheb169ZLNZpPNZpPdbldwcLCaN2+uW265RWvXri2LXag0Fi9e7HwtbTab/Pz8FBkZqbi4OL344ovKzMwske0cPHhQU6ZM0a5du0pkfSXJU2t74IEHtHr1ak2cOFFvvvmm+vXrV2rbys7O1pQpU7Rx48ZS2wYA4Oy8y7sAABXDiBEj9Ntvv2nWrFnavHmzbrjhBu3Zs8f5V9ZTp07pwQcf1IwZMxQSElLkOurXr6+ZM2dKkrKysrRv3z4tX75cS5Ys0ZAhQ7RkyRJVq1atrHapwps2bZpiYmJ0+vRppaWlaePGjRo3bpzmzJmjjz/+WO3atXMuO2nSJD366KOW1n/w4EFNnTpVDRs2VIcOHYrdb82aNZa2445z1fbvf/9bDoej1Gsoyvr163XttdfqwQcfLPVtZWdna+rUqZJU6KqNO8cbAGANQQrAeZ08eVLr16/Xxo0b1aNHD91zzz3asmWLVq9erbvvvluS9NxzzykkJER33nnnWdcTEhKi4cOHu7Q9/fTTGjt2rBYsWKCGDRtq1qxZpbovf5WVlaXAwMAy215Ju/LKK9W5c2fn9MSJE7V+/XpdffXVuuaaa5SUlCR/f39Jkre3t7y9S/dHfnZ2tgICAuTj41Oq2zmf8gzjR44cUWhoaImt79SpU/Lx8ZHdbu0GkrI43gBQ1XFrH4DzOnXqlIwxqlGjhiTJZrMpNDRU2dnZks7c9vf000/rhRdesPyBz8vLSy+++KJatWql+fPnF7otcMmSJerUqZP8/f1Vs2ZNDRs2TL/88kuh9SQmJuqqq65SjRo1FBgYqHbt2umFF15wzr/ttttUvXp17d+/X1dddZWCgoJ08803S5IcDofmzp2r1q1by8/PT3Xr1tXdd9+tP//802UbH330kfr376/IyEj5+vqqcePGmj59uvLz812WS05O1qBBgxQeHi4/Pz/Vr19fw4YNc3vfrLj88ss1efJk/fzzz1qyZImzvahnZtauXavu3bsrNDRU1atXV/PmzfWvf/1L0pnnmi6++GJJ0siRI523ES5evFjSmSsgbdq00Y4dO9SjRw8FBAQ4+57tuZb8/Hz961//Unh4uAIDA3XNNdcU2t+GDRvqtttuK9T3r+s8X21FPY+SlZWlCRMmKCoqSr6+vmrevLmee+45GWNclrPZbBozZoxWrFihNm3ayNfXV61bt9aqVauKfsH/v4LbLY0xeumll5w1Ffjpp590ww03qGbNmgoICNA//vEPrVy50mUdBc+SvfPOO5o0aZLq1aungIAAZWRkFNregQMHVKdOHUnS1KlTndubMmWKpKKPd8G+LVu2TK1atZK/v7+6deumb7/9VpL08ssvq0mTJvLz81OvXr104MCBQttNTExUv379FBISooCAAPXs2VObN28+52tTlOKec3+Xm5urxx9/XJ06dVJISIgCAwN12WWXacOGDYVeH5vNpueee07PP/+8oqOj5e/vr549e+q7775zWTYtLU0jR45U/fr15evrq4iICF177bWF9v+zzz7TZZddpsDAQAUFBal///76/vvvC9VY8N7x8/NTmzZt9OGHH1p+faT/O8e++eYb9ezZUwEBAWrSpInzWcNNmzapa9eu8vf3V/PmzbVu3TqX/pmZmRo3bpwaNmwoX19fhYWFqW/fvvr666/dqgdAEQwAFEPjxo3NsGHDzE8//WSWLFlibDab+eKLL4wxxtx0001m8ODB5+zfs2dP07p167POnz59upFkPvnkE2fbjBkzjM1mM0OHDjULFiwwU6dONbVr1zYNGzY0f/75p3O5NWvWGB8fHxMdHW2eeOIJs3DhQjN27FgTGxvrXGbEiBHG19fXNG7c2IwYMcLEx8ebN954wxhjzJ133mm8vb3NXXfdZeLj480jjzxiAgMDzcUXX2xyc3Od6xg4cKAZMmSIefbZZ83ChQvNDTfcYCSZBx980LlMTk6OiYmJMZGRkWbGjBnm1VdfNVOnTjUXX3yxOXDggOV9K8qiRYuMJLNt27Yi5//yyy9GkssxeeKJJ8xff+R/9913xsfHx3Tu3Nm88MILJj4+3jz44IOmR48exhhj0tLSzLRp04wkM2rUKPPmm2+aN9980+zfv98Yc+Z4hoeHmzp16ph//vOf5uWXXzYrVqxwzuvZs6dzWxs2bDCSTNu2bU27du3MnDlzzKOPPmr8/PxMs2bNTHZ2tnPZ6OhoM2LEiEL79Nd1nq+2ESNGmOjoaGdfh8NhLr/8cmOz2cydd95p5s+fbwYMGGAkmXHjxrlsR5Jp3769iYiIMNOnTzdz5841jRo1MgEBASY9Pf2sx2T//v3mzTffNJJM3759nTUV1Fu3bl0TFBRkHnvsMTNnzhzTvn17Y7fbzfLlywu9Tq1atTIdOnQwc+bMMTNnzjRZWVmFtnfixAmzcOFCI8lcd911zu3t3r27yONdsG/t2rUzUVFR5umnnzZPP/20CQkJMQ0aNDDz5883rVq1MrNnzzaTJk0yPj4+pnfv3i79ExISjI+Pj+nWrZuZPXu2ef755027du2Mj4+PSUxMPOtrU5TinnN/fy/9/vvvJiIiwowfP94sXLjQPPPMM6Z58+amWrVqZufOnc7lUlJSnO+5hg0bmlmzZpmpU6eamjVrmjp16pi0tDTnspdccokJCQkxkyZNMq+++qp56qmnTO/evc2mTZucy7zxxhvGZrOZfv36mXnz5plZs2aZhg0bmtDQUJOSkuJcbvXq1cZut5s2bdqYOXPmmMcee8yEhISY1q1bu7wni6Nnz54mMjLSREVFmYceesjMmzfPtGrVynh5eZl33nnHhIeHmylTppi5c+eaevXqmZCQEJORkeHsf9NNNxkfHx8zfvx48+qrr5pZs2aZAQMGmCVLlliqA8DZEaQAFEtCQoKpUaOGkeTyAXTz5s3G39/fJSQU5XxB6sMPPzSSzAsvvGCMMebAgQPGy8vLPPnkky7Lffvtt8bb29vZnpeXZ2JiYkx0dHShAOJwOJz/P2LECCPJPProoy7L/O9//zOSzNKlS13aV61aVaj9rx/4C9x9990mICDAnDp1yhhjzM6dO40ks2zZsrPua3H37WzOF6SMMSYkJMRcdNFFzum/f7B+/vnnjSTz+++/n3Ud27ZtM5LMokWLCs3r2bOnkWTi4+OLnFdUkKpXr57LB7333nvP5ZgbU7wgdb7a/h6kVqxYYSSZGTNmuCw3ePBgY7PZzL59+5xtkoyPj49L2+7du40kM2/evELb+jtJZvTo0S5t48aNM5LM//73P2dbZmamiYmJMQ0bNjT5+fnGmP97nRo1alTke+3vfv/9dyPJPPHEE4XmnS1I+fr6unzwf/nll40kEx4e7nJsJk6caCQ5l3U4HKZp06YmLi7O5bzKzs42MTExpm/fvuett4CVc+7vxz0vL8/k5OS49Pvzzz9N3bp1ze233+5sKwhS/v7+5tdff3W2JyYmGknmgQcecPaVZJ599tmz1puZmWlCQ0PNXXfd5dKelpZmQkJCXNo7dOhgIiIizLFjx5xta9asMZLcClKSzFtvveVs27Nnj5Fk7Ha7+fLLL53tq1evLnQ+hISEFHovAihZ3NoHoFguv/xypaam6ssvv1Rqaqqef/55ORwOjR07VhMmTFB0dLQWLlyoFi1aqHnz5oqPj7e0/urVq0uSc8S55cuXy+FwaMiQIUpPT3f+Cw8PV9OmTZ238uzcuVMpKSkaN25coWdTihr++d5773WZXrZsmUJCQtS3b1+X7XTq1EnVq1d3uWWo4HmjgjrT09N12WWXKTs7W3v27JEk50Abq1evdt76+HfF3bcLUb169XOO3lfwWn300UduD8zg6+urkSNHFnv5W2+9VUFBQc7pwYMHKyIiQp9++qlb2y+uTz/9VF5eXho7dqxL+4QJE2SM0WeffebSHhsbq8aNGzun27Vrp+DgYP30009ub79Lly7q3r27s6169eoaNWqUDhw4oB9++MFl+REjRri810pSnz59XG577Nq1qyRp0KBBLsemoL1gn3ft2qXk5GTddNNN+uOPP5zv2aysLPXp00eff/55sd9HVs65v/Py8nI+g+dwOHT06FHl5eWpc+fORd6yNnDgQNWrV8853aVLF3Xt2tX5nvP395ePj482btx41tsK165dq2PHjunGG290qdfLy0tdu3Z11nvo0CHt2rVLI0aMcBlwp2/fvmrVqlWxXpu/q169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ZXrhhRc0ePBgXXLJJapRo4ZGjBihsWPHymaz6c033ywUhNavX68xY8bohhtuULNmzZSXl6c333xTXl5eGjRokKV9O5/PPvtMe/bsUV5eng4fPqz169dr7dq1io6O1scffyw/P7+z9p02bZo+//xz9e/fX9HR0Tpy5IgWLFig+vXru1wVDA0NVXx8vIKCghQYGKiuXbu6/QxPzZo11b17d40cOVKHDx/W3Llz1aRJE911113OZe688069//776tevn4YMGaL9+/e7XBUoYKW2AQMGqHfv3nrsscd04MABtW/fXmvWrNFHH32kcePGFVp3SXv00Uf19ttv68orr9TYsWNVs2ZNvf7660pJSdEHH3xg+bvXCvj7+6tVq1Z699131axZM9WsWVNt2rQp1vOCVtntdr366qu68sor1bp1a40cOVL16tXTb7/9pg0bNig4OFj//e9/i7Wu4p5zRbn66qu1fPlyXXfdderfv79SUlIUHx+vVq1aFRnwmjRpou7du+vee+9VTk6O5s6dq1q1aunhhx+WdOaPQn369NGQIUPUqlUreXt768MPP9Thw4edgzwEBwdr4cKFuuWWW9SxY0cNGzZMderUUWpqqlauXKlLL73UGdJnzpyp/v37q3v37rr99tt19OhRzZs3T61bty6yvtKSmZmp+vXra/DgwWrfvr2qV6+udevWadu2bZo9e3aZ1QFUemU+TiCACm3lypWmevXq5uDBg4XmzZw500RGRpqIiAgza9Ysl3kFQ/kW/Ktevbpp2rSpGT58uFmzZs1Zt/fBBx+Y7t27m8DAQBMYGGhatGhhRo8ebfbu3euy3BdffGH69u1rgoKCTGBgoGnXrp3LcNUjRowwgYGBZ93OK6+8Yjp16mT8/f1NUFCQadu2rXn44Ydd9nPz5s3mH//4h/H39zeRkZHm4Ycfdg47vGHDBmOMMT/99JO5/fbbTePGjY2fn5+pWbOm6d27t1m3bp3b+/Z3BcOfF/zz8fEx4eHhpm/fvuaFF15wGca6wN+Hw05ISDDXXnutiYyMND4+PiYyMtLceOON5scff3Tp99FHH5lWrVoZb29vl+GVzzWc/dmGP3/77bfNxIkTTVhYmPH39zf9+/c3P//8c6H+s2fPNvXq1TO+vr7m0ksvNdu3by+0znPV9vfhz405M4T1Aw88YCIjI021atVM06ZNzbPP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NNHixYtLv/gq4mzve5vNpm3btkmSDhw4UOT8L7/8spyrr7waNmxY6PV++umnXZb55ptvdNlll8nPz09RUVF65plnyqnaquHAgQO64447FBMTI39/fzVu3FhPPPGEcnNzXZbhXCl7L730kho2bCg/Pz917dpVX331VXmXVGXMnDlTF198sYKCghQWFqaBAwdq7969Lsv06tWr0Dlxzz33lFPFVcOUKVMKveYtWrRwzj916pRGjx6tWrVqqXr16ho0aJAOHz5cjhWfX6UY/txT5ebm6oYbblC3bt302muvFZq/Y8cOhYWFacmSJYqKitKWLVs0atQoeXl5acyYMS7L7t271+XbnsPCwkq9/srqfMclPz9f/fv3V3h4uLZs2aJDhw7p1ltvVbVq1fTUU09JklJSUtS/f3/dc889Wrp0qRISEnTnnXcqIiJCcXFxZb1Llc4ll1yiQ4cOubRNnjxZCQkJ6ty5s0v7unXr1Lp1a+d0rVq1yqTGqmratGm66667nNNBQUHO/8/IyNAVV1yh2NhYxcfH69tvv9Xtt9+u0NBQjRo1qjzKrfT27Nkjh8Ohl19+WU2aNNF3332nu+66S1lZWXruuedcluVcKTvvvvuuxo8fr/j4eHXt2lVz585VXFyc9u7dy+/vMrBp0yaNHj1aF198sfLy8vSvf/1LV1xxhX744QcFBgY6l7vrrrs0bdo053RAQEB5lFultG7dWuvWrXNOe3v/XxR54IEHtHLlSi1btkwhISEaM2aMrr/+em3evLk8Si0eg1K3aNEiExISUqxl77vvPtO7d2/n9IYNG4wk8+eff5ZOcVXY2Y7Lp59+aux2u0lLS3O2LVy40AQHB5ucnBxjjDEPP/ywad26tUu/oUOHmri4uFKtuarKzc01derUMdOmTXO2paSkGElm586d5VdYFRMdHW2ef/75s85fsGCBqVGjhvM8McaYRx55xDRv3rwMqkOBZ555xsTExDinOVfKXpcuXczo0aOd0/n5+SYyMtLMnDmzHKuquo4cOWIkmU2bNjnbevbsae6///7yK6oKeuKJJ0z79u2LnHfs2DFTrVo1s2zZMmdbUlKSkWS2bt1aRhVax619Hub48eOqWbNmofYOHTooIiJCffv29exkXgls3bpVbdu2dflC57i4OGVkZOj77793LhMbG+vSLy4uTlu3bi3TWquKjz/+WH/88YdGjhxZaN4111yjsLAwde/eXR9//HE5VFe1PP3006pVq5YuuugiPfvssy63vG7dulU9evSQj4+Ps63gr/B//vlneZRbJZ3t9wjnStnIzc3Vjh07XH5H2O12xcbG8juinBw/flySCp0XS5cuVe3atdWmTRtNnDhR2dnZ5VFelZKcnKzIyEg1atRIN998s1JTUyWduUvr9OnTLudNixYt1KBBA48+b7i1z4Ns2bJF7777rlauXOlsi4iIUHx8vDp37qycnBy9+uqr6tWrlxITE9WxY8dyrLbySktLcwlRkpzTBc+mnW2ZjIwMnTx5Uv7+/mVTbBXx2muvKS4uTvXr13e2Va9eXbNnz9all14qu92uDz74QAMHDtSKFSt0zTXXlGO1ldfYsWPVsWNH1axZU1u2bNHEiRN16NAhzZkzR9KZ8yImJsalz1/PnRo1apR5zVXNvn37NG/ePJfb+jhXylZ6erry8/OL/B2xZ8+ecqqq6nI4HBo3bpwuvfRStWnTxtl+0003KTo6WpGRkfrmm2/0yCOPaO/evVq+fHk5Vlu5de3aVYsXL1bz5s116NAhTZ06VZdddpm+++47paWlycfHp9Cz63Xr1vXscQHK+5JYRfPII48YSef8l5SU5NKnOLf2ffvtt6Z27dpm+vTp562hR48eZvjw4ReyG5VOSR6Xu+66y1xxxRUubVlZWUaS+fTTT40xxjRt2tQ89dRTLsusXLnSSDLZ2dklu3OViDvH6ZdffjF2u928//77513/LbfcYrp3715a5VdK7hyTAq+99prx9vY2p06dMsYY07dvXzNq1CiXZb7//nsjyfzwww+lvi+ViTvH5ddffzWNGzc2d9xxx3nXz7lSen777TcjyWzZssWl/aGHHjJdunQpp6qqrnvuucdER0ebX3755ZzLJSQkGElm3759ZVQZ/vzzTxMcHGxeffVVs3TpUuPj41NomYsvvtg8/PDD5VBd8XBFyqIJEybotttuO+cyjRo1srTOH374QX369NGoUaM0adKk8y7fpUsXffHFF5a2UdmV5HEJDw8vNLpSwagx4eHhzv/+fSSZw4cPKzg4mKtR5+DOcVq0aJFq1apVrL+cd+3aVWvXrr2QEqucCzl3unbtqry8PB04cEDNmzc/63kh/d+5g+KxelwOHjyo3r1765JLLtErr7xy3vVzrpSe2rVry8vLq8hzgfOgbI0ZM0affPKJPv/8c5c7GorStWtXSWeu6jZu3LgsyqvyQkND1axZM+3bt099+/ZVbm6ujh075nJVytPPG4KURXXq1FGdOnVKbH3ff/+9Lr/8co0YMUJPPvlksfrs2rVLERERJVZDZVCSx6Vbt2568skndeTIEefoSmvXrlVwcLBatWrlXObTTz916bd27Vp169atRGqorKweJ2OMFi1a5Bw18Xw4N6y7kHNn165dstvtzvOkW7dueuyxx3T69Gnn8Vq7dq2aN2/ObX0WWTkuv/32m3r37q1OnTpp0aJFstvP//gz50rp8fHxUadOnZSQkKCBAwdKOnN7WUJCQqEReVE6jDH65z//qQ8//FAbN24sdMtxUXbt2iVJnBdl6MSJE9q/f79uueUWderUSdWqVVNCQoIGDRok6cyI1ampqZ792aq8L4lVZj///LPZuXOnmTp1qqlevbrZuXOn2blzp8nMzDTGnLmdr06dOmb48OHm0KFDzn9HjhxxruP55583K1asMMnJyebbb781999/v7Hb7WbdunXltVsV3vmOS15enmnTpo254oorzK5du8yqVatMnTp1zMSJE53r+Omnn0xAQIB56KGHTFJSknnppZeMl5eXWbVqVXntVqW0bt26s95atnjxYvPWW2+ZpKQkk5SUZJ588kljt9vNf/7zn3KotPLbsmWLef75582uXbvM/v37zZIlS0ydOnXMrbfe6lzm2LFjpm7duuaWW24x3333nXnnnXdMQECAefnll8ux8srt119/NU2aNDF9+vQxv/76q8vvkgKcK2XvnXfeMb6+vmbx4sXmhx9+MKNGjTKhoaEuo8Gi9Nx7770mJCTEbNy40eWcKLj1ft++fWbatGlm+/btJiUlxXz00UemUaNGpkePHuVceeU2YcIEs3HjRpOSkmI2b95sYmNjTe3atZ2fe++55x7ToEEDs379erN9+3bTrVs3061bt3Ku+twIUqVoxIgRRd7XvmHDBmPMmWEgi5ofHR3tXMesWbNM48aNjZ+fn6lZs6bp1auXWb9+ffnsUCVxvuNijDEHDhwwV155pfH39ze1a9c2EyZMMKdPn3ZZz4YNG0yHDh2Mj4+PadSokVm0aFHZ7kgVcOONN5pLLrmkyHmLFy82LVu2NAEBASY4ONh06dLFZdhUlKwdO3aYrl27mpCQEOPn52datmxpnnrqKefzUQV2795tunfvbnx9fU29evXM008/XU4VVw2LFi066zNUBThXyse8efNMgwYNjI+Pj+nSpYv58ssvy7ukKuNs50TB7+nU1FTTo0cPU7NmTePr62uaNGliHnroIXP8+PHyLbySGzp0qImIiDA+Pj6mXr16ZujQoS7PpJ08edLcd999pkaNGiYgIMBcd911Ln8U8kQ2Y4wpm2tfAAAAAFA58D1SAAAAAGARQQoAAAAALCJIAQAAAIBFBCkAAAAAsIggBQAAAAAWEaQAAAAAwCKCFAAAAABYRJACAAAAAIsIUgAAAABgEUEKAFAuli5dqqioKNWoUUPjx493mXfgwAE1a9ZMGRkZzrYpU6bIZrPJZrPJ29tbtWvXVo8ePTR37lzl5OSUdfkAgCqOIAUAKHPp6em688479dxzz2nNmjVasmSJPvnkE+f8++67T08//bSCg4Nd+rVu3VqHDh1SamqqNmzYoBtuuEEzZ87UJZdcoszMzFKrNzc3t9TWDQComAhSAIAy99NPPykkJERDhw7VxRdfrN69eyspKUmS9Pbbb6tatWq6/vrrC/Xz9vZWeHi4IiMj1bZtW/3zn//Upk2b9N1332nWrFnO5XJycvTggw+qXr16CgwMVNeuXbVx40aXdW3evFm9evVSQECAatSoobi4OP3555+SpF69emnMmDEaN26cateurbi4OEnSd999pyuvvFLVq1dX3bp1dcsttyg9Pd25zlWrVql79+4KDQ1VrVq1dPXVV2v//v3O+bm5uRozZowiIiLk5+en6OhozZw50zn/2LFjuvPOO1WnTh0FBwfr8ssv1+7duy/8BQcAlDiCFACgzDVt2lTZ2dnauXOnjh49qm3btqldu3b6888/NXnyZM2fP7/Y62rRooWuvPJKLV++3Nk2ZswYbd26Ve+8846++eYb3XDDDerXr5+Sk5MlSbt27VKfPn3UqlUrbd26VV988YUGDBig/Px85zpef/11+fj4aPPmzYqPj9exY8d0+eWX66KLLtL27du1atUqHT58WEOGDHH2ycrK0vjx47V9+3YlJCTIbrfruuuuk8PhkCS9+OKL+vjjj/Xee+9p7969Wrp0qRo2bOjsf8MNN+jIkSP67LPPtGPHDnXs2FF9+vTR0aNH3X2pAQClxGaMMeVdBACg6vnwww/1+OOP6+TJkxo+fLimTJmiO+64Q23btlXHjh11//336/Tp05oyZYoGDx6sKVOmaMWKFdq1a1ehdT366KN68cUXlZ2drdTUVDVq1EipqamKjIx0LhMbG6suXbroqaee0k033aTU1FR98cUXRdbWq1cvZWRk6Ouvv3a2zZgxQ//73/+0evVqZ9uvv/6qqKgo7d27V82aNSu0nvT0dNWpU0fffvut2rRpo7Fjx+r777/XunXrZLPZXJb94osv1L9/fx05ckS+vr7O9iZNmujhhx/WqFGjiv3aAgBKn3d5FwAAqJquu+46XXfddc7pTZs26ZtvvtG8efPUpEkTvf322woPD1eXLl3Uo0ePc67LGOMMJt9++63y8/MLBZucnBzVqlVL0pkrUjfccMM519mpUyeX6d27d2vDhg2qXr16oWX379+vZs2aKTk5WY8//rgSExOVnp7uvBKVmpqqNm3a6LbbblPfvn3VvHlz9evXT1dffbWuuOIK5/pPnDjhrLHAyZMnXW4PBAB4BoIUAKDc5eTk6L777tObb76pffv2KS8vTz179pQkNWvWTImJiefsn5SUpJiYGEnSiRMn5OXlpR07dsjLy8tluYIQ5O/vf96aAgMDXaZPnDihAQMGuDyLVSAiIkKSNGDAAEVHR+vf//63IiMj5XA41KZNG+dgFR07dlRKSoo+++wzrVu3TkOGDFFsbKzef/99nThxQhEREYWe5ZKk0NDQ89YLAChbBCkAQLmbMWOG+vXrp44dO2rnzp3Ky8tzzjt9+rTLs0t/t2fPHq1atUoTJ06UJF100UXKz8/XkSNHdNlllxXZp127dkpISNDUqVOLXWPHjh31wQcfqGHDhvL2Lvzr848//tDevXv173//27ndom4dDA4O1tChQzV06FANHjxY/fr109GjR9WxY0elpaXJ29vb5bkpAIBnYrAJAEC5+uGHH/Tuu+9q2rRpks4MHmG32/Xaa69p5cqV2rNnjy6++GJJUl5entLS0nTw4EF9++23mjdvnnr27KkOHTrooYceknTmCtbNN9+sW2+9VcuXL1dKSoq++uorzZw5UytXrpQkTZw4Udu2bdN9992nb775Rnv27NHChQtdRuD7u9GjR+vo0aO68cYbtW3bNu3fv1+rV6/WyJEjlZ+frxo1aqhWrVp65ZVXtG/fPq1fv77Q92PNmTNHb7/9tvbs2aMff/xRy5YtU3h4uEJDQxUbG6tu3bpp4MCBWrNmjQ4cOKAtW7boscce0/bt20vjpQcAXACuSAEAyo0xRqNGjdKcOXOct9L5+/tr8eLFGj16tHJycjR//nzVq1dPkvT9998rIiJCXl5eCgkJUatWrTRx4kTde++9LgM0LFq0SDNmzNCECRP022+/qXbt2vrHP/6hq6++WtKZsLVmzRr961//UpcuXeTv76+uXbvqxhtvPGutkZGR2rx5sx555BFdccUVysnJUXR0tPr16ye73S6bzaZ33nlHY8eOVZs2bdS8eXO9+OKL6tWrl3MdQUFBeuaZZ5ScnCwvLy9dfPHF+vTTT2W3n/m75qeffqrHHntMI0eO1O+//67w8HD16NFDdevWLemXHgBwgRi1DwAAAAAs4tY+AAAAALCIIAUAAAAAFhGkAAAAAMAighQAAAAAWESQAgAAAACLCFIAAAAAYBFBCgAAAAAsIkgBAAAAgEUEKQAAAACwiCAFAAAAABYRpAAAAADAov8HlLvbm4l02EEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

rss

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0Init/Data/FloatArray.lean883507208953036811796481.317595
1Init/Control/Basic.lean948715529592012810485761.093176
2Init/Classical.lean11128832011246796811796481.048875
3Init/Data/Sum.lean84230144850165767864320.925034
4Init/Omega/Logic.lean1045831681055006729175040.869666
..................
845Lean/Elab/Quotation/Util.lean225468416223899648-1568768-0.700657
846Lean/Data/Xml/Basic.lean113606656112627712-978944-0.869186
847Init/Guard.lean106020864105099264-921600-0.876885
848Lean/Data/Json/Printer.lean126935040125771776-1163264-0.924901
849Init/Data/Fin/Log2.lean105627648104493056-1134592-1.085806
\n", + "

850 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse \\\n", + "0 Init/Data/FloatArray.lean 88350720 89530368 \n", + "1 Init/Control/Basic.lean 94871552 95920128 \n", + "2 Init/Classical.lean 111288320 112467968 \n", + "3 Init/Data/Sum.lean 84230144 85016576 \n", + "4 Init/Omega/Logic.lean 104583168 105500672 \n", + ".. ... ... ... \n", + "845 Lean/Elab/Quotation/Util.lean 225468416 223899648 \n", + "846 Lean/Data/Xml/Basic.lean 113606656 112627712 \n", + "847 Init/Guard.lean 106020864 105099264 \n", + "848 Lean/Data/Json/Printer.lean 126935040 125771776 \n", + "849 Init/Data/Fin/Log2.lean 105627648 104493056 \n", + "\n", + " absolute_diff %Decrease \n", + "0 1179648 1.317595 \n", + "1 1048576 1.093176 \n", + "2 1179648 1.048875 \n", + "3 786432 0.925034 \n", + "4 917504 0.869666 \n", + ".. ... ... \n", + "845 -1568768 -0.700657 \n", + "846 -978944 -0.869186 \n", + "847 -921600 -0.876885 \n", + "848 -1163264 -0.924901 \n", + "849 -1134592 -1.085806 \n", + "\n", + "[850 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOc0lEQVR4nO3deXgUVR7u8bc7IXtC2LKxRgj7JiCIIItEg6CCsiooMigqMICoCKMgqwgqIpuM3hkYN9wGdQaVxYA6LEZAEMUQAwZagSS2CAkJJCRd9w8vfW0TINUk6U7y/TxPnsc6dU7Vrzptd16q6pTFMAxDAAAAAIASs3q6AAAAAACoaAhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYRJACAAAAAJMIUgCASmfWrFmyWCzlsq9evXqpV69ezuXPPvtMFotF7733Xrns/95771WjRo3KZV9/lpGRocGDB6tWrVqyWCxasmSJR+oAAE8gSAFAMY4dO6b+/fsrLCxMLVu21H//+98ifdatW6eIiAidPn26yLpevXrJYrHIYrHIarUqLCxMzZo10913363NmzeXxyFUGmvWrHG+lhaLRQEBAYqJiVFCQoKWLl2q7OzsUtnP8ePHNWvWLO3bt69UtleavLW2hx9+WBs3btT06dP12muvqW/fvp4uCQDKja+nCwAAbzRq1CgdO3ZMCxcu1Pbt2zVkyBAdPHjQ+S//586d06OPPqp58+apevXqxW6jXr16WrBggSQpJydHhw4d0rp16/T6669r6NChev3111WtWrXyOqQKb86cOYqNjdX58+eVnp6uzz77TJMnT9bixYv1n//8R23btnX2ffLJJzVt2jRT2z9+/Lhmz56tRo0aqX379iUet2nTJlP7ccelanvllVfkcDjKvIbibNmyRQMGDNCjjz7qkf0DgCcRpADgT86ePastW7bos88+U48ePfTggw9qx44d2rhxox544AFJ0nPPPafq1avrvvvuu+h2qlevrpEjR7q0PfPMM5o4caJWrlypRo0aaeHChWV6LH+Uk5Oj4ODgcttfabv55pvVqVMn5/L06dO1ZcsW3XLLLbrtttuUnJyswMBASZKvr698fcv2Ky43N1dBQUHy8/Mr0/1cjifDeGZmpsLDw0tte+fOnZOfn5+s1pJdMFNQUCCHw+Hx3wGAqolL+wDgT86dOyfDMFSjRg1JksViUXh4uHJzcyX9ftnfM888oxdffLHEf/Bd4OPjo6VLl6ply5Zavnx5kcsCX3/9dXXs2FGBgYGqWbOmhg8frp9++qnIdpKSktSvXz/VqFFDwcHBatu2rV588UXn+nvvvVchISE6fPiw+vXrp9DQUI0YMUKS5HA4tGTJErVq1UoBAQGKjIzUAw88oN9++81lHx9++KH69++vmJgY+fv7q3Hjxpo7d64KCwtd+qWmpmrQoEGKiopSQECA6tWrp+HDh7t9bGbccMMNmjFjho4eParXX3/d2V7cPVKbN29W9+7dFR4erpCQEDVr1kx/+9vfJP1+X9M111wjSRo9erTzMsI1a9ZI+v1SzdatW2vPnj3q0aOHgoKCnGP/fI/UBYWFhfrb3/6mqKgoBQcH67bbbityvI0aNdK9995bZOwft3m52oq7RyonJ0ePPPKI6tevL39/fzVr1kzPPfecDMNw6WexWDRhwgR98MEHat26tfz9/dWqVStt2LCh+Bf8/7lwuaVhGFqxYoWzpgt+/PFHDRkyRDVr1lRQUJCuvfZaffTRRy7buHAv2VtvvaUnn3xSdevWVVBQkLKysord55EjR2SxWPTcc89pyZIlaty4sfz9/fX9999LkpYtW6ZWrVopKChINWrUUKdOnfTmm286x2dnZ2vy5Mlq1KiR/P39FRERoRtvvFFff/31JY8VAC6GM1IA8Cc1atRQ48aN9fTTT+vpp5/Wjh07tG/fPi1btkySNHXqVN18883q0aOHW9v38fHRnXfeqRkzZmjbtm3q37+/JGn+/PmaMWOGhg4dqvvuu0+//PKLli1bph49emjv3r3Of/nfvHmzbrnlFkVHR2vSpEmKiopScnKy1q9fr0mTJjn3U1BQoISEBHXv3l3PPfecgoKCJEkPPPCA1qxZo9GjR2vixIlKS0vT8uXLtXfvXm3fvt15hmPNmjUKCQnRlClTFBISoi1btmjmzJnKysrSs88+K0nKz89XQkKC8vLy9Ne//lVRUVE6duyY1q9fr1OnTjkveyzpsbnj7rvv1t/+9jdt2rRJ999/f7F9Dhw4oFtuuUVt27bVnDlz5O/vr0OHDmn79u2SpBYtWmjOnDmaOXOmxo4dq+uvv16SdN111zm38euvv+rmm2/W8OHDNXLkSEVGRl6yrvnz58tisejxxx9XZmamlixZovj4eO3bt8955qwkSlLbHxmGodtuu01bt27VmDFj1L59e23cuFGPPfaYjh07phdeeMGl/7Zt27Ru3TqNGzdOoaGhWrp0qQYNGiSbzaZatWoVu48ePXrotdde0913360bb7xR99xzj3NdRkaGrrvuOuXm5mrixImqVauW/vWvf+m2227Te++9p9tvv91lW3PnzpWfn58effRR5eXlXfbs0urVq3Xu3DmNHTtW/v7+qlmzpl555RVNnDhRgwcP1qRJk3Tu3Dnt379fSUlJuuuuuyRJDz74oN577z1NmDBBLVu21K+//qpt27YpOTlZHTp0uPQvAQCKYwAAikhMTDRq1KhhSDIkGZMnTzYMwzC2b99uBAYGGkeOHLnk+J49exqtWrW66Pr333/fkGS8+OKLhmEYxpEjRwwfHx9j/vz5Lv2+/fZbw9fX19leUFBgxMbGGg0bNjR+++03l74Oh8P536NGjTIkGdOmTXPp87///c+QZLzxxhsu7Rs2bCjSnpubW6TuBx54wAgKCjLOnTtnGIZh7N2715BkvPvuuxc91pIe28WsXr3akGTs2rXron2qV69uXH311c7lp556yvjjV9wLL7xgSDJ++eWXi25j165dhiRj9erVRdb17NnTkGSsWrWq2HU9e/Z0Lm/dutWQZNStW9fIyspytr/zzjsuv3PDMIyGDRsao0aNuuw2L1XbqFGjjIYNGzqXP/jgA0OSMW/ePJd+gwcPNiwWi3Ho0CFnmyTDz8/Ppe2bb74xJBnLli0rsq8/k2SMHz/epW3y5MmGJON///ufsy07O9uIjY01GjVqZBQWFhqG8f9fp6uuuqrY99qfpaWlGZKMsLAwIzMz02XdgAEDLvn/m2H8/h75c60AcCW4tA8AinHDDTfIZrPpyy+/lM1m0wsvvCCHw6GJEyfqkUceUcOGDfXSSy+pefPmatasmVatWmVq+yEhIZLknHFu3bp1cjgcGjp0qOx2u/MnKipKcXFx2rp1qyRp7969SktL0+TJk4ucxSluuu+HHnrIZfndd99V9erVdeONN7rsp2PHjgoJCXHuR5LLWZPs7GzZ7XZdf/31ys3N1cGDByXJecZp48aNzksf/6ykx3YlQkJCLjl734XX6sMPP3R7YgZ/f3+NHj26xP3vuecehYaGOpcHDx6s6Ohoffzxx27tv6Q+/vhj+fj4aOLEiS7tjzzyiAzD0CeffOLSHh8fr8aNGzuX27Ztq7CwMP34449u779z587q3r27sy0kJERjx47VkSNHnJfiXTBq1ChTZ+gGDRqkOnXquLSFh4fr559/1q5duy46Ljw8XElJSTp+/HiJ9wUAl0KQAoCLCAkJUZcuXVS/fn1Jv19SlJ6ermnTpunTTz/VY489pmeeeUaLFi3SI488YioQnDlzRpKcf2inpqbKMAzFxcWpTp06Lj/JycnKzMyUJB0+fFiS1Lp168vuw9fXV/Xq1XNpS01N1enTpxUREVFkP2fOnHHuR/r9crjbb79d1atXV1hYmOrUqeOcPOPC/U+xsbGaMmWK/s//+T+qXbu2EhIStGLFCpf7o0p6bFfizJkzLqHlz4YNG6Zu3brpvvvuU2RkpIYPH6533nnHVKiqW7euqUkN4uLiXJYtFouaNGmiI0eOlHgb7jh69KhiYmKKvB4tWrRwrv+jBg0aFNlGjRo1itwzZ2b/zZo1K9J+sf3Hxsaa2n5x/R9//HGFhISoc+fOiouL0/jx452XbV6waNEifffdd6pfv746d+6sWbNmuR0WAUDiHikAKJGsrCw98cQTeu655xQcHKy1a9dq8ODBGjhwoKTfzza88cYb6t27d4m2991330mSmjRpIun3CSAsFos++eQT+fj4FOl/4QyWGf7+/kUmw3A4HIqIiNAbb7xR7JgL/9J/6tQp9ezZU2FhYZozZ44aN26sgIAAff3113r88cddAsjzzz+ve++9Vx9++KE2bdqkiRMnasGCBfryyy9Vr169Mjm2P/r55591+vRp52tZnMDAQH3xxRfaunWrPvroI23YsEFvv/22brjhBm3atKnYuorbRmm72EODCwsLS1RTabjYfow/TUxRVsy+rsX1b9GihVJSUrR+/Xpt2LBB//73v7Vy5UrNnDlTs2fPliQNHTpU119/vd5//31t2rRJzz77rBYuXKh169bp5ptvLpVjAVC1EKQAoAQuPMPowsx3x48f19VXX+1cHxMTU+KHpRYWFurNN99UUFCQ8/Knxo0byzAMxcbGqmnTphcde+ESrO+++07x8fGmj6Nx48b69NNP1a1bt0v+AfvZZ5/p119/1bp161wm1UhLSyu2f5s2bdSmTRs9+eST2rFjh7p166ZVq1Zp3rx5JT42d732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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

num_small_alloc

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0Leanc.lean279844827987523040.010862
1Lean/Data/PersistentArray.lean12783248127838916430.005030
2Init/Data/List/Lemmas.lean32689272326900117390.002261
3Init/Data/BitVec/Lemmas.lean67573064675740519870.001461
4Init/Control/Lawful/Instances.lean17477933174780501170.000669
..................
845Init/Data/Nat/Mod.lean30431293043087-42-0.001380
846Init/Data/Fin/Lemmas.lean3239106432390526-538-0.001661
847Init/Data/Nat/Lemmas.lean2812421628123720-496-0.001764
848Init/Data/Nat/Bitwise/Lemmas.lean1981858619817980-606-0.003058
849Lean/Widget/TaggedText.lean73260067325521-485-0.006621
\n", + "

850 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse \\\n", + "0 Leanc.lean 2798448 2798752 \n", + "1 Lean/Data/PersistentArray.lean 12783248 12783891 \n", + "2 Init/Data/List/Lemmas.lean 32689272 32690011 \n", + "3 Init/Data/BitVec/Lemmas.lean 67573064 67574051 \n", + "4 Init/Control/Lawful/Instances.lean 17477933 17478050 \n", + ".. ... ... ... \n", + "845 Init/Data/Nat/Mod.lean 3043129 3043087 \n", + "846 Init/Data/Fin/Lemmas.lean 32391064 32390526 \n", + "847 Init/Data/Nat/Lemmas.lean 28124216 28123720 \n", + "848 Init/Data/Nat/Bitwise/Lemmas.lean 19818586 19817980 \n", + "849 Lean/Widget/TaggedText.lean 7326006 7325521 \n", + "\n", + " absolute_diff %Decrease \n", + "0 304 0.010862 \n", + "1 643 0.005030 \n", + "2 739 0.002261 \n", + "3 987 0.001461 \n", + "4 117 0.000669 \n", + ".. ... ... \n", + "845 -42 -0.001380 \n", + "846 -538 -0.001661 \n", + "847 -496 -0.001764 \n", + "848 -606 -0.003058 \n", + "849 -485 -0.006621 \n", + "\n", + "[850 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABdTElEQVR4nO3deVwVZeP///c54GEVcAPEBcmd1NxSKUtTFI1W924r9bbNNDNs805NxbKs1DKXu76lbeadZZuau22Ka1ruqWnkAkaKoCYI5/r90Y/z8Qgqg+BBfT0fDx8P55rrmrlm5szhvM/MXMdmjDECAAAAABSa3dMdAAAAAIDLDUEKAAAAACwiSAEAAACARQQpAAAAALCIIAUAAAAAFhGkAAAAAMAighQAAAAAWESQAgAAAACLCFIAAAAAYBFBCgCuQqNGjZLNZrsk62rbtq3atm3rmv72229ls9n06aefXpL19+3bVzVq1Lgk6zpbamqqunXrpgoVKshms2nSpEke6QcKJ++1+e2337rKSvL1U9B5WKNGDfXt27dE1gegeBGkABTJgQMHFB8fr6CgIEVHR+vrr7/OV2fu3LkKDQ3VsWPH8s1r27atbDabbDab7Ha7goKCVLduXd13331asmTJpdiEK8bMmTNd+9Jms8nX11cRERGKi4vTG2+8oczMzGJZz8GDBzVq1Cht2rSpWJZXnEpr35544gktWrRIw4YN0wcffKBOnTp5uksAgGLi7ekOALg89enTRwcOHNDLL7+slStXqnv37tqxY4frm9tTp07pySef1NixYxUcHFzgMqpWrapx48ZJkk6cOKHdu3dr7ty5+vDDD9WjRw99+OGHKlOmzKXapMvemDFjFBUVpdOnTyslJUXffvuthgwZogkTJuirr75So0aNXHWHDx+uZ5991tLyDx48qNGjR6tGjRpq3LhxodstXrzY0nqK4nx9e/vtt+V0Oku8DwVZvny57rzzTj355JMeWT8AoOQQpABY9vfff2v58uX69ttvdfPNN+uRRx7RqlWrtGjRIj388MOSpFdffVXBwcF64IEHzrmc4OBg3XvvvW5lL730kgYPHqypU6eqRo0aevnll0t0W8504sQJBQQEXLL1FbfOnTurefPmrulhw4Zp+fLluu2223THHXdo+/bt8vPzkyR5e3vL27tk/wScPHlS/v7+cjgcJbqeC/FkGD98+LBCQkKKbXmnTp2Sw+GQ3c4NJQDgabwTA7Ds1KlTMsaoXLlykiSbzaaQkBCdPHlS0j+3/b300kt6/fXXLX/g8/Ly0htvvKHo6Gi9+eab+W4L/PDDD9WsWTP5+fmpfPny6tWrl/744498y1mzZo1uvfVWlStXTgEBAWrUqJFef/111/y+ffsqMDBQe/bs0a233qqyZcuqd+/ekiSn06lJkybp2muvla+vr8LCwvTwww/r6NGjbuv48ssvFR8fr4iICPn4+KhmzZpKTExUbm6uW71du3apa9euCg8Pl6+vr6pWrapevXoVedusaNeunUaMGKHff/9dH374oau8oGczlixZotatWyskJESBgYGqW7eu/vOf/0j659mR66+/XpLUr18/122EM2fOlPTPrZoNGjTQhg0bdPPNN8vf39/V9uxnpPLk5ubqP//5j8LDwxUQEKA77rgj3/ae63mRM5d5ob4V9IzLiRMnNHToUFWrVk0+Pj6qW7euXn31VRlj3OrZbDYNGjRIX3zxhRo0aCAfHx9de+21WrhwYcE7/P+Xd7ulMUZTpkxx9SnPb7/9pu7du6t8+fLy9/dXq1atNH/+fLdl5D2vM3v2bA0fPlxVqlSRv7+/MjIyClznvn37ZLPZ9Oqrr+qtt95SzZo15ePjo+uvv17r1q075/4709n76sxlTpkyRddcc438/f3VsWNH/fHHHzLGKDExUVWrVpWfn5/uvPNOHTly5Lz75myZmZkaMmSIatSoIR8fH4WGhqpDhw766aef3PrboEED/fLLL2rTpo38/f1Vq1Yt13N23333nVq2bCk/Pz/VrVtXS5cudVvH77//rkcffVR169aVn5+fKlSooO7du2vfvn2W+lpYP/zwg7p3767q1avLx8dH1apV0xNPPKG///67SMsrzOtF+ue9edSoUapTp458fX1VuXJldenSRXv27LnYTQJQAK5IAbCsXLlyqlmzpl588UW9+OKLWrVqlTZt2qTJkydLkp5++ml17txZN998c5GW7+XlpXvuuUcjRozQjz/+qPj4eEnSCy+8oBEjRqhHjx564IEH9Oeff2ry5Mm6+eabtXHjRtc3/0uWLNFtt92mypUr6/HHH1d4eLi2b9+uefPm6fHHH3etJycnR3FxcWrdurVeffVV+fv7S5IefvhhzZw5U/369dPgwYO1d+9e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meL2fFRht+1iHD9+3C20nK1nz5668cYb9cADDygsLEy9evXSJ598YilUValSxdLAErVr13abttlsqlWrVok9t5Ln999/V0RERL79Ub9+fdf8M1WvXj3fMsqVK5fvmTkr669bt26+8nOtPyoqytLyz+5vXqgqan8LWmZeqMo7988ut7Ku8ePHa8uWLapWrZpatGihUaNGFRj6qlatmi8QBAcHF6oPf//9t0aOHOl6Jq5ixYqqVKmS0tPTC/x5houVnJysvn37qnz58goMDFSlSpXUpk0bSbK8vsK+Xvbs2aO6deuW+CAyAP4PZxuAYpGRkaHnnntOr776qgICAvTxxx+rW7duuuuuuyT9c7Xho48+0i233FKo5W3ZskWSVKtWLUn/DABhs9n0zTffyMvLK1/9vCtYVvj4+OQbDMPpdCo0NFQfffRRgW0qVaokSUpPT1ebNm0UFBSkMWPGqGbNmvL19dVPP/2kZ555xi2AvPbaa+rbt6++/PJLLV68WIMHD9a4ceO0evVqVa1atUS27Uz79+/XsWPHXPuyIH5+fvr++++1YsUKzZ8/XwsXLtT//vc/tWvXTosXLy6wXwUto7id65v03NzcQvWpOJxrPeasgSlKitX9Wpj+5g2EcbazB0q50DKLY9/06NFDN910kz7//HMtXrxYr7zyil5++WXNnTtXnTt3LpY+PPbYY5oxY4aGDBmimJgYBQcHy2azqVevXsU+NH5ubq46dOigI0eO6JlnnlG9evUUEBCgAwcOqG/fvh4bih9A8SNIASgWeb9hlDfy3cGDB9WkSRPX/IiIiEL/WGpubq5mzZolf39/1+0sNWvWlDFGUVFRqlOnzjnb5t2CtWXLFsXGxlrejpo1a2rp0qW68cYbz/sB9ttvv9Vff/2luXPnug2qsXfv3gLrN2zYUA0bNtTw4cO1atUq3XjjjZo+fbrGjh1b6G0rqg8++ECSFBcXd956drtd7du3V/v27TVhwgS9+OKLeu6557RixQrFxsYW++1Bu3btcps2xmj37t1uv3dVrlw5paen52v7+++/65prrnFNW+lbZGSkli5dqszMTLerUnm3Y0ZGRhZ6WUURGRmpnTt35iu/VOuX/tmvBV31Oftq2KVSuXJlPfroo3r00Ud1+PBhNW3aVC+88IJbkLoYn376qfr06aPXXnvNVXbq1KkCX1sXa/Pmzfr111/13nvvuQ0yUtQfGi/s66VmzZpas2aNTp8+ze/vAZcIt/YBuGi//vqr3nzzTb3++uuuD7RhYWGuP/SStH37doWHh19wWbm5uRo8eLC2b9+uwYMHKygoSJLUpUsXeXl5afTo0fm+7TbG6K+//pIkNW3aVFFRUZo0aVK+D0mF+Za8R48eys3NVWJiYr55OTk5rmXmfQt+5jKzs7M1depUtzYZGRnKyclxK2vYsKHsdruysrIsbVtRLF++XImJiW4htyAFDVmd98O2ef3M+42t4vrw+f7777s9t/Xpp5/q0KFDbh+ea9asqdWrVys7O9tVNm/evHzDpFvp26233qrc3Fy9+eabbuUTJ06UzWYrtg/v51v/2rVrlZSU5Co7ceKE3nrrLdWoUUPR0dElun7pn/26Y8cO/fnnn66yn3/+2TVK46WSm5ub71a30NBQRUREuF53xcHLyyvfuTV58uRzXoG72HVJ7u8Nxhi3n1+worCvl65duyotLS3f6/rsvgAoPlyRAnDRnnjiCfXs2VMtWrRwlXXr1k133nmn67eEvv76a82bN8+t3bFjx1y/bXTy5Ent3r1bc+fO1Z49e9SrVy+3MFOzZk2NHTtWw4YN0759+3TXXXepbNmy2rt3rz7//HM99NBDevLJJ2W32zVt2jTdfvvtaty4sfr166fKlStrx44d2rp1qxYtWnTebWnTpo0efvhhjRs3Tps2bVLHjh1VpkwZ7dq1S3PmzNHrr7+ubt266YYbblC5cuXUp08fDR48WDabTR988EG+DyzLly/XoEGD1L17d9WpU0c5OTn64IMP5OXlpa5du1ratgv55ptvtGPHDuXk5Cg1NVXLly/XkiVLFBkZqa+++kq+vr7nbDtmzBh9//33io+PV2RkpA4fPqypU6eqatWqblcFQ0JCNH36dJUtW1YBAQFq2bKl5Wd48pQvX16tW7dWv379lJqaqkmTJqlWrVpuQ7Q/8MAD+vTTT9WpUyf16NFDe/bs0YcffphvKGcrfbv99tt1yy236LnnntO+fft03XXXafHixfryyy81ZMiQEh8m+tlnn9XHH3+szp07a/DgwSpfvrzee+897d27V5999tkl+bHdf//735owYYLi4uLUv39/HT58WNOnT9e11157zt+pKgmZmZmqWrWqunXrpuuuu06BgYFaunSp1q1b53b16GLd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CFBcXJxOnTrlqtO7d29t3bpVS5Ys0bx58/T999/roYce8sQmAQAAALgKeHty5S+//LKqVaumGTNmuMqioqJc/zfGaNKkSRo+fLjuvPNOSdL777+vsLAwffHFF+rVq5e2b9+uhQsXat26dWrevLkkafLkybr11lv16quvKiIiIt96s7KylJWV5ZrOyMiQJOXk5CgnJ6dEthUAzsXpdMrhcMguI5szt9Dt7DJyOBxyOp28dwEAUEwK+zfVZowxJdyXc4qOjlZcXJz279+v7777TlWqVNGjjz6qBx98UJL022+/qWbNmtq4caMaN27satemTRs1btxYr7/+ut59910NHTpUR48edc3PycmRr6+v5syZo7vvvjvfekeNGqXRo0fnK1+0aJECAgKKf0MB4DwyMzO1fv16VYluLB//wr8HZZ08oQPbNql58+YqW7ZsCfYQAICrx4kTJxQXF6djx44pKCjonPU8ekXqt99+07Rp05SQkKD//Oc/WrdunQYPHiyHw6E+ffooJSVFkhQWFubWLiwszDUvJSVFoaGhbvO9vb1Vvnx5V52zDRs2TAkJCa7pjIwMVatWTc2bNz/vzgKAkrBp0yYlJibqkRnzFREZXeh2B3du1vTERK1cudLtyyYAAFB0eXerXYhHg5TT6VTz5s314osvSpKaNGmiLVu2aPr06erTp0+JrdfHx0c+Pj75yr29veXt7dFdAuAqZLfblZ2dLadsMnavQrdzyqbs7GzZ7XbeuwAAKCaF/Zvq0cEmKleurOho929f69evr+TkZElSeHi4JCk1NdWtTmpqqmteeHi4Dh8+7DY/JydHR44ccdUBAAAAgOLk0SB14403aufOnW5lv/76qyIjIyX9M/BEeHi4li1b5pqfkZGhNWvWKCYmRpIUExOj9PR0bdiwwVVn+fLlcjqdatmy5SXYCgAAAABXG4/eC/LEE0/ohhtu0IsvvqgePXpo7dq1euutt/TWW29Jkmw2m4YMGaKxY8eqdu3aioqK0ogRIxQREaG77rpL0j9XsDp16qQHH3xQ06dP1+nTpzVo0CD16tWrwBH7AAAAAOBieTRIXX/99fr88881bNgwjRkzRlFRUZo0aZJ69+7tqvP000/rxIkTeuihh5Senq7WrVtr4cKF8vX1ddX56KOPNGjQILVv3152u11du3bVG2+84YlNAgAAAHAV8PjT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HVLr1q3VoEEDTZgwQX/++Wdx9xMAAAAASo2LGmzC29tbXbp00Zw5c/Tyyy9r9+7devLJJ1WtWjXdf//9OnToUHH1EwAAAABKjYsKUuvXr9ejjz6qypUra8KECXryySe1Z88eLVmyRAcPHtSdd95ZXP0EAAAAgFLDuyiNJkyYoBkzZmjnzp269dZb9f777+vWW2+V3f5PLouKitLMmTNVo0aN4uwrAAAAAJQKRQpS06ZN07///W/17dtXlStXLrBOaGio3nnnnYvqHAAAAACURkUKUrt27bpgHYfDoT59+hRl8QAAAABQqhXpGakZM2Zozpw5+crnzJmj995776I7BQAAAAClWZGC1Lhx41SxYsV85aGhoXrxxRcvulMAAAAAUJoVKUglJycrKioqX3lkZKSSk5MvulMAAAAAUJoVKUiFhobql19+yVf+888/q0KFChfdKQAAAAAozYoUpO655x4NHjxYK1asUG5urnJzc7V8+XI9/vjj6tWrV3H3EQAAAABKlSIFqcTERLVs2VLt27eXn5+f/Pz81LFjR7Vr167Iz0i99NJLstlsGjJkiKvs1KlTGjhwoCpUqKDAwEB17dpVqampbu2Sk5MVHx8vf39/hYaG6qmnnlJOTk6R+gAAAAAAhVGk4c8dDof+97//KTExUT///LP8/PzUsGFDRUZGFqkT69at03//+181atTIrfyJJ57Q/PnzNWfOHAUHB2vQoEHq0qWLVq5cKUnKzc1VfHy8wsPDtWrVKh06dEj333+/ypQpw6AXAAAAAEpMkYJUnjp16qhOnToX1YHjx4+rd+/eevvttzV27FhX+bFjx/TOO+9o1qxZateunaR/hl2vX7++Vq9erVatWmnx4sXatm2bli5dqrCwMDVu3FiJiYl65plnNGrUKDkcjovqGwAAAAAUpEhBKjc3VzNnztSyZct0+PBhOZ1Ot/nLly8v9LIGDhyo+Ph4xcbGugWpDRs26PTp04qNjXWV1atXT9WrV1dSUpJatWqlpKQkNWzYUGFhYa46cXFxGjBggLZu3aomTZoUuM6srCxlZWW5pjMyMiRJOTk53BYI4JJzOp1yOByyy8jmzC10O7uMHA6HnE4n710AABSTwv5NLVKQevzxxzVz5kzFx8erQYMGstlsRVmMZs+erZ9++knr1q3LNy8lJUUOh0MhISFu5WFhYUpJSXHVOTNE5c3Pm3cu48aN0+jRo/OVr1+/XgEBAVY3AwAuSmZmpkaMGKEqvqfk8+e2QrcL9T2lESNGKC0tTWvWrCnBHgIAcPU4ceJEoeoVKUjNnj1bn3zyiW699daiNJck/fHHH3r88ce1ZMkS+fr6Fnk5RTFs2DAlJCS4pjMyMlStWjU1b95cQUFBl7QvALBp0yYlJibqkRnzFREZXeh2B3du1vTERK1cuVKNGzcuuQ4CAHAVybtb7UKKPNhErVq1itLUZcOGDTp8+LCaNm3qKsvNzdX333+vN998U4sWLVJ2drbS09PdrkqlpqYqPDxckhQeHq61a9e6LTdvVL+8OgXx8fGRj49PvnJvb295e1/UY2MAYJndbld2dracssnYvQrdzimbsrOzZbfbee8CAKCYFPZvapGGPx86dKhef/11GWOK0lyS1L59e23evFmbNm1y/WvevLl69+7t+n+ZMmW0bNkyV5udO3cqOTlZMTExkqSYmBht3rxZhw8fdtVZsmSJgoKCFB1d+G91AQAAAMCKIn2F+eOPP2rFihX65ptvdO2116pMmTJu8+fOnXvBZZQtW1YNGjRwKwsICFCFChVc5f3791dCQoLKly+voKAgPfbYY4qJiVGrVq0kSR07dlR0dLTuu+8+jR8/XikpKRo+fLgGDhxY4BUnAAAAACgORQpSISEhuvvuu4u7L/lMnDhRdrtdXbt2VVZWluLi4jR16lTXfC8vL82bN08DBgxQTEyMAgIC1KdPH40ZM6bE+wYAAADg6lWkIDVjxozi7ock6dtvv3Wb9vX11ZQpUzRlypRztomMjNSCBQtKpD8AAAAAUJAiPSMl/TO++tKlS/Xf//5XmZmZkqSDBw/q+PHjxdY5AAAAACiNinRF6vfff1enTp2UnJysrKwsdejQQWXLltXLL7+srKwsTZ8+vbj7CQAAAAClRpGuSD3++ONq3ry5jh49Kj8/P1f53Xff7TbKHgAAAABciYp0ReqHH37QqlWr5HA43Mpr1KihAwcOFEvHAAAAAKC0KtIVKafTqdzc3Hzl+/fvV9myZS+6UwAAAABQmhUpSHXs2FGTJk1yTdtsNh0/flzPP/+8br311uLqGwAAAACUSkW6te+1115TXFycoqOjderUKf3rX//Srl27VLFiRX388cfF3UcAAAAAKFWKFKSqVq2qn3/+WbNnz9Yvv/yi48ePq3///urdu7fb4BMAAAAAcCUqUpCSJG9vb917773F2RcAAAAAuCwUKUi9//77551///33F6kzAAAAAHA5KFKQevzxx92mT58+rZMnT8rhcMjf358gBQAAAOCKVqRR+44ePer27/jx49q5c6dat27NYBMAAAAArnhFClIFqV27tl566aV8V6sAAAAA4EpTbEFK+mcAioMHDxbnIgEAAACg1CnSM1JfffWV27QxRocOHdKbb76pG2+8sVg6BgAAAAClVZGC1F133eU2bbPZVKlSJbVr106vvfZacfQLAAAAAEqtIgUpp9NZ3P0AAAAAgMtGsT4jBQAAAABXgyJdkUpISCh03QkTJhRlFQAAAABQahUpSG3cuFEbN27U6dOnVbduXUnSr7/+Ki8vLzVt2tRVz2azFU8vAQAAAKAUKVKQuv3221W2bFm99957KleunKR/fqS3X79+uummmzR06NBi7SQAAAAAlCZFekbqtdde07hx41whSpLKlSunsWPHMmofAAAAgCtekYJURkaG/vzzz3zlf/75pzIzMy+6UwAAAABQmhUpSN19993q16+f5s6dq/3792v//v367LPP1L9/f3Xp0qW4+wgAAAAApUqRnpGaPn26nnzySf3rX//S6dOn/1mQt7f69++vV155pVg7CAAAAAClTZGClL+/v6ZOnapXXnlFe/bskSTVrFlTAQEBxdo5AAAAACiNLuoHeQ8dOqRDhw6pdu3aCggIkDGmuPoFAAAAAKVWkYLUX3/9pfbt26tOnTq69dZbdejQIUlS//79GfocAAAAwBWvSEHqiSeeUJkyZZScnCx/f39Xec+ePbVw4cJi6xwAAAAAlEZFekZq8eLFWrRokapWrepWXrt2bf3+++/F0jEAAAAAKK2KdEXqxIkTblei8hw5ckQ+Pj4X3SkAAAAAKM2KFKRuuukmvf/++65pm80mp9Op8ePH65Zbbim2zgEAAABAaVSkW/vGjx+v9u3ba/369crOztbTTz+trVu36siRI1q5cmVx9xEAAAAASpUiXZFq0KCBfv31V7Vu3Vp33nmnTpw4oS5dumjjxo2qWbNmcfcRAAAAAEoVy1ekTp8+rU6dOmn69Ol67rnnSqJPAAAAAFCqWb4iVaZMGf3yyy8l0RcAAAAAuCwU6da+e++9V++8805x9wUAAAAALgtFGmwiJydH7777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vMBlh4eHKzs7W+np6W7lqamprjbh4eH5RonJmz7XciWpRYsW2r17t6R/3ny9vLwKXM75llFaXU7HZPbs2XrggQf0ySef5LvV4GwhISGqU6eO67hd7oryujvXvj1z3+eVna/OhY57Uc+ry5mnjkeegwcP6pZbbtENN9ygt95664L9bdmy5RVzLpyLp4/JmVq2bKmcnBzt27fvvOs5cx1XotJwTGbMmKEKFSoUKhxd6edJSRyPwijJz2dXCoIUCqVSpUqqV6/eef85HA7FxMQoPT1dGzZscLVdvny5nE6nWrZsWeCymzVrpjJlymjZsmWusp07dyo5OVkxMTGSpJiYGG3evNntg+GSJUsUFBSk6Ojoc/Z706ZNqly5siTJ4XCoWbNmbutxOp1atmyZaz2Xk8vlmHz88cfq16+fPv74Y8XHx19wu44fP649e/a4jtvlriivu5iYGLf60j/7Nq9+VFSUwsPD3epkZGRozZo1bsfnQsc9JiZG33//vU6fPu22nrp166pcuXIXueWlk6eOh/TPlai2bduqWbNmmjFjhuz2C/8JPvM97ErlyWNytk2bNslut7uuml+N54jk+WNijNGMGTN0//33q0yZMhfs75V+npTE8SiMkvx8dsXw9GgXuPJ06tTJNGnSxKxZs8b8+OOPpnbt2m5DLu/fv9/UrVvXrFmzxlX2yCOPmOrVq5vly5eb9evXm5iYGBMTE+Oanze8ZseOHc2mTZvMwoULTaVKldyG15w4caL54osvzK5du8zmzZvN448/bux2u1m6dKmrzuzZs42Pj4+ZOXOm2bZtm3nooYdMSEiI22gzVyJPHZOPPvrIeHt7mylTprgNU5uenu6qM3ToUPPtt9+avXv3mpUrV5rY2FhTsWJFc/jw4RLeK5fOhV539913n3n22Wdd9VeuXGm8vb3Nq6++arZv326ef/75AocRDgkJMV9++aX55ZdfzJ133lng8OfnO+7p6ekmLCzM3HfffWbLli1m9uzZxt/f/4of2tkTx2P//v2mVq1apn379mb//v1u50OemTNnmlmzZpnt27eb7du3mxdeeMHY7Xbz7rvvXqI94zmeOCarVq0yEydONJs2bTJ79uwxH374oalUqZK5//77Xcu4Ws8RYzz3vmWMMUuXLjWSzPbt2/P162o9T0riePz1119m48aNZv78+UaSmT17ttm4caPb+1JxfBa4khGkUOz++usvc88995jAwEATFBRk+vXrZzIzM13z84bZXLFihavs77//No8++qgpV66c8ff3N3fffbfbiWyMMfv27TOdO3c2fn5+pmLFimbo0KHm9OnTrvkvv/yyqVmzpvH19TXly5c3bdu2NcuXL8/Xv8mTJ5vq1asbh8NhWrRoYVavXl38O6GU8dQxadOmjZGU71+fPn1cdXr27GkqV65sHA6HqVKliunZs6fZvXt3ie0LTznf665NmzZu+8QYYz755BNTp04d43A4zLXXXmvmz5/vNt/pdJoRI0aYsLAw4+PjY9q3b2927tzpVudCx90YY37++WfTunVr4+PjY6pUqWJeeuml4t3wUupSH48ZM2YUeC6c+X3mzJkzTf369Y2/v78JCgoyLVq0cBt2+Ep3qY/Jhg0bTMuWLU1wcLDx9fU19evXNy+++KI5deqU23Ku1nPEGM+8bxljzD333OP2W0VnuprPk+I+Hud6X3r++edddYrjs8CVzGaMMZf2GhgAAAAAXN54RgoAAAAALCJIAQAAAIBFBCkAAAAAsIggBQAAAAAWEaQAAAAAwCKCFAAAAABYRJACAAAAAIsIUgAAAABgEUEKAAAAACwiSAEAPOKjjz5StWrVVK5cOSUkJLjN27dvn+rUqaOMjAxX2ahRo2Sz2WSz2eTt7a2KFSvq5ptv1qRJk5SVlXWpuw8AuMoRpAAAl1xaWpoeeOABvfrqq1q8eLE+/PBDzZs3zzX/0Ucf1UsvvaSgoCC3dtdee60OHTqk5ORkrVixQt27d9e4ceN0ww03KDMzs8T6m52dXWLLBgBcnghSAIBL7rffflNwcLB69uyp66+/Xrfccou2b98uSfr4449VpkwZdenSJV87b29vhYeHKyIiQg0bNtRjjz2m7777Tlu2bNHLL7/sqpeVlaUnn3xSVapUUUBAgFq2bKlvv/3WbVkrV65U27Zt5e/vr3LlyikuLk5Hjx6VJLVt21aDBg3SkCFDVLFiRcXFxUmStmzZos6dOyswMFBhYWG67777lJaW5lrmwoUL1bp1a4WEhKhChQq67bbbtGfPHtf87OxsDRo0SJUrV5avr68iIyM1btw41/z09HQ98MADqlSpkoKCgtSuXTv9/PPPF7/DAQDFjiAFALjkateurZMnT2rjxo06cuSI1q1bp0aNGuno0aMaMWKE3nzzzUIvq169eurcubPmzp3rKhs0aJCSkpI0e/Zs/fLLL+revbs6deqkXbt2SZI2bdqk9u3bKzo6WklJSfrxxx91++23Kzc317WM9957Tw6HQytXrtT06dOVnp6udu3aqUmTJlq/fr0WLlyo1NRU9ejRw9XmxIkTSkhI0Pr167Vs2TLZ7XbdfffdcjqdkqQ33nhDX331lT755BPt3LlTH330kWrUqOFq3717dx0+fFjffPONNmzYoKZNm6p9+/Y6cuRIUXc1AKCE2IwxxtOdAABcfT7//HONHDlSf//9t+69916NGjVK/fv3V8OGDdW0aVM9/vjjOn36tEaNGqVu3bpp1KhR+uKLL7Rp06Z8y3r22Wf1xhtv6OTJk0pOTtY111yj5ORkRUREuOrExsaqRYsWevHFF/Wvf/1LycnJ+vHHHwvsW9u2bZWRkaGffvrJVTZ27Fj98MMPWrRokats//79qlatmnbu3Kk6derkW05aWpoqVaqkzZs3q0GDBho8eLC2bt2qpUuXymazudX98ccfFR8fr8OHD8vHx8dVXqtWLT399NN66KGHCr1vAQAlz9vTHQAAXJ3uvvtu3X333a7p7777Tr/88osmT56sWrVq6eOPP1Z4eLhatGihm2+++bzLMsa4gsnmzZuVm5ubL9hkZWWpQoUKkv65ItW9e/fzLrNZs2Zu0z///LNWrFihwMDAfHX37NmjOnXqaNeuXRo5cqTWrFmjtLQ015Wo5ORkNWjQQH379lWHDh1Ut25dderUSbfddps6duzoWv7x48ddfczz999/u90eCAAoHQhSAACPy8rK0qOPPqoPPvhAu3fvVk5Ojtq0aSNJqlOnjtasWXPe9tu3b1dUVJQk6fjx4/Ly8tKGDRvk5eXlVi8vBPn5+V2wTwEBAW7Tx48f1+233+72LFaeypUrS5Juv/12RUZG6u2331ZERIScTqcaNGjgGqyiadOm2rt3r7755hstXbpUPXr0UGxsrD799FMdP35clStXzvcslySFhIRcsL8AgEuLIAUA8LixY8eqU6dOatq0qTZu3KicnBzXvNOnT7s9u3S2HTt2aOHChRo2bJgkqUmTJsrNzdXhw4d10003FdimUaNGWrZsmUaPHl3oPjZt2lSfffaZatSoIW/v/H8+//rrL+3cuVNvv/22a70F3ToYFBSknj17qmfPnurWrZs6deqkI0eOqGnTpkpJSZG3t7fbc1MAgNKJwSYAAB61bds2/e9//9OYMWMk/TN4hN1u1zvvvKP58+drx44duv766yVJOTk5SklJ0cGDB7V582ZNnjxZbdq0UePGjfXUU09J+ucKVu/evXX//fdr7ty52rt3r9auXatx48Zp/vz5kqRhw4Zp3bp1evTRR/XLL79ox44dmjZtmtsIfGcbOHCgjhw5onvuuUfr1q3Tnj17tGjRIvXr10+5ubkqV66cKlSooLfeeku7d+/W8uXL8/0+1oQJE/Txxx9rx44d+vXXXzVnzhyFh4crJCREsbGxiomJ0V133aXFixdr3759WrVqlZ577jmtX7++JHY9AOAicEUKAOAxxhg99NBDmjBhgutWOj8/P82cOVMDBw5UVlaW3nzzTVWpUkWStHXrVlWuXFleXl4KDg5WdHS0hg0bpgEDBrgN0DBjxgyNHTtWQ4cO1YEDB1SxYkW1atVKt912m6R/wtbixYv1n//8Ry1atJCfn59atmype+6555x9jYiI0MqVK/XMM8+oY8eOysrKUmRkpDp16iS73S6bzabZs2dr8ODBatCggerWras33nhDbdu2dS2jbNmyGj9+vHbt2iUvLy9df/31WrBggez2f77XXLBggZ577jn169dPf/75p8LDw3XzzTcrLCysuHc9AOAiMWofAAAAAFjErX0AAAAAYBFBCgAAAAAsIkgBAAAAgEUEKQAAAACwiCAFAAAAABYRpAAAAADAIoIUAAAAAFhEkAIAAAAAiwhSAAAAAGARQQoAAAAALCJIAQAAAIBF/x/yYp6SL+DjKgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

num_dealloc

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0Init/Prelude.lean1273439127343900.0
1Lean/Meta/Tactic/Simp/BuiltinSimprocs.lean332523325200.0
2Lean/Elab/Tactic/Congr.lean580555805500.0
3Lean/Elab/Tactic/Repeat.lean11677711677700.0
4Lean/Elab/Binders.lean2070703207070300.0
..................
845Lean/DocString.lean894258942500.0
846Init.lean307213072100.0
847Lean/Data/Lsp/Diagnostics.lean38404838404800.0
848Lean/Parser/Basic.lean1241793124179300.0
849Lake/Main.lean837078370700.0
\n", + "

850 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse \\\n", + "0 Init/Prelude.lean 1273439 1273439 \n", + "1 Lean/Meta/Tactic/Simp/BuiltinSimprocs.lean 33252 33252 \n", + "2 Lean/Elab/Tactic/Congr.lean 58055 58055 \n", + "3 Lean/Elab/Tactic/Repeat.lean 116777 116777 \n", + "4 Lean/Elab/Binders.lean 2070703 2070703 \n", + ".. ... ... ... \n", + "845 Lean/DocString.lean 89425 89425 \n", + "846 Init.lean 30721 30721 \n", + "847 Lean/Data/Lsp/Diagnostics.lean 384048 384048 \n", + "848 Lean/Parser/Basic.lean 1241793 1241793 \n", + "849 Lake/Main.lean 83707 83707 \n", + "\n", + " absolute_diff %Decrease \n", + "0 0 0.0 \n", + "1 0 0.0 \n", + "2 0 0.0 \n", + "3 0 0.0 \n", + "4 0 0.0 \n", + ".. ... ... \n", + "845 0 0.0 \n", + "846 0 0.0 \n", + "847 0 0.0 \n", + "848 0 0.0 \n", + "849 0 0.0 \n", + "\n", + "[850 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABXeklEQVR4nO3de1hU5f7//9cMOIAo4gkQD0jmIVLTtJTSDkqiUtuz6VZDt2XbNFOykhJTsSi3mWmWuz6mlpY7y6ysPJttFfGQlufUNHYqIJmCGMdZvz/6Mr9G0GYRMKjPx3VxXc697nut9xoXM7xmrXWPxTAMQwAAAAAAl1ndXQAAAAAAXG0IUgAAAABgEkEKAAAAAEwiSAEAAACASQQpAAAAADCJIAUAAAAAJhGkAAAAAMAkghQAAAAAmESQAgAAAACTCFIAANMmT54si8VSLtu65557dM899zgef/3117JYLProo4/KZftDhw5Vw4YNy2Vbl0pNTVXfvn1Vs2ZNWSwWzZo1yy11XI3K4xgtbhsNGzbU0KFDy3S7ACoGghQAtzh58qSioqLk5+ensLAwff7550X6LF++XAEBATp//nyRZffcc48sFossFousVqv8/PzUtGlTDRkyRGvXri2PXbhmLFy40PFcWiwWeXt7Kzg4WJGRkZo9e7YyMzNLZTunTp3S5MmTtWfPnlJZX2mqqLWNGzdOq1evVmxsrN577z117drV3SUBAP4fT3cXAOD6FB0drZMnT+rll1/Wli1b1K9fPx06dMjxyX92drbGjx+vadOmqVq1asWuo169ekpISJAkZWVl6ejRo1q+fLkWL16s/v37a/HixapUqVJ57dJVb+rUqQoNDVVeXp5SUlL09ddfa+zYsZo5c6Y+++wztWzZ0tF34sSJmjBhgqn1nzp1SlOmTFHDhg3VqlUrl8etWbPG1HZK4kq1vf3227Lb7WVeQ3E2bNigHj16aPz48W7ZPgDg8ghSAMrdb7/9pg0bNujrr7/WXXfdpX/+85/aunWrVq9erUcffVSSNGPGDFWrVk0PP/zwZddTrVo1DR482KntpZde0pgxY/TGG2+oYcOGevnll8t0X/4oKytLvr6+5ba90tatWze1bdvW8Tg2NlYbNmzQ/fffr7/97W86ePCgfHx8JEmenp7y9Czbt5CLFy+qcuXKstlsZbqdP+POMJ6WliZ/f/9SW192drZsNpusVi5IAYC/ildSAOUuOztbhmGoevXqkiSLxSJ/f39dvHhR0u+X/b300kt67bXXTP/B5+HhodmzZyssLEyvv/56kcsCFy9erDZt2sjHx0c1atTQgAED9L///a/IepKSktS9e3dVr15dvr6+atmypV577TXH8qFDh6pKlSo6duyYunfvrqpVq2rQoEGSJLvdrlmzZunmm2+Wt7e3AgMD9eijj+rXX3912sann36qqKgoBQcHy8vLS40aNVJ8fLwKCgqc+h05ckR9+vRRUFCQvL29Va9ePQ0YMKDE+2ZGp06dFBcXp59++kmLFy92tBd3b8jatWvVoUMH+fv7q0qVKmratKmeffZZSb/f13TbbbdJkoYNG+a4jHDhwoWSfr9Us3nz5tq1a5fuuusuVa5c2TH20nukChUUFOjZZ59VUFCQfH199be//a3I/l7ufpU/rvPPaivuHqmsrCw9+eSTql+/vry8vNS0aVPNmDFDhmE49bNYLBo9erRWrFih5s2by8vLSzfffLNWrVpV/BP+/xRebmkYhubOneuoqdCPP/6ofv36qUaNGqpcubLat2+vL774wmkdhfeSLV26VBMnTlTdunVVuXJlZWRkFLvNEydOyGKxaMaMGXrrrbfUqFEjeXl56bbbbtOOHTsu+/z90aXP1R/XOXfuXN1www2qXLmyunTpov/9738yDEPx8fGqV6+efHx81KNHD509e/aKz01xNm/erNtuu03e3t5q1KiR/v3vf1+2ryu/J//973/Vr18/NWjQQF5eXqpfv77GjRun3377zXRtkmv/X9Lvr42TJ09WkyZN5O3trTp16qh37946duxYibYLoGxxRgpAuatevboaNWqkF198US+++KK2bt2qPXv2aM6cOZKkp59+Wt26ddNdd91VovV7eHho4MCBiouL0+bNmxUVFSVJeuGFFxQXF6f+/fvr4Ycf1pkzZzRnzhzddddd2r17t+OT/7Vr1+r+++9XnTp19MQTTygoKEgHDx7UypUr9cQTTzi2k5+fr8jISHXo0EEzZsxQ5cqVJUmPPvqoFi5cqGHDhmnMmDE6fvy4Xn/9de3evVtbtmxxnOFYuHChqlSpopiYGFWpUkUbNmzQpEmTlJGRoX/961+SpNzcXEVGRionJ0ePP/64goKCdPLkSa1cuVLnzp1zXPbo6r6VxJAhQ/Tss89qzZo1euSRR4rts3//ft1///1q2bKlpk6dKi8vLx09elRbtmyRJN10002aOnWqJk2apBEjRqhjx46SpDvuuMOxjl9++UXdunXTgAEDNHjwYAUGBl6xrhdeeEEWi0XPPPOM0tLSNGvWLEVERGjPnj2OM2eucKW2PzIMQ3/729+0ceNGDR8+XK1atdLq1av11FNP6eTJk3r11Ved+m/evFnLly/XY489pqpVq2r27Nnq06ePkpOTVbNmzWK3cdddd+m9997TkCFDdN999+mhhx5yLEtNTdUdd9yhixcvasyYMapZs6YWLVqkv/3tb/roo4/Uq1cvp3XFx8fLZrNp/PjxysnJ+dMzfO+//74yMzP16KOPymKxaPr06erdu7d+/PHHEp+dW7JkiXJzc/X444/r7Nmzmj59uvr3769OnTrp66+/1jPPPKOjR49qzpw5Gj9+vN555x2X171371516dJFtWvX1uTJk5Wfn6/nn3++2OPH1d+TZcuW6eLFixo5cqRq1qyp7du3a86cOfr555+1bNkyU/vu6v9XQUGB7r//fq1fv14DBgzQE088oczMTK1du1b79u1To0aNTG0XQDkwAMAN1q9fb1SvXt2QZEgyxo4daxiGYWzZssXw8fExTpw4ccXxd999t3HzzTdfdvknn3xiSDJee+01wzAM48SJE4aHh4fxwgsvOPXbu3ev4enp6WjPz883QkNDjZCQEOPXX3916mu32x3/jo6ONiQZEyZMcOrz3//+15BkLFmyxKl91apVRdovXrxYpO5HH33UqFy5spGdnW0YhmHs3r3bkGQsW7bssvvq6r5dzoIFCwxJxo4dOy7bp1q1akbr1q0dj59//nnjj28hr776qiHJOHPmzGXXsWPHDkOSsWDBgiLL7r77bkOSMW/evGKX3X333Y7HGzduNCQZdevWNTIyMhztH374odP/uWEYRkhIiBEdHf2n67xSbdHR0UZISIjj8YoVKwxJxrRp05z69e3b17BYLMbRo0cdbZIMm83m1Pbdd98Zkow5c+YU2dalJBmjRo1yahs7dqwhyfjvf//raMvMzDRCQ0ONhg0bGgUFBYZh/P/P0w033FDssXap48ePG5KMmjVrGmfPnnW0f/rpp4Yk4/PPP3e0Xfr8Fbr0uSpcZ+3atY1z58452mNjYw1Jxi233GLk5eU52gcOHGjY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HFeX1gKg4uCMFAC3GzdunB588EHdfvvtjra+ffuqR48eju8S+vzzz7Vy5UqncefPn3d8t9HFixd19OhRLV++XMeOHdOAAQOcwkyjRo00bdo0xcbG6sSJE+rZs6eqVq2q48eP65NPPtGIESM0fvx4Wa1Wvfnmm3rggQfUqlUrDRs2THXq1NGhQ4e0f//+In+cXeruu+/Wo48+qoSEBO3Zs0ddunRRpUqVdOTIES1btkyvvfaa+vbtqzvuuEPVq1dXdHS0xowZI4vFovfee6/IH0wbNmzQ6NGj1a9fPzVp0kT5+fl677335OHhoT59+pjatz/z1Vdf6dChQ8rPz1dqaqo2bNigtWvXKiQkRJ999pm8vb0vO3bq1Kn65ptvFBUVpZCQEKWlpemNN95QvXr1nM4K+vv7a968eapatap8fX3Vrl070/fwFKpRo4Y6dOigYcOGKTU1VbNmzdKNN97oNEX7ww8/rI8++khdu3ZV//79dezYMS1evLjIVNJmanvggQd077336rnnntOJEyd0yy23aM2aNfr00081duzYMp+mesKECfrggw/UrVs3jRkzRjVq1NCiRYt0/Phxffzxx+XyZbv/+Mc/NHPmTEVGRmr48OFKS0vTvHnzdPPNN1/2e6rKypQpU7Rq1Sp17NhRjz32mPLz8zVnzhzdfPPN+v777x39XP09adasmRo1aqTx48fr5MmT8vPz08cff1zie8Rc/f966KGH9O677yomJkbbt29Xx44dlZWVpXXr1umxxx5Tjx49SuX5AlCKym1+QAAoxhdffGFUqVLFOHXqVJFlCQkJRnBwsFGnTh3j5ZdfdlpWOF124U+VKlWMxo0bG4MHDzbWrFlz2e19/PHHRocOHQxfX1/D19fXaNasmTFq1Cjj8OHDTv02b95s3HfffUbVqlUNX19fo2XLlk7TVUdHRxu+vr6X3c5bb71ltGnTxvDx8TGqVq1qtGjRwnj66aed9nPLli1G+/btDR8fHyM4ONh4+umnjdWrVxuSjI0bNxqGYRg//vij8Y9//MNo1KiR4e3tbdSoUcO49957jXXr1pV43y5VOP154Y/NZjOCgoKM++67z3jttdecphgvdOm0z+vXrzd69OhhBAcHGzabzQgODjYGDhxo/PDDD07jPv30UyMsLMzw9PR0mm78StPZX2768w8++MCIjY01AgICDB8f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03/+8x/Fx8fru+++k4+Pj1q0aKGQkJDSrg8AAAAAKpy/9M2BTZo0UZMmTUqrFgAAAAC4KpQoSBUUFGjhwoVav3690tLSZLfbnZZv2LChVIoDAAAAgIqoREHqiSee0MKFCxUVFaXmzZvLYrGUdl0AAAAAUGGVKEgtXbpUH374obp3717a9QAAAABAhVei6c9tNptuvPHG0q4FAAAAAK4KJQpSTz75pF577TUZhlHa9QAAAABAhVeiS/s2b96sjRs36quvvtLNN9+sSpUqOS1fvnx5qRQHAAAAABVRiYKUv7+/evXqVdq1AAAAAMBVoURBasGCBaVdBwAAAABcNUp0j5Qk5efna926dfr3v/+tzMxMSdKpU6d04cKFUisOAAAAACqiEp2R+umnn9S1a1clJycrJydH9913n6pWraqXX35ZOTk5mjdvXmnXCQAAAAAVRonOSD3xxBNq27atfv31V/n4+Djae/XqpfXr15dacQAAAABQEZXojNR///tfbd26VTabzam9YcOGOnnyZKkUBgAAAAAVVYnOSNntdhUUFBRp//nnn1W1atW/XBQAAAAAVGQlClJdunTRrFmzHI8tFosuXLig559/Xt27dy+t2gAAAACgQirRpX2vvPKKIiMjFRYWpuzsbP3973/XkSNHVKtWLX3wwQelXSMAAAAAVCglClL16tXTd999p6VLl+r777/XhQsXNHz4cA0aNMhp8gkAAAAAuBaVKEhJkqenpwYPHlyatQAAAADAVaFEQerdd9+94vKHHnqoRMUAAAAAwNWgREHqiSeecHqcl5enixcvymazqXLlygQpAAAAANe0Es3a9+uvvzr9XLhwQYcPH1aHDh2YbAIAAADANa9EQao4jRs31ksvvVTkbBUAAAAAXGtKLUhJv09AcerUqdJcJQAAAABUOCW6R+qzzz5zemwYhk6fPq3XX39dd955Z6kUBgAAAAAVVYmCVM+ePZ0eWywW1a5dW506ddIrr7xSGnUBAAAAQIVVoiBlt9tLuw4AAAAAuGqU6j1SAAAAAHA9KNEZqZiYGJf7zpw5sySbAAAAAIAKq0RBavfu3dq9e7fy8vLUtGlTSdIPP/wgDw8P3XrrrY5+FouldKoEAAAAgAqkREHqgQceUNWqVbVo0SJVr15d0u9f0jts2DB17NhRTz75ZKkWCQAAAAAVSYnukXrllVeU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wCSCFAAAAACYRJACAAAAAJMIUgAAAABgEkEKAAAAAEwiSAEAAACASW4NUm+++aZatmwpPz8/+fn5KTw8XF999ZVjeXZ2tkaNGqWaNWuqSpUq6tOnj1JTU53WkZycrKioKFWuXFkBAQF66qmnlJ+fX967AgAAAOA64tYgVa9ePb300kvatWuXdu7cqU6dOqlHjx7av3+/JGncuHH6/PPPtWzZMm3atEmnTp1S7969HeMLCgoUFRWl3Nxcbd26VYsWLdLChQs1adIkd+0SAAAAgOuApzs3/sADDzg9fuGFF/Tmm29q27ZtqlevnubPn6/3339fnTp1kiQtWLBAN910k7Zt26b27dtrzZo1OnDggNatW6fAwEC1atVK8fHxeuaZZzR58mTZbLZit5uTk6OcnBzH44yMDElSfn4+Z7MA4Dplt9tls9lklSGLvcDlcVYZstlsstvtvIcAwDXA1ddytwapPyooKNCyZcuUlZWl8PBw7dq1S3l5eYqIiHD0adasmRo0aKDExES1b99eiYmJatGihQIDAx19IiMjNXLkSO3fv1+tW7cudlsJCQmaMmVKkfadO3fK19e39HcOAFDhZWZmKi4uTnW9s+V15oDL4wK8sxUXF6f09HQlJSWVYYUAgPKQlZXlUj+3B6m9e/cqPDxc2dnZqlKlij755BOFhYVpz549stls8vf3d+ofGBiolJQUSVJKSopTiCpcXrjscmJjYxUTE+N4nJGRofr166tt27by8/MrpT0DAFxN9uzZo/j4eP1zwRcKDglzedypw3s1Lz5eW7ZsUatWrcquQABAuSi8Wu3PuD1INW3aVHv27NH58+f10UcfKTo6Wps2bSrTbXp5ecnLy6tIu6enpzw93f6UAADcwGq1Kjc3V3ZZZFg9XB5nl0W5ubmyWq28hwDANcDV13K3v+LbbDbdeOONkqQ2bdpox44deu211/Tggw8qNzdX586dczorlZqaqqCgIElSUFCQtm/f7rS+wln9CvsAAAAAQGmrcN8jZbfblZOTozZt2qhSpUpav369Y9nhw4eVnJys8PBwSVJ4eLj27t2rtLQ0R5+1a9fKz89PYWGuX5YBAAAAAGa49YxUbGysunXrpgYNGigzM1Pvv/++vv76a61evVrVqlXT8OHDFRMToxo1asjPz0+PP/64wsPD1b59e0lSly5dFBYWpiFDhmj6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00pOTtbGjRvVr18/JSQk6I477lBmZmaZ1Zubm1tm6wYAXJ0IUgCAcvfjjz+qWrVqevDBB3Xbbbfp3nvv1cGDByVJH3zwgSpVqqTevXsXGefp6amgoCAFBwerRYsWevzxx7Vp0ybt27dPL7/8sqNfTk6Oxo8fr7p168rX11ft2rXT119/7bSuLVu26J577lHlypVVvXp1RUZG6tdff5Uk3XPPPRo9erTGjh2rWrVqKTIyUpK0b98+devWTVWqVFFgYKCGDBmi9PR0xzpXrVqlDh06yN/fXzVr1tT999+vY8eOOZbn5uZq9OjRqlOnjry9vRUSEqKEhATH8nPnzunhhx9W7dq15efnp06dOum777776084AKDUEaQAAOWucePGunjxonbv3q2zZ89qx44datmypX799VfFxcXp9ddfd3ldzZo1U7du3bR8+XJH2+jRo5WYmKilS5fq+++/V79+/dS1a1cdOXJEkrRnzx517txZYWFhSkxM1ObNm/XAAw+ooKDAsY5FixbJZrNpy5Ytmjdvns6dO6dOnTqpdevW2rlzp1atWqXU1FT179/fMSYrK0sxMTHauXOn1q9fL6vVql69eslut0uSZs+erc8++0wffvihDh8+rCVLlqhhw4aO8f369VNaWpq++uor7dq1S7feeqs6d+6ss2fPlvSpBgCUEYthGIa7iwAAXH8++eQTTZo0Sb/99psGDx6syZMna/jw4WrRooVuvfVWPfHEE8rLy9PkyZPVt29fTZ48WStWrNCePXuKrGvChAmaPXu2Ll68qOTkZN1www1KTk5WcHCwo09ERIRuv/12vfjii/r73/+u5ORkbd68udja7rnnHmVkZOjbb791tE2bNk3//e9/tXr1akfbzz//rPr16+vw4cNq0qRJkfWkp6erdu3a2rt3r5o3b64xY8Zo//79WrdunSwWi1PfzZs3KyoqSmlpafLy8nK033jjjXr66ac1YsQIl59bAEDZ83R3AQCA61OvXr3Uq1cvx+NNmzbp+++/15w5c3TjjTfqgw8+UFBQkG6//XbdddddV1yXYRiOYLJ3714VFBQUCTY5OTmqWbOmpN/PSPXr1++K62zTpo3T4++++04bN25UlSpVivQ9duyYmjRpoiNHjmjSpElKSkpSenq640xUcnKymjdvrqFDh+q+++5T06ZN1bVrV91///3q0qWLY/0XLlxw1Fjot99+c7o8EABQMRCkAABul5OTo8cee0zvvfeejh49qvz8fN19992SpCZNmigpKemK4w8ePKjQ0FBJ0oULF+Th4aFdu3bJw8PDqV9hCPLx8fnTmnx9fZ0eX7hwQQ888IDTvViF6tSpI0l64IEHFBISorffflvBwcGy2+1q3ry5Y7KKW2+9VcePH9dXX32ldevWqX///oqIiNBHH32kCxcuqE6dOkXu5ZIkf3//P60XAFC+CFIAALebNm2aunbtqltvvVW7d+9Wfn6+Y1leXp7TvUuXOnTokFatWqXY2FhJUuvWrVVQUKC0tDR17Nix2DEtW7bU+vXrNWXKFJdrvPXWW/Xxxx+rYcOG8vQs+vb5yy+/6PDhw3r77bcd2y3u0kE/Pz89+OCDevDBB9W3b1917dpVZ8+e1a233qqUlBR5eno63TcFAKiYmGwCAOBWBw4c0H/+8x9NnTpV0u+TR1itVs2fP19ffPGFDh06pNtuu02SlJ+fr5SUFJ06dUp79+7VnDlzdPfdd6tVq1Z66qmnJP1+BmvQoEF66KGHtHz5ch0/flzbt29XQkKCvvjiC0lSbGysduzYoccee0zff/+9Dh06pDfffNNpBr5LjRo1SmfPntXAgQO1Y8cOHTt2TKtXr9awYcNUUFCg6tWrq2bNmnrrrbd09OhRbdiwocj3Y82cOVMffPCBDh06pB9++EHLli1TUFCQ/P39FRERofDwcPXs2VNr1qzRiRMntHXrVj333HPauXNnWTz1AIC/gDNSAAC3MQxDI0aM0MyZMx2X0vn4+GjhwoUaNWqUcnJy9Prrr6tu3bqSpP3796tOnTry8PBQtWrVFBYWptjYWI0cOdJpgoYFCxZo2rRpevLJJ3Xy5EnVqlVL7du31/333y/p97C1Zs0aPfvss7r99tvl4+Ojdu3aaeDAgZetNTg4WFu2bNEzzzyjLl26KCcnRyEhIeratausVqssFouWLl2qMWPGqHnz5mratKlmz56te+65x7GOqlWravr06Tpy5Ig8PDx022236csvv5TV+vvnml9++aWee+45DRs2TGfOnFFQUJDuuusuBQYGlvZTDwD4i5i1DwAAAABM4tI+AAAAADCJIAUAAAAAJhGkAAAAAMAkghQAAAAAmESQAgAAAACTCFIAAAAAYBJBCgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAAAAACYRpAAAAADApP8P0A1zUaHwWCIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

num_small_dealloc

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0Leanc.lean241934124196493080.012729
1Lean/Data/PersistentArray.lean12390323123909706470.005222
2Init/Data/List/Lemmas.lean32276637322773777400.002293
3Init/Data/BitVec/Lemmas.lean67092979670939709910.001477
4Init/Control/Lawful/Instances.lean17127580171277011210.000706
..................
845Init/Data/Nat/Mod.lean27155342715496-38-0.001399
846Init/Data/Fin/Lemmas.lean3197309831972564-534-0.001670
847Init/Data/Nat/Lemmas.lean2771270327712211-492-0.001775
848Init/Data/Nat/Bitwise/Lemmas.lean1944127919440677-602-0.003097
849Lean/Widget/TaggedText.lean69418346941353-481-0.006929
\n", + "

850 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse \\\n", + "0 Leanc.lean 2419341 2419649 \n", + "1 Lean/Data/PersistentArray.lean 12390323 12390970 \n", + "2 Init/Data/List/Lemmas.lean 32276637 32277377 \n", + "3 Init/Data/BitVec/Lemmas.lean 67092979 67093970 \n", + "4 Init/Control/Lawful/Instances.lean 17127580 17127701 \n", + ".. ... ... ... \n", + "845 Init/Data/Nat/Mod.lean 2715534 2715496 \n", + "846 Init/Data/Fin/Lemmas.lean 31973098 31972564 \n", + "847 Init/Data/Nat/Lemmas.lean 27712703 27712211 \n", + "848 Init/Data/Nat/Bitwise/Lemmas.lean 19441279 19440677 \n", + "849 Lean/Widget/TaggedText.lean 6941834 6941353 \n", + "\n", + " absolute_diff %Decrease \n", + "0 308 0.012729 \n", + "1 647 0.005222 \n", + "2 740 0.002293 \n", + "3 991 0.001477 \n", + "4 121 0.000706 \n", + ".. ... ... \n", + "845 -38 -0.001399 \n", + "846 -534 -0.001670 \n", + "847 -492 -0.001775 \n", + "848 -602 -0.003097 \n", + "849 -481 -0.006929 \n", + "\n", + "[850 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABlEElEQVR4nO39eVxU5eP//z9nwAFEATdAXJDccQmXRMrSlMQlWzTNXu4vS3PJzFZfrzQVy7TS0kzf9TGs1Hxl2ablbpaKpqZmbqlplApmhqglCHP9/ujHfB1B5SAwkI/77cat5jrXdc51rjnOzHPOOdfYjDFGAAAAAIA8s3u6AwAAAABQ0hCkAAAAAMAighQAAAAAWESQAgAAAACLCFIAAAAAYBFBCgAAAAAsIkgBAAAAgEUEKQAAAACwiCAFAAAAABYRpADgH2TcuHGy2WxFsq02bdqoTZs2rsdfffWVbDabPvzwwyLZfv/+/VWjRo0i2dalUlJSdN9996lChQqy2Wx69dVXPdIP5E32sfnVV1+5ygry+Ln030JhuHQbR44ckc1m09y5cwt1uwAujyAFwM3Ro0fVuXNnBQQEKDIyUp9//nmOOosXL1ZwcLBOnz6dY1mbNm1ks9lks9lkt9sVEBCgunXrqk+fPlq5cmVR7MI/xty5c11jabPZ5Ovrq7CwMMXFxWn69Ok6c+ZMgWzn2LFjGjdunHbs2FEg6ytIxbVvjz32mJYvX67Ro0frvffeU4cOHTzdJQBAEfP2dAcAFC/9+vXT0aNHNXnyZG3YsEHdu3fXvn37XN/cnj9/Xk888YQmTpyowMDAXNdRtWpVTZo0SZJ07tw5HTx4UIsXL9a8efPUo0cPzZs3T6VKlSqqXSrxJkyYoIiICF24cEHJycn66quvNHLkSE2dOlWfffaZGjdu7Kr77LPP6plnnrG0/mPHjmn8+PGqUaOGoqKi8txuxYoVlraTH1fq21tvvSWn01nofcjNmjVrdPfdd+uJJ57wyPYBAJ5HkALg8tdff2nNmjX66quvdNttt+nhhx/Wxo0btXz5cg0ePFiS9PLLLyswMFAPPvjgZdcTGBio3r17u5W9+OKLGjFihN544w3VqFFDkydPLtR9udi5c+fk7+9fZNsraB07dlTz5s1dj0ePHq01a9bozjvv1F133aW9e/fKz89PkuTt7S1v78J9af/zzz9VunRpORyOQt3O1XgyjJ84cUJBQUEFtr7z58/L4XDIbudCEQAoKXjFBuBy/vx5GWNUrlw5SZLNZlNQUJD+/PNPSX9f9vfiiy/qtddes/yBz8vLS9OnT1dkZKRef/31HJcFzps3T82aNZOfn5/Kly+vnj176pdffsmxns2bN6tTp04qV66c/P391bhxY7322muu5f3791eZMmV06NAhderUSWXLllWvXr0kSU6nU6+++qoaNGggX19fhYSEaPDgwfrjjz/ctvHpp5+qc+fOCgsLk4+Pj2rWrKn4+HhlZWW51Ttw4IC6deum0NBQ+fr6qmrVqurZs2e+982Ktm3basyYMfr55581b948V3lu90itXLlSrVq1UlBQkMqUKaO6devqP//5j6S/7x256aabJEkDBgxwXUaYfd9FmzZt1LBhQ23btk233XabSpcu7Wp7uftCsrKy9J///EehoaHy9/fXXXfdlWN/a9Soof79++doe/E6r9a33O5xOXfunB5//HFVq1ZNPj4+qlu3rl5++WUZY9zq2Ww2DR8+XJ988okaNmwoHx8fNWjQQMuWLct9wP//si+3NMZo5syZrj5l++mnn9S9e3eVL19epUuXVsuWLbV06VK3dWTfr7Nw4UI9++yzqlKlikqXLq20tLRct5l9L8zLL7+sN998UzVr1pSPj49uuukmbdmy5bLjd7FLx+ridc6cOVM33HCDSpcurfbt2+uXX36RMUbx8fGqWrWq/Pz8dPfdd+vUqVNXHJtLnTlzRiNHjlSNGjXk4+Oj4OBg3XHHHfruu+/c+tuwYUN9//33at26tUqXLq1atWq57rNbt26doqOj5efnp7p162rVqlVu2/j55581dOhQ1a1bV35+fqpQoYK6d++uI0eOWOqrFdnPgZ+fn1q0aKFvvvkm13rp6el67rnnVKtWLfn4+KhatWp66qmnlJ6e7lYvISFBbdu2VXBwsHx8fBQZGalZs2blu39r1qzRrbfeKn9/fwUFBenuu+/W3r17c9Q7evSoBg4c6Hqdi4iI0JAhQ5SRkZHvbQPXG85IAXApV66catasqRdeeEEvvPCCNm7cqB07dmjGjBmSpKeeekodO3bUbbfdlq/1e3l56YEHHtCYMWO0fv16de7cWZL0/PPPa8yYMerRo4cefPBB/fbbb5oxY4Zuu+02bd++3fXN/8qVK3XnnXeqcuXKevTRRxUaGqq9e/dqyZIlevTRR13byczMVFxcnFq1aqWXX35ZpUuXliQNHjxYc+fO1YABAzRixAgdPnxYr7/+urZv364NGza4znDMnTtXZcqU0ahRo1SmTBmtWbNGY8eOVVpaml566SVJUkZGhuLi4pSenq5HHnlEoaGhOnr0qJYsWaLU1FTXZY953bf86NOnj/7zn/9oxYoVeuihh3Kts3v3bt15551q3LixJkyYIB8fHx08eFAbNmyQJNWvX18TJkzQ2LFjNWjQIN16662SpJtvvtm1jt9//10dO3ZUz5491bt3b4WEhFyxX88//7xsNpuefvppnThxQq+++qpiY2O1Y8cO15mzvMhL3y5mjNFdd92ltWvXauDAgYqKitLy5cv15JNP6ujRo5o2bZpb/fXr12vx4sUaOnSoypYtq+nTp6tbt25KSkpShQoVct3Gbbfdpvfee099+vTRHXfcob59+7qWpaSk6Oabb9aff/6pESNGqEKFCnrnnXd011136cMPP9S9997rtq74+Hg5HA498cQTSk9Pv+oZvgULFujMmTMaPHiwbDabpkyZoq5du+qnn37K99m5+fPnKyMjQ4888ohOnTqlKVOmqEePHmrbtq2++uorPf300zp48KBmzJihJ554Qm+//Xae1/3www/rww8/1PDhwxUZGanff/9d69ev1969e9W0aVNXvT/++EN33nmnevbsqe7du2vWrFnq2bOn5s+fr5EjR+rhhx/Wv/71L7300ku677779Msvv6hs2bKSpC1btmjjxo3q2bOnqlatqiNHjmjWrFlq06aN9uzZ4/q3X1DmzJmjwYMH6+abb9bIkSP1008/6a677lL58uVVrVo1Vz2n06m77rpL69ev16BBg1S/fn3t2rVL06ZN048//qhPPvnEVXfWrFlq0KCB7rrrLnl7e+vzzz/X0KFD5XQ6NWzYMEv9W7VqlTp27KgbbrhB48aN019//aUZM2bolltu0XfffecK08eOHVOLFi2UmpqqQYMGqV69ejp69Kg+/PBD/fnnnx4/2wyUGAYALrJ69WpTrlw5I8lIMiNHjjTGGLNhwwbj5+dnjhw5csX2rVu3Ng0aNLjs8o8//thIMq+99poxxpgjR44YLy8v8/zzz7vV27Vrl/H29naVZ2ZmmoiICBMeHm7++OMPt7pOp9P1//369TOSzDPPPONW55tvvjGSzPz5893Kly1blqP8zz//zNHvwYMHm9KlS5vz588bY4zZvn27kWQWLVp02X3N675dTkJCgpFktmzZctk6gYGBpkmTJq7Hzz33nLn4pX3atGlGkvntt98uu44tW7YYSSYhISHHstatWxtJZvbs2bkua926tevx2rVrjSRTpUoVk5aW5ir/4IMP3J5zY4wJDw83/fr1u+o6r9S3fv36mfDwcNfjTz75xEgyEydOdKt33333GZvNZg4ePOgqk2QcDodb2c6dO40kM2PGjBzbupQkM2zYMLeykSNHGknmm2++cZWdOXPGREREmBo1apisrCxjzP83TjfccEOux9qlDh8+bCSZChUqmFOnTrnKP/30UyPJfP75566yS8cv26Vjlb3OSpUqmdTUVFf56NGjjSRz4403mgsXLrjKH3jgAeNwOFzHf14EBgbmGKNLZR9fCxYscJXt27fPSDJ2u91s2rTJVb58+fIcx0Ju45eYmGgkmXfffddVlj3ma9eudZVdOiZXk5GRYYKDg01UVJRJT093lb/55ptGktu4v/fee8Zut7sdC8YYM3v2bCPJbNiw4Yr7EBcXZ2644Qa3skuf2+zn8OLxiIqKMsHBweb33393le3cudPY7XbTt29fV1nfvn2N3W7P9bXl4tdTAFfGpX0A3LRt21ZJSUnatGmTkpKSNG3aNDmdTo0YMUKPP/64wsPDNWvWLNWrV09169bV7NmzLa2/TJkykuSacW7x4sVyOp3q0aOHTp486foLDQ1V7dq1tXbtWknS9u3bdfjwYY0cOTLHWZzcpvseMmSI2+NFixYpMDBQd9xxh9t2mjVrpjJlyri2I8ntrMmZM2d08uRJ3Xrrrfrzzz+1b98+SXKdcVq+fLnr0sdL5XXfrkWZMmWuOHtf9lh9+umn+Z6YwcfHRwMGDMhz/b59+7rOGEjSfffdp8qVK+uLL77I1/bz6osvvpCXl5dGjBjhVv7444/LGKMvv/zSrTw2NlY1a9Z0PW7cuLECAgL0008/5Xv7LVq0UKtWrVxlZcqU0aBBg3TkyBHt2bPHrX6/fv0snaG7//77XZfdSnKdoctvfyWpe/fubpPGREdHS5J69+7tdq9ddHS0MjIydPTo0TyvOygoSJs3b9axY8euWK9MmTLq2bOn63HdunUVFBSk+vXru/pzcd8u3t+Lx+/ChQv6/fffVatWLQUFBbldQlgQtm7dqhMnTujhhx92O2PTv3//HBPvLFq0SPXr11e9evXc/u23bdtWki77enP69GmdPHlSrVu31k8//ZTrzKiXc/z4ce3YsUP9+/dX+fLlXeWNGzfWHXfc4fr353Q69cknn6hLly5u915mK6qfTwD+Cbi0D0AOZcqUcfsAk5CQoOTkZD3zzDNatWqVnnzySc2bN082m03/+te/VLduXd1+++15WvfZs2clyfVB+8CBAzLGqHbt2rnWz75k6dChQ5Kkhg0bXnUb3t7eqlq1qlvZgQMHdPr0aQUHB+fa5sSJE67/3717t5599lmtWbMmx30r2R9sIiIiNGrUKE2dOlXz58/Xrbfeqrvuuku9e/d2fajK675di7Nnz152n6S/P3z/v//3//Tggw/qmWeeUbt27dS1a1fdd999eb7PrUqVKpYu9bl0f202m2rVqlWo961If98vExYW5hbipL8vEcxefrHq1avnWEe5cuVy3DNnZfsX/7vJbfsXH78RERGW1n9pf7NDVX77m9s6s4/diy9Tu7jcyramTJmifv36qVq1amrWrJk6deqkvn376oYbbnCrV7Vq1Rwf3gMDA/PUh7/++kuTJk1SQkKCjh496nYvnJUQkhfZx8+lx3epUqVy7NOBAwe0d+9eVapUKdd1Xfx6s2HDBj333HNKTEzM8aXM6dOnLzs76uX6V7du3RzL6tevr+XLl+vcuXM6e/as0tLS8vRaCuDKCFIArigtLU3//e9/9fLLL8vf31/vv/++7rvvPt1zzz2S/j7bMH/+/DwHqR9++EGSVKtWLUl/fztqs9n05ZdfysvLK0f97DNYVvj4+OQICU6nU8HBwZo/f36ubbI/8KSmpqp169YKCAjQhAkTVLNmTfn6+uq7777T008/7XZW55VXXlH//v316aefasWKFRoxYoQmTZqkTZs2qWrVqoWybxf79ddfdfr0addY5sbPz09ff/211q5dq6VLl2rZsmX63//+p7Zt22rFihW59iu3dRS0y33rnZWVlac+FYTLbcdcMjFFYbE6rnnpb/ZEGJe6dKKUq62zIMamR48euvXWW/Xxxx9rxYoVeumllzR58mQtXrxYHTt2LJA+PPLII0pISNDIkSMVExOjwMBA2Ww29ezZ02NT40t/v940atRIU6dOzXV5dkg8dOiQ2rVrp3r1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v7+/oqOj9dVXX7mta8OGDWrTpo1Kly6tcuXKKS4uTn/88YckqU2bNho+fLhGjhypihUrKi4uTpL0ww8/qGPHjipTpoxCQkLUp08fnTx50rXOZcuWqVWrVgoKClKFChV055136tChQ67lGRkZGj58uCpXrixfX1+Fh4dr0qRJruWpqal68MEHValSJQUEBKht27bauXPntQ84AKDAEaQAAEWudu3a+vPPP7V9+3adOnVKW7ZsUePGjfXHH39ozJgxev311/O8rnr16qljx45avHixq2z48OFKTEzUwoUL9f3336t79+7q0KGDDhw4IEnasWOH2rVrp8jISCUmJmr9+vXq0qWLsrKyXOt455135HA4tGHDBs2ePVupqalq27atmjRpoq1bt2rZsmVKSUlRjx49XG3OnTunUaNGaevWrVq9erXsdrvuvfdeOZ1OSdL06dP12Wef6YMPPtD+/fs1f/581ahRw9W+e/fuOnHihL788ktt27ZNTZs2Vbt27XTq1Kn8DjUAoJDYjDHG050AAFx/Pv74Y40dO1Z//fWXevfurXHjxmngwIFq1KiRmjZtqkcffVQXLlzQuHHjdN9992ncuHH65JNPtGPHjhzreuaZZzR9+nT9+eefSkpK0g033KCkpCSFhYW56sTGxqpFixZ64YUX9K9//UtJSUlav359rn1r06aN0tLS9N1337nKJk6cqG+++UbLly93lf3666+qVq2a9u/frzp16uRYz8mTJ1WpUiXt2rVLDRs21IgRI7R7926tWrVKNpvNre769evVuXNnnThxQj4+Pq7yWrVq6amnntKgQYPyPLYAgMLn7ekOAACuT/fee6/uvfde1+N169bp+++/14wZM1SrVi29//77Cg0NVYsWLXTbbbddcV3GGFcw2bVrl7KysnIEm/T0dFWoUEHS32ekunfvfsV1NmvWzO3xzp07tXbtWpUpUyZH3UOHDqlOnTo6cOCAxo4dq82bN+vkyZOuM1FJSUlq2LCh+vfvrzvuuEN169ZVhw4ddOedd6p9+/au9Z89e9bVx2x//fWX2+WBAIDigSAFAPC49PR0DR06VO+9954OHjyozMxMtW7dWpJUp04dbd68+Yrt9+7dq4iICEnS2bNn5eXlpW3btsnLy8utXnYI8vPzu2qf/P393R6fPXtWXbp0cbsXK1vlypUlSV26dFF4eLjeeusthYWFyel0qmHDhq7JKpo2barDhw/ryy+/1KpVq9SjRw/Fxsbqww8/1NmzZ1W5cuUc93JJUlBQ0FX7CwAoWgQpAIDHTZw4UR06dFDTpk21fft2ZWZmupZduHDB7d6lS+3bt0/Lli3T6NGjJUlNmjRRVlaWTpw4oVtvvTXXNo0bN9bq1as1fvz4PPexadOm+uijj1SjRg15e+d8+/z999+1f/9+vfXWW67t5nbpYEBAgO6//37df//9uu+++9ShQwedOnVKTZs2VXJysry9vd3umwIAFE9MNgEA8Kg9e/bof//7nyZMmCDp78kj7Ha75syZo6VLl2rfvn266aabJEmZmZlKTk7WsWPHtGvXLs2YMUOtW7dWVFSUnnzySUl/n8Hq1auX+vbtq8WLF+vw4cP69ttvNWnSJC1dulSSNHr0aG3ZskVDhw7V999/r3379mnWrFluM/BdatiwYTp16pQeeOABbdmyRYcOHdLy5cs1YMAAZWVlqVy5cqpQoYLefPNNHTx4UGvWrMnx+1hTp07V+++/r3379unHH3/UokWLFBoaqqCgIMXGxiomJkb33HOPVqxYoSNHjmjjxo3673//q61btxbG0AMArgFnpAAAHmOM0aBBgzR16lTXpXR+fn6aO3euhg0bpvT0dL3++uuqUqWKJGn37t2qXLmyvLy8FBgYqMjISI0ePVpDhgxxm6AhISFBEydO1OOPP66jR4+qYsWKatmype68805Jf4etFStW6D//+Y9atGghPz8/RUdH64EHHrhsX8PCwrRhwwY9/fTTat++vdLT0xUeHq4OHTrIbrfLZrNp4cKFGjFihBo2bKi6detq+vTpatOmjWsdZcuW1ZQpU3TgwAF5eXnppptu0hdffCG7/e/vNb/44gv997//1YABA/Tbb78pNDRUt912m0JCQgp66AEA14hZ+wAAAADAIi7tAwAAAACLCFIAAAAAYBFBCgAAAAAsIkgBAAAAgEUEKQAAAACwiCAFAAAAABYRpAAAAADAIoIUAAAAAFhEkAIAAAAAiwhSAAAAAGARQQoAAAAALPr/AZZs3IUPNuUQAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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zJs3T7lz59Y333yjMmXKyMfHRx06dNCtW7c0f/58FStWTHny5FH//v0VHx9v2/edO3c0cOBABQQEKFu2bAoODta2bducju37779X/fr1lTVrVgUGBqp///66efPmA9efOHGigoKClC1bNgUGBuqVV17RjRs3bO//dR5r1qxRqVKl5O3trRYtWujcuXO2dQ4cOKBGjRopR44cypkzp6pXr67du3c7HVN4eLhat26trFmz6rHHHtOiRYucPl/p/jyQM2fOVKtWreTj46Ny5cppx44d+u2339SwYUNly5ZNderU0cmTJ52OGcY1bNhQr732mt544w35+vqqRYsWGjlypIoUKSIvLy8VKlRI/fv3t63/6aef2q4tPz8/dejQwYXRZ1wNGzZU//799fbbbytv3rzy9/fXyJEjJSXuuihJ0dHRslgstvvPX90ZN2zYoKpVqypr1qxq3LixwsPD9e2336pcuXLKmTOnunTpolu3bjkV08qVKxUUFKSsWbMqX758atq0qe3e8Fe3qLFjx8rPz0+5c+fW6NGjde/ePf3nP/9R3rx5VbhwYc2dO9dun4MGDVLp0qXl4+Oj4sWLa9iwYbp7926KPz9JWr9+verVq6fcuXMrX758atWqld19xRlffvmlKlSoIC8vLxUrVkwTJkywe//OnTsaNGiQAgMD5eXlpZIlS+rzzz83Jf60IC1ehzdv3lT37t2VPXt2FSxYMNG/ifTwn82RkZHq3LmzAgIC5OPjo6CgIC1ZsiRZn83Zs2fVpk0bZc+eXTlz5tRzzz2nK1eu2K3z9ddfq2bNmvL29pavr6/atWuXrGO4Ulr8t09v9yCuVaRn6T4B/OSTTxQSEqIXX3xRly5d0qVLlxQYGJhovVu3bmny5MlaunSp1q9fr23btqldu3Zat26d1q1bp4ULF2rmzJlauXKlbZvXXntNO3bs0NKlS3Xw4EE9++yzeuKJJ/Trr78+NK6TJ0/qiSee0DPPPKODBw9q2bJl+v777/Xaa689cBs3NzdNnjxZR44c0fz587Vlyxa9/fbbic7j/fff14IFC/TDDz8oOjpanTp1sr3ftWtXFS5cWD///LP27NmjwYMHy8PDw+mYXnjhBZ07d05bt27VypUr9emnnyo8PPyh5/tP7733nrp37679+/erbNmy6tKli/r166chQ4Zo9+7dslqtdsd0FDNS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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# metrics for which we should compute decreases\n", + "df_corr = pd.DataFrame(df_merged[\"File\"].unique(), columns=[\"File\"]) \n", + "\n", + "for metric in [\"time_elapsed_ms\", \"rss\", \"num_small_alloc\", \"num_dealloc\", \"num_small_dealloc\"]:\n", + " display(HTML(f\"

{metric}

\"))\n", + " df_metric = df_merged[df_merged[\"Metric\"] == metric].copy()\n", + " df_metric[\"absolute_diff\"] = df_merged[\"Value_no_reuse\"] - df_merged[\"Value_reuse\"]\n", + " df_metric[\"%Decrease\"] = (\n", + " 100.0 * (df_merged[\"Value_no_reuse\"] - df_merged[\"Value_reuse\"]) / df_merged[\"Value_no_reuse\"]\n", + " )\n", + " df_metric = df_metric.drop([\"Condition_reuse\", \"Condition_no_reuse\", \"Metric\"], axis=1)\n", + "\n", + " df_kv = df_metric[[\"File\", \"%Decrease\"]].copy()\n", + " df_kv.rename(columns={\"%Decrease\": metric}, inplace=True)\n", + " df_corr = pd.merge(df_corr, df_kv, on=\"File\", how=\"outer\")\n", + " \n", + " # Sorting by maximum decrease\n", + " df_metric_sorted = df_metric.sort_values(by=\"%Decrease\", ascending=False)\n", + " df_metric_sorted.reset_index(drop=True, inplace=True) # changes index to start from zero.\n", + " display(df_metric_sorted)\n", + " plt.figure(figsize=(10, 6))\n", + " plt.hist(df_metric_sorted['%Decrease'], bins=50, color='skyblue', edgecolor='black')\n", + " plt.title(f'%Decrease Distribution for {metric}')\n", + " plt.xlabel('%Decrease')\n", + " plt.ylabel('Frequency')\n", + " plt.grid(axis='y', alpha=0.75)\n", + " plt.show()\n", + "\n", + "corr = df_corr.drop('File', axis=1).corr() # Assuming df_corr is defined and populated\n", + "plt.figure(figsize=(12,8))\n", + "sns.heatmap(corr, cmap=\"Greens\",annot=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e7ec6270-c6f5-46b0-b7e6-b28f343851f5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

Correlation: Time elapsed v/s # allocations (reuse)

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time_elapsed_msnum_alloc
File
Lean/Elab/Tactic/Omega/Frontend.lean423384034116
Lean/Elab/Quotation.lean317303926757
Lean/Elab/Do.lean315006328540
Lean/Elab/App.lean279784005911
Lean/Meta/Match/MatchEqs.lean268022950442
.........
Init/Data/String.lean14655644
Init/Data/FloatArray.lean14555502
Lean/Meta/TransparencyMode.lean14363389
Init/Data/Char.lean12053141
Init/Data/Cast.lean10248545
\n", + "

850 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " time_elapsed_ms num_alloc\n", + "File \n", + "Lean/Elab/Tactic/Omega/Frontend.lean 42338 4034116\n", + "Lean/Elab/Quotation.lean 31730 3926757\n", + "Lean/Elab/Do.lean 31500 6328540\n", + "Lean/Elab/App.lean 27978 4005911\n", + "Lean/Meta/Match/MatchEqs.lean 26802 2950442\n", + "... ... ...\n", + "Init/Data/String.lean 146 55644\n", + "Init/Data/FloatArray.lean 145 55502\n", + "Lean/Meta/TransparencyMode.lean 143 63389\n", + "Init/Data/Char.lean 120 53141\n", + "Init/Data/Cast.lean 102 48545\n", + "\n", + "[850 rows x 2 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Correlation: Time elapsed v/s # allocations (noreuse)

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time_elapsed_msnum_alloc
File
Lean/Elab/Tactic/Omega/Frontend.lean402534034116
Lean/Elab/Do.lean329476328540
Lean/Elab/Quotation.lean279803926757
Lean/Meta/Match/MatchEqs.lean261022950442
Lean/Elab/App.lean259784005911
.........
Lean/Runtime.lean13945677
Lean/Meta/TransparencyMode.lean13563389
Init/Data/Int/Bitwise.lean12861700
Init/Data/Char.lean10653141
Init/Data/Cast.lean9148545
\n", + "

850 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " time_elapsed_ms num_alloc\n", + "File \n", + "Lean/Elab/Tactic/Omega/Frontend.lean 40253 4034116\n", + "Lean/Elab/Do.lean 32947 6328540\n", + "Lean/Elab/Quotation.lean 27980 3926757\n", + "Lean/Meta/Match/MatchEqs.lean 26102 2950442\n", + "Lean/Elab/App.lean 25978 4005911\n", + "... ... ...\n", + "Lean/Runtime.lean 139 45677\n", + "Lean/Meta/TransparencyMode.lean 135 63389\n", + "Init/Data/Int/Bitwise.lean 128 61700\n", + "Init/Data/Char.lean 106 53141\n", + "Init/Data/Cast.lean 91 48545\n", + "\n", + "[850 rows x 2 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time_elapsed_msnum_alloc
File
Lean/Elab/Tactic/Omega/Frontend.lean423384034116
Lean/Elab/Tactic/Omega/Frontend.lean402534034116
Lean/Elab/Do.lean329476328540
Lean/Elab/Quotation.lean317303926757
Lean/Elab/Do.lean315006328540
.........
Init/Data/Int/Bitwise.lean12861700
Init/Data/Char.lean12053141
Init/Data/Char.lean10653141
Init/Data/Cast.lean10248545
Init/Data/Cast.lean9148545
\n", + "

1700 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " time_elapsed_ms num_alloc\n", + "File \n", + "Lean/Elab/Tactic/Omega/Frontend.lean 42338 4034116\n", + "Lean/Elab/Tactic/Omega/Frontend.lean 40253 4034116\n", + "Lean/Elab/Do.lean 32947 6328540\n", + "Lean/Elab/Quotation.lean 31730 3926757\n", + "Lean/Elab/Do.lean 31500 6328540\n", + "... ... ...\n", + "Init/Data/Int/Bitwise.lean 128 61700\n", + "Init/Data/Char.lean 120 53141\n", + "Init/Data/Char.lean 106 53141\n", + "Init/Data/Cast.lean 102 48545\n", + "Init/Data/Cast.lean 91 48545\n", + "\n", + "[1700 rows x 2 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_full = None\n", + "\n", + "# for each file, grab num alloc and time elapsed.\n", + "variant2df = { \"reuse\" : reuse, \"noreuse\": noreuse }\n", + "for (variant, df) in variant2df.items():\n", + " metric2df = {}\n", + " for metric in [\"time_elapsed_ms\", \"num_alloc\"]:\n", + " out = df[df[\"Metric\"] == metric].copy()\n", + " out = out[[\"File\", \"Value\"]]\n", + " out.rename(columns={\"Value\" : metric}, inplace=True)\n", + " out = out[[\"File\", metric]].set_index(\"File\")\n", + " metric2df[metric] = out\n", + " \n", + " df_metrics_merged = metric2df[\"time_elapsed_ms\"].join(metric2df[\"num_alloc\"])\n", + " df_metrics_merged = df_metrics_merged.sort_values(by='time_elapsed_ms', ascending=False)\n", + "\n", + " display(HTML(f\"

Correlation: Time elapsed v/s # allocations ({variant})

\"))\n", + " display(df_metrics_merged)\n", + " corr = df_metrics_merged.corr() # Assuming df_corr is defined and populated\n", + " plt.figure(figsize=(4,2))\n", + " sns.heatmap(corr, cmap=\"Greens\",annot=True)\n", + " plt.title(f\"Correlation: Time Elapsed v/s # Allocations ({variant})\")\n", + " plt.show()\n", + "\n", + " \n", + " if df_full is None:\n", + " df_full = df_metrics_merged\n", + " else:\n", + " df_full = pd.concat([df_full, df_metrics_merged])\n", + "\n", + "df_full = df_full.sort_values(by='time_elapsed_ms', ascending=False)\n", + "display(df_full)\n", + "corr = df_full.corr() \n", + "plt.figure(figsize=(4,2))\n", + "sns.heatmap(corr, cmap=\"Greens\",annot=True)\n", + "plt.title('Correlation: Time Elapsed v/s # Allocations (Aggregate reuse + no reuse)')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "efe6633f-1cd3-4187-99c7-2bdffc6a3f6f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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": 5 +} diff --git a/1-runs/run-2024-03-31---15-55---tcg40/plot-stage3.ipynb b/1-runs/run-2024-03-31---15-55---tcg40/plot-stage3.ipynb new file mode 100644 index 000000000000..5d4f09b53bf3 --- /dev/null +++ b/1-runs/run-2024-03-31---15-55---tcg40/plot-stage3.ipynb @@ -0,0 +1,1721 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "305ca8eb-b873-4f3e-aa55-9d0adeab7fe9", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from IPython.display import display, HTML\n", + "from datetime import timedelta\n", + "import seaborn as sns\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "56f9cc1a-76c5-488f-9fa2-a6eade40369d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "noreuse\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileConditionMetricValue
0Init/Prelude.leanreuse_across_ctor_disabledrss151330816
1Init/Prelude.leanreuse_across_ctor_disablednum_alloc1321786
2Init/Prelude.leanreuse_across_ctor_disablednum_small_alloc26198906
3Init/Prelude.leanreuse_across_ctor_disablednum_dealloc1273534
4Init/Prelude.leanreuse_across_ctor_disablednum_small_dealloc25817637
...............
28579./././hello_world.leanreuse_across_ctor_disablednum_pages2179
28580./././hello_world.leanreuse_across_ctor_disablednum_exports0
28581./././hello_world.leanreuse_across_ctor_disablednum_recycled_pages358
28582./././hello_world.leanreuse_across_ctor_disabledc_file_size2345
28583./././hello_world.leanreuse_across_ctor_disabledtime_elapsed_ms167
\n", + "

28584 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " File Condition \\\n", + "0 Init/Prelude.lean reuse_across_ctor_disabled \n", + "1 Init/Prelude.lean reuse_across_ctor_disabled \n", + "2 Init/Prelude.lean reuse_across_ctor_disabled \n", + "3 Init/Prelude.lean reuse_across_ctor_disabled \n", + "4 Init/Prelude.lean reuse_across_ctor_disabled \n", + "... ... ... \n", + "28579 ./././hello_world.lean reuse_across_ctor_disabled \n", + "28580 ./././hello_world.lean reuse_across_ctor_disabled \n", + "28581 ./././hello_world.lean reuse_across_ctor_disabled \n", + "28582 ./././hello_world.lean reuse_across_ctor_disabled \n", + "28583 ./././hello_world.lean reuse_across_ctor_disabled \n", + "\n", + " Metric Value \n", + "0 rss 151330816 \n", + "1 num_alloc 1321786 \n", + "2 num_small_alloc 26198906 \n", + "3 num_dealloc 1273534 \n", + "4 num_small_dealloc 25817637 \n", + "... ... ... \n", + "28579 num_pages 2179 \n", + "28580 num_exports 0 \n", + "28581 num_recycled_pages 358 \n", + "28582 c_file_size 2345 \n", + "28583 time_elapsed_ms 167 \n", + "\n", + "[28584 rows x 4 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "reuse\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileConditionMetricValue
0Init/Prelude.leanreuse_across_ctor_disabledrss143773696
1Init/Prelude.leanreuse_across_ctor_disablednum_alloc1323874
2Init/Prelude.leanreuse_across_ctor_disablednum_small_alloc26551155
3Init/Prelude.leanreuse_across_ctor_disablednum_dealloc1275419
4Init/Prelude.leanreuse_across_ctor_disablednum_small_dealloc26169298
...............
28629./././hello_world.leanreuse_across_ctor_disablednum_pages2178
28630./././hello_world.leanreuse_across_ctor_disablednum_exports0
28631./././hello_world.leanreuse_across_ctor_disablednum_recycled_pages357
28632./././hello_world.leanreuse_across_ctor_disabledc_file_size2345
28633./././hello_world.leanreuse_across_ctor_disabledtime_elapsed_ms179
\n", + "

28634 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " File Condition \\\n", + "0 Init/Prelude.lean reuse_across_ctor_disabled \n", + "1 Init/Prelude.lean reuse_across_ctor_disabled \n", + "2 Init/Prelude.lean reuse_across_ctor_disabled \n", + "3 Init/Prelude.lean reuse_across_ctor_disabled \n", + "4 Init/Prelude.lean reuse_across_ctor_disabled \n", + "... ... ... \n", + "28629 ./././hello_world.lean reuse_across_ctor_disabled \n", + "28630 ./././hello_world.lean reuse_across_ctor_disabled \n", + "28631 ./././hello_world.lean reuse_across_ctor_disabled \n", + "28632 ./././hello_world.lean reuse_across_ctor_disabled \n", + "28633 ./././hello_world.lean reuse_across_ctor_disabled \n", + "\n", + " Metric Value \n", + "0 rss 143773696 \n", + "1 num_alloc 1323874 \n", + "2 num_small_alloc 26551155 \n", + "3 num_dealloc 1275419 \n", + "4 num_small_dealloc 26169298 \n", + "... ... ... \n", + "28629 num_pages 2178 \n", + "28630 num_exports 0 \n", + "28631 num_recycled_pages 357 \n", + "28632 c_file_size 2345 \n", + "28633 time_elapsed_ms 179 \n", + "\n", + "[28634 rows x 4 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "noreuse = pd.read_csv('noreuse.stage3.csv',\n", + " names=[\"File\", \"Condition\", \"Metric\", \"Value\"])\n", + "reuse = pd.read_csv('reuse.stage3.csv', \n", + " names=[\"File\", \"Condition\", \"Metric\", \"Value\"])\n", + "print(\"noreuse\"); display(noreuse);\n", + "print(\"reuse\"); display(reuse);" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2912e2fe-5706-4831-a8b0-77fc8e6a2133", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

time (reuse): 0:48:12.333000 | time (noreuse): 0:47:35.901000

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Filtering the rows where Metric is 'time_elapsed_ms' and then summing the 'Value' column for both DataFrames\n", + "sum_time_elapsed_reuse = reuse[reuse[\"Metric\"] == \"time_elapsed_ms\"][\"Value\"].sum()\n", + "sum_time_elapsed_no_reuse = noreuse[noreuse[\"Metric\"] == \"time_elapsed_ms\"][\"Value\"].sum()\n", + "\n", + "sum_time_elapsed_reuse, sum_time_elapsed_no_reuse\n", + "\n", + "# Ensuring the values are in a compatible format for timedelta\n", + "time_reuse = timedelta(milliseconds=int(sum_time_elapsed_reuse))\n", + "time_no_reuse = timedelta(milliseconds=int(sum_time_elapsed_no_reuse))\n", + "\n", + "# Formatting as hours:minutes:seconds.milliseconds again\n", + "time_format_reuse = str(time_reuse)\n", + "time_format_no_reuse = str(time_no_reuse)\n", + "display(HTML(f\"

time (reuse): {time_format_reuse} | time (noreuse): {time_format_no_reuse}

\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a8f14d78-1cf1-4d14-a128-76fa55975629", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileCondition_reuseMetricValue_reuseCondition_no_reuseValue_no_reuse
0Init/Prelude.leanreuse_across_ctor_disabledrss143773696reuse_across_ctor_disabled151330816
1Init/Prelude.leanreuse_across_ctor_disablednum_alloc1323874reuse_across_ctor_disabled1321786
2Init/Prelude.leanreuse_across_ctor_disablednum_small_alloc26551155reuse_across_ctor_disabled26198906
3Init/Prelude.leanreuse_across_ctor_disablednum_dealloc1275419reuse_across_ctor_disabled1273534
4Init/Prelude.leanreuse_across_ctor_disablednum_small_dealloc26169298reuse_across_ctor_disabled25817637
.....................
30831./././hello_world.leanreuse_across_ctor_disablednum_pages2178reuse_across_ctor_disabled2179
30832./././hello_world.leanreuse_across_ctor_disablednum_exports0reuse_across_ctor_disabled0
30833./././hello_world.leanreuse_across_ctor_disablednum_recycled_pages357reuse_across_ctor_disabled358
30834./././hello_world.leanreuse_across_ctor_disabledc_file_size2345reuse_across_ctor_disabled2345
30835./././hello_world.leanreuse_across_ctor_disabledtime_elapsed_ms179reuse_across_ctor_disabled167
\n", + "

30836 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " File Condition_reuse \\\n", + "0 Init/Prelude.lean reuse_across_ctor_disabled \n", + "1 Init/Prelude.lean reuse_across_ctor_disabled \n", + "2 Init/Prelude.lean reuse_across_ctor_disabled \n", + "3 Init/Prelude.lean reuse_across_ctor_disabled \n", + "4 Init/Prelude.lean reuse_across_ctor_disabled \n", + "... ... ... \n", + "30831 ./././hello_world.lean reuse_across_ctor_disabled \n", + "30832 ./././hello_world.lean reuse_across_ctor_disabled \n", + "30833 ./././hello_world.lean reuse_across_ctor_disabled \n", + "30834 ./././hello_world.lean reuse_across_ctor_disabled \n", + "30835 ./././hello_world.lean reuse_across_ctor_disabled \n", + "\n", + " Metric Value_reuse Condition_no_reuse \\\n", + "0 rss 143773696 reuse_across_ctor_disabled \n", + "1 num_alloc 1323874 reuse_across_ctor_disabled \n", + "2 num_small_alloc 26551155 reuse_across_ctor_disabled \n", + "3 num_dealloc 1275419 reuse_across_ctor_disabled \n", + "4 num_small_dealloc 26169298 reuse_across_ctor_disabled \n", + "... ... ... ... \n", + "30831 num_pages 2178 reuse_across_ctor_disabled \n", + "30832 num_exports 0 reuse_across_ctor_disabled \n", + "30833 num_recycled_pages 357 reuse_across_ctor_disabled \n", + "30834 c_file_size 2345 reuse_across_ctor_disabled \n", + "30835 time_elapsed_ms 179 reuse_across_ctor_disabled \n", + "\n", + " Value_no_reuse \n", + "0 151330816 \n", + "1 1321786 \n", + "2 26198906 \n", + "3 1273534 \n", + "4 25817637 \n", + "... ... \n", + "30831 2179 \n", + "30832 0 \n", + "30833 358 \n", + "30834 2345 \n", + "30835 167 \n", + "\n", + "[30836 rows x 6 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_merged = pd.merge(reuse, noreuse, on=[\"File\", \"Metric\"], suffixes=('_reuse', '_no_reuse'))\n", + "display(df_merged)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "6c6fc924-32ba-4821-842b-a48c0489c96e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

time_elapsed_ms

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0./././Main.lean2071824161788.651316
1./././Main.lean2151824160988.212719
2./././Main.lean2281824159687.500000
3./././Main.lean2411824158386.787281
4./././Main.lean2491824157586.348684
..................
2959./././Main.lean1587265-1322-498.867925
2960json.lean2469331-2138-645.921450
2961./././Main.lean1587208-1379-662.980769
2962./././Main.lean1587207-1380-666.666667
2963./././Main.lean1587198-1389-701.515152
\n", + "

2964 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse absolute_diff %Decrease\n", + "0 ./././Main.lean 207 1824 1617 88.651316\n", + "1 ./././Main.lean 215 1824 1609 88.212719\n", + "2 ./././Main.lean 228 1824 1596 87.500000\n", + "3 ./././Main.lean 241 1824 1583 86.787281\n", + "4 ./././Main.lean 249 1824 1575 86.348684\n", + "... ... ... ... ... ...\n", + "2959 ./././Main.lean 1587 265 -1322 -498.867925\n", + "2960 json.lean 2469 331 -2138 -645.921450\n", + "2961 ./././Main.lean 1587 208 -1379 -662.980769\n", + "2962 ./././Main.lean 1587 207 -1380 -666.666667\n", + "2963 ./././Main.lean 1587 198 -1389 -701.515152\n", + "\n", + "[2964 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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mjhxopo2bapFixa57Cc9PV3R0dEKDAzUhAkT1K5dO0nSCy+8oAEDBuj+++/XlClT1L17d82bN0/R0dG6dOmSs/+cOXNUvHhx9evXT1OmTFH9+vU1dOhQl9u10tLSFB0drY0bN+of//iHpk+frp49e+rXX391qTmnx5YXzzzzjKRr3863Z88ePfLII0pNTdWIESM0ceJEPfbYY85fnKtXr64RI0ZIknr27KmPP/5YH3/8sct7/Oeff6pFixaqU6eOJk+erKZNm16zrrfffluLFy/W66+/rj59+mjlypWKiorShQsXcnV8Oantr4wxeuyxx/Tuu++qefPmmjRpkqpVq6YBAwaoX79+Wdr/+OOPevnll9WxY0eNGzdOFy9eVLt27fTnn39etabGjRvr448/liQ99NBDzpqky5Nm3HfffVq+fLlefvllvf3227p48aIee+yxbH8RHzlypBYvXqzXXntNo0ePzvZKYdmyZTVz5kxJUps2bZz7a9u27TXH7ocfflD//v3VtWtXDRs2THFxcXrkkUc0ffp0TZ06VS+//LIGDBigmJgYPfvssy5916xZo8aNGyslJUVvvfWWRo8erVOnTunBBx/Upk2brrnfK+X0M3ellJQU/ec//1GTJk00duxYDRs2TH/88Yeio6OzfX7vo48+0tSpU9WrVy8NGjRIu3fv1oMPPqjExERnm3bt2unrr79W9+7dNWPGDPXp00dnzpxRfHy8s83HH3+sVq1aqXjx4ho7dqyGDBmivXv3qmHDhi6hbMWKFWrXrp1sNpvGjBmj1q1bq3v37tqyZUuuxifTyZMn9cgjjygiIkLjxo2Tp6enOnbsqM8//1wdO3ZUy5Yt9c477+jcuXNq3769y/OaL774ombOnKl27dppxowZeu211+Tt7a24uLg81QIgGwYA8snq1atNyZIljSQjyfTt29cYY8z69euNt7e3OXz48DX7P/DAA6ZmzZpXXf/1118bSWbKlCnGGGMOHz5s3NzczNtvv+3SbteuXcbd3d25PD093YSHh5uwsDBz8uRJl7YOh8P53127djWSzBtvvOHS5ocffjCSzLx581yWL1u2LMvy8+fPZ6n7hRdeMD4+PubixYvGGGO2bdtmJJn58+df9VhzemxXM3v2bCPJbN68+apt/P39Td26dZ2v33rrLfPXHwvvvvuukWT++OOPq25j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AAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMACBRq2vv/+ez366KMKDQ2VzWbTwoULXdYbYzR06FCFhITI29tbUVFROnDggEub5ORkderUSX5+fgoICFCPHj109uxZlzY7d+5Uo0aN5OXlpQoVKmjcuHFWHxoAAACAW1yBhq1z587prrvu0vTp07NdP27cOE2dOlWzZs1SbGysfH19FR0drYsXLzrbdOrUSXv27NHKlSu1aNEiff/99+rZs6dzfUpKih5++GGFhYVp69atGj9+vIYNG6b333/f8uMDAAAAcOtyL8idt2jRQi1atMh2nTFGkydP1uDBg/X4449Lkj766CMFBQVp4cKF6tixo+Li4rRs2TJt3rxZDRo0kCRNmzZNLVu21IQJExQaGqp58+YpLS1N//3vf+Xh4aGaNWtq+/btmjRpkksoAwAAAID8VKBh61oOHTqkhIQERUVFOZf5+/srIiJCMTEx6tixo2JiYhQQEOAMWpIUFRUlu92u2NhYtWnTRjExMWrcuLE8PDycbaKjozV27FidPHlSJUuWzLLv1NRUpaamOl+npKRIktLT05Wenm7F4QIAAOAm4nA45OHhIbuMbI6MHPezy8jDw0MOh4PfOwup3LwvhTZsJSQkSJKCgoJclgcFBTnXJSQkKDAw0GW9u7u7SpUq5dImPDw8yzYy12UXtsaMGaPhw4dnWb5lyxb5+vrm8YgAAABwqzhz5oyGDBmicl4X5fnH3hz3C/S6qCFDhigpKUmxsbEWVoi8OnfuXI7bFtqwVZAGDRqkfv36OV+npKSoQoUKatCggfz8/AqwMgAAABQF27dv18iRI/Xi7MUKDauR437H9u/SrJEjtX79etWpU8e6ApFnmXe95UShDVvBwcGSpMTERIWEhDiXJyYmOk+84OBgnThxwqVfenq6kpOTnf2Dg4OVmJjo0ibzdWabK3l6esrT0zPLcnd3d7m7F9ohAwAAQCFht9uVlpYmh2wydrcc93PIprS0NNntdn7vLKRy874U2u/ZCg8PV3BwsFavXu1c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RkOGDFE5r4vy/GNvjvuVDCulGjewX6DXRQ0ZMkRJSUmKjY3NcT/k3rlz53LctlCHrd9//12vvPKKVq5cKS8vrxu230GDBqlfv37O1ykpKapQoYIaNGggPz+/G1YHAAAACtb27ds1cuRIvTh7sULDauS4346fvtZXN7Dfsf27NGvkSK1fv1516tTJcT/kXuZdbzlRqMPW1q1bdeLECdWrV8+5LCMjQ99//73ee+89LV++XGlpaTp16pTL1a3ExEQFBwdLkoKDg7Vp0yaX7WbOVpjZ5kqenp7y9PTMstzd3V3u7oV6yAAAAJCP7Ha70tLS5JBNxu6W434ZRje0n0M2paWlyW638/uqxXIzvoV6goxmzZpp165d2r59u/NfgwYN1KlTJ+d/FytWTKtXr3b22b9/v+Lj4xUZGSlJioyM1K5du3TixAlnm5UrV8rPz081auT8rwUAAAAAkBuFOvaWKFFCtWrVclnm6+ur0qVLO5f36NFD/fr1U6lSpeTn56d//OMfioyM1L333itJevjhh1WjRg0988wzGjdunBISEjR48GD16tUr26tXAAAAAJAfCnXYyol3331Xdrtd7dq1U2pqqqKjozVjxgznejc3Ny1atEgvvfSSIiMj5evrq65du2rEiBEFWDUAAACAm12RC1vr1q1zee3l5aXp06dr+vTpV+0TFhamJUuWWFwZAAAAAPyfQv3MFgAAAAAUVYQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALuBd0AQAAAADyR1xcXK77lClTRrfddpsF1YCwBQAAABRxZ5ISZbPb1blz51z39fbx0b64OAKXBQhbAAAAQBF34UyKjMOhDqNmKjC8So77nTh0QF8MfklJSUmELQsQtgAAAICbRGB4FZWrfldBl4H/jwkyAAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChTpsjRkzRnfffbdKlCihwMBAtW7dWvv373dpc/HiRfXq1UulS5dW8eLF1a5dOyUmJrq0iY+PV6tWreTj46PAwEANGDBA6enpN/JQAAAAANxiCnXY+u6779SrVy9t3LhRK1eu1KVLl/Twww/r3Llzzjavvvqq/ve//2n+/Pn67rvvdOzYMbVt29a5PiMjQ61atVJaWpo2bNigDz/8UHPmzNHQoUML4pAAAAAA3CLcC7qAa1m2bJnL6zlz5igwMFBbt25V48aNdfr0aX3wwQf65JNP9OCDD0qSZs+ererVq2vjxo269957tWLFCu3du1erVq1SUFCQ6tSpo5EjR+r111/XsGHD5OHhURCHBgAAAOAmV6jD1pVOnz4tSSpVqpQkaevWrbp06ZKioqKcbe644w7ddtttiomJ0b333quYmBjVrl1bQUFBzjbR0dF66aWXtGfPHtWtWzfLflJTU5Wamup8nZKSIklKT0/n9kMAAIAi6MiRI0pKSsp1v/3798vDw0N2GdkcGTnu52ZTkehnl5GHh4ccDge/5+ZQbsapyIQth8Ohvn376v7771etWrUkSQkJCfLw8FBAQIBL26CgICUkJDjb/DVoZa7PXJedMWPGaPjw4VmWb9myRb6+vtd7KAAAALiBLl68qNjYWDkcjjz1HzJkiMp5XZTnH3tz3KdkWCnVKAL9Ar0uasiQIUpKSlJsbGyO+93K/vpI098pMmGrV69e2r17t3788UfL9zVo0CD169fP+TolJUUVKlRQgwYN5OfnZ/n+AQAAkH+2b9+u4cOHq91bU1S2YuVc9T0Qs06r3x+vF2cvVmhYjRz32/HT1/pq5MhC3+/Y/l2aNXKk1q9frzp16uS4360s8663nCgSYat3795atGiRvv/+e5UvX965PDg4WGlpaTp16pTL1a3ExEQFBwc722zatMlle5mzFWa2uZKnp6c8PT2zLHd3d5e7e5EYMgAAAPx/drtdaWlpKl2xikKq35WrvgmHflFaWpocssnY3XLcL8OoSPRzyKa0tDTZ7XZ+z82h3IxToZ6N0Bij3r176+uvv9aaNWsUHh7usr5+/foqVqyYVq9e7Vy2f/9+xcfHKzIyUpIUGRmpXbt26cSJE842K1eulJ+fn2rUyHnqBwAAAIDcKNTxtVevXvrkk0/0zTffqESJEs5nrPz9/eXt7S1/f3/16NFD/fr1U6lSpeTn56d//OMfioyM1L333itJevjhh1WjRg0988wzGjdunBISEjR48GD16tUr26tXAAAAAJAfCnXYmjlzpiSpSZMmLstnz56tbt26SZLeffdd2e12tWvXTqmpqYqOjtaMGTOcbd3c3LRo0SK99NJLioyMlK+vr7p27aoRI0bcqMMAAAAAcAsq1GHLGPO3bby8vDR9+nRNnz79qm3CwsK0ZMmS/CwNAAAAAK6pUD+zBQAAAABFFWELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsIB7QRcAAAAAoGDFxcXluk+ZMmV02223WVDNzYOwBQAAANyiziQlyma3q3Pnzrnu6+3jo31xcQSuayBsAQAAALeoC2dSZBwOdRg1U4HhVXLc78ShA/pi8EtKSkoibF0DYQsAAAC4xQWGV1G56ncVdBk3HcIWAAAAioz4+HglJSXlqk9enkcC8gNhCwAAAEVCfHy87qheXRfOny/oUoAcIWwBAACgSEhKStKF8+dz/XzR/vWrtXLGGAsrA7JH2AIAAECRktvni04cOmBhNcDV8aXGAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAqd8BAABww8XHxyspKSlXfeLi4iyqBrAGYQsAAAA3VHx8vO6oXl0Xzp8v6FIASxG2AAAAcEMlJSXpwvnz6jBqpgLDq+S43/71q7VyxhgLKwPyF2ELAAAABSIwvIrKVb8rx+1PHDpgYTVA/mOCDAAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALOBe0AUAAACg6IqPj1dSUlKu+sTFxVlUDVC4ELYAAACQJ/Hx8bqjenVdOH++oEsBCiXCFgAAAPIkKSlJF86fV4dRMxUYXiXH/favX62VM8ZYWBlQOBC2AAAAcF0Cw6uoXPW7ctz+xKEDFlYDFB5MkAEAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgAkyAAAAwPdlIU/ycg6UKVNGt912mwXVFD6ELQAAgFsc35eF3DqTlCib3a7OnTvnuq+3j4/2xcXdEoGLsAUAAHCL4/uykFsXzqTIOBy5PmdOHDqgLwa/pB9++EHVq1fP1T6L4hUxwhYAAAAk8X1ZyL3cnjO32hWxWypsTZ8+XePHj1dCQoLuuusuTZs2Tffcc09BlwUAAJBvePYKhdn1XhFLSkoibBVGn3/+ufr166dZs2YpIiJCkydPVnR0tPbv36/AwMCCLg8AABRyeQkxUt5vfcrL/o4fP672Tzyhixcu5Hp/wI2U2ytiRdUtE7YmTZqk559/Xt27d5ckzZo1S4sXL9Z///tfvfHGGwVcXe4Vhf/hS1Jqaqo8PT1z3a8o3pMLVzf6HM0rzu1bV1F574vKZymv8np8UtEJMZ5eXvrqyy8VEhJyQ/YniWevgELilghbaWlp2rp1qwYNGuRcZrfbFRUVpZiYmCztU1NTlZqa6nx9+vRpSVJycrLS09OtL/hvHD16VA0bNcrTjEFe3t76z7//naureSdOnNBzzz+fp//h2+x2GYcj1/3yUqd0+X115GF/N3u/G73P6zlnbuR7z7md//0KYp8383tfVD5Lee13Pccn3fgxlaSm3f4h/6DQHLdPPLRfW7/5VG3atLkh+zsSt0M7ln4lR+oFXTp/Nsf9TPolFStWTAn7duaqX3L8wZu6X1Gq9Wbv92f8rypWrJhSUlKUnJyc435WSElJkSQZY/62rc3kpFURd+zYMZUrV04bNmxQZGSkc/nAgQP13XffKTY21qX9sGHDNHz48BtdJgAAAIAi4vfff1f58uWv2eaWuLKVW4MGDVK/fv2crx0Oh5KTk1W6dGnZbLYCrOz/pKSkqEKFCvr999/l5+dX0OXclBhj6zHG1mOMbwzG2XqMsfUYY+sxxta7EWNsjNGZM2cUGvr3V51vibBVpkwZubm5KTEx0WV5YmKigoODs7T39PTMcj9+QECAlSXmmZ+fHx9WizHG1mOMrccY3xiMs/UYY+sxxtZjjK1n9Rj7+/vnqJ3dsgoKEQ8PD9WvX1+rV692LnM4HFq9erXLbYUAAAAAkF9uiStbktSvXz917dpVDRo00D333KPJkyfr3LlzztkJAQAAACA/3TJh68knn9Qff/yhoUOHKiEhQXXq1NGyZcsUFBRU0KXliaenp9566608TT+MnGGMrccYW48xvjEYZ+sxxtZjjK3HGFuvsI3xLTEbIQAAAADcaLfEM1sAAAAAcKMRtgAAAADAAoQtAAAAALAAYQsAAAAALEDYKuTWrVsnm82W7b/Nmzc72+3cuVONGjWSl5eXKlSooHHjxmXZ1vz583XHHXfIy8tLtWvX1pIlS27koRR6ixcvVkREhLy9vVWyZEm1bt3aZX18fLxatWolHx8fBQYGasCAAUpPT3dps27dOtWrV0+enp6qXLmy5syZc+MOoJCrWLFilnP4nXfecWnDeZw/UlNTVadOHdlsNm3fvt1lHWN8fR577DHddttt8vLyUkhIiJ555hkdO3bMpQ1jnHeHDx9Wjx49FB4eLm9vb1WqVElvvfWW0tLSXNoxxtfn7bff1n333ScfHx8FBARk24afedaYPn26KlasKC8vL0VERGjTpk0FXVKR8f333+vRRx9VaGiobDabFi5c6LLeGKOhQ4cqJCRE3t7eioqK0oEDB1zaJCcnq1OnTvLz81NAQIB69Oihs2fPWlu4QaGWmppqjh8/7vLvueeeM+Hh4cbhcBhjjDl9+rQJCgoynTp1Mrt37zaffvqp8fb2Nv/617+c21m/fr1xc3Mz48aNM3v37jWDBw82xYoVM7t27SqoQytUvvzyS1OyZEkzc+ZMs3//frNnzx7z+eefO9enp6ebWrVqmaioKLNt2zazZMkSU6ZMGTNo0CBnm19//dX4+PiYfv36mb1795pp06YZNzc3s2zZsoI4pEInLCzMjBgxwuVcPnv2rHM953H+6dOnj2nRooWRZLZt2+Zczhhfv0mTJpmYmBhz+PBhs379ehMZGWkiIyOd6xnj67N06VLTrVs3s3z5cnPw4EHzzTffmMDAQNO/f39nG8b4+g0dOtRMmjTJ9OvXz/j7+2dZz888a3z22WfGw8PD/Pe//zV79uwxzz//vAkICDCJiYkFXVqRsGTJEvPmm2+aBQsWGEnm66+/dln/zjvvGH9/f7Nw4UKzY8cO89hjj5nw8HBz4cIFZ5vmzZubu+66y2zcuNH88MMPpnLlyuapp56ytG7CVhGTlpZmypYta0aMGOFcNmPGDFOyZEmTmprqXPb666+batWqOV936NDBtGrVymVbERER5oUXXrC+6ELu0qVLply5cuY///nPVdssWbLE2O12k5CQ4Fw2c+ZM4+fn5xz3gQMHmpo1a7r0e/LJJ010dLQ1hRcxYWFh5t13373qes7j/LFkyRJzxx13mD179mQJW4xx/vvmm2+MzWYzaWlpxhjG2Arjxo0z4eHhzteMcf6ZPXt2tmGLn3nWuOeee0yvXr2crzMyMkxoaKgZM2ZMAVZVNF0ZthwOhwkODjbjx493Ljt16pTx9PQ0n376qTHGmL179xpJZvPmzc42S5cuNTabzRw9etSyWrmNsIj59ttv9eeff6p79+7OZTExMWrcuLE8PDycy6Kjo7V//36dPHnS2SYqKsplW9HR0YqJibkxhRdiP/30k44ePSq73a66desqJCRELVq00O7du51tYmJiVLt2bZcvwY6OjlZKSor27NnjbMMYX9s777yj0qVLq27duho/frzLLSmcx9cvMTFRzz//vD7++GP5+PhkWc8Y56/k5GTNmzdP9913n4oVKyaJMbbC6dOnVapUKedrxth6/MzLf2lpadq6davLmNntdkVFRTFm+eDQoUNKSEhwGV9/f39FREQ4xzcmJkYBAQFq0KCBs01UVJTsdrtiY2Mtq42wVcR88MEHio6OVvny5Z3LEhISXP6HKMn5OiEh4ZptMtffyn799VdJ0rBhwzR48GAtWrRIJUuWVJMmTZScnCzp+sY4JSVFFy5csPowCr0+ffros88+09q1a/XCCy9o9OjRGjhwoHM95/H1McaoW7duevHFF11+kPwVY5w/Xn/9dfn6+qp06dKKj4/XN99841zHGOevX375RdOmTdMLL7zgXMYYW4+fefkvKSlJGRkZnJcWyRzDa41vQkKCAgMDXda7u7urVKlSlr4HhK0C8sYbb1x14ovMf/v27XPpc+TIES1fvlw9evQooKqLlpyOscPhkCS9+eabateunerXr6/Zs2fLZrNp/vz5BXwUhVtuzuN+/fqpSZMmuvPOO/Xiiy9q4sSJmjZtmlJTUwv4KAq3nI7xtGnTdObMGQ0aNKigSy5ycvv/4wEDBmjbtm1asWKF3Nzc1KVLF12+qwVXk5efeUePHlXz5s31xBNP6Pnnny+gyouOvIwxAOu5F3QBt6r+/furW7du12xz++23u7yePXu2Spcurccee8xleXBwsBITE12WZb4ODg6+ZpvM9TejnI7x8ePHJUk1atRwLvf09NTtt9+u+Ph4SZfH78oZg3I6xn5+fvL29r6uYyms8nIeZ4qIiFB6eroOHz6satWqcR5fRU7HeM2aNYqJiZGnp6fLugYNGqhTp0768MMPGeOryO15XKZMGZUpU0ZVq1ZV9erVVaFCBW3cuFGRkZGM8VXkdoyPHTumpk2b6r777tP777/v0o4xzt71/P/4SvzMy39lypSRm5vbLXde3iiZY5iYmKiQkBDn8sTERNWpU8fZ5sSJEy790tPTlZycbOl7QNgqIGXLllXZsmVz3N4Yo9mzZ6tLly7OZwMyRUZG6s0339SlS5ec61auXKlq1aqpZMmSzjarV69W3759nf1WrlypyMjI6z+YQiqnY1y/fn15enpq//79atiwoSTp0qVLOnz4sMLCwiRdHr+3335bJ06ccF6CXrlypfz8/JwhLTIyMsvUwozx1W3fvl12u905npzH2cvpGE+dOlWjRo1yvj527Jiio6P1+eefKyIiQhJjfDXXcx5nXhnPvELLGGcvN2N89OhRNW3a1HmXgd3uehMOY5y96zmPr8TPvPzn4eGh+vXra/Xq1c6vlnE4HFq9erV69+5dsMXdBMLDwxUcHKzVq1c7w1VKSopiY2P10ksvSbp8zp46dUpbt25V/fr1JUlr1qyRw+Fw/py0hGVTbyBfrVq1ykgycXFxWdadOnXKBAUFmWeeecbs3r3bfPbZZ8bHxyfLNLju7u5mwoQJJi4uzrz11ltMg/sXr7zyiilXrpxZvny52bdvn+nRo4cJDAw0ycnJxpj/mwb34YcfNtu3bzfLli0zZcuWzXYa3AEDBpi4uDgzffp0psH9/zZs2GDeffdds337dnPw4EEzd+5cU7ZsWdOlSxdnG87j/HXo0KEssxEyxtdn48aNZtq0aWbbtm3m8OHDZvXq1ea+++4zlSpVMhcvXjTGMMbX68iRI6Zy5cqmWbNm5siRIy5fFZGJMb5+v/32m9m2bZsZPny4KV68uNm2bZvZtm2bOXPmjDGGn3lW+eyzz4ynp6eZM2eO2bt3r+nZs6cJCAhwmfURV3fmzBnnuSrJTJo0yWzbts389ttvxpjLU78HBASYb775xuzcudM8/vjj2U79XrduXRMbG2t+/PFHU6VKFaZ+x2VPPfWUue+++666fseOHaZhw4bG09PTlCtXzrzzzjtZ2nzxxRematWqxsPDw9SsWdMsXrzYypKLlLS0NNO/f38TGBhoSpQoYaKioszu3btd2hw+fNi0aNHCeHt7mzJlypj+/fubS5cuubRZu3atqVOnjvHw8DC33367mT179g08isJr69atJiIiwvj7+xsvLy9TvXp1M3r0aOcvqJk4j/NPdmHLGMb4euzcudM0bdrUlCpVynh6epqKFSuaF1980Rw5csSlHWOcd7NnzzaSsv33V4zx9enatWu2Y7x27VpnG37mWWPatGnmtttuMx4eHuaee+4xGzduLOiSioy1a9dme9527drVGHN5+vchQ4aYoKAg4+npaZo1a2b279/vso0///zTPPXUU6Z48eLGz8/PdO/e3flHBqvYjOGpXgAAAADIb8xGCAAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEACq158+apQoUKKlmypPr16+ey7vDhw6patapSUlKcy4YNGyabzSabzSZ3d3eVKVNGjRs31uTJk5WamnqjywcA3OIIWwCAQikpKUnPPfecJkyYoBUrVmju3LlatGiRc/3LL7+sd955R35+fi79atasqePHjys+Pl5r167VE088oTFjxui+++7TmTNnLKs3LS3Nsm0DAIomwhYAoFD69ddf5e/vryeffFJ33323mjZtqri4OEnSp59+qmLFiqlt27ZZ+rm7uys4OFihoaGqXbu2/vGPf+i7777T7t27NXbsWGe71NRUvfbaaypXrpx8fX0VERGhdevWuWxr/fr1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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

rss

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0conv1.lean12930662450694553637763891274.492995
1match1.lean13521715251624345638102630473.807484
2./././Main.lean13409894451173376037763481673.795173
3./././Main.lean13427097651173376037746278473.761556
4./././Main.lean13466828851173376037706547273.683916
..................
2959./././Main.lean506310656139735040-366575616-262.336216
2960./././Main.lean506310656139472896-366837760-263.017239
2961./././Main.lean506310656139374592-366936064-263.273283
2962./././Main.lean506310656138948608-367362048-264.386994
2963conv1.lean498794496134676480-364118016-270.364964
\n", + "

2964 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse absolute_diff %Decrease\n", + "0 conv1.lean 129306624 506945536 377638912 74.492995\n", + "1 match1.lean 135217152 516243456 381026304 73.807484\n", + "2 ./././Main.lean 134098944 511733760 377634816 73.795173\n", + "3 ./././Main.lean 134270976 511733760 377462784 73.761556\n", + "4 ./././Main.lean 134668288 511733760 377065472 73.683916\n", + "... ... ... ... ... ...\n", + "2959 ./././Main.lean 506310656 139735040 -366575616 -262.336216\n", + "2960 ./././Main.lean 506310656 139472896 -366837760 -263.017239\n", + "2961 ./././Main.lean 506310656 139374592 -366936064 -263.273283\n", + "2962 ./././Main.lean 506310656 138948608 -367362048 -264.386994\n", + "2963 conv1.lean 498794496 134676480 -364118016 -270.364964\n", + "\n", + "[2964 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAIjCAYAAAD1OgEdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABReklEQVR4nO3deVgV5f//8dc54GEVwYXNBcl9NzWJXHJLVLLctTLNj2UWZqapWWkqluW+pFl9Sipt0bJNzV0rFS1NcglNTeNjCmSmiAsIZ35/9OX8OoEKdEZEn4/r4rqamfueec+5D3hezcx9LIZhGAIAAAAAuJS1qAsAAAAAgBsRYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwBwUxo/frwsFss1OVarVq3UqlUrx/KmTZtksVj08ccfX5PjP/TQQ6pcufI1OdY/paSkqEePHipTpowsFotmzZpVJHUAQFEgbAFAIf3222+Kjo6Wn5+fateurS+//DJXm2XLlikwMFBnzpzJta1Vq1ayWCyyWCyyWq3y8/NTjRo19OCDD2rt2rXX4hRuGHFxcY7X0mKxyNPTU6GhoYqKitKcOXN09uxZlxzn+PHjGj9+vBISElyyP1e6Xmt76qmntHr1ao0ZM0bvvfeeOnToUNQlAcA1417UBQBAcdW/f3/99ttveuWVV7Rlyxb17NlT+/fvd1xBuHjxop5++mlNmjRJpUqVynMfFSpU0OTJkyVJ586d06FDh7Rs2TItWrRIvXr10qJFi1SiRIlrdUrF3sSJExUeHq5Lly4pOTlZmzZt0rBhwzRjxgx98cUXql+/vqPt888/r2eeeaZA+z9+/LgmTJigypUrq2HDhvnut2bNmgIdpzCuVNubb74pu91ueg152bBhg+699149/fTTRXJ8AChKhC0AKIQLFy5ow4YN2rRpk1q2bKnBgwdr69atWr16tR599FFJ0rRp01SqVCk9/PDDl91PqVKl1LdvX6d1L7/8soYOHar58+ercuXKeuWVV0w9l787d+6cfHx8rtnxXK1jx45q0qSJY3nMmDHasGGD7r77bt1zzz1KTEyUl5eXJMnd3V3u7ub+M3j+/Hl5e3vLZrOZepyrKcrAnpqaKn9/f5ft7+LFi7LZbLJa83dzTlZWlux2e5GPAYCbE7cRAkAhXLx4UYZhKCAgQJJksVjk7++v8+fPS/rrFsOXX35Zs2fPzveHwhxubm6aM2eOateurVdffTXXLYiLFi1S48aN5eXlpdKlS6tPnz763//+l2s/27dvV6dOnRQQECAfHx/Vr19fs2fPdmx/6KGH5Ovrq8OHD6tTp04qWbKkHnjgAUmS3W7XrFmzVKdOHXl6eiooKEiPPvqo/vzzT6djfP7554qOjlZoaKg8PDxUpUoVxcbGKjs726ndwYMH1b17dwUHB8vT01MVKlRQnz59Cn1uBdGmTRuNHTtWv/76qxYtWuRYn9czW2vXrlXz5s3l7+8vX19f1ahRQ88++6ykv56zuu222yRJAwYMcNyyGBcXJ+mv20Lr1q2rnTt3qmXLlvL29nb0/eczWzmys7P17LPPKjg4WD4+PrrnnntynW/lypX10EMP5er7931erba8ntk6d+6cRowYoYoVK8rDw0M1atTQtGnTZBiGUzuLxaIhQ4bos88+U926deXh4aE6depo1apVeb/g/yfn1k7DMDRv3jxHTTl++eUX9ezZU6VLl5a3t7duv/12rVixwmkfOc+2ffjhh3r++edVvnx5eXt7Ky0tLc9jHj16VBaLRdOmTdOsWbNUpUoVeXh46KeffpIkzZ07V3Xq1JG3t7cCAgLUpEkTvf/++47+Z8+e1bBhw1S5cmV5eHgoMDBQd911l3744YcrnisAXA5XtgCgEAICAlSlShW99NJLeumll7R161YlJCRo7ty5kqRRo0apY8eOatmyZaH27+bmpvvuu09jx47V5s2bFR0dLUl68cUXNXbsWPXq1UsPP/ywfv/9d82dO1ctW7bUrl27HFcQ1q5dq7vvvlshISF68sknFRwcrMTERC1fvlxPPvmk4zhZWVmKiopS8+bNNW3aNHl7e0uSHn30UcXFxWnAgAEaOnSojhw5oldffVW7du3Sli1bHFdK4uLi5Ovrq+HDh8vX11cbNmzQuHHjlJaWpqlTp0qSMjMzFRUVpYyMDD3xxBMKDg7Wb7/9puXLl+v06dOOWyzze26F8eCDD+rZZ5/VmjVr9Mgjj+TZZt++fbr77rtVv359TZw4UR4eHjp06JC2bNkiSapVq5YmTpyocePGadCgQWrRooUk6Y477nDs448//lDHjh3Vp08f9e3bV0FBQVes68UXX5TFYtHo0aOVmpqqWbNmqV27dkpISHBcgcuP/NT2d4Zh6J577tHGjRs1cOBANWzYUKtXr9bIkSP122+/aebMmU7tN2/erGXLlunxxx9XyZIlNWfOHHXv3l1JSUkqU6ZMnsdo2bKl3nvvPT344IO666671K9fP8e2lJQU3XHHHTp//ryGDh2qMmXK6J133tE999yjjz/+WF27dnXaV2xsrGw2m55++mllZGRc9SrVwoULdfHiRQ0aNEgeHh4qXbq03nzzTQ0dOlQ9evTQk08+qYsXL2r37t3avn277r//fknS4MGD9fHHH2vIkCGqXbu2/vjjD23evFmJiYlq1KjRlQcBAPJiAAAKZf369UZAQIAhyZBkDBs2zDAMw9iyZYvh5eVlHD169Ir977zzTqNOnTqX3f7pp58akozZs2cbhmEYR48eNdzc3IwXX3zRqd2ePXsMd3d3x/qsrCwjPDzcCAsLM/7880+ntna73fHf/fv3NyQZzzzzjFObb7/91pBkLF682Gn9qlWrcq0/f/58rrofffRRw9vb27h48aJhGIaxa9cuQ5KxdOnSy55rfs/tchYuXGhIMr7//vvLtilVqpRx6623OpZfeOEF4+//DM6cOdOQZPz++++X3cf3339vSDIWLlyYa9udd95pSDIWLFiQ57Y777zTsbxx40ZDklG+fHkjLS3NsX7JkiVOY24YhhEWFmb079//qvu8Um39+/c3wsLCHMufffaZIcmYNGmSU7sePXoYFovFOHTokGOdJMNmszmt+/HHHw1Jxty5c3Md658kGTExMU7rhg0bZkgyvv32W8e6s2fPGuHh4UblypWN7OxswzD+/+t0yy235Ple+6cjR44Ykgw/Pz8jNTXVadu99957xd83w/jrPfLPWgHg3+A2QgAopDZt2igpKUnbtm1TUlKSZs6cKbvdrqFDh2rEiBEKCwvTa6+9ppo1a6pGjRpasGBBgfbv6+srSY6Z9JYtWya73a5evXrp5MmTjp/g4GBVq1ZNGzdulCTt2rVLR44c0bBhw3JdDcprqvPHHnvMaXnp0qUqVaqU7rrrLqfjNG7cWL6+vo7jSHK6+nL27FmdPHlSLVq00Pnz57V//35Jcly5Wr16teM2y3/K77n9G76+vleclTDntfr8888LPZmEh4eHBgwYkO/2/fr1U8mSJR3LPXr0UEhIiFauXFmo4+fXypUr5ebmpqFDhzqtHzFihAzD0FdffeW0vl27dqpSpYpjuX79+vLz89Mvv/xS6OM3bdpUzZs3d6zz9fXVoEGDdPToUcdtfzn69+9foCt93bt3V7ly5ZzW+fv769ixY/r+++8v28/f31/bt2/X8ePH830sALgSwhYA/Au+vr6KiIhQxYoVJf11+1JycrKeeeYZrVu3TiNHjtTLL7+sKVOmaMSIEQUKDenp6ZLk+DB+8OBBGYahatWqqVy5ck4/iYmJSk1NlSQdPnxYklS3bt2rHsPd3V0VKlRwWnfw4EGdOXNGgYGBuY6Tnp7uOI701613Xbt2ValSpeTn56dy5co5JvzIeR4rPDxcw4cP13//+1+VLVtWUVFRmjdvntPzWvk9t38jPT3dKdj8U+/evdWsWTM9/PDDCgoKUp8+fbRkyZICBa/y5csXaCKGatWqOS1bLBZVrVpVR48ezfc+CuPXX39VaGhortejVq1aju1/V6lSpVz7CAgIyPUMX0GOX6NGjVzrL3f88PDwAu0/r/ajR4+Wr6+vmjZtqmrVqikmJsZxi2iOKVOmaO/evapYsaKaNm2q8ePHFzpQAoDEM1sA4DJpaWl67rnnNG3aNPn4+OiDDz5Qjx491KVLF0l/XbVYvHixWrduna/97d27V5JUtWpVSX9NWmGxWPTVV1/Jzc0tV/ucK2EF4eHhkWsCD7vdrsDAQC1evDjPPjlXDE6fPq0777xTfn5+mjhxoqpUqSJPT0/98MMPGj16tFNImT59uh566CF9/vnnWrNmjYYOHarJkydr27ZtqlChginn9nfHjh3TmTNnHK9lXry8vPTNN99o48aNWrFihVatWqWPPvpIbdq00Zo1a/KsK699uNrlvng5Ozs7XzW5wuWOY/xjMg2zFPR1zat9rVq1dODAAS1fvlyrVq3SJ598ovnz52vcuHGaMGGCJKlXr15q0aKFPv30U61Zs0ZTp07VK6+8omXLlqljx44uORcANxfCFgC4SM53POXM6Hf8+HHdeuutju2hoaH5/sLZ7Oxsvf/++/L29nbcalWlShUZhqHw8HBVr179sn1zbvfau3ev2rVrV+DzqFKlitatW6dmzZpd8UPupk2b9Mcff2jZsmVOE4EcOXIkz/b16tVTvXr19Pzzz2vr1q1q1qyZFixYoEmTJuX73ArrvffekyRFRUVdsZ3ValXbtm3Vtm1bzZgxQy+99JKee+45bdy4Ue3atbts8CmsgwcPOi0bhqFDhw45fR9YQECATp8+navvr7/+qltuucWxXJDawsLCtG7dOp09e9bp6lbOrZ9hYWH53ldhhIWF6cCBA7nWm318Hx8f9e7dW71791ZmZqa6deumF198UWPGjJGnp6ckKSQkRI8//rgef/xxpaamqlGjRnrxxRcJWwAKhdsIAcAFfv75Z7366quaPXu240NvUFCQ48OjJCUmJio4OPiq+8rOztbQoUOVmJiooUOHys/PT5LUrVs3ubm5acKECbmuKBiGoT/++EOS1KhRI4WHh2vWrFm5PqTn50pEr169lJ2drdjY2FzbsrKyHPvMudrx931mZmZq/vz5Tn3S0tKUlZXltK5evXqyWq3KyMgo0LkVxoYNGxQbG+sUhPNy6tSpXOtyvhw4p86c7yDLK/wUxrvvvuv0HNnHH3+sEydOOH2wr1KlirZt26bMzEzHuuXLl+eaIr4gtXXq1EnZ2dl69dVXndbPnDlTFovF9GDRqVMnfffdd4qPj3esO3funN544w1VrlxZtWvXdvkx//kestlsql27tgzD0KVLl5SdnZ3rqwgCAwMVGhrqGH8AKCiubAGACzz11FPq3bu3mjZt6ljXo0cP3XvvvY7vWvryyy+1fPlyp35nzpxxfPfT+fPndejQIS1btkyHDx9Wnz59nAJPlSpVNGnSJI0ZM0ZHjx5Vly5dVLJkSR05ckSffvqpBg0apKefflpWq1WvvfaaOnfurIYNG2rAgAEKCQnR/v37tW/fPq1evfqK53LnnXfq0Ucf1eTJk5WQkKD27durRIkSOnjwoJYuXarZs2erR48euuOOOxQQEKD+/ftr6NChslgseu+993KFpQ0bNmjIkCHq2bOnqlevrqysLL333ntyc3NT9+7dC3RuV/PVV19p//79ysrKUkpKijZs2KC1a9cqLCxMX3zxhePqRV4mTpyob775RtHR0QoLC1Nqaqrmz5+vChUqOF1d9Pf314IFC1SyZEn5+PgoIiKiwM8U5ShdurSaN2+uAQMGKCUlRbNmzVLVqlWdpqd/+OGH9fHHH6tDhw7q1auXDh8+rEWLFjlNWFHQ2jp37qzWrVvrueee09GjR9WgQQOtWbNGn3/+uYYNG5Zr3672zDPP6IMPPlDHjh01dOhQlS5dWu+8846OHDmiTz75pMDfTZcf7du3V3BwsJo1a6agoCAlJibq1VdfVXR0tEqWLKnTp0+rQoUK6tGjhxo0aCBfX1+tW7dO33//vaZPn+7yegDcJIpgBkQAuKGsWLHC8PX1NY4fP55r2+TJk43Q0FAjJCTEeOWVV5y25UwVnvPj6+trVKtWzejbt6+xZs2ayx7vk08+MZo3b274+PgYPj4+Rs2aNY2YmBjjwIEDTu02b95s3HXXXUbJkiUNHx8fo379+k5Tdffv39/w8fG57HHeeOMNo3HjxoaXl5dRsmRJo169esaoUaOcznPLli3G7bffbnh5eRmhoaHGqFGjjNWrVxuSjI0bNxqGYRi//PKL8Z///MeoUqWK4enpaZQuXdpo3bq1sW7dukKf2z/lTP2e82Oz2Yzg4GDjrrvuMmbPnu00vXqOf079vn79euPee+81QkNDDZvNZoSGhhr33Xef8fPPPzv1+/zzz43atWsb7u7uTlOtX2kq/8tN/f7BBx8YY8aMMQIDAw0vLy8jOjra+PXXX3P1nz59ulG+fHnDw8PDaNasmbFjx45c+7xSbf+c+t0w/ppq/amnnjJCQ0ONEiVKGNWqVTOmTp3q9PUAhpH31O2Gcfkp6f/pcv0PHz5s9OjRw/D39zc8PT2Npk2bGsuXL3dqk/M6XelrA/4uZ+r3qVOn5tr2+uuvGy1btjTKlCljeHh4GFWqVDFGjhxpnDlzxjAMw8jIyDBGjhxpNGjQwPE706BBA2P+/Pn5OjYA5MViGNfo6VYAAAAAuInwzBYAAAAAmICwBQAAAAAmIGwBAAAAgAkIWwAAAABgAsIWAAAAAJiAsAUAAAAAJuBLjfPBbrfr+PHjKlmypCwWS1GXAwAAAKCIGIahs2fPKjQ09Kpfwk7Yyofjx4+rYsWKRV0GAAAAgOvE//73P1WoUOGKbQhb+VCyZElJf72gfn5+RVwNAAAAgKKSlpamihUrOjLClRC28iHn1kE/Pz/CFgAAAIB8PV7EBBkAAAAAYALCFgAAAACYgLAFAAAAACYgbAEAAACACQhbAAAAAGACwhYAAAAAmICwBQAAAAAmIGwBAAAAgAkIWwAAAABgAsIWAAAAAJiAsAUAAAAAJiBsAQAAAIAJCFsAAAAAYALCFgAAAACYgLAFAAAAACYgbAEAAACACQhbAAAAAGACwhYAAAAAmMC9qAsAAABA8ZWUlKSTJ08WuF/ZsmVVqVIlEyoCrh+ELQAAABRKUlKSataqpQvnzxe4r5e3t/YnJhK4cEMjbAEAAKBQTp48qQvnz6vXpNcUGF4t3/1SjxzUkucf08mTJwlbuKERtgAAAPCvBIZXU/laDYq6DOC6wwQZAAAAAGACwhYAAAAAmICwBQAAAAAmIGwBAAAAgAkIWwAAAABgAsIWAAAAAJiAsAUAAAAAJiBsAQAAAIAJCFsAAAAAYALCFgAAAACYgLAFAAAAACYgbAEAAACACYo0bE2ePFm33XabSpYsqcDAQHXp0kUHDhxwatOqVStZLBann8GDBzu1SUpKUnR0tLy9vRUYGKiRI0cqKyvLqc2mTZvUqFEjeXh4qGrVqoqLizP79AAAAADcxIo0bH399deKiYnRtm3btHbtWl26dEnt27fXuXPnnNo98sgjOnHihONnypQpjm3Z2dmKjo5WZmamtm7dqnfeeUdxcXEaN26co82RI0cUHR2t1q1bKyEhQcOGDdPDDz+s1atXX7NzBQAAAHBzcS/Kg69atcppOS4uToGBgdq5c6datmzpWO/t7a3g4OA897FmzRr99NNPWrdunYKCgtSwYUPFxsZq9OjRGj9+vGw2mxYsWKDw8HBNnz5dklSrVi1t3rxZM2fOVFRUVK59ZmRkKCMjw7GclpYmScrKysp1xQwAAOBmZbfbZbPZZJUhiz073/2sMmSz2WS32/lshWKnIO/ZIg1b/3TmzBlJUunSpZ3WL168WIsWLVJwcLA6d+6ssWPHytvbW5IUHx+vevXqKSgoyNE+KipKjz32mPbt26dbb71V8fHxateundM+o6KiNGzYsDzrmDx5siZMmJBr/Y4dO+Tj4/NvThEAAOCGcfbsWY0dO1blPS/K4/ef8t0v0POixo4dq5MnT2r79u0mVgi43j/vwruS6yZs2e12DRs2TM2aNVPdunUd6++//36FhYUpNDRUu3fv1ujRo3XgwAEtW7ZMkpScnOwUtCQ5lpOTk6/YJi0tTRcuXJCXl5fTtjFjxmj48OGO5bS0NFWsWFFNmjSRn5+f604aAACgGEtISFBsbKwGL1yh0LDa+e53/MAeLYiN1ZYtW9SwYUPzCgRMkHPXW35cN2ErJiZGe/fu1ebNm53WDxo0yPHf9erVU0hIiNq2bavDhw+rSpUqptTi4eEhDw+PXOvd3d3l7n7dvGQAAABFymq1KjMzU3ZZZFjd8t3PLosyMzNltVr5bIVipyDv2eti6vchQ4Zo+fLl2rhxoypUqHDFthEREZKkQ4cOSZKCg4OVkpLi1CZnOec5r8u18fPzy3VVCwAAAABcoUjDlmEYGjJkiD799FNt2LBB4eHhV+2TkJAgSQoJCZEkRUZGas+ePUpNTXW0Wbt2rfz8/FS7dm1Hm/Xr1zvtZ+3atYqMjHTRmQAAAACAsyINWzExMVq0aJHef/99lSxZUsnJyUpOTtaFCxckSYcPH1ZsbKx27typo0eP6osvvlC/fv3UsmVL1a9fX5LUvn171a5dWw8++KB+/PFHrV69Ws8//7xiYmIctwIOHjxYv/zyi0aNGqX9+/dr/vz5WrJkiZ566qkiO3cAAAAAN7YiDVuvvfaazpw5o1atWikkJMTx89FHH0mSbDab1q1bp/bt26tmzZoaMWKEunfvri+//NKxDzc3Ny1fvlxubm6KjIxU37591a9fP02cONHRJjw8XCtWrNDatWvVoEEDTZ8+Xf/973/znPYdAAAAAFyhSJ9INAzjitsrVqyor7/++qr7CQsL08qVK6/YplWrVtq1a1eB6gMAAACAwrouJsgAAAAAgBsNYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0A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AgAAAAATELYAAAAAwASELQAAAAAwQaHC1i+//OLqOgAAAADghlKosFW1alW1bt1aixYt0sWLF11dEwAAAAAUe4UKWz/88IPq16+v4cOHKzg4WI8++qi+++47V9cGAAAAAMVWocJWw4YNNXv2bB0/flxvv/22Tpw4oebNm6tu3bqaMWOGfv/9d1fXCQAAAADFyr+aIMPd3V3dunXT0qVL9corr+jQoUN6+umnVbFiRfXr108nTpxwVZ0AAAAAUKz8q7C1Y8cOPf744woJCdGMGTP09NNP6/Dhw1q7dq2OHz+ue++911V1AgAAAECx4l6YTjNmzNDChQt14MABderUSe+++646deokq/Wv7BYeHq64uDhVrlzZlbUCAAAAQLFRqCtbr732mu6//379+uuv+uyzz3T33Xc7glaOwMBAvfXWW1fczzfffKPOnTsrNDRUFotFn332mdP2hx56SBaLxemnQ4cOTm1OnTqlBx54QH5+fvL399fAgQOVnp7u1Gb37t1q0aKFPD09VbFiRU2ZMqUwpw0AAAAA+VaoK1sHDx68ahubzab+/ftfsc25c+fUoEED/ec//1G3bt3ybNOhQwctXLjQsezh4eG0/YEHHtCJEye0du1aXbp0SQMGDNCgQYP0/vvvS5LS0tLUvn17tWvXTgsWLNCePXv0n//8R/7+/ho0aNBVzwMAAAAACqNQYWvhwoXy9fVVz549ndYvXbpU58+fv2rIytGxY0d17Njxim08PDwUHByc57bExEStWrVK33//vZo0aSJJmjt3rjp16qRp06YpNDRUixcvVmZmpt5++23ZbDbVqVNHCQkJmjFjBmELAAAAgGkKFbYmT56s119/Pdf6wMBADRo0KN9hKz82bdqkwMBABQQEqE2bNpo0aZLKlCkjSYqPj5e/v78jaElSu3btZLVatX37dnXt2lXx8fFq2bKlbDabo01UVJReeeUV/fnnnwoICMh1zIyMDGVkZDiW09LSJElZWVnKyspy2bkBAAAUZ3a7XTabTVYZstiz893PKkM2m012u53PVih2CvKeLVTYSkpKUnh4eK71YWFhSkpKKswu89ShQwd169ZN4eHhOnz4sJ599ll17NhR8fHxcnNzU3JysgIDA536uLu7q3Tp0kpOTpYkJScn56o1KCjIsS2vsDV58mRNmDAh1/odO3bIx8fHVacHAABQrJ09e1Zjx45Vec+L8vj9p3z3C/S8qLFjx+rkyZPavn27iRUCrnfu3Ll8ty1U2AoMDNTu3btzzTb4448/Oq46uUKfPn0c/12vXj3Vr19fVapU0aZNm9S2bVuXHeefxowZo+HDhzuW09LSVLFiRTVp0kR+fn6mHRcAAKA4SUhIUGxsrAYvXKHQsNr57nf8wB4tiI3Vli1b1LBhQ/MKBEyQc9dbfhQqbN13330aOnSoSpYsqZYtW0qSvv76az355JNOAcnVbrnlFpUtW1aHDh1S27ZtFRwcrNTUVKc2WVlZOnXqlOM5r+DgYKWkpDi1yVm+3LNgHh4euSbikP66aubuXqiXDAAA4IZjtVqVmZkpuywyrG757meXRZmZmbJarXy2QrFTkPdsoaZ+j42NVUREhNq2bSsvLy95eXmpffv2atOmjV566aXC7DJfjh07pj/++EMhISGSpMjISJ0+fVo7d+50tNmwYYPsdrsiIiIcbb755htdunTJ0Wbt2rWqUaNGnrcQAgAAAIArFCps2Ww2ffTRR9q/f78WL16sZcuW6fDhw44Z//IrPT1dCQkJSkhIkCQdOXJECQkJSkpKUnp6ukaOHKlt27bp6NGjWr9+ve69915VrVpVUVFRkqRatWqpQ4cOeuSRR/Tdd99py5YtGjJkiPr06aPQ0FBJ0v333y+bzaaBAwdq3759+uijjzR79myn2wQBAAAAwNX+1XXb6tWrq3r16oXuv2PHDrVu3dqxnBOA+vfvr9dee027d+/WO++8o9OnTys0NFTt27dXbGys0y1+ixcv1pAhQ9S2bVtZrVZ1795dc+bMcWwvVaqU1qxZo5iYGDVu3Fhly5bVuHHjmPYdAAAAgKkKFbays7MVFxen9evXKzU1VXa73Wn7hg0b8rWfVq1ayTCMy25fvXr1VfdRunRpxxcYX079+vX17bff5qsmAAAAAHCFQoWtJ598UnFxcYqOjlbdunVlsVhcXRcAAAAAFGuFClsffvihlixZok6dOrm6HgAAAAC4IRR6goyqVau6uhYAAAAAuGEUKmyNGDFCs2fPvuLzVgAAAABwMyvUbYSbN2/Wxo0b9dVXX6lOnToqUaKE0/Zly5a5pDgAAAAAKK4KFbb8/f3VtWtXV9cCAAAAADeMQoWthQsXuroOAAAAALihFOqZLUnKysrSunXr9Prrr+vs2bOSpOPHjys9Pd1lxQEAAABAcVWoK1u//vqrOnTooKSkJGVkZOiuu+5SyZIl9corrygjI0MLFixwdZ0AAAAAUKwU6srWk08+qSZNmujPP/+Ul5eXY33Xrl21fv16lxUHAAAAAMVVoa5sffvtt9q6datsNpvT+sqVK+u3335zSWEAAAAAUJwV6sqW3W5XdnZ2rvXHjh1TyZIl/3VRAAAAAFDcFSpstW/fXrNmzXIsWywWpaen64UXXlCnTp1cVRsAAAAAFFuFuo1w+vTpioqKUu3atXXx4kXdf//9OnjwoMqWLasPPvjA1TUCAAAAQLFTqLBVoUIF/fjjj/rwww+1e/dupaena+DAgXrggQecJswAAAAAgJtVocKWJLm7u6tv376urAUAAAAAbhiFClvvvvvuFbf369evUMUAAAAAwI2iUGHrySefdFq+dOmSzp8/L5vNJm9vb8IWAAAAgJteoWYj/PPPP51+0tPTdeDAATVv3pwJMgAAAABAhQxbealWrZpefvnlXFe9AAAAAOBm5LKwJf01acbx48dduUsAAAAAKJYK9czWF1984bRsGIZOnDihV199Vc2aNXNJYQAAAABQnBUqbHXp0sVp2WKxqFy5cmrTpo2mT5/uiroAAAAAoFgrVNiy2+2urgMAAAAAbigufWYLAAAAAPCXQl3ZGj58eL7bzpgxozCHAAAAAIBirVBha9euXdq1a5cuXbqkGjVqSJJ+/vlnubm5qVGjRo52FovFNVUCAAAAQDFTqLDVuXNnlSxZUu+8844CAgIk/fVFxwMGDFCLFi00YsQIlxYJAAAAAMVNoZ7Zmj59uiZPnuwIWpIUEBCgSZMmMRshAAAAAKiQYSstLU2///57rvW///67zp49+6+LAgAAAIDirlBhq2vXrhowYICWLVumY8eO6dixY/rkk080cOBAdevWzdU1AgAAAECxU6hnthYsWKCnn35a999/vy5duvTXjtzdNXDgQE2dOtWlBQIAAABAcVSosOXt7a358+dr6tSpOnz4sCSpSpUq8vHxcWlxAAAAAFBc/asvNT5x4oROnDihatWqycfHR4ZhuKouAAAAACjWChW2/vjjD7Vt21bVq1dXp06ddOLECUnSwIEDmfYdAAAAAFTIsPXUU0+pRIkSSkpKkre3t2N97969tWrVKpcVBwAAAADFVaGe2VqzZo1Wr16tChUqOK2v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AAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQsAAAAATHBdh63x48fLYrE4/dSsWdOx/eLFi4qJiVGZMmXk6+ur7t27KyUlxWkfSUlJio6Olre3twIDAzVy5EhlZWVd61MBAAAAcJNxL+oCrqZOnTpat26dY9nd/f+X/NRTT2nFihVaunSpSpUqpSFDhqhbt27asmWLJCk7O1vR0dEKDg7W1q1bdeLECfXr108lSpTQSy+9dM3PBQAAAMDN47oPW+7u7goODs61/syZM3rrrbf0/vvvq02bNpKkhQsXqlatWtq2bZtuv/12rVmzRj/99JPWrVunoKAgNWzYULGxsRo9erTGjx8vm82W5zEzMjKUkZHhWE5LS5MkZWVlcVUMAADg/9jtdtlsNlllyGLPznc/qwzZbDbZ7XY+W6HYKch79roPWwcPHlRoaKg8PT0VGRmpyZMnq1KlStq5c6cuXbqkdu3aOdrWrFlTlSpVUnx8vG6//XbFx8erXr16CgoKcrSJiorSY489pn379unWW2/N85iTJ0/WhAkTcq3fsWOHfHx8XH+SAAAAxdDZs2c1duxYlfe8KI/f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lQybzWY0bdrU2LZtW1GXdFPp3bu3ERISYthsNqN8+fJG7969jUOHDjm2X7hwwXj88ceNgIAAw9vb2+jatavT/4CFeSyG8bf5hAEAAAAALsFshAAAAABgAsIWAAAAAJiAsAUAAAAAJiBsAQAAAIAJCFsAAAAAYALCFgAAAACYgLAFAAAAACYgbAEAAACACQhbAAAAAGACwhYA4Lq1ePFiVaxYUQEBARo+fLjTtqNHj6p69epKS0tzrBs/frwsFossFovc3d1VtmxZtWzZUrNmzVJGRsa1Lh8AcJMjbAEArksnT57Uww8/rGnTpmnNmjVatGiRli9f7tj++OOP6+WXX5afn59Tvzp16ujEiRNKSkrSxo0b1bNnT02ePFl33HGHzp49a1q9mZmZpu0bAFA8EbYAANelX375RaVKlVLv3r112223qXXr1kpMTJQkffDBBypRooS6deuWq5+7u7uCg4MVGhqqevXq6YknntDXX3+tvXv36pVXXnG0y8jI0NNPP63y5cvLx8dHERER2rRpk9O+tmzZolatWsnb21sBAQGKiorSn3/+KUlq1aqVhgwZomHDhqls2bKKioqSJO3du1cdO3aUr6+vgoKC9OCDD+rkyZOOfa5atUrNmzeXv7+/ypQpo7vvvluHDx92bM/MzNSQIUMUEhIiT09PhYWFafLkyY7tp0+f1sMPP6xy5crJz89Pbdq00Y8//vjvX3AAgMsRtgAA16Vq1arp/Pnz2rVrl06dOqXvv/9e9evX159//qmxY8fq1Vdfzfe+atasqY4dO2rZsmWOdUOGDFF8fLw+/PBD7d69Wz179lSHDh108OBBSVJCQoLatm2r2rVrKz4+Xps3b1bnzp2VnZ3t2Mc777wjm82mLVu2aMGCBTp9+rTatGmjW2+9VTt27NCqVauUkpKiXr16OfqcO3dOw4cP144dO7R+/XpZrVZ17dpVdrtdkjRnzhx98cUXWrJkiQ4cOKDFixercuXKjv49e/ZUamqqvvrqK+3cuVONGjVS27ZtderUqcK+1AAAk1gMwzCKuggAAPLy6aefaty4cbpw4YL69u2r8ePHa+DAgapXr54aNWqkJ598UpcuXdL48ePVo0cPjR8/Xp999pkSEhJy7euZZ57RnDlzdP78eSUlJemWW25RUlKSQkNDHW3atWunpk2b6qWXXtL999+vpKQkbd68Oc/aWrVqpbS0NP3www+OdZMmTdK3336r1atXO9YdO3ZMFStW1IEDB1S9evVc+zl58qTKlSunPXv2qG7duho6dKj27dundevWyWKxOLXdvHmzoqOjlZqaKg8PD8f6qlWratSoURo0aFC+X1sAgPnci7oAAAAup2vXruratatj+euvv9bu3bs1d+5cVa1aVR988IGCg4PVtGlTtWzZ8or7MgzDEV727Nmj7OzsXOEnIyNDZcqUkfTXla2ePXtecZ+NGzd2Wv7xxx+1ceNG+fr65mp7+PBhVa9eXQcPHtS4ceO0fft2nTx50nFFKykpSXXr1tVDDz2ku+66SzVq1FCHDh109913q3379o79p6enO2rMceHCBadbEQEA1wfCFgCgWMjIyNDjjz+u9957T4cOHVJWVpbuvPNOSVL16tW1ffv2K/ZPTExUeHi4JCk9PV1ubm7auXOn3NzcnNrlBCUvL6+r1uTj4+O0nJ6ers6dOzs9G5YjJCREktS5c2eFhYXpzTffVGhoqOx2u+rWreuYYKNRo0Y6cuSIvvrqK61bt069evVSu3bt9PHHHys9PV0hISG5ni2TJH9//6vWCwC4tghbAIBiYdKkSerQoYMaNWqkXbt2KSsry7Ht0qVLTs9S/dP+/fu1atUqjRkzRpJ06623Kjs7W6mpqWrRokWeferXr6/169drwoQJ+a6xUaNG+uSTT1S5cmW5u+f+J/aPP/7QgQMH9OabbzqOm9dtin5+furdu7d69+6tHj16qEOHDjp16pQaNWqk5ORkubu7Oz3HBQC4PjFBBgDguvfTTz/po48+0sSJEyX9NeGF1WrVW2+9pRUrVmj//v267bbbJElZWVlKTk7W8ePHtWfPHs2dO1d33nmnGjZsqJEjR0r660rYAw88oH79+mnZsmU6cuSIvvvuO02ePFkrVqyQJI0ZM0bff/+9Hn/8ce3evVv79+/Xa6+95jSz4D/FxMTo1KlTuu+++/T999/r8OHDWr16tQYMGKDs7GwFBASoTJkyeuONN3To0CFt2LAh1/eHzZgxQx988IH279+vn3/+WUuXLlVwcLD8/f3Vrl07RUZGqkuXLlqzZo2OHj2qrVu36rnnntOOHTvMeOkBAP8CV7YAANc1wzA0aNAgzZgxw3HbnpeXl+Li4hQTE6OMjAy9+uqrKl++vCRp3759CgkJkZubm0qVKqXatWtrzJgxeuyxx5wmlVi4cKEmTZqkESNG6LffflPZsmV1++236+6775b0VyBbs2aNnn32WTVt2lReXl6KiIjQfffdd9laQ0NDtWXLFo0ePVrt27dXRkaGwsLC1KFDB1mtVlksFn344YcaOnSo6tatqxo1amjOnDlq1aqVYx8lS5bUlClTdPDgQbm5uem2227TypUrZbX+9f9HV65cqeeee04DBgzQ77//ruDgYLVs2VJBQUGufukBAP8SsxECAAAAgAm4jRAAAAAATEDYAgAAAAATELYAAAAAwASELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABP8PnVvLPEMWpcsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

num_small_alloc

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0json.lean13107897613625630283682.783641
1root.lean10117154038440302672574.947876
2./././Main.lean9951893414636241944770.855195
3./././Main.lean10103203414636240431670.412073
4./././Main.lean10105823414636240405470.404400
..................
2959./././Main.lean34247761006225-2418551-240.358866
2960./././Main.lean34247761005962-2418814-240.447850
2961./././Main.lean3424776991233-2433543-245.506657
2962root.lean40658031007071-3058732-303.725557
2963json.lean76787501302156-6376594-489.695090
\n", + "

2964 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse absolute_diff %Decrease\n", + "0 json.lean 1310789 7613625 6302836 82.783641\n", + "1 root.lean 1011715 4038440 3026725 74.947876\n", + "2 ./././Main.lean 995189 3414636 2419447 70.855195\n", + "3 ./././Main.lean 1010320 3414636 2404316 70.412073\n", + "4 ./././Main.lean 1010582 3414636 2404054 70.404400\n", + "... ... ... ... ... ...\n", + "2959 ./././Main.lean 3424776 1006225 -2418551 -240.358866\n", + "2960 ./././Main.lean 3424776 1005962 -2418814 -240.447850\n", + "2961 ./././Main.lean 3424776 991233 -2433543 -245.506657\n", + "2962 root.lean 4065803 1007071 -3058732 -303.725557\n", + "2963 json.lean 7678750 1302156 -6376594 -489.695090\n", + "\n", + "[2964 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAIjCAYAAAD1OgEdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZQklEQVR4nO3deVwVdf///+cBPKwCbmwuSO67qamUmiaJZmbuVuZy2aJpZq55leZWlqamZvrpuq7U0jbLsktNRdRKxfWC3E1NIxcwcwE3EHj//ujH+XYEDZAR0cf9dju3mve8Z+Y1Zw54nszMe2zGGCMAAAAAQL5yKegCAAAAAOBORNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAZGvs2LGy2Wy3ZFvNmzdX8+bNHdPr16+XzWbTl19+eUu237t3b5UvX/6WbOtaiYmJ6ty5s0qUKCGbzaZ33323QOpAzmR+NtevX+9os/Lzk93PYfny5dW7d29LtgcgfxG2AFjm+PHjatu2rXx9fVW9enX997//zdJnyZIlCggI0Pnz57PMa968uWw2m2w2m1xcXOTr66sqVaro6aefVlRU1K3YhTvG/PnzHe+lzWaTh4eHQkJCFBkZqZkzZyo5OTlftnPixAmNHTtWcXFx+bK+/HS71vbyyy9r1apVGjVqlD7++GO1bt26oEsCAOQTt4IuAMCdq1evXjp+/Ljefvttbdy4UV26dNH+/fsdfwG+cuWKhg0bpokTJ8rPzy/bdZQpU0aTJk2SJF28eFGHDh3SkiVLtHDhQnXt2lULFy5UkSJFbtUuFXrjx49XWFiYrl69qoSEBK1fv16DBw/WtGnT9O2336p27dqOvq+99ppeeeWVXK3/xIkTGjdunMqXL6+6devmeLnVq1fnajt5caPa/vWvfykjI8PyGrKzdu1atW/fXsOGDSuQ7QMArEPYAmCJy5cva+3atVq/fr2aNWumfv36adOmTVq1apWef/55SdI777wjPz8/PfPMM9ddj5+fn3r06OHU9tZbb2nQoEF6//33Vb58eb399tuW7stfXbx4Ud7e3rdse/mtTZs2atCggWN61KhRWrt2rR599FE99thj2rdvnzw9PSVJbm5ucnOz9p+JS5cuycvLS3a73dLt/J2CDOynTp2Sv79/vq3vypUrstvtcnHh4hUAKGj8JgZgiStXrsgYo2LFikmSbDab/P39denSJUl/XmL41ltvacaMGbn+Uujq6qqZM2eqevXqeu+997Jcgrhw4ULVr19fnp6eKl68uLp3767ffvsty3q2bNmiRx55RMWKFZO3t7dq166tGTNmOOb37t1bPj4+Onz4sB555BEVLVpUTz31lCQpIyND7777rmrUqCEPDw8FBgbq+eef19mzZ522sXTpUrVt21YhISFyd3dXhQoVNGHCBKWnpzv1O3jwoDp16qSgoCB5eHioTJky6t69e573LTceeughjR49Wr/++qsWLlzoaM/uXpGoqCg1adJE/v7+8vHxUZUqVfTPf/5T0p/3stx3332SpD59+jguWZw/f76kPy8LrVmzpnbs2KFmzZrJy8vLsey192xlSk9P1z//+U8FBQXJ29tbjz32WJb9vd79K39d59/Vlt09NxcvXtTQoUNVtmxZubu7q0qVKnrnnXdkjHHqZ7PZNHDgQH3zzTeqWbOm3N3dVaNGDa1cuTL7N/z/l3lppzFGs2fPdtSU6ZdfflGXLl1UvHhxeXl5qXHjxlq+fLnTOjLvH/rss8/02muvqXTp0vLy8lJSUlK22zx69KhsNpveeecdffDBB6pQoYLc3d113333adu2bdd9//7q2vfqr+ucPXu27rnnHnl5ealVq1b67bffZIzRhAkTVKZMGXl6eqp9+/Y6c+bMDd+bayUnJ2vw4MEqX7683N3dFRAQoIcfflj/+9//nOqtWbOmdu7cqQcffFBeXl6qWLGi476/77//Xo0aNZKnp6eqVKmiNWvWOG3j119/1QsvvKAqVarI09NTJUqUUJcuXXT06NFc1ZpTP/74o7p06aJy5crJ3d1dZcuW1csvv6zLly/naX05+bxIf/5uHjt2rCpXriwPDw8FBwerY8eOOnz48M3uEoBscGYLgCWKFSumChUq6M0339Sbb76pTZs2KS4uTrNmzZIkjRgxQm3atFGzZs3ytH5XV1c98cQTGj16tDZs2KC2bdtKkt544w2NHj1aXbt21TPPPKPff/9ds2bNUrNmzRQbG+s4gxAVFaVHH31UwcHBeumllxQUFKR9+/Zp2bJleumllxzbSUtLU2RkpJo0aaJ33nlHXl5ekqTnn39e8+fPV58+fTRo0CAdOXJE7733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N+PChQtOweZa3bp10wMPPKBnnnlGgYGB6t69u7744otcBa/SpUvnajCMSpUqOU3bbDZVrFjRsvtoMv36668KCQnJ8n5Uq1bNMf+vypUrl2UdxYoVy3IPX262X6VKlSzt19t+WFhYrtZ/bb2ZwSuv9Wa3zszglfmzf217brY1efJk7d69W2XLllXDhg01duzYbINhmTJlsoQGPz+/HNVw+fJljRkzxnGPXsmSJVWqVCmdO3cu20dT3Kz4+Hj17t1bxYsXl4+Pj0qVKqUHH3xQknK9vZx+Xg4fPqwqVapYPvANgP+HnzYAt0xSUpJeffVVvfPOO/L29tann36qzp076/HHH5f051mLRYsWqUWLFjla3+7duyVJFStWlPTnoBU2m03fffedXF1ds/TPPBOWG+7u7lkG8MjIyFBAQIAWLVqU7TKlSpWSJJ07d04PPvigfH19NX78eFWoUEEeHh763//+p5EjRzqFlKlTp6p3795aunSpVq9erUGDBmnSpEnavHmzypQpY8m+/dWxY8d0/vx5x3uZHU9PT/3www9at26dli9frpUrV+rzzz/XQw89pNWrV2dbV3bryG/X+4t8enp6jmrKD9fbjrlmMA2r5PZ9zUm9mYN3XOvawV3+bp358d507dpVTZs21ddff63Vq1drypQpevvtt7VkyRK1adMmX2p48cUXNW/ePA0ePFjh4eHy8/OTzWZT9+7d8/2xAOnp6Xr44Yd15swZjRw5UlWrVpW3t7eOHz+u3r17F9hjCADkP8IWgFsm8xlPmSP6nThxQvfee69jfkhISI4fOJuenq5PPvlEXl5ejktnKlSoIGOMwsLCVLly5esum3m51+7duxUREZHr/ahQoYLWrFmjBx544IZfctevX68//vhDS5YscRoI5MiRI9n2r1WrlmrVqqXXXntNmzZt0gMPPKC5c+dq4sSJOd63vPr4448lSZGRkTfs5+LiopYtW6ply5aaNm2a3nzzTb366qtat26dIiIi8v1SpIMHDzpNG2N06NAhp+eBFStWTOfOncuy7K+//qp77rnHMZ2b2kJDQ7VmzRolJyc7nd3KvPQzNDQ0x+vKi9DQUB04cCBL+63avvTn+5rd2aNrz6rdKsHBwXrhhRf0wgsv6NSpU6pXr57eeOMNp7B1M7788kv16tVLU6dOdbRduXIl28/Wzdq1a5d+/vln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AjR8+PAsDwddv3696tWrJ3d3d1WsWFHz58+/FbsHAAAA4C5WoANklClTRm+99ZYqVaokY4wWLFig9u3bKzY2VjVq1NDLL7+s5cuXa/HixfLz89PAgQPVsWNHx9Pr09PT1bZtWwUFBWnTpk06efKkevbsqSJFiujNN9+U9Oe13m3btlW/fv20aNEiRUdH65lnnlFwcLAiIyNzVGdGRoZOnDihokWLymazWfZ+AAAAALi9GWOUnJyskJCQv3/IfEE94Ot6ihUrZv7973+bc+fOmSJFijg9DHHfvn1GkomJiTHGGLNixQrj4uJiEhISHH3mzJljfH19TUpKijHGmBEjRmR5yGG3bt1MZGRkjmv67bffnB4GyosXL168ePHixYsXr7v79dtvv/1tjrhthn5PT0/X4sWLdfHiRYWHh2vHjh26evWqIiIiHH2qVq2qcuXKKSYmRo0bN1ZMTIxq1aqlwMBAR5/IyEj1799fe/bs0b333quYmBindWT2GTx48HVrSUlJUUpKimPa/P+3tR05ckS+vr75tMcAAAAACpukpCSFhYWpaNGif9u3wMPWrl27FB4eritXrsjHx0dff/21qlevrri4ONntdvn7+zv1DwwMVEJCgiQpISHBKWhlzs+cd6M+SUlJunz5sjw9PbPUNGnSpGyHov3555/l7e2d530FAAAAULhdvHhRknJ0e1GBh60qVaooLi5O58+f15dffqlevXrd8PkUt8KoUaM0ZMgQx3RSUpLKli2rBg0acGYLAAAAuIslJSXluG+Bhy273a6KFStKkurXr69t27ZpxowZ6tatm1JTU3Xu3Dmns1uJiYkKCgqSJAUFBWnr1q1O68scrfCvfa4dwTAxMVG+vr7ZntWSJHd3d7m7u2dpd3Nzk5tbgb9lAAAAAApIbvJAgQ79np2MjAylpKSofv36KlKkiKKjox3zDhw4oPj4eIWHh0uSwsPDtWvXLp06dcrRJyoqSr6+vqpevbqjz1/Xkdkncx0AAAAAYIUCPU0zatQotWnTRuXKlVNycrI++eQTrV+/XqtWrZKfn5/69u2rIUOGqHjx4vL19dWLL76o8PBwNW7cWJLUqlUrVa9eXU8//bQmT56shIQEvfbaaxowYIDjzFS/fv303nvvacSIEfrHP/6htWvX6osvvtDy5csLctcBAAAA3OEKNGydOnVKPXv21MmT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AAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAm4FXQAAAABwu9u3b1+ulylZsqTKlStnQTUoLO6qsDV79mxNmTJFCQkJqlOnjmbNmqWGDRsWdFkAAAC4TSWfTpTNxUU9evTI9bKeXl7av28fgesudteErc8//1xDhgzR3Llz1ahRI7377ruKjIzUgQMHFBAQUNDlAcAdIz4+XqdPn871cvwFGMDt6HJykkxGhrpOnKOAsEo5Xu7UkYP64rX+On369B37u43f93/vrglb06ZN07PPPqs+ffpIkubOnavly5frww8/1CuvvFLA1QHAnSE+Pl5Vq1XT5UuXcr3snf4X4Lx+KUlJSZG7u3uul7ubvszkFscif93q9zMvy+XlEsBrBYRVUulqdXK9XF62fas/a3k5hidPnlTnLl105fLlXG/P3cNDX335pYKDg3O1XGH8WborwlZqaqp27NihUaNGOdpcXFwUERGhmJiYLP1TUlKUkpLimD5//rwk6cyZM0pLS7O+4BxITExUYmJirpdzcXFRRkYGy91lyxXENlnu7lzu4MGDSrt6VS16vyi/wJAcL3c+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HS0XFxd16NBBGRkZkqSZM2fq22+/1RdffKEDBw5o0aJFKl++vGP5Ll266NSpU/ruu++0Y8cO1atXTy1bttSZM2fy+lYDACxiM8aYgi4CAIDsfP311xozZowuX76sHj16aOzYserbt69q1aqlevXq6aWXXtLVq1c1duxYde7cWWPHjtU333yjuLi4LOt65ZVXNHPmTF26dEnx8fG65557FB8fr5CQEEefiIgINWzYUG+++aaefPJJxcfHa8OGDdnW1rx5cyUlJel///ufo23ixIn68ccftWrVKkfbsWPHVLZsWR04cECVK1fOsp7Tp0+rVKlS2rVrl2rWrKlBgwZpz549WrNmjWw2m1PfDRs2qG3btjp16pTc3d0d7RUrVtSIESP03HPP5fi9BQBYz62gCwAA4Ho6dOigDh06OKa///577dy5U7NmzVLFihX16aefKigoSA0bNlSzZs1uuC5jjCO87Nq1S+np6VnCT0pKikqUKCHpzzNbXbp0ueE669ev7zT9008/ad26dfLx8cnS9/Dhw6pcubIOHjyoMWPGaMuWLTp9+rTjjFZ8fLxq1qyp3r176+GHH1aVKlXUunVrPfroo2rVqpVj/RcuXHDUmOny5ctOlyICAG4PhC0AQKGQkpKiF154QR9//LEOHTqktLQ0Pfjgg5KkypUra8uWLTdcft++fQoLC5MkXbhwQa6urtqxY4dcXV2d+mUGJU9Pz7+tydvb22n6woULateundO9YZmCg4MlSe3atVNoaKj+9a9/KSQkRBkZGapZs6ZjgI169erpyJEj+u6777RmzRp17dpVERER+vLLL3XhwgUFBwdnubdMkvz9/f+2XgDArUXYAgAUChMnTlTr1q1Vr149xcbGKi0tzTHv6tWrTvdSXWv//v1auXKlRo0aJUm69957lZ6erlOnTqlp06bZLlO7dm1FR0dr3LhxOa6xXr16+uqrr1S+fHm5uWX9J/aPP/7QgQMH9K9//cux3ewuU/T19VW3bt3UrVs3de7cWa1bt9aZM2dUr149JSQkyM3Nzek+LgDA7YkBMgAAt729e/fq888/1/jx4yX9OeCFi4uL/vOf/2j58uXav3+/7rvvPklSWlqaEhISdOLECe3atUuzZs3Sgw8+qLp162r48OGS/jwT9tRTT6lnz55asmSJjhw5oq1bt2rSpElavny5JGnUqFHatm2bXnjhBe3cuVP79+/XnDlznEYWvNaAAQN05swZPfHEE9q2bZsOHz6sVatWqU+fPkpPT1exYsVUokQJffDBBzp06JDWrl2b5flh06ZN06effqr9+/fr559/1uLFixUUFCR/f39FREQoPDxcjz/+uFavXq2jR49q06ZNevXVV7V9+3Yr3noAwE3gzBYA4LZmjNFzzz2nadOmOS7b8/T01Pz58zVgwAClpKTovffeU+nSpSVJe/bsUXBwsFxdXeXn56fq1atr1KhR6t+/v9OgEvPmzdPEiRM1dOhQHT9+XCVLllTjxo316KOPSvozkK1evVr//Oc/1bBhQ3l6eqpRo0Z64oknrltrSEiINm7cqJEjR6pVq1ZKSUlRaGioWrduLRcXF9lsNn322WcaNGiQatasqSpVqmjmzJlq3ry5Yx1FixbV5MmTdfDgQbm6uuq+++7TihUr5OLy599HV6xYoVdffVV9+vTR77//rqCgIDVr1kyBgYH5/dYDAG4SoxECAAAAgAW4jBAAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAv8fZpoIDelG4vAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

num_dealloc

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0json.lean4509026825322316383.191241
1./././UserAttr/Tst.lean5602728897123294480.611549
2./././UserAttr/Tst.lean5624128897123273080.537493
3root.lean3107114316911209878.297676
4derivingHashable.lean322011018836968268.394138
..................
2959derivingHashable.lean10212932201-69928-217.160958
2960root.lean14316931071-112098-360.780149
2961./././UserAttr/Tst.lean28968256234-233448-415.136750
2962./././UserAttr/Tst.lean28968256020-233662-417.104605
2963json.lean27124845033-226215-502.331623
\n", + "

2964 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse absolute_diff \\\n", + "0 json.lean 45090 268253 223163 \n", + "1 ./././UserAttr/Tst.lean 56027 288971 232944 \n", + "2 ./././UserAttr/Tst.lean 56241 288971 232730 \n", + "3 root.lean 31071 143169 112098 \n", + "4 derivingHashable.lean 32201 101883 69682 \n", + "... ... ... ... ... \n", + "2959 derivingHashable.lean 102129 32201 -69928 \n", + "2960 root.lean 143169 31071 -112098 \n", + "2961 ./././UserAttr/Tst.lean 289682 56234 -233448 \n", + "2962 ./././UserAttr/Tst.lean 289682 56020 -233662 \n", + "2963 json.lean 271248 45033 -226215 \n", + "\n", + " %Decrease \n", + "0 83.191241 \n", + "1 80.611549 \n", + "2 80.537493 \n", + "3 78.297676 \n", + "4 68.394138 \n", + "... ... \n", + "2959 -217.160958 \n", + "2960 -360.780149 \n", + "2961 -415.136750 \n", + "2962 -417.104605 \n", + "2963 -502.331623 \n", + "\n", + "[2964 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAIjCAYAAAD1OgEdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTyElEQVR4nO3dfXyP9f////trm9fOmDnbGZrl/DShtEJOljlJzovIyVtRkeQ07yJMKTmX8un9LhQhpRTCnCUM8Tbn5LTlZENiTjfbnr8//Pb69rLRNjts43a9XHZ5v4/n8TyO43G8nnut191xHM+XzRhjBAAAAADIVi45XQAAAAAA3IsIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAABLjBgxQjab7a4cq379+qpfv75jee3atbLZbPrmm2/uyvG7deumUqVK3ZVj3SwuLk7t2rVTkSJFZLPZNGnSpBypIy+6G7+j6R2jVKlS6tatm6XHBZA7ELYA5FonTpxQ8+bN5ePjo0qVKunHH39M02fhwoXy8/PThQsX0qyrX7++bDabbDabXFxc5OPjo/Lly+uFF15QZGTk3TiFe8bMmTMdr6XNZpOHh4eCgoIUHh6uKVOm6OLFi9lynJMnT2rEiBGKjo7Olv1lp9xa2xtvvKHly5dr6NCh+vLLL9WkSZOcLgkA8P9zy+kCAOBWunbtqhMnTuiDDz7Qhg0b1L59e+3fv99xBeHatWsaOHCgRo8erYIFC6a7jxIlSmjMmDGSpMuXL+vQoUNauHChZs+erWeffVazZ89Wvnz57tYp5XmjRo1SSEiIrl+/rtjYWK1du1b9+vXThAkT9MMPP6hatWqOvm+//bbefPPNTO3/5MmTGjlypEqVKqXq1atneLsVK1Zk6jhZcbva/vOf/yglJcXyGtKzevVqtWzZUgMHDsyR4wMAbo2wBSBXunr1qlavXq21a9eqXr16evnll7Vx40YtX75cvXr1kiSNGzdOBQsW1IsvvnjL/RQsWFCdO3d2anv//ffVt29fffzxxypVqpQ++OADS8/l7y5fvixvb++7drzs1rRpU9WqVcuxPHToUK1evVpPP/20nnnmGe3bt0+enp6SJDc3N7m5WfufmStXrsjLy0t2u93S4/yTnAzsp0+flq+vb7bt79q1a7Lb7XJx4eYXALhT/CUFkCtdu3ZNxhgVKlRIkmSz2eTr66srV65IunGL4fvvv6/Jkydn+kOhq6urpkyZokqVKumjjz5Kcwvi7NmzVbNmTXl6eqpw4cLq0KGD/vjjjzT72bx5s5o1a6ZChQrJ29tb1apV0+TJkx3ru3Xrpvz58+vw4cNq1qyZChQooE6dOkmSUlJSNGnSJFWuXFkeHh7y9/dXr1699NdffzkdY9GiRWrevLmCgoLk7u6u0qVLKyIiQsnJyU79Dh48qLZt2yogIEAeHh4qUaKEOnTokOVzy4yGDRtq2LBh+v333zV79mxHe3rPqkRGRqpOnTry9fVV/vz5Vb58ef373/+WdOM5q0ceeUSS1L17d8ctizNnzpR047bQKlWqaNu2bapXr568vLwc2978zFaq5ORk/fvf/1ZAQIC8vb31zDPPpDnfWz0/8/d9/lNt6T2zdfnyZQ0YMEAlS5aUu7u7ypcvr3HjxskY49TPZrOpT58++v7771WlShW5u7urcuXKWrZsWfov+P8v9dZOY4ymTZvmqCnVkSNH1L59exUuXFheXl567LHHtGTJEqd9pD7bNm/ePL399tsqXry4vLy8FB8fn+4xjx07JpvNpnHjxunTTz9V6dKl5e7urkceeUS//vrrLV+/v7v5tfr7PqdNm6YHH3xQXl5eaty4sf744w8ZYxQREaESJUrI09NTLVu21Llz52772qRn/fr1euSRR+Th4aHSpUvr//7v/27ZNyPvk19++UXt27fXAw88IHd3d5UsWVJvvPGGrl69munapIyNl3Tjb+OIESNUrlw5eXh4KDAwUG3atNHhw4ezdFwA1uLKFoBcqVChQipdurTee+89vffee9q4caOio6M1depUSdLgwYPVtGlT1atXL0v7d3V1VceOHTVs2DCtX79ezZs3lyS9++67GjZsmJ599lm9+OKLOnPmjKZOnap69epp+/btjisIkZGRevrppxUYGKjXX39dAQEB2rdvnxYvXqzXX3/dcZykpCSFh4erTp06GjdunLy8vCRJvXr10syZM9W9e3f17dtXR48e1UcffaTt27drw4YNjislM2fOVP78+dW/f3/lz59fq1ev1vDhwxUfH68PP/xQkpSYmKjw8HAlJCTotddeU0BAgE6cOKHFixfr/PnzjlssM3puWfHCCy/o3//+t1asWKGXXnop3T579uzR008/rWrVqmnUqFFyd3fXoUOHtGHDBklSxYoVNWrUKA0fPlw9e/ZU3bp1JUmPP/64Yx9//vmnmjZtqg4dOqhz587y9/e/bV3vvvuubDabhgwZotOnT2vSpEkKCwtTdHS04wpcRmSktr8zxuiZZ57RmjVr1KNHD1WvXl3Lly/XoEGDdOLECU2cONGp//r167Vw4UK9+uqrKlCggKZMmaK2bdsqJiZGRYoUSfcY9erV05dffqkXXnhBTz31lLp06eJYFxcXp8cff1xXrlxR3759VaRIEc2aNUvPPPOMvvnmG7Vu3dppXxEREbLb7Ro4cKASEhL+8UrhV199pYsXL6pXr16y2WwaO3as2rRpoyNHjmT5Kt+cOXOUmJio1157TefOndPYsWP17LPPqmHDhlq7dq2GDBmiQ4cOaerUqRo4cKA+//zzDO97165daty4sYoVK6YRI0YoKSlJ77zzTrq/Pxl9nyxYsEBXrlzRK6+8oiJFimjLli2aOnWqjh8/rgULFmTq3DM6XsnJyXr66ae1atUqdejQQa+//rouXryoyMhI7d69W6VLl87UcQHcBQYAcqlVq1aZQoUKGUlGkunXr58xxpgNGzYYT09Pc+zYsdtu/+STT5rKlSvfcv13331nJJnJkycbY4w5duyYcXV1Ne+++65Tv127dhk3NzdHe1JSkgkJCTHBwcHmr7/+cuqbkpLi+P9du3Y1ksybb77p1OeXX34xksycOXOc2pctW5am/cqVK2nq7tWrl/Hy8jLXrl0zxhizfft2I8ksWLDgluea0XO7lRkzZhhJ5tdff71ln4IFC5qHH37YsfzOO++Yv/9nZuLEiUaSOXPmzC338euvvxpJZsaMGWnWPfnkk0aSmT59errrnnzyScfymjVrjCRTvHhxEx8f72j/+uuvncbcGGOCg4NN165d/3Gft6uta9euJjg42LH8/fffG0lm9OjRTv3atWtnbDabOXTokKNNkrHb7U5tO3bsMJLM1KlT0xzrZpJM7969ndr69etnJJlffvnF0Xbx4kUTEhJiSpUqZZKTk40x/+91evDBB9P9XbvZ0aNHjSRTpEgRc+7cOUf7okWLjCTz448/Otpufv1S3fxape6zWLFi5vz58472oUOHGknmoYceMtevX3e0d+zY0djtdsfvf0a0atXKeHh4mN9//93RtnfvXuPq6ur0O5qZ90l6r9eYMWOMzWZzOs7N7wNj0v7OZXS8Pv/8cyPJTJgwIc2x//63B0DuwW2EAHKthg0bKiYmRps2bVJMTIwmTpyolJQU9e3bVwMGDFBwcLA++eQTVahQQeXLl9f06dMztf/8+fNLkmMmvYULFyolJUXPPvuszp496/gJCAhQ2bJltWbNGknS9u3bdfToUfXr1y/N1aD0ppF+5ZVXnJYXLFigggUL6qmnnnI6Ts2aNZU/f37HcSQ5XX25ePGizp49q7p16+rKlSvav3+/JDmuXC1fvtxxm+XNMnpudyJ//vy3nZUw9bVatGhRlieTcHd3V/fu3TPcv0uXLipQoIBjuV27dgoMDNTSpUuzdPyMWrp0qVxdXdW3b1+n9gEDBsgYo59++smpPSwszOmqRLVq1eTj46MjR45k+fiPPvqo6tSp42jLnz+/evbsqWPHjmnv3r1O/bt27ZqpK33PPfec4xZfSY4rfVmtV5Lat2/vNNFN7dq1JUmdO3d2evavdu3aSkxM1IkTJzK03+TkZC1fvlytWrXSAw884GivWLGiwsPDnfpm5n3y99fr8uXLOnv2rB5//HEZY7R9+/ZMnXtGx+vbb79V0aJF9dprr6XZx936mgUAmcNthABytfz58zs+dEnSjBkzFBsbqzfffFMrV67UoEGDNHv2bNlsNj3//PMqX768GjRokKF9X7p0SZIcH8YPHjwoY4zKli2bbv/U26NSn42oUqXKPx7Dzc1NJUqUcGo7ePCgLly4ID8/v3S3OX36tOP/79mzR2+//bZWr16d5jma1OexQkJC1L9/f02YMEFz5sxR3bp19cwzz6hz586OD68ZPbc7cenSpVuek3TjA/p///tfvfjii3rzzTfVqFEjtWnTRu3atcvwc3fFixfP1GQYN5+vzWZTmTJldOzYsQzvIyt+//13BQUFOQU96cYH/NT1f/f3EJCqUKFCaZ7hy8zx//6+Se/4f//9DQkJydT+b643NXhltd709pn6u1uyZMl02zN6rDNnzujq1avp/u6XL1/eKXhn5n0SExOj4cOH64cffkhTS3pfRXE7GR2vw4cPq3z58pZPPAMg+/BuBZBnxMfH66233tK4cePk7e2tuXPnql27dmrVqpWkG1ct5syZk+GwtXv3bklSmTJlJN2YtMJms+mnn36Sq6trmv6pV8Iyw93dPU2QSElJkZ+fn+bMmZPuNsWKFZMknT9/Xk8++aR8fHw0atQolS5dWh4eHvrf//6nIUOGOF0dGj9+vLp166ZFixZpxYoV6tu3r8aMGaNNmzapRIkSlpzb3x0/flwXLlxwvJbp8fT01Lp167RmzRotWbJEy5Yt0/z589WwYUOtWLEi3brS20d2u9UVgeTk5AzVlB1udRxz02QaVsns65qRelMn77jZzZO7/NM+7+Zrk9H3SXJysp566imdO3dOQ4YMUYUKFeTt7a0TJ06oW7duOfY1AAByH8IWgDwj9TueUmf0O3nypB5++GHH+qCgoAx/4WxycrK++uoreXl5OW7dKV26tIwxCgkJUbly5W65bertXrt371ZYWFimz6N06dJauXKlnnjiidt+yF27dq3+/PNPLVy40GkikKNHj6bbv2rVqqpatarefvttbdy4UU888YSmT5+u0aNHZ/jcsurLL7+UpDS3Zd3MxcVFjRo1UqNGjTRhwgS99957euutt7RmzRqFhYVl+61QBw8edFo2xujQoUNO3wdWqFAhnT9/Ps22v//+ux588EHHcmZqCw4O1sqVK3Xx4kWnq1upt34GBwdneF9ZERwcrAMHDqRpv1vHl268rundVnjzVT2rFStWTJ6enml+FySleY0y+j7ZtWuXfvvtN82aNctpYpKsfll6RserdOnS2rx5s65fv873AwJ5BM9sAcgTfvvtN3300UeaPHmy40Ovv7+/48OIJO3bt08BAQH/uK/k5GT17dtX+/btU9++feXj4yNJatOmjVxdXTVy5Mg0/2pujNGff/4pSapRo4ZCQkI0adKkNB/SM/Kv7c8++6ySk5MVERGRZl1SUpJjn6n/sv73fSYmJurjjz922iY+Pl5JSUlObVWrVpWLi4sSEhIydW5ZsXr1akVERDgF4fSkN1136pcDp9aZ+h1k6YWfrPjiiy+cniP75ptvdOrUKTVt2tTRVrp0aW3atEmJiYmOtsWLF6eZ6jsztTVr1kzJycn66KOPnNonTpwom83mdHwrNGvWTFu2bFFUVJSj7fLly/r0009VqlQpVapUydLjSzde1/379+vMmTOOth07djhmn7xbXF1dFR4eru+//14xMTGO9n379mn58uVOfTP6PknvvWmMcfrqh8zI6Hi1bdtWZ8+eTfN7dXMtAHIPrmwByBPeeOMNPffcc3r00Ucdbe3atVPLli0d37X0448/avHixU7bXbhwwfHdT1euXNGhQ4e0cOFCHT58WB06dHAKPKVLl9bo0aM1dOhQHTt2TK1atVKBAgV09OhRfffdd+rZs6cGDhwoFxcXffLJJ2rRooWqV6+u7t27KzAwUPv379eePXvSfIC72ZNPPqlevXppzJgxio6OVuPGjZUvXz4dPHhQCxYs0OTJk9WuXTs9/vjjKlSokLp27aq+ffvKZrPpyy+/TPOhavXq1erTp4/at2+vcuXKKSkpSV9++aVcXV3Vtm3bTJ3bP/npp5+0f/9+JSUlKS4uTqtXr1ZkZKSCg4P1ww8/yMPD45bbjho1SuvWrVPz5s0VHBys06dP6+OPP1aJEiWcri76+vpq+vTpKlCggLy9vVW7du1MP1OUqnDhwqpTp466d++uuLg4TZo0SWXKlHGanv7FF1/UN998oyZNmujZZ5/V4cOHNXv27DTTaGemthYtWqhBgwZ66623dOzYMT300ENasWKFFi1apH79+lk+Rfebb76puXPnqmnTpurbt68KFy6sWbNm6ejRo/r222/vyhcW/+tf/9KECRMUHh6uHj166PTp05o+fboqV658y+/xssrIkSO1bNky1a1bV6+++qqSkpI0depUVa5cWTt37nT0y+j7pEKFCipdurQGDhyoEydOyMfHR99++22Wn1nL6Hh16dJFX3zxhfr3768tW7aobt26unz5slauXKlXX31VLVu2zJbXC0A2umvzHgJAFi1ZssTkz5/fnDx5Ms26MWPGmKCgIBMYGGg++OADp3WpU4Wn/uTPn9+ULVvWdO7c2axYseKWx/v2229NnTp1jLe3t/H29jYVKlQwvXv3NgcOHHDqt379evPUU0+ZAgUKGG9vb1OtWjWnqbq7du1qvL29b3mcTz/91NSsWdN4enqaAgUKmKpVq5rBgwc7neeGDRvMY489Zjw9PU1QUJAZPHiwWb58uZFk1qxZY4wx5siRI+Zf//qXKV26tPHw8DCFCxc2DRo0MCtXrszyud0sder31B+73W4CAgLMU089ZSZPnuw0vXqqm6e8XrVqlWnZsqUJCgoydrvdBAUFmY4dO5rffvvNabtFixaZSpUqGTc3N6ep1m83lf+tpn6fO3euGTp0qPHz8zOenp6mefPmTtNypxo/frwpXry4cXd3N088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AAAAuF9l+csC3Nzc1Llz5+ysBQAAAADuGVkKW1988cVt13fp0iVLxQAAAADAvSJLYev11193Wr5+/bquXLkiu90uLy8vwhYAAACA+16WZiP866+/nH4uXbqkAwcOqE6dOkyQAQAAAADKYthKT9myZfX++++nueoFAAAAAPejbAtb0o1JM06ePJmduwQAAACAPClLz2z98MMPTsvGGJ06dUofffSRnnjiiWwpDAAAAADysiyFrVatWjkt22w2FStWTA0bNtT48eOzoy4AAAAAyNOyFLZSUlKyuw4AAAAAuKdk6zNbAAAAAIAbsnRlq3///hnuO2HChKwcAgAAAADytCyFre3bt2v79u26fv26ypcvL0n67bff5Orqqho1ajj62Wy27KkSAAAAAPKYLIWtFi1aqECBApo1a5YKFSok6cYXHXfv3l1169bVgAEDsrVIAAAAAMhrsvTM1vjx4zVmzBhH0JKkQoUKafTo0cxGCAAAAADKYtiKj4/XmTNn0rSfOXNGFy9evOOiAAAAACCvy1LYat26tbp3766FCxfq+PHjOn78uL799lv16NFDbdq0ye4aAQAAACDPydIzW9OnT9fAgQP1/PPP6/r16zd25OamHj166MMPP8zWAgEAAAAgL8pS2PLy8tLHH3+sDz/8UIcPH5YklS5dWt7e3tlaHAAAAADkVXf0pcanTp3SqVOnVLZsWXl7e8sYk111AQAAAECelqWw9eeff6pRo0YqV66cmjVrplOnTkmSevTowbTvAAAAAKAshq033nhD+fLlU0xMjLy8vBztzz33nJYtW5ZtxQEAAABAXpWlZ7ZWrFih5cuXq0SJEk7tZcuW1e+//54thQEAAABAXpalK1uXL192uqKV6ty5c3J3d7/jogAAAAAgr8tS2Kpbt66++OILx7LNZlNKSorGjh2rBg0aZFtxAAAAAJBXZek2wrFjx6pRo0baunWrEhMTNXjwYO3Zs0fnzp3Thg0bsrtGAAAAAMhzsnRlq0qVKvrtt99Up04dtWzZUpcvX1abNm20fft2lS5dOrtrBAAAAIA8J9NXtq5fv64mTZpo+vTpeuutt6yoCQAAAADyvExf2cqXL5927txpRS0AAAAAcM/I0m2EnTt31meffZbdtQAAAADAPSNLE2QkJSXp888/18qVK1WzZk15e3s7rZ8wYUK2FAcAAAAAeVWm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CxbUc889p0ceeUQNGjTQvn37JElz585Vvnz51KZNmzTbubm5KSAgQEFBQapatapee+01/fzzz9q9e7c++OADR7+EhAQNHDhQxYsXl7e3t2rXrq21a9c67WvDhg2qX7++vLy8VKhQIYWHh+uvv/6SJNWvX199+vRRv379VLRoUYWHh0uSdu/eraZNmyp//vzy9/fXCy+8oLNnzzr2uWzZMtWpU0e+vr4qUqSInn76aR0+fNixPjExUX369FFgYKA8PDwUHBysMWPGONafP39eL774oooVKyYfHx81bNhQO3bsuPMXHACQ7QhbAIBcqWzZsrpy5Yq2b9+uc+fO6ddff1W1atX0119/adiwYfroo48yvK8KFSqoadOmWrhwoaOtT58+ioqK0rx587Rz5061b99eTZo00cGDByVJ0dHRatSokSpVqqSoqCitX79eLVq0UHJysmMfs2bNkt1u14YNGzR9+nSdP39eDRs21MMPP6ytW7dq2bJliouL07PPPuvY5vLly+rfv7+2bt2qVatWycXFRa1bt1ZKSookacqUKfrhhx/09ddf68CBA5ozZ45KlSrl2L59+/Y6ffq0fvrpJ23btk01atRQo0aNdO7cuay+1AAAi9iMMSaniwAAID3fffedhg8frqtXr6pz584aMWKEevTooapVq6pGjRp6/fXXdf36dY0YMULt2rXTiBEj9P333ys6OjrNvt58801NmTJFV65cUUxMjB588EHFxMQoKCjI0ScsLEyPPvqo3nvvPT3//POKiYnR+vXr062tfv36io+P1//+9z9H2+jRo/XLL79o+fLljrbjx4+rZMmSOnDggMqVK5dmP2fPnlWxYsW0a9cuValSRX379tWePXu0cuVK2Ww2p77r169X8+bNdfr0abm7uzvay5Qpo8GDB6tnz54Zfm0BANZzy+kCAAC4ldatW6t169aO5Z9//lk7d+7U1KlTVaZMGc2dO1cBAQF69NFHVa9evdvuyxjjCC+7du1ScnJymvCTkJCgIkWKSLpxZat9+/a33WfNmjWdlnfs2KE1a9Yof/78afoePnxY5cqV08GDBzV8+HBt3rxZZ8+edVzRiomJUZUqVdStWzc99dRTKl++vJo0aaKnn35ajRs3duz/0qVLjhpTXb161elWRABA7kDYAgDkCQkJCXr11Vf15Zdf6tChQ0pKStKTTz4pSSpXrpw2b9582+337dunkJAQSdKlS5fk6uqqbdu2ydXV1alfalDy9PT8x5q8vb2dli9duqQWLVo4PRuWKjAwUJLUokULBQcH6z//+Y+CgoKUkpKiKlWqOCbYqFGjho4ePaqffvpJK1eu1LPPPquwsDB98803unTpkgIDA9M8WyZJvr6+/1gvAODuImwBAPKE0aNHq0mTJqpRo4a2b9+upKQkx7rr1687PUt1s/3792vZsmUaOnSoJOnhhx9WcnKyTp8+rbp166a7TbVq1bRq1SqNHDkywzXWqFFD3377rUqVKiU3t7T/if3zzz914MAB/ec//3EcN73bFH18fPTcc8/pueeeU7t27dSkSROdO3dONWrUUGxsrNzc3Jye4wIA5E5MkAEAyPX27t2r+fPna9SoUZJuTHjh4uKizz77TEuWLNH+/fv1yCOPSJKSkpIUGxurkydPateuXZo6daqefPJJVa9eXYMGDZJ040pYp06d1KVLFy1cuFBHjx7Vli1bNGbMGC1ZskSSNHToUP3666969dVXtXPnTu3fv1+ffPKJ08yCN+vdu7fOnTunjh076tdff9Xhw4e1fPlyde/eXcnJySpUqJCKFCmiTz/9VIcOHdLq1avTfH/YhAkTNHfuXO3fv1+//fabFixYoICAAPn6+iosLEyhoaFq1aqVVqxYoWPHjmnjxo166623tHXrViteegDAHeDKFgAgVzPGqGfPnpowYYLjtj1PT0/NnDlTvXv3VkJCgj766CMVL15ckrRnzx4FBgbK1dVVBQsWVKVKlTR06FC98sorTpNKzJgxQ6NHj9aAAQN04sQJFS1aVI899piefvppSTcC2YoVK/Tvf/9bjz76qDw9PVW7dm117NjxlrUGBQVpw4YNGjJkiBo3bqyEhAQFBwerSZMmcnFxkc1m07x589S3b19VqVJF5cuX15QpU1S/fn3HPgoUKKCxY8fq4MGDcnV11SOPPKKlS5fKxeXGv48uXbpUb731lrp3764zZ84oICBA9erVk7+/f3a/9ACAO8RshAAAAABgAW4jBAAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALDA/wfSv3oALo3L8AAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

num_small_dealloc

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0json.lean9202546592724567247086.041369
1root.lean6413983663512302211482.492264
2./././UserAttr/Tst.lean17273116828034510072374.702660
3./././UserAttr/Tst.lean17277596828034510027574.696098
4./././Main.lean6248962403122177822673.996493
..................
2959splitIssue.lean3572502916821-2655681-289.661886
2960./././UserAttr/Tst.lean68787821722958-5155824-299.242582
2961./././UserAttr/Tst.lean68787821722507-5156275-299.347114
2962root.lean3690854636775-3054079-479.616662
2963json.lean6657402911659-5745743-630.251333
\n", + "

2964 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse absolute_diff \\\n", + "0 json.lean 920254 6592724 5672470 \n", + "1 root.lean 641398 3663512 3022114 \n", + "2 ./././UserAttr/Tst.lean 1727311 6828034 5100723 \n", + "3 ./././UserAttr/Tst.lean 1727759 6828034 5100275 \n", + "4 ./././Main.lean 624896 2403122 1778226 \n", + "... ... ... ... ... \n", + "2959 splitIssue.lean 3572502 916821 -2655681 \n", + "2960 ./././UserAttr/Tst.lean 6878782 1722958 -5155824 \n", + "2961 ./././UserAttr/Tst.lean 6878782 1722507 -5156275 \n", + "2962 root.lean 3690854 636775 -3054079 \n", + "2963 json.lean 6657402 911659 -5745743 \n", + "\n", + " %Decrease \n", + "0 86.041369 \n", + "1 82.492264 \n", + "2 74.702660 \n", + "3 74.696098 \n", + "4 73.996493 \n", + "... ... \n", + "2959 -289.661886 \n", + "2960 -299.242582 \n", + "2961 -299.347114 \n", + "2962 -479.616662 \n", + "2963 -630.251333 \n", + "\n", + "[2964 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAIjCAYAAAD1OgEdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZFElEQVR4nO3dd3gU5f7//9cmYTcFktDSAEPoHQQEo4A0CUVsFFGRclBAQURQkKMgTREQUBDh4zkKKtjwoCggHUQgICChg1SjQILUhJaQ7P37w1/265KAScikwPNxXblgZu6Zec/cm2RfmZl7bcYYIwAAAABAjvLI6wIAAAAA4FZE2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAoDbyMiRI2Wz2XJlX02bNlXTpk1d02vWrJHNZtPXX3+dK/vv0aOHypYtmyv7ulZ8fLw6duyo4sWLy2az6Z133smTOpA5aa/NNWvWuObl5Ovn2u8FK1y7j6NHj8pms2n27NmW7hfAjRG2AGTJsWPH1K5dO/n7+6tatWr6/vvv07WZP3++goKCdP78+XTLmjZtKpvNJpvNJg8PD/n7+6ty5cp66qmntHz58tw4hFvG7NmzXefSZrPJ29tbYWFhioqK0tSpU5WYmJgj+zl+/LhGjhypmJiYHNleTsqvtb344otaunSphg0bpk8//VStW7fO65IAAHnAK68LAFCwdO/eXceOHdP48eO1fv16derUSfv27XP9BfjKlSt66aWXNHbsWAUEBGS4jdKlS2vcuHGSpIsXL+rgwYOaP3++5syZo86dO2vOnDkqVKhQbh1SgTd69GhFRETo6tWriouL05o1azRw4EBNnjxZ3333nWrVquVq+9prr+mVV17J0vaPHz+uUaNGqWzZsqpTp06m11u2bFmW9pMdN6rtP//5j5xOp+U1ZGTVqlV66KGH9NJLL+XJ/gEA+QNhC0CmXb58WatWrdKaNWvUpEkT9e3bVxs2bNDSpUvVp08fSdLbb7+tgIAAPf3009fdTkBAgLp27eo276233tKAAQP0/vvvq2zZsho/frylx/J3Fy9elJ+fX67tL6e1adNG9evXd00PGzZMq1at0gMPPKAHH3xQe/fulY+PjyTJy8tLXl7W/ui/dOmSfH19ZbfbLd3PP8nLwH7y5EkFBgbm2PauXLkiu90uDw9uSAGAgoSf2gAy7cqVKzLGqGjRopIkm82mwMBAXbp0SdJftxi+9dZbevfdd7P8ptDT01NTp05VtWrV9N5776W7BXHOnDmqV6+efHx8VKxYMXXp0kW///57uu1s2rRJbdu2VdGiReXn56datWrp3XffdS3v0aOHChcurEOHDqlt27YqUqSInnzySUmS0+nUO++8o+rVq8vb21vBwcHq06ePzp4967aPBQsWqF27dgoLC5PD4VD58uU1ZswYpaamurU7cOCAOnTooJCQEHl7e6t06dLq0qVLto8tK5o3b67hw4frt99+05w5c1zzM3pma/ny5WrUqJECAwNVuHBhVa5cWf/+978l/fUsy1133SVJ6tmzp+uWxbTnQJo2baoaNWpo69atatKkiXx9fV3rXu85ldTUVP373/9WSEiI/Pz89OCDD6Y73rJly6pHjx7p1v37Nv+ptoyeubl48aIGDx6sMmXKyOFwqHLlynr77bdljHFrZ7PZ1L9/f3377beqUaOGHA6HqlevriVLlmR8wv9/abd2GmM0ffp0V01pDh8+rE6dOqlYsWLy9fXV3XffrUWLFrltI+35oS+++EKvvfaaSpUqJV9fXyUkJGS4z7Rnc95++2198MEHKl++vBwOh+666y5t3rz5uufv7649V3/f5vTp01WuXDn5+vqqVatW+v3332WM0ZgxY1S6dGn5+PjooYce0pkzZ254bq6VmJiogQMHqmzZsnI4HAoKCtL999+vX375xa3eGjVqaMeOHbrvvvvk6+urChUquJ77+/HHH9WwYUP5+PiocuXKWrFihds+fvvtNz333HOqXLmyfHx8VLx4cXXq1ElHjx7NUq1ZkdYHPj4+atCggX766acM2yUlJen1119XhQoV5HA4VKZMGQ0ZMkRJSUlu7WbNmqXmzZsrKChIDodD1apV04wZM7Jd36pVq9S4cWP5+fkpMDBQDz30kPbu3Zuu3bFjx9SrVy/Xz7mIiAg9++yzSk5Ozva+gdsRV7YAZFrRokVVvnx5vfnmm3rzzTe1YcMGxcTEaNq0aZKkIUOGqE2bNmrSpEm2tu/p6anHH39cw4cP17p169SuXTtJ0htvvKHhw4erc+fOevrpp/Xnn39q2rRpatKkibZt2+a6grB8+XI98MADCg0N1QsvvKCQkBDt3btXCxcu1AsvvODaT0pKiqKiotSoUSO9/fbb8vX1lST16dNHs2fPVs+ePTVgwAAdOXJE7733nrZt26b169e7rpTMnj1bhQsX1qBBg1S4cGGtWrVKI0aMUEJCgiZOnChJSk5OVlRUlJKSkvT8888rJCREx44d08KFC3Xu3DnXLZaZPbbseOqpp/Tvf/9by5Yt0zPPPJNhm927d+uBBx5QrVq1NHr0aDkcDh08eFDr16+XJFWtWlWjR4/WiBEj1Lt3bzVu3FiSdM8997i2cfr0abVp00ZdunRR165dFRwcfMO63njjDdlsNg0dOlQnT57UO++8o5YtWyomJsZ1BS4zMlPb3xlj9OCDD2r16tXq1auX6tSpo6VLl+rll1/WsWPHNGXKFLf269at0/z58/Xcc8+pSJEimjp1qjp06KDY2FgVL148w300adJEn376qZ566indf//96tatm2tZfHy87rnnHl26dEkDBgxQ8eLF9fHHH+vBBx/U119/rUceecRtW2PGjJHdbtdLL72kpKSkf7xS+NlnnykxMVF9+vSRzWbThAkT9Oijj+rw4cPZvso3d+5cJScn6/nnn9eZM2c0YcIEde7cWc2bN9eaNWs0dOhQHTx4UNOmTdNLL72kjz76KNPb7tu3r77++mv1799f1apV0+nTp7Vu3Trt3btXdevWdbU7e/asHnjgAXXp0kWdOnXSjBkz1KVLF82dO1cDBw5U37599cQTT2jixInq2LGjfv/9dxUpUkSStHnzZm3YsEFdunRR6dKldfToUc2YMUNNmzbVnj17XN/7OeXDDz9Unz59dM8992jgwIE6fPiwHnzwQRUrVkxlypRxtXM6nXrwwQe1bt069e7dW1WrVtXOnTs1ZcoU/frrr/r2229dbWfMmKHq1avrwQcflJeXl77//ns999xzcjqd6tevX5bqW7Fihdq0aaNy5cpp5MiRunz5sqZNm6Z7771Xv/zyiytwHz9+XA0aNNC5c+fUu3dvValSRceOHdPXX3+tS5cu5flVa6BAMQCQBStXrjRFixY1kowkM3DgQGOMMevXrzc+Pj7m6NGjN1z/vvvuM9WrV7/u8m+++cZIMu+++64xxpijR48aT09P88Ybb7i127lzp/Hy8nLNT0lJMRERESY8PNycPXvWra3T6XT9v3v37kaSeeWVV9za/PTTT0aSmTt3rtv8JUuWpJt/6dKldHX36dPH+Pr6mitXrhhjjNm2bZuRZObNm3fdY83ssV3PrFmzjCSzefPm67YJCAgwd955p2v69ddfN3//0T9lyhQjyfz555/X3cbmzZuNJDNr1qx0y+677z4jycycOTPDZffdd59revXq1UaSKVWqlElISHDN/+qrr9z63BhjwsPDTffu3f9xmzeqrXv37iY8PNw1/e233xpJZuzYsW7tOnbsaGw2mzl48KBrniRjt9vd5m3fvt1IMtOmTUu3r2tJMv369XObN3DgQCPJ/PTTT655iYmJJiIiwpQtW9akpqYaY/7feSpXrlyGr7VrHTlyxEgyxYsXN2fOnHHNX7BggZFkvv/+e9e8a89fmmvPVdo2S5Ysac6dO+eaP2zYMCPJ1K5d21y9etU1//HHHzd2u931+s+MgICAdOfoWmmvr88++8w1b9++fUaS8fDwMBs3bnTNX7p0abrXQkbnLzo62kgyn3zyiWte2jlfvXq1a9615+SfJCcnm6CgIFOnTh2TlJTkmv/BBx8YSW7n/dNPPzUeHh5urwVjjJk5c6aRZNavX3/DY4iKijLlypVzm3dt36b14d/PR506dUxQUJA5ffq0a9727duNh4eH6datm2tet27djIeHR4Y/W/7+8xTAP+M2QgBZ0rx5c8XGxmrjxo2KjY3VlClT5HQ6NWDAAA0ePFjh4eGaMWOGqlSposqVK2vmzJlZ2n7hwoUlyTWS3vz58+V0OtW5c2edOnXK9RUSEqKKFStq9erVkqRt27bpyJEjGjhwYLqrQRkNdf7ss8+6Tc+bN08BAQG6//773fZTr149FS5c2LUfSW5XXxITE3Xq1Ck1btxYly5d0r59+yTJdeVq6dKlrtssr5XZY7sZhQsXvuGohGnnasGCBdkeTMLhcKhnz56Zbt+tWzfXlQdJ6tixo0JDQ7V48eJs7T+zFi9eLE9PTw0YMMBt/uDBg2WM0Q8//OA2v2XLlipfvrxrulatWvL399fhw4ezvf8GDRqoUaNGrnmFCxdW7969dfToUe3Zs8etfffu3bN0pe+xxx5z3eIryXWlL7v1SlKnTp3cBrpp2LChJKlr165uz/41bNhQycnJOnbsWKa3HRgYqE2bNun48eM3bFe4cGF16dLFNV25cmUFBgaqatWqrnr+Xtvfj/fv5+/q1as6ffq0KlSooMDAQLfbFXPCli1bdPLkSfXt29ftyk+PHj3SDRY0b948Va1aVVWqVHH73m/evLkkXffnzfnz53Xq1Cndd999Onz4cIYjvl7PiRMnFBMTox49eqhYsWKu+bVq1dL999/v+v5zOp369ttv1b59e7dnQdPk1kdHALcKbiMEkGWFCxd2e5Mza9YsxcXF6ZVXXtGKFSv08ssva86cObLZbHriiSdUuXJlNWvWLFPbvnDhgiS53owfOHBAxhhVrFgxw/Zpt0cdOnRIklSjRo1/3IeXl5dKly7tNu/AgQM6f/68goKCMlzn5MmTrv/v3r1br732mlatWpXuOZq0Nz8REREaNGiQJk+erLlz56px48Z68MEH1bVrV9cbr8we2824cOHCdY9J+usN+n//+189/fTTeuWVV9SiRQs9+uij6tixY6afuytVqlSWbiu69nhtNpsqVKhg6XM00l/P74SFhbkFPemv2xHTlv/dHXfckW4bRYsWTfcMX1b2//fvm4z2//fXb0RERJa2f229acEru/VmtM201+7fb4n7+/ys7GvChAnq3r27ypQpo3r16qlt27bq1q2bypUr59audOnS6d7gBwQEZKqGy5cva9y4cZo1a5aOHTvm9mxeVoJKZqS9fq59fRcqVCjdMR04cEB79+5VyZIlM9zW33/erF+/Xq+//rqio6PT/eHm/Pnz1x319Xr1Va5cOd2yqlWraunSpbp48aIuXLighISETP0sBfDPCFsAbkpCQoJeffVVvf322/Lz89Pnn3+ujh076uGHH5b011WLuXPnZjps7dq1S5JUoUIFSX/9ldVms+mHH36Qp6dnuvZpV8KywuFwpAsSTqdTQUFBmjt3bobrpL0pOnfunO677z75+/tr9OjRKl++vLy9vfXLL79o6NChbleHJk2apB49emjBggVatmyZBgwYoHHjxmnjxo0qXbq0Jcf2d3/88YfOnz/vOpcZ8fHx0dq1a7V69WotWrRIS5Ys0ZdffqnmzZtr2bJlGdaV0TZy2vX+ep6ampqpmnLC9fZjrhlMwypZPa+ZqTdt8I5rXTu4yz9tMyfOTefOndW4cWN98803WrZsmSZOnKjx48dr/vz5atOmTY7U8Pzzz2vWrFkaOHCgIiMjFRAQIJvNpi5duuTZxwJIf/28qVmzpiZPnpzh8rQgeejQIbVo0UJVqlTR5MmTVaZMGdntdi1evNh1VwGA/I2wBeCmpH3GU9qIfsePH9edd97pWh4WFpbpD5xNTU3VZ599Jl9fX9etVuXLl5cxRhEREapUqdJ110273WvXrl1q2bJllo+jfPnyWrFihe69994bvslds2aNTp8+rfnz57sNBHLkyJEM29esWVM1a9bUa6+9pg0bNujee+/VzJkzNXbs2EwfW3Z9+umnkqSoqKgbtvPw8FCLFi3UokULTZ48WW+++aZeffVVrV69Wi1btszx24YOHDjgNm2M0cGDB90+D6xo0aI6d+5cunV/++03t6sEWaktPDxcK1asUGJiotvVrbRbP8PDwzO9rewIDw/X/v37083Prf1Lf53XjG4rvPaqXm4JDQ3Vc889p+eee04nT55U3bp19cYbb7iFrZvx9ddfq3v37po0aZJr3pUrVzJ8bd2stP47cOCA63ZA6a/bF48cOaLatWu75pUvX17bt29XixYtbvga/v7775WUlKTvvvvO7Spjdm4xTqvveq/BEiVKyM/PTz4+PvL393f94QvAzeGZLQDZ9uuvv+q9997Tu+++63rDEBwc7HrzKEl79+5VSEjIP24rNTVVAwYM0N69ezVgwAD5+/tLkh599FF5enpq1KhR6f5qbozR6dOnJUl169ZVRESE3nnnnXRvpDLz1/bOnTsrNTVVY8aMSbcsJSXFtc20v6b/fZvJycl6//333dZJSEhQSkqK27yaNWvKw8PDNbRzZo8tO1atWqUxY8a4BeGMZDRcd9qHA6fVmfYZZDn1BvWTTz5xe47s66+/1okTJ9zeYJcvX14bN250G2Z64cKF6YaIz0ptbdu2VWpqqt577z23+VOmTJHNZsuxN/g32v/PP/+s6Oho17yLFy/qgw8+UNmyZVWtWjVL9y/9dV737dunP//80zVv+/btrtEnc0tqamq62/iCgoIUFhaWbujzm+Hp6Znue2vatGnXvZJ3M+rXr6+SJUtq5syZbq/b2bNnp3t9du7cWceOHdN//vOfdNu5fPmyLl686KpfUrrbH2fNmpXl+kJDQ1WnTh19/PHHbvXs2rVLy5YtU9u2bSX99ceXhx9+WN9//722bNmSbju5dWUXuFVwZQtAtr344ot67LHH1KBBA9e8jh076qGHHnJ91tL333+vhQsXuq13/vx512c/Xbp0SQcPHtT8+fN16NAhdenSxS3wlC9fXmPH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AMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAJ5GrbGjRunu+66S0WKFFFQUJAefvhh7d+/363NlStX1K9fPxUvXlyFCxdWhw4dFB8f79YmNjZW7dq1k6+vr4KCgvTyyy8rJSXFrc2aNWtUt25dORwOVahQQbNnz7b68AAAAADcxvI0bP3444/q16+fNm7cqOXLl+vq1atq1aqVLl686Grz4osv6vvvv9e8efP0448/6vjx43r00Uddy1NTU9WuXTslJydrw4YN+vjjjzV79myNGDHC1ebIkSNq166dmjVrppiYGA0cOFBPP/20li5dmqvHCwAAAOD24ZWXO1+yZInb9OzZsxUUFKStW7eqSZMmOn/+vD788EN99tlnat68uSRp1qxZqlq1qjZu3Ki7775by5Yt0549e7RixQoFBwerTp06GjNmjIYOHaqRI0fKbrdr5syZioiI0KRJkyRJVatW1bp16zRlyhRFRUXl+nEDAAAAuPXladi61vnz5yVJxYoVkyRt3bpVV69eVcuWLV1tqlSpojvuuEPR0dG6++67FR0drZo1ayo4ONjVJioqSs8++6x2796tO++8U9HR0W7bSGszcODADOtISkpSUlKSazohIUGSlJKSku72RAAAANy6nE6n7Ha7PGRkc6Zmej0PGdntdjmdTt4/3mKy0p/5Jmw5nU4NHDhQ9957r2rUqCFJiouLk91uV2BgoFvb4OBgxcXFudr8PWilLU9bdqM2CQkJunz5snx8fNyWjRs3TqNGjUpX45YtW+Tn55f9gwQAAECBkpiYqOHDh6uU9xU5/tyT6fWCvK9o+PDhOnXqlDZt2mRhhchtf3/k6Z/km7DVr18/7dq1S+vWrcvrUjRs2DANGjTINZ2QkKAyZcqofv368vf3z8PKAAAAkJtiYmI0ZswY9Z21SGHh1TK93vH9OzVzzBitX79ederUsa5A5Lq0u94yI1+Erf79+2vhwoVau3atSpcu7ZofEhKi5ORknTt3zu3qVnx8vEJCQlxtfv75Z7ftpY1W+Pc2145gGB8fL39//3RXtSTJ4XDI4XCkm+/l5SUvr3xxygAAAJALPDw8lJycLKdsMh6emV7PKZuSk5Pl4eHB+8dbTFb6M09HIzTGqH///vrmm2+0atUqRUREuC2vV6+eChUqpJUrV7rm7d+/X7GxsYqMjJQkRUZGaufOnTp58qSrzfLly+Xv769q1aq52vx9G2lt0rYBAAAAADktT2N2v3799Nlnn2nBggUqUqSI6xmrgIAA+fj4KCAgQL169dKgQYNUrFgx+fv76/nnn1dkZKTuvvtuSVKrVq1UrVo1PfXUU5owYYLi4uL02muvqV+/fq6rU3379tV7772nIUOG6F//+pdWrVqlr776SosWLcqzYwcAAABwa8vTK1szZszQ+fPn1bRpU4WGhrq+vvzyS1ebKVOm6IEHHlCHDh3UpEkThYSEaP78+a7lnp6eWrhwoTw9PRUZGamuXbuqW7duGj16tKtNRESEFi1apOXLl6t27dqaNGmS/vvf/zLsOwAAAADL5OmVLWPMP7bx9vbW9OnTNX369Ou2CQ8P1+LFi2+4naZNm2rbtm1ZrhEAAAAAsiNPr2wBAAAAwK2KsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGCBbIWtw4cP53QdAAAAAHBLyVbYqlChgpo1a6Y5c+boypUrOV0TAAAAABR42Qpbv/zyi2rVqqVBgwYpJCREffr00c8//5zTtQEAAABAgZWtsFWnTh29++67On78uD766COdOHFCjRo1Uo0aNTR58mT9+eefOV0nAAAAABQoNzVAhpeXlx599FHNmzdP48eP18GDB/XSSy+pTJky6tatm06cOJFTdQIAAABAgXJTYWvLli167rnnFBoaqsmTJ+ull17SoUOHtHz5ch0/flwPPfRQTtUJAAAAAAWKV3ZWmjx5smbNmqX9+/erbdu2+uSTT9S2bVt5ePyV3SIiIjR79myVLVs2J2sFAAAAgAIjW2FrxowZ+te//qUePXooNDQ0wzZBQUH68MMPb6o4AAAAACioshW2Dhw48I9t7Ha7unfvnp3NAwAAAECBl61ntmbNmqV58+almz9v3jx9/PHHN10UAAAAABR02Qpb48aNU4kSJdLNDwoK0ptvvnnTRQEAAABAQZetsBUbG6uIiIh088PDwxUbG3vTRQEAAABAQZetsBUUFKQdO3akm799+3YVL178posCAAAAgIIuW2Hr8ccf14ABA7R69WqlpqYqNTVVq1at0gsvvKAuXbrkdI0AAAAAUOBkazTCMWPG6OjRo2rRooW8vP7ahNPpVLdu3XhmCwAAAACUzbBlt9v15ZdfasyYMdq+fbt8fHxUs2ZNhYeH53R9AAAAAFAgZStspalUqZIqVaqUU7UAAAAAwC0jW2ErNTVVs2fP1sqVK3Xy5Ek5nU635atWrcqR4gAAAACgoMpW2HrhhRc0e/ZstWvXTjVq1JDNZsvpugAAAACgQMtW2Priiy/01VdfqW3btjldDwAAAADcErI19LvdbleFChVyuhYAAAAAuGVkK2wNHjxY7777rowxOV0PAAAAANwSsnUb4bp167R69Wr98MMPql69ugoVKuS2fP78+TlSHAAAAAAUVNkKW4GBgXrkkUdyuhYAAAAAuGVk6zbCWbNm3fArs9auXav27dsrLCxMNptN3377rdvyHj16yGazuX21bt3arc2ZM2f05JNPyt/fX4GBgerVq5cuXLjg1mbHjh1q3LixvL29VaZMGU2YMCE7hw0AAAAAmZatsCVJKSkpWrFihf7v//5PiYmJkqTjx4+nCzo3cvHiRdWuXVvTp0+/bpvWrVvrxIkTrq/PP//cbfmTTz6p3bt3a/ny5Vq4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21StWtW8+eabrjeVabZv324aNWpkHA6HKVWqlHnrrbfSbeurr74ylSpVMna73VSvXt0sWrQotw7jlpRR2DKGvrDajh07TLNmzUyxYsWMw+EwZcuWNX379jV//PGHWzv6wVqzZs0ykjL8+jv6IXd07949w75YvXq1qw2/r/PGtGnTzB133GHsdrtp0KCB2bhxY16XdEtZvXp1hq/97t27G2P+Gv59+PDhJjg42DgcDtOiRQuzf/9+t22cPn3aPP7446Zw4cLG39/f9OzZ0/WHipxkM4YniwEAAAAgpzEaIQAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAyLfmzp2rMmXKqGjRoho0aJDbsqNHj6pSpUpKSEhwzRs5cqRsNptsNpu8vLxUokQJNWnSRO+8846SkpJyu3wAwG2OsAUAyJdOnTqlp59+Wm+//baWLVumOXPmaOHCha7lzz33nN566y35+/u7rVe9enWdOHFCsbGxWr16tTp16qRx48bpnnvuUWJiomX1JicnW7ZtAEDBRNgCAORLhw8fVkBAgB577DHdddddatasmfbu3StJ+vzzz1WoUCE9+uij6dbz8vJSSEiIwsLCVLNmTT3//PP68ccftWvXLo0fP97VLikpSS+99JJKlSolPz8/NWzYUGvWrHHb1vr169W0aVP5+vqqaNGiioqK0tmzZyVJTZs2Vf/+/TVw4ECVKFFCUVFRkqRdu3apTZs2Kly4sIKDg/XUU0/p1KlTrm0uWbJEjRo1UmBgoIoXL64HHnhAhw4dci1PTk5W//79FRoaKm9vb4WHh2vcuHGu5efOndPTTz+tkiVLyt/fX82bN9f27dtv/oQDAHIcYQsAkC9VrFhRly5d0rZt23TmzBlt3rxZtWrV0tmzZzV8+HC99957md5WlSpV1KZNG82fP981r3///oqOjtYXX3yhHTt2qFOnTmrdurUOHDggSYqJiVGLFi1UrVo1RUdHa926dWrfvr1SU1Nd2/j4449lt9u1fv16zZw5U+fOnVPz5s115513asuWLVqyZIni4+PVuXNn1zoXL17UoEGDtGXLFq1cuVIeHh565JFH5HQ6JUlTp07Vd999p6+++kr79+/X3LlzVbZsWdf6nTp10smTJ/XDDz9o69atqlu3rlq0aKEzZ85k91QDACxiM8aYvC4CAICMfPPNNxoxYoQuX76srl27auTIkerVq5dq1qypunXr6oUXXtDVq1c1cuRIdezYUSNHjtS3336rmJiYdNt65ZVXNHXqVF26dEmxsbEqV66cYmNjFRYW5mrTsmVLNWjQQG+++aaeeOIJxcbGat26dRnW1rRpUyUkJOiXX35xzRs7dqx++uknLV261DXvjz/+UJkyZbR//35VqlQp3XZOnTqlkiVLaufOnapRo4YGDBig3bt3a8WKFbLZbG5t161bp3bt2unkyZNyOByu+RUqVNCQIUPUu3fvTJ9bAID1vPK6AAAArueRRx7RI4884pr+8ccftWPHDk2bNk0VKlTQ559/rpCQEDVo0EBNmjS54baMMa7wsnPnTqWmpqYLP0lJSSpevLikv65sderU6YbbrFevntv09u3btXr1ahUuXDhd20OHDqlSpUo6cOCARowYoU2bNunUqVOuK1qxsbGqUaOGevToofvvv1+VK1dW69at9cADD6hVq1au7V+4cMFVY5rLly+73YoIAMgfCFsAgAIhKSlJzz33nD799FMdPHhQKSkpuu+++yRJlSpV0qZNm264/t69exURESFJunDhgjw9PbV161Z5enq6tUsLSj4+Pv9Yk5+fn9v0hQsX1L59e7dnw9KEhoZKktq3b6/w8HD95z//UVhYmJxOp2rUqOEaYKNu3bo6cuSIfvjhB61YsUKdO3dWy5Yt9fXXX+vChQsKDQ1N92yZJAUGBv5jvQCA3EXYAgAUCGPHjlXr1q1Vt25dbdu2TSkpKa5lV69edXuW6lr79u3TkiVLNGzYMEnSnXfeqdTUVJ08eVKNGzfOcJ1atWpp5cqVGjVqVKZrrFu3rv73v/+pbNmy8vJK/yv29OnT2r9/v/7zn/+49pvRbYr+/v567LHH9Nhjj6ljx45q3bq1zpw5o7p16youLk5eXl5uz3EBAPInBsgAAOR7e/bs0ZdffqnRo0dL+mvACw8PD3344YdatGiR9u3bp7vuukuSlJKSori4OB0/flw7d+7UtGnTdN9996lOnTp6+eWXJf11JezJJ59Ut27dNH/+fB05ckQ///yzxo0bp0WLFkmShg0bps2bN+u5557Tjh07tG/fPs2YMcNtZMFr9evXT2fOnNHjjz+uzZs369ChQ1q6dKl69uyp1NRUFS1aVMWLF9cHH3yggwcPatWqVek+P2zy5Mn6/PPPtW/fPv3666+aN2+eQkJCFBgYqJYtWyoyMlIPP/ywli1bpqNHj2rDhg169dVXtWXLFitOPQDgJnBlCwCQrxlj1Lt3b02ePNl1256Pj49mz56tfv36KSkpSe+9955KlSolSdq9e7dCQ0Pl6empgIAAVatWTcOGDdOzzz7rNqjErFmzNHbsWA0ePFjHjh1TiRIldPfdd+uBBx6Q9FcgW7Zsmf7973+rQYMG8vHxUcOGDfX4449ft9awsDCtX79eQ4cOVatWrZSUlKTw8HC1bt1aHh4estls+uKLLzRgwADVqFFDlStX1tSpU9W0aVPXNooUKaIJEybowIED8vT01F133aXFixfLw+Ovv48uXrxYr776qnr27Kk///xTISEhatKkiYKDg3P61AMAbhKjEQIAAACABbiNEAAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAC/x8lEvVHUb3+kQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

c_file_size

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
FileValue_reuseValue_no_reuseabsolute_diff%Decrease
0./././UserAttr/Tst.lean2021499054788495.950306
1./././UserAttr/Tst.lean2021499054788495.950306
2./././UserAttr.lean1140116031046390.174955
3./././UserAttr/BlaAttr.lean6104455423943886.596987
4./././Main.lean3413181601474781.205947
..................
1191./././UserAttr/Tst.lean494582021-47437-2347.204354
1192./././UserAttr/Tst.lean494582021-47437-2347.204354
1193./././Prv.lean000NaN
1194./././TestExtern.lean000NaN
1195./././X.lean000NaN
\n", + "

1196 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " File Value_reuse Value_no_reuse absolute_diff \\\n", + "0 ./././UserAttr/Tst.lean 2021 49905 47884 \n", + "1 ./././UserAttr/Tst.lean 2021 49905 47884 \n", + "2 ./././UserAttr.lean 1140 11603 10463 \n", + "3 ./././UserAttr/BlaAttr.lean 6104 45542 39438 \n", + "4 ./././Main.lean 3413 18160 14747 \n", + "... ... ... ... ... \n", + "1191 ./././UserAttr/Tst.lean 49458 2021 -47437 \n", + "1192 ./././UserAttr/Tst.lean 49458 2021 -47437 \n", + "1193 ./././Prv.lean 0 0 0 \n", + "1194 ./././TestExtern.lean 0 0 0 \n", + "1195 ./././X.lean 0 0 0 \n", + "\n", + " %Decrease \n", + "0 95.950306 \n", + "1 95.950306 \n", + "2 90.174955 \n", + "3 86.596987 \n", + "4 81.205947 \n", + "... ... \n", + "1191 -2347.204354 \n", + "1192 -2347.204354 \n", + "1193 NaN \n", + "1194 NaN \n", + "1195 NaN \n", + "\n", + "[1196 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAIjCAYAAAD1OgEdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABRRElEQVR4nO3dd3gUVf/+8Xs3IRVSKEkIYIhIkSZNiiI1EooFBAEFBUSwgIhBER4FgaBUkQ4PPhosCIpiQ+mgKE1AgkgTEIyUJCAl1IRkz+8PftkvSwCTkCEJeb+uK9fFnDln5jPLsNmbmTlrM8YYAQAAAABylD23CwAAAACAWxFhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAJCrhg0bJpvNdlP21aRJEzVp0sS5/MMPP8hms+nzzz+/Kfvv3r27ypYte1P2daWEhAR16NBBxYoVk81m08SJE3OljqxavHixatSoIS8vL9lsNp08efKqr6PNZtOwYcNypca8sH8AeRNhC0C+d+jQIbVp00Z+fn6qXLmyvv322wx9FixYoKCgIJ06dSrDuiZNmshms8lms8lut8vPz08VK1bUE088oWXLlt2MQ7hlzJ492/la2mw2eXl5KTQ0VJGRkZo8ebJOnz6dI/s5fPiwhg0bptjY2BzZXk7Kq7W99NJLWrJkiQYPHqyPPvpILVu2zO2S/tU///yjjh07ytvbW9OmTdNHH30kX1/f3C4LADLNPbcLAIAb1a1bNx06dEhjxozRmjVr9Oijj2rXrl3O//m+cOGCXn75ZY0cOVL+/v5X3Ubp0qU1atQoSdLZs2e1d+9eLViwQB9//LE6duyojz/+WIUKFbpZh5TvjRgxQuHh4bp48aLi4+P1ww8/qH///powYYK++eYbVa9e3dn39ddf16BBg7K0/cOHD2v48OEqW7asatSokelxS5cuzdJ+suN6tb377rtyOByW13A1K1eu1MMPP6yXX345V/afHRs3btTp06cVHR2tiIgIZ3tuvo7Xcv78ebm787EKgCveFQDka+fPn9fKlSv1ww8/qFGjRnr22We1du1aLVmyRM8884wkafz48fL399fTTz99ze34+/ura9euLm2jR49Wv379NH36dJUtW1Zjxoyx9Fgud/bs2Xz9P/itWrVSnTp1nMuDBw/WypUr9cADD+ihhx7Szp075e3tLUlyd3e3/EPquXPn5OPjIw8PD0v3829yM7AnJiYqICAgx7Z34cIFeXh4yG637iaZxMREScpQd178jw8vL6/cLgFAHsRthADytQsXLsgYo8DAQEmXnpsICAjQuXPnJF26xXD06NGaNGlSlj8Uurm5afLkyapcubKmTp2a4RbEjz/+WLVr15a3t7eKFi2qzp076++//86wnQ0bNqh169YKDAyUr6+vqlevrkmTJjnXd+/eXYULF9a+ffvUunVrFSlSRF26dJEkORwOTZw4UVWqVJGXl5eCg4P1zDPP6MSJEy77+Prrr9WmTRuFhobK09NT5cqVU3R0tNLS0lz67dmzR+3bt1dISIi8vLxUunRpde7cOdvHlhXNmjXTkCFD9Ndff+njjz92tl/tma1ly5apYcOGCggIUOHChVWxYkX95z//kXTpOau7775bktSjRw/nLYuzZ8+WdOm20KpVq2rz5s1q1KiRfHx8nGOvfGYrXVpamv7zn/8oJCREvr6+euihhzIcb9myZdW9e/cMYy/f5r/VdrVnjc6ePasBAwaoTJky8vT0VMWKFTV+/HgZY1z62Ww29e3bV1999ZWqVq0qT09PValSRYsXL776C/7/pd/aaYzRtGnTnDWl+/PPP/Xoo4+qaNGi8vHxUf369fXdd9+5bCP92bZ58+bp9ddfV6lSpeTj46OkpKRr7tfhcGjSpEmqVq2avLy8VKJECbVs2VKbNm26br3pmjRpom7dukmS7r77btlsNufrn9ln3w4dOqSnnnpKwcHBztfr/fffz9T+L7dp0yZFRkaqePHi8vb2Vnh4uJ566imXPpc/s3XgwAGX22mv/Lnchg0b1LJlS/n7+8vHx0eNGzfWmjVrslwjgLyJK1sA8rXAwECVK1dOb731lt566y2tXbtWsbGxmjJliiRp4MCBatWqlRo1apSt7bu5uemxxx7TkCFD9PPPP6tNmzaSpDfffFNDhgxRx44d9fTTT+vo0aOaMmWKGjVqpC1btjj/J37ZsmV64IEHVLJkSb344osKCQnRzp07tXDhQr344ovO/aSmpioyMlINGzbU+PHj5ePjI0l65plnNHv2bPXo0UP9+vXT/v37NXXqVG3ZskVr1qxx/g//7NmzVbhwYUVFRalw4cJauXKlhg4dqqSkJI0bN06SlJKSosjISCUnJ+uFF15QSEiIDh06pIULF+rkyZPOWywze2zZ8cQTT+g///mPli5dql69el21z/bt2/XAAw+oevXqGjFihDw9PbV3717nB9A777xTI0aM0NChQ9W7d2/dd999kqR77rnHuY1//vlHrVq1UufOndW1a1cFBwdft64333xTNptNr776qhITEzVx4kRFREQoNjbWeQUuMzJT2+WMMXrooYe0atUq9ezZUzVq1NCSJUv0yiuv6NChQ3rnnXdc+v/8889asGCBnn/+eRUpUkSTJ09W+/btFRcXp2LFil11H40aNdJHH32kJ554Qvfff7+efPJJ57qEhATdc889OnfunPr166dixYrpgw8+0EMPPaTPP/9c7dq1c9lWdHS0PDw89PLLLys5Ofm6Vwp79uyp2bNnq1WrVnr66aeVmpqqn376SevXr3e56nktr732mipWrKhZs2Y5b0stV67cv467/Njq16/vDKklSpTQokWL1LNnTyUlJal///6Z2k5iYqJatGihEiVKaNCgQQoICNCBAwe0YMGCa44pUaKEPvroI5e2ixcv6qWXXnJ5zVauXKlWrVqpdu3aeuONN2S32xUTE6NmzZrpp59+Ut26dTN9vADyKAMA+dyKFStMYGCgkWQkmf79+xtjjFmzZo3x9vY2Bw4cuO74xo0bmypVqlxz/ZdffmkkmUmTJhljjDlw4IBxc3Mzb775pku/bdu2GXd3d2d7amqqCQ8PN2FhYebEiRMufR0Oh/PP3bp1M5LMoEGDXPr89NNPRpKZM2eOS/vixYsztJ87dy5D3c8884zx8fExFy5cMMYYs2XLFiPJzJ8//5rHmtlju5aYmBgjyWzcuPGaffz9/U3NmjWdy2+88Ya5/NfRO++8YySZo0ePXnMbGzduNJJMTExMhnWNGzc2kszMmTOvuq5x48bO5VWrVhlJplSpUiYpKcnZ/tlnn7n8nRtjTFhYmOnWrdu/bvN6tXXr1s2EhYU5l7/66isjyYwcOdKlX4cOHYzNZjN79+51tkkyHh4eLm1bt241ksyUKVMy7OtKkkyfPn1c2vr3728kmZ9++snZdvr0aRMeHm7Kli1r0tLSjDH/9zrdfvvtVz3XrrRy5UojyfTr1y/DusvP/X9zrfPpytfRmEvH98YbbziXe/bsaUqWLGmOHTvm0q9z587G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V6Yvd/To0Uxv68SJExlqvvJ8vJrhw4dryZIlmjt37lVvv6xdu7bKlSun8ePHO29Vzm6NAPIurmwBuKW89NJL6tSpk8uUyR06dNDDDz/s/K6lb7/9VgsXLnQZd+rUKed3P507d0579+7VggULtG/fPnXu3Nkl8JQrV04jR47U4MGDdeDAAbVt21ZFihTR/v379eWXX6p37956+eWXZbfbNWPGDD344IOqUaOGevTooZIlS2rXrl3avn27lixZct1jady4sZ555hmNGjVKsbGxatGihQoVKqQ9e/Zo/vz5mjRpkjp06KB77rlHgYGB6tatm/r16yebzaaPPvoowwfElStXqm/fvnr00UdVoUIFpaam6qOPPnJ+MM3Ksf2bRYsWadeuXUpNTVVCQoJWrlypZcuWKSwsTN988811vwB2xIgRWr16tdq0aaOwsDAlJiZq+vTpKl26tMvVxYCAAM2cOVNFihSRr6+v6tWrl+lniq5UtGhRNWzYUD169FBCQoImTpyoO+64w2V6+qefflqff/65WrZsqY4dO2rfvn36+OOPM0xHnpXaHnzwQTVt2lSvvfaaDhw4oLvuuktLly7V119/rf79+2dpqvPsGDRokObOnatWrVqpX79+Klq0qD744APt379fX3zxRba/sLhp06Z64oknNHnyZO3Zs0ctW7aUw+HQTz/9pKZNm6pv3745fCQZjR49WqtWrVK9evXUq1cvVa5cWcePH9evv/6q5cuXXzXUX80HH3yg6dOnq127dipXrpxOnz6td999V35+fmrduvVVx2zbtk3R0dFq1KiREhMTXb5XTrp0e6Pdbtf//vc/tWrVSlWqVFGPHj1UqlQpHTp0SKtWrZKfn5++/fbbG34dAOSymzz7IQBY5rvvvjOFCxc2hw8fzrBu1KhRJjQ01JQsWdKMGTPGZV36VOHpP4ULFzbly5c3Xbt2NUuXLr3m/r744gvTsGFD4+vra3x9fU2lSpVMnz59zO7du136/fzzz+b+++83RYoUMb6+vqZ69eouU3V369bN+Pr6XnM/s2bNMrVr1zbe3t6mSJEiplq1ambgwIEux7lmzRpTv3594+3tbUJDQ83AgQPNkiVLjCSzatUqY4wxf/75p3nqqadMuXLljJeXlylatKhp2rSpWb58ebaP7UrpU3Wn/3h4eJiQkBBz//33m0mTJrlMr57uyqnfV6xYYR5++GETGhpqPDw8TGhoqHnsscfMH3/84TLu66+/NpUrVzbu7u4uU61fbyr/a039PnfuXDN48GATFBRkvL29TZs2bcxff/2VYfzbb79tSpUqZTw9Pc29995rNm3alGGb16vtalOWnz592rz00ksmNDTUFCpUyJQvX96MGzcuwxTpusrU7cZce0r6K11r/L59+0yHDh1MQECA8fLyMnXr1jULFy506ZP+Ol3vawOulJqaasaNG2cqVapkPDw8TIkSJUyrVq3M5s2bM72NG5n63RhjEhISTJ8+fUyZMmVMoUKFTEhIiGnevLmZNWtWpmv49ddfzWOPPWZuu+024+npaYKCgswDDzxgNm3adM39p79e1/q53JYtW8wjjzxiihUrZjw9PU1YWJjp2LGjWbFiRaZrBJB32Yy5SU/VAgAAAEABwjNbAAAAAGABntkCAAA31alTp3T+/Pnr9snMJDY36ujRo0pLS7vmeg8Pj1z7rjAAtwZuIwQAADdV9+7d9cEHH1y3z834eFK2bNkMXxx9ucaNG+uHH36wvA4Aty7CFgAAuKl27Nihw4cPX7fPzfjuqTVr1lz3CltgYKBq165teR0Abl2ELQAAAACwABNkAAAAAIAFmCAjExwOhw4fPqwiRYrIZrPldjkAAAAAcokxRqdPn1ZoaOi/fvk7YSsTDh8+rDJlyuR2GQAAAADyiL///lulS5e+bh/CViYUKVJE0qUX1M/PL5erAQAAAJBbkpKSVKZMGWdGuB7CViak3zro5+dH2AIAAACQqceLmCADAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsECuhq3Vq1frwQcfVGhoqGw2m7766iuX9cYYDR06VCVLlpS3t7ciIiK0Z88elz7Hjx9Xly5d5Ofnp4CAAPXs2VNnzpxx6fPbb7/pvvvuk5eXl8qUKaOxY8dafWgAAAAACrhcDVtnz57VXXfdpWnTpl11/dixYzV58mTNnDlTGzZskK+vryIjI3XhwgVnny5dumj79u1atmyZFi5cqNWrV6t3797O9UlJSWrRooXCwsK0efNmjRs3TsOGDdOsWbMsPz4AAAAABZfNGGNyuwhJstls+vLLL9W2bVtJl65qhYaGasCAAXr55ZclSadOnVJwcLBmz56tzp07a+fOnapcubI2btyoOnXqSJIWL16s1q1b6+DBgwoNDdWMGTP02muvKT4+Xh4eHpKkQYMG6auvvtKuXbsyVVtSUpL8/f116tQp+fn55fzBAwAAAPlMXFycjh07luVxxYsX12233WZBRTdHVrKB+02qKcv279+v+Ph4RUREONv8/f1Vr149rVu3Tp07d9a6desUEBDgDFqSFBERIbvdrg0bNqhdu3Zat26dGjVq5AxakhQZGakxY8boxIkTCgwMzLDv5ORkJScnO5eTkpIkSampqUpNTbXicAEAAIB84+DBg6pRs6bOnzuX5bHePj6K3bJFpUuXtqAy62UlD+TZsBUfHy9JCg4OdmkPDg52rouPj1dQUJDLend3dxUtWtSlT3h4eIZtpK+7WtgaNWqUhg8fnqF906ZN8vX1zeYRAQAAALeG06dP6+UBAxQUXkGFvH0yPe7i+XNK3P+Hdu3apUOHDllYoXXOnj2b6b55NmzlpsGDBysqKsq5nJSUpDJlyqhOnTrcRggAAIACLzY2VtHR0Xo25juFhlXL9LjDu7dpZnS01qxZoxo1alhXoIXS73rLjDwbtkJCQiRJCQkJKlmypLM9ISHB+RcTEhKixMREl3Gpqak6fvy4c3xISIgSEhJc+qQvp/e5kqenpzw9PTO0u7u7y909z75kAAAAwE1ht9uVkpIih2wydrdMj3PIppSUFNnt9nz7uTordefZ79kKDw9XSEiIVqxY4WxLSkrShg0b1KBBA0lSgwYNdPLkSW3evNnZZ+XKlXI4HKpXr56zz+rVq3Xx4kVnn2XLlqlixYpXvYUQAAAAAHJCroatM2fOKDY2VrGxsZIuTYoRGxuruLg42Ww29e/fXyNHjtQ333yjbdu26cknn1RoaKhzxsI777xTLVu2VK9evfTLL79ozZo16tu3rzp37qzQ0FBJ0uOPPy4PDw/17NlT27dv16effqpJkya53CYIAAAAADktV6/dbdq0SU2bNnUupwegbt26afbs2Ro4cKDOnj2r3r176+TJk2rYsKEWL14sLy8v55g5c+aob9++at68uex2u9q3b6/Jkyc71/v7+2vp0qXq06ePateureLFi2vo0KEu38UFAAAAADktV8NWkyZNdL2v+bLZbBoxYoRGjBhxzT5FixbVJ598ct39VK9eXT/99FO26wQAAACArMqzz2wBAAAAQH5G2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAskKfDVlpamoYMGaLw8HB5e3urXLlyio6OljHG2ccYo6FDh6pkyZLy9vZWRESE9uzZ47Kd48ePq0uXLvLz81NAQIB69uypM2fO3OzDAQAAAFCA5OmwNWbMGM2YMUNTp07Vzp07NWbMGI0dO1ZTpkxx9hk7dqwmT56smTNnasOGDfL19VVkZKQuXLjg7NOlSxdt375dy5Yt08KFC7V69Wr17t07Nw4JAAAAQAHhntsFXM/atWv18MMPq02bNpKksmXLau7cufrll18kXbqqNXHiRL3++ut6+OGHJUkffvihgoOD9dVXX6lz587auXOnFi9erI0bN6pOnTqSpClTpqh169YaP368QkNDM+w3OTlZycnJzuWkpCRJUmpqqlJTUy09ZgAAACCvczgc8vDwkF1GNkdapsfZZeTh4SGHw5FvP1dnpe48HbbuuecezZo1S3/88YcqVKigrVu36ueff9aECRMkSfv371d8fLwiIiKcY/z9/VWvXj2tW7dOnTt31rp16xQQEOAMWpIUEREhu92uDRs2qF27dhn2O2rUKA0fPjxD+6ZNm+Tr62vBkQIAAAD5x+nTpzVkyBCV8rogz6M7Mj0uyOuChgwZomPHjmnDhg0WVmids2fPZrpvng5bgwYNUlJSkipVqiQ3NzelpaXpzTffVJcuXSRJ8fHxkqTg4GCXccHBwc518fHxCgoKclnv7u6uokWLOvtcafDgwYqKinIuJyUlqUyZMqpTp478/Pxy7PgAAACA/Cg2NlbR0dF6NuY7hYZVzvS4w7u3aWZ0tNasWaMaNWpYV6CF0u96y4w8HbY+++wzzZkzR5988omqVKmi2NhY9e/fX6GhoerWrZtl+/X09JSnp2eGdnd3d7m75+mXDAAAALCc3W5XSkqKHLLJ2N0yPc4hm1JSUmS32/Pt5+qs1J2nj/CVV17RoEGD1LlzZ0lStWrV9Ndff2nUqFHq1q2bQkJCJEkJCQkqWbKkc1xCQoIzKYeEhCgxMdFlu6mpqTp+/LhzPAAAAADktDw9G+G5c+dkt7uW6ObmJofDIUkKDw9XSEiIVqxY4VyflJSkDRs2qEGDBpKkBg0a6OTJk9q8ebOzz8qVK+VwOFSvXr2bcBQAAAAACqI8fWXrwQcf1JtvvqnbbrtNVapU0ZYtWzRhwgQ99dRTkiSbzab+/ftr5MiRKl++vMLDwzVkyBCFhoaqbdu2kqQ777xTLVu2VK9evTRz5kxdvHhRffv2VefOna86EyEAAAAA5IQ8HbamTJmiIUOG6Pnnn1diYqJCQ0P1zDPPaOjQoc4+AwcO1NmzZ9W7d2+dPHlSDRs21OLFi+Xl5eXsM2fOHPXt21fNmzeX3W5X+/btNXny5Nw4JAAAAAAFhM0YY3K7iLwuKSlJ/v7+OnXqFLMRAgAAoMD79ddfVbt2bfWds1yl7rwr0+MO7dyqqV0itHnzZtWqVcvCCq2TlWyQp5/ZAgAAAID8irAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGCBPB+2Dh06pK5du6pYsWLy9vZWtWrVtGnTJud6Y4yGDh2qkiVLytvbWxEREdqzZ4/LNo4fP64uXbrIz89PAQEB6tmzp86cOXOzDwUAAABAAZKnw9aJEyd07733qlChQlq0aJF27Niht99+W4GBgc4+Y8eO1eTJkzVz5kxt2LBBvr6+ioyM1IULF5x9unTpou3bt2vZsmVauHChVq9erd69e+fGIQEAAAAoINxzu4DrGTNmjMqUKaOYmBhnW3h4uPPPxhhNnDhRr7/+uh5++GFJ0ocffqjg4GB99dVX6ty5s3bu3KnFixdr48aNqlOnjiRpypQpat26tcaPH6/Q0NCbe1AAAAAACoQ8Hba++eYbRUZG6tFHH9WPP/6oUqVK6fnnn1evXr0kSfv371d8fLwiIiKcY/z9/VWvXj2tW7dOnTt31rp16xQQEOAMWpIUEREhu92uDRs2qF27dhn2m5ycrOTkZOdyUlKSJCk1NVWpqalWHS4AAACQLzgcDnl4eMguI5sjLdPj7DLy8PCQw+HIt5+rs1J3tsLWn3/+qdtvvz07Q7O8nxkzZigqKkr/+c9/tHHjRvXr108eHh7q1q2b4uPjJUnBwcEu44KDg53r4uPjFRQU5LLe3d1dRYsWdfa50qhRozR8+PAM7Zs2bZKvr29OHBoAAACQb50+fVpDhgxRKa8L8jy6I9PjgrwuaMiQITp27Jg2bNhgYYXWOXv2bKb7Zits3XHHHWrcuLF69uypDh06yMvLKzub+VcOh0N16tTRW2+9JUmqWbOmfv/9d82cOVPdunWzZJ+SNHjwYEVFRTmXk5KSVKZMGdWpU0d+fn6W7RcAAADID2JjYxUdHa1nY75TaFjlTI87vHubZkZHa82aNapRo4Z1BVoo/a63zMhW2Pr1118VExOjqKgo9e3bV506dVLPnj1Vt27d7GzumkqWLKnKlV3/8u6880598cUXkqSQkBBJUkJCgkqWLOnsk5CQ4PzLCwkJUWJioss2UlNTdfz4cef4K3l6esrT0zNDu7u7u9zd8/SdlwAAAIDl7Ha7UlJS5JBNxu6W6XEO2ZSSkiK73Z5vP1dnpe5szUZYo0YNTZo0SYcPH9b777+vI0eOqGHDhqpataomTJigo0ePZmezGdx7773avXu3S9sff/yhsLAwSZcmywgJCdGKFSuc65OSkrRhwwY1aNBAktSgQQOdPHlSmzdvdvZZuXKlHA6H6tWrlyN1AgAAAMCVbmjqd3d3dz3yyCOaP3++xowZo7179+rll19WmTJl9OSTT+rIkSM3VNxLL72k9evX66233tLevXv1ySefaNasWerTp48kyWazqX///ho5cqS++eYbbdu2TU8++aRCQ0PVtm1bSZeuhLVs2VK9evXSL7/8ojVr1qhv377q3LkzMxECAAAAsMwNha1Nmzbp+eefV8mSJTVhwgS9/PLL2rdvn5YtW6bDhw87p2PPrrvvvltffvml5s6dq6pVqyo6OloTJ05Uly5dnH0GDhyoF154Qb1799bdd9+tM2fOaPHixS7Pkc2ZM0eVKlVS8+bN1bp1azVs2FCzZs26odoAAAAA4HpsxhiT1UETJkxQTEyMdu/erdatW+vpp59W69atZbf/X3Y7ePCgypYtm2+ndLxcUlKS/P39derUKSbIAAAAQIH366+/qnbt2uo7Z7lK3XlXpscd2rlVU7tEaPPmzapVq5aFFVonK9kgW0+lzZgxQ0899ZS6d+/uMjHF5YKCgvTee+9lZ/MAAAAAkO9lK2zt2bPnX/ukfxcWAAAAABRE2XpmKyYmRvPnz8/QPn/+fH3wwQc3XBQAAAAA5HfZClujRo1S8eLFM7QHBQU5v4AYAAAAAAqybIWtuLg4hYeHZ2gPCwtTXFzcDRcFAAAAAPldtsJWUFCQfvvttwztW7duVbFixW64KAAAAADI77IVth577DH169dPq1atUlpamtLS0rRy5Uq9+OKL6ty5c07XCAAAAAD5TrZmI4yOjtaBAwfUvHlzubtf2oTD4dCTTz7JM1sAAAAAoGyGLQ8PD3366aeKjo7W1q1b5e3trWrVqiksLCyn6wMAAACAfClbYStdhQoVVKFChZyqBQAAAABuGdkKW2lpaZo9e7ZWrFihxMREORwOl/UrV67MkeIAAAAAIL/KVth68cUXNXv2bLVp00ZVq1aVzWbL6boAAAAAIF/LVtiaN2+ePvvsM7Vu3Tqn6wEAAACAW0K2pn738PDQHXfckdO1AAAAAMAtI1tha8CAAZo0aZKMMTldDwAAAADcErJ1G+HPP/+sVatWadGiRapSpYoKFSrksn7BggU5UhwAAAAA5FfZClsBAQFq165dTtcCAAAAALeMbIWtmJiYnK4DAAAAAG4p2XpmS5JSU1O1fPly/fe//9Xp06clSYcPH9aZM2dyrDgAAAAAyK+ydWXrr7/+UsuWLRUXF6fk5GTdf//9KlKkiMaMGaPk5GTNnDkzp+sEAAAAgHwlW1e2XnzxRdWpU0cnTpyQt7e3s71du3ZasWJFjhUHAAAAAPlVtq5s/fTTT1q7dq08PDxc2suWLatDhw7lSGEAAAAAkJ9l68qWw+FQWlpahvaDBw+qSJEiN1wUAAAAAOR32QpbLVq00MSJE53LNptNZ86c0RtvvKHWrVvnVG0AAAAAkG9l6zbCt99+W5GRkapcubIuXLigxx9/XHv27FHx4sU1d+7cnK4RAAAAAPKdbIWt0qVLa+vWrZo3b55+++03nTlzRj179lSXLl1cJswAAAAAgIIqW2FLktzd3dW1a9ecrAUAAAAAbhnZClsffvjhddc/+eST2SoGAAAAAG4V2QpbL774osvyxYsXde7cOXl4eMjHx4ewBQAAAKDAy9ZshCdOnHD5OXPmjHbv3q2GDRsyQQYAAAAAKJth62rKly+v0aNHZ7jqBQAAAAAFUY6FLenSpBmHDx/OyU0CAAAAQL6UrWe2vvnmG5dlY4yOHDmiqVOn6t57782RwgAAAAAgP8tW2Grbtq3Lss1mU4kSJdSsWTO9/fbbOVEXAAAAAORr2QpbDocjp+sAAAAAgFtKjj6zBQAAAAC4JFtXtqKiojLdd8KECdnZBQAAAADka9kKW1u2bNGWLVt08eJFVaxYUZL0xx9/yM3NTbVq1XL2s9lsOVMlAAAAAOQz2QpbDz74oIoUKaIPPvhAgYGBki590XGPHj103333acCAATlaJAAAAADkN9l6Zuvtt9/WqFGjnEFLkgIDAzVy5EhmIwQAAAAAZTNsJSUl6ejRoxnajx49qtOnT99wUQAAAACQ32UrbLVr1049evTQggULdPDgQR08eFBffPGFevbsqUceeSSnawQAAACAfCdbz2zNnDlTL7/8sh5//HFdvHjx0obc3dWzZ0+NGzcuRwsEAAAAgPwoW2HLx8dH06dP17hx47Rv3z5JUrly5eTr65ujxQEAAABAfnVDX2p85MgRHTlyROXLl5evr6+MMTlVFwAAAADka9kKW//884+aN2+uChUqqHXr1jpy5IgkqWfPnkz7DgAAAADKZth66aWXVKhQIcXFxcnHx8fZ3qlTJy1evDjHigMAAACA/Cpbz2wtXbpUS5YsUenSpV3ay5cvr7/++itHCgMAAACA/CxbV7bOnj3rckUr3fHjx+Xp6XnDRQEAAABAfpetsHXffffpww8/dC7bbDY5HA6NHTtWTZs2zbHiAAAAACC/ytZthGPHjlXz5s21adMmpaSkaODAgdq+fbuOHz+uNWvW5HSNAAAAAJDvZOvKVtWqVfXHH3+oYcOGevjhh3X27Fk98sgj2rJli8qVK5fTNQIAAABAvpPlK1sXL15Uy5YtNXPmTL322mtW1AQAAAAA+V6Wr2wVKlRIv/32mxW1AAAAAMAtI1u3EXbt2lXvvfdeTtcCAAAAALeMbE2QkZqaqvfff1/Lly9X7dq15evr67J+woQJOVIcAAAAAORXWQpbf/75p8qWLavff/9dtWrVkiT98ccfLn1sNlvOVQcAAAAA+VSWwlb58uV15MgRrVq1SpLUqVMnTZ48WcHBwZYUBwAAAAD5VZae2TLGuCwvWrRIZ8+ezdGCAAAAAOBWkK0JMtJdGb4AAAAAAJdkKWzZbLYMz2TxjBYAAAAAZJSlZ7aMMerevbs8PT0lSRcuXNCzzz6bYTbCBQsW5FyFAAAAAJAPZSlsdevWzWW5a9euOVoMAAAAANwqshS2YmJirKoDAAAAAG4pNzRBBgAAAADg6ghbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFiBsAQAAAIAFCFsAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABfJV2Bo9erRsNpv69+/vbLtw4YL69OmjYsWKqXDhwmrfvr0SEhJcxsXFxalNmzby8fFRUFCQXnnlFaWmpt7k6gEAAAAUJPkmbG3cuFH//e9/Vb16dZf2l156Sd9++63mz5+vH3/8UYcPH9YjjzziXJ+WlqY2bdooJSVFa9eu1QcffKDZs2dr6NChN/sQAAAAABQg+SJsnTlzRl26dNG7776rwMBAZ/upU6f03nvvacKECWrWrJlq166tmJgYrV27VuvXr5ckLV26VDt27NDHH3+sGjVqqFWrVoqOjta0adOUkpKSW4cEAAAA4BbnntsFZEafPn3Upk0bRUREaOTIkc72zZs36+LFi4qIiHC2VapUSbfddpvWrVun+vXra926dapWrZqCg4OdfSIjI/Xcc89p+/btqlmzZob9JScnKzk52bmclJQkSUpNTeX2QwAAABR4DodDHh4essvI5kjL9Di7jDw8PORwOPLt5+qs1J3nw9a8efP066+/auPGjRnWxcfHy8PDQwEBAS7twcHBio+Pd/a5PGilr09fdzWjRo3S8OHDM7Rv2rRJvr6+2TkMAAAA4JZx+vRpDRkyRKW8Lsjz6I5MjwvyuqAhQ4bo2LFj2rBhg4UVWufs2bOZ7punw9bff/+tF198UcuWLZOXl9dN2+/gwYMVFRXlXE5KSlKZMmVUp04d+fn53bQ6AAAAgLwoNjZW0dHRejbmO4WGVc70uMO7t2lmdLTWrFmjGjVqWFeghdLvesuMPB22Nm/erMTERNWqVcvZlpaWptWrV2vq1KlasmSJUlJSdPLkSZerWwkJCQoJCZEkhYSE6JdffnHZbvpshel9ruTp6SlPT88M7e7u7nJ3z9MvGQAAAGA5u92ulJQUOWSTsbtlepxDNqWkpMhut+fbz9VZqTtPT5DRvHlzbdu2TbGxsc6fOnXqqEuXLs4/FypUSCtWrHCO2b17t+Li4tSgQQNJUoMGDbRt2zYlJiY6+yxbtkx+fn6qXDnzKRwAAAAAsiJPx8kiRYqoatWqLm2+vr4qVqyYs71nz56KiopS0aJF5efnpxdeeEENGjRQ/fr1JUktWrRQ5cqV9cQTT2js2LGKj4/X66+/rj59+lz16hUAAAAA5IQ8HbYy45133pHdblf79u2VnJysyMhITZ8+3bnezc1NCxcu1HPPPacGDRrI19dX3bp104gRI3KxagAAAAC3unwXtn744QeXZS8vL02bNk3Tpk275piwsDB9//33FlcGAAAAAP8nTz+zBQAAAAD5FWELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsABhCwAAAAAsQNgCAAAAAAsQtgAAAADAAoQtAAAAALAAYQsAAAAALEDYAgAAAAALELYAAAAAwAKELQAAAACwAGELAAAAACxA2AIAAAAACxC2AAAAAMAChC0AAAAAsECeDlujRo3S3XffrSJFiigoKEht27bV7t27XfpcuHBB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tm1T1apV1a9fP23fvl3Lly+XzWZz6fvzzz+rTZs2SkxMlKenp7P9jjvu0MCBA9W7d+9Mv7YAAOu553YBAABcS7t27dSuXTvn8o8//qjffvtNU6ZM0R133KG5c+cqJCREdevWVaNGja67LWOMM7xs27ZNaWlpGcJPcnKyihUrJunSla1HH330utusXbu2y/LWrVu1atUqFS5cOEPfffv2qUKFCtqzZ4+GDh2qDRs26NixY84rWnFxcapataq6d++u+++/XxUrVlTLli31wAMPqEWLFs7tnzlzxlljuvPnz7vciggAyBsIWwCAfCE5OVnPP/+8PvroI+3du1epqalq3LixJKlChQrasGHDdcfv3LlT4eHhkqQzZ87Izc1Nmzdvlpubm0u/9KDk7e39rzX5+vq6LJ85c0YPPvigy7Nh6UqWLClJevDBBxUWFqZ3331XoaGhcjgcqlq1qnOCjVq1amn//v1atGiRli9fro4dOyoiIkKff/65zpw5o5IlS2Z4tkySAgIC/rVeAMDNRdgCAOQLI0eOVMuWLVWrVi1t2bJFqampznUXL150eZbqSrt27dLixYs1ePBgSVLNmjWVlpamxMRE3XfffVcdU716da1YsULDhw/PdI21atXSF198obJly8rdPeOv2H/++Ue7d+/Wu+++69zv1W5T9PPzU6dOndSpUyd16NBBLVu21PHjx1WrVi3Fx8fL3d3d5TkuAEDexAQZAIA8b8eOHfr00081YsQISZcmvLDb7Xrvvff03XffadeuXbr77rslSampqYqPj9fhw4e1bds2TZkyRY0bN1aNGjX0yiuvSLp0JaxLly568skntWDBAu3fv1+//PKLRo0ape+++06SNHjwYG3cuFHPP/+8fvvtN+3atUszZsxwmVnwSn369NHx48f12GOPaePGjdq3b5+WLFmiHj16KC0tTYGBgSpWrJhmzZqlvXv3auXKlRm+P2zChAmaO3eudu3apT/++EPz589XSEiIAgICFBERoQYNGqht27ZaunSpDhw4oLVr1+q1117Tpk2brHjpAQA3gCtbAIA8zRij3r17a8KECc7b9ry9vTV79mz16dNHycnJmjp1qkqVKiVJ2r59u0qWLCk3Nzf5+/urcuXKGjx4sJ577jmXSSViYmI0cuRIDRgwQIcOHVLx4sVVv359PfDAA5IuBbKlS5fqP//5j+rWrStvb2/Vq1dPjz322DVrDQ0N1Zo1a/Tqq6+qRYsWSk5OVlhYmFq2bCm73S6bzaZ58+apX79+qlq1qipWrKjJkyerSZMmzm0UKVJEY8eO1Z49e+Tm5qa7775b33//vez2S/8/+v333+u1115Tjx49dPToUYWEhKhRo0YKDg7O6ZceAHCDmI0QAAAAACzAbYQAAAAAYAHCFgAAAABYgLAFAAAAABYgbAEAAACABQhbAAAAAGABwhYAAAAAWICwBQAAAAAWIGwBAAAAgAUIWwAAAABgAcIWAAAAAFiAsAUAAAAAFvh/NlkOniVBBQkAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# metrics for which we should compute decreases\n", + "df_corr = pd.DataFrame(df_merged[\"File\"].unique(), columns=[\"File\"]) \n", + "\n", + "for metric in [\"time_elapsed_ms\", \"rss\", \"num_small_alloc\", \"num_dealloc\", \"num_small_dealloc\", \"c_file_size\"]:\n", + " display(HTML(f\"

{metric}

\"))\n", + " df_metric = df_merged[df_merged[\"Metric\"] == metric].copy()\n", + " df_metric[\"absolute_diff\"] = df_merged[\"Value_no_reuse\"] - df_merged[\"Value_reuse\"]\n", + " df_metric[\"%Decrease\"] = (\n", + " 100.0 * (df_merged[\"Value_no_reuse\"] - df_merged[\"Value_reuse\"]) / df_merged[\"Value_no_reuse\"]\n", + " )\n", + " df_metric = df_metric.drop([\"Condition_reuse\", \"Condition_no_reuse\", \"Metric\"], axis=1)\n", + "\n", + " df_kv = df_metric[[\"File\", \"%Decrease\"]].copy()\n", + " df_kv.rename(columns={\"%Decrease\": metric}, inplace=True)\n", + " # df_corr = pd.merge(df_corr, df_kv, on=\"File\", how=\"outer\")\n", + " \n", + " # Sorting by maximum decrease\n", + " df_metric_sorted = df_metric.sort_values(by=\"%Decrease\", ascending=False)\n", + " df_metric_sorted.reset_index(drop=True, inplace=True) # changes index to start from zero.\n", + " display(df_metric_sorted)\n", + " plt.figure(figsize=(10, 6))\n", + " plt.hist(df_metric_sorted['%Decrease'], bins=50, color='skyblue', edgecolor='black')\n", + " plt.title(f'%Decrease Distribution for {metric}')\n", + " plt.xlabel('%Decrease')\n", + " plt.ylabel('Frequency')\n", + " plt.grid(axis='y', alpha=0.75)\n", + " plt.show()\n", + "\n", + "# corr = df_corr.drop('File', axis=1).corr() # Assuming df_corr is defined and populated\n", + "# plt.figure(figsize=(12,8))\n", + "# sns.heatmap(corr, cmap=\"Greens\",annot=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e7ec6270-c6f5-46b0-b7e6-b28f343851f5", + "metadata": {}, + "outputs": [], + "source": [ + "df_full = None\n", + "\n", + "# for each file, grab num alloc and time elapsed.\n", + "variant2df = { \"reuse\" : reuse, \"noreuse\": noreuse }\n", + "for (variant, df) in variant2df.items():\n", + " metric2df = {}\n", + " for metric in [\"time_elapsed_ms\", \"num_alloc\"]:\n", + " out = df[df[\"Metric\"] == metric].copy()\n", + " out = out[[\"File\", \"Value\"]]\n", + " out.rename(columns={\"Value\" : metric}, inplace=True)\n", + " out = out[[\"File\", metric]].set_index(\"File\")\n", + " metric2df[metric] = out\n", + " \n", + " df_metrics_merged = metric2df[\"time_elapsed_ms\"].join(metric2df[\"num_alloc\"])\n", + " df_metrics_merged = df_metrics_merged.sort_values(by='time_elapsed_ms', ascending=False)\n", + "\n", + " display(HTML(f\"

Correlation: Time elapsed v/s # allocations ({variant})

\"))\n", + " display(df_metrics_merged)\n", + " corr = df_metrics_merged.corr() # Assuming df_corr is defined and populated\n", + " plt.figure(figsize=(4,2))\n", + " sns.heatmap(corr, cmap=\"Greens\",annot=True)\n", + " plt.title(f\"Correlation: Time Elapsed v/s # Allocations ({variant})\")\n", + " plt.show()\n", + "\n", + " \n", + " if df_full is None:\n", + " df_full = df_metrics_merged\n", + " else:\n", + " df_full = pd.concat([df_full, df_metrics_merged])\n", + "\n", + "df_full = df_full.sort_values(by='time_elapsed_ms', ascending=False)\n", + "display(df_full)\n", + "corr = df_full.corr() \n", + "plt.figure(figsize=(4,2))\n", + "sns.heatmap(corr, cmap=\"Greens\",annot=True)\n", + "plt.title('Correlation: Time Elapsed v/s # Allocations (Aggregate reuse + no reuse)')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "efe6633f-1cd3-4187-99c7-2bdffc6a3f6f", + "metadata": {}, + "outputs": [], + "source": [ + "def print_file_info(name):\n", + " for reuses in [\"reuse\", \"no_reuse\"]:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2141e2c-d2b6-4557-8793-a8bfa9bb5944", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6ee06416-6477-4bd2-a10c-3671b1e27105", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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": 5 +} diff --git a/1-runs/run-2024-03-31---15-55---tcg40/run-lean-stage-bench-worker.sh b/1-runs/run-2024-03-31---15-55---tcg40/run-lean-stage-bench-worker.sh new file mode 100644 index 000000000000..ec1ac4db42b1 --- /dev/null +++ b/1-runs/run-2024-03-31---15-55---tcg40/run-lean-stage-bench-worker.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +set -o xtrace +set -e + +# -------- + +EXPERIMENTDIR=$(pwd) +echo "pwd: $EXPERIMENTDIR" +DATE=$(date) +echo "date: $DATE" +MACHINE=$(uname -a) +echo "machine: $MACHINE" +echo "git status: $(git status --short)" +echo "git commit: $(git rev-parse HEAD)" +ROOT=$(git rev-parse --show-toplevel) +echo "root folder: $ROOT" +echo "out folder: $OUTFOLDER" + +if [ "$(uname -s)" = "Darwin" ]; then + TIME="gtime" +else + TIME="command time" +fi +echo "time: $TIME" +$TIME -v echo "time" + +rm *.txt -i || true +rm *.csv -i || true +rm -rf builds -I || true + + +COMMITS=("2024-03-31---10-43---tcg40" "2024-borrowing-benching-baseline" ) +KINDS=("reuse" "noreuse") + +for tag in "${COMMITS[@]}"; do + git show --format="%H %ad" --date=short $tag -q +done + +# Ask if script should proceed +read -p "Do you want to proceed? (y/n) " -n 1 -r +echo # Move to a new line +if [[ $REPLY =~ ^[Yy]$ ]]; then + echo "Proceeding to run..." +else + echo "Run aborted." + exit 1 +fi + + +# REUSE_FILES=("$EXPERIMENTDIR/ResetReuse.baseline.lean.in" "$EXPERIMENTDIR/ResetReuse.research.lean.in") + +for i in {0..1}; do + echo "@@@ ${KINDS[i]} BUILD @@@" + curl -d "Started[${KINDS[i]}]. run:$EXPERIMENTDIR. machine:$(uname -a)." ntfy.sh/xISSztEV8EoOchM2 + mkdir -p $EXPERIMENTDIR/builds/ + git clone --depth 1 git@github.com:opencompl/lean4.git --branch ${COMMITS[i]} $EXPERIMENTDIR/builds/${KINDS[i]} + mkdir -p $EXPERIMENTDIR/builds/${KINDS[i]}/build/release/ + cd $EXPERIMENTDIR/builds/${KINDS[i]}/build/release/ + + # output log name from stage3 build. + CSVNAME="${KINDS[i]}.stage3.csv" + PROFILE_FILE=$EXPERIMENTDIR/$CSVNAME + + cmake ../../ \ + -DCCACHE=OFF \ + -DRUNTIME_STATS=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DLEAN_RESEARCH_COMPILER_PROFILE_CSV_PATH=$PROFILE_FILE + + make -j10 stage2 + touch $EXPERIMENTDIR/$CSVNAME && echo "" > $EXPERIMENTDIR/$CSVNAME + $TIME -v make -j10 stage3 2>&1 | tee "$EXPERIMENTDIR/time-${KINDS[i]}-stage3.txt" + (cd $EXPERIMENTDIR/builds/${KINDS[i]}/build/release/stage3 && (ctest -E handleLocking -j32 --output-on-failure 2>&1 | tee "$EXPERIMENTDIR/ctest-${KINDS[i]}-stage3.txt")) || true + curl -d "Done[${KINDS[i]}]. run:$EXPERIMENTDIR. machine:$(uname -a)." ntfy.sh/xISSztEV8EoOchM2 +done; diff --git a/1-runs/run-2024-03-31---15-55---tcg40/run-lean-stage-bench-wrapper.sh b/1-runs/run-2024-03-31---15-55---tcg40/run-lean-stage-bench-wrapper.sh new file mode 100755 index 000000000000..1649ba0d8833 --- /dev/null +++ b/1-runs/run-2024-03-31---15-55---tcg40/run-lean-stage-bench-wrapper.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +bash run-lean-stage-bench-worker.sh 2>&1 | tee log.txt + diff --git a/1-runs/run-2024-03-31---15-55---tcg40/speedcenter-worker.sh b/1-runs/run-2024-03-31---15-55---tcg40/speedcenter-worker.sh new file mode 100644 index 000000000000..23f292a8a347 --- /dev/null +++ b/1-runs/run-2024-03-31---15-55---tcg40/speedcenter-worker.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +set -o xtrace +set -e + +# -------- + +EXPERIMENTDIR=$(pwd) +echo "pwd: $EXPERIMENTDIR" +DATE=$(date) +echo "date: $DATE" +MACHINE=$(uname -a) +echo "machine: $MACHINE" +echo "git status: $(git status --short)" +echo "git commit: $(git rev-parse HEAD)" +ROOT=$(git rev-parse --show-toplevel) +echo "root folder: $ROOT" +echo "out folder: $OUTFOLDER" + +if [ "$(uname -s)" = "Darwin" ]; then + TIME="gtime" +else + TIME="command time" +fi +echo "time: $TIME" +$TIME -v echo "time" + +COMMITS=("2024-borrowing-benching-baseline" "2024-03-30--15-19--tcg40") +KINDS=("noreuse" "reuse") + +for i in {0..1}; do + echo "@@@ ${KINDS[i]} BENCH @@@" + CSVNAME="${KINDS[i]}.stage3.csv" + PROFILE_FILE=$EXPERIMENTDIR/$CSVNAME + mv "$PROFILE_FILE" $(basename "$PROFILE_FILE" .csv).pre-suite-bench.csv || true # move old profile file if it exists. + + # link lean tooolchain + # # https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/elan.20toolchain.20link.3A.20three.20hyphens.20becomes.20colon.3F/near/430447189 + # # Lean toolchain does not like having three dash, so for now, just name it based on KINDS. + LEAN_TOOLCHAIN="${KINDS[i]}" + # TODO: elan does not like '---' in folder name? + elan toolchain link "$LEAN_TOOLCHAIN" "$EXPERIMENTDIR/builds/${KINDS[i]}/build/release/stage2" + cd $EXPERIMENTDIR/builds/${KINDS[i]}/tests/bench/ + elan override set $LEAN_TOOLCHAIN # set override for temci + elan show # show the toolchain. + temci exec --config speedcenter.yaml --out "$EXPERIMENTDIR/${KINDS[i]}.speedcenter.bench.yaml" --included_blocks suite # run temci + curl -d "Done[BENCH-${KINDS[i]}]. run:$EXPERIMENTDIR. machine:$(uname -a)." ntfy.sh/xISSztEV8EoOchM2 +done; diff --git a/1-runs/run-2024-03-31---15-55---tcg40/speedcenter-wrapper.sh b/1-runs/run-2024-03-31---15-55---tcg40/speedcenter-wrapper.sh new file mode 100755 index 000000000000..01fd135e6ad4 --- /dev/null +++ b/1-runs/run-2024-03-31---15-55---tcg40/speedcenter-wrapper.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +bash ./speedcenter-worker.sh 2>&1 | tee log.txt +