diff --git a/foo.py b/foo.py
new file mode 100644
index 0000000..9159e16
--- /dev/null
+++ b/foo.py
@@ -0,0 +1,103 @@
+import typing
+
+import pandas
+from dataclasses import dataclass
+from math import floor
+from datetime import datetime
+
+def load_score_log(path: str) -> pandas.DataFrame:
+ return pandas.read_csv(path, sep=',',
+ dtype={'score': int, 'sourcename': str, 'name': str, 'mapx': int, 'mapy': int},
+ parse_dates=['when'], date_format='%d/%m/%Y %H:%M')
+
+def generate_station_stats(score_log: pandas.DataFrame) -> pandas.DataFrame:
+ # every station in the score log should have a first visit, so create summary based on that
+ summary = score_log[score_log['sourcename'] == 'First Visit'][['name', 'mapx', 'mapy', 'when']]
+ summary.rename(columns={'when': 'first_visit'}, inplace=True)
+
+ # add total score
+ summary = pandas.merge(summary, score_log[['name', 'score']].groupby('name').sum(), on='name', validate='1:1')
+ summary.rename(columns={'score': 'total_score'}, inplace=True)
+
+ boosts = score_log[score_log['sourcename'] == 'Output Boost'][['name', 'score']].groupby('name')
+
+ # add total boosts
+ total_boosts = boosts.sum()
+ total_boosts['totalboostduration'] = total_boosts['score'].apply(lambda x: 10 * x)
+ total_boosts.rename(columns={'score': 'totalboostscore'}, inplace=True)
+ summary = pandas.merge(summary, total_boosts, on='name')
+
+ # add max boosts
+ max_boosts = boosts.max()
+ max_boosts['maxboostduration'] = max_boosts['score'].apply(lambda x: 10 * x)
+ max_boosts.rename(columns={'score': 'maxboostscore'}, inplace=True)
+ summary = pandas.merge(summary, max_boosts, on='name')
+
+ visits = score_log[(score_log['sourcename'] == 'Visit') | (score_log['sourcename'] == 'First Visit')][['name', 'score']].groupby('name')
+
+ # add total visits (count)
+ summary = pandas.merge(summary, visits.count(), on='name', validate='1:1')
+ summary.rename(columns={'score': 'totalvisits'}, inplace=True)
+
+ captures = score_log[score_log['sourcename'] == 'Capture'][['name', 'score']].groupby('name')
+
+ # add captures (count)
+ summary = pandas.merge(summary, captures.count(), on='name', validate='1:1')
+ summary.rename(columns={'score': 'captures'}, inplace=True)
+
+ # add max held duration (max capture score)
+ summary = pandas.merge(summary, captures.max(), on='name', validate='1:1')
+ summary.rename(columns={'score': 'maxheldduration'}, inplace=True)
+
+ # add total held duration (sum capture score)
+ summary = pandas.merge(summary, captures.sum(), on='name', validate='1:1')
+ summary.rename(columns={'score': 'totalheldduration'}, inplace=True)
+
+ return summary
+
+def generate_score_per_second(score_log: pandas.DataFrame) -> pandas.DataFrame:
+ @dataclass
+ class ScoreSecond:
+ name: str
+ sourcename: str
+ when: datetime
+ score: float
+ once: bool
+ mapx: int
+ mapy: int
+
+ def row_to_scoreseconds(row, score_per) -> typing.Iterator[ScoreSecond]:
+ seconds = int(floor(row.score / score_per))
+ assert row.score % score_per < 0.1
+ when = int(floor(row.when.timestamp()))
+ for elapsed in range(0, seconds):
+ timestamp = pandas.Timestamp(when - elapsed, unit='s')
+ yield ScoreSecond(name=row.name, sourcename=row.sourcename, mapx=row.mapx, mapy=row.mapy, when=timestamp,
+ score=score_per, once=False)
+
+ def gen_scoreseconds() -> typing.Iterator[ScoreSecond]:
+ for row in score_log.itertuples():
+ if row.sourcename == "Capture":
+ yield from row_to_scoreseconds(row, 1.0)
+ elif row.sourcename == "Output Boost":
+ yield from row_to_scoreseconds(row, 0.1)
+ else: # one-off
+ yield ScoreSecond(name=row.name, sourcename=row.sourcename, mapx=row.mapx, mapy=row.mapy, when=row.when,
+ score=row.score, once=True)
+
+ scoreseconds = pandas.DataFrame(gen_scoreseconds())
+ scoreseconds.sort_values(by=['when'], inplace=True)
+ scoreseconds.reset_index(drop=True, inplace=True)
+
+ acc_col = pandas.Series([0.0]).repeat(len(scoreseconds)).reset_index(drop=True)
+
+ acc = 0.0
+ for i, row in enumerate(scoreseconds.itertuples()):
+ acc += row.score
+ acc_col[i] = acc
+
+ scoreseconds['accumulated_score'] = acc_col
+ del acc
+ del acc_col
+
+ return scoreseconds
diff --git a/notebook.ipynb b/notebook.ipynb
index 1bf7b81..05e40ee 100644
--- a/notebook.ipynb
+++ b/notebook.ipynb
@@ -8,18 +8,20 @@
"languageId": "plaintext"
},
"ExecuteTime": {
- "end_time": "2025-08-19T23:39:53.836251Z",
- "start_time": "2025-08-19T23:39:53.832994Z"
+ "end_time": "2025-08-26T15:15:40.301728Z",
+ "start_time": "2025-08-26T15:15:40.138900Z"
}
},
"source": [
"from datetime import datetime\n",
"\n",
"import pandas\n",
- "import matplotlib.pyplot as plt"
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "from foo import *"
],
"outputs": [],
- "execution_count": 25
+ "execution_count": 43
},
{
"cell_type": "code",
@@ -1471,8 +1473,7 @@
"# one entry per second per point captured\n",
"\n",
"import numpy as np\n",
- "from dataclasses import dataclass\n",
- "from math import floor\n",
+ "\n",
"\n",
"@dataclass\n",
"class ScoreSecond:\n",
diff --git a/notebook2.ipynb b/notebook2.ipynb
new file mode 100644
index 0000000..4bdc840
--- /dev/null
+++ b/notebook2.ipynb
@@ -0,0 +1,1271 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "id": "initial_id",
+ "metadata": {
+ "collapsed": true,
+ "ExecuteTime": {
+ "end_time": "2025-08-26T16:05:16.645275Z",
+ "start_time": "2025-08-26T16:05:16.170814Z"
+ }
+ },
+ "source": [
+ "from datetime import datetime\n",
+ "\n",
+ "import pandas\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "from foo import *"
+ ],
+ "outputs": [],
+ "execution_count": 1
+ },
+ {
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-08-26T16:05:16.700303Z",
+ "start_time": "2025-08-26T16:05:16.659896Z"
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "vinzenz_score_log = load_score_log('PolyGenStats-vinzenz-scorelog.csv')\n",
+ "vinzenz_summary = generate_station_stats(vinzenz_score_log)\n",
+ "\n",
+ "vinzenz_summary"
+ ],
+ "id": "bf523274efb801dd",
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ " name mapx mapy first_visit total_score \\\n",
+ "0 Info Desk 216 505 2025-08-08 20:14:00 17026 \n",
+ "1 Main Bar 190 570 2025-08-08 20:22:00 36884 \n",
+ "2 Badge Tent 328 607 2025-08-08 20:23:00 32599 \n",
+ "3 CoderDojo Belgium 34 523 2025-08-08 21:39:00 44374 \n",
+ "4 Heaven 183 227 2025-08-08 21:46:00 10057 \n",
+ "5 Karaoke Bar 292 446 2025-08-08 21:55:00 45272 \n",
+ "6 Cold North 305 402 2025-08-08 21:56:00 50757 \n",
+ "7 Entrance Arch 240 916 2025-08-08 22:10:00 41486 \n",
+ "8 Site Sign 207 874 2025-08-08 22:12:00 63688 \n",
+ "9 Maker Days Eindhoven 115 749 2025-08-08 22:28:00 62440 \n",
+ "10 Adyen 120 637 2025-08-08 22:34:00 8281 \n",
+ "11 Chaos Mauldasch 164 635 2025-08-08 22:37:00 8564 \n",
+ "12 Party Bar 67 289 2025-08-08 22:54:00 13340 \n",
+ "13 Geraffel 188 166 2025-08-08 23:03:00 6899 \n",
+ "14 FALSE 163 425 2025-08-08 23:17:00 3863 \n",
+ "15 Bridge over troubled waters 251 553 2025-08-09 02:28:00 29550 \n",
+ "16 Milliways 95 498 2025-08-09 17:07:00 11003 \n",
+ "17 PolyGen Home Base 322 591 2025-08-09 17:52:00 14376 \n",
+ "18 Food Hacking Base 119 571 2025-08-10 18:31:00 5308 \n",
+ "19 BornHack 82 337 2025-08-10 19:51:00 17711 \n",
+ "20 Matrix 164 731 2025-08-11 15:33:00 2696 \n",
+ "\n",
+ " totalboostscore totalboostduration maxboostscore maxboostduration \\\n",
+ "0 2341 23410 2262 22620 \n",
+ "1 735 7350 537 5370 \n",
+ "2 47 470 28 280 \n",
+ "3 101 1010 101 1010 \n",
+ "4 277 2770 125 1250 \n",
+ "5 103 1030 47 470 \n",
+ "6 267 2670 142 1420 \n",
+ "7 70 700 70 700 \n",
+ "8 681 6810 199 1990 \n",
+ "9 696 6960 284 2840 \n",
+ "10 24 240 15 150 \n",
+ "11 38 380 38 380 \n",
+ "12 3439 34390 3350 33500 \n",
+ "13 1113 11130 902 9020 \n",
+ "14 665 6650 651 6510 \n",
+ "15 110 1100 76 760 \n",
+ "16 40 400 35 350 \n",
+ "17 738 7380 190 1900 \n",
+ "18 31 310 28 280 \n",
+ "19 842 8420 324 3240 \n",
+ "20 45 450 45 450 \n",
+ "\n",
+ " totalvisits captures maxheldduration totalheldduration \n",
+ "0 19 23 3304 13685 \n",
+ "1 42 67 16913 33999 \n",
+ "2 21 21 18329 31452 \n",
+ "3 15 13 23237 42973 \n",
+ "4 15 9 3756 8980 \n",
+ "5 19 16 23180 44169 \n",
+ "6 17 20 22971 49590 \n",
+ "7 19 18 28498 40416 \n",
+ "8 15 21 46380 61707 \n",
+ "9 13 10 44313 61044 \n",
+ "10 24 22 3483 7007 \n",
+ "11 21 30 1394 7426 \n",
+ "12 12 11 7694 9251 \n",
+ "13 9 6 1782 5286 \n",
+ "14 7 5 1969 2798 \n",
+ "15 28 28 18829 27990 \n",
+ "16 23 47 3386 9763 \n",
+ "17 18 17 5316 12688 \n",
+ "18 16 13 993 4427 \n",
+ "19 8 5 7753 16419 \n",
+ "20 7 6 1096 2251 "
+ ],
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " mapx | \n",
+ " mapy | \n",
+ " first_visit | \n",
+ " total_score | \n",
+ " totalboostscore | \n",
+ " totalboostduration | \n",
+ " maxboostscore | \n",
+ " maxboostduration | \n",
+ " totalvisits | \n",
+ " captures | \n",
+ " maxheldduration | \n",
+ " totalheldduration | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " Info Desk | \n",
+ " 216 | \n",
+ " 505 | \n",
+ " 2025-08-08 20:14:00 | \n",
+ " 17026 | \n",
+ " 2341 | \n",
+ " 23410 | \n",
+ " 2262 | \n",
+ " 22620 | \n",
+ " 19 | \n",
+ " 23 | \n",
+ " 3304 | \n",
+ " 13685 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Main Bar | \n",
+ " 190 | \n",
+ " 570 | \n",
+ " 2025-08-08 20:22:00 | \n",
+ " 36884 | \n",
+ " 735 | \n",
+ " 7350 | \n",
+ " 537 | \n",
+ " 5370 | \n",
+ " 42 | \n",
+ " 67 | \n",
+ " 16913 | \n",
+ " 33999 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Badge Tent | \n",
+ " 328 | \n",
+ " 607 | \n",
+ " 2025-08-08 20:23:00 | \n",
+ " 32599 | \n",
+ " 47 | \n",
+ " 470 | \n",
+ " 28 | \n",
+ " 280 | \n",
+ " 21 | \n",
+ " 21 | \n",
+ " 18329 | \n",
+ " 31452 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " CoderDojo Belgium | \n",
+ " 34 | \n",
+ " 523 | \n",
+ " 2025-08-08 21:39:00 | \n",
+ " 44374 | \n",
+ " 101 | \n",
+ " 1010 | \n",
+ " 101 | \n",
+ " 1010 | \n",
+ " 15 | \n",
+ " 13 | \n",
+ " 23237 | \n",
+ " 42973 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Heaven | \n",
+ " 183 | \n",
+ " 227 | \n",
+ " 2025-08-08 21:46:00 | \n",
+ " 10057 | \n",
+ " 277 | \n",
+ " 2770 | \n",
+ " 125 | \n",
+ " 1250 | \n",
+ " 15 | \n",
+ " 9 | \n",
+ " 3756 | \n",
+ " 8980 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " Karaoke Bar | \n",
+ " 292 | \n",
+ " 446 | \n",
+ " 2025-08-08 21:55:00 | \n",
+ " 45272 | \n",
+ " 103 | \n",
+ " 1030 | \n",
+ " 47 | \n",
+ " 470 | \n",
+ " 19 | \n",
+ " 16 | \n",
+ " 23180 | \n",
+ " 44169 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " Cold North | \n",
+ " 305 | \n",
+ " 402 | \n",
+ " 2025-08-08 21:56:00 | \n",
+ " 50757 | \n",
+ " 267 | \n",
+ " 2670 | \n",
+ " 142 | \n",
+ " 1420 | \n",
+ " 17 | \n",
+ " 20 | \n",
+ " 22971 | \n",
+ " 49590 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " Entrance Arch | \n",
+ " 240 | \n",
+ " 916 | \n",
+ " 2025-08-08 22:10:00 | \n",
+ " 41486 | \n",
+ " 70 | \n",
+ " 700 | \n",
+ " 70 | \n",
+ " 700 | \n",
+ " 19 | \n",
+ " 18 | \n",
+ " 28498 | \n",
+ " 40416 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " Site Sign | \n",
+ " 207 | \n",
+ " 874 | \n",
+ " 2025-08-08 22:12:00 | \n",
+ " 63688 | \n",
+ " 681 | \n",
+ " 6810 | \n",
+ " 199 | \n",
+ " 1990 | \n",
+ " 15 | \n",
+ " 21 | \n",
+ " 46380 | \n",
+ " 61707 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " Maker Days Eindhoven | \n",
+ " 115 | \n",
+ " 749 | \n",
+ " 2025-08-08 22:28:00 | \n",
+ " 62440 | \n",
+ " 696 | \n",
+ " 6960 | \n",
+ " 284 | \n",
+ " 2840 | \n",
+ " 13 | \n",
+ " 10 | \n",
+ " 44313 | \n",
+ " 61044 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " Adyen | \n",
+ " 120 | \n",
+ " 637 | \n",
+ " 2025-08-08 22:34:00 | \n",
+ " 8281 | \n",
+ " 24 | \n",
+ " 240 | \n",
+ " 15 | \n",
+ " 150 | \n",
+ " 24 | \n",
+ " 22 | \n",
+ " 3483 | \n",
+ " 7007 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " Chaos Mauldasch | \n",
+ " 164 | \n",
+ " 635 | \n",
+ " 2025-08-08 22:37:00 | \n",
+ " 8564 | \n",
+ " 38 | \n",
+ " 380 | \n",
+ " 38 | \n",
+ " 380 | \n",
+ " 21 | \n",
+ " 30 | \n",
+ " 1394 | \n",
+ " 7426 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " Party Bar | \n",
+ " 67 | \n",
+ " 289 | \n",
+ " 2025-08-08 22:54:00 | \n",
+ " 13340 | \n",
+ " 3439 | \n",
+ " 34390 | \n",
+ " 3350 | \n",
+ " 33500 | \n",
+ " 12 | \n",
+ " 11 | \n",
+ " 7694 | \n",
+ " 9251 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " Geraffel | \n",
+ " 188 | \n",
+ " 166 | \n",
+ " 2025-08-08 23:03:00 | \n",
+ " 6899 | \n",
+ " 1113 | \n",
+ " 11130 | \n",
+ " 902 | \n",
+ " 9020 | \n",
+ " 9 | \n",
+ " 6 | \n",
+ " 1782 | \n",
+ " 5286 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " FALSE | \n",
+ " 163 | \n",
+ " 425 | \n",
+ " 2025-08-08 23:17:00 | \n",
+ " 3863 | \n",
+ " 665 | \n",
+ " 6650 | \n",
+ " 651 | \n",
+ " 6510 | \n",
+ " 7 | \n",
+ " 5 | \n",
+ " 1969 | \n",
+ " 2798 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " Bridge over troubled waters | \n",
+ " 251 | \n",
+ " 553 | \n",
+ " 2025-08-09 02:28:00 | \n",
+ " 29550 | \n",
+ " 110 | \n",
+ " 1100 | \n",
+ " 76 | \n",
+ " 760 | \n",
+ " 28 | \n",
+ " 28 | \n",
+ " 18829 | \n",
+ " 27990 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " Milliways | \n",
+ " 95 | \n",
+ " 498 | \n",
+ " 2025-08-09 17:07:00 | \n",
+ " 11003 | \n",
+ " 40 | \n",
+ " 400 | \n",
+ " 35 | \n",
+ " 350 | \n",
+ " 23 | \n",
+ " 47 | \n",
+ " 3386 | \n",
+ " 9763 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " PolyGen Home Base | \n",
+ " 322 | \n",
+ " 591 | \n",
+ " 2025-08-09 17:52:00 | \n",
+ " 14376 | \n",
+ " 738 | \n",
+ " 7380 | \n",
+ " 190 | \n",
+ " 1900 | \n",
+ " 18 | \n",
+ " 17 | \n",
+ " 5316 | \n",
+ " 12688 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " Food Hacking Base | \n",
+ " 119 | \n",
+ " 571 | \n",
+ " 2025-08-10 18:31:00 | \n",
+ " 5308 | \n",
+ " 31 | \n",
+ " 310 | \n",
+ " 28 | \n",
+ " 280 | \n",
+ " 16 | \n",
+ " 13 | \n",
+ " 993 | \n",
+ " 4427 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " BornHack | \n",
+ " 82 | \n",
+ " 337 | \n",
+ " 2025-08-10 19:51:00 | \n",
+ " 17711 | \n",
+ " 842 | \n",
+ " 8420 | \n",
+ " 324 | \n",
+ " 3240 | \n",
+ " 8 | \n",
+ " 5 | \n",
+ " 7753 | \n",
+ " 16419 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " Matrix | \n",
+ " 164 | \n",
+ " 731 | \n",
+ " 2025-08-11 15:33:00 | \n",
+ " 2696 | \n",
+ " 45 | \n",
+ " 450 | \n",
+ " 45 | \n",
+ " 450 | \n",
+ " 7 | \n",
+ " 6 | \n",
+ " 1096 | \n",
+ " 2251 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "execution_count": 2
+ },
+ {
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-08-26T16:05:33.992153Z",
+ "start_time": "2025-08-26T16:05:33.930260Z"
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "fiebertrauma_score_log = load_score_log('PolyGenStats-Fiebertrauma-scorelog.csv')\n",
+ "fiebertrauma_summary = generate_station_stats(fiebertrauma_score_log)\n",
+ "\n",
+ "fiebertrauma_summary"
+ ],
+ "id": "884dbf7b0c963d4c",
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ " name mapx mapy first_visit total_score \\\n",
+ "0 Info Desk 216 505 2025-08-08 20:58:00 14979 \n",
+ "1 Karaoke Bar 292 446 2025-08-08 21:04:00 19072 \n",
+ "2 Entrance Arch 240 916 2025-08-08 21:19:00 10129 \n",
+ "3 Maker Days Eindhoven 115 749 2025-08-08 21:24:00 76211 \n",
+ "4 Chaos Mauldasch 164 635 2025-08-08 21:27:00 50810 \n",
+ "5 Food Hacking Base 119 571 2025-08-08 21:30:00 40506 \n",
+ "6 Badge Tent 328 607 2025-08-08 21:31:00 17778 \n",
+ "7 CoderDojo Belgium 34 523 2025-08-08 21:40:00 25204 \n",
+ "8 Main Bar 190 570 2025-08-08 21:48:00 18423 \n",
+ "9 Adyen 120 637 2025-08-08 21:57:00 37656 \n",
+ "10 Bridge over troubled waters 251 553 2025-08-09 09:15:00 9613 \n",
+ "11 Site Sign 207 874 2025-08-09 12:54:00 19919 \n",
+ "12 Tilde Industries 361 468 2025-08-09 13:41:00 17253 \n",
+ "13 Geraffel 188 166 2025-08-09 13:50:00 16274 \n",
+ "14 Party Bar 67 289 2025-08-09 13:54:00 19808 \n",
+ "15 Milliways 95 498 2025-08-09 14:00:00 20054 \n",
+ "16 Heaven 183 227 2025-08-09 14:49:00 9453 \n",
+ "17 Matrix 164 731 2025-08-09 15:02:00 17031 \n",
+ "18 Pixelbar 379 602 2025-08-09 15:54:00 12251 \n",
+ "19 PolyGen Home Base 322 591 2025-08-09 16:01:00 20739 \n",
+ "20 Cold North 305 402 2025-08-09 19:31:00 9667 \n",
+ "21 BornHack 82 337 2025-08-09 21:19:00 40950 \n",
+ "22 FALSE 163 425 2025-08-10 08:40:00 9157 \n",
+ "\n",
+ " totalboostscore totalboostduration maxboostscore maxboostduration \\\n",
+ "0 315 3150 117 1170 \n",
+ "1 14 140 9 90 \n",
+ "2 49 490 29 290 \n",
+ "3 372 3720 301 3010 \n",
+ "4 206 2060 75 750 \n",
+ "5 967 9670 847 8470 \n",
+ "6 85 850 71 710 \n",
+ "7 1225 12250 867 8670 \n",
+ "8 98 980 87 870 \n",
+ "9 94 940 59 590 \n",
+ "10 72 720 43 430 \n",
+ "11 427 4270 339 3390 \n",
+ "12 260 2600 126 1260 \n",
+ "13 232 2320 138 1380 \n",
+ "14 366 3660 189 1890 \n",
+ "15 373 3730 338 3380 \n",
+ "16 1017 10170 466 4660 \n",
+ "17 101 1010 66 660 \n",
+ "18 33 330 33 330 \n",
+ "19 140 1400 65 650 \n",
+ "20 205 2050 174 1740 \n",
+ "21 1692 16920 875 8750 \n",
+ "22 262 2620 132 1320 \n",
+ "\n",
+ " totalvisits captures maxheldduration totalheldduration \n",
+ "0 29 30 2421 13164 \n",
+ "1 23 20 5596 17358 \n",
+ "2 16 18 1732 8730 \n",
+ "3 28 26 23696 74389 \n",
+ "4 47 76 11972 48204 \n",
+ "5 51 45 8523 36439 \n",
+ "6 24 21 7378 16443 \n",
+ "7 18 12 5111 23029 \n",
+ "8 40 38 2832 16275 \n",
+ "9 73 73 3997 33862 \n",
+ "10 24 18 1565 8291 \n",
+ "11 17 18 5881 18592 \n",
+ "12 21 18 3148 15893 \n",
+ "13 13 9 7724 15342 \n",
+ "14 17 13 10347 18542 \n",
+ "15 22 21 5235 18531 \n",
+ "16 24 17 1302 7186 \n",
+ "17 30 26 3369 15380 \n",
+ "18 22 20 2223 11068 \n",
+ "19 25 26 3256 19299 \n",
+ "20 14 12 2236 8712 \n",
+ "21 14 10 13775 38508 \n",
+ "22 20 12 2611 7845 "
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " mapx | \n",
+ " mapy | \n",
+ " first_visit | \n",
+ " total_score | \n",
+ " totalboostscore | \n",
+ " totalboostduration | \n",
+ " maxboostscore | \n",
+ " maxboostduration | \n",
+ " totalvisits | \n",
+ " captures | \n",
+ " maxheldduration | \n",
+ " totalheldduration | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " Info Desk | \n",
+ " 216 | \n",
+ " 505 | \n",
+ " 2025-08-08 20:58:00 | \n",
+ " 14979 | \n",
+ " 315 | \n",
+ " 3150 | \n",
+ " 117 | \n",
+ " 1170 | \n",
+ " 29 | \n",
+ " 30 | \n",
+ " 2421 | \n",
+ " 13164 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Karaoke Bar | \n",
+ " 292 | \n",
+ " 446 | \n",
+ " 2025-08-08 21:04:00 | \n",
+ " 19072 | \n",
+ " 14 | \n",
+ " 140 | \n",
+ " 9 | \n",
+ " 90 | \n",
+ " 23 | \n",
+ " 20 | \n",
+ " 5596 | \n",
+ " 17358 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Entrance Arch | \n",
+ " 240 | \n",
+ " 916 | \n",
+ " 2025-08-08 21:19:00 | \n",
+ " 10129 | \n",
+ " 49 | \n",
+ " 490 | \n",
+ " 29 | \n",
+ " 290 | \n",
+ " 16 | \n",
+ " 18 | \n",
+ " 1732 | \n",
+ " 8730 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " Maker Days Eindhoven | \n",
+ " 115 | \n",
+ " 749 | \n",
+ " 2025-08-08 21:24:00 | \n",
+ " 76211 | \n",
+ " 372 | \n",
+ " 3720 | \n",
+ " 301 | \n",
+ " 3010 | \n",
+ " 28 | \n",
+ " 26 | \n",
+ " 23696 | \n",
+ " 74389 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Chaos Mauldasch | \n",
+ " 164 | \n",
+ " 635 | \n",
+ " 2025-08-08 21:27:00 | \n",
+ " 50810 | \n",
+ " 206 | \n",
+ " 2060 | \n",
+ " 75 | \n",
+ " 750 | \n",
+ " 47 | \n",
+ " 76 | \n",
+ " 11972 | \n",
+ " 48204 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " Food Hacking Base | \n",
+ " 119 | \n",
+ " 571 | \n",
+ " 2025-08-08 21:30:00 | \n",
+ " 40506 | \n",
+ " 967 | \n",
+ " 9670 | \n",
+ " 847 | \n",
+ " 8470 | \n",
+ " 51 | \n",
+ " 45 | \n",
+ " 8523 | \n",
+ " 36439 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " Badge Tent | \n",
+ " 328 | \n",
+ " 607 | \n",
+ " 2025-08-08 21:31:00 | \n",
+ " 17778 | \n",
+ " 85 | \n",
+ " 850 | \n",
+ " 71 | \n",
+ " 710 | \n",
+ " 24 | \n",
+ " 21 | \n",
+ " 7378 | \n",
+ " 16443 | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " CoderDojo Belgium | \n",
+ " 34 | \n",
+ " 523 | \n",
+ " 2025-08-08 21:40:00 | \n",
+ " 25204 | \n",
+ " 1225 | \n",
+ " 12250 | \n",
+ " 867 | \n",
+ " 8670 | \n",
+ " 18 | \n",
+ " 12 | \n",
+ " 5111 | \n",
+ " 23029 | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " Main Bar | \n",
+ " 190 | \n",
+ " 570 | \n",
+ " 2025-08-08 21:48:00 | \n",
+ " 18423 | \n",
+ " 98 | \n",
+ " 980 | \n",
+ " 87 | \n",
+ " 870 | \n",
+ " 40 | \n",
+ " 38 | \n",
+ " 2832 | \n",
+ " 16275 | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " Adyen | \n",
+ " 120 | \n",
+ " 637 | \n",
+ " 2025-08-08 21:57:00 | \n",
+ " 37656 | \n",
+ " 94 | \n",
+ " 940 | \n",
+ " 59 | \n",
+ " 590 | \n",
+ " 73 | \n",
+ " 73 | \n",
+ " 3997 | \n",
+ " 33862 | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " Bridge over troubled waters | \n",
+ " 251 | \n",
+ " 553 | \n",
+ " 2025-08-09 09:15:00 | \n",
+ " 9613 | \n",
+ " 72 | \n",
+ " 720 | \n",
+ " 43 | \n",
+ " 430 | \n",
+ " 24 | \n",
+ " 18 | \n",
+ " 1565 | \n",
+ " 8291 | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " Site Sign | \n",
+ " 207 | \n",
+ " 874 | \n",
+ " 2025-08-09 12:54:00 | \n",
+ " 19919 | \n",
+ " 427 | \n",
+ " 4270 | \n",
+ " 339 | \n",
+ " 3390 | \n",
+ " 17 | \n",
+ " 18 | \n",
+ " 5881 | \n",
+ " 18592 | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " Tilde Industries | \n",
+ " 361 | \n",
+ " 468 | \n",
+ " 2025-08-09 13:41:00 | \n",
+ " 17253 | \n",
+ " 260 | \n",
+ " 2600 | \n",
+ " 126 | \n",
+ " 1260 | \n",
+ " 21 | \n",
+ " 18 | \n",
+ " 3148 | \n",
+ " 15893 | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " Geraffel | \n",
+ " 188 | \n",
+ " 166 | \n",
+ " 2025-08-09 13:50:00 | \n",
+ " 16274 | \n",
+ " 232 | \n",
+ " 2320 | \n",
+ " 138 | \n",
+ " 1380 | \n",
+ " 13 | \n",
+ " 9 | \n",
+ " 7724 | \n",
+ " 15342 | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " Party Bar | \n",
+ " 67 | \n",
+ " 289 | \n",
+ " 2025-08-09 13:54:00 | \n",
+ " 19808 | \n",
+ " 366 | \n",
+ " 3660 | \n",
+ " 189 | \n",
+ " 1890 | \n",
+ " 17 | \n",
+ " 13 | \n",
+ " 10347 | \n",
+ " 18542 | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " Milliways | \n",
+ " 95 | \n",
+ " 498 | \n",
+ " 2025-08-09 14:00:00 | \n",
+ " 20054 | \n",
+ " 373 | \n",
+ " 3730 | \n",
+ " 338 | \n",
+ " 3380 | \n",
+ " 22 | \n",
+ " 21 | \n",
+ " 5235 | \n",
+ " 18531 | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " Heaven | \n",
+ " 183 | \n",
+ " 227 | \n",
+ " 2025-08-09 14:49:00 | \n",
+ " 9453 | \n",
+ " 1017 | \n",
+ " 10170 | \n",
+ " 466 | \n",
+ " 4660 | \n",
+ " 24 | \n",
+ " 17 | \n",
+ " 1302 | \n",
+ " 7186 | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " Matrix | \n",
+ " 164 | \n",
+ " 731 | \n",
+ " 2025-08-09 15:02:00 | \n",
+ " 17031 | \n",
+ " 101 | \n",
+ " 1010 | \n",
+ " 66 | \n",
+ " 660 | \n",
+ " 30 | \n",
+ " 26 | \n",
+ " 3369 | \n",
+ " 15380 | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " Pixelbar | \n",
+ " 379 | \n",
+ " 602 | \n",
+ " 2025-08-09 15:54:00 | \n",
+ " 12251 | \n",
+ " 33 | \n",
+ " 330 | \n",
+ " 33 | \n",
+ " 330 | \n",
+ " 22 | \n",
+ " 20 | \n",
+ " 2223 | \n",
+ " 11068 | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " PolyGen Home Base | \n",
+ " 322 | \n",
+ " 591 | \n",
+ " 2025-08-09 16:01:00 | \n",
+ " 20739 | \n",
+ " 140 | \n",
+ " 1400 | \n",
+ " 65 | \n",
+ " 650 | \n",
+ " 25 | \n",
+ " 26 | \n",
+ " 3256 | \n",
+ " 19299 | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " Cold North | \n",
+ " 305 | \n",
+ " 402 | \n",
+ " 2025-08-09 19:31:00 | \n",
+ " 9667 | \n",
+ " 205 | \n",
+ " 2050 | \n",
+ " 174 | \n",
+ " 1740 | \n",
+ " 14 | \n",
+ " 12 | \n",
+ " 2236 | \n",
+ " 8712 | \n",
+ "
\n",
+ " \n",
+ " 21 | \n",
+ " BornHack | \n",
+ " 82 | \n",
+ " 337 | \n",
+ " 2025-08-09 21:19:00 | \n",
+ " 40950 | \n",
+ " 1692 | \n",
+ " 16920 | \n",
+ " 875 | \n",
+ " 8750 | \n",
+ " 14 | \n",
+ " 10 | \n",
+ " 13775 | \n",
+ " 38508 | \n",
+ "
\n",
+ " \n",
+ " 22 | \n",
+ " FALSE | \n",
+ " 163 | \n",
+ " 425 | \n",
+ " 2025-08-10 08:40:00 | \n",
+ " 9157 | \n",
+ " 262 | \n",
+ " 2620 | \n",
+ " 132 | \n",
+ " 1320 | \n",
+ " 20 | \n",
+ " 12 | \n",
+ " 2611 | \n",
+ " 7845 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "execution_count": 4
+ },
+ {
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-08-26T16:06:00.347754Z",
+ "start_time": "2025-08-26T16:05:36.926533Z"
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "vinzenz_seconds = generate_score_per_second(vinzenz_score_log)\n",
+ "fiebertrauma_seconds = generate_score_per_second(fiebertrauma_score_log)\n",
+ "fiebertrauma_seconds"
+ ],
+ "id": "8ae2f950e617a433",
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ " name sourcename when score once \\\n",
+ "0 Info Desk First Visit 2025-08-08 20:58:00 100.0 True \n",
+ "1 Info Desk Capture 2025-08-08 20:58:30 1.0 False \n",
+ "2 Info Desk Capture 2025-08-08 20:58:31 1.0 False \n",
+ "3 Info Desk Capture 2025-08-08 20:58:32 1.0 False \n",
+ "4 Info Desk Capture 2025-08-08 20:58:33 1.0 False \n",
+ "... ... ... ... ... ... \n",
+ "595503 CoderDojo Belgium Capture 2025-08-12 14:00:00 1.0 False \n",
+ "595504 Entrance Arch Capture 2025-08-12 14:00:00 1.0 False \n",
+ "595505 0E Capture 2025-08-12 14:00:00 1.0 False \n",
+ "595506 Tilde Industries Capture 2025-08-12 14:00:00 1.0 False \n",
+ "595507 BornHack Output Boost 2025-08-12 14:00:00 0.1 False \n",
+ "\n",
+ " mapx mapy accumulated_score \n",
+ "0 216 505 100.000000 \n",
+ "1 216 505 101.000000 \n",
+ "2 216 505 102.000000 \n",
+ "3 216 505 103.000000 \n",
+ "4 216 505 104.000000 \n",
+ "... ... ... ... \n",
+ "595503 34 523 551529.899999 \n",
+ "595504 240 916 551530.899999 \n",
+ "595505 0 0 551531.899999 \n",
+ "595506 361 468 551532.899999 \n",
+ "595507 82 337 551532.999999 \n",
+ "\n",
+ "[595508 rows x 8 columns]"
+ ],
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " name | \n",
+ " sourcename | \n",
+ " when | \n",
+ " score | \n",
+ " once | \n",
+ " mapx | \n",
+ " mapy | \n",
+ " accumulated_score | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " Info Desk | \n",
+ " First Visit | \n",
+ " 2025-08-08 20:58:00 | \n",
+ " 100.0 | \n",
+ " True | \n",
+ " 216 | \n",
+ " 505 | \n",
+ " 100.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " Info Desk | \n",
+ " Capture | \n",
+ " 2025-08-08 20:58:30 | \n",
+ " 1.0 | \n",
+ " False | \n",
+ " 216 | \n",
+ " 505 | \n",
+ " 101.000000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " Info Desk | \n",
+ " Capture | \n",
+ " 2025-08-08 20:58:31 | \n",
+ " 1.0 | \n",
+ " False | \n",
+ " 216 | \n",
+ " 505 | \n",
+ " 102.000000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " Info Desk | \n",
+ " Capture | \n",
+ " 2025-08-08 20:58:32 | \n",
+ " 1.0 | \n",
+ " False | \n",
+ " 216 | \n",
+ " 505 | \n",
+ " 103.000000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " Info Desk | \n",
+ " Capture | \n",
+ " 2025-08-08 20:58:33 | \n",
+ " 1.0 | \n",
+ " False | \n",
+ " 216 | \n",
+ " 505 | \n",
+ " 104.000000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 595503 | \n",
+ " CoderDojo Belgium | \n",
+ " Capture | \n",
+ " 2025-08-12 14:00:00 | \n",
+ " 1.0 | \n",
+ " False | \n",
+ " 34 | \n",
+ " 523 | \n",
+ " 551529.899999 | \n",
+ "
\n",
+ " \n",
+ " 595504 | \n",
+ " Entrance Arch | \n",
+ " Capture | \n",
+ " 2025-08-12 14:00:00 | \n",
+ " 1.0 | \n",
+ " False | \n",
+ " 240 | \n",
+ " 916 | \n",
+ " 551530.899999 | \n",
+ "
\n",
+ " \n",
+ " 595505 | \n",
+ " 0E | \n",
+ " Capture | \n",
+ " 2025-08-12 14:00:00 | \n",
+ " 1.0 | \n",
+ " False | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 551531.899999 | \n",
+ "
\n",
+ " \n",
+ " 595506 | \n",
+ " Tilde Industries | \n",
+ " Capture | \n",
+ " 2025-08-12 14:00:00 | \n",
+ " 1.0 | \n",
+ " False | \n",
+ " 361 | \n",
+ " 468 | \n",
+ " 551532.899999 | \n",
+ "
\n",
+ " \n",
+ " 595507 | \n",
+ " BornHack | \n",
+ " Output Boost | \n",
+ " 2025-08-12 14:00:00 | \n",
+ " 0.1 | \n",
+ " False | \n",
+ " 82 | \n",
+ " 337 | \n",
+ " 551532.999999 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
595508 rows × 8 columns
\n",
+ "
"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "execution_count": 5
+ },
+ {
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2025-08-26T16:06:01.725686Z",
+ "start_time": "2025-08-26T16:06:00.489050Z"
+ }
+ },
+ "cell_type": "code",
+ "source": [
+ "from matplotlib import dates\n",
+ "\n",
+ "fig, ax = plt.subplots()\n",
+ "ax.plot('when', 'accumulated_score', data=vinzenz_seconds, label='vinzenz')\n",
+ "ax.plot('when', 'accumulated_score', data=fiebertrauma_seconds, label='Fiebertrauma')\n",
+ "ax.xaxis.set_major_locator(dates.DayLocator(interval=1)) # every day\n",
+ "ax.xaxis.set_major_formatter(dates.DateFormatter('\\n%d-%m-%Y'))\n",
+ "plt.title('Accumulated Score')\n",
+ "plt.legend()\n",
+ "plt.show()"
+ ],
+ "id": "526448f50cefdb2d",
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHDCAYAAADIo3XgAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAewhJREFUeJzt3Xd8FHX+x/HXbpJNJQmBFCCFKr13FRVFIoKKYkNUELvoT8WCnAU5C4h3FhTLead4iiLYBYRDEGmhGIp06T0JLZXU3e/vjyUrS00gMCnv5+OxzO7Md2c+u5tk38x8vzM2Y4xBREREpAqyW12AiIiIiFUUhERERKTKUhASERGRKktBSERERKosBSERERGpshSEREREpMpSEBIREZEqS0FIREREqiwFIREREamyFIREpNK47LLLuOyyy6wuw8v48eOx2Wxs27bN6lJE5AQUhEQqkffeew+bzUbnzp2tLqVCOXz4MC+++CJz5syxtI758+fTq1cv6tSpQ0BAAPHx8VxzzTV88cUXltYlUpkpCIlUIhMmTKBu3bosWbKETZs2WV1OhXH48GFGjhxpaRCaPHkyl1xyCampqTz66KO888473H777Rw6dIiPPvrIsrpEKjtfqwsQkbKxdetWFi5cyLfffsv999/PhAkTGDFihNVlSQm9+OKLNGvWjEWLFuFwOLyWpaWlnbc6jDHk5eURGBh43rYpYiXtERKpJCZMmED16tXp3bs3N954IxMmTDhhu/T0dB5//HHq1q2Lv78/sbGx3Hnnnezfv9/TJi8vjxdffJELLriAgIAAatWqxQ033MDmzZsBmDNnDjab7bg9KNu2bcNmszF+/HjPvEGDBhESEsKOHTvo06cPISEh1KlTh3HjxgGwatUqLr/8coKDg0lISDjuMNCLL76IzWY77nWUpO9NQUEBL7zwAu3btycsLIzg4GC6devGr7/+6lVzZGQkACNHjsRms2Gz2XjxxRc9bdavX8+NN95IREQEAQEBdOjQgR9//PG47a1Zs4bLL7+cwMBAYmNjefnll3G5XCet72ibN2+mY8eOx4UggKioKK/HLpeLt99+m5YtWxIQEEBkZCRXXXUVv//+u6dNUVERL730Eg0aNMDf35+6devyt7/9jfz8fK911a1blz59+jBjxgw6dOhAYGAgH374IeD+WXnssceIi4vD39+fhg0b8tprr5X4NYlUBNojJFJJTJgwgRtuuAGHw0H//v15//33Wbp0KR07dvS0yc7Oplu3bqxbt47BgwfTrl079u/fz48//siuXbuoWbMmTqeTPn36MGvWLG699VYeffRRsrKymDlzJqtXr6ZBgwalrs3pdNKrVy8uueQSxowZw4QJE3j44YcJDg7m2WefZcCAAdxwww188MEH3HnnnXTt2pV69eqd9XuSmZnJv//9b/r378+9995LVlYW//nPf0hMTGTJkiW0adOGyMhI3n//fR588EGuv/56brjhBgBatWoFuMPNRRddRJ06dXjmmWcIDg5m0qRJ9O3bl2+++Ybrr78egJSUFLp3705RUZGn3b/+9a8S71lJSEhg1qxZ7Nq1i9jY2FO2vfvuuxk/fjy9evXinnvuoaioiHnz5rFo0SI6dOgAwD333MOnn37KjTfeyBNPPMHixYsZNWoU69at47vvvvNa34YNG+jfvz/3338/9957L40bN+bw4cNceuml7N69m/vvv5/4+HgWLlzI8OHD2bt3L2+99VZpPgqR8suISIX3+++/G8DMnDnTGGOMy+UysbGx5tFHH/Vq98ILLxjAfPvtt8etw+VyGWOM+fjjjw1g3njjjZO2+fXXXw1gfv31V6/lW7duNYD55JNPPPMGDhxoAPPqq6965h06dMgEBgYam81mJk6c6Jm/fv16A5gRI0Z45o0YMcKc6E/VJ598YgCzdetWz7xLL73UXHrppZ7HRUVFJj8/3+t5hw4dMtHR0Wbw4MGeefv27Ttuu8WuuOIK07JlS5OXl+f1Plx44YWmUaNGnnmPPfaYAczixYs989LS0kxYWNhxdZ7If/7zHwMYh8Nhunfvbp5//nkzb94843Q6vdrNnj3bAOb//u//jltH8eezYsUKA5h77rnHa/mTTz5pADN79mzPvISEBAOY6dOne7V96aWXTHBwsPnzzz+95j/zzDPGx8fH7Nix45SvR6Si0KExkUpgwoQJREdH0717dwBsNhu33HILEydOxOl0etp98803tG7d2rMX42jFh5+++eYbatasySOPPHLSNmfinnvu8dwPDw+ncePGBAcHc/PNN3vmN27cmPDwcLZs2XLG2zmaj4+P51CTy+Xi4MGDFBUV0aFDB5YtW3ba5x88eJDZs2dz8803k5WVxf79+9m/fz8HDhwgMTGRjRs3snv3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t97KggULAJg3bx533nknY8eOpVu3bmzevJn77rsPgBEjRni29eKLLzJ69GjeeustfHx8uPbaa+nXrx8bNmwgNDSUwMBAT9tPP/2UBx980LMNALvdztixY6lXrx5btmzhoYce4umnn+a9994r1WuePXs2sbGxzJ07lwULFnD33XezcOFCLrnkEhYvXsxXX33F/fffz5VXXklsrHtXdLVq1Rg/fjy1a9dm1apV3HvvvVSrVo2nn376zN54EZHTmLZqL+mHC6kTHsjVLWtZXc6Z+WUEuAohMAICwiwrQ3uEqqgpU6YQEhLiud10001ey3fs2MEnn3zC5MmT6datGw0aNODJJ5/k4osv9tojUlhYyLvvvkvXrl1p3749n376KQsXLmTJkiUAjBw5kmeeeYaBAwdSv359rrzySl566SU+/PBDr+3ddttt3HXXXdSvX5+EhAQiIiIAiIqKIiYmhrCwv35JGjVqxJgxY2jcuDGNGzcG4LHHHqN79+7UrVuXyy+/nJdffplJkyaV+n2JiIhg7NixNG7cmMGDB9O4cWMOHz7M3/72Nxo1asTw4cNxOBzMnz/f85znnnuOCy+8kLp163LNNdfw5JNPntG2RURK6qeVewC4pWMcPvYKuDdo51JY9xNgg8RXwMI9WtojVJb8gtx7Zqzadil0796d999/3/M4ODiY/v37ex6vWrUKp9PJBRdc4PW8/Px8atSo4Xns6+tLx44dPY+bNGlCeHg469ato1OnTqxcuZIFCxbwyiuveNo4nU7y8vI4fPgwQUHuujt06FDi2tu3b3/cvF9++YVRo0axfv16MjMzKSoqOm4bJdG8eXPsRx2rjo6OpkWLFp7HPj4+1KhRg7S0NM+8r776irFjx7J582ays7MpKioiNLSCHq8XkXLP6TL8vu0QAJc3ibK4mjNQmAs/Puy+37o/RDW1tBwFobJks5X54alzJTg4mIYNG550eXZ2Nj4+PiQnJx/XgTokJKTE28nOzmbkyJHccMMNxy0LCAjwqqekjm27bds2+vTpw4MPPsgrr7xCREQE8+fP5+6776agoICgoCDsdjvmmH5UJ+rH4+fn5/XYZrOdcJ7L5QIgKSmJAQMGMHLkSBITEwkLC2PixIn885//LPHrEREpjbV7MsnKLyLE35emtSrYf7qMge8egH3rIaime2+QxRSE5ITatm2L0+kk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Kz99xpWbPt/zzxhDVlYWtWvXxm4/dS8g7RE6BbvdTmxsrNVllFhoaKh+ySoxfb6Vnz7jyk2f7/l1uj1BxdRZWkRERKosBSERERGpshSEKgF/f39GjBiBv7+/1aXIOaDPt/LTZ1y56fMt39RZWkRERKos7RESERGRKktBSERERKosBSERERGpshSEREREpMpSEBIREZEqS0FIREREqiwFIREREamyFIRERESkylIQEhERkSpLQUhERESqLAUhERERqbIUhERERKTKUhASERGRKktBSERERKosBSERERGpshSEREREpMpSEBIREZEqS0FIREREqiwFIREREamyFIRERESkylIQEhERkSpLQegMjBs3jrp16xIQEEDnzp1ZsmSJZ9nmzZu5/vrriYyMJDQ0lJtvvpnU1NTTrnPHjh307t2boKAgoqKieOqppygqKvJqM2HCBFq3bk1QUBC1atVi8ODBHDhw4JTrHTVqFB07dqRatWpERUXRt29fNmzY4NUmLy+PIUOGUKNGDUJCQujXr59XzStXrqR///7ExcURGBhI06ZNefvtt73WMWfOHGw223G3lJSU07728mTu3Llcc8011K5dG5vNxvfff++13BjDCy+8QK1atQgMDKRHjx5s3LjxtOvV51s+nO7z/fbbb+nZsyc1atTAZrOxYsWKEq334MGDDBgwgNDQUMLDw7n77rvJzs72ajNjxgy6dOlCtWrViIyMpF+/fmzbtu2U6/3oo4/o1q0b1atXp3r16vTo0cPr7w2c/mdy27Zt3H333dSrV4/AwEAaNGjAiBEjKCgo8Gpzos930aJFJXr95cmpPuPCwkKGDRtGy5YtCQ4Opnbt2tx5553s2bPntOvV73AlZqRUJk6caBwOh/n444/NmjVrzL333mvCw8NNamqqyc7ONvXr1zfXX3+9+eOPP8wff/xhrrvuOtOxY0fjdDpPus6ioiLTokUL06NHD7N8+XIzbdo0U7NmTTN8+HBPm/nz5xu73W7efvtts2XLFjNv3jzTvHlzc/3115+y3sTERPPJJ5+Y1atXmxUrVpirr77axMfHm+zsbE+bBx54wMTFxZlZs2aZ33//3XTp0sVceOGFnuX/+c9/zP/93/+ZOXPmmM2bN5vPPvvMBAYGmnfeecfT5tdffzWA2bBhg9m7d6/ndqrXXR5NmzbNPPvss+bbb781gPnuu++8lo8ePdqEhYWZ77//3qxcudJce+21pl69eiY3N/ek69TnW36c7vP973//a0aOHGk++ugjA5jly5eXaL1XXXWVad26tVm0aJGZN2+eadiwoenfv79n+ZYtW4y/v78ZPny42bRpk0lOTjaXXHKJadu27SnXe9ttt5lx48aZ5cuXm3Xr1plBgwaZsLAws2vXLk+b0/1M/vzzz2bQoEFmxowZZvPmzeaHH34wUVFR5oknnvCsY+vWrQYwv/zyi9fnW1BQUKLXX56c6jNOT083PXr0MF999ZVZv369SUpKMp06dTLt27c/5Tr1O1y5KQiVUqdOncyQIUM8j51Op6ldu7YZNWqUmTFjhrHb7SYjI8OzPD093dhsNjNz5syTrnPatGnGbreblJQUz7z333/fhIaGmvz8fGOMMa+//rqpX7++1/PGjh1r6tSpU6r609LSDGB+++03T31+fn5m8uTJnjbr1q0zgElKSjrpeh566CHTvXt3z+PiX7JDhw6Vqp7y7Ng/oi6Xy8TExJjXX3/dMy89Pd34+/ubL7/88qTr0edbPp0oCBUrDgYlCUJr1641gFm6dKln3s8//2xsNpvZvXu3McaYyZMnG19fX68vnR9//NHYbLZShY2ioiJTrVo18+mnnxpjzvxncsyYMaZevXpn9HorklN9xsWWLFliALN9+/aTttHvcOWmQ2OlUFBQQHJyMj169PDMs9vt9OjRg6SkJPLz87HZbPj7+3uWBwQEYLfbmT9//knXm5SURMuWLYmOjvbMS0xMJDMzkzVr1gDQtWtXdu7cybRp0zDGkJqaytdff83VV19dqteQkZEBQEREBADJyckUFhZ6vaYmTZoQHx9PUlLSKddTvI6jtWnThlq1anHllVeyYMGCUtVW3m3dupWUlBSv9yosLIzOnTuf8r3S51u5JSUlER4eTocOHTzzevTogd1uZ/HixQC0b98eu93OJ598gtPpJCMjg88++4wePXrg5+dX4m0dPnyYwsJCz2dzpj+TJ/t8r732WqKiorj44ov58ccfS1xXRZaRkYHNZiM8PPykbfQ7XLkpCJXC/v37cTqdXr8MANHR0aSkpNClSxeCg4MZNmwYhw8fJicnhyeffBKn08nevXtPut6UlJQTrrN4GcBFF13EhAkTuOWWW3A4HMTExBAWFsa4ceNKXL/L5eKxxx7joosuokWLFp71OxyO4/4IFL+mE1m4cCFfffUV9913n2derVq1+OCDD/jmm2/45ptviIuL47LLLmPZsmUlrq+8K34/Tvb5n+p5+nwrr5SUFKKiorzm+fr6EhER4XmP69Wrx//+9z/+9re/4e/vT3h4OLt27WLSpEml2tawYcOoXbu250vxTH4mN23axDvvvMP999/vmRcSEsI///lPJk+ezNSpU7n44ovp27dvpQ9DeXl5DBs2jP79+xMaGnrSdvodrtwUhMpQZGQkkydP5qeffiIkJISwsDDS09Np164ddrv7re7VqxchISGEhITQvHnzEq977dq1PProo7zwwgskJyczffp0tm3bxgMPPADAvHnzPOsNCQlhwoQJx61jyJAhrF69mokTJ57xa1y9ejXXXXcdI0aMoGfPnp75jRs35v7776d9+/ZceOGFfPzxx1x44YW8+eabZ7ytikifb+X2wAMPeH0OJZWSksK9997LwIEDWbp0Kb/99hsOh4Mbb7wRYww7duzwWu+rr7563DpGjx7NxIkT+e677wgICDij+nfv3s1VV13FTTfdxL333uuZX7NmTYYOHUrnzp3p2LEjo0eP5vbbb+f1118/o+1UBIWFhdx8880YY3j//fc98/U7XPX4Wl1ARVKzZk18fHyOGwWWmppKTEwMAD179mTz5s3s378fX19fwsPDiYmJoX79+gD8+9//Jjc3F8CzSzwmJua4kSDF2yhe76hRo7jooot46qmnAGjVqhXBwcF069aNl19+mQ4dOniNcDn2fy8PP/wwU6ZMYe7cucTGxnrmx8TEUFBQQHp6utf/OI5+TcXWrl3LFVdcwX333cdzzz132verU6dOpzwkWNEUvx+pqanUqlXLMz81NZU2bdoA+nwru7///e88+eSTXvNiYmJIS0vzmldUVMTBgwc97/G4ceMICwtjzJgxnjaff/45cXFxLF68+LjP99hDGv/4xz8YPXo0v/zyC61atfLaNpz6Z7LYnj176N69OxdeeCH/+te/TvtaO3fuzMyZM0/briIqDkHbt29n9uzZXnuD9DtcBVnaQ6kC6tSpk3n44Yc9j51Op6lTp44ZNWrUCdvPmjXL2Gw2s379+pOus7gjXmpqqmfehx9+aEJDQ01eXp4xxpgbbrjB3HzzzV7PW7hwoQE8HTJPxOVymSFDhpjatWubP//887jlxR3xvv76a8+89evXH9cRb/Xq1SYqKso89dRTJ93WsXr06HHaERPlGSfpLP2Pf/zDMy8jI6PEnaX1+ZYvx36+RzuTztK///67Z96MGTO8OksPHTrUdOrUyet5e/bsMYBZsGDBKdf/2muvmdDQ0BN2jC3pz+SuXbtMo0aNzK233mqKiopO+5qMMeaee+457ai28u5En3FBQYHp27evad68uUlLSyvRevQ7XLkpCJXSxIkTjb+/vxk/frxZu3atue+++0x4eLhnNMHHH39skpKSzKZNm8xnn31mIiIizNChQ0+5zuKhmT179jQrVqww06dPN5GRkV5DMz/55BPj6+tr3nvvPbN582Yzf/5806FDh+P+uB7rwQcfNGFhYWbOnDleQyYPHz7safPAAw+Y+Ph4M3v2bPP777+brl27mq5du3qWr1q1ykRGRprbb7/dax1H/xF58803zffff282btxoVq1aZR599FFjt9vNL7/8Uqr312pZWVlm+fLlZvny5QYwb7zxhlm+fLlnRMno0aNNeHi4+eGHHzynRyjp8Hl9vtY73ed74MABs3z5cjN16lQDmIkTJ5rly5ebvXv3nnK9V111lWnbtq1ZvHixmT9/vmnUqJHX8Pni/xCNHDnS/PnnnyY5OdkkJiaahIQEr8/qWKNHjzYOh8N8/fXXXp9NVlaWV5tT/Uzu2rXLNGzY0FxxxRVm165dXuspNn78ePPFF1+YdevWmXXr1plXXnnF2O128/HHH5/R+2ylU33GBQUF5tprrzWxsbFmxYoVXu9F8eivE9HvcOWmIHQG3nnnHRMfH28cDofp1KmTWbRokWfZsGHDTHR0tPHz8zONGjUy//znP43L5TrtOrdt22Z69eplAgMDTc2aNc0TTzxhCgsLvdqMHTvWNGvWzAQGBppatWqZAQMGeJ1P5ESAE94++eQTT5vc3Fzz0EMPmerVq5ugoCBz/fXXe/2RHDFixAnXkZCQ4Gnz2muvmQYNGpiAgAATERFhLrvsMjN79uzTvu7ypniI6bG3gQMHGmPc/3t7/vnnTXR0tPH39zdXXHGF2bBhw2nXq8+3fDjd5/vJJ5+ccPmIESNOud4DBw6Y/v37m5CQEBMaGmruuusur7BijDFffvmladu2rQkODjaRkZHm2muvNevWrTvlehMSEk5bz+l+Jk/2mo4+IDB+/HjTtGlTExQUZEJDQ02nTp28hmtXJKf6jIv39J3o9uuvv55yvfodrrxsxhhTmkNpIiIiIpWFRo2JiIhIlaUgJCIiIlWWgpCIiIhUWQpCIiIiUmUpCImIiEiVpSAkIiIiVZaCkIiIiFRZCkIiIiJSZSkIiYiISJWlICQiIiJVloKQiIiIVFn/D3Z738yw99+2AAAAAElFTkSuQmCC"
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "execution_count": 6
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 2
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython2",
+ "version": "2.7.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}