aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authoradamjanovsky2023-03-17 14:40:20 +0100
committeradamjanovsky2023-03-17 14:40:20 +0100
commita6b008b167db388476e5dfb5990631e207a764d6 (patch)
treee71e4bbf513c8842ffcbeccc07abfed3162a73a9
parent731b3ea9c118a374aa1c1194305741b6e7909e83 (diff)
downloadsec-certs-a6b008b167db388476e5dfb5990631e207a764d6.tar.gz
sec-certs-a6b008b167db388476e5dfb5990631e207a764d6.tar.zst
sec-certs-a6b008b167db388476e5dfb5990631e207a764d6.zip
Reference annotations: finalize prediction pipeline
-rw-r--r--notebooks/cc/reference_annotations/prediction.ipynb407
-rw-r--r--pyproject.toml4
-rw-r--r--requirements/all_requirements.txt (renamed from requirements/nlp_requirements.txt)327
-rwxr-xr-xrequirements/compile.sh2
-rw-r--r--requirements/dev_requirements.txt134
-rw-r--r--requirements/requirements.txt2
-rw-r--r--requirements/test_requirements.txt2
-rw-r--r--src/sec_certs/config/settings-schema.json2
-rw-r--r--src/sec_certs/config/settings.yaml4
-rw-r--r--src/sec_certs/dataset/cc.py38
-rw-r--r--src/sec_certs/model/references/annotator.py18
-rw-r--r--src/sec_certs/model/references/annotator_trainer.py33
-rw-r--r--src/sec_certs/model/references/segment_extractor.py30
-rw-r--r--src/sec_certs/sample/cc.py12
-rw-r--r--src/sec_certs/utils/nlp.py6
-rw-r--r--src/sec_certs/utils/parallel_processing.py4
-rw-r--r--tests/data/cc/analysis/cc_full_dataset.json3
-rw-r--r--tests/data/cc/analysis/reference_dataset.json5
-rw-r--r--tests/data/cc/analysis/transitive_vulnerability_dataset.json5
-rw-r--r--tests/data/cc/analysis/vulnerable_dataset.json4
-rw-r--r--tests/data/cc/certificate/fictional_cert.json3
-rw-r--r--tests/data/cc/dataset/auxiliary_datasets/maintenances/maintenance_updates.json3
-rw-r--r--tests/data/cc/dataset/toy_dataset.json5
23 files changed, 675 insertions, 378 deletions
diff --git a/notebooks/cc/reference_annotations/prediction.ipynb b/notebooks/cc/reference_annotations/prediction.ipynb
index add6e112..57fc8de1 100644
--- a/notebooks/cc/reference_annotations/prediction.ipynb
+++ b/notebooks/cc/reference_annotations/prediction.ipynb
@@ -1,86 +1,63 @@
{
"cells": [
{
- "attachments": {},
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Prediction of reference annotations in CC Certificates\n",
- "\n",
- "This notebook:\n",
- "- loads dataframe of a dataset with `(dgst, cert_id, sentences, label)`\n",
- "- Trains a model to classify the sentences related to certificate reference to their common sentiment (meaning of reference)"
- ]
- },
- {
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "MIG-a5459e6a-b26d-5985-874c-528458a7728b\n"
+ "Resolved repo directory as: /var/tmp/xjanovsk/certs/sec-certs\n"
]
}
],
"source": [
"# When on Aura, it is important to first set CUDA_VISIBLE_DEVICES environment variable directly from notebook\n",
"# For available GPUs, see https://www.fi.muni.cz/tech/unix/aura.html.cs\n",
+ "from __future__ import annotations\n",
"\n",
"import os\n",
"\n",
- "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"MIG-a5459e6a-b26d-5985-874c-528458a7728b\"\n",
- "print(os.getenv(\"CUDA_VISIBLE_DEVICES\"))\n",
+ "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"MIG-4f7fbfb7-a8a2-553d-875a-d9d56baf97a\"\n",
+ "os.environ[\"TOKENIZERS_PARALLELISM\"] = \"FALSE\"\n",
"\n",
- "import pandas as pd\n",
"from sec_certs.utils.nlp import prec_recall_metric\n",
"from pathlib import Path\n",
- "from sec_certs.model import ReferenceSegmentExtractor, ReferenceAnnotator, ReferenceAnnotatorTrainer\n",
+ "from sec_certs.model import ReferenceAnnotatorTrainer, ReferenceSegmentExtractor\n",
"from sec_certs.dataset import CCDataset\n",
- "import numpy as np\n",
"from sklearn.metrics import ConfusionMatrixDisplay\n",
"\n",
- "REPO_ROOT = Path(\"../../../\").resolve()"
+ "REPO_ROOT = Path(\"./../../../\").resolve()\n",
+ "print(f\"Resolved repo directory as: {REPO_ROOT}\")"
]
},
{
"cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Load df or fully process it with ReferenceSegmentExtractor\n",
- "df = pd.read_csv(REPO_ROOT / \"datasets/reference_classification_dataset.csv\")\n",
- "\n",
- "# dset = CCDataset.from_json(REPO_ROOT / \"datasets/cc/cc_dataset.json\")\n",
- "# df = ReferenceSegmentExtractor().prepare_df_from_cc_certs([x for x in dset])"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
+ "execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
- "config.json not found in HuggingFace Hub\n",
+ "Recovering reference segments for targets: 100%|██████████| 66/66 [00:20<00:00, 3.29it/s]\n",
+ "Recovering reference segments for reports: 100%|██████████| 82/82 [00:04<00:00, 20.45it/s]\n",
+ "config.json not found in HuggingFace Hub.\n",
"model_head.pkl not found on HuggingFace Hub, initialising classification head with random weights. You should TRAIN this model on a downstream task to use it for predictions and inference.\n",
"Applying column mapping to training dataset\n",
"***** Running training *****\n",
- " Num examples = 17040\n",
+ " Num examples = 560\n",
" Num epochs = 1\n",
- " Total optimization steps = 1065\n",
+ " Total optimization steps = 35\n",
" Total train batch size = 16\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "ae824b435e5646198a37586c30e89c1f",
+ "model_id": "5cc28ba22e614f7988d5373d55989813",
"version_major": 2,
"version_minor": 0
},
@@ -94,12 +71,12 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "6a17a246cf824a758c9b814d2fb6954c",
+ "model_id": "0a74771fe7524ac4b743236e318afeed",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
- "Iteration: 0%| | 0/1065 [00:00<?, ?it/s]"
+ "Iteration: 0%| | 0/35 [00:00<?, ?it/s]"
]
},
"metadata": {},
@@ -118,108 +95,103 @@
"output_type": "stream",
"text": [
"Internal evaluation (of model working on individual segments)\n",
- "{'precision': 0.13023255813953488, 'recall': 0.13023255813953488}\n",
+ "{'precision': 0.5384615384615384, 'recall': 0.5384615384615384}\n",
"Actual evaluation after ensemble soft voting\n",
- "{'precision': 0.6923076923076923, 'recall': 0.6923076923076923}\n"
+ "{'precision': 0.5714285714285714, 'recall': 0.5714285714285714}\n",
+ "The dataset now contains 43 certificates with annotated references.\n"
]
}
],
"source": [
- "# init trainer, train and evaluate\n",
- "trainer = ReferenceAnnotatorTrainer.from_df(df, prec_recall_metric, \"transformer\", \"training\")\n",
- "trainer.train()\n",
- "trainer.evaluate()\n",
- "clf = trainer.clf\n",
+ "# End-to-end example of reference annotation\n",
+ "dset: CCDataset = CCDataset.from_json(REPO_ROOT / \"my_datasets/cc/cc_dataset.json\")\n",
+ "dset.annotate_references(mode=\"training\")\n",
"\n",
- "# # Serialize and de-serialize the classifier\n",
- "trainer.clf.save_pretrained(REPO_ROOT / \"datasets/cc/reference_annotator\")\n",
- "clf = ReferenceAnnotator.from_pretrained(REPO_ROOT / \"datasets/cc/reference_annotator\")"
+ "print(f\"The dataset now contains {len([x for x in dset if x.heuristics.annotated_references])} certificates with annotated references.\")"
]
},
{
"cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Take a look at misclassified instances\n",
- "df_train = clf.predict_df(trainer._train_dataset)\n",
- "df_eval = clf.predict_df(trainer._eval_dataset)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
+ "execution_count": 6,
"metadata": {},
"outputs": [
{
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Recovering reference segments for targets: 100%|██████████| 66/66 [00:20<00:00, 3.29it/s]\n",
+ "Recovering reference segments for reports: 100%|██████████| 82/82 [00:03<00:00, 27.26it/s]\n",
+ "config.json not found in HuggingFace Hub.\n",
+ "model_head.pkl not found on HuggingFace Hub, initialising classification head with random weights. You should TRAIN this model on a downstream task to use it for predictions and inference.\n",
+ "Applying column mapping to training dataset\n",
+ "***** Running training *****\n",
+ " Num examples = 560\n",
+ " Num epochs = 1\n",
+ " Total optimization steps = 35\n",
+ " Total train batch size = 16\n"
+ ]
+ },
+ {
"data": {
- "text/html": [
- "<div>\n",
- "<style scoped>\n",
- " .dataframe tbody tr th:only-of-type {\n",
- " vertical-align: middle;\n",
- " }\n",
- "\n",
- " .dataframe tbody tr th {\n",
- " vertical-align: top;\n",
- " }\n",
- "\n",
- " .dataframe thead th {\n",
- " text-align: right;\n",
- " }\n",
- "</style>\n",
- "<table border=\"1\" class=\"dataframe\">\n",
- " <thead>\n",
- " <tr style=\"text-align: right;\">\n",
- " <th></th>\n",
- " <th>dgst</th>\n",
- " <th>referenced_cert_id</th>\n",
- " <th>label</th>\n",
- " <th>segments</th>\n",
- " <th>y_proba</th>\n",
- " <th>y_pred</th>\n",
- " <th>correct</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>756</th>\n",
- " <td>ab3af998dff7a2ef</td>\n",
- " <td>ANSSI-CC-2017/47</td>\n",
- " <td>COMPONENT_USED</td>\n",
- " <td>[ANSSI-CC-2017/47 le 5 septembre 2017.\\n]</td>\n",
- " <td>[0.20372918003354076, 0.1846070821627411, 0.15...</td>\n",
- " <td>ON_PLATFORM</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>"
- ],
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "41e97704d5954ddf80c1ce3a1d2bcc16",
+ "version_major": 2,
+ "version_minor": 0
+ },
"text/plain": [
- " dgst referenced_cert_id label \\\n",
- "756 ab3af998dff7a2ef ANSSI-CC-2017/47 COMPONENT_USED \n",
- "\n",
- " segments \\\n",
- "756 [ANSSI-CC-2017/47 le 5 septembre 2017.\\n] \n",
- "\n",
- " y_proba y_pred correct \n",
- "756 [0.20372918003354076, 0.1846070821627411, 0.15... ON_PLATFORM False "
+ "Epoch: 0%| | 0/1 [00:00<?, ?it/s]"
]
},
- "execution_count": 5,
"metadata": {},
- "output_type": "execute_result"
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "2a08aa2410f042118c79fb66d48580d3",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Iteration: 0%| | 0/35 [00:00<?, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Applying column mapping to evaluation dataset\n",
+ "***** Running evaluation *****\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Internal evaluation (of model working on individual segments)\n",
+ "{'precision': 0.5384615384615384, 'recall': 0.5384615384615384}\n",
+ "Actual evaluation after ensemble soft voting\n",
+ "{'precision': 0.5714285714285714, 'recall': 0.5714285714285714}\n"
+ ]
}
],
"source": [
- "df_train.loc[~df_train.correct].head()"
+ "# More dissected example with reference annotations\n",
+ "df = ReferenceSegmentExtractor().prepare_df_from_cc_certs(list(dset.certs.values()))\n",
+ "trainer = ReferenceAnnotatorTrainer.from_df(df, prec_recall_metric, method=\"transformer\", mode=\"training\")\n",
+ "trainer.train()\n",
+ "trainer.evaluate()\n",
+ "\n",
+ "annotator = trainer.clf\n",
+ "df_predicted = annotator.predict_df(df)"
]
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 9,
"metadata": {},
"outputs": [
{
@@ -246,7 +218,9 @@
" <th>dgst</th>\n",
" <th>referenced_cert_id</th>\n",
" <th>label</th>\n",
+ " <th>split</th>\n",
" <th>segments</th>\n",
+ " <th>lang</th>\n",
" <th>y_proba</th>\n",
" <th>y_pred</th>\n",
" <th>correct</th>\n",
@@ -254,117 +228,127 @@
" </thead>\n",
" <tbody>\n",
" <tr>\n",
- " <th>13</th>\n",
- " <td>031667f4e242da61</td>\n",
- " <td>CCEVS-VR-07-0054</td>\n",
- " <td>ON_PLATFORM</td>\n",
- " <td>[[CCEVS-VR-07-0054] Common Criteria Evaluation...</td>\n",
- " <td>[0.08122691074400883, 0.593865460042782, 0.081...</td>\n",
+ " <th>0</th>\n",
+ " <td>0041baf85c9ca3ec</td>\n",
+ " <td>BSI-DSZ-CC-0329-2006</td>\n",
+ " <td>NaN</td>\n",
+ " <td>valid</td>\n",
+ " <td>[[9] Certification Report BSI-DSZ-CC-0329-2006...</td>\n",
+ " <td>[en, en]</td>\n",
+ " <td>[0.22958617238809345, 0.22039005448671678, 0.5...</td>\n",
" <td>COMPONENT_USED</td>\n",
- " <td>False</td>\n",
+ " <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
- " <th>91</th>\n",
- " <td>0fe8df0e85116b61</td>\n",
- " <td>ANSSI-CC-2010/33</td>\n",
- " <td>COMPONENT_SHARED</td>\n",
- " <td>[CC IDeal Citiz (sur\\ncomposants SB23YR80B et ...</td>\n",
- " <td>[0.12980833111443874, 0.3509582926631846, 0.12...</td>\n",
+ " <th>1</th>\n",
+ " <td>0167c92c0d8c8b47</td>\n",
+ " <td>BSI-DSZ-CC-0844-2014</td>\n",
+ " <td>NaN</td>\n",
+ " <td>train</td>\n",
+ " <td>[As the evaluation work performed for this cer...</td>\n",
+ " <td>[en, en, en]</td>\n",
+ " <td>[0.2379531649933594, 0.2068740269318838, 0.555...</td>\n",
" <td>COMPONENT_USED</td>\n",
- " <td>False</td>\n",
+ " <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
- " <th>118</th>\n",
- " <td>16abf8ee0697e64f</td>\n",
- " <td>ANSSI-CC-2014/61</td>\n",
- " <td>COMPONENT_SHARED</td>\n",
- " <td>[sous la référence [ANSSI-CC-2014/61].\\n]</td>\n",
- " <td>[0.315498585227761, 0.13724939680170528, 0.136...</td>\n",
- " <td>ON_PLATFORM</td>\n",
- " <td>False</td>\n",
+ " <th>2</th>\n",
+ " <td>09b17cb9b3c8b1bb</td>\n",
+ " <td>BSI-DSZ-CC-0917-2014</td>\n",
+ " <td>NaN</td>\n",
+ " <td>train</td>\n",
+ " <td>[[PP0035], le 3 février\\n2014 sous la référenc...</td>\n",
+ " <td>[fr, fr]</td>\n",
+ " <td>[0.2828401820477907, 0.25239069649528456, 0.46...</td>\n",
+ " <td>COMPONENT_USED</td>\n",
+ " <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
- " <th>183</th>\n",
- " <td>22388445fe620ac0</td>\n",
- " <td>ANSSI-CC-2014/20</td>\n",
- " <td>EVALUATION_REUSED</td>\n",
- " <td>[[ANSSI-CC-\\n2014/20]\\nRapport de certificatio...</td>\n",
- " <td>[0.24171578677684094, 0.30556432298553843, 0.1...</td>\n",
+ " <th>3</th>\n",
+ " <td>0ac0120f667a8dcf</td>\n",
+ " <td>BSI-DSZ-CC-0349-2006</td>\n",
+ " <td>NaN</td>\n",
+ " <td>train</td>\n",
+ " <td>[[CR]\\nCertification Reports of underlying har...</td>\n",
+ " <td>[en]</td>\n",
+ " <td>[0.2314090673514774, 0.23112778759264926, 0.53...</td>\n",
" <td>COMPONENT_USED</td>\n",
- " <td>False</td>\n",
+ " <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
- " <th>198</th>\n",
- " <td>24de96ea505af909</td>\n",
- " <td>ANSSI-CC-2021/29</td>\n",
- " <td>ON_PLATFORM</td>\n",
- " <td>[[M01-PLF] Rapport de maintenance ANSSI-CC-202...</td>\n",
- " <td>[0.040365307026386466, 0.7341872530469308, 0.0...</td>\n",
- " <td>COMPONENT_USED</td>\n",
- " <td>False</td>\n",
+ " <th>4</th>\n",
+ " <td>0bf7a19b22163465</td>\n",
+ " <td>ANSSI-CC-2015/36</td>\n",
+ " <td>NaN</td>\n",
+ " <td>train</td>\n",
+ " <td>[[CER-\\n2015/36]\\nRapport de certification ANS...</td>\n",
+ " <td>[fr]</td>\n",
+ " <td>[0.3772119113773801, 0.2939748191664766, 0.328...</td>\n",
+ " <td>EVALUATION_REUSED</td>\n",
+ " <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
- " dgst referenced_cert_id label \\\n",
- "13 031667f4e242da61 CCEVS-VR-07-0054 ON_PLATFORM \n",
- "91 0fe8df0e85116b61 ANSSI-CC-2010/33 COMPONENT_SHARED \n",
- "118 16abf8ee0697e64f ANSSI-CC-2014/61 COMPONENT_SHARED \n",
- "183 22388445fe620ac0 ANSSI-CC-2014/20 EVALUATION_REUSED \n",
- "198 24de96ea505af909 ANSSI-CC-2021/29 ON_PLATFORM \n",
+ " dgst referenced_cert_id label split \\\n",
+ "0 0041baf85c9ca3ec BSI-DSZ-CC-0329-2006 NaN valid \n",
+ "1 0167c92c0d8c8b47 BSI-DSZ-CC-0844-2014 NaN train \n",
+ "2 09b17cb9b3c8b1bb BSI-DSZ-CC-0917-2014 NaN train \n",
+ "3 0ac0120f667a8dcf BSI-DSZ-CC-0349-2006 NaN train \n",
+ "4 0bf7a19b22163465 ANSSI-CC-2015/36 NaN train \n",
"\n",
- " segments \\\n",
- "13 [[CCEVS-VR-07-0054] Common Criteria Evaluation... \n",
- "91 [CC IDeal Citiz (sur\\ncomposants SB23YR80B et ... \n",
- "118 [sous la référence [ANSSI-CC-2014/61].\\n] \n",
- "183 [[ANSSI-CC-\\n2014/20]\\nRapport de certificatio... \n",
- "198 [[M01-PLF] Rapport de maintenance ANSSI-CC-202... \n",
+ " segments lang \\\n",
+ "0 [[9] Certification Report BSI-DSZ-CC-0329-2006... [en, en] \n",
+ "1 [As the evaluation work performed for this cer... [en, en, en] \n",
+ "2 [[PP0035], le 3 février\\n2014 sous la référenc... [fr, fr] \n",
+ "3 [[CR]\\nCertification Reports of underlying har... [en] \n",
+ "4 [[CER-\\n2015/36]\\nRapport de certification ANS... [fr] \n",
"\n",
- " y_proba y_pred \\\n",
- "13 [0.08122691074400883, 0.593865460042782, 0.081... COMPONENT_USED \n",
- "91 [0.12980833111443874, 0.3509582926631846, 0.12... COMPONENT_USED \n",
- "118 [0.315498585227761, 0.13724939680170528, 0.136... ON_PLATFORM \n",
- "183 [0.24171578677684094, 0.30556432298553843, 0.1... COMPONENT_USED \n",
- "198 [0.040365307026386466, 0.7341872530469308, 0.0... COMPONENT_USED \n",
+ " y_proba y_pred \\\n",
+ "0 [0.22958617238809345, 0.22039005448671678, 0.5... COMPONENT_USED \n",
+ "1 [0.2379531649933594, 0.2068740269318838, 0.555... COMPONENT_USED \n",
+ "2 [0.2828401820477907, 0.25239069649528456, 0.46... COMPONENT_USED \n",
+ "3 [0.2314090673514774, 0.23112778759264926, 0.53... COMPONENT_USED \n",
+ "4 [0.3772119113773801, 0.2939748191664766, 0.328... EVALUATION_REUSED \n",
"\n",
- " correct \n",
- "13 False \n",
- "91 False \n",
- "118 False \n",
- "183 False \n",
- "198 False "
+ " correct \n",
+ "0 NaN \n",
+ "1 NaN \n",
+ "2 NaN \n",
+ "3 NaN \n",
+ "4 NaN "
]
},
- "execution_count": 6,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "df_eval.loc[~df_eval.correct].head()"
+ "df_predicted.head()"
]
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x7fd1715ae6a0>"
+ "<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x7f01e8061640>"
]
},
- "execution_count": 7,
+ "execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
- "image/png": "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HauYx5mXl6dUjiAISrukv+qLL77AwoULsWfPHvTq1UuzjVVh/fr1aNmyJZo1a4YFCxagfv36yMvLw5EjR7BhwwaEh4dj06ZNaNasGVq3bq10fdOmTbFp0ybRvojqqFatGpYvX47JkyfD0NAQAwYMgJ6eHv744w/MnDkTkydPFi1Qed3ixYtRp04dUY9mSfvzV3v8+avq925aX+UAOeSg9RufdnJkty2O7H77ljXB3zoj+Ftn9StajuwPssX+oPK/Lc/bNBr4Ao0GvlB5LmDrfdHPEl2g5bjnaDnuucr8AODdJRneXZI1WseyVlne66LSxnZrTZvLYBVzWSnyPoibN2/GTz/9hH79+okWbTRo0EDtYdbyTldXF2PGjMHy5cuRnp4OIH+7mapVq4qO77//HkB+gLd161asXLkS+/btQ5s2bVC/fn3MmzcPH3/8Mfz8/BRl37p1S6mct62Ytra2xsCBAzFv3jzRvkYlxd3dHVeuXEG7du0wefJk1K1bFx06dMCxY8ewYcMG5OTk4LffflOap1mgZ8+e2Lx5M3Jzi759y4QJE7B3716EhISgSZMmqFu3LrZu3YoNGza8db9DT09PDB06VLTJORERkeYIGjrKP0FelFUJAIyMjBAREQFXV1eYmZnh2rVrcHd3R1hYGJo1a4a0tHff9JeoLBRMAWin9yl0Be0aEpHnVrwVssU17d6Nsq5CmVheo15ZV4GoxOTJc3ESfyA5ORnm5pqfelPwOeGycR4kRsVbeyHLzEL0l/NKrK6aUuQexNq1ayMkJEQpfffu3WjYsKFGKkVERERU7hR3BXMFWslc5Mlac+bMwaBBg/DkyRPIZDL8/vvvuH37NjZv3owDBw6URB2JiIiIyh7nIBbu448/xp9//omjR4/CxMQEc+bMQXh4OP7880906NChJOpIRERERKXonZZ7tmrVCkeOHNF0XYiIiIjKL7mQfxS3jArgnfcDuXTpEsLDwwHkz0ts3LixxipFREREVN7I5cpPP3qXMiqCIgeIjx8/RkBAAP79919YWloCyN8jsEWLFti+fTucnSvm3mxERERElK/IcxA///xz5ObmIjw8HAkJCUhISEB4eDhkMhk+//zzkqgjERERUdnjKubCnTp1CmfPnoWXl5cizcvLC99//z1atWql0coRERERlRucg1g4FxcXlU/IkEqlcHR01EiliIiIiMobQZ5/FLeMiqDIQ8zffvstxo4di0uXLinSLl26hPHjx7/1UWhEREREVP6p1YNoZWUFQXjZJZqeng5fX1/o6uZfnpeXB11dXQwdOhTdu3cvkYoSERERlSkt2ihbrQBx9erVJVwNIiIionKOcxDFBg0aVNL1ICIiIqJy4p03ygaArKws5OTkiNLMzc2LVSEiIiKickmLhpiLvEglPT0dY8aMQZUqVWBiYgIrKyvRQURERFQpadE+iEUOEKdNm4bjx49jw4YNMDAwwC+//IL58+fD0dERmzdvLok6EhEREVEpKvIQ859//onNmzejbdu2GDJkCFq1agUPDw+4urpiy5Yt6NevX0nUk4iIiKhscYi5cAkJCXB3dweQP98wISEBAPD+++/j9OnTmq0dERERUXlRsIq5uEcFUOQA0d3dHffv3wcAeHt7Y+fOnQDyexYtLS01WjkiIiIiKn1FDhCHDBmCa9euAQC++uorrF+/HoaGhpg4cSKmTp2q8QoSERERlQcFj9or7lERFHkO4sSJExX/bt++PSIiInD58mV4eHigfv36Gq0cERERUbmhRXMQi7UPIgC4urrC1dVVE3UhIiIionJArQBx7dq1ahc4bty4d64MEREREZU9tQLEVatWqVWYIAgMEImIiKhSElD8OYQVYw2zmgFiwaplospMYmYCiUS/rKtRqlJb1yzrKpS6Fc2sy7oKZSShrCtAVPFpYpuayrrNDRERERFVbsVepEJERESkFbiKmYiIiIhEtChA5BAzEREREYmwB5GIiIhIDZp4EkpFeZLKO/UghoSEoH///mjevDmePHkCAPjf//6HM2fOaLRyREREROWGXENHBVDkAHHPnj3w8/ODkZERrl69iuzsbABAcnIylixZovEKEhEREVHpKnKAuGjRImzcuBE///wz9PT0FOktW7bElStXNFo5IiIionJDi3oQizwH8fbt22jdurVSuoWFBZKSkjRRJyIiIqJyh3MQ38DBwQGRkZFK6WfOnIG7u7tGKkVERERU7hQ8SaW4RwVQ5ABx+PDhGD9+PC5cuABBEPD06VNs2bIFU6ZMwciRI0uijkRERERUioo8xPzVV19BJpPhww8/REZGBlq3bg0DAwNMmTIFY8eOLYk6EhEREZU9Ldoou8gBoiAImDVrFqZOnYrIyEikpaWhdu3aMDU1LYn6ERER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",
- "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"466.70485pt\" height=\"416.439344pt\" viewBox=\"0 0 466.70485 416.439344\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2023-03-03T14:20:01.937063</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.6.2, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 416.439344 \nL 466.70485 416.439344 \nL 466.70485 0 \nL 0 0 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 139.328125 277.111219 \nL 405.440125 277.111219 \nL 405.440125 10.999219 \nL 139.328125 10.999219 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pf1de5c748f)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image3f81e64b72\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"139.328125\" y=\"-10.711219\" width=\"266.4\" height=\"266.4\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <defs>\n <path id=\"md7682683c2\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#md7682683c2\" x=\"161.504125\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- COMPONENT_USED -->\n <g transform=\"translate(164.036156 381.570594) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-43\" d=\"M 4122 4306 \nL 4122 3641 \nQ 3803 3938 3442 4084 \nQ 3081 4231 2675 4231 \nQ 1875 4231 1450 3742 \nQ 1025 3253 1025 2328 \nQ 1025 1406 1450 917 \nQ 1875 428 2675 428 \nQ 3081 428 3442 575 \nQ 3803 722 4122 1019 \nL 4122 359 \nQ 3791 134 3420 21 \nQ 3050 -91 2638 -91 \nQ 1578 -91 968 557 \nQ 359 1206 359 2328 \nQ 359 3453 968 4101 \nQ 1578 4750 2638 4750 \nQ 3056 4750 3426 4639 \nQ 3797 4528 4122 4306 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-4f\" d=\"M 2522 4238 \nQ 1834 4238 1429 3725 \nQ 1025 3213 1025 2328 \nQ 1025 1447 1429 934 \nQ 1834 422 2522 422 \nQ 3209 422 3611 934 \nQ 4013 1447 4013 2328 \nQ 4013 3213 3611 3725 \nQ 3209 4238 2522 4238 \nz\nM 2522 4750 \nQ 3503 4750 4090 4092 \nQ 4678 3434 4678 2328 \nQ 4678 1225 4090 567 \nQ 3503 -91 2522 -91 \nQ 1538 -91 948 565 \nQ 359 1222 359 2328 \nQ 359 3434 948 4092 \nQ 1538 4750 2522 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-4d\" d=\"M 628 4666 \nL 1569 4666 \nL 2759 1491 \nL 3956 4666 \nL 4897 4666 \nL 4897 0 \nL 4281 0 \nL 4281 4097 \nL 3078 897 \nL 2444 897 \nL 1241 4097 \nL 1241 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-50\" d=\"M 1259 4147 \nL 1259 2394 \nL 2053 2394 \nQ 2494 2394 2734 2622 \nQ 2975 2850 2975 3272 \nQ 2975 3691 2734 3919 \nQ 2494 4147 2053 4147 \nL 1259 4147 \nz\nM 628 4666 \nL 2053 4666 \nQ 2838 4666 3239 4311 \nQ 3641 3956 3641 3272 \nQ 3641 2581 3239 2228 \nQ 2838 1875 2053 1875 \nL 1259 1875 \nL 1259 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-4e\" d=\"M 628 4666 \nL 1478 4666 \nL 3547 763 \nL 3547 4666 \nL 4159 4666 \nL 4159 0 \nL 3309 0 \nL 1241 3903 \nL 1241 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-45\" d=\"M 628 4666 \nL 3578 4666 \nL 3578 4134 \nL 1259 4134 \nL 1259 2753 \nL 3481 2753 \nL 3481 2222 \nL 1259 2222 \nL 1259 531 \nL 3634 531 \nL 3634 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-54\" d=\"M -19 4666 \nL 3928 4666 \nL 3928 4134 \nL 2272 4134 \nL 2272 0 \nL 1638 0 \nL 1638 4134 \nL -19 4134 \nL -19 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-5f\" d=\"M 3263 -1063 \nL 3263 -1509 \nL -63 -1509 \nL -63 -1063 \nL 3263 -1063 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-55\" d=\"M 556 4666 \nL 1191 4666 \nL 1191 1831 \nQ 1191 1081 1462 751 \nQ 1734 422 2344 422 \nQ 2950 422 3222 751 \nQ 3494 1081 3494 1831 \nL 3494 4666 \nL 4128 4666 \nL 4128 1753 \nQ 4128 841 3676 375 \nQ 3225 -91 2344 -91 \nQ 1459 -91 1007 375 \nQ 556 841 556 1753 \nL 556 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-53\" d=\"M 3425 4513 \nL 3425 3897 \nQ 3066 4069 2747 4153 \nQ 2428 4238 2131 4238 \nQ 1616 4238 1336 4038 \nQ 1056 3838 1056 3469 \nQ 1056 3159 1242 3001 \nQ 1428 2844 1947 2747 \nL 2328 2669 \nQ 3034 2534 3370 2195 \nQ 3706 1856 3706 1288 \nQ 3706 609 3251 259 \nQ 2797 -91 1919 -91 \nQ 1588 -91 1214 -16 \nQ 841 59 441 206 \nL 441 856 \nQ 825 641 1194 531 \nQ 1563 422 1919 422 \nQ 2459 422 2753 634 \nQ 3047 847 3047 1241 \nQ 3047 1584 2836 1778 \nQ 2625 1972 2144 2069 \nL 1759 2144 \nQ 1053 2284 737 2584 \nQ 422 2884 422 3419 \nQ 422 4038 858 4394 \nQ 1294 4750 2059 4750 \nQ 2388 4750 2728 4690 \nQ 3069 4631 3425 4513 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-44\" d=\"M 1259 4147 \nL 1259 519 \nL 2022 519 \nQ 2988 519 3436 956 \nQ 3884 1394 3884 2338 \nQ 3884 3275 3436 3711 \nQ 2988 4147 2022 4147 \nL 1259 4147 \nz\nM 628 4666 \nL 1925 4666 \nQ 3281 4666 3915 4102 \nQ 4550 3538 4550 2338 \nQ 4550 1131 3912 565 \nQ 3275 0 1925 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-43\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"69.824219\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"148.535156\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"234.814453\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"295.117188\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"373.828125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"448.632812\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"511.816406\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"586.621094\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"647.705078\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"697.705078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"770.898438\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"834.375\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"897.558594\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_2\">\n <g>\n <use xlink:href=\"#md7682683c2\" x=\"205.856125\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- ON_PLATFORM -->\n <g transform=\"translate(208.388156 357.664344) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-4c\" d=\"M 628 4666 \nL 1259 4666 \nL 1259 531 \nL 3531 531 \nL 3531 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-41\" d=\"M 2188 4044 \nL 1331 1722 \nL 3047 1722 \nL 2188 4044 \nz\nM 1831 4666 \nL 2547 4666 \nL 4325 0 \nL 3669 0 \nL 3244 1197 \nL 1141 1197 \nL 716 0 \nL 50 0 \nL 1831 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-46\" d=\"M 628 4666 \nL 3309 4666 \nL 3309 4134 \nL 1259 4134 \nL 1259 2759 \nL 3109 2759 \nL 3109 2228 \nL 1259 2228 \nL 1259 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-52\" d=\"M 2841 2188 \nQ 3044 2119 3236 1894 \nQ 3428 1669 3622 1275 \nL 4263 0 \nL 3584 0 \nL 2988 1197 \nQ 2756 1666 2539 1819 \nQ 2322 1972 1947 1972 \nL 1259 1972 \nL 1259 0 \nL 628 0 \nL 628 4666 \nL 2053 4666 \nQ 2853 4666 3247 4331 \nQ 3641 3997 3641 3322 \nQ 3641 2881 3436 2590 \nQ 3231 2300 2841 2188 \nz\nM 1259 4147 \nL 1259 2491 \nL 2053 2491 \nQ 2509 2491 2742 2702 \nQ 2975 2913 2975 3322 \nQ 2975 3731 2742 3939 \nQ 2509 4147 2053 4147 \nL 1259 4147 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-4f\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"78.710938\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"153.515625\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"203.515625\"/>\n <use xlink:href=\"#DejaVuSans-4c\" x=\"263.818359\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"321.78125\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"382.439453\"/>\n <use xlink:href=\"#DejaVuSans-46\" x=\"443.523438\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"501.042969\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"579.753906\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"649.236328\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_3\">\n <g>\n <use xlink:href=\"#md7682683c2\" x=\"250.208125\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- RECERTIFICATION -->\n <g transform=\"translate(252.9675 372.122156) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-49\" d=\"M 628 4666 \nL 1259 4666 \nL 1259 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-52\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"69.482422\"/>\n <use xlink:href=\"#DejaVuSans-43\" x=\"132.666016\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"202.490234\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"265.673828\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"327.90625\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"388.990234\"/>\n <use xlink:href=\"#DejaVuSans-46\" x=\"418.482422\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"476.001953\"/>\n <use xlink:href=\"#DejaVuSans-43\" x=\"505.494141\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"575.318359\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"635.976562\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"697.060547\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"726.552734\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"805.263672\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_4\">\n <g>\n <use xlink:href=\"#md7682683c2\" x=\"294.560125\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- COMPONENT_SHARED -->\n <g transform=\"translate(297.092156 395.561219) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-48\" d=\"M 628 4666 \nL 1259 4666 \nL 1259 2753 \nL 3553 2753 \nL 3553 4666 \nL 4184 4666 \nL 4184 0 \nL 3553 0 \nL 3553 2222 \nL 1259 2222 \nL 1259 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-43\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"69.824219\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"148.535156\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"234.814453\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"295.117188\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"373.828125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"448.632812\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"511.816406\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"586.621094\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"647.705078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"697.705078\"/>\n <use xlink:href=\"#DejaVuSans-48\" x=\"761.181641\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"836.376953\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"904.785156\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"974.267578\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"1037.451172\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_5\">\n <g id=\"line2d_5\">\n <g>\n <use xlink:href=\"#md7682683c2\" x=\"338.912125\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- EVALUATION_REUSED -->\n <g transform=\"translate(341.444156 392.294031) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-56\" d=\"M 1831 0 \nL 50 4666 \nL 709 4666 \nL 2188 738 \nL 3669 4666 \nL 4325 4666 \nL 2547 0 \nL 1831 0 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-45\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"63.183594\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"125.216797\"/>\n <use xlink:href=\"#DejaVuSans-4c\" x=\"193.625\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"244.337891\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"317.53125\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"378.189453\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"439.273438\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"468.765625\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"547.476562\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"622.28125\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"672.28125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"741.763672\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"804.947266\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"878.140625\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"941.617188\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"1004.800781\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_6\">\n <g id=\"line2d_6\">\n <g>\n <use xlink:href=\"#md7682683c2\" x=\"383.264125\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- PREVIOUS_VERSION -->\n <g transform=\"translate(385.796156 384.497156) rotate(-90) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-50\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"60.302734\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"129.785156\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"192.96875\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"261.376953\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"290.869141\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"369.580078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"442.773438\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"506.25\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"556.25\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"624.658203\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"687.841797\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"757.324219\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"820.800781\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"850.292969\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"929.003906\"/>\n </g>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- Predicted label -->\n <g transform=\"translate(235.231781 407.159656) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \nQ 2534 3019 2420 3045 \nQ 2306 3072 2169 3072 \nQ 1681 3072 1420 2755 \nQ 1159 2438 1159 1844 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1341 3275 1631 3429 \nQ 1922 3584 2338 3584 \nQ 2397 3584 2469 3576 \nQ 2541 3569 2628 3553 \nL 2631 2963 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-64\" d=\"M 2906 2969 \nL 2906 4863 \nL 3481 4863 \nL 3481 0 \nL 2906 0 \nL 2906 525 \nQ 2725 213 2448 61 \nQ 2172 -91 1784 -91 \nQ 1150 -91 751 415 \nQ 353 922 353 1747 \nQ 353 2572 751 3078 \nQ 1150 3584 1784 3584 \nQ 2172 3584 2448 3432 \nQ 2725 3281 2906 2969 \nz\nM 947 1747 \nQ 947 1113 1208 752 \nQ 1469 391 1925 391 \nQ 2381 391 2643 752 \nQ 2906 1113 2906 1747 \nQ 2906 2381 2643 2742 \nQ 2381 3103 1925 3103 \nQ 1469 3103 1208 2742 \nQ 947 2381 947 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-69\" d=\"M 603 3500 \nL 1178 3500 \nL 1178 0 \nL 603 0 \nL 603 3500 \nz\nM 603 4863 \nL 1178 4863 \nL 1178 4134 \nL 603 4134 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-63\" d=\"M 3122 3366 \nL 3122 2828 \nQ 2878 2963 2633 3030 \nQ 2388 3097 2138 3097 \nQ 1578 3097 1268 2742 \nQ 959 2388 959 1747 \nQ 959 1106 1268 751 \nQ 1578 397 2138 397 \nQ 2388 397 2633 464 \nQ 2878 531 3122 666 \nL 3122 134 \nQ 2881 22 2623 -34 \nQ 2366 -91 2075 -91 \nQ 1284 -91 818 406 \nQ 353 903 353 1747 \nQ 353 2603 823 3093 \nQ 1294 3584 2113 3584 \nQ 2378 3584 2631 3529 \nQ 2884 3475 3122 3366 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6c\" d=\"M 603 4863 \nL 1178 4863 \nL 1178 0 \nL 603 0 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \nQ 1497 1759 1228 1600 \nQ 959 1441 959 1056 \nQ 959 750 1161 570 \nQ 1363 391 1709 391 \nQ 2188 391 2477 730 \nQ 2766 1069 2766 1631 \nL 2766 1759 \nL 2194 1759 \nz\nM 3341 1997 \nL 3341 0 \nL 2766 0 \nL 2766 531 \nQ 2569 213 2275 61 \nQ 1981 -91 1556 -91 \nQ 1019 -91 701 211 \nQ 384 513 384 1019 \nQ 384 1609 779 1909 \nQ 1175 2209 1959 2209 \nL 2766 2209 \nL 2766 2266 \nQ 2766 2663 2505 2880 \nQ 2244 3097 1772 3097 \nQ 1472 3097 1187 3025 \nQ 903 2953 641 2809 \nL 641 3341 \nQ 956 3463 1253 3523 \nQ 1550 3584 1831 3584 \nQ 2591 3584 2966 3190 \nQ 3341 2797 3341 1997 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-62\" d=\"M 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\nM 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nL 1159 0 \nL 581 0 \nL 581 4863 \nL 1159 4863 \nL 1159 2969 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-50\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"58.552734\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"97.416016\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"158.939453\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"222.416016\"/>\n <use xlink:href=\"#DejaVuSans-63\" x=\"250.199219\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"305.179688\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"344.388672\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"405.912109\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"469.388672\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"501.175781\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"528.958984\"/>\n <use xlink:href=\"#DejaVuSans-62\" x=\"590.238281\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"653.714844\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"715.238281\"/>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_7\">\n <defs>\n <path id=\"m5a8b82a541\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m5a8b82a541\" x=\"139.328125\" y=\"33.175219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- COMPONENT_USED -->\n <g transform=\"translate(34.86875 36.886156) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-43\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"69.824219\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"148.535156\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"234.814453\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"295.117188\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"373.828125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"448.632812\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"511.816406\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"586.621094\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"647.705078\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"697.705078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"770.898438\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"834.375\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"897.558594\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#m5a8b82a541\" x=\"139.328125\" y=\"77.527219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- ON_PLATFORM -->\n <g transform=\"translate(58.775 81.238156) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-4f\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"78.710938\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"153.515625\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"203.515625\"/>\n <use xlink:href=\"#DejaVuSans-4c\" x=\"263.818359\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"321.78125\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"382.439453\"/>\n <use xlink:href=\"#DejaVuSans-46\" x=\"443.523438\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"501.042969\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"579.753906\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"649.236328\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_9\">\n <g>\n <use xlink:href=\"#m5a8b82a541\" x=\"139.328125\" y=\"121.879219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- RECERTIFICATION -->\n <g transform=\"translate(44.317187 125.678437) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-52\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"69.482422\"/>\n <use xlink:href=\"#DejaVuSans-43\" x=\"132.666016\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"202.490234\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"265.673828\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"327.90625\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"388.990234\"/>\n <use xlink:href=\"#DejaVuSans-46\" x=\"418.482422\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"476.001953\"/>\n <use xlink:href=\"#DejaVuSans-43\" x=\"505.494141\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"575.318359\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"635.976562\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"697.060547\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"726.552734\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"805.263672\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_10\">\n <g>\n <use xlink:href=\"#m5a8b82a541\" x=\"139.328125\" y=\"166.231219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- COMPONENT_SHARED -->\n <g transform=\"translate(20.878125 169.942156) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-43\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"69.824219\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"148.535156\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"234.814453\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"295.117188\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"373.828125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"448.632812\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"511.816406\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"586.621094\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"647.705078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"697.705078\"/>\n <use xlink:href=\"#DejaVuSans-48\" x=\"761.181641\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"836.376953\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"904.785156\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"974.267578\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"1037.451172\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_11\">\n <g>\n <use xlink:href=\"#m5a8b82a541\" x=\"139.328125\" y=\"210.583219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_12\">\n <!-- EVALUATION_REUSED -->\n <g transform=\"translate(24.145312 214.294156) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-45\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"63.183594\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"125.216797\"/>\n <use xlink:href=\"#DejaVuSans-4c\" x=\"193.625\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"244.337891\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"317.53125\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"378.189453\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"439.273438\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"468.765625\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"547.476562\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"622.28125\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"672.28125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"741.763672\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"804.947266\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"878.140625\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"941.617188\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"1004.800781\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_6\">\n <g id=\"line2d_12\">\n <g>\n <use xlink:href=\"#m5a8b82a541\" x=\"139.328125\" y=\"254.935219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_13\">\n <!-- PREVIOUS_VERSION -->\n <g transform=\"translate(31.942187 258.646156) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-50\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"60.302734\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"129.785156\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"192.96875\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"261.376953\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"290.869141\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"369.580078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"442.773438\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"506.25\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"556.25\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"624.658203\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"687.841797\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"757.324219\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"820.800781\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"850.292969\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"929.003906\"/>\n </g>\n </g>\n </g>\n <g id=\"text_14\">\n <!-- True label -->\n <g transform=\"translate(14.798437 168.354437) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-75\" d=\"M 544 1381 \nL 544 3500 \nL 1119 3500 \nL 1119 1403 \nQ 1119 906 1312 657 \nQ 1506 409 1894 409 \nQ 2359 409 2629 706 \nQ 2900 1003 2900 1516 \nL 2900 3500 \nL 3475 3500 \nL 3475 0 \nL 2900 0 \nL 2900 538 \nQ 2691 219 2414 64 \nQ 2138 -91 1772 -91 \nQ 1169 -91 856 284 \nQ 544 659 544 1381 \nz\nM 1991 3584 \nL 1991 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-54\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"46.333984\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"87.447266\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"150.826172\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"212.349609\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"244.136719\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"271.919922\"/>\n <use xlink:href=\"#DejaVuSans-62\" x=\"333.199219\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"396.675781\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"458.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 139.328125 277.111219 \nL 139.328125 10.999219 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 405.440125 277.111219 \nL 405.440125 10.999219 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 139.328125 277.111219 \nL 405.440125 277.111219 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 139.328125 10.999219 \nL 405.440125 10.999219 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_15\">\n <!-- 0.69 -->\n <g style=\"fill: #440154\" transform=\"translate(150.371312 35.934594) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-2e\" d=\"M 684 794 \nL 1344 794 \nL 1344 0 \nL 684 0 \nL 684 794 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-36\" d=\"M 2113 2584 \nQ 1688 2584 1439 2293 \nQ 1191 2003 1191 1497 \nQ 1191 994 1439 701 \nQ 1688 409 2113 409 \nQ 2538 409 2786 701 \nQ 3034 994 3034 1497 \nQ 3034 2003 2786 2293 \nQ 2538 2584 2113 2584 \nz\nM 3366 4563 \nL 3366 3988 \nQ 3128 4100 2886 4159 \nQ 2644 4219 2406 4219 \nQ 1781 4219 1451 3797 \nQ 1122 3375 1075 2522 \nQ 1259 2794 1537 2939 \nQ 1816 3084 2150 3084 \nQ 2853 3084 3261 2657 \nQ 3669 2231 3669 1497 \nQ 3669 778 3244 343 \nQ 2819 -91 2113 -91 \nQ 1303 -91 875 529 \nQ 447 1150 447 2328 \nQ 447 3434 972 4092 \nQ 1497 4750 2381 4750 \nQ 2619 4750 2861 4703 \nQ 3103 4656 3366 4563 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-39\" d=\"M 703 97 \nL 703 672 \nQ 941 559 1184 500 \nQ 1428 441 1663 441 \nQ 2288 441 2617 861 \nQ 2947 1281 2994 2138 \nQ 2813 1869 2534 1725 \nQ 2256 1581 1919 1581 \nQ 1219 1581 811 2004 \nQ 403 2428 403 3163 \nQ 403 3881 828 4315 \nQ 1253 4750 1959 4750 \nQ 2769 4750 3195 4129 \nQ 3622 3509 3622 2328 \nQ 3622 1225 3098 567 \nQ 2575 -91 1691 -91 \nQ 1453 -91 1209 -44 \nQ 966 3 703 97 \nz\nM 1959 2075 \nQ 2384 2075 2632 2365 \nQ 2881 2656 2881 3163 \nQ 2881 3666 2632 3958 \nQ 2384 4250 1959 4250 \nQ 1534 4250 1286 3958 \nQ 1038 3666 1038 3163 \nQ 1038 2656 1286 2365 \nQ 1534 2075 1959 2075 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-36\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-39\" x=\"159.033203\"/>\n </g>\n </g>\n <g id=\"text_16\">\n <!-- 0.25 -->\n <g style=\"fill: #fde725\" transform=\"translate(194.723312 35.934594) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-35\" d=\"M 691 4666 \nL 3169 4666 \nL 3169 4134 \nL 1269 4134 \nL 1269 2991 \nQ 1406 3038 1543 3061 \nQ 1681 3084 1819 3084 \nQ 2600 3084 3056 2656 \nQ 3513 2228 3513 1497 \nQ 3513 744 3044 326 \nQ 2575 -91 1722 -91 \nQ 1428 -91 1123 -41 \nQ 819 9 494 109 \nL 494 744 \nQ 775 591 1075 516 \nQ 1375 441 1709 441 \nQ 2250 441 2565 725 \nQ 2881 1009 2881 1497 \nQ 2881 1984 2565 2268 \nQ 2250 2553 1709 2553 \nQ 1456 2553 1204 2497 \nQ 953 2441 691 2322 \nL 691 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-32\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"159.033203\"/>\n </g>\n </g>\n <g id=\"text_17\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(247.026875 35.934594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_18\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(291.378875 35.934594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_19\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(335.730875 35.934594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_20\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(380.082875 35.934594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_21\">\n <!-- 0.1 -->\n <g style=\"fill: #fde725\" transform=\"translate(153.552562 80.286594) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"95.410156\"/>\n </g>\n </g>\n <g id=\"text_22\">\n <!-- 0.25 -->\n <g style=\"fill: #fde725\" transform=\"translate(194.723312 80.286594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-32\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"159.033203\"/>\n </g>\n </g>\n <g id=\"text_23\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(247.026875 80.286594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_24\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(291.378875 80.286594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_25\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(335.730875 80.286594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_26\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(380.082875 80.286594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_27\">\n <!-- 0.017 -->\n <g style=\"fill: #fde725\" transform=\"translate(147.190062 124.638594) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-37\" d=\"M 525 4666 \nL 3525 4666 \nL 3525 4397 \nL 1831 0 \nL 1172 0 \nL 2766 4134 \nL 525 4134 \nL 525 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"159.033203\"/>\n <use xlink:href=\"#DejaVuSans-37\" x=\"222.65625\"/>\n </g>\n </g>\n <g id=\"text_28\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(202.674875 124.638594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_29\">\n <!-- 0.89 -->\n <g style=\"fill: #440154\" transform=\"translate(239.075312 124.638594) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-38\" d=\"M 2034 2216 \nQ 1584 2216 1326 1975 \nQ 1069 1734 1069 1313 \nQ 1069 891 1326 650 \nQ 1584 409 2034 409 \nQ 2484 409 2743 651 \nQ 3003 894 3003 1313 \nQ 3003 1734 2745 1975 \nQ 2488 2216 2034 2216 \nz\nM 1403 2484 \nQ 997 2584 770 2862 \nQ 544 3141 544 3541 \nQ 544 4100 942 4425 \nQ 1341 4750 2034 4750 \nQ 2731 4750 3128 4425 \nQ 3525 4100 3525 3541 \nQ 3525 3141 3298 2862 \nQ 3072 2584 2669 2484 \nQ 3125 2378 3379 2068 \nQ 3634 1759 3634 1313 \nQ 3634 634 3220 271 \nQ 2806 -91 2034 -91 \nQ 1263 -91 848 271 \nQ 434 634 434 1313 \nQ 434 1759 690 2068 \nQ 947 2378 1403 2484 \nz\nM 1172 3481 \nQ 1172 3119 1398 2916 \nQ 1625 2713 2034 2713 \nQ 2441 2713 2670 2916 \nQ 2900 3119 2900 3481 \nQ 2900 3844 2670 4047 \nQ 2441 4250 2034 4250 \nQ 1625 4250 1398 4047 \nQ 1172 3844 1172 3481 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-38\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-39\" x=\"159.033203\"/>\n </g>\n </g>\n <g id=\"text_30\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(291.378875 124.638594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_31\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(335.730875 124.638594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_32\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(380.082875 124.638594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_33\">\n <!-- 0.051 -->\n <g style=\"fill: #fde725\" transform=\"translate(147.190062 168.990594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"159.033203\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"222.65625\"/>\n </g>\n </g>\n <g id=\"text_34\">\n <!-- 0.25 -->\n <g style=\"fill: #fde725\" transform=\"translate(194.723312 168.990594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-32\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"159.033203\"/>\n </g>\n </g>\n <g id=\"text_35\">\n <!-- 0.053 -->\n <g style=\"fill: #fde725\" transform=\"translate(235.894062 168.990594) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-33\" d=\"M 2597 2516 \nQ 3050 2419 3304 2112 \nQ 3559 1806 3559 1356 \nQ 3559 666 3084 287 \nQ 2609 -91 1734 -91 \nQ 1441 -91 1130 -33 \nQ 819 25 488 141 \nL 488 750 \nQ 750 597 1062 519 \nQ 1375 441 1716 441 \nQ 2309 441 2620 675 \nQ 2931 909 2931 1356 \nQ 2931 1769 2642 2001 \nQ 2353 2234 1838 2234 \nL 1294 2234 \nL 1294 2753 \nL 1863 2753 \nQ 2328 2753 2575 2939 \nQ 2822 3125 2822 3475 \nQ 2822 3834 2567 4026 \nQ 2313 4219 1838 4219 \nQ 1578 4219 1281 4162 \nQ 984 4106 628 3988 \nL 628 4550 \nQ 988 4650 1302 4700 \nQ 1616 4750 1894 4750 \nQ 2613 4750 3031 4423 \nQ 3450 4097 3450 3541 \nQ 3450 3153 3228 2886 \nQ 3006 2619 2597 2516 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"159.033203\"/>\n <use xlink:href=\"#DejaVuSans-33\" x=\"222.65625\"/>\n </g>\n </g>\n <g id=\"text_36\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(291.378875 168.990594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_37\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(335.730875 168.990594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_38\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(380.082875 168.990594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_39\">\n <!-- 0.1 -->\n <g style=\"fill: #fde725\" transform=\"translate(153.552562 213.342594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"95.410156\"/>\n </g>\n </g>\n <g id=\"text_40\">\n <!-- 0.25 -->\n <g style=\"fill: #fde725\" transform=\"translate(194.723312 213.342594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-32\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"159.033203\"/>\n </g>\n </g>\n <g id=\"text_41\">\n <!-- 0.053 -->\n <g style=\"fill: #fde725\" transform=\"translate(235.894062 213.342594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"159.033203\"/>\n <use xlink:href=\"#DejaVuSans-33\" x=\"222.65625\"/>\n </g>\n </g>\n <g id=\"text_42\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(291.378875 213.342594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_43\">\n <!-- 0.5 -->\n <g style=\"fill: #440154\" transform=\"translate(330.960562 213.342594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n <g id=\"text_44\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(380.082875 213.342594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_45\">\n <!-- 0.034 -->\n <g style=\"fill: #fde725\" transform=\"translate(147.190062 257.694594) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n <use xlink:href=\"#DejaVuSans-33\" x=\"159.033203\"/>\n <use xlink:href=\"#DejaVuSans-34\" x=\"222.65625\"/>\n </g>\n </g>\n <g id=\"text_46\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(202.674875 257.694594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_47\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(247.026875 257.694594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_48\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(291.378875 257.694594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_49\">\n <!-- 0.5 -->\n <g style=\"fill: #440154\" transform=\"translate(330.960562 257.694594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n <g id=\"text_50\">\n <!-- 1 -->\n <g style=\"fill: #440154\" transform=\"translate(380.082875 257.694594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_2\">\n <g id=\"patch_7\">\n <path d=\"M 423.296125 277.111219 \nL 436.601725 277.111219 \nL 436.601725 10.999219 \nL 423.296125 10.999219 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g id=\"patch_8\">\n <path clip-path=\"url(#p8cd11df235)\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.01; stroke-linejoin: miter\"/>\n </g>\n <image xlink:href=\"data:image/png;base64,\niVBORw0KGgoAAAANSUhEUgAAABIAAAFxCAYAAAB+2fgXAAAB8UlEQVR4nO2d2W1DMRADJVmlpYT0X0qcEvZ9DIwxwS2AEI+lZDiI98/+fS9g7tqHwFl3n40AMcdZpfYMSEiNOdHdhzmUkNqCqGEnAjWCAnk3tCJCakLXmuxpQI181JKT3Zv264Ca7Hnum+tsBCc52UJqtf9zQF3aeXzJJqlhQJRGyfYjOEZqVI7aR/OA1KjtD062kRoFpPvgR4mt7CMIqMmegYzU6toEZHz6QUC67VcWGwNUavOU2gMgcPttS6srNiG1JnucYGpN9jzB9oPUKCAfNd2uCTUKpqazX0jN55oukLV/nmD7MWo+jYIDmaxRMLW1meeob9d8feQLZLJGuckWXpC6ZJPUmBz5rmyh/b6lbbKfACE4IDXo+5VojbilXbFLu3P7KJoaBOS7jijXMI2E1HxVy7mGwDip5Sb72DRS2o/g1LUHcw/0YuNuWkpsYbJLbRxlsnM1KrUZSPeZtq59EijZ/j8EyEitrk3DUXvZXBNqhNn/EiabEVt4HYHJDg5ksP0UNd3SctR0VUs1ZKk9AKK2P7jYjEsb3EdC12SBVBYb1Ue6RwQVSGxFhK4F9xF3ZQuLTaZRHxHzkG9Im2sYNVAjBMeoEXUkso8oIOjvhshHBAT00v2/kQOJjbmGnYhMNkbN9gMTnP26386gxP4HjEeN5MKs2JsAAAAASUVORK5CYII=\" id=\"imageca5793d0d9\" transform=\"scale(1 -1) translate(0 -265.68)\" x=\"423.36\" y=\"-10.8\" width=\"12.96\" height=\"265.68\"/>\n <g id=\"matplotlib.axis_3\"/>\n <g id=\"matplotlib.axis_4\">\n <g id=\"ytick_7\">\n <g id=\"line2d_13\">\n <defs>\n <path id=\"m7ebe9b0079\" d=\"M 0 0 \nL 3.5 0 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m7ebe9b0079\" x=\"436.601725\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_51\">\n <!-- 0.0 -->\n <g transform=\"translate(443.601725 280.910437) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_8\">\n <g id=\"line2d_14\">\n <g>\n <use xlink:href=\"#m7ebe9b0079\" x=\"436.601725\" y=\"223.888819\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_52\">\n <!-- 0.2 -->\n <g transform=\"translate(443.601725 227.688037) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-32\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_9\">\n <g id=\"line2d_15\">\n <g>\n <use xlink:href=\"#m7ebe9b0079\" x=\"436.601725\" y=\"170.666419\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_53\">\n <!-- 0.4 -->\n <g transform=\"translate(443.601725 174.465637) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-34\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_10\">\n <g id=\"line2d_16\">\n <g>\n <use xlink:href=\"#m7ebe9b0079\" x=\"436.601725\" y=\"117.444019\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_54\">\n <!-- 0.6 -->\n <g transform=\"translate(443.601725 121.243237) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-36\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_11\">\n <g id=\"line2d_17\">\n <g>\n <use xlink:href=\"#m7ebe9b0079\" x=\"436.601725\" y=\"64.221619\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_55\">\n <!-- 0.8 -->\n <g transform=\"translate(443.601725 68.020837) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-38\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_12\">\n <g id=\"line2d_18\">\n <g>\n <use xlink:href=\"#m7ebe9b0079\" x=\"436.601725\" y=\"10.999219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_56\">\n <!-- 1.0 -->\n <g transform=\"translate(443.601725 14.798437) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n </g>\n <g id=\"LineCollection_1\"/>\n <g id=\"patch_9\">\n <path d=\"M 423.296125 277.111219 \nL 429.948925 277.111219 \nL 436.601725 277.111219 \nL 436.601725 10.999219 \nL 429.948925 10.999219 \nL 423.296125 10.999219 \nL 423.296125 277.111219 \nz\n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"pf1de5c748f\">\n <rect x=\"139.328125\" y=\"10.999219\" width=\"266.112\" height=\"266.112\"/>\n </clipPath>\n <clipPath id=\"p8cd11df235\">\n <rect x=\"423.296125\" y=\"10.999219\" width=\"13.3056\" height=\"266.112\"/>\n </clipPath>\n </defs>\n</svg>\n",
+ "image/png": "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",
+ "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"463.437662pt\" height=\"413.172156pt\" viewBox=\"0 0 463.437662 413.172156\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2023-03-17T14:09:47.585053</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.7.1, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 413.172156 \nL 463.437662 413.172156 \nL 463.437662 0 \nL 0 0 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 136.060937 277.111219 \nL 402.172937 277.111219 \nL 402.172937 10.999219 \nL 136.060937 10.999219 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pb180030c50)\">\n <image xlink:href=\"data:image/png;base64,\niVBORw0KGgoAAAANSUhEUgAAAXIAAAFyCAYAAADoJFEJAAAFl0lEQVR4nO3WsU0DQRRFURY5WokGXAWZEbEl4kXuimI2pgM2owqX4NQ0QICE5NGFcyp4wczVn47T6XoH3NRlOYyekDCv2+gJCfejBwDwO0IOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcUIOECfkAHFCDhAn5ABxQg4QJ+QAcdNxOl1Hj4D/5v38OXpCwsv+cfSEBBc5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QJyQA8QJOUCckAPECTlAnJADxAk5QNz0/Pp2HT2iYF630RMAvuUiB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4jbzes2ekPCZTmMnpDgPcHtucgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4oQcIE7IAeKEHCBOyAHihBwgTsgB4nb7j4fRGxLOT9voCfwhl+UwekLCvPp3P+EiB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4gTcoA4IQeIE3KAOCEHiBNygDghB4j7ArMqGgZt8MWdAAAAAElFTkSuQmCC\" id=\"image9f08aca78e\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"136.060937\" y=\"-10.711219\" width=\"266.4\" height=\"266.4\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <defs>\n <path id=\"m0517038e93\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m0517038e93\" x=\"162.672137\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- EVALUATION_REUSED -->\n <g transform=\"translate(165.204169 392.294031) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-45\" d=\"M 628 4666 \nL 3578 4666 \nL 3578 4134 \nL 1259 4134 \nL 1259 2753 \nL 3481 2753 \nL 3481 2222 \nL 1259 2222 \nL 1259 531 \nL 3634 531 \nL 3634 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-56\" d=\"M 1831 0 \nL 50 4666 \nL 709 4666 \nL 2188 738 \nL 3669 4666 \nL 4325 4666 \nL 2547 0 \nL 1831 0 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-41\" d=\"M 2188 4044 \nL 1331 1722 \nL 3047 1722 \nL 2188 4044 \nz\nM 1831 4666 \nL 2547 4666 \nL 4325 0 \nL 3669 0 \nL 3244 1197 \nL 1141 1197 \nL 716 0 \nL 50 0 \nL 1831 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-4c\" d=\"M 628 4666 \nL 1259 4666 \nL 1259 531 \nL 3531 531 \nL 3531 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-55\" d=\"M 556 4666 \nL 1191 4666 \nL 1191 1831 \nQ 1191 1081 1462 751 \nQ 1734 422 2344 422 \nQ 2950 422 3222 751 \nQ 3494 1081 3494 1831 \nL 3494 4666 \nL 4128 4666 \nL 4128 1753 \nQ 4128 841 3676 375 \nQ 3225 -91 2344 -91 \nQ 1459 -91 1007 375 \nQ 556 841 556 1753 \nL 556 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-54\" d=\"M -19 4666 \nL 3928 4666 \nL 3928 4134 \nL 2272 4134 \nL 2272 0 \nL 1638 0 \nL 1638 4134 \nL -19 4134 \nL -19 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-49\" d=\"M 628 4666 \nL 1259 4666 \nL 1259 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-4f\" d=\"M 2522 4238 \nQ 1834 4238 1429 3725 \nQ 1025 3213 1025 2328 \nQ 1025 1447 1429 934 \nQ 1834 422 2522 422 \nQ 3209 422 3611 934 \nQ 4013 1447 4013 2328 \nQ 4013 3213 3611 3725 \nQ 3209 4238 2522 4238 \nz\nM 2522 4750 \nQ 3503 4750 4090 4092 \nQ 4678 3434 4678 2328 \nQ 4678 1225 4090 567 \nQ 3503 -91 2522 -91 \nQ 1538 -91 948 565 \nQ 359 1222 359 2328 \nQ 359 3434 948 4092 \nQ 1538 4750 2522 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-4e\" d=\"M 628 4666 \nL 1478 4666 \nL 3547 763 \nL 3547 4666 \nL 4159 4666 \nL 4159 0 \nL 3309 0 \nL 1241 3903 \nL 1241 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-5f\" d=\"M 3263 -1063 \nL 3263 -1509 \nL -63 -1509 \nL -63 -1063 \nL 3263 -1063 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-52\" d=\"M 2841 2188 \nQ 3044 2119 3236 1894 \nQ 3428 1669 3622 1275 \nL 4263 0 \nL 3584 0 \nL 2988 1197 \nQ 2756 1666 2539 1819 \nQ 2322 1972 1947 1972 \nL 1259 1972 \nL 1259 0 \nL 628 0 \nL 628 4666 \nL 2053 4666 \nQ 2853 4666 3247 4331 \nQ 3641 3997 3641 3322 \nQ 3641 2881 3436 2590 \nQ 3231 2300 2841 2188 \nz\nM 1259 4147 \nL 1259 2491 \nL 2053 2491 \nQ 2509 2491 2742 2702 \nQ 2975 2913 2975 3322 \nQ 2975 3731 2742 3939 \nQ 2509 4147 2053 4147 \nL 1259 4147 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-53\" d=\"M 3425 4513 \nL 3425 3897 \nQ 3066 4069 2747 4153 \nQ 2428 4238 2131 4238 \nQ 1616 4238 1336 4038 \nQ 1056 3838 1056 3469 \nQ 1056 3159 1242 3001 \nQ 1428 2844 1947 2747 \nL 2328 2669 \nQ 3034 2534 3370 2195 \nQ 3706 1856 3706 1288 \nQ 3706 609 3251 259 \nQ 2797 -91 1919 -91 \nQ 1588 -91 1214 -16 \nQ 841 59 441 206 \nL 441 856 \nQ 825 641 1194 531 \nQ 1563 422 1919 422 \nQ 2459 422 2753 634 \nQ 3047 847 3047 1241 \nQ 3047 1584 2836 1778 \nQ 2625 1972 2144 2069 \nL 1759 2144 \nQ 1053 2284 737 2584 \nQ 422 2884 422 3419 \nQ 422 4038 858 4394 \nQ 1294 4750 2059 4750 \nQ 2388 4750 2728 4690 \nQ 3069 4631 3425 4513 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-44\" d=\"M 1259 4147 \nL 1259 519 \nL 2022 519 \nQ 2988 519 3436 956 \nQ 3884 1394 3884 2338 \nQ 3884 3275 3436 3711 \nQ 2988 4147 2022 4147 \nL 1259 4147 \nz\nM 628 4666 \nL 1925 4666 \nQ 3281 4666 3915 4102 \nQ 4550 3538 4550 2338 \nQ 4550 1131 3912 565 \nQ 3275 0 1925 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-45\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"63.183594\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"125.216797\"/>\n <use xlink:href=\"#DejaVuSans-4c\" x=\"193.625\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"244.337891\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"317.53125\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"378.189453\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"439.273438\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"468.765625\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"547.476562\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"622.28125\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"672.28125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"741.763672\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"804.947266\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"878.140625\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"941.617188\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"1004.800781\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_2\">\n <g>\n <use xlink:href=\"#m0517038e93\" x=\"215.894537\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- ON_PLATFORM -->\n <g transform=\"translate(218.426569 357.664344) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-50\" d=\"M 1259 4147 \nL 1259 2394 \nL 2053 2394 \nQ 2494 2394 2734 2622 \nQ 2975 2850 2975 3272 \nQ 2975 3691 2734 3919 \nQ 2494 4147 2053 4147 \nL 1259 4147 \nz\nM 628 4666 \nL 2053 4666 \nQ 2838 4666 3239 4311 \nQ 3641 3956 3641 3272 \nQ 3641 2581 3239 2228 \nQ 2838 1875 2053 1875 \nL 1259 1875 \nL 1259 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-46\" d=\"M 628 4666 \nL 3309 4666 \nL 3309 4134 \nL 1259 4134 \nL 1259 2759 \nL 3109 2759 \nL 3109 2228 \nL 1259 2228 \nL 1259 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-4d\" d=\"M 628 4666 \nL 1569 4666 \nL 2759 1491 \nL 3956 4666 \nL 4897 4666 \nL 4897 0 \nL 4281 0 \nL 4281 4097 \nL 3078 897 \nL 2444 897 \nL 1241 4097 \nL 1241 0 \nL 628 0 \nL 628 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-4f\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"78.710938\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"153.515625\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"203.515625\"/>\n <use xlink:href=\"#DejaVuSans-4c\" x=\"263.818359\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"321.78125\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"382.439453\"/>\n <use xlink:href=\"#DejaVuSans-46\" x=\"443.523438\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"501.042969\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"579.753906\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"649.236328\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_3\">\n <g>\n <use xlink:href=\"#m0517038e93\" x=\"269.116937\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- PREVIOUS_VERSION -->\n <g transform=\"translate(271.648969 384.497156) rotate(-90) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-50\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"60.302734\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"129.785156\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"192.96875\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"261.376953\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"290.869141\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"369.580078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"442.773438\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"506.25\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"556.25\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"624.658203\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"687.841797\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"757.324219\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"820.800781\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"850.292969\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"929.003906\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_4\">\n <g>\n <use xlink:href=\"#m0517038e93\" x=\"322.339337\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- COMPONENT_USED -->\n <g transform=\"translate(324.871369 381.570594) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-43\" d=\"M 4122 4306 \nL 4122 3641 \nQ 3803 3938 3442 4084 \nQ 3081 4231 2675 4231 \nQ 1875 4231 1450 3742 \nQ 1025 3253 1025 2328 \nQ 1025 1406 1450 917 \nQ 1875 428 2675 428 \nQ 3081 428 3442 575 \nQ 3803 722 4122 1019 \nL 4122 359 \nQ 3791 134 3420 21 \nQ 3050 -91 2638 -91 \nQ 1578 -91 968 557 \nQ 359 1206 359 2328 \nQ 359 3453 968 4101 \nQ 1578 4750 2638 4750 \nQ 3056 4750 3426 4639 \nQ 3797 4528 4122 4306 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-43\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"69.824219\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"148.535156\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"234.814453\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"295.117188\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"373.828125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"448.632812\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"511.816406\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"586.621094\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"647.705078\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"697.705078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"770.898438\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"834.375\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"897.558594\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_5\">\n <g id=\"line2d_5\">\n <g>\n <use xlink:href=\"#m0517038e93\" x=\"375.561737\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- RECERTIFICATION -->\n <g transform=\"translate(378.321112 372.122156) rotate(-90) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-52\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"69.482422\"/>\n <use xlink:href=\"#DejaVuSans-43\" x=\"132.666016\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"202.490234\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"265.673828\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"327.90625\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"388.990234\"/>\n <use xlink:href=\"#DejaVuSans-46\" x=\"418.482422\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"476.001953\"/>\n <use xlink:href=\"#DejaVuSans-43\" x=\"505.494141\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"575.318359\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"635.976562\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"697.060547\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"726.552734\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"805.263672\"/>\n </g>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- Predicted label -->\n <g transform=\"translate(231.964594 403.892469) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \nQ 2534 3019 2420 3045 \nQ 2306 3072 2169 3072 \nQ 1681 3072 1420 2755 \nQ 1159 2438 1159 1844 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1341 3275 1631 3429 \nQ 1922 3584 2338 3584 \nQ 2397 3584 2469 3576 \nQ 2541 3569 2628 3553 \nL 2631 2963 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-64\" d=\"M 2906 2969 \nL 2906 4863 \nL 3481 4863 \nL 3481 0 \nL 2906 0 \nL 2906 525 \nQ 2725 213 2448 61 \nQ 2172 -91 1784 -91 \nQ 1150 -91 751 415 \nQ 353 922 353 1747 \nQ 353 2572 751 3078 \nQ 1150 3584 1784 3584 \nQ 2172 3584 2448 3432 \nQ 2725 3281 2906 2969 \nz\nM 947 1747 \nQ 947 1113 1208 752 \nQ 1469 391 1925 391 \nQ 2381 391 2643 752 \nQ 2906 1113 2906 1747 \nQ 2906 2381 2643 2742 \nQ 2381 3103 1925 3103 \nQ 1469 3103 1208 2742 \nQ 947 2381 947 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-69\" d=\"M 603 3500 \nL 1178 3500 \nL 1178 0 \nL 603 0 \nL 603 3500 \nz\nM 603 4863 \nL 1178 4863 \nL 1178 4134 \nL 603 4134 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-63\" d=\"M 3122 3366 \nL 3122 2828 \nQ 2878 2963 2633 3030 \nQ 2388 3097 2138 3097 \nQ 1578 3097 1268 2742 \nQ 959 2388 959 1747 \nQ 959 1106 1268 751 \nQ 1578 397 2138 397 \nQ 2388 397 2633 464 \nQ 2878 531 3122 666 \nL 3122 134 \nQ 2881 22 2623 -34 \nQ 2366 -91 2075 -91 \nQ 1284 -91 818 406 \nQ 353 903 353 1747 \nQ 353 2603 823 3093 \nQ 1294 3584 2113 3584 \nQ 2378 3584 2631 3529 \nQ 2884 3475 3122 3366 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6c\" d=\"M 603 4863 \nL 1178 4863 \nL 1178 0 \nL 603 0 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \nQ 1497 1759 1228 1600 \nQ 959 1441 959 1056 \nQ 959 750 1161 570 \nQ 1363 391 1709 391 \nQ 2188 391 2477 730 \nQ 2766 1069 2766 1631 \nL 2766 1759 \nL 2194 1759 \nz\nM 3341 1997 \nL 3341 0 \nL 2766 0 \nL 2766 531 \nQ 2569 213 2275 61 \nQ 1981 -91 1556 -91 \nQ 1019 -91 701 211 \nQ 384 513 384 1019 \nQ 384 1609 779 1909 \nQ 1175 2209 1959 2209 \nL 2766 2209 \nL 2766 2266 \nQ 2766 2663 2505 2880 \nQ 2244 3097 1772 3097 \nQ 1472 3097 1187 3025 \nQ 903 2953 641 2809 \nL 641 3341 \nQ 956 3463 1253 3523 \nQ 1550 3584 1831 3584 \nQ 2591 3584 2966 3190 \nQ 3341 2797 3341 1997 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-62\" d=\"M 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\nM 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nL 1159 0 \nL 581 0 \nL 581 4863 \nL 1159 4863 \nL 1159 2969 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-50\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"58.552734\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"97.416016\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"158.939453\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"222.416016\"/>\n <use xlink:href=\"#DejaVuSans-63\" x=\"250.199219\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"305.179688\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"344.388672\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"405.912109\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"469.388672\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"501.175781\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"528.958984\"/>\n <use xlink:href=\"#DejaVuSans-62\" x=\"590.238281\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"653.714844\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"715.238281\"/>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_6\">\n <defs>\n <path id=\"m1045f30105\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m1045f30105\" x=\"136.060937\" y=\"37.610419\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- EVALUATION_REUSED -->\n <g transform=\"translate(20.878125 41.321356) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-45\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"63.183594\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"125.216797\"/>\n <use xlink:href=\"#DejaVuSans-4c\" x=\"193.625\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"244.337891\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"317.53125\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"378.189453\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"439.273438\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"468.765625\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"547.476562\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"622.28125\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"672.28125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"741.763672\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"804.947266\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"878.140625\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"941.617188\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"1004.800781\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_7\">\n <g>\n <use xlink:href=\"#m1045f30105\" x=\"136.060937\" y=\"90.832819\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- ON_PLATFORM -->\n <g transform=\"translate(55.507812 94.543756) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-4f\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"78.710938\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"153.515625\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"203.515625\"/>\n <use xlink:href=\"#DejaVuSans-4c\" x=\"263.818359\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"321.78125\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"382.439453\"/>\n <use xlink:href=\"#DejaVuSans-46\" x=\"443.523438\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"501.042969\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"579.753906\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"649.236328\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#m1045f30105\" x=\"136.060937\" y=\"144.055219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- PREVIOUS_VERSION -->\n <g transform=\"translate(28.675 147.766156) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-50\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"60.302734\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"129.785156\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"192.96875\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"261.376953\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"290.869141\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"369.580078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"442.773438\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"506.25\"/>\n <use xlink:href=\"#DejaVuSans-56\" x=\"556.25\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"624.658203\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"687.841797\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"757.324219\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"820.800781\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"850.292969\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"929.003906\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_9\">\n <g>\n <use xlink:href=\"#m1045f30105\" x=\"136.060937\" y=\"197.277619\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- COMPONENT_USED -->\n <g transform=\"translate(31.601562 200.988556) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-43\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"69.824219\"/>\n <use xlink:href=\"#DejaVuSans-4d\" x=\"148.535156\"/>\n <use xlink:href=\"#DejaVuSans-50\" x=\"234.814453\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"295.117188\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"373.828125\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"448.632812\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"511.816406\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"586.621094\"/>\n <use xlink:href=\"#DejaVuSans-5f\" x=\"647.705078\"/>\n <use xlink:href=\"#DejaVuSans-55\" x=\"697.705078\"/>\n <use xlink:href=\"#DejaVuSans-53\" x=\"770.898438\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"834.375\"/>\n <use xlink:href=\"#DejaVuSans-44\" x=\"897.558594\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_10\">\n <g>\n <use xlink:href=\"#m1045f30105\" x=\"136.060937\" y=\"250.500019\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- RECERTIFICATION -->\n <g transform=\"translate(41.05 254.299237) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-52\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"69.482422\"/>\n <use xlink:href=\"#DejaVuSans-43\" x=\"132.666016\"/>\n <use xlink:href=\"#DejaVuSans-45\" x=\"202.490234\"/>\n <use xlink:href=\"#DejaVuSans-52\" x=\"265.673828\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"327.90625\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"388.990234\"/>\n <use xlink:href=\"#DejaVuSans-46\" x=\"418.482422\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"476.001953\"/>\n <use xlink:href=\"#DejaVuSans-43\" x=\"505.494141\"/>\n <use xlink:href=\"#DejaVuSans-41\" x=\"575.318359\"/>\n <use xlink:href=\"#DejaVuSans-54\" x=\"635.976562\"/>\n <use xlink:href=\"#DejaVuSans-49\" x=\"697.060547\"/>\n <use xlink:href=\"#DejaVuSans-4f\" x=\"726.552734\"/>\n <use xlink:href=\"#DejaVuSans-4e\" x=\"805.263672\"/>\n </g>\n </g>\n </g>\n <g id=\"text_12\">\n <!-- True label -->\n <g transform=\"translate(14.798437 168.354437) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-75\" d=\"M 544 1381 \nL 544 3500 \nL 1119 3500 \nL 1119 1403 \nQ 1119 906 1312 657 \nQ 1506 409 1894 409 \nQ 2359 409 2629 706 \nQ 2900 1003 2900 1516 \nL 2900 3500 \nL 3475 3500 \nL 3475 0 \nL 2900 0 \nL 2900 538 \nQ 2691 219 2414 64 \nQ 2138 -91 1772 -91 \nQ 1169 -91 856 284 \nQ 544 659 544 1381 \nz\nM 1991 3584 \nL 1991 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-54\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"46.333984\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"87.447266\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"150.826172\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"212.349609\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"244.136719\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"271.919922\"/>\n <use xlink:href=\"#DejaVuSans-62\" x=\"333.199219\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"396.675781\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"458.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 136.060937 277.111219 \nL 136.060937 10.999219 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 402.172937 277.111219 \nL 402.172937 10.999219 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 136.060937 277.111219 \nL 402.172937 277.111219 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 136.060937 10.999219 \nL 402.172937 10.999219 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_13\">\n <!-- 3 -->\n <g style=\"fill: #440154\" transform=\"translate(159.490887 40.369794) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-33\" d=\"M 2597 2516 \nQ 3050 2419 3304 2112 \nQ 3559 1806 3559 1356 \nQ 3559 666 3084 287 \nQ 2609 -91 1734 -91 \nQ 1441 -91 1130 -33 \nQ 819 25 488 141 \nL 488 750 \nQ 750 597 1062 519 \nQ 1375 441 1716 441 \nQ 2309 441 2620 675 \nQ 2931 909 2931 1356 \nQ 2931 1769 2642 2001 \nQ 2353 2234 1838 2234 \nL 1294 2234 \nL 1294 2753 \nL 1863 2753 \nQ 2328 2753 2575 2939 \nQ 2822 3125 2822 3475 \nQ 2822 3834 2567 4026 \nQ 2313 4219 1838 4219 \nQ 1578 4219 1281 4162 \nQ 984 4106 628 3988 \nL 628 4550 \nQ 988 4650 1302 4700 \nQ 1616 4750 1894 4750 \nQ 2613 4750 3031 4423 \nQ 3450 4097 3450 3541 \nQ 3450 3153 3228 2886 \nQ 3006 2619 2597 2516 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-33\"/>\n </g>\n </g>\n <g id=\"text_14\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(212.713287 40.369794) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_15\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(265.935687 40.369794) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_16\">\n <!-- 1 -->\n <g style=\"fill: #fde725\" transform=\"translate(319.158087 40.369794) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\"/>\n </g>\n </g>\n <g id=\"text_17\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(372.380487 40.369794) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_18\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(159.490887 93.592194) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_19\">\n <!-- 1 -->\n <g style=\"fill: #fde725\" transform=\"translate(212.713287 93.592194) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n </g>\n </g>\n <g id=\"text_20\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(265.935687 93.592194) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_21\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(319.158087 93.592194) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_22\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(372.380487 93.592194) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_23\">\n <!-- 1 -->\n <g style=\"fill: #fde725\" transform=\"translate(159.490887 146.814594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n </g>\n </g>\n <g id=\"text_24\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(212.713287 146.814594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_25\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(265.935687 146.814594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_26\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(319.158087 146.814594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_27\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(372.380487 146.814594) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_28\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(159.490887 200.036994) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_29\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(212.713287 200.036994) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_30\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(265.935687 200.036994) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_31\">\n <!-- 4 -->\n <g style=\"fill: #440154\" transform=\"translate(319.158087 200.036994) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-34\"/>\n </g>\n </g>\n <g id=\"text_32\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(372.380487 200.036994) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_33\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(159.490887 253.259394) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_34\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(212.713287 253.259394) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_35\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(265.935687 253.259394) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n <g id=\"text_36\">\n <!-- 1 -->\n <g style=\"fill: #fde725\" transform=\"translate(319.158087 253.259394) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n </g>\n </g>\n <g id=\"text_37\">\n <!-- 0 -->\n <g style=\"fill: #fde725\" transform=\"translate(372.380487 253.259394) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_2\">\n <g id=\"patch_7\">\n <path d=\"M 420.028937 277.111219 \nL 433.334537 277.111219 \nL 433.334537 10.999219 \nL 420.028937 10.999219 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <image xlink:href=\"data:image/png;base64,\niVBORw0KGgoAAAANSUhEUgAAABMAAAFyCAYAAAAXj+GHAAAB+0lEQVR4nO2diQ0CQQwDs09plED/pQA15DQSIzlbgHWT2MmeQLBe6/0t6Nxam9IqTqmq7tqLExvM9mExi8XkxOhucnoo5i3wyWBrsJhaa4DZFGOy3dQGnYxTTM0ygg53Uzu2Mza6NpspCfh6rQHKTQL6h8UkfTbWeCA2QW8fcwI4LXXNUqwBinkxUdOGzDPt1JgE9A+NyYmJX17JmqnnGSg2CWgfNeZ0s3nU11BQzDwcZwd0xQazfUIwzcNx3lDaYl5MbQJCMMXWCMHUWsOMyWmZMccafbEQTO88m7HdFwupWQim1hpeTPTJQkzrbYC3ZoPZP7cWd98OmWezA/4sNgn4s5i4m/DYBq3hrdkE/YkYppWSALFpwY+dYmrmTUBVRNBXxjzTYqJTQ7zqyAbQ1kDFrJiwaa2YICU8NcQ1I62xxZjTza5YSDc3ednzbnSym+IEDOYDMTAB5qBbxczW8GKSY1uMGdJN6zxT1+xDimkxp5ttsePFZLsZkYBjrZl4B5gTIDXtPeCTqa2hxSSDLsZEV5325VWLKd4B5AhSb3T0smftZso8Y7sZstHR4WjFRLtJ+ozGjOimdp6Zb0EZqw6+n1m7yV5cvKZll7BUjK4ZKCbGJMWO9usCB/zOGFoz+uKCYoJiZAPoBJCY2p8T3KAeWjM6ASim9C9MfisrjeY7JLzZAAAAAElFTkSuQmCC\" id=\"image197117ebe6\" transform=\"scale(1 -1) translate(0 -266.4)\" x=\"419.76\" y=\"-10.08\" width=\"13.68\" height=\"266.4\"/>\n <g id=\"matplotlib.axis_3\"/>\n <g id=\"matplotlib.axis_4\">\n <g id=\"ytick_6\">\n <g id=\"line2d_11\">\n <defs>\n <path id=\"m2315c80f3c\" d=\"M 0 0 \nL 3.5 0 \n\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m2315c80f3c\" x=\"433.334537\" y=\"277.111219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_38\">\n <!-- 0.0 -->\n <g transform=\"translate(440.334537 280.910437) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-2e\" d=\"M 684 794 \nL 1344 794 \nL 1344 0 \nL 684 0 \nL 684 794 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_7\">\n <g id=\"line2d_12\">\n <g>\n <use xlink:href=\"#m2315c80f3c\" x=\"433.334537\" y=\"243.847219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_39\">\n <!-- 0.5 -->\n <g transform=\"translate(440.334537 247.646437) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-35\" d=\"M 691 4666 \nL 3169 4666 \nL 3169 4134 \nL 1269 4134 \nL 1269 2991 \nQ 1406 3038 1543 3061 \nQ 1681 3084 1819 3084 \nQ 2600 3084 3056 2656 \nQ 3513 2228 3513 1497 \nQ 3513 744 3044 326 \nQ 2575 -91 1722 -91 \nQ 1428 -91 1123 -41 \nQ 819 9 494 109 \nL 494 744 \nQ 775 591 1075 516 \nQ 1375 441 1709 441 \nQ 2250 441 2565 725 \nQ 2881 1009 2881 1497 \nQ 2881 1984 2565 2268 \nQ 2250 2553 1709 2553 \nQ 1456 2553 1204 2497 \nQ 953 2441 691 2322 \nL 691 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_8\">\n <g id=\"line2d_13\">\n <g>\n <use xlink:href=\"#m2315c80f3c\" x=\"433.334537\" y=\"210.583219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_40\">\n <!-- 1.0 -->\n <g transform=\"translate(440.334537 214.382437) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_9\">\n <g id=\"line2d_14\">\n <g>\n <use xlink:href=\"#m2315c80f3c\" x=\"433.334537\" y=\"177.319219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_41\">\n <!-- 1.5 -->\n <g transform=\"translate(440.334537 181.118437) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_10\">\n <g id=\"line2d_15\">\n <g>\n <use xlink:href=\"#m2315c80f3c\" x=\"433.334537\" y=\"144.055219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_42\">\n <!-- 2.0 -->\n <g transform=\"translate(440.334537 147.854437) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-32\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_11\">\n <g id=\"line2d_16\">\n <g>\n <use xlink:href=\"#m2315c80f3c\" x=\"433.334537\" y=\"110.791219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_43\">\n <!-- 2.5 -->\n <g transform=\"translate(440.334537 114.590437) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-32\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_12\">\n <g id=\"line2d_17\">\n <g>\n <use xlink:href=\"#m2315c80f3c\" x=\"433.334537\" y=\"77.527219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_44\">\n <!-- 3.0 -->\n <g transform=\"translate(440.334537 81.326437) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-33\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_13\">\n <g id=\"line2d_18\">\n <g>\n <use xlink:href=\"#m2315c80f3c\" x=\"433.334537\" y=\"44.263219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_45\">\n <!-- 3.5 -->\n <g transform=\"translate(440.334537 48.062437) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-33\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_14\">\n <g id=\"line2d_19\">\n <g>\n <use xlink:href=\"#m2315c80f3c\" x=\"433.334537\" y=\"10.999219\" style=\"stroke: #000000; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_46\">\n <!-- 4.0 -->\n <g transform=\"translate(440.334537 14.798437) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-34\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n </g>\n <g id=\"LineCollection_1\"/>\n <g id=\"patch_8\">\n <path d=\"M 420.028937 277.111219 \nL 426.681737 277.111219 \nL 433.334537 277.111219 \nL 433.334537 10.999219 \nL 426.681737 10.999219 \nL 420.028937 10.999219 \nL 420.028937 277.111219 \nz\n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"pb180030c50\">\n <rect x=\"136.060937\" y=\"10.999219\" width=\"266.112\" height=\"266.112\"/>\n </clipPath>\n </defs>\n</svg>\n",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
@@ -374,57 +358,8 @@
}
],
"source": [
- "ConfusionMatrixDisplay.from_predictions(df_eval.label, df_eval.y_pred, labels=df_eval.label.unique(), display_labels=df_eval.label.unique(), xticks_rotation=90, normalize=\"pred\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "COMPONENT_USED 43\n",
- "RECERTIFICATION 18\n",
- "EVALUATION_REUSED 11\n",
- "ON_PLATFORM 8\n",
- "COMPONENT_SHARED 6\n",
- "PREVIOUS_VERSION 5\n",
- "Name: label, dtype: int64"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df_eval.label.value_counts()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Experiments with ensemble for soft-voting on top of the base model.\n",
- "# But this is dump, since the ensemble is position-specific w.r.t. sequence, while the individual sentences are not.\n",
- "from sklearn.ensemble import RandomForestClassifier\n",
- "\n",
- "df_train[\"y_proba_base\"] = df_train.segments.map(trainer._model.predict_proba).map(lambda x: x.flatten())\n",
- "feat_len = df_train[\"y_proba_base\"].map(len).max()\n",
- "df_train[\"rf_feature_vector\"] = df_train.y_proba_base.map(lambda x: np.pad(x, pad_width=(0, feat_len - len(x))))\n",
- "\n",
- "df_eval[\"y_proba_base\"] = df_eval.segments.map(trainer._model.predict_proba).map(lambda x: x.flatten())\n",
- "df_eval[\"rf_feature_vector\"] = df_eval.y_proba_base.map(lambda x: np.pad(x, pad_width=(0, feat_len - len(x))))\n",
- "\n",
- "clf = RandomForestClassifier()\n",
- "clf = clf.fit(df_train.rf_feature_vector.tolist(), df_train.label)\n",
- "\n",
- "df_train[\"rf_predict\"] = clf.predict(df_train.rf_feature_vector.tolist())\n",
- "df_eval[\"rf_predict\"] = clf.predict(df_eval.rf_feature_vector.tolist())"
+ "df_labeled = df_predicted.loc[df_predicted.label.notnull()]\n",
+ "ConfusionMatrixDisplay.from_predictions(df_labeled.label, df_labeled.y_pred, labels=df_labeled.label.unique(), display_labels=df_labeled.label.unique(), xticks_rotation=90)"
]
}
],
diff --git a/pyproject.toml b/pyproject.toml
index e83a4a6b..128c2d73 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -30,7 +30,6 @@
dynamic = ["version"]
dependencies = [
"beautifulsoup4",
- "billiard",
"click",
"html5lib",
"jsonschema",
@@ -81,9 +80,10 @@
"sphinx-design",
"sphinx-copybutton",
"ipython!=8.7.0",
+ "setfit",
+ "langdetect",
]
test = ["pytest", "coverage", "pytest-cov"]
- nlp = ["setfit", "langdetect"]
[project.urls]
Homepage = "https://seccerts.org"
diff --git a/requirements/nlp_requirements.txt b/requirements/all_requirements.txt
index 7ff4fbd2..5d49f2e2 100644
--- a/requirements/nlp_requirements.txt
+++ b/requirements/all_requirements.txt
@@ -1,9 +1,13 @@
+accessible-pygments==0.0.3
+ # via pydata-sphinx-theme
aiohttp==3.8.4
# via
# datasets
# fsspec
aiosignal==1.3.1
# via aiohttp
+alabaster==0.7.13
+ # via sphinx
asttokens==2.2.1
# via stack-data
async-timeout==4.0.2
@@ -12,14 +16,24 @@ attrs==22.2.0
# via
# aiohttp
# jsonschema
+ # jupyter-cache
+ # pytest
+babel==2.12.1
+ # via
+ # pydata-sphinx-theme
+ # sphinx
backcall==0.2.0
# via ipython
beautifulsoup4==4.11.2
- # via sec-certs (./../pyproject.toml)
-billiard==4.1.0
+ # via
+ # pydata-sphinx-theme
+ # sec-certs (./../pyproject.toml)
+black==23.1.0
# via sec-certs (./../pyproject.toml)
blis==0.7.9
# via thinc
+build==0.10.0
+ # via pip-tools
catalogue==2.0.8
# via
# spacy
@@ -27,21 +41,32 @@ catalogue==2.0.8
# thinc
certifi==2022.12.7
# via requests
-charset-normalizer==3.0.1
+cfgv==3.3.1
+ # via pre-commit
+charset-normalizer==3.1.0
# via
# aiohttp
# requests
click==8.1.3
# via
+ # black
+ # jupyter-cache
# nltk
+ # pip-tools
# sec-certs (./../pyproject.toml)
# typer
+cmake==3.26.0
+ # via triton
comm==0.1.2
# via ipykernel
confection==0.0.4
# via thinc
contourpy==1.0.7
# via matplotlib
+coverage[toml]==7.2.2
+ # via
+ # pytest-cov
+ # sec-certs (./../pyproject.toml)
cycler==0.11.0
# via matplotlib
cymem==2.0.7
@@ -49,9 +74,10 @@ cymem==2.0.7
# preshed
# spacy
# thinc
-datasets==2.9.0
+datasets==2.10.1
# via
# evaluate
+ # sec-certs (./../pyproject.toml)
# setfit
debugpy==1.6.6
# via ipykernel
@@ -64,70 +90,112 @@ dill==0.3.6
# datasets
# evaluate
# multiprocess
+distlib==0.3.6
+ # via virtualenv
distro==1.8.0
# via tabula-py
+docutils==0.19
+ # via
+ # myst-parser
+ # pydata-sphinx-theme
+ # sphinx
evaluate==0.4.0
# via setfit
+exceptiongroup==1.1.1
+ # via pytest
executing==1.2.0
# via stack-data
-filelock==3.9.0
+fastjsonschema==2.16.3
+ # via nbformat
+filelock==3.10.0
# via
# huggingface-hub
+ # torch
# transformers
-fonttools==4.38.0
+ # triton
+ # virtualenv
+fonttools==4.39.2
# via matplotlib
frozenlist==1.3.3
# via
# aiohttp
# aiosignal
-fsspec[http]==2023.1.0
+fsspec[http]==2023.3.0
# via
# datasets
# evaluate
+gprof2dot==2022.7.29
+ # via pytest-profiling
+greenlet==2.0.2
+ # via sqlalchemy
html5lib==1.1
# via sec-certs (./../pyproject.toml)
-huggingface-hub==0.12.1
+huggingface-hub==0.13.2
# via
# datasets
# evaluate
# sentence-transformers
# transformers
+identify==2.5.21
+ # via pre-commit
idna==3.4
# via
# requests
# yarl
+imagesize==1.4.1
+ # via sphinx
importlib-metadata==6.0.0
- # via jupyter-client
-importlib-resources==5.10.2
+ # via
+ # jupyter-cache
+ # jupyter-client
+ # myst-nb
+ # sphinx
+importlib-resources==5.12.0
# via
# jsonschema
# matplotlib
-ipykernel==6.21.2
+iniconfig==2.0.0
+ # via pytest
+ipykernel==6.21.3
# via
# ipywidgets
+ # myst-nb
# sec-certs (./../pyproject.toml)
-ipython==8.10.0
+ipython==8.11.0
# via
# ipykernel
# ipywidgets
+ # myst-nb
+ # sec-certs (./../pyproject.toml)
ipywidgets==8.0.4
# via sec-certs (./../pyproject.toml)
jedi==0.18.2
# via ipython
jinja2==3.1.2
- # via spacy
+ # via
+ # myst-parser
+ # spacy
+ # sphinx
+ # torch
joblib==1.2.0
# via
# nltk
# scikit-learn
jsonschema==4.17.3
- # via sec-certs (./../pyproject.toml)
+ # via
+ # nbformat
+ # sec-certs (./../pyproject.toml)
+jupyter-cache==0.5.0
+ # via myst-nb
jupyter-client==8.0.3
- # via ipykernel
-jupyter-core==5.2.0
+ # via
+ # ipykernel
+ # nbclient
+jupyter-core==5.3.0
# via
# ipykernel
# jupyter-client
+ # nbformat
jupyterlab-widgets==3.0.5
# via ipywidgets
kiwisolver==1.4.4
@@ -136,13 +204,19 @@ langcodes==3.3.0
# via spacy
langdetect==1.0.9
# via sec-certs (./../pyproject.toml)
+lit==15.0.7
+ # via triton
lxml==4.9.2
# via
# pikepdf
# sec-certs (./../pyproject.toml)
+markdown-it-py==2.2.0
+ # via
+ # mdit-py-plugins
+ # myst-parser
markupsafe==2.1.2
# via jinja2
-matplotlib==3.7.0
+matplotlib==3.7.1
# via
# pysankeybeta
# seaborn
@@ -151,6 +225,14 @@ matplotlib-inline==0.1.6
# via
# ipykernel
# ipython
+mdit-py-plugins==0.3.5
+ # via myst-parser
+mdurl==0.1.2
+ # via markdown-it-py
+memory-profiler==0.61.0
+ # via pytest-monitor
+mpmath==1.3.0
+ # via sympy
multidict==6.0.4
# via
# aiohttp
@@ -164,12 +246,37 @@ murmurhash==1.0.9
# preshed
# spacy
# thinc
+mypy==1.0.0
+ # via sec-certs (./../pyproject.toml)
+mypy-extensions==1.0.0
+ # via
+ # black
+ # mypy
+myst-nb==0.17.1
+ # via sec-certs (./../pyproject.toml)
+myst-parser==0.18.1
+ # via myst-nb
+nbclient==0.5.13
+ # via
+ # jupyter-cache
+ # myst-nb
+nbformat==5.7.3
+ # via
+ # jupyter-cache
+ # myst-nb
+ # nbclient
nest-asyncio==1.5.6
- # via ipykernel
+ # via
+ # ipykernel
+ # nbclient
networkx==3.0
- # via sec-certs (./../pyproject.toml)
+ # via
+ # sec-certs (./../pyproject.toml)
+ # torch
nltk==3.8.1
# via sentence-transformers
+nodeenv==1.7.0
+ # via pre-commit
numpy==1.24.2
# via
# blis
@@ -193,15 +300,32 @@ numpy==1.24.2
nvidia-cublas-cu11==11.10.3.66
# via
# nvidia-cudnn-cu11
+ # nvidia-cusolver-cu11
# torch
+nvidia-cuda-cupti-cu11==11.7.101
+ # via torch
nvidia-cuda-nvrtc-cu11==11.7.99
# via torch
nvidia-cuda-runtime-cu11==11.7.99
# via torch
nvidia-cudnn-cu11==8.5.0.96
# via torch
+nvidia-cufft-cu11==10.9.0.58
+ # via torch
+nvidia-curand-cu11==10.2.10.91
+ # via torch
+nvidia-cusolver-cu11==11.4.0.1
+ # via torch
+nvidia-cusparse-cu11==11.7.4.91
+ # via torch
+nvidia-nccl-cu11==2.14.3
+ # via torch
+nvidia-nvtx-cu11==11.7.91
+ # via torch
packaging==23.0
# via
+ # black
+ # build
# datasets
# deprecation
# evaluate
@@ -209,8 +333,11 @@ packaging==23.0
# ipykernel
# matplotlib
# pikepdf
+ # pydata-sphinx-theme
+ # pytest
# setuptools-scm
# spacy
+ # sphinx
# thinc
# transformers
pandas==1.5.3
@@ -223,6 +350,8 @@ pandas==1.5.3
# tabula-py
parso==0.8.3
# via jedi
+pathspec==0.11.1
+ # via black
pathy==0.10.1
# via spacy
pdftotext==2.2.2
@@ -231,7 +360,7 @@ pexpect==4.8.0
# via ipython
pickleshare==0.7.5
# via ipython
-pikepdf==7.1.0
+pikepdf==7.1.1
# via sec-certs (./../pyproject.toml)
pillow==9.4.0
# via
@@ -239,20 +368,32 @@ pillow==9.4.0
# pikepdf
# sec-certs (./../pyproject.toml)
# torchvision
+pip-tools==6.12.3
+ # via sec-certs (./../pyproject.toml)
pkgconfig==1.5.5
# via sec-certs (./../pyproject.toml)
pkgutil-resolve-name==1.3.10
# via jsonschema
-platformdirs==3.0.0
- # via jupyter-core
+platformdirs==3.1.1
+ # via
+ # black
+ # jupyter-core
+ # virtualenv
+pluggy==1.0.0
+ # via pytest
+pre-commit==3.1.1
+ # via sec-certs (./../pyproject.toml)
preshed==3.0.8
# via
# spacy
# thinc
-prompt-toolkit==3.0.36
+prompt-toolkit==3.0.38
# via ipython
psutil==5.9.4
- # via ipykernel
+ # via
+ # ipykernel
+ # memory-profiler
+ # pytest-monitor
ptyprocess==0.7.0
# via pexpect
pure-eval==0.2.2
@@ -261,21 +402,41 @@ pyarrow==11.0.0
# via datasets
pycryptodome==3.17
# via pypdf
-pydantic==1.10.5
+pydantic==1.10.6
# via
# confection
# spacy
# thinc
+pydata-sphinx-theme==0.13.1
+ # via sphinx-book-theme
pygments==2.14.0
- # via ipython
+ # via
+ # accessible-pygments
+ # ipython
+ # pydata-sphinx-theme
+ # sphinx
pyparsing==3.0.9
# via matplotlib
-pypdf[crypto]==3.4.1
+pypdf[crypto]==3.5.2
# via sec-certs (./../pyproject.toml)
+pyproject-hooks==1.0.0
+ # via build
pyrsistent==0.19.3
# via jsonschema
pysankeybeta==1.4.0
# via sec-certs (./../pyproject.toml)
+pytest==7.2.2
+ # via
+ # pytest-cov
+ # pytest-monitor
+ # pytest-profiling
+ # sec-certs (./../pyproject.toml)
+pytest-cov==4.0.0
+ # via sec-certs (./../pyproject.toml)
+pytest-monitor==1.6.5
+ # via sec-certs (./../pyproject.toml)
+pytest-profiling==1.7.0
+ # via sec-certs (./../pyproject.toml)
python-dateutil==2.8.2
# via
# jupyter-client
@@ -283,14 +444,20 @@ python-dateutil==2.8.2
# pandas
# sec-certs (./../pyproject.toml)
pytz==2022.7.1
- # via pandas
+ # via
+ # babel
+ # pandas
pyyaml==6.0
# via
# datasets
# huggingface-hub
+ # jupyter-cache
+ # myst-nb
+ # myst-parser
+ # pre-commit
# sec-certs (./../pyproject.toml)
# transformers
-pyzmq==25.0.0
+pyzmq==25.0.1
# via
# ipykernel
# jupyter-client
@@ -306,20 +473,24 @@ requests==2.28.2
# evaluate
# fsspec
# huggingface-hub
+ # pytest-monitor
# responses
# sec-certs (./../pyproject.toml)
# spacy
+ # sphinx
# torchvision
# transformers
responses==0.18.0
# via
# datasets
# evaluate
-scikit-learn==1.2.1
+ruff==0.0.239
+ # via sec-certs (./../pyproject.toml)
+scikit-learn==1.2.2
# via
# sec-certs (./../pyproject.toml)
# sentence-transformers
-scipy==1.10.0
+scipy==1.10.1
# via
# scikit-learn
# sec-certs (./../pyproject.toml)
@@ -341,47 +512,91 @@ six==1.16.0
# asttokens
# html5lib
# langdetect
+ # pytest-profiling
# python-dateutil
smart-open==6.3.0
# via
# pathy
# spacy
+snowballstemmer==2.2.0
+ # via sphinx
soupsieve==2.4
# via beautifulsoup4
-spacy==3.5.0
+spacy==3.5.1
# via sec-certs (./../pyproject.toml)
spacy-legacy==3.0.12
# via spacy
spacy-loggers==1.0.4
# via spacy
-srsly==2.4.5
+sphinx==5.3.0
+ # via
+ # myst-nb
+ # myst-parser
+ # pydata-sphinx-theme
+ # sec-certs (./../pyproject.toml)
+ # sphinx-book-theme
+ # sphinx-copybutton
+ # sphinx-design
+sphinx-book-theme==1.0.0
+ # via sec-certs (./../pyproject.toml)
+sphinx-copybutton==0.5.1
+ # via sec-certs (./../pyproject.toml)
+sphinx-design==0.3.0
+ # via sec-certs (./../pyproject.toml)
+sphinxcontrib-applehelp==1.0.4
+ # via sphinx
+sphinxcontrib-devhelp==1.0.2
+ # via sphinx
+sphinxcontrib-htmlhelp==2.0.1
+ # via sphinx
+sphinxcontrib-jsmath==1.0.1
+ # via sphinx
+sphinxcontrib-qthelp==1.0.3
+ # via sphinx
+sphinxcontrib-serializinghtml==1.1.5
+ # via sphinx
+sqlalchemy==1.4.46
+ # via jupyter-cache
+srsly==2.4.6
# via
# confection
# spacy
# thinc
stack-data==0.6.2
# via ipython
-tabula-py==2.6.0
+sympy==1.11.1
+ # via torch
+tabula-py==2.7.0
# via sec-certs (./../pyproject.toml)
-thinc==8.1.7
+tabulate==0.9.0
+ # via jupyter-cache
+thinc==8.1.9
# via spacy
threadpoolctl==3.1.0
# via scikit-learn
tokenizers==0.13.2
# via transformers
tomli==2.0.1
- # via setuptools-scm
-torch==1.13.1
+ # via
+ # black
+ # build
+ # coverage
+ # mypy
+ # pyproject-hooks
+ # pytest
+ # setuptools-scm
+torch==2.0.0
# via
# sentence-transformers
# torchvision
-torchvision==0.14.1
+ # triton
+torchvision==0.15.1
# via sentence-transformers
tornado==6.2
# via
# ipykernel
# jupyter-client
-tqdm==4.64.1
+tqdm==4.65.0
# via
# datasets
# evaluate
@@ -400,24 +615,41 @@ traitlets==5.9.0
# jupyter-client
# jupyter-core
# matplotlib-inline
-transformers==4.26.1
+ # nbclient
+ # nbformat
+transformers==4.27.1
# via sentence-transformers
+triton==2.0.0
+ # via torch
typer==0.7.0
# via
# pathy
# spacy
+types-python-dateutil==2.8.19.10
+ # via sec-certs (./../pyproject.toml)
+types-pyyaml==6.0.12.8
+ # via sec-certs (./../pyproject.toml)
+types-requests==2.28.11.15
+ # via sec-certs (./../pyproject.toml)
+types-urllib3==1.26.25.8
+ # via types-requests
typing-extensions==4.5.0
# via
+ # black
# huggingface-hub
+ # mypy
+ # myst-nb
+ # myst-parser
# pydantic
# pypdf
# setuptools-scm
# torch
- # torchvision
-urllib3==1.26.14
+urllib3==1.26.15
# via
# requests
# responses
+virtualenv==20.21.0
+ # via pre-commit
wasabi==1.1.1
# via
# spacy
@@ -426,10 +658,16 @@ wcwidth==0.2.6
# via prompt-toolkit
webencodings==0.5.1
# via html5lib
-wheel==0.38.4
+wheel==0.40.0
# via
# nvidia-cublas-cu11
+ # nvidia-cuda-cupti-cu11
# nvidia-cuda-runtime-cu11
+ # nvidia-curand-cu11
+ # nvidia-cusparse-cu11
+ # nvidia-nvtx-cu11
+ # pip-tools
+ # pytest-monitor
widgetsnbextension==4.0.5
# via ipywidgets
xxhash==3.2.0
@@ -438,10 +676,11 @@ xxhash==3.2.0
# evaluate
yarl==1.8.2
# via aiohttp
-zipp==3.13.0
+zipp==3.15.0
# via
# importlib-metadata
# importlib-resources
# The following packages are considered to be unsafe in a requirements file:
+# pip
# setuptools
diff --git a/requirements/compile.sh b/requirements/compile.sh
index 1039a19f..c07386aa 100755
--- a/requirements/compile.sh
+++ b/requirements/compile.sh
@@ -5,4 +5,4 @@
pip-compile --no-header --resolver=backtracking --output-file=requirements.txt ./../pyproject.toml
pip-compile --no-header --resolver=backtracking --extra dev -o dev_requirements.txt ./../pyproject.toml
pip-compile --no-header --resolver=backtracking --extra test -o test_requirements.txt ./../pyproject.toml
-pip-compile --no-header --resolver=backtracking --extra nlp -o nlp_requirements.txt ./../pyproject.toml
+pip-compile --no-header --resolver=backtracking --extra dev --extra test -o all_requirements.txt ./../pyproject.toml
diff --git a/requirements/dev_requirements.txt b/requirements/dev_requirements.txt
index 3acbdb0f..1d674e91 100644
--- a/requirements/dev_requirements.txt
+++ b/requirements/dev_requirements.txt
@@ -24,8 +24,6 @@ beautifulsoup4==4.11.1
# via
# pydata-sphinx-theme
# sec-certs (./../pyproject.toml)
-billiard==4.0.2
- # via sec-certs (./../pyproject.toml)
black==23.1.0
# via sec-certs (./../pyproject.toml)
blis==0.7.9
@@ -49,9 +47,12 @@ click==8.1.3
# via
# black
# jupyter-cache
+ # nltk
# pip-tools
# sec-certs (./../pyproject.toml)
# typer
+cmake==3.26.0
+ # via triton
comm==0.1.2
# via ipykernel
confection==0.0.3
@@ -68,7 +69,10 @@ cymem==2.0.7
# spacy
# thinc
datasets==2.9.0
- # via sec-certs (./../pyproject.toml)
+ # via
+ # evaluate
+ # sec-certs (./../pyproject.toml)
+ # setfit
debugpy==1.6.4
# via ipykernel
decorator==5.1.1
@@ -78,6 +82,7 @@ deprecation==2.1.0
dill==0.3.6
# via
# datasets
+ # evaluate
# multiprocess
distlib==0.3.6
# via virtualenv
@@ -90,6 +95,8 @@ docutils==0.17.1
# sphinx
entrypoints==0.4
# via jupyter-client
+evaluate==0.4.0
+ # via setfit
exceptiongroup==1.0.4
# via pytest
executing==1.2.0
@@ -99,6 +106,9 @@ fastjsonschema==2.16.2
filelock==3.8.2
# via
# huggingface-hub
+ # torch
+ # transformers
+ # triton
# virtualenv
fonttools==4.38.0
# via matplotlib
@@ -107,7 +117,9 @@ frozenlist==1.3.3
# aiohttp
# aiosignal
fsspec[http]==2023.1.0
- # via datasets
+ # via
+ # datasets
+ # evaluate
gprof2dot==2022.7.29
# via pytest-profiling
greenlet==2.0.1
@@ -115,7 +127,11 @@ greenlet==2.0.1
html5lib==1.1
# via sec-certs (./../pyproject.toml)
huggingface-hub==0.12.1
- # via datasets
+ # via
+ # datasets
+ # evaluate
+ # sentence-transformers
+ # transformers
identify==2.5.9
# via pre-commit
idna==3.4
@@ -153,8 +169,11 @@ jinja2==3.1.2
# myst-parser
# spacy
# sphinx
+ # torch
joblib==1.2.0
- # via scikit-learn
+ # via
+ # nltk
+ # scikit-learn
jsonschema==4.17.3
# via
# nbformat
@@ -175,6 +194,10 @@ kiwisolver==1.4.4
# via matplotlib
langcodes==3.3.0
# via spacy
+langdetect==1.0.9
+ # via sec-certs (./../pyproject.toml)
+lit==15.0.7
+ # via triton
lxml==4.9.1
# via
# pikepdf
@@ -200,12 +223,16 @@ mdurl==0.1.2
# via markdown-it-py
memory-profiler==0.61.0
# via pytest-monitor
+mpmath==1.3.0
+ # via sympy
multidict==6.0.4
# via
# aiohttp
# yarl
multiprocess==0.70.14
- # via datasets
+ # via
+ # datasets
+ # evaluate
murmurhash==1.0.9
# via
# preshed
@@ -236,7 +263,11 @@ nest-asyncio==1.5.6
# jupyter-client
# nbclient
networkx==2.8.8
- # via sec-certs (./../pyproject.toml)
+ # via
+ # sec-certs (./../pyproject.toml)
+ # torch
+nltk==3.8.1
+ # via sentence-transformers
nodeenv==1.7.0
# via pre-commit
numpy==1.23.5
@@ -244,6 +275,7 @@ numpy==1.23.5
# blis
# contourpy
# datasets
+ # evaluate
# matplotlib
# pandas
# pyarrow
@@ -252,15 +284,44 @@ numpy==1.23.5
# scipy
# seaborn
# sec-certs (./../pyproject.toml)
+ # sentence-transformers
# spacy
# tabula-py
# thinc
+ # torchvision
+ # transformers
+nvidia-cublas-cu11==11.10.3.66
+ # via
+ # nvidia-cudnn-cu11
+ # nvidia-cusolver-cu11
+ # torch
+nvidia-cuda-cupti-cu11==11.7.101
+ # via torch
+nvidia-cuda-nvrtc-cu11==11.7.99
+ # via torch
+nvidia-cuda-runtime-cu11==11.7.99
+ # via torch
+nvidia-cudnn-cu11==8.5.0.96
+ # via torch
+nvidia-cufft-cu11==10.9.0.58
+ # via torch
+nvidia-curand-cu11==10.2.10.91
+ # via torch
+nvidia-cusolver-cu11==11.4.0.1
+ # via torch
+nvidia-cusparse-cu11==11.7.4.91
+ # via torch
+nvidia-nccl-cu11==2.14.3
+ # via torch
+nvidia-nvtx-cu11==11.7.91
+ # via torch
packaging==22.0
# via
# black
# build
# datasets
# deprecation
+ # evaluate
# huggingface-hub
# ipykernel
# matplotlib
@@ -270,9 +331,11 @@ packaging==22.0
# setuptools-scm
# spacy
# sphinx
+ # transformers
pandas==1.5.2
# via
# datasets
+ # evaluate
# pysankeybeta
# seaborn
# sec-certs (./../pyproject.toml)
@@ -298,6 +361,7 @@ pillow==9.3.0
# matplotlib
# pikepdf
# sec-certs (./../pyproject.toml)
+ # torchvision
pip-tools==6.11.0
# via sec-certs (./../pyproject.toml)
pkgconfig==1.5.5
@@ -383,15 +447,21 @@ pyyaml==6.0
# pre-commit
# sec-certs (./../pyproject.toml)
# sphinx-book-theme
+ # transformers
pyzmq==24.0.1
# via
# ipykernel
# jupyter-client
rapidfuzz==2.13.3
# via sec-certs (./../pyproject.toml)
+regex==2022.10.31
+ # via
+ # nltk
+ # transformers
requests==2.28.1
# via
# datasets
+ # evaluate
# fsspec
# huggingface-hub
# pytest-monitor
@@ -399,26 +469,40 @@ requests==2.28.1
# sec-certs (./../pyproject.toml)
# spacy
# sphinx
+ # torchvision
+ # transformers
responses==0.18.0
- # via datasets
+ # via
+ # datasets
+ # evaluate
ruff==0.0.239
# via sec-certs (./../pyproject.toml)
scikit-learn==1.2.0
- # via sec-certs (./../pyproject.toml)
+ # via
+ # sec-certs (./../pyproject.toml)
+ # sentence-transformers
scipy==1.9.3
# via
# scikit-learn
# sec-certs (./../pyproject.toml)
+ # sentence-transformers
seaborn==0.12.1
# via
# pysankeybeta
# sec-certs (./../pyproject.toml)
+sentence-transformers==2.2.2
+ # via setfit
+sentencepiece==0.1.97
+ # via sentence-transformers
+setfit==0.6.0
+ # via sec-certs (./../pyproject.toml)
setuptools-scm==7.0.5
# via sec-certs (./../pyproject.toml)
six==1.16.0
# via
# asttokens
# html5lib
+ # langdetect
# pytest-profiling
# python-dateutil
smart-open==6.2.0
@@ -469,6 +553,8 @@ srsly==2.4.5
# thinc
stack-data==0.6.2
# via ipython
+sympy==1.11.1
+ # via torch
tabula-py==2.6.0
# via sec-certs (./../pyproject.toml)
tabulate==0.9.0
@@ -477,6 +563,8 @@ thinc==8.1.5
# via spacy
threadpoolctl==3.1.0
# via scikit-learn
+tokenizers==0.13.2
+ # via transformers
toml==0.10.2
# via pre-commit
tomli==2.0.1
@@ -488,6 +576,13 @@ tomli==2.0.1
# pep517
# pytest
# setuptools-scm
+torch==2.0.0
+ # via
+ # sentence-transformers
+ # torchvision
+ # triton
+torchvision==0.15.1
+ # via sentence-transformers
tornado==6.2
# via
# ipykernel
@@ -495,9 +590,13 @@ tornado==6.2
tqdm==4.64.1
# via
# datasets
+ # evaluate
# huggingface-hub
+ # nltk
# sec-certs (./../pyproject.toml)
+ # sentence-transformers
# spacy
+ # transformers
traitlets==5.6.0
# via
# comm
@@ -509,6 +608,10 @@ traitlets==5.6.0
# matplotlib-inline
# nbclient
# nbformat
+transformers==4.27.1
+ # via sentence-transformers
+triton==2.0.0
+ # via torch
typer==0.7.0
# via
# pathy
@@ -531,6 +634,7 @@ typing-extensions==4.4.0
# pydantic
# pypdf
# setuptools-scm
+ # torch
urllib3==1.26.13
# via
# requests
@@ -547,12 +651,20 @@ webencodings==0.5.1
# via html5lib
wheel==0.38.4
# via
+ # nvidia-cublas-cu11
+ # nvidia-cuda-cupti-cu11
+ # nvidia-cuda-runtime-cu11
+ # nvidia-curand-cu11
+ # nvidia-cusparse-cu11
+ # nvidia-nvtx-cu11
# pip-tools
# pytest-monitor
widgetsnbextension==4.0.4
# via ipywidgets
xxhash==3.2.0
- # via datasets
+ # via
+ # datasets
+ # evaluate
yarl==1.8.2
# via aiohttp
zipp==3.11.0
diff --git a/requirements/requirements.txt b/requirements/requirements.txt
index 9461aaa2..f1263fc5 100644
--- a/requirements/requirements.txt
+++ b/requirements/requirements.txt
@@ -6,8 +6,6 @@ backcall==0.2.0
# via ipython
beautifulsoup4==4.11.1
# via sec-certs (./../pyproject.toml)
-billiard==4.0.2
- # via sec-certs (./../pyproject.toml)
blis==0.7.9
# via thinc
catalogue==2.0.8
diff --git a/requirements/test_requirements.txt b/requirements/test_requirements.txt
index c2d69151..4f18443d 100644
--- a/requirements/test_requirements.txt
+++ b/requirements/test_requirements.txt
@@ -8,8 +8,6 @@ backcall==0.2.0
# via ipython
beautifulsoup4==4.11.1
# via sec-certs (./../pyproject.toml)
-billiard==4.0.2
- # via sec-certs (./../pyproject.toml)
blis==0.7.9
# via thinc
catalogue==2.0.8
diff --git a/src/sec_certs/config/settings-schema.json b/src/sec_certs/config/settings-schema.json
index c05df4d4..32358b03 100644
--- a/src/sec_certs/config/settings-schema.json
+++ b/src/sec_certs/config/settings-schema.json
@@ -189,7 +189,7 @@
]
},
"cc_reference_annotator_should_train": {
- "$ref": "#/definitions/settings/boolean_entry"
+ "$ref": "#/definitions/settings_boolean_entry"
}
},
"required": [
diff --git a/src/sec_certs/config/settings.yaml b/src/sec_certs/config/settings.yaml
index 154d5dfe..dea18eed 100644
--- a/src/sec_certs/config/settings.yaml
+++ b/src/sec_certs/config/settings.yaml
@@ -14,7 +14,7 @@ year_difference_between_validations:
value: 7
n_threads:
description: How many threads to use for parallel computations. Set to -1 to use all cores (*2 with multithreading).
- value: -1
+ value: 200
cpe_matching_threshold:
description: Level of required string similarity between CPE and certificate name on CC CPE matching, 0-100. Lower values yield more false negatives, higher values more false positives
value: 92
@@ -62,4 +62,4 @@ cc_reference_annotator_dir:
value: null
cc_reference_annotator_should_train:
description: True if new reference annotator model shall be build, False otherwise
- value: false
+ value: true
diff --git a/src/sec_certs/dataset/cc.py b/src/sec_certs/dataset/cc.py
index b70f992b..4c1b0f22 100644
--- a/src/sec_certs/dataset/cc.py
+++ b/src/sec_certs/dataset/cc.py
@@ -8,7 +8,7 @@ import tempfile
from dataclasses import dataclass
from datetime import datetime
from pathlib import Path
-from typing import ClassVar, Iterator
+from typing import ClassVar, Iterator, Literal
import numpy as np
import pandas as pd
@@ -812,7 +812,14 @@ class CCDataset(Dataset[CCCertificate, CCAuxiliaryDatasets], ComplexSerializable
return update_dset
- def annotate_references(self):
+ def annotate_references(self, mode: Literal["training", "production"] = "production"):
+ """
+ Fills in `cert.heuristics.annotated_references` with reference labels.
+ This requires (a) a pre-trained `ReferenceAnnotator` or (b) to train a `ReferenceAnnotator`.
+ The behaviour is controlled by config keys `config.cc_reference_annotator_should_train` and
+ `config.cc_reference_annotator_path`. If should_train is False and path is provided, a pre-trained annotator
+ will be loaded and used.
+ """
if not self.state.pdfs_converted:
logger.info(
"Attempting run analysis of txt files while not having the pdf->txt conversion done. Returning."
@@ -831,24 +838,39 @@ class CCDataset(Dataset[CCCertificate, CCAuxiliaryDatasets], ComplexSerializable
annotator = ReferenceAnnotator.from_pretrained(model_dir)
except Exception:
logger.error(
- f"annotate_references() method was called with `config.cc_reference_annotator_should_train=False`. Further, the model was not found either at `config.cc_reference_annotator_dir={config.cc_reference_annotator_dir}` nor at {self.reference_annotator_dir}. Either: (a) allow training with `config.cc_reference_annotator_should_train=False`; (b) set path to model with `config.cc_reference_annotator_path`; (c) paste the model into {self.reference_annotator_dir}. Returning."
+ "annotate_references() method was called with `config.cc_reference_annotator_should_train=False`."
+ f"Further, the model was not found either at `config.cc_reference_annotator_dir={config.cc_reference_annotator_dir}`"
+ f"nor at {self.reference_annotator_dir}. Either: (a) allow training with `config.cc_reference_annotator_should_train=True`;"
+ "(b) set path to model with `config.cc_reference_annotator_path`; (c) paste the model into {self.reference_annotator_dir}. Returning."
)
+ return
+ logger.info("Extracting segments of text relevant for reference annotations.")
df = ReferenceSegmentExtractor().prepare_df_from_cc_certs(list(self.certs.values()))
if config.cc_reference_annotator_should_train:
- annotator = self._train_reference_annotator(df)
+ annotator = self._train_reference_annotator(df, mode=mode)
+ logger.info("Predicting reference labels")
df = annotator.predict_df(df)
+ refs: dict[str, dict[str, str]] = dict.fromkeys(df.dgst, {})
+ for dgst, cert_id, label in zip(df.dgst, df.referenced_cert_id, df.y_pred):
+ refs[dgst][cert_id] = label
- # TODO: Now iterate over DF, fill-in references
+ for dgst, value in refs.items():
+ self[dgst].heuristics.annotated_references = value
- def _train_reference_annotator(self, df: pd.DataFrame, save_model: bool = True) -> ReferenceAnnotator:
- trainer = ReferenceAnnotatorTrainer.from_df(df, prec_recall_metric, "transformer", "production")
+ def _train_reference_annotator(
+ self, df: pd.DataFrame, save_model: bool = True, mode: Literal["training", "production"] = "production"
+ ) -> ReferenceAnnotator:
+ trainer = ReferenceAnnotatorTrainer.from_df(df, prec_recall_metric, "transformer", mode)
+ logger.info(
+ "Training ReferenceAnnotator on {df.shape[0]} samples ({df.loc[df.split == 'train'].shape[0]}/{df.loc[df.split == 'valid'].shape[0]}/{df.loc[df.split == 'test'].shape[0]}) (train/valid/test)."
+ )
trainer.train()
logger.info(trainer.evaluate())
if save_model:
- trainer.slf.save_pretrained(self.reference_annotator_dir)
+ trainer.clf.save_pretrained(self.reference_annotator_dir)
return trainer.clf
diff --git a/src/sec_certs/model/references/annotator.py b/src/sec_certs/model/references/annotator.py
index e64a7221..0b971a8b 100644
--- a/src/sec_certs/model/references/annotator.py
+++ b/src/sec_certs/model/references/annotator.py
@@ -1,6 +1,7 @@
from __future__ import annotations
import json
+import logging
from dataclasses import dataclass
from pathlib import Path
from typing import Any
@@ -11,6 +12,8 @@ from setfit import SetFitModel
from sec_certs.utils.nlp import softmax
+logger = logging.getLogger(__name__)
+
@dataclass
class ReferenceAnnotator:
@@ -32,6 +35,7 @@ class ReferenceAnnotator:
:param str | Path model_dir: path to directory to search for model and label mapping
:return RerefenceClassifier: classifier with SetFitModel and label mapping
"""
+ logger.info(f"Loading pre-trained reference annotator from: {model_dir}")
model = SetFitModel.from_pretrained(str(model_dir))
with (Path(model_dir) / "label_mapping.json").open("r") as handle:
label_mapping = json.load(handle)
@@ -43,12 +47,13 @@ class ReferenceAnnotator:
"""
Will dump _model and _label_mapping into a directory.
"""
+ logger.info(f"Saving ReferenceAnnotator to {model_dir}")
model_dir = Path(model_dir)
model_dir.mkdir(exist_ok=True, parents=True)
-
+ logger.info
with (model_dir / "label_mapping.json").open("w") as handle:
json.dump(self._label_mapping, handle, indent=4)
- self._model.save_pretrained(str(model_dir))
+ self._model._save_pretrained(str(model_dir))
def train(self, train_dataset: pd.DataFrame):
raise NotImplementedError("ReferenceAnnotatorTrainer shall be used for training")
@@ -64,11 +69,12 @@ class ReferenceAnnotator:
def _predict_proba_single(self, sample: list[str]) -> list[float]:
"""
- 1. Get predictions for each segment
+ 1. Get predictions for each segment, convert pytorch tensor to numpy
2. Square every prediction to reward confidence
3. Sum probabilities for each label
+ 4. softmax
"""
- return softmax(np.power(self._model.predict_proba(sample), 2).sum(axis=0))
+ return softmax(np.power(self._model.predict_proba(sample, as_numpy=True), 2).sum(axis=0))
def predict_df(self, df: pd.DataFrame) -> pd.DataFrame:
"""
@@ -78,5 +84,7 @@ class ReferenceAnnotator:
y_proba = self.predict_proba(df.segments)
df_new["y_proba"] = y_proba
df_new["y_pred"] = df_new.y_proba.map(lambda x: self._label_mapping[int(np.argmax(x))])
- df_new["correct"] = df_new.label == df_new.y_pred
+ df_new["correct"] = df_new.apply(
+ lambda row: row["y_pred"] == row["label"] if not pd.isnull(row["label"]) else np.NaN, axis=1
+ )
return df_new
diff --git a/src/sec_certs/model/references/annotator_trainer.py b/src/sec_certs/model/references/annotator_trainer.py
index b11a7c5f..40f18dbc 100644
--- a/src/sec_certs/model/references/annotator_trainer.py
+++ b/src/sec_certs/model/references/annotator_trainer.py
@@ -1,5 +1,6 @@
from __future__ import annotations
+import logging
from typing import Callable, Literal
import pandas as pd
@@ -10,32 +11,7 @@ from setfit import SetFitModel, SetFitTrainer
from sec_certs.model.references.annotator import ReferenceAnnotator
from sec_certs.utils.nlp import prepare_reference_annotations_df
-"""
-Production workflow:
-
-df = ReferenceClassifierTrainer.prepare_df_from_cc_dataset([cert for cert in cc_dset])
-trainer = ReferenceClassifierTrainer.from_df(precision_recall, df, "transformer", "production")
-trainer.train()
-trainer.evaluate()
-
-# Print how great we are on test set
-
-trainer.clf.save_pretrained(/some/directory)
-
-... 48 hours later
-
-cc_dset.annotate_references(/path/to/model)
-
-where
-
-def annotate_references(self, model_directory):
- clf = ReferenceClassifier.from_pretrained(model_directory)
- df = ReferenceClassifierTrainer.prepare_df_from_cc_dataset([x for x in self])
- df = clf.predict_df(df)
-
- Now iterate over df, take each pair (dgst, referenced_cert_id) and fill_in dictionary in self[dgst].heuristics.references ...
-
-"""
+logger = logging.getLogger(__name__)
class ReferenceAnnotatorTrainer:
@@ -76,6 +52,8 @@ class ReferenceAnnotatorTrainer:
@staticmethod
def split_df_for_production(df: pd.DataFrame) -> tuple[pd.DataFrame, pd.DataFrame]:
df.split = df.split.map({"test": "test", "train": "train", "valid": "train"})
+ if df.loc[df.split == "test"].empty:
+ logger.warning("`test` split for annotator dataset is empty -> model can be trained, but not evaluated.")
return df.loc[df.split == "train"].drop(columns="split"), df.loc[df.split == "test"].drop(columns="split")
def _init_trainer(self, method: Literal["transformer", "baseline"]):
@@ -136,6 +114,9 @@ class ReferenceAnnotatorTrainer:
print(self._evaluate_stacked())
def _evaluate_raw(self):
+ if self._eval_dataset.empty:
+ logger.error("Evaluation dataset is empty, cannot evaluate, returning.")
+ return
return self._trainer.evaluate()
def _evaluate_stacked(self):
diff --git a/src/sec_certs/model/references/segment_extractor.py b/src/sec_certs/model/references/segment_extractor.py
index 23ff4c1d..df377fec 100644
--- a/src/sec_certs/model/references/segment_extractor.py
+++ b/src/sec_certs/model/references/segment_extractor.py
@@ -22,7 +22,9 @@ class ReferenceRecord:
Data structure to hold objects when extracting text segments from txt files relevant for reference annotations.
"""
- certificate: CCCertificate
+ certificate_dgst: str
+ certificate_st_path: Path
+ certificate_report_path: Path
referenced_cert_id: str
source: str
segments: set[str] | None = None
@@ -33,12 +35,7 @@ class ReferenceRecord:
Open file, read text and extract sentences with `referenced_cert_id` match.
Static method to allow for parallelization
"""
- pth_to_read = (
- record.certificate.state.st_txt_path
- if record.source == "target"
- else record.certificate.state.report_txt_path
- )
-
+ pth_to_read = record.certificate_st_path if record.source == "target" else record.certificate_report_path
with pth_to_read.open("r") as handle:
data = handle.read()
@@ -50,7 +47,7 @@ class ReferenceRecord:
return record
def to_pandas_tuple(self) -> tuple[str, str, str, set[str] | None]:
- return self.certificate.dgst, self.referenced_cert_id, self.source, self.segments
+ return self.certificate_dgst, self.referenced_cert_id, self.source, self.segments
class ReferenceSegmentExtractor:
@@ -77,12 +74,12 @@ class ReferenceSegmentExtractor:
]
df_targets = self._build_df(target_certs, "target")
df_reports = self._build_df(report_certs, "report")
- return self._process_df(pd.concat([df_targets, df_reports]))
+ return ReferenceSegmentExtractor._process_df(pd.concat([df_targets, df_reports]))
def _build_df(self, certs: list[CCCertificate], source: Literal["target", "report"]) -> pd.DataFrame:
attribute_mapping = {"target": "st_references", "report": "report_references"}
records = [
- ReferenceRecord(x, y, source)
+ ReferenceRecord(x.dgst, x.state.st_txt_path, x.state.report_txt_path, y, source)
for x in certs
for y in getattr(x.heuristics, attribute_mapping[source]).directly_referencing
]
@@ -100,7 +97,8 @@ class ReferenceSegmentExtractor:
columns=["dgst", "referenced_cert_id", "source", "segments"],
)
- def _get_split_dict(self) -> dict[str, str]:
+ @staticmethod
+ def _get_split_dict() -> dict[str, str]:
"""
Returns dictionary that maps dgst: split, where split in `train`, `valid`, `test`
"""
@@ -116,7 +114,8 @@ class ReferenceSegmentExtractor:
**get_single_dct(split_directory / "test.json", "test"),
}
- def _get_annotations_dict(self) -> dict[tuple[str, str], str]:
+ @staticmethod
+ def _get_annotations_dict() -> dict[tuple[str, str], str]:
"""
Returns dictionary mapping tuples `(dgst, referenced_cert_id) -> label`
"""
@@ -142,12 +141,13 @@ class ReferenceSegmentExtractor:
df_annot[["dgst", "referenced_cert_id", "label"]].set_index(["dgst", "referenced_cert_id"]).label.to_dict()
)
- def _process_df(self, df: pd.DataFrame) -> pd.DataFrame:
+ @staticmethod
+ def _process_df(df: pd.DataFrame) -> pd.DataFrame:
"""
Fully processes the dataframe.
"""
- annotations_dict = self._get_annotations_dict()
- split_dct = self._get_split_dict()
+ annotations_dict = ReferenceSegmentExtractor._get_annotations_dict()
+ split_dct = ReferenceSegmentExtractor._get_split_dict()
return (
df.loc[df.segments.notnull()]
diff --git a/src/sec_certs/sample/cc.py b/src/sec_certs/sample/cc.py
index 771a0eab..29498265 100644
--- a/src/sec_certs/sample/cc.py
+++ b/src/sec_certs/sample/cc.py
@@ -44,15 +44,6 @@ class ReferenceType(Enum):
INDIRECT = "indirect"
-class ReferenceMeaning(Enum):
- ON_PLATFORM = "on_platform"
- COMPONENT_USED = "component_used"
- PREVIOUS_VERSION = "previous_version"
- EVALUATION_REUSED = "evaluation_reused"
- COMPONENT_SHARED = "component_shared"
- RECERTIFICATION = "recertification"
-
-
class CCCertificate(
Certificate["CCCertificate", "CCCertificate.Heuristics", "CCCertificate.PdfData"],
PandasSerializableType,
@@ -445,7 +436,8 @@ class CCCertificate(
report_references: References = field(default_factory=References)
# Contains direct outward references merged from both st, and report sources, annotated with ReferenceAnnotator
- annotated_references: dict[str, ReferenceMeaning | None] | None = field(default=None)
+ # TODO: Reference meanings as Enum if we work with it further.
+ annotated_references: dict[str, str] | None = field(default=None)
extracted_sars: set[SAR] | None = field(default=None)
direct_transitive_cves: set[str] | None = field(default=None)
indirect_transitive_cves: set[str] | None = field(default=None)
diff --git a/src/sec_certs/utils/nlp.py b/src/sec_certs/utils/nlp.py
index 45ad9639..dd114662 100644
--- a/src/sec_certs/utils/nlp.py
+++ b/src/sec_certs/utils/nlp.py
@@ -18,8 +18,8 @@ def softmax(x):
return np.exp(x - np.max(x)) / np.exp(x - np.max(x)).sum()
-def eval_strings(series):
- return [list(literal_eval(x)) for x in series]
+def eval_strings_if_necessary(series: pd.Series) -> pd.Series:
+ return series.map(literal_eval) if isinstance(series.iloc[0], str) else series
def filter_short_sentences(sentences, cert_id):
@@ -29,7 +29,7 @@ def filter_short_sentences(sentences, cert_id):
def prepare_reference_annotations_df(df: pd.DataFrame):
df = (
df.loc[lambda df_: (df_.label != "SELF") & (df_.label.notnull())]
- .assign(segments=lambda df_: eval_strings(df_.segments))
+ .assign(segments=lambda df_: eval_strings_if_necessary(df_.segments))
.drop(columns="lang")
)
df.segments = df.apply(lambda row: filter_short_sentences(row["segments"], row["referenced_cert_id"]), axis=1)
diff --git a/src/sec_certs/utils/parallel_processing.py b/src/sec_certs/utils/parallel_processing.py
index b3016695..4c6af63b 100644
--- a/src/sec_certs/utils/parallel_processing.py
+++ b/src/sec_certs/utils/parallel_processing.py
@@ -2,11 +2,9 @@ from __future__ import annotations
import time
from multiprocessing import cpu_count
-from multiprocessing.pool import ThreadPool
+from multiprocessing.pool import Pool, ThreadPool
from typing import Any, Callable, Iterable
-from billiard.pool import Pool
-
from sec_certs.config.configuration import config
from sec_certs.utils.tqdm import tqdm
diff --git a/tests/data/cc/analysis/cc_full_dataset.json b/tests/data/cc/analysis/cc_full_dataset.json
index 05e75c55..3b07f9c5 100644
--- a/tests/data/cc/analysis/cc_full_dataset.json
+++ b/tests/data/cc/analysis/cc_full_dataset.json
@@ -551,6 +551,7 @@
"directly_referencing": null,
"indirectly_referencing": null
},
+ "annotated_references": null,
"extracted_sars": {
"_type": "Set",
"elements": [
@@ -726,4 +727,4 @@
}
}
]
-} \ No newline at end of file
+}
diff --git a/tests/data/cc/analysis/reference_dataset.json b/tests/data/cc/analysis/reference_dataset.json
index 57ae81f1..00ab6674 100644
--- a/tests/data/cc/analysis/reference_dataset.json
+++ b/tests/data/cc/analysis/reference_dataset.json
@@ -508,6 +508,7 @@
]
}
},
+ "annotated_references": null,
"extracted_sars": {
"_type": "Set",
"elements": [
@@ -1105,6 +1106,7 @@
]
}
},
+ "annotated_references": null,
"extracted_sars": {
"_type": "Set",
"elements": [
@@ -1736,6 +1738,7 @@
]
}
},
+ "annotated_references": null,
"extracted_sars": {
"_type": "Set",
"elements": [
@@ -1841,4 +1844,4 @@
}
}
]
-} \ No newline at end of file
+}
diff --git a/tests/data/cc/analysis/transitive_vulnerability_dataset.json b/tests/data/cc/analysis/transitive_vulnerability_dataset.json
index da2348bf..fb45efde 100644
--- a/tests/data/cc/analysis/transitive_vulnerability_dataset.json
+++ b/tests/data/cc/analysis/transitive_vulnerability_dataset.json
@@ -1144,6 +1144,7 @@
]
}
},
+ "annotated_references": null,
"extracted_sars": {
"_type": "Set",
"elements": [
@@ -2084,6 +2085,7 @@
]
}
},
+ "annotated_references": null,
"extracted_sars": {
"_type": "Set",
"elements": [
@@ -3436,6 +3438,7 @@
]
}
},
+ "annotated_references": null,
"extracted_sars": {
"_type": "Set",
"elements": [
@@ -3611,4 +3614,4 @@
}
}
]
-} \ No newline at end of file
+}
diff --git a/tests/data/cc/analysis/vulnerable_dataset.json b/tests/data/cc/analysis/vulnerable_dataset.json
index 1afb42bb..1b23ef0d 100644
--- a/tests/data/cc/analysis/vulnerable_dataset.json
+++ b/tests/data/cc/analysis/vulnerable_dataset.json
@@ -63,6 +63,7 @@
"8.2"
],
"cpe_matches": null,
+ "annotated_references": null,
"verified_cpe_matches": null,
"related_cves": null,
"cert_lab": null,
@@ -118,6 +119,7 @@
"8.2"
],
"cpe_matches": null,
+ "annotated_references": null,
"verified_cpe_matches": null,
"related_cves": null,
"cert_lab": null,
@@ -125,4 +127,4 @@
}
}
]
-} \ No newline at end of file
+}
diff --git a/tests/data/cc/certificate/fictional_cert.json b/tests/data/cc/certificate/fictional_cert.json
index 5d5a0499..a28665ea 100644
--- a/tests/data/cc/certificate/fictional_cert.json
+++ b/tests/data/cc/certificate/fictional_cert.json
@@ -73,6 +73,7 @@
"related_cves": null,
"cert_lab": null,
"cert_id": null,
+ "annotated_references": null,
"extracted_sars": null,
"direct_transitive_cves": null,
"indirect_transitive_cves": null,
@@ -94,4 +95,4 @@
"report_link": "https://path.to/report/link",
"st_link": "https://path.to/st/link",
"cert_link": "https://path.to/cert/link"
-} \ No newline at end of file
+}
diff --git a/tests/data/cc/dataset/auxiliary_datasets/maintenances/maintenance_updates.json b/tests/data/cc/dataset/auxiliary_datasets/maintenances/maintenance_updates.json
index fd21471b..122a2845 100644
--- a/tests/data/cc/dataset/auxiliary_datasets/maintenances/maintenance_updates.json
+++ b/tests/data/cc/dataset/auxiliary_datasets/maintenances/maintenance_updates.json
@@ -68,6 +68,7 @@
"directly_referencing": null,
"indirectly_referencing": null
},
+ "annotated_references": null,
"extracted_sars": null,
"direct_transitive_cves": null,
"indirect_transitive_cves": null
@@ -76,4 +77,4 @@
"maintenance_date": "2019-08-26"
}
]
-} \ No newline at end of file
+}
diff --git a/tests/data/cc/dataset/toy_dataset.json b/tests/data/cc/dataset/toy_dataset.json
index dec802f7..22b8d192 100644
--- a/tests/data/cc/dataset/toy_dataset.json
+++ b/tests/data/cc/dataset/toy_dataset.json
@@ -77,6 +77,7 @@
"related_cves": null,
"cert_lab": null,
"cert_id": null,
+ "annotated_references": null,
"extracted_sars": null,
"direct_transitive_cves": null,
"indirect_transitive_cves": null,
@@ -164,6 +165,7 @@
"related_cves": null,
"cert_lab": null,
"cert_id": null,
+ "annotated_references": null,
"extracted_sars": null,
"direct_transitive_cves": null,
"indirect_transitive_cves": null,
@@ -259,6 +261,7 @@
"related_cves": null,
"cert_lab": null,
"cert_id": null,
+ "annotated_references": null,
"extracted_sars": null,
"direct_transitive_cves": null,
"indirect_transitive_cves": null,
@@ -279,4 +282,4 @@
}
}
]
-} \ No newline at end of file
+}