diff --git a/checkpoints/model_guidance_progress__S_1__05_04_17_37_18_741_001677.pt b/checkpoints/model_guidance_progress__S_1__05_04_17_37_18_741_001677.pt deleted file mode 120000 index e6ab06eb1..000000000 --- a/checkpoints/model_guidance_progress__S_1__05_04_17_37_18_741_001677.pt +++ /dev/null @@ -1 +0,0 @@ -/home/emerge/gpudrive/runs/guidance_progress__S_1__05_04_17_37_18_741/model_guidance_progress__S_1__05_04_17_37_18_741_001677.pt \ No newline at end of file diff --git a/examples/eval/notebooks/02_guidance_data_analysis.ipynb b/examples/eval/notebooks/02_guidance_data_analysis.ipynb index 7b91ec50f..19af0e2ec 100644 --- a/examples/eval/notebooks/02_guidance_data_analysis.ipynb +++ b/examples/eval/notebooks/02_guidance_data_analysis.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 15, + "execution_count": 52, "metadata": {}, "outputs": [], "source": [ @@ -55,7 +55,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 53, "metadata": {}, "outputs": [], "source": [ @@ -73,7 +73,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -134,22 +134,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "torch.Size([4, 64, 91, 2])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "env.reference_trajectory.pos_xy[0, 0, :, 0]" + "#env.reference_trajectory.pos_xy[0, 0, :, 0]" ] }, { @@ -161,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -171,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -205,7 +194,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -219,7 +208,7 @@ " \n", " \n", " \n", - " 2025-05-02T11:58:00.806526\n", + " 2025-05-02T12:34:22.763205\n", " image/svg+xml\n", " \n", " \n", @@ -256,12 +245,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -338,7 +327,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -379,7 +368,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -410,7 +399,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -448,12 +437,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -499,7 +488,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -554,7 +543,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -695,7 +684,7 @@ "L 201.776434 149.123476 \n", "L 205.14684 150.627879 \n", "L 208.572846 152.061486 \n", - "\" clip-path=\"url(#pf313e37106)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p84b03e9235)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p84b03e9235)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1220,7 +1209,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1262,7 +1251,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1277,7 +1266,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1328,7 +1317,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1344,7 +1333,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1392,7 +1381,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1429,7 +1418,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1445,7 +1434,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1576,7 +1565,7 @@ "L 445.410639 93.810853 \n", "L 447.734544 90.377325 \n", "L 450.082368 86.13398 \n", - "\" clip-path=\"url(#p5705ff745f)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p48a52b2a85)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p48a52b2a85)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1789,7 +1778,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1803,7 +1792,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1817,7 +1806,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1833,7 +1822,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1850,7 +1839,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1867,7 +1856,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1884,7 +1873,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -1901,7 +1890,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2041,7 +2030,7 @@ "L 688.323149 59.92004 \n", "L 690.001997 52.609597 \n", "L 691.680846 45.344146 \n", - "\" clip-path=\"url(#p7e84ca5722)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p724393ff1f)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p724393ff1f)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2382,7 +2371,7 @@ " \n", " \n", " \n", - " 2025-05-02T11:58:00.922915\n", + " 2025-05-02T12:34:22.876038\n", " image/svg+xml\n", " \n", " \n", @@ -2419,12 +2408,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2493,7 +2482,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2506,7 +2495,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2520,7 +2509,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2580,12 +2569,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2616,7 +2605,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2657,7 +2646,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2670,7 +2659,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -2798,7 +2787,7 @@ "L 212.746672 114.333315 \n", "L 215.483054 111.875659 \n", "L 218.241079 109.454387 \n", - "\" clip-path=\"url(#p98bc7fd8f4)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#pd6016f2a54)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pd6016f2a54)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3312,7 +3301,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3325,7 +3314,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3375,7 +3364,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3400,7 +3389,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3416,7 +3405,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3431,7 +3420,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3562,7 +3551,7 @@ "L 454.386011 30.369939 \n", "L 452.464275 28.930577 \n", "L 453.663554 29.650258 \n", - "\" clip-path=\"url(#pc10d34ecf7)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#paf37906cbd)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#paf37906cbd)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3775,7 +3764,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3789,7 +3778,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3803,7 +3792,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3831,7 +3820,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3847,7 +3836,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3863,7 +3852,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -3879,7 +3868,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4017,7 +4006,7 @@ "L 688.222291 29.725801 \n", "L 689.925685 29.1278 \n", "L 691.629079 28.973075 \n", - "\" clip-path=\"url(#pc6651831c5)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#pae9d1dc14f)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pae9d1dc14f)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4358,7 +4347,7 @@ " \n", " \n", " \n", - " 2025-05-02T11:58:01.175975\n", + " 2025-05-02T12:34:22.985175\n", " image/svg+xml\n", " \n", " \n", @@ -4395,12 +4384,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4436,7 +4425,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4466,7 +4455,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4531,12 +4520,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4598,7 +4587,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4614,7 +4603,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -4809,7 +4798,7 @@ "L 68.706411 44.000841 \n", "L 68.705645 42.117058 \n", "L 68.792107 40.147648 \n", - "\" clip-path=\"url(#pe5231adf11)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p34992a1849)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p34992a1849)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5323,7 +5312,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5337,7 +5326,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5386,7 +5375,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5402,7 +5391,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5417,7 +5406,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5546,7 +5535,7 @@ "L 451.139244 83.946515 \n", "L 451.556906 77.209869 \n", "L 453.320368 76.835611 \n", - "\" clip-path=\"url(#p3b2a37ecd4)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p2a29c651bc)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p2a29c651bc)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5757,7 +5746,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5771,7 +5760,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5785,7 +5774,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5813,7 +5802,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5827,7 +5816,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5840,7 +5829,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -5974,7 +5963,7 @@ "L 688.272772 30.843645 \n", "L 689.991883 30.837121 \n", "L 691.710995 30.943089 \n", - "\" clip-path=\"url(#p580f09abc5)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p6bd223a527)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p6bd223a527)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6313,7 +6302,7 @@ " \n", " \n", " \n", - " 2025-05-02T11:58:01.292953\n", + " 2025-05-02T12:34:23.094625\n", " image/svg+xml\n", " \n", " \n", @@ -6350,12 +6339,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6419,7 +6408,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6493,7 +6482,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6533,12 +6522,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6619,7 +6608,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6637,7 +6626,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6655,7 +6644,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -6814,7 +6803,7 @@ "L 222.462067 129.732046 \n", "L 223.21216 134.835918 \n", "L 223.808734 136.111886 \n", - "\" clip-path=\"url(#p7aa1d003b8)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p6fefcf3c0d)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p6fefcf3c0d)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7328,7 +7317,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7377,7 +7366,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7394,7 +7383,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7526,7 +7515,7 @@ "L 356.110629 58.481995 \n", "L 354.678422 102.809122 \n", "L 349.876315 73.257704 \n", - "\" clip-path=\"url(#p1beafd428b)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p97a3c43b0e)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p97a3c43b0e)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7739,7 +7728,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7753,7 +7742,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7767,7 +7756,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7783,7 +7772,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7801,7 +7790,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7819,7 +7808,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7836,7 +7825,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -7976,7 +7965,7 @@ "L 696.400855 59.538325 \n", "L 697.968794 30.345392 \n", "L 699.536734 32.60041 \n", - "\" clip-path=\"url(#pfb06815656)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p8efac481d5)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p8efac481d5)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8317,7 +8306,7 @@ " \n", " \n", " \n", - " 2025-05-02T11:58:01.414957\n", + " 2025-05-02T12:34:23.209033\n", " image/svg+xml\n", " \n", " \n", @@ -8354,12 +8343,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8428,7 +8417,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8469,7 +8458,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8529,12 +8518,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8587,7 +8576,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8642,7 +8631,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -8707,7 +8696,7 @@ "L 183.092883 52.529275 \n", "L 193.999551 40.458437 \n", "L 204.739429 28.930577 \n", - "\" clip-path=\"url(#p991feb5e47)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p639cd72a2c)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p639cd72a2c)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9171,7 +9160,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9223,7 +9212,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9238,7 +9227,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9253,7 +9242,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9294,7 +9283,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9349,7 +9338,7 @@ "L 425.384253 30.603551 \n", "L 442.811409 28.930577 \n", "L 415.789526 37.630043 \n", - "\" clip-path=\"url(#p7cc3346d9a)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p8e97edbce8)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p8e97edbce8)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9486,7 +9475,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9499,7 +9488,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9515,7 +9504,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9531,7 +9520,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9547,7 +9536,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9610,7 +9599,7 @@ "L 659.819748 40.633233 \n", "L 670.351569 35.432727 \n", "L 680.88339 29.26303 \n", - "\" clip-path=\"url(#p35f48c5443)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p59156aade0)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p59156aade0)\" style=\"fill: none; stroke: #ffa500; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -9889,7 +9878,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ @@ -9903,16 +9892,16 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "((194, 91, 6), (1180, 90, 6), (1180, 80, 6))" + "((1180, 91, 6), (1180, 90, 6), (38, 80, 6))" ] }, - "execution_count": 21, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -9931,7 +9920,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -9945,7 +9934,7 @@ " \n", " \n", " \n", - " 2025-05-02T09:58:44.004711\n", + " 2025-05-02T12:37:16.431962\n", " image/svg+xml\n", " \n", " \n", @@ -9982,12 +9971,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10057,7 +10046,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10089,7 +10078,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10102,7 +10091,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10117,7 +10106,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10579,12 +10568,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10597,7 +10586,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10614,7 +10603,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10652,7 +10641,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10701,7 +10690,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10759,7 +10748,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -10836,7 +10825,7 @@ "L 96.382283 193.645491 \n", "L 86.684423 193.645491 \n", "z\n", - "\" clip-path=\"url(#p093979ad31)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p72135e9794)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11031,7 +11020,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11047,7 +11036,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11060,7 +11049,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11075,7 +11064,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11092,7 +11081,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11105,7 +11094,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11122,7 +11111,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11139,7 +11128,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11156,7 +11145,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11177,7 +11166,7 @@ "L 352.405813 193.438535 \n", "L 342.707953 193.438535 \n", "z\n", - "\" clip-path=\"url(#pa48d421855)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60c2aa369d)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pfc607a1406)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11804,7 +11837,7 @@ "z\n", "\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11855,7 +11888,7 @@ "z\n", "\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11873,13 +11906,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -11918,7 +11951,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -11932,7 +11965,7 @@ " \n", " \n", " \n", - " 2025-05-02T09:58:49.734324\n", + " 2025-05-02T12:34:50.343224\n", " image/svg+xml\n", " \n", " \n", @@ -11969,12 +12002,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12038,7 +12071,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12079,7 +12112,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12092,7 +12125,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12106,7 +12139,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12475,12 +12508,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12493,7 +12526,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12537,7 +12570,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12571,7 +12604,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12648,7 +12681,7 @@ "L 96.382284 193.663261 \n", "L 86.684423 193.663261 \n", "z\n", - "\" clip-path=\"url(#peaffca2a01)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pba831d38e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12842,7 +12875,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12857,7 +12890,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12870,7 +12903,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12886,7 +12919,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12899,7 +12932,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12916,7 +12949,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12933,7 +12966,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12962,7 +12995,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12980,7 +13013,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -12998,7 +13031,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13020,7 +13053,7 @@ "L 352.405811 193.643441 \n", "L 342.707953 193.643441 \n", "z\n", - "\" clip-path=\"url(#pd49af25ece)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p076c2da092)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13214,14 +13247,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13229,12 +13262,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13242,12 +13275,26 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13256,12 +13303,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13269,32 +13316,31 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -13303,15 +13349,15 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -13320,219 +13366,250 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p1a560d2423)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13677,7 +13754,7 @@ "z\n", "\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13744,7 +13821,7 @@ "z\n", "\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13762,13 +13839,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13807,7 +13884,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -13821,7 +13898,7 @@ " \n", " \n", " \n", - " 2025-05-02T09:58:59.274967\n", + " 2025-05-02T12:34:53.150913\n", " image/svg+xml\n", " \n", " \n", @@ -13858,12 +13935,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13910,7 +13987,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -13946,7 +14023,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14374,12 +14451,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14392,7 +14469,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14425,7 +14502,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14442,7 +14519,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14573,7 +14650,7 @@ "L 89.033594 152.065572 \n", "L 79.335736 152.065572 \n", "z\n", - "\" clip-path=\"url(#pffaca1bf05)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pcaabb422e9)\" style=\"fill: #4c72b0; opacity: 0.5; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14766,7 +14843,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14779,7 +14856,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14794,7 +14871,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14807,7 +14884,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14850,7 +14927,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14867,7 +14944,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14884,7 +14961,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14901,7 +14978,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -14922,7 +14999,7 @@ "L 345.057123 131.78872 \n", "L 335.359265 131.78872 \n", "z\n", - "\" clip-path=\"url(#pbc9ea19dba)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pbaad5fe637)\" style=\"fill: #c44e52; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15115,12 +15192,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15128,12 +15205,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15143,7 +15220,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15156,13 +15233,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -15172,151 +15249,168 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p60d22a74f4)\" style=\"fill: #55a868; stroke: #ffffff; stroke-linejoin: miter\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15624,7 +15718,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -15638,7 +15732,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:15.978108\n", + " 2025-05-02T12:34:56.351094\n", " image/svg+xml\n", " \n", " \n", @@ -15675,12 +15769,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15757,7 +15851,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15798,7 +15892,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15829,7 +15923,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15867,12 +15961,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15887,7 +15981,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15933,7 +16027,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -15988,7 +16082,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16129,7 +16223,7 @@ "L 250.760332 176.896991 \n", "L 255.05483 178.708059 \n", "L 259.42017 180.4339 \n", - "\" clip-path=\"url(#p3e890fd52d)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#pf53a46b87a)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pf53a46b87a)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16642,7 +16736,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16655,7 +16749,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16689,7 +16783,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16734,7 +16828,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16749,7 +16843,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16774,7 +16868,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16790,7 +16884,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16806,7 +16900,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16822,7 +16916,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16838,7 +16932,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -16943,7 +17037,7 @@ "L 538.79004 108.167448 \n", "L 541.723408 104.147351 \n", "L 544.686966 99.179091 \n", - "\" clip-path=\"url(#pde3e228512)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#pd767447155)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.010088 32.969181 \n", + "L 355.187847 33.048176 \n", + "L 365.019549 37.60405 \n", + "L 366.442313 38.372824 \n", + "L 371.231383 40.880737 \n", + "L 378.313667 44.469189 \n", + "L 378.980883 44.796349 \n", + "L 385.544347 48.223742 \n", + "L 389.283989 50.154169 \n", + "\" clip-path=\"url(#pd767447155)\" style=\"fill: none; stroke: #55a868; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pd767447155)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17238,7 +17332,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17252,7 +17346,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17266,7 +17360,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17280,7 +17374,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17330,7 +17424,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17347,7 +17441,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17364,7 +17458,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17381,7 +17475,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17398,7 +17492,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17415,7 +17509,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -17555,90 +17649,90 @@ "L 829.389867 73.488381 \n", "L 831.529018 64.978643 \n", "L 833.66817 56.521276 \n", - "\" clip-path=\"url(#p9dce9e7461)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p83a06864fd)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", + "\" clip-path=\"url(#p83a06864fd)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18015,7 +18109,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:16.111920\n", + " 2025-05-02T12:34:56.476410\n", " image/svg+xml\n", " \n", " \n", @@ -18052,12 +18146,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18126,7 +18220,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18139,7 +18233,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18153,7 +18247,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18188,7 +18282,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18259,12 +18353,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18304,7 +18398,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18357,7 +18451,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18373,7 +18467,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18389,7 +18483,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18404,7 +18498,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18419,7 +18513,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18434,7 +18528,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -18564,7 +18658,7 @@ "L 239.600888 163.004858 \n", "L 242.597193 159.240748 \n", "L 245.617197 155.532365 \n", - "\" clip-path=\"url(#p43d8902e27)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p3b311a3b9f)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p3b311a3b9f)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19077,12 +19171,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19090,12 +19184,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19104,12 +19198,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19120,7 +19214,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19134,7 +19228,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19148,7 +19242,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19162,7 +19256,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19175,7 +19269,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19188,7 +19282,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19200,274 +19294,274 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + "L 549.625405 56.133725 \n", + "\" clip-path=\"url(#p8de9a2e024)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19586,7 +19680,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19600,7 +19694,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19614,7 +19708,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19628,7 +19722,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19719,12 +19813,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19735,12 +19829,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19751,12 +19845,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19767,12 +19861,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -19814,274 +19908,274 @@ " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#p98967a7ab1)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20365,7 +20459,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:16.497025\n", + " 2025-05-02T12:34:56.603973\n", " image/svg+xml\n", " \n", " \n", @@ -20402,12 +20496,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20466,7 +20560,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20479,7 +20573,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20493,7 +20587,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20558,12 +20652,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20644,7 +20738,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20661,7 +20755,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20690,7 +20784,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20707,7 +20801,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20724,7 +20818,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20741,7 +20835,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -20892,7 +20986,7 @@ "L 134.303766 152.731897 \n", "L 134.303035 151.545486 \n", "L 134.385615 150.305147 \n", - "\" clip-path=\"url(#p59e0e16868)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p3065ce06d6)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p3065ce06d6)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21409,7 +21503,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21425,7 +21519,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21441,7 +21535,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21457,7 +21551,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21474,7 +21568,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21491,7 +21585,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21508,7 +21602,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21525,7 +21619,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21541,7 +21635,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21557,7 +21651,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21573,7 +21667,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21677,47 +21771,33 @@ "L 549.875533 116.46489 \n", "L 550.430883 106.147145 \n", "L 552.775696 105.573937 \n", - "\" clip-path=\"url(#p621b878b7e)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#pdd63097e6e)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", - " \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 544.262874 111.779961 \n", + "L 539.813251 106.253741 \n", + "L 538.529295 104.155679 \n", + "L 536.387721 101.076367 \n", + "L 537.517099 101.904973 \n", + "L 537.49513 101.542836 \n", + "L 543.323305 109.210759 \n", + "L 543.911166 109.888982 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "L 550.451452 118.757722 \n", + "\" clip-path=\"url(#pdd63097e6e)\" style=\"fill: none; stroke: #55a868; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#pdd63097e6e)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21972,7 +22066,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -21986,7 +22080,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22000,7 +22094,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22014,7 +22108,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22105,12 +22199,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22167,12 +22261,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22181,12 +22275,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22194,12 +22288,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22207,12 +22301,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22220,12 +22314,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22265,272 +22359,272 @@ " \n", " \n", " \n", - " \n", + "L 653.36728 32.323571 \n", + "L 655.617801 32.464566 \n", + "L 657.868322 32.565194 \n", + "L 660.118843 32.728977 \n", + "L 662.369364 32.739516 \n", + "L 664.619885 32.868117 \n", + "L 666.870406 33.017725 \n", + "L 669.120927 33.165807 \n", + "L 671.371448 33.725804 \n", + "L 673.621969 33.346981 \n", + "L 675.872489 33.897391 \n", + "L 678.12301 33.887396 \n", + "L 680.373531 34.068091 \n", + "L 682.624052 34.012861 \n", + "L 684.874573 33.950737 \n", + "L 687.125094 34.019627 \n", + "L 689.375615 34.170989 \n", + "L 691.626136 34.377851 \n", + "L 693.876657 34.373978 \n", + "L 696.127178 34.510147 \n", + "L 698.377699 34.552632 \n", + "L 700.62822 35.206334 \n", + "L 702.878741 35.365356 \n", + "L 705.129262 35.33356 \n", + "L 707.379783 35.427423 \n", + "L 709.630304 35.191649 \n", + "L 711.880825 35.111497 \n", + "L 714.131345 35.02831 \n", + "L 716.381866 35.045579 \n", + "L 718.632387 35.123139 \n", + "L 720.882908 35.072148 \n", + "L 723.133429 35.080761 \n", + "L 725.38395 35.191105 \n", + "L 727.634471 35.225607 \n", + "L 729.884992 35.083747 \n", + "L 732.135513 34.953778 \n", + "L 734.386034 35.034703 \n", + "L 736.636555 35.102942 \n", + "L 738.887076 35.116137 \n", + "L 741.137597 35.136492 \n", + "L 743.388118 35.167156 \n", + "L 745.638639 35.185213 \n", + "L 747.88916 35.217474 \n", + "L 750.13968 35.194549 \n", + "L 752.390201 35.273892 \n", + "L 754.640722 35.042479 \n", + "L 756.891243 34.989941 \n", + "L 759.141764 35.015358 \n", + "L 761.392285 35.060442 \n", + "L 763.642806 35.050118 \n", + "L 765.893327 35.089603 \n", + "L 768.143848 35.11618 \n", + "L 770.394369 35.158543 \n", + "L 772.64489 35.16508 \n", + "L 774.895411 35.123468 \n", + "L 777.145932 35.239297 \n", + "L 779.396453 35.184268 \n", + "L 781.646974 35.208897 \n", + "L 783.897495 35.147224 \n", + "L 786.148016 35.263102 \n", + "L 788.398536 35.34591 \n", + "L 790.649057 35.33893 \n", + "L 792.899578 35.345066 \n", + "L 795.150099 35.320601 \n", + "L 797.40062 35.246019 \n", + "L 799.651141 35.276877 \n", + "L 801.901662 35.435635 \n", + "L 804.152183 35.489296 \n", + "L 806.402704 35.51356 \n", + "L 808.653225 35.626947 \n", + "L 810.903746 35.515149 \n", + "L 813.154267 35.65691 \n", + "L 815.404788 35.134215 \n", + "L 817.655309 35.428182 \n", + "L 819.90583 35.232158 \n", + "L 822.156351 35.053956 \n", + "L 824.406871 35.177037 \n", + "L 826.657392 35.228113 \n", + "L 828.907913 35.218126 \n", + "L 831.158434 35.380348 \n", + "\" clip-path=\"url(#pfb8affd57a)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + "L 653.36728 32.323571 \n", + "L 655.617801 32.662321 \n", + "L 657.868322 32.885873 \n", + "L 660.118843 33.053265 \n", + "L 662.369364 33.20777 \n", + "L 664.619885 33.376708 \n", + "L 666.870406 33.527432 \n", + "L 669.120927 33.672787 \n", + "L 671.371448 33.851018 \n", + "L 673.621969 33.956379 \n", + "L 675.872489 34.065234 \n", + "L 678.12301 34.187062 \n", + "L 680.373531 34.369489 \n", + "L 682.624052 34.425219 \n", + "L 684.874573 34.565376 \n", + "L 687.125094 34.669677 \n", + "L 689.375615 34.790503 \n", + "L 691.626136 34.852878 \n", + "L 693.876657 34.971069 \n", + "L 696.127178 34.994552 \n", + "L 698.377699 35.086854 \n", + "L 700.62822 35.113058 \n", + "L 702.878741 35.158107 \n", + "L 705.129262 35.222285 \n", + "L 707.379783 35.249506 \n", + "L 709.630304 35.196983 \n", + "L 711.880825 35.244623 \n", + "L 714.131345 35.253831 \n", + "L 716.381866 35.259329 \n", + "L 718.632387 35.260303 \n", + "L 720.882908 35.240986 \n", + "L 723.133429 35.213321 \n", + "L 725.38395 35.188248 \n", + "L 727.634471 35.156904 \n", + "L 729.884992 35.111598 \n", + "L 732.135513 35.118442 \n", + "L 734.386034 35.139492 \n", + "L 736.636555 35.174473 \n", + "L 738.887076 35.107688 \n", + "L 741.137597 35.108419 \n", + "L 743.388118 35.107359 \n", + "L 745.638639 35.099927 \n", + "L 747.88916 35.108677 \n", + "L 750.13968 35.105669 \n", + "L 752.390201 35.075198 \n", + "L 754.640722 35.095088 \n", + "L 756.891243 35.127206 \n", + "L 759.141764 35.110338 \n", + "L 761.392285 35.04991 \n", + "L 763.642806 35.042522 \n", + "L 765.893327 35.043911 \n", + "L 768.143848 34.996986 \n", + "L 770.394369 34.978987 \n", + "L 772.64489 35.042722 \n", + "L 774.895411 35.060564 \n", + "L 777.145932 35.046101 \n", + "L 779.396453 35.014886 \n", + "L 781.646974 35.025496 \n", + "L 783.897495 35.081241 \n", + "L 786.148016 35.070186 \n", + "L 788.398536 35.083217 \n", + "L 790.649057 35.070416 \n", + "L 792.899578 35.043352 \n", + "L 795.150099 35.069342 \n", + "L 797.40062 35.098968 \n", + "L 799.651141 35.034918 \n", + "L 801.901662 35.049309 \n", + "L 804.152183 35.004232 \n", + "L 806.402704 35.045915 \n", + "L 808.653225 35.045629 \n", + "L 810.903746 35.090434 \n", + "L 813.154267 35.07232 \n", + "L 815.404788 35.075427 \n", + "L 817.655309 35.131072 \n", + "L 819.90583 35.090462 \n", + "L 822.156351 35.142441 \n", + "L 824.406871 35.089947 \n", + "L 826.657392 35.122008 \n", + "L 828.907913 35.165638 \n", + "L 831.158434 35.182306 \n", + "L 833.408955 35.181347 \n", + "\" clip-path=\"url(#pfb8affd57a)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22814,7 +22908,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:16.635125\n", + " 2025-05-02T12:34:56.729032\n", " image/svg+xml\n", " \n", " \n", @@ -22851,12 +22945,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -22929,7 +23023,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23015,7 +23109,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23032,7 +23126,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23075,7 +23169,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23092,7 +23186,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23134,12 +23228,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23187,7 +23281,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23203,7 +23297,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23219,7 +23313,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23350,7 +23444,7 @@ "L 257.820128 70.799809 \n", "L 258.825945 72.754062 \n", "L 259.625904 73.242626 \n", - "\" clip-path=\"url(#p34be15003a)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p2a8982c2df)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p2a8982c2df)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -23863,412 +23957,397 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24371,26 +24450,26 @@ "\" style=\"fill: none\"/>\n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24398,13 +24477,13 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24412,13 +24491,13 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24426,13 +24505,13 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24481,7 +24560,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24517,32 +24596,15 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24551,15 +24613,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24568,15 +24630,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24585,15 +24647,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24602,15 +24664,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24618,7 +24680,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -24652,275 +24714,275 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + "L 822.408934 41.671725 \n", + "L 824.511419 32.640973 \n", + "L 826.613904 33.338556 \n", + "\" clip-path=\"url(#p5232ea888b)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25032,13 +25094,13 @@ "z\n", "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25079,13 +25141,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25100,13 +25162,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25172,13 +25234,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25204,7 +25266,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:16.771588\n", + " 2025-05-02T12:34:56.850524\n", " image/svg+xml\n", " \n", " \n", @@ -25230,8 +25292,8 @@ " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25488,7 +25550,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25502,7 +25564,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25516,7 +25578,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25530,7 +25592,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25570,7 +25632,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25583,7 +25645,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25596,7 +25658,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -25633,115 +25695,115 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", @@ -26148,12 +26210,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26229,12 +26291,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26274,12 +26336,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26288,12 +26350,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26302,12 +26364,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26315,12 +26377,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26328,12 +26390,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26341,12 +26403,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", @@ -26672,11 +26734,11 @@ " \n", " \n", " \n", - " \n", " \n", @@ -26684,12 +26746,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26697,12 +26759,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26711,12 +26773,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26725,12 +26787,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26739,12 +26801,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26752,7 +26814,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -26821,82 +26883,51 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", @@ -27133,18 +27164,18 @@ "\" style=\"fill: none; stroke: #262626; stroke-width: 1.25; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -27279,13 +27310,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -27300,13 +27331,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -27372,14 +27403,14 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -27404,7 +27435,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:16.909230\n", + " 2025-05-02T12:34:56.973615\n", " image/svg+xml\n", " \n", " \n", @@ -27430,8 +27461,8 @@ " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -27845,12 +27824,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -27862,12 +27841,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -27879,12 +27858,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -27896,12 +27875,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -27913,14 +27892,35 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -27929,7 +27929,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -27955,168 +27955,168 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -28622,14 +28627,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -28639,14 +28644,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -28655,14 +28660,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -28671,14 +28676,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -28687,7 +28692,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#pac11595322)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#pac11595322)\" style=\"fill: none; stroke: #55a868; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", - " \n", + " \n", " \n", + "\" clip-path=\"url(#pac11595322)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -29025,87 +29030,119 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", @@ -29524,18 +29552,18 @@ "\" style=\"fill: none; stroke: #262626; stroke-width: 1.25; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -29670,13 +29698,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -29691,13 +29719,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -29763,14 +29791,14 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -29795,7 +29823,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:17.045040\n", + " 2025-05-02T12:34:57.103401\n", " image/svg+xml\n", " \n", " \n", @@ -29821,8 +29849,8 @@ " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -29999,12 +30027,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -30019,12 +30047,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -30037,7 +30065,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -30207,7 +30235,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -30256,7 +30284,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -30294,7 +30322,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -30311,7 +30339,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -30328,7 +30356,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -30400,178 +30428,178 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", @@ -30953,433 +30981,445 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -31451,87 +31491,87 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", @@ -31960,18 +32042,18 @@ "\" style=\"fill: none; stroke: #262626; stroke-width: 1.25; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -32106,13 +32188,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -32127,13 +32209,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -32199,14 +32281,14 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -32231,7 +32313,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:17.184240\n", + " 2025-05-02T12:34:57.233457\n", " image/svg+xml\n", " \n", " \n", @@ -32257,8 +32339,8 @@ " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -32585,7 +32667,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -32612,7 +32694,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -32627,7 +32709,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -32669,7 +32751,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -32684,7 +32766,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -32757,154 +32839,154 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", " \n", @@ -33311,12 +33393,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33325,12 +33407,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33338,12 +33420,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33351,40 +33433,27 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33392,14 +33461,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33407,329 +33476,329 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33801,87 +33870,87 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33933,14 +34002,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33950,14 +34019,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33967,14 +34036,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -33984,14 +34053,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34001,14 +34070,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34018,14 +34087,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34035,14 +34104,14 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34050,9 +34119,9 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", + " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", " \n", " \n", @@ -34328,18 +34397,18 @@ "\" style=\"fill: none; stroke: #262626; stroke-width: 1.25; stroke-linejoin: miter; stroke-linecap: square\"/>\n", " \n", " \n", - " \n", " \n", " \n", - " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34474,13 +34543,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34495,13 +34564,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34567,14 +34636,14 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "\n" @@ -34599,7 +34668,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:17.324870\n", + " 2025-05-02T12:34:57.363690\n", " image/svg+xml\n", " \n", " \n", @@ -34636,12 +34705,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34690,7 +34759,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34728,7 +34797,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34789,12 +34858,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34889,7 +34958,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34906,7 +34975,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34935,7 +35004,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34952,7 +35021,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34969,7 +35038,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -34986,7 +35055,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -35118,7 +35187,7 @@ "L 271.522949 138.989074 \n", "L 274.307417 141.666155 \n", "L 277.713228 145.235595 \n", - "\" clip-path=\"url(#p3425cc9a82)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p6bbbeb9de7)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p6bbbeb9de7)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -35631,12 +35700,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -35761,12 +35830,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -35774,12 +35843,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -35787,12 +35856,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -35800,12 +35869,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -35813,12 +35882,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -35826,12 +35895,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -35839,286 +35908,299 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36222,12 +36304,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36235,12 +36317,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36249,12 +36331,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36263,12 +36345,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36277,12 +36359,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36290,7 +36372,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36326,15 +36408,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36342,15 +36424,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36358,15 +36440,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36374,15 +36456,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36390,15 +36472,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36406,15 +36488,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36422,15 +36504,15 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36438,7 +36520,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36472,275 +36554,275 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", + " \n", + " \n", + "\" clip-path=\"url(#pca291eee6f)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36852,13 +36934,13 @@ "z\n", "\" style=\"fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36899,13 +36981,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36920,13 +37002,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -36992,13 +37074,13 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37024,7 +37106,7 @@ " \n", " \n", " \n", - " 2025-05-02T10:03:17.460833\n", + " 2025-05-02T12:34:57.489816\n", " image/svg+xml\n", " \n", " \n", @@ -37061,12 +37143,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37173,7 +37255,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37227,7 +37309,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37244,7 +37326,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37293,7 +37375,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37310,7 +37392,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37352,12 +37434,12 @@ " \n", " \n", " \n", - " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37406,7 +37488,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37447,7 +37529,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37462,7 +37544,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -37592,7 +37674,7 @@ "L 265.058301 43.031399 \n", "L 266.007298 37.510465 \n", "L 266.693806 32.203304 \n", - "\" clip-path=\"url(#p734964ceb3)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p9baa6b5ffd)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p9baa6b5ffd)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38136,7 +38218,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38150,7 +38232,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38165,7 +38247,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38178,7 +38260,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38191,7 +38273,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38204,7 +38286,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38217,7 +38299,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38251,7 +38333,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38264,7 +38346,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38277,7 +38359,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38380,10 +38462,11 @@ "L 539.254104 70.765596 \n", "L 542.93034 60.99296 \n", "L 540.758019 67.067842 \n", - "\" clip-path=\"url(#pfa6df0641c)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", + "\" clip-path=\"url(#p4240bd6e59)\" style=\"fill: none; stroke: #4c72b0; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p4240bd6e59)\" style=\"fill: none; stroke: #55a868; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", + "\" clip-path=\"url(#p4240bd6e59)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38675,7 +38757,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38689,7 +38771,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38703,7 +38785,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38717,7 +38799,7 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38767,12 +38849,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38782,12 +38864,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38797,12 +38879,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38812,12 +38894,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38827,12 +38909,12 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", @@ -38874,274 +38956,274 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + "\" clip-path=\"url(#pae8ab74e4b)\" style=\"fill: none; stroke: #c44e52; stroke-width: 1.5; stroke-linecap: round\"/>\n", " \n", " \n", " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", " \n", diff --git a/examples/eval/notebooks/obtain_guidance_data.py b/examples/eval/notebooks/obtain_guidance_data.py index 5184c42a7..59ed9981d 100644 --- a/examples/eval/notebooks/obtain_guidance_data.py +++ b/examples/eval/notebooks/obtain_guidance_data.py @@ -11,7 +11,7 @@ if __name__ == "__main__": - GUIDANCE_MODE = "log_replay" + GUIDANCE_MODE = "vbd_online" DATASET = "data/processed/wosac/validation_json_100" # Ensure VBD trajectory structures are in here SAVE_PATH = "examples/eval/figures_data/" @@ -24,13 +24,13 @@ add_reference_speed=True, add_reference_pos_xy=True, init_mode="wosac_train", - smoothen_trajectory=True, + smoothen_trajectory=False, ) render_config = RenderConfig() train_loader = SceneDataLoader( root=DATASET, - batch_size=10, + batch_size=2, dataset_size=100, sample_with_replacement=False, shuffle=False, @@ -61,6 +61,6 @@ ) np.save( - f"{SAVE_PATH}reference_{GUIDANCE_MODE}_smooth.npy", reference_traj_np + f"{SAVE_PATH}reference_{GUIDANCE_MODE}.npy", reference_traj_np ) print(f"Saved reference trajectory for {GUIDANCE_MODE} mode.") diff --git a/gpudrive/datatypes/trajectory.py b/gpudrive/datatypes/trajectory.py index eba306510..f36dc5306 100644 --- a/gpudrive/datatypes/trajectory.py +++ b/gpudrive/datatypes/trajectory.py @@ -151,14 +151,14 @@ def __init__( self.vel_xy = vbd_traj_tensor[:, :, :, 3:5] self.ref_speed = self.comp_reference_speed() # Assumption: All timesteps are valid (correct) - self.valids = torch.ones_like(self.pos_x, dtype=torch.int32) + self.valids = vbd_traj_tensor[:, :, :, 5].unsqueeze(-1).to( + torch.int32 + ) self.mean_pos_xy = mean_pos_xy self.mean_x = mean_pos_xy[:, 0] self.mean_y = mean_pos_xy[:, 1] - self.demean_positions() - @classmethod def from_tensor( cls, @@ -195,8 +195,8 @@ def demean_positions(self): mean_y_reshaped = self.mean_y.view(-1, 1, 1) # Apply to x and y coordinates - self.pos_xy[..., 0] -= mean_x_reshaped - self.pos_xy[..., 1] -= mean_y_reshaped + self.pos_xy[..., 10:, 0] -= mean_x_reshaped + self.pos_xy[..., 10:, 1] -= mean_y_reshaped self.pos_x = self.pos_xy[..., 0].unsqueeze(-1) self.pos_y = self.pos_xy[..., 1].unsqueeze(-1) @@ -224,9 +224,9 @@ def __init__(self, vbd_traj_tensor: torch.Tensor): self.vel_y = vbd_traj_tensor[:, :, :, 4].unsqueeze(-1) self.vel_xy = vbd_traj_tensor[:, :, :, 3:5] self.ref_speed = self.comp_reference_speed() - # Assumption: All timesteps are valid - # TODO: The first 10 timesteps come from the logs, so there may be invalid steps - self.valids = torch.ones_like(self.pos_x, dtype=torch.int32) + self.valids = vbd_traj_tensor[:, :, :, 5].unsqueeze(-1).to( + torch.int32 + ) @classmethod def from_tensor( diff --git a/gpudrive/env/base_env.py b/gpudrive/env/base_env.py index cb1258238..cb99f21ff 100755 --- a/gpudrive/env/base_env.py +++ b/gpudrive/env/base_env.py @@ -165,7 +165,15 @@ def _setup_environment_parameters(self): params = self._set_collision_behavior(params) params = self._set_road_reduction_params(params) params = self._set_goal_behavior(params) - self.init_steps = getattr(self.config, "init_steps", 0) + + if self.config.guidance and self.config.guidance_mode == "vbd_online": + self.init_steps = max(self.config.init_steps, 10) + print( + f"\n[Note] Guidance mode '{self.config.guidance_mode}' requires at least 10 initialization steps to provide sufficient scene context for the diffusion model. Automatically setting simulator time to t = {self.init_steps}. \n" + ) + else: + self.init_steps = getattr(self.config, "init_steps", 0) + params.initSteps = self.init_steps return params diff --git a/gpudrive/env/config.py b/gpudrive/env/config.py index 29721cf44..960128c29 100755 --- a/gpudrive/env/config.py +++ b/gpudrive/env/config.py @@ -40,7 +40,7 @@ class EnvConfig: add_reference_pos_xy: bool = True # (x, y) position time series add_reference_speed: bool = False # speed time series add_reference_heading: bool = False # heading time series - smoothen_trajectory: bool = True # Filters out the trajectory + smoothen_trajectory: bool = False # Filters out the trajectory guidance_pos_xy_radius: float = 1.0 # Tightness of the positions guidance # Maximum number of controlled agents in the scene diff --git a/gpudrive/env/env_torch.py b/gpudrive/env/env_torch.py index 5c723c2e5..14fd5bddc 100755 --- a/gpudrive/env/env_torch.py +++ b/gpudrive/env/env_torch.py @@ -36,6 +36,7 @@ from gpudrive.integrations.vbd.data.utils import process_scenario_data from gpudrive.utils.preprocess import smooth_scenario +import madrona_gpudrive class GPUDriveTorchEnv(GPUDriveGymEnv): @@ -72,18 +73,16 @@ def __init__( # Get the initial data batch (set of traffic scenarios) self.data_batch = next(self.data_iterator) - + assert self.num_worlds == len( self.data_batch ), f"Number of scenarios in data_batch ({len(self.data_batch)}) \ should equal number of worlds ({self.num_worlds}). \ \n Please check your data loader configuration." - + # Initialize simulator self.sim = self._initialize_simulator(params, self.data_batch) - self.init_steps = self.config.init_steps - # Controlled agents setup self.cont_agent_mask = self.get_controlled_agents_mask() self.max_agent_count = self.cont_agent_mask.shape[1] @@ -157,16 +156,16 @@ def setup_guidance(self): trajectory_tensor, self.backend, self.device ) elif self.guidance_mode == "vbd_online": - - self.init_steps = max(self.init_steps, 10) - print( - f"\n[Note] Guidance mode '{self.guidance_mode}' requires at least {self.init_steps} initialization steps to provide sufficient scene context for the diffusion model. Automatically setting simulator time to t = {self.init_steps}. \n" - ) - # Load pre-trained Versatile Behavior Diffusion (VBD) model self.vbd_model = self._load_vbd_model( model_path=self.config.vbd_model_path ) + + self.init_steps = max(self.init_steps, 10) + print( + f"\n[Note] Guidance mode '{self.guidance_mode}' requires at least {self.init_steps} initialization steps to provide sufficient scene context for the diffusion model. Automatically setting simulator time to t = {self.init_steps}. \n" + ) + # Construct scene context dict for the VBD model scene_context = self.construct_context(init_steps=self.init_steps) @@ -175,9 +174,66 @@ def setup_guidance(self): # Query the model online for the reference trajectory predicted = self.vbd_model.sample_denoiser(scene_context) + # Pad first 10 steps with logs + trajectory_tensor = self.sim.expert_trajectory_tensor() + log_trajectory = LogTrajectory.from_tensor( + trajectory_tensor, + self.num_worlds, + self.max_agent_count, + self.backend, + self.device, + ) + + reference_trajectory = torch.zeros( + self.num_worlds, + self.max_agent_count, + madrona_gpudrive.kTrajectoryLength, + 6 + ) + reference_trajectory[:, :, :self.init_steps + 1, :2] = log_trajectory.pos_xy[ + :, :, :self.init_steps + 1 + ] + reference_trajectory[:, :, :self.init_steps + 1, 2] = log_trajectory.yaw[ + :, :, :self.init_steps + 1, 0 + ] + reference_trajectory[:, :, :self.init_steps + 1, 3:5] = log_trajectory.vel_xy[ + :, :, :self.init_steps + 1 + ] + reference_trajectory[:, :, :self.init_steps + 1, 5] = log_trajectory.valids[ + :, :, :self.init_steps + 1, 0 + ] + + vbd_predictions=predicted["denoised_trajs"].to(self.device).detach() + + # Get the world means + world_means = ( + self.sim.world_means_tensor().to_torch()[:, :2].to(self.device) + ) + + # Add vbd predictions to the reference trajectory + for i in range(self.num_worlds): + # Get controlled agent indices for this world + valid_mask = ( + scene_context["agents_id"][i] >= 0 + ) + valid_world_indices = scene_context["agents_id"][i][valid_mask] + + reference_trajectory[ + i, valid_world_indices, self.init_steps + 1:, :2 + ] = vbd_predictions[i, valid_world_indices, :, :2] - world_means[ + i + ].view(1, 1, 2) + reference_trajectory[ + i, valid_world_indices, self.init_steps + 1:, 2:5 + ] = vbd_predictions[i, valid_world_indices, :, 2:5] + reference_trajectory[ + i, valid_world_indices, self.init_steps + 1:, 5 + ] = 1 + + # Wrap predictions into a VBDTrajectoryOnline object self.reference_trajectory = VBDTrajectoryOnline.from_tensor( - vbd_predictions=predicted["denoised_trajs"], + vbd_predictions=reference_trajectory, mean_pos_xy=self.sim.world_means_tensor().to_torch()[:, :2], backend=self.backend, device=self.device, diff --git a/gpudrive/integrations/vbd/data/amortize.py b/gpudrive/integrations/vbd/data/amortize.py index 394501adc..3f91ec946 100644 --- a/gpudrive/integrations/vbd/data/amortize.py +++ b/gpudrive/integrations/vbd/data/amortize.py @@ -27,6 +27,7 @@ from gpudrive.datatypes.trajectory import LogTrajectory from gpudrive.datatypes.observation import GlobalEgoState from gpudrive.integrations.vbd.sim_agent.sim_actor import VBDTest +import madrona_gpudrive def load_vbd_model(model_path, device="cpu", max_cont_agents=64): @@ -77,7 +78,7 @@ def main(): # Always use CPU device device = "cpu" - MAX_CONTROLLED_AGENTS = 64 + MAX_CONTROLLED_AGENTS = 32 print(f"Loading VBD model on {device}...") vbd_model = load_vbd_model(args.model_path, device, MAX_CONTROLLED_AGENTS) @@ -106,7 +107,7 @@ def main(): dataset_size=args.num_scenes, file_prefix="", ), - render_config=RenderConfig(render_3d=True), + render_config=RenderConfig(), max_cont_agents=MAX_CONTROLLED_AGENTS, # Maximum number of agents to control per scene device=device, ) @@ -115,8 +116,8 @@ def main(): output_trajectories = torch.zeros( gpudrive_env.num_worlds, gpudrive_env.max_agent_count, - env_config.episode_len, - 5, + madrona_gpudrive.kTrajectoryLength, + 6, ) # Save init steps from logs @@ -127,14 +128,17 @@ def main(): device=device, ) - output_trajectories[:, :, :INIT_STEPS, :2] = log_trajectory.pos_xy[ - :, :, :INIT_STEPS + output_trajectories[:, :, : INIT_STEPS + 1, :2] = log_trajectory.pos_xy[ + :, :, : INIT_STEPS + 1 ] - output_trajectories[:, :, :INIT_STEPS, 2] = log_trajectory.yaw[ - :, :, :INIT_STEPS, 0 + output_trajectories[:, :, : INIT_STEPS + 1, 2] = log_trajectory.yaw[ + :, :, : INIT_STEPS + 1, 0 ] - output_trajectories[:, :, :INIT_STEPS, 3:] = log_trajectory.vel_xy[ - :, :, :INIT_STEPS + output_trajectories[:, :, : INIT_STEPS + 1, 3:5] = log_trajectory.vel_xy[ + :, :, : INIT_STEPS + 1 + ] + output_trajectories[:, :, : INIT_STEPS + 1, 5] = log_trajectory.valids[ + :, :, : INIT_STEPS + 1, 0 ] # Action tensor to step through simulation @@ -181,20 +185,23 @@ def main(): i, valid_world_indices, :, 2 ] predicted_actions[i, valid_world_indices, :, 4:6] = vbd_output[ - i, valid_world_indices, :, 3: + i, valid_world_indices, :, 3:5 ] # Populate output trajectories output_trajectories[ - i, valid_world_indices, INIT_STEPS:, :2 + i, valid_world_indices, INIT_STEPS + 1 :, :2 ] = vbd_output[i, valid_world_indices, :, :2] - world_means[ i ].view( 1, 1, 2 ) output_trajectories[ - i, valid_world_indices, INIT_STEPS:, 2: + i, valid_world_indices, INIT_STEPS + 1 :, 2:5 ] = vbd_output[i, valid_world_indices, :, 2:] + output_trajectories[ + i, valid_world_indices, INIT_STEPS + 1 :, 5 + ] = 1.0 # Save to each file's json index_to_id = GlobalEgoState.from_tensor( diff --git a/src/bindings.cpp b/src/bindings.cpp index e3edfe6cd..d725606b3 100755 --- a/src/bindings.cpp +++ b/src/bindings.cpp @@ -23,6 +23,7 @@ namespace madrona_gpudrive m.attr("kMaxAgentCount") = consts::kMaxAgentCount; m.attr("kMaxRoadEntityCount") = consts::kMaxRoadEntityCount; m.attr("kMaxAgentMapObservationsCount") = consts::kMaxAgentMapObservationsCount; + m.attr("kTrajectoryLength") = consts::kTrajectoryLength; m.attr("episodeLen") = consts::episodeLen; m.attr("numLidarSamples") = consts::numLidarSamples; m.attr("vehicleScale") = consts::vehicleLengthScale; diff --git a/src/consts.hpp b/src/consts.hpp index d5e76b834..19200f798 100644 --- a/src/consts.hpp +++ b/src/consts.hpp @@ -8,7 +8,7 @@ namespace madrona_gpudrive { namespace consts { -inline constexpr madrona::CountT kMaxAgentCount = 64; +inline constexpr madrona::CountT kMaxAgentCount = 32; inline constexpr madrona::CountT kMaxRoadEntityCount = 10000; inline constexpr madrona::CountT kMaxAgentMapObservationsCount = 128; diff --git a/src/json_serialization.hpp b/src/json_serialization.hpp index 20c61828a..73ad38551 100644 --- a/src/json_serialization.hpp +++ b/src/json_serialization.hpp @@ -145,8 +145,8 @@ namespace madrona_gpudrive obj.metadata.avgZ = avgZ; // Initialize VBD trajectories to zeros - for (int i = 0; i < consts::episodeLen; i++) { - for (int j = 0; j < 5; j++) { + for (int i = 0; i < consts::kTrajectoryLength; i++) { + for (int j = 0; j < 6; j++) { obj.vbd_trajectories[i][j] = 0.0f; } } @@ -155,13 +155,14 @@ namespace madrona_gpudrive if (j.contains("vbd_trajectory")) { int vbd_idx = 0; for (const auto &vbd_traj : j.at("vbd_trajectory")) { - if (vbd_idx < consts::episodeLen) { + if (vbd_idx < consts::kTrajectoryLength) { if (!vbd_traj.is_null()) { obj.vbd_trajectories[vbd_idx][0] = vbd_traj.at(0).get(); obj.vbd_trajectories[vbd_idx][1] = vbd_traj.at(1).get(); obj.vbd_trajectories[vbd_idx][2] = vbd_traj.at(2).get(); obj.vbd_trajectories[vbd_idx][3] = vbd_traj.at(3).get(); obj.vbd_trajectories[vbd_idx][4] = vbd_traj.at(4).get(); + obj.vbd_trajectories[vbd_idx][5] = vbd_traj.at(5).get(); } } vbd_idx++; diff --git a/src/types.hpp b/src/types.hpp index 8d9fd25d8..66135fc5b 100755 --- a/src/types.hpp +++ b/src/types.hpp @@ -364,15 +364,15 @@ namespace madrona_gpudrive struct VBDTrajectory { - // For each agent, store the full VBD trajectory (x, y, yaw, vx, vy) - // The tensor has shape [traj_length, 5] - float trajectories[consts::episodeLen][5]; + // For each agent, store the full VBD trajectory (x, y, yaw, vx, vy, valid) + // The tensor has shape [traj_length, 6] + float trajectories[consts::episodeLen][6]; static inline void zero(VBDTrajectory& vbd_traj) { for (int i = 0; i < consts::episodeLen; i++) { - for (int j = 0; j < 5; j++) + for (int j = 0; j < 6; j++) { vbd_traj.trajectories[i][j] = 0.0f; } @@ -380,7 +380,7 @@ namespace madrona_gpudrive } }; - const size_t VBDTrajectoryExportSize = consts::episodeLen * 5; + const size_t VBDTrajectoryExportSize = consts::episodeLen * 6; static_assert(sizeof(VBDTrajectory) == sizeof(float) * VBDTrajectoryExportSize);