From d53aa3d5af6950d0ac4bfbcb5ab214a083c28e3a Mon Sep 17 00:00:00 2001
From: iainp5 <iain.pearce.ip@gmail.com>
Date: Fri, 11 Oct 2024 08:32:59 +0100
Subject: Added die images

---
 images/die_black_pips.svg | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 images/die_black_pips.svg

(limited to 'images')

diff --git a/images/die_black_pips.svg b/images/die_black_pips.svg
new file mode 100644
index 0000000..d641f28
--- /dev/null
+++ b/images/die_black_pips.svg
@@ -0,0 +1,37 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="336" height="56">
+<g fill="black">
+<g transform="translate(0 0)">
+<circle r="6" cx="28" cy="28"/>
+</g>
+<g transform="translate(56 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="44" cy="44"/>
+</g>
+<g transform="translate(112 0)">
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="28" cy="28"/>
+</g>
+<g transform="translate(168 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="44" cy="44"/>
+</g>
+<g transform="translate(224 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="44" cy="44"/>
+<circle r="6" cx="28" cy="28"/>
+</g>
+<g transform="translate(280 0)">
+<circle r="6" cx="12" cy="12"/>
+<circle r="6" cx="12" cy="28"/>
+<circle r="6" cx="12" cy="44"/>
+<circle r="6" cx="44" cy="12"/>
+<circle r="6" cx="44" cy="28"/>
+<circle r="6" cx="44" cy="44"/>
+</g>
+</g>
+</svg>
-- 
cgit v1.2.3


From 476012cf32f886491e983ae4a24ec077b1430b78 Mon Sep 17 00:00:00 2001
From: Tor Andersson <tor@ccxvii.net>
Date: Fri, 25 Oct 2024 23:46:52 +0200
Subject: REMOVE VASSAL IMAGES

---
 1989_map.jpg                           | Bin 1532763 -> 0 bytes
 cards/e1.gif                           | Bin 41173 -> 0 bytes
 cards/e10.gif                          | Bin 45725 -> 0 bytes
 cards/e100.gif                         | Bin 47033 -> 0 bytes
 cards/e101.gif                         | Bin 35715 -> 0 bytes
 cards/e102.gif                         | Bin 52121 -> 0 bytes
 cards/e103.gif                         | Bin 41393 -> 0 bytes
 cards/e104.gif                         | Bin 50934 -> 0 bytes
 cards/e105.gif                         | Bin 32868 -> 0 bytes
 cards/e106.gif                         | Bin 55236 -> 0 bytes
 cards/e107.gif                         | Bin 53985 -> 0 bytes
 cards/e108.gif                         | Bin 39396 -> 0 bytes
 cards/e109.gif                         | Bin 52280 -> 0 bytes
 cards/e11.gif                          | Bin 35357 -> 0 bytes
 cards/e110.gif                         | Bin 52196 -> 0 bytes
 cards/e12.gif                          | Bin 36855 -> 0 bytes
 cards/e13.gif                          | Bin 29026 -> 0 bytes
 cards/e14.gif                          | Bin 47291 -> 0 bytes
 cards/e15.gif                          | Bin 44485 -> 0 bytes
 cards/e16.gif                          | Bin 47827 -> 0 bytes
 cards/e17.gif                          | Bin 55283 -> 0 bytes
 cards/e18.gif                          | Bin 48673 -> 0 bytes
 cards/e19.gif                          | Bin 51580 -> 0 bytes
 cards/e2.gif                           | Bin 47713 -> 0 bytes
 cards/e20.gif                          | Bin 48684 -> 0 bytes
 cards/e21.gif                          | Bin 43661 -> 0 bytes
 cards/e22.gif                          | Bin 55339 -> 0 bytes
 cards/e23.gif                          | Bin 45012 -> 0 bytes
 cards/e24.gif                          | Bin 46517 -> 0 bytes
 cards/e25.gif                          | Bin 36750 -> 0 bytes
 cards/e26.gif                          | Bin 48924 -> 0 bytes
 cards/e27.gif                          | Bin 37383 -> 0 bytes
 cards/e28.gif                          | Bin 40841 -> 0 bytes
 cards/e29.gif                          | Bin 50513 -> 0 bytes
 cards/e3.gif                           | Bin 45791 -> 0 bytes
 cards/e30.gif                          | Bin 48397 -> 0 bytes
 cards/e31.gif                          | Bin 48803 -> 0 bytes
 cards/e32.gif                          | Bin 41812 -> 0 bytes
 cards/e33.gif                          | Bin 37416 -> 0 bytes
 cards/e34.gif                          | Bin 30253 -> 0 bytes
 cards/e35.gif                          | Bin 43812 -> 0 bytes
 cards/e36.gif                          | Bin 48081 -> 0 bytes
 cards/e37.gif                          | Bin 48246 -> 0 bytes
 cards/e38.gif                          | Bin 42546 -> 0 bytes
 cards/e39.gif                          | Bin 20887 -> 0 bytes
 cards/e4.gif                           | Bin 49249 -> 0 bytes
 cards/e40.gif                          | Bin 32686 -> 0 bytes
 cards/e41.gif                          | Bin 47201 -> 0 bytes
 cards/e42.gif                          | Bin 51711 -> 0 bytes
 cards/e43.gif                          | Bin 48165 -> 0 bytes
 cards/e44.gif                          | Bin 47662 -> 0 bytes
 cards/e45.gif                          | Bin 48593 -> 0 bytes
 cards/e46.gif                          | Bin 52918 -> 0 bytes
 cards/e47.gif                          | Bin 46167 -> 0 bytes
 cards/e48.gif                          | Bin 46050 -> 0 bytes
 cards/e49.gif                          | Bin 30897 -> 0 bytes
 cards/e5.gif                           | Bin 55871 -> 0 bytes
 cards/e50.gif                          | Bin 37886 -> 0 bytes
 cards/e51.gif                          | Bin 42136 -> 0 bytes
 cards/e52.gif                          | Bin 35487 -> 0 bytes
 cards/e53.gif                          | Bin 41152 -> 0 bytes
 cards/e54.gif                          | Bin 51568 -> 0 bytes
 cards/e55.gif                          | Bin 53379 -> 0 bytes
 cards/e56.gif                          | Bin 47264 -> 0 bytes
 cards/e57.gif                          | Bin 41053 -> 0 bytes
 cards/e58.gif                          | Bin 49002 -> 0 bytes
 cards/e59.gif                          | Bin 48521 -> 0 bytes
 cards/e6.gif                           | Bin 53364 -> 0 bytes
 cards/e60.gif                          | Bin 38365 -> 0 bytes
 cards/e61.gif                          | Bin 59278 -> 0 bytes
 cards/e62.gif                          | Bin 47030 -> 0 bytes
 cards/e63.gif                          | Bin 37173 -> 0 bytes
 cards/e64.gif                          | Bin 55336 -> 0 bytes
 cards/e65.gif                          | Bin 45256 -> 0 bytes
 cards/e66.gif                          | Bin 45276 -> 0 bytes
 cards/e67.gif                          | Bin 46779 -> 0 bytes
 cards/e68.gif                          | Bin 47975 -> 0 bytes
 cards/e69.gif                          | Bin 55250 -> 0 bytes
 cards/e7.gif                           | Bin 38561 -> 0 bytes
 cards/e70.gif                          | Bin 51398 -> 0 bytes
 cards/e71.gif                          | Bin 41245 -> 0 bytes
 cards/e72.gif                          | Bin 57623 -> 0 bytes
 cards/e73.gif                          | Bin 45497 -> 0 bytes
 cards/e74.gif                          | Bin 47107 -> 0 bytes
 cards/e75.gif                          | Bin 43205 -> 0 bytes
 cards/e76.gif                          | Bin 59066 -> 0 bytes
 cards/e77.gif                          | Bin 55423 -> 0 bytes
 cards/e78.gif                          | Bin 48166 -> 0 bytes
 cards/e79.gif                          | Bin 49578 -> 0 bytes
 cards/e8.gif                           | Bin 38108 -> 0 bytes
 cards/e80.gif                          | Bin 42881 -> 0 bytes
 cards/e81.gif                          | Bin 46392 -> 0 bytes
 cards/e82.gif                          | Bin 33240 -> 0 bytes
 cards/e83.gif                          | Bin 41811 -> 0 bytes
 cards/e84.gif                          | Bin 55422 -> 0 bytes
 cards/e85.gif                          | Bin 44517 -> 0 bytes
 cards/e86.gif                          | Bin 55559 -> 0 bytes
 cards/e87.gif                          | Bin 43060 -> 0 bytes
 cards/e88.gif                          | Bin 59184 -> 0 bytes
 cards/e89.gif                          | Bin 49189 -> 0 bytes
 cards/e9.gif                           | Bin 49698 -> 0 bytes
 cards/e90.gif                          | Bin 52416 -> 0 bytes
 cards/e91.gif                          | Bin 37102 -> 0 bytes
 cards/e92.gif                          | Bin 40982 -> 0 bytes
 cards/e93.gif                          | Bin 53105 -> 0 bytes
 cards/e94.gif                          | Bin 54882 -> 0 bytes
 cards/e95.gif                          | Bin 41576 -> 0 bytes
 cards/e96.gif                          | Bin 53108 -> 0 bytes
 cards/e97.gif                          | Bin 55092 -> 0 bytes
 cards/e98.gif                          | Bin 49232 -> 0 bytes
 cards/e99.gif                          | Bin 42212 -> 0 bytes
 cards_2/ps1.gif                        | Bin 12989 -> 0 bytes
 cards_2/ps10.gif                       | Bin 11046 -> 0 bytes
 cards_2/ps11.gif                       | Bin 11029 -> 0 bytes
 cards_2/ps12.gif                       | Bin 12107 -> 0 bytes
 cards_2/ps13.gif                       | Bin 10798 -> 0 bytes
 cards_2/ps14.gif                       | Bin 11340 -> 0 bytes
 cards_2/ps15.gif                       | Bin 9963 -> 0 bytes
 cards_2/ps16.gif                       | Bin 9427 -> 0 bytes
 cards_2/ps17.gif                       | Bin 10657 -> 0 bytes
 cards_2/ps18.gif                       | Bin 9394 -> 0 bytes
 cards_2/ps19.gif                       | Bin 9370 -> 0 bytes
 cards_2/ps2.gif                        | Bin 12816 -> 0 bytes
 cards_2/ps20.gif                       | Bin 9022 -> 0 bytes
 cards_2/ps21.gif                       | Bin 11928 -> 0 bytes
 cards_2/ps22.gif                       | Bin 11208 -> 0 bytes
 cards_2/ps23.gif                       | Bin 15085 -> 0 bytes
 cards_2/ps24.gif                       | Bin 8340 -> 0 bytes
 cards_2/ps25.gif                       | Bin 10627 -> 0 bytes
 cards_2/ps26.gif                       | Bin 9910 -> 0 bytes
 cards_2/ps27.gif                       | Bin 11695 -> 0 bytes
 cards_2/ps3.gif                        | Bin 12752 -> 0 bytes
 cards_2/ps4.gif                        | Bin 12713 -> 0 bytes
 cards_2/ps5.gif                        | Bin 12776 -> 0 bytes
 cards_2/ps6.gif                        | Bin 15057 -> 0 bytes
 cards_2/ps7.gif                        | Bin 15033 -> 0 bytes
 cards_2/ps8.gif                        | Bin 14977 -> 0 bytes
 cards_2/ps9.gif                        | Bin 15088 -> 0 bytes
 images/Event_Marker_Austria_Hungar.gif | Bin 5229 -> 0 bytes
 images/Event_Marker_Eco_Glasnost.gif   | Bin 3849 -> 0 bytes
 images/Event_Marker_Elena.gif          | Bin 5472 -> 0 bytes
 images/Event_Marker_Foreign_Curren.gif | Bin 5612 -> 0 bytes
 images/Event_Marker_Grenz_Truppen.gif  | Bin 6114 -> 0 bytes
 images/Event_Marker_Helsinki.gif       | Bin 4732 -> 0 bytes
 images/Event_Marker_Honecker.gif       | Bin 5660 -> 0 bytes
 images/Event_Marker_Laszlo.gif         | Bin 4389 -> 0 bytes
 images/Event_Marker_Li_Peng_.gif       | Bin 4496 -> 0 bytes
 images/Event_Marker_NYE_Party.gif      | Bin 5383 -> 0 bytes
 images/Event_Marker_Pres_Visit.gif     | Bin 6248 -> 0 bytes
 images/Event_Marker_Securitate.gif     | Bin 5847 -> 0 bytes
 images/Event_Marker_Solidarity_Leg.gif | Bin 4948 -> 0 bytes
 images/Event_Marker_St_Nicholas.gif    | Bin 4302 -> 0 bytes
 images/Event_Marker_Stand_Fast.gif     | Bin 6199 -> 0 bytes
 images/Event_Marker_Systematizatio.gif | Bin 4470 -> 0 bytes
 images/Event_Marker_The_Tyrant_Is_.gif | Bin 6164 -> 0 bytes
 images/Event_Marker_The_Wall.gif       | Bin 5801 -> 0 bytes
 images/Event_Marker_USSR_Stability.gif | Bin 1666 -> 0 bytes
 images/Event_Marker_We_are_the_Peo.gif | Bin 5427 -> 0 bytes
 images/SV_2.gif                        | Bin 2014 -> 0 bytes
 images/SV_3.gif                        | Bin 2011 -> 0 bytes
 images/SV_4.gif                        | Bin 1959 -> 0 bytes
 images/SV_5.gif                        | Bin 1976 -> 0 bytes
 images/SV_6.gif                        | Bin 2003 -> 0 bytes
 images/SV_7.gif                        | Bin 1976 -> 0 bytes
 images/SV_8.gif                        | Bin 1986 -> 0 bytes
 images/SV_Action_Round.gif             | Bin 2007 -> 0 bytes
 images/SV_Stability.gif                | Bin 2556 -> 0 bytes
 images/SV_Tiananmen_Square.gif         | Bin 2288 -> 0 bytes
 images/SV_blank.gif                    | Bin 1168 -> 0 bytes
 images/SVd_blank.gif                   | Bin 1814 -> 0 bytes
 images/Turn.gif                        | Bin 1391 -> 0 bytes
 images/US_1.gif                        | Bin 1933 -> 0 bytes
 images/US_2.gif                        | Bin 1961 -> 0 bytes
 images/US_3.gif                        | Bin 1982 -> 0 bytes
 images/US_4.gif                        | Bin 1953 -> 0 bytes
 images/US_5.gif                        | Bin 1971 -> 0 bytes
 images/US_6.gif                        | Bin 1992 -> 0 bytes
 images/US_7.gif                        | Bin 2005 -> 0 bytes
 images/US_8.gif                        | Bin 1951 -> 0 bytes
 images/US_Action_Round.gif             | Bin 2667 -> 0 bytes
 images/US_Tiananmen_Square.gif         | Bin 2241 -> 0 bytes
 images/US_blank.gif                    | Bin 1542 -> 0 bytes
 images/USd_blank.gif                   | Bin 1810 -> 0 bytes
 images/VP.gif                          | Bin 1293 -> 0 bytes
 images/bin.png                         | Bin 25047 -> 0 bytes
 images/cog.svg                         |   1 -
 images/earth-africa-europe.svg         |   1 -
 images/remove.png                      | Bin 4887 -> 0 bytes
 188 files changed, 2 deletions(-)
 delete mode 100644 1989_map.jpg
 delete mode 100644 cards/e1.gif
 delete mode 100644 cards/e10.gif
 delete mode 100644 cards/e100.gif
 delete mode 100644 cards/e101.gif
 delete mode 100644 cards/e102.gif
 delete mode 100644 cards/e103.gif
 delete mode 100644 cards/e104.gif
 delete mode 100644 cards/e105.gif
 delete mode 100644 cards/e106.gif
 delete mode 100644 cards/e107.gif
 delete mode 100644 cards/e108.gif
 delete mode 100644 cards/e109.gif
 delete mode 100644 cards/e11.gif
 delete mode 100644 cards/e110.gif
 delete mode 100644 cards/e12.gif
 delete mode 100644 cards/e13.gif
 delete mode 100644 cards/e14.gif
 delete mode 100644 cards/e15.gif
 delete mode 100644 cards/e16.gif
 delete mode 100644 cards/e17.gif
 delete mode 100644 cards/e18.gif
 delete mode 100644 cards/e19.gif
 delete mode 100644 cards/e2.gif
 delete mode 100644 cards/e20.gif
 delete mode 100644 cards/e21.gif
 delete mode 100644 cards/e22.gif
 delete mode 100644 cards/e23.gif
 delete mode 100644 cards/e24.gif
 delete mode 100644 cards/e25.gif
 delete mode 100644 cards/e26.gif
 delete mode 100644 cards/e27.gif
 delete mode 100644 cards/e28.gif
 delete mode 100644 cards/e29.gif
 delete mode 100644 cards/e3.gif
 delete mode 100644 cards/e30.gif
 delete mode 100644 cards/e31.gif
 delete mode 100644 cards/e32.gif
 delete mode 100644 cards/e33.gif
 delete mode 100644 cards/e34.gif
 delete mode 100644 cards/e35.gif
 delete mode 100644 cards/e36.gif
 delete mode 100644 cards/e37.gif
 delete mode 100644 cards/e38.gif
 delete mode 100644 cards/e39.gif
 delete mode 100644 cards/e4.gif
 delete mode 100644 cards/e40.gif
 delete mode 100644 cards/e41.gif
 delete mode 100644 cards/e42.gif
 delete mode 100644 cards/e43.gif
 delete mode 100644 cards/e44.gif
 delete mode 100644 cards/e45.gif
 delete mode 100644 cards/e46.gif
 delete mode 100644 cards/e47.gif
 delete mode 100644 cards/e48.gif
 delete mode 100644 cards/e49.gif
 delete mode 100644 cards/e5.gif
 delete mode 100644 cards/e50.gif
 delete mode 100644 cards/e51.gif
 delete mode 100644 cards/e52.gif
 delete mode 100644 cards/e53.gif
 delete mode 100644 cards/e54.gif
 delete mode 100644 cards/e55.gif
 delete mode 100644 cards/e56.gif
 delete mode 100644 cards/e57.gif
 delete mode 100644 cards/e58.gif
 delete mode 100644 cards/e59.gif
 delete mode 100644 cards/e6.gif
 delete mode 100644 cards/e60.gif
 delete mode 100644 cards/e61.gif
 delete mode 100644 cards/e62.gif
 delete mode 100644 cards/e63.gif
 delete mode 100644 cards/e64.gif
 delete mode 100644 cards/e65.gif
 delete mode 100644 cards/e66.gif
 delete mode 100644 cards/e67.gif
 delete mode 100644 cards/e68.gif
 delete mode 100644 cards/e69.gif
 delete mode 100644 cards/e7.gif
 delete mode 100644 cards/e70.gif
 delete mode 100644 cards/e71.gif
 delete mode 100644 cards/e72.gif
 delete mode 100644 cards/e73.gif
 delete mode 100644 cards/e74.gif
 delete mode 100644 cards/e75.gif
 delete mode 100644 cards/e76.gif
 delete mode 100644 cards/e77.gif
 delete mode 100644 cards/e78.gif
 delete mode 100644 cards/e79.gif
 delete mode 100644 cards/e8.gif
 delete mode 100644 cards/e80.gif
 delete mode 100644 cards/e81.gif
 delete mode 100644 cards/e82.gif
 delete mode 100644 cards/e83.gif
 delete mode 100644 cards/e84.gif
 delete mode 100644 cards/e85.gif
 delete mode 100644 cards/e86.gif
 delete mode 100644 cards/e87.gif
 delete mode 100644 cards/e88.gif
 delete mode 100644 cards/e89.gif
 delete mode 100644 cards/e9.gif
 delete mode 100644 cards/e90.gif
 delete mode 100644 cards/e91.gif
 delete mode 100644 cards/e92.gif
 delete mode 100644 cards/e93.gif
 delete mode 100644 cards/e94.gif
 delete mode 100644 cards/e95.gif
 delete mode 100644 cards/e96.gif
 delete mode 100644 cards/e97.gif
 delete mode 100644 cards/e98.gif
 delete mode 100644 cards/e99.gif
 delete mode 100644 cards_2/ps1.gif
 delete mode 100644 cards_2/ps10.gif
 delete mode 100644 cards_2/ps11.gif
 delete mode 100644 cards_2/ps12.gif
 delete mode 100644 cards_2/ps13.gif
 delete mode 100644 cards_2/ps14.gif
 delete mode 100644 cards_2/ps15.gif
 delete mode 100644 cards_2/ps16.gif
 delete mode 100644 cards_2/ps17.gif
 delete mode 100644 cards_2/ps18.gif
 delete mode 100644 cards_2/ps19.gif
 delete mode 100644 cards_2/ps2.gif
 delete mode 100644 cards_2/ps20.gif
 delete mode 100644 cards_2/ps21.gif
 delete mode 100644 cards_2/ps22.gif
 delete mode 100644 cards_2/ps23.gif
 delete mode 100644 cards_2/ps24.gif
 delete mode 100644 cards_2/ps25.gif
 delete mode 100644 cards_2/ps26.gif
 delete mode 100644 cards_2/ps27.gif
 delete mode 100644 cards_2/ps3.gif
 delete mode 100644 cards_2/ps4.gif
 delete mode 100644 cards_2/ps5.gif
 delete mode 100644 cards_2/ps6.gif
 delete mode 100644 cards_2/ps7.gif
 delete mode 100644 cards_2/ps8.gif
 delete mode 100644 cards_2/ps9.gif
 delete mode 100644 images/Event_Marker_Austria_Hungar.gif
 delete mode 100644 images/Event_Marker_Eco_Glasnost.gif
 delete mode 100644 images/Event_Marker_Elena.gif
 delete mode 100644 images/Event_Marker_Foreign_Curren.gif
 delete mode 100644 images/Event_Marker_Grenz_Truppen.gif
 delete mode 100644 images/Event_Marker_Helsinki.gif
 delete mode 100644 images/Event_Marker_Honecker.gif
 delete mode 100644 images/Event_Marker_Laszlo.gif
 delete mode 100644 images/Event_Marker_Li_Peng_.gif
 delete mode 100644 images/Event_Marker_NYE_Party.gif
 delete mode 100644 images/Event_Marker_Pres_Visit.gif
 delete mode 100644 images/Event_Marker_Securitate.gif
 delete mode 100644 images/Event_Marker_Solidarity_Leg.gif
 delete mode 100644 images/Event_Marker_St_Nicholas.gif
 delete mode 100644 images/Event_Marker_Stand_Fast.gif
 delete mode 100644 images/Event_Marker_Systematizatio.gif
 delete mode 100644 images/Event_Marker_The_Tyrant_Is_.gif
 delete mode 100644 images/Event_Marker_The_Wall.gif
 delete mode 100644 images/Event_Marker_USSR_Stability.gif
 delete mode 100644 images/Event_Marker_We_are_the_Peo.gif
 delete mode 100644 images/SV_2.gif
 delete mode 100644 images/SV_3.gif
 delete mode 100644 images/SV_4.gif
 delete mode 100644 images/SV_5.gif
 delete mode 100644 images/SV_6.gif
 delete mode 100644 images/SV_7.gif
 delete mode 100644 images/SV_8.gif
 delete mode 100644 images/SV_Action_Round.gif
 delete mode 100644 images/SV_Stability.gif
 delete mode 100644 images/SV_Tiananmen_Square.gif
 delete mode 100644 images/SV_blank.gif
 delete mode 100644 images/SVd_blank.gif
 delete mode 100644 images/Turn.gif
 delete mode 100644 images/US_1.gif
 delete mode 100644 images/US_2.gif
 delete mode 100644 images/US_3.gif
 delete mode 100644 images/US_4.gif
 delete mode 100644 images/US_5.gif
 delete mode 100644 images/US_6.gif
 delete mode 100644 images/US_7.gif
 delete mode 100644 images/US_8.gif
 delete mode 100644 images/US_Action_Round.gif
 delete mode 100644 images/US_Tiananmen_Square.gif
 delete mode 100644 images/US_blank.gif
 delete mode 100644 images/USd_blank.gif
 delete mode 100644 images/VP.gif
 delete mode 100644 images/bin.png
 delete mode 100644 images/cog.svg
 delete mode 100644 images/earth-africa-europe.svg
 delete mode 100644 images/remove.png

(limited to 'images')

diff --git a/1989_map.jpg b/1989_map.jpg
deleted file mode 100644
index b0d38b9..0000000
Binary files a/1989_map.jpg and /dev/null differ
diff --git a/cards/e1.gif b/cards/e1.gif
deleted file mode 100644
index 6e876fe..0000000
Binary files a/cards/e1.gif and /dev/null differ
diff --git a/cards/e10.gif b/cards/e10.gif
deleted file mode 100644
index c73aef7..0000000
Binary files a/cards/e10.gif and /dev/null differ
diff --git a/cards/e100.gif b/cards/e100.gif
deleted file mode 100644
index c4ee1e0..0000000
Binary files a/cards/e100.gif and /dev/null differ
diff --git a/cards/e101.gif b/cards/e101.gif
deleted file mode 100644
index 7e233cd..0000000
Binary files a/cards/e101.gif and /dev/null differ
diff --git a/cards/e102.gif b/cards/e102.gif
deleted file mode 100644
index e9e8c83..0000000
Binary files a/cards/e102.gif and /dev/null differ
diff --git a/cards/e103.gif b/cards/e103.gif
deleted file mode 100644
index 9596e34..0000000
Binary files a/cards/e103.gif and /dev/null differ
diff --git a/cards/e104.gif b/cards/e104.gif
deleted file mode 100644
index d7350fd..0000000
Binary files a/cards/e104.gif and /dev/null differ
diff --git a/cards/e105.gif b/cards/e105.gif
deleted file mode 100644
index c2bbf39..0000000
Binary files a/cards/e105.gif and /dev/null differ
diff --git a/cards/e106.gif b/cards/e106.gif
deleted file mode 100644
index 8d628b7..0000000
Binary files a/cards/e106.gif and /dev/null differ
diff --git a/cards/e107.gif b/cards/e107.gif
deleted file mode 100644
index 45215ec..0000000
Binary files a/cards/e107.gif and /dev/null differ
diff --git a/cards/e108.gif b/cards/e108.gif
deleted file mode 100644
index c7b39d6..0000000
Binary files a/cards/e108.gif and /dev/null differ
diff --git a/cards/e109.gif b/cards/e109.gif
deleted file mode 100644
index 63524d7..0000000
Binary files a/cards/e109.gif and /dev/null differ
diff --git a/cards/e11.gif b/cards/e11.gif
deleted file mode 100644
index 7f1e3d1..0000000
Binary files a/cards/e11.gif and /dev/null differ
diff --git a/cards/e110.gif b/cards/e110.gif
deleted file mode 100644
index 49ed8a7..0000000
Binary files a/cards/e110.gif and /dev/null differ
diff --git a/cards/e12.gif b/cards/e12.gif
deleted file mode 100644
index 6edee5b..0000000
Binary files a/cards/e12.gif and /dev/null differ
diff --git a/cards/e13.gif b/cards/e13.gif
deleted file mode 100644
index 7c2687f..0000000
Binary files a/cards/e13.gif and /dev/null differ
diff --git a/cards/e14.gif b/cards/e14.gif
deleted file mode 100644
index 182f153..0000000
Binary files a/cards/e14.gif and /dev/null differ
diff --git a/cards/e15.gif b/cards/e15.gif
deleted file mode 100644
index 1223dcd..0000000
Binary files a/cards/e15.gif and /dev/null differ
diff --git a/cards/e16.gif b/cards/e16.gif
deleted file mode 100644
index 7cb40a2..0000000
Binary files a/cards/e16.gif and /dev/null differ
diff --git a/cards/e17.gif b/cards/e17.gif
deleted file mode 100644
index 231fe92..0000000
Binary files a/cards/e17.gif and /dev/null differ
diff --git a/cards/e18.gif b/cards/e18.gif
deleted file mode 100644
index 7738d85..0000000
Binary files a/cards/e18.gif and /dev/null differ
diff --git a/cards/e19.gif b/cards/e19.gif
deleted file mode 100644
index 2e59b3f..0000000
Binary files a/cards/e19.gif and /dev/null differ
diff --git a/cards/e2.gif b/cards/e2.gif
deleted file mode 100644
index b6f3f2e..0000000
Binary files a/cards/e2.gif and /dev/null differ
diff --git a/cards/e20.gif b/cards/e20.gif
deleted file mode 100644
index c21ee70..0000000
Binary files a/cards/e20.gif and /dev/null differ
diff --git a/cards/e21.gif b/cards/e21.gif
deleted file mode 100644
index c1cdeb7..0000000
Binary files a/cards/e21.gif and /dev/null differ
diff --git a/cards/e22.gif b/cards/e22.gif
deleted file mode 100644
index e70575b..0000000
Binary files a/cards/e22.gif and /dev/null differ
diff --git a/cards/e23.gif b/cards/e23.gif
deleted file mode 100644
index c3f8974..0000000
Binary files a/cards/e23.gif and /dev/null differ
diff --git a/cards/e24.gif b/cards/e24.gif
deleted file mode 100644
index 66f2dbb..0000000
Binary files a/cards/e24.gif and /dev/null differ
diff --git a/cards/e25.gif b/cards/e25.gif
deleted file mode 100644
index 838fbdd..0000000
Binary files a/cards/e25.gif and /dev/null differ
diff --git a/cards/e26.gif b/cards/e26.gif
deleted file mode 100644
index c7573f4..0000000
Binary files a/cards/e26.gif and /dev/null differ
diff --git a/cards/e27.gif b/cards/e27.gif
deleted file mode 100644
index 850da0b..0000000
Binary files a/cards/e27.gif and /dev/null differ
diff --git a/cards/e28.gif b/cards/e28.gif
deleted file mode 100644
index 6149bab..0000000
Binary files a/cards/e28.gif and /dev/null differ
diff --git a/cards/e29.gif b/cards/e29.gif
deleted file mode 100644
index d34cdee..0000000
Binary files a/cards/e29.gif and /dev/null differ
diff --git a/cards/e3.gif b/cards/e3.gif
deleted file mode 100644
index a0f690c..0000000
Binary files a/cards/e3.gif and /dev/null differ
diff --git a/cards/e30.gif b/cards/e30.gif
deleted file mode 100644
index 8f9d92f..0000000
Binary files a/cards/e30.gif and /dev/null differ
diff --git a/cards/e31.gif b/cards/e31.gif
deleted file mode 100644
index fe6ff2b..0000000
Binary files a/cards/e31.gif and /dev/null differ
diff --git a/cards/e32.gif b/cards/e32.gif
deleted file mode 100644
index a0f4e23..0000000
Binary files a/cards/e32.gif and /dev/null differ
diff --git a/cards/e33.gif b/cards/e33.gif
deleted file mode 100644
index abaa4f2..0000000
Binary files a/cards/e33.gif and /dev/null differ
diff --git a/cards/e34.gif b/cards/e34.gif
deleted file mode 100644
index ec33286..0000000
Binary files a/cards/e34.gif and /dev/null differ
diff --git a/cards/e35.gif b/cards/e35.gif
deleted file mode 100644
index 6e5755d..0000000
Binary files a/cards/e35.gif and /dev/null differ
diff --git a/cards/e36.gif b/cards/e36.gif
deleted file mode 100644
index 7d05d4e..0000000
Binary files a/cards/e36.gif and /dev/null differ
diff --git a/cards/e37.gif b/cards/e37.gif
deleted file mode 100644
index e84bd17..0000000
Binary files a/cards/e37.gif and /dev/null differ
diff --git a/cards/e38.gif b/cards/e38.gif
deleted file mode 100644
index 4cb8e4a..0000000
Binary files a/cards/e38.gif and /dev/null differ
diff --git a/cards/e39.gif b/cards/e39.gif
deleted file mode 100644
index 621ea21..0000000
Binary files a/cards/e39.gif and /dev/null differ
diff --git a/cards/e4.gif b/cards/e4.gif
deleted file mode 100644
index b225bc1..0000000
Binary files a/cards/e4.gif and /dev/null differ
diff --git a/cards/e40.gif b/cards/e40.gif
deleted file mode 100644
index d0f7470..0000000
Binary files a/cards/e40.gif and /dev/null differ
diff --git a/cards/e41.gif b/cards/e41.gif
deleted file mode 100644
index 824fc1f..0000000
Binary files a/cards/e41.gif and /dev/null differ
diff --git a/cards/e42.gif b/cards/e42.gif
deleted file mode 100644
index 23069f5..0000000
Binary files a/cards/e42.gif and /dev/null differ
diff --git a/cards/e43.gif b/cards/e43.gif
deleted file mode 100644
index e883ef7..0000000
Binary files a/cards/e43.gif and /dev/null differ
diff --git a/cards/e44.gif b/cards/e44.gif
deleted file mode 100644
index 15bdf38..0000000
Binary files a/cards/e44.gif and /dev/null differ
diff --git a/cards/e45.gif b/cards/e45.gif
deleted file mode 100644
index fa6c0ca..0000000
Binary files a/cards/e45.gif and /dev/null differ
diff --git a/cards/e46.gif b/cards/e46.gif
deleted file mode 100644
index ec7310c..0000000
Binary files a/cards/e46.gif and /dev/null differ
diff --git a/cards/e47.gif b/cards/e47.gif
deleted file mode 100644
index fcbd622..0000000
Binary files a/cards/e47.gif and /dev/null differ
diff --git a/cards/e48.gif b/cards/e48.gif
deleted file mode 100644
index b40d716..0000000
Binary files a/cards/e48.gif and /dev/null differ
diff --git a/cards/e49.gif b/cards/e49.gif
deleted file mode 100644
index ac3c7b2..0000000
Binary files a/cards/e49.gif and /dev/null differ
diff --git a/cards/e5.gif b/cards/e5.gif
deleted file mode 100644
index bb75531..0000000
Binary files a/cards/e5.gif and /dev/null differ
diff --git a/cards/e50.gif b/cards/e50.gif
deleted file mode 100644
index a91cdb5..0000000
Binary files a/cards/e50.gif and /dev/null differ
diff --git a/cards/e51.gif b/cards/e51.gif
deleted file mode 100644
index 55b1bbd..0000000
Binary files a/cards/e51.gif and /dev/null differ
diff --git a/cards/e52.gif b/cards/e52.gif
deleted file mode 100644
index cc6241a..0000000
Binary files a/cards/e52.gif and /dev/null differ
diff --git a/cards/e53.gif b/cards/e53.gif
deleted file mode 100644
index 0e7638b..0000000
Binary files a/cards/e53.gif and /dev/null differ
diff --git a/cards/e54.gif b/cards/e54.gif
deleted file mode 100644
index 734ae1c..0000000
Binary files a/cards/e54.gif and /dev/null differ
diff --git a/cards/e55.gif b/cards/e55.gif
deleted file mode 100644
index e202be6..0000000
Binary files a/cards/e55.gif and /dev/null differ
diff --git a/cards/e56.gif b/cards/e56.gif
deleted file mode 100644
index 994c526..0000000
Binary files a/cards/e56.gif and /dev/null differ
diff --git a/cards/e57.gif b/cards/e57.gif
deleted file mode 100644
index 1202089..0000000
Binary files a/cards/e57.gif and /dev/null differ
diff --git a/cards/e58.gif b/cards/e58.gif
deleted file mode 100644
index b4cb03c..0000000
Binary files a/cards/e58.gif and /dev/null differ
diff --git a/cards/e59.gif b/cards/e59.gif
deleted file mode 100644
index eb5075d..0000000
Binary files a/cards/e59.gif and /dev/null differ
diff --git a/cards/e6.gif b/cards/e6.gif
deleted file mode 100644
index 56293e7..0000000
Binary files a/cards/e6.gif and /dev/null differ
diff --git a/cards/e60.gif b/cards/e60.gif
deleted file mode 100644
index 42904d1..0000000
Binary files a/cards/e60.gif and /dev/null differ
diff --git a/cards/e61.gif b/cards/e61.gif
deleted file mode 100644
index 9a04b79..0000000
Binary files a/cards/e61.gif and /dev/null differ
diff --git a/cards/e62.gif b/cards/e62.gif
deleted file mode 100644
index 14e4bac..0000000
Binary files a/cards/e62.gif and /dev/null differ
diff --git a/cards/e63.gif b/cards/e63.gif
deleted file mode 100644
index 91cb22f..0000000
Binary files a/cards/e63.gif and /dev/null differ
diff --git a/cards/e64.gif b/cards/e64.gif
deleted file mode 100644
index 1863085..0000000
Binary files a/cards/e64.gif and /dev/null differ
diff --git a/cards/e65.gif b/cards/e65.gif
deleted file mode 100644
index 7d317c2..0000000
Binary files a/cards/e65.gif and /dev/null differ
diff --git a/cards/e66.gif b/cards/e66.gif
deleted file mode 100644
index e709983..0000000
Binary files a/cards/e66.gif and /dev/null differ
diff --git a/cards/e67.gif b/cards/e67.gif
deleted file mode 100644
index 7d4b2de..0000000
Binary files a/cards/e67.gif and /dev/null differ
diff --git a/cards/e68.gif b/cards/e68.gif
deleted file mode 100644
index 500ac35..0000000
Binary files a/cards/e68.gif and /dev/null differ
diff --git a/cards/e69.gif b/cards/e69.gif
deleted file mode 100644
index 1247611..0000000
Binary files a/cards/e69.gif and /dev/null differ
diff --git a/cards/e7.gif b/cards/e7.gif
deleted file mode 100644
index f4022fd..0000000
Binary files a/cards/e7.gif and /dev/null differ
diff --git a/cards/e70.gif b/cards/e70.gif
deleted file mode 100644
index f7769d4..0000000
Binary files a/cards/e70.gif and /dev/null differ
diff --git a/cards/e71.gif b/cards/e71.gif
deleted file mode 100644
index d5ea620..0000000
Binary files a/cards/e71.gif and /dev/null differ
diff --git a/cards/e72.gif b/cards/e72.gif
deleted file mode 100644
index 9ca0a98..0000000
Binary files a/cards/e72.gif and /dev/null differ
diff --git a/cards/e73.gif b/cards/e73.gif
deleted file mode 100644
index aaff909..0000000
Binary files a/cards/e73.gif and /dev/null differ
diff --git a/cards/e74.gif b/cards/e74.gif
deleted file mode 100644
index 608dfec..0000000
Binary files a/cards/e74.gif and /dev/null differ
diff --git a/cards/e75.gif b/cards/e75.gif
deleted file mode 100644
index d644c5d..0000000
Binary files a/cards/e75.gif and /dev/null differ
diff --git a/cards/e76.gif b/cards/e76.gif
deleted file mode 100644
index e679a0a..0000000
Binary files a/cards/e76.gif and /dev/null differ
diff --git a/cards/e77.gif b/cards/e77.gif
deleted file mode 100644
index 4845969..0000000
Binary files a/cards/e77.gif and /dev/null differ
diff --git a/cards/e78.gif b/cards/e78.gif
deleted file mode 100644
index b435bd5..0000000
Binary files a/cards/e78.gif and /dev/null differ
diff --git a/cards/e79.gif b/cards/e79.gif
deleted file mode 100644
index 3821d00..0000000
Binary files a/cards/e79.gif and /dev/null differ
diff --git a/cards/e8.gif b/cards/e8.gif
deleted file mode 100644
index 3a36343..0000000
Binary files a/cards/e8.gif and /dev/null differ
diff --git a/cards/e80.gif b/cards/e80.gif
deleted file mode 100644
index 19885ac..0000000
Binary files a/cards/e80.gif and /dev/null differ
diff --git a/cards/e81.gif b/cards/e81.gif
deleted file mode 100644
index 636e13a..0000000
Binary files a/cards/e81.gif and /dev/null differ
diff --git a/cards/e82.gif b/cards/e82.gif
deleted file mode 100644
index 7dc2ed4..0000000
Binary files a/cards/e82.gif and /dev/null differ
diff --git a/cards/e83.gif b/cards/e83.gif
deleted file mode 100644
index 27e718d..0000000
Binary files a/cards/e83.gif and /dev/null differ
diff --git a/cards/e84.gif b/cards/e84.gif
deleted file mode 100644
index 7847ecf..0000000
Binary files a/cards/e84.gif and /dev/null differ
diff --git a/cards/e85.gif b/cards/e85.gif
deleted file mode 100644
index f6b656e..0000000
Binary files a/cards/e85.gif and /dev/null differ
diff --git a/cards/e86.gif b/cards/e86.gif
deleted file mode 100644
index 46af753..0000000
Binary files a/cards/e86.gif and /dev/null differ
diff --git a/cards/e87.gif b/cards/e87.gif
deleted file mode 100644
index 63bbd5e..0000000
Binary files a/cards/e87.gif and /dev/null differ
diff --git a/cards/e88.gif b/cards/e88.gif
deleted file mode 100644
index f1eedf3..0000000
Binary files a/cards/e88.gif and /dev/null differ
diff --git a/cards/e89.gif b/cards/e89.gif
deleted file mode 100644
index edd968a..0000000
Binary files a/cards/e89.gif and /dev/null differ
diff --git a/cards/e9.gif b/cards/e9.gif
deleted file mode 100644
index 1e094fb..0000000
Binary files a/cards/e9.gif and /dev/null differ
diff --git a/cards/e90.gif b/cards/e90.gif
deleted file mode 100644
index 954e485..0000000
Binary files a/cards/e90.gif and /dev/null differ
diff --git a/cards/e91.gif b/cards/e91.gif
deleted file mode 100644
index baf649a..0000000
Binary files a/cards/e91.gif and /dev/null differ
diff --git a/cards/e92.gif b/cards/e92.gif
deleted file mode 100644
index 15e4d1b..0000000
Binary files a/cards/e92.gif and /dev/null differ
diff --git a/cards/e93.gif b/cards/e93.gif
deleted file mode 100644
index bdcdf5f..0000000
Binary files a/cards/e93.gif and /dev/null differ
diff --git a/cards/e94.gif b/cards/e94.gif
deleted file mode 100644
index 797ff40..0000000
Binary files a/cards/e94.gif and /dev/null differ
diff --git a/cards/e95.gif b/cards/e95.gif
deleted file mode 100644
index 3455ade..0000000
Binary files a/cards/e95.gif and /dev/null differ
diff --git a/cards/e96.gif b/cards/e96.gif
deleted file mode 100644
index 2326e6d..0000000
Binary files a/cards/e96.gif and /dev/null differ
diff --git a/cards/e97.gif b/cards/e97.gif
deleted file mode 100644
index 7a2753c..0000000
Binary files a/cards/e97.gif and /dev/null differ
diff --git a/cards/e98.gif b/cards/e98.gif
deleted file mode 100644
index 2cc5f89..0000000
Binary files a/cards/e98.gif and /dev/null differ
diff --git a/cards/e99.gif b/cards/e99.gif
deleted file mode 100644
index c2def43..0000000
Binary files a/cards/e99.gif and /dev/null differ
diff --git a/cards_2/ps1.gif b/cards_2/ps1.gif
deleted file mode 100644
index 93bdf19..0000000
Binary files a/cards_2/ps1.gif and /dev/null differ
diff --git a/cards_2/ps10.gif b/cards_2/ps10.gif
deleted file mode 100644
index b78ec1f..0000000
Binary files a/cards_2/ps10.gif and /dev/null differ
diff --git a/cards_2/ps11.gif b/cards_2/ps11.gif
deleted file mode 100644
index 298c9e6..0000000
Binary files a/cards_2/ps11.gif and /dev/null differ
diff --git a/cards_2/ps12.gif b/cards_2/ps12.gif
deleted file mode 100644
index ebc293c..0000000
Binary files a/cards_2/ps12.gif and /dev/null differ
diff --git a/cards_2/ps13.gif b/cards_2/ps13.gif
deleted file mode 100644
index 5df58c4..0000000
Binary files a/cards_2/ps13.gif and /dev/null differ
diff --git a/cards_2/ps14.gif b/cards_2/ps14.gif
deleted file mode 100644
index 1ab602b..0000000
Binary files a/cards_2/ps14.gif and /dev/null differ
diff --git a/cards_2/ps15.gif b/cards_2/ps15.gif
deleted file mode 100644
index 77d01eb..0000000
Binary files a/cards_2/ps15.gif and /dev/null differ
diff --git a/cards_2/ps16.gif b/cards_2/ps16.gif
deleted file mode 100644
index 3821417..0000000
Binary files a/cards_2/ps16.gif and /dev/null differ
diff --git a/cards_2/ps17.gif b/cards_2/ps17.gif
deleted file mode 100644
index caaa761..0000000
Binary files a/cards_2/ps17.gif and /dev/null differ
diff --git a/cards_2/ps18.gif b/cards_2/ps18.gif
deleted file mode 100644
index 04c1cd5..0000000
Binary files a/cards_2/ps18.gif and /dev/null differ
diff --git a/cards_2/ps19.gif b/cards_2/ps19.gif
deleted file mode 100644
index f88c379..0000000
Binary files a/cards_2/ps19.gif and /dev/null differ
diff --git a/cards_2/ps2.gif b/cards_2/ps2.gif
deleted file mode 100644
index a900be2..0000000
Binary files a/cards_2/ps2.gif and /dev/null differ
diff --git a/cards_2/ps20.gif b/cards_2/ps20.gif
deleted file mode 100644
index 1387a8d..0000000
Binary files a/cards_2/ps20.gif and /dev/null differ
diff --git a/cards_2/ps21.gif b/cards_2/ps21.gif
deleted file mode 100644
index 31cd0b2..0000000
Binary files a/cards_2/ps21.gif and /dev/null differ
diff --git a/cards_2/ps22.gif b/cards_2/ps22.gif
deleted file mode 100644
index 42a7cec..0000000
Binary files a/cards_2/ps22.gif and /dev/null differ
diff --git a/cards_2/ps23.gif b/cards_2/ps23.gif
deleted file mode 100644
index 50ee901..0000000
Binary files a/cards_2/ps23.gif and /dev/null differ
diff --git a/cards_2/ps24.gif b/cards_2/ps24.gif
deleted file mode 100644
index 3107cc1..0000000
Binary files a/cards_2/ps24.gif and /dev/null differ
diff --git a/cards_2/ps25.gif b/cards_2/ps25.gif
deleted file mode 100644
index ba321f4..0000000
Binary files a/cards_2/ps25.gif and /dev/null differ
diff --git a/cards_2/ps26.gif b/cards_2/ps26.gif
deleted file mode 100644
index c6befdf..0000000
Binary files a/cards_2/ps26.gif and /dev/null differ
diff --git a/cards_2/ps27.gif b/cards_2/ps27.gif
deleted file mode 100644
index 34a4cea..0000000
Binary files a/cards_2/ps27.gif and /dev/null differ
diff --git a/cards_2/ps3.gif b/cards_2/ps3.gif
deleted file mode 100644
index 0f546d2..0000000
Binary files a/cards_2/ps3.gif and /dev/null differ
diff --git a/cards_2/ps4.gif b/cards_2/ps4.gif
deleted file mode 100644
index eebdb7f..0000000
Binary files a/cards_2/ps4.gif and /dev/null differ
diff --git a/cards_2/ps5.gif b/cards_2/ps5.gif
deleted file mode 100644
index b2da6bd..0000000
Binary files a/cards_2/ps5.gif and /dev/null differ
diff --git a/cards_2/ps6.gif b/cards_2/ps6.gif
deleted file mode 100644
index cd2b261..0000000
Binary files a/cards_2/ps6.gif and /dev/null differ
diff --git a/cards_2/ps7.gif b/cards_2/ps7.gif
deleted file mode 100644
index 5516bb3..0000000
Binary files a/cards_2/ps7.gif and /dev/null differ
diff --git a/cards_2/ps8.gif b/cards_2/ps8.gif
deleted file mode 100644
index 136e81a..0000000
Binary files a/cards_2/ps8.gif and /dev/null differ
diff --git a/cards_2/ps9.gif b/cards_2/ps9.gif
deleted file mode 100644
index df79c56..0000000
Binary files a/cards_2/ps9.gif and /dev/null differ
diff --git a/images/Event_Marker_Austria_Hungar.gif b/images/Event_Marker_Austria_Hungar.gif
deleted file mode 100644
index 5e2053f..0000000
Binary files a/images/Event_Marker_Austria_Hungar.gif and /dev/null differ
diff --git a/images/Event_Marker_Eco_Glasnost.gif b/images/Event_Marker_Eco_Glasnost.gif
deleted file mode 100644
index c50ac5b..0000000
Binary files a/images/Event_Marker_Eco_Glasnost.gif and /dev/null differ
diff --git a/images/Event_Marker_Elena.gif b/images/Event_Marker_Elena.gif
deleted file mode 100644
index 9e5ff46..0000000
Binary files a/images/Event_Marker_Elena.gif and /dev/null differ
diff --git a/images/Event_Marker_Foreign_Curren.gif b/images/Event_Marker_Foreign_Curren.gif
deleted file mode 100644
index 822b098..0000000
Binary files a/images/Event_Marker_Foreign_Curren.gif and /dev/null differ
diff --git a/images/Event_Marker_Grenz_Truppen.gif b/images/Event_Marker_Grenz_Truppen.gif
deleted file mode 100644
index 1e2832f..0000000
Binary files a/images/Event_Marker_Grenz_Truppen.gif and /dev/null differ
diff --git a/images/Event_Marker_Helsinki.gif b/images/Event_Marker_Helsinki.gif
deleted file mode 100644
index 7567dc7..0000000
Binary files a/images/Event_Marker_Helsinki.gif and /dev/null differ
diff --git a/images/Event_Marker_Honecker.gif b/images/Event_Marker_Honecker.gif
deleted file mode 100644
index 52a6ad1..0000000
Binary files a/images/Event_Marker_Honecker.gif and /dev/null differ
diff --git a/images/Event_Marker_Laszlo.gif b/images/Event_Marker_Laszlo.gif
deleted file mode 100644
index ba09ff2..0000000
Binary files a/images/Event_Marker_Laszlo.gif and /dev/null differ
diff --git a/images/Event_Marker_Li_Peng_.gif b/images/Event_Marker_Li_Peng_.gif
deleted file mode 100644
index 9477bac..0000000
Binary files a/images/Event_Marker_Li_Peng_.gif and /dev/null differ
diff --git a/images/Event_Marker_NYE_Party.gif b/images/Event_Marker_NYE_Party.gif
deleted file mode 100644
index b2a91d2..0000000
Binary files a/images/Event_Marker_NYE_Party.gif and /dev/null differ
diff --git a/images/Event_Marker_Pres_Visit.gif b/images/Event_Marker_Pres_Visit.gif
deleted file mode 100644
index 006e93d..0000000
Binary files a/images/Event_Marker_Pres_Visit.gif and /dev/null differ
diff --git a/images/Event_Marker_Securitate.gif b/images/Event_Marker_Securitate.gif
deleted file mode 100644
index 9289a99..0000000
Binary files a/images/Event_Marker_Securitate.gif and /dev/null differ
diff --git a/images/Event_Marker_Solidarity_Leg.gif b/images/Event_Marker_Solidarity_Leg.gif
deleted file mode 100644
index 044f4db..0000000
Binary files a/images/Event_Marker_Solidarity_Leg.gif and /dev/null differ
diff --git a/images/Event_Marker_St_Nicholas.gif b/images/Event_Marker_St_Nicholas.gif
deleted file mode 100644
index cb09917..0000000
Binary files a/images/Event_Marker_St_Nicholas.gif and /dev/null differ
diff --git a/images/Event_Marker_Stand_Fast.gif b/images/Event_Marker_Stand_Fast.gif
deleted file mode 100644
index 2d12898..0000000
Binary files a/images/Event_Marker_Stand_Fast.gif and /dev/null differ
diff --git a/images/Event_Marker_Systematizatio.gif b/images/Event_Marker_Systematizatio.gif
deleted file mode 100644
index 9f53576..0000000
Binary files a/images/Event_Marker_Systematizatio.gif and /dev/null differ
diff --git a/images/Event_Marker_The_Tyrant_Is_.gif b/images/Event_Marker_The_Tyrant_Is_.gif
deleted file mode 100644
index 05aca22..0000000
Binary files a/images/Event_Marker_The_Tyrant_Is_.gif and /dev/null differ
diff --git a/images/Event_Marker_The_Wall.gif b/images/Event_Marker_The_Wall.gif
deleted file mode 100644
index a929132..0000000
Binary files a/images/Event_Marker_The_Wall.gif and /dev/null differ
diff --git a/images/Event_Marker_USSR_Stability.gif b/images/Event_Marker_USSR_Stability.gif
deleted file mode 100644
index daacbbb..0000000
Binary files a/images/Event_Marker_USSR_Stability.gif and /dev/null differ
diff --git a/images/Event_Marker_We_are_the_Peo.gif b/images/Event_Marker_We_are_the_Peo.gif
deleted file mode 100644
index e10d8e6..0000000
Binary files a/images/Event_Marker_We_are_the_Peo.gif and /dev/null differ
diff --git a/images/SV_2.gif b/images/SV_2.gif
deleted file mode 100644
index 76f1f46..0000000
Binary files a/images/SV_2.gif and /dev/null differ
diff --git a/images/SV_3.gif b/images/SV_3.gif
deleted file mode 100644
index 75404f0..0000000
Binary files a/images/SV_3.gif and /dev/null differ
diff --git a/images/SV_4.gif b/images/SV_4.gif
deleted file mode 100644
index 29158b4..0000000
Binary files a/images/SV_4.gif and /dev/null differ
diff --git a/images/SV_5.gif b/images/SV_5.gif
deleted file mode 100644
index 2fdea81..0000000
Binary files a/images/SV_5.gif and /dev/null differ
diff --git a/images/SV_6.gif b/images/SV_6.gif
deleted file mode 100644
index 9f614e7..0000000
Binary files a/images/SV_6.gif and /dev/null differ
diff --git a/images/SV_7.gif b/images/SV_7.gif
deleted file mode 100644
index 43c6a14..0000000
Binary files a/images/SV_7.gif and /dev/null differ
diff --git a/images/SV_8.gif b/images/SV_8.gif
deleted file mode 100644
index a2e7dad..0000000
Binary files a/images/SV_8.gif and /dev/null differ
diff --git a/images/SV_Action_Round.gif b/images/SV_Action_Round.gif
deleted file mode 100644
index 7d2c9ef..0000000
Binary files a/images/SV_Action_Round.gif and /dev/null differ
diff --git a/images/SV_Stability.gif b/images/SV_Stability.gif
deleted file mode 100644
index dbc33aa..0000000
Binary files a/images/SV_Stability.gif and /dev/null differ
diff --git a/images/SV_Tiananmen_Square.gif b/images/SV_Tiananmen_Square.gif
deleted file mode 100644
index 41740bc..0000000
Binary files a/images/SV_Tiananmen_Square.gif and /dev/null differ
diff --git a/images/SV_blank.gif b/images/SV_blank.gif
deleted file mode 100644
index 5b9190b..0000000
Binary files a/images/SV_blank.gif and /dev/null differ
diff --git a/images/SVd_blank.gif b/images/SVd_blank.gif
deleted file mode 100644
index e202de3..0000000
Binary files a/images/SVd_blank.gif and /dev/null differ
diff --git a/images/Turn.gif b/images/Turn.gif
deleted file mode 100644
index 94dba0b..0000000
Binary files a/images/Turn.gif and /dev/null differ
diff --git a/images/US_1.gif b/images/US_1.gif
deleted file mode 100644
index 0f4d999..0000000
Binary files a/images/US_1.gif and /dev/null differ
diff --git a/images/US_2.gif b/images/US_2.gif
deleted file mode 100644
index e30ce29..0000000
Binary files a/images/US_2.gif and /dev/null differ
diff --git a/images/US_3.gif b/images/US_3.gif
deleted file mode 100644
index 3f6596d..0000000
Binary files a/images/US_3.gif and /dev/null differ
diff --git a/images/US_4.gif b/images/US_4.gif
deleted file mode 100644
index 4e1d1b1..0000000
Binary files a/images/US_4.gif and /dev/null differ
diff --git a/images/US_5.gif b/images/US_5.gif
deleted file mode 100644
index 4b32ff1..0000000
Binary files a/images/US_5.gif and /dev/null differ
diff --git a/images/US_6.gif b/images/US_6.gif
deleted file mode 100644
index da52ac1..0000000
Binary files a/images/US_6.gif and /dev/null differ
diff --git a/images/US_7.gif b/images/US_7.gif
deleted file mode 100644
index bbf8135..0000000
Binary files a/images/US_7.gif and /dev/null differ
diff --git a/images/US_8.gif b/images/US_8.gif
deleted file mode 100644
index 18b5f4d..0000000
Binary files a/images/US_8.gif and /dev/null differ
diff --git a/images/US_Action_Round.gif b/images/US_Action_Round.gif
deleted file mode 100644
index 00e4916..0000000
Binary files a/images/US_Action_Round.gif and /dev/null differ
diff --git a/images/US_Tiananmen_Square.gif b/images/US_Tiananmen_Square.gif
deleted file mode 100644
index 0fadb29..0000000
Binary files a/images/US_Tiananmen_Square.gif and /dev/null differ
diff --git a/images/US_blank.gif b/images/US_blank.gif
deleted file mode 100644
index 1f2f331..0000000
Binary files a/images/US_blank.gif and /dev/null differ
diff --git a/images/USd_blank.gif b/images/USd_blank.gif
deleted file mode 100644
index b999b18..0000000
Binary files a/images/USd_blank.gif and /dev/null differ
diff --git a/images/VP.gif b/images/VP.gif
deleted file mode 100644
index bd69b44..0000000
Binary files a/images/VP.gif and /dev/null differ
diff --git a/images/bin.png b/images/bin.png
deleted file mode 100644
index 37ea1a7..0000000
Binary files a/images/bin.png and /dev/null differ
diff --git a/images/cog.svg b/images/cog.svg
deleted file mode 100644
index 6e44bd2..0000000
--- a/images/cog.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><g class="" style="" transform="translate(0,0)"><path d="M234.875 18.78c-26.087 2.367-51.557 8.56-74.875 18.782 15.37 32.763 14.222 66.706-6.72 82.407-20.835 15.617-54.055 7.965-81.124-15.69-16.246 19.452-29.336 41.36-38.875 65.626 33.83 12.333 56.635 37.665 52.94 63.5-3.698 25.835-32.697 43.74-68.626 46.094 2.338 25.796 8.91 50.778 18.937 73.875 17.81-8.182 35.793-11.09 51.095-8.938 13.032 1.87 23.927 7.015 31.156 16.657 15.817 21.097 7.603 54.713-16.78 81.97 19.516 16.35 42.216 29.444 66.594 39.03 12.33-33.828 37.655-56.634 63.5-52.938 25.844 3.697 43.74 32.696 46.094 68.625 26.087-2.365 51.557-8.555 74.875-18.78-15.766-32.997-14.26-67.588 6.843-83.406 9.64-7.23 22.568-9.022 35.594-7.125 15.112 2.16 31.19 10.25 45.563 22.78 16.088-19.345 29.4-41.51 38.875-65.594-33.83-12.332-56.635-37.653-52.938-63.5 3.697-25.846 32.665-43.772 68.594-46.125-2.36-25.944-8.774-50.663-18.906-73.874-32.612 15.117-66.66 13.145-82.282-7.687-15.696-20.944-7.252-53.86 16.688-81-19.52-16.352-42.248-29.447-66.625-39.032-12.332 33.828-37.657 56.66-63.5 52.968-25.846-3.693-43.744-32.696-46.095-68.625zm21.656 95.126c79.626 0 144.376 64.752 144.376 144.375 0 79.626-64.75 144.376-144.375 144.376-79.624 0-144.374-64.75-144.374-144.375 0-79.624 64.75-144.374 144.375-144.374zm0 18.688c-69.524 0-125.686 56.162-125.686 125.687 0 69.526 56.162 125.69 125.687 125.69 69.526 0 125.69-56.164 125.69-125.69 0-69.522-56.164-125.686-125.69-125.686zm.033 15.125c61.094 0 110.625 49.53 110.625 110.624 0 61.095-49.53 110.625-110.625 110.625s-110.625-49.53-110.625-110.626c0-61.095 49.53-110.625 110.625-110.625z" fill="#000" fill-opacity="1"></path></g></svg>
\ No newline at end of file
diff --git a/images/earth-africa-europe.svg b/images/earth-africa-europe.svg
deleted file mode 100644
index 39a4868..0000000
--- a/images/earth-africa-europe.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><g class="" style="" transform="translate(0,0)"><path d="M256 32A224 224 0 0 0 32 256a224 224 0 0 0 224 224 224 224 0 0 0 223.672-217.45c-15.468 4.148-.306.22-16.467 4.51-9.1-2.965-28.42 10.264-29.197 10.264-1.756 0-14.65-49.66-14.65-49.66L381.08 208H368l-1.316 6.32 30.2 28.444-47.76 20.718-35.466-49.162-5.24 2.328 11.21 36.3 42.84 23.177-42.84 50.568 1.403 35.82-31.276 67.182-52.168-6.716-16-88.843-3.094-33.43-71.517-3.838-9.258-60.77 32.314-35.827 54.782-6.32 40.034 21.772 36.93-9.72c-1.112-18.374.05-12.54-1.112-18.374l-19.666-.7-1.053-10.184-5.97-2.107-2.81 12.64-9.48-.526-11.94-26.514-8.43 2.81 10.185 22.475-9.13 3.16-13.694-20.718-8.428-1.406-21.773 2.81-18.26 23.177-18.613 1.406-1.405-34.064 24.23-1.757 2.108-10.184-5.795-5.618-.174-3.69 16.182-7.94 11.56-2.944 19.665-6.848 6.32-7.375 3.512 7.375 22.474 2.81 8.78-9.13 5.97-24.582-6.673-2.81-11.238 16.857-8.43-9.834-11.586 14.75-14.4 2.458-.7-10.184 11.236-23.88 31.606-13.694 43.894-3.16 3.864 13.344s-4.916 13.344-5.97 13.695c-.138.045.428 1.754 1.464 4.565h31.195l14.047-11.59 29.484-9.138A224 224 0 0 0 256 32zM145.098 69.465l6.144 1.053s1.756 8.076.352 10.007c-1.405 1.932-10.885 7.903-10.885 7.903l-6.148-12.115 10.536-6.848zm41.086 11.588l8.252 19.49 3.337 16.68s-11.588 5.793-12.466 6.496c-.878.7-6.147-8.077-6.147-8.077l-1.93-17.91 2.81-15.1 6.144-1.58zm-12.116 22.474v16.155l-10.007 3.86-2.107-7.724 12.115-12.29zm189.104 238.618l-7.365 61.798-16.164 3.166s4.868-50.492 7.326-53.3l16.202-11.665z" fill="#000" fill-opacity="1"></path></g></svg>
\ No newline at end of file
diff --git a/images/remove.png b/images/remove.png
deleted file mode 100644
index 1c5b028..0000000
Binary files a/images/remove.png and /dev/null differ
-- 
cgit v1.2.3


From 5d81b4294bd8f9b20ac8a396a185f6cf9550c00f Mon Sep 17 00:00:00 2001
From: Tor Andersson <tor@ccxvii.net>
Date: Fri, 25 Oct 2024 11:58:58 +0200
Subject: Update client.

Fixed some spelling errors in space data table.

Create tools directory and add Makefile.
Add layout.svg with boxes drawn on top of locations.
Add genlayout.js to create list of box locations.
Add gencolors.js to create beveled marker border colors.

Major rewrite of play.js and play.css with official assets.
---
 Makefile             |    9 +
 data.js              | 1355 +++++++++++++++++++++++++++++++++++++++++++++++---
 gencode.js           |  107 ----
 images/trash-can.svg |    1 +
 info/cards.html      |  193 +++++++
 play.css             | 1010 +++++++++++++------------------------
 play.html            |  236 ++++-----
 play.js              | 1080 +++++++++++++++++-----------------------
 rules.js             |   71 ++-
 tools/colors.js      |  110 ++++
 tools/gencode.js     |  106 ++++
 tools/gencolors.js   |   78 +++
 tools/genlayout.js   |   37 ++
 tools/layout.svg     |  920 ++++++++++++++++++++++++++++++++++
 14 files changed, 3651 insertions(+), 1662 deletions(-)
 create mode 100644 Makefile
 delete mode 100644 gencode.js
 create mode 100644 images/trash-can.svg
 create mode 100644 info/cards.html
 create mode 100644 tools/colors.js
 create mode 100644 tools/gencode.js
 create mode 100644 tools/gencolors.js
 create mode 100644 tools/genlayout.js
 create mode 100644 tools/layout.svg

(limited to 'images')

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..daa5c21
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,9 @@
+default: rules.js play.js
+rules.js: events.txt
+	sed '/const CODE /,$$d' < rules.js > /tmp/rules.js
+	node tools/gencode.js >> /tmp/rules.js
+	cp /tmp/rules.js rules.js
+play.js: tools/layout.svg
+	sed '/var LAYOUT /,$$d' < play.js > /tmp/play.js
+	node tools/genlayout.js >> /tmp/play.js
+	cp /tmp/play.js play.js
diff --git a/data.js b/data.js
index 17e7530..6c37c50 100644
--- a/data.js
+++ b/data.js
@@ -1,80 +1,1280 @@
-const spaces = [ 
-        null,   
-        {name_unique: 'Schwerin', space_id: 1, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 111, y: 61}, adjacent: [2, 3, , , ]},
-        {name_unique: 'Rostock', space_id: 2, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 228, y: 41}, adjacent: [1, 3, , , ]},
-        {name_unique: 'Berlin', space_id: 3, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'East_Germany', region: 'Eastern Europe', box: {x: 251, y: 113}, adjacent: [1, 2, 5, 9, ]},
-        {name_unique: 'German Writers', space_id: 4, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 58, y: 185}, adjacent: [5, , , , ]},
-        {name_unique: 'Walter Ulbricht Academy', space_id: 5, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 175, y: 187}, adjacent: [3, 4, , , ]},
-        {name_unique: 'Lutherian Church', space_id: 6, socio: 7, stability: 5, battleground: 1, demInfl: 1, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 300, y: 212}, adjacent: [9, , , , ]},
-        {name_unique: 'Magdeburg', space_id: 7, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 58, y: 275}, adjacent: [8, 10, 11, , ]},
-        {name_unique: 'Halle', space_id: 8, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 175, y: 278}, adjacent: [7, 9, 11, , ]},
-        {name_unique: 'Leipzig', space_id: 9, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 297, y: 297}, adjacent: [3, 6, 8, 11, 12]},
-        {name_unique: 'Erfurt', space_id: 10, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 23, y: 356}, adjacent: [7, , , , ]},
-        {name_unique: 'Karl-Marx-Stadt', space_id: 11, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 138, y: 385}, adjacent: [7, 8, 9, 12, ]},
-        {name_unique: 'Dresden', space_id: 12, socio: 1, stability: 4, battleground: 1, demInfl: 0, comInfl: 2, country: 'East_Germany', region: 'Eastern Europe', box: {x: 262, y: 375}, adjacent: [9, 11, 19, 27, ]},
-        {name_unique: 'Szczecin', space_id: 13, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 434, y: 204}, adjacent: [14, 16, , , ]},
-        {name_unique: 'Gdańsk', space_id: 14, socio: 4, stability: 3, battleground: 1, demInfl: 1, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 699, y: 215}, adjacent: [13, 15, 16, 17, 18]},
-        {name_unique: 'Bydgoszcz', space_id: 15, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 679, y: 304}, adjacent: [14, 17, , , ]},
-        {name_unique: 'Poznań', space_id: 16, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 521, y: 355}, adjacent: [13, 14, 19, 20, ]},
-        {name_unique: 'Warszawa', space_id: 17, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 806, y: 383}, adjacent: [14, 15, 18, 21, 24]},
-        {name_unique: 'Białystok', space_id: 18, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 940, y: 342}, adjacent: [14, 17, 24, , ]},
-        {name_unique: 'Wrocław', space_id: 19, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 462, y: 443}, adjacent: [12, 16, 20, 22, ]},
-        {name_unique: 'Catholic Church, Poland', space_id: 20, socio: 7, stability: 5, battleground: 0, demInfl: 5, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 625, y: 437}, adjacent: [16, 19, 21, 22, 23]},
-        {name_unique: 'Łódź', space_id: 21, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 749, y: 486}, adjacent: [17, 20, 23, 24, ]},
-        {name_unique: 'Katowice', space_id: 22, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 570, y: 569}, adjacent: [19, 20, 23, 33, ]},
-        {name_unique: 'Kraków', space_id: 23, socio: 4, stability: 3, battleground: 1, demInfl: 1, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 711, y: 598}, adjacent: [20, 21, 22, 25, ]},
-        {name_unique: 'Lublin', space_id: 24, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 879, y: 603}, adjacent: [17, 18, 21, , ]},
-        {name_unique: 'Jagiellian University', space_id: 25, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 679, y: 681}, adjacent: [23, 26, , , ]},
-        {name_unique: 'Polish Writers', space_id: 26, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 832, y: 694}, adjacent: [25, , , , ]},
-        {name_unique: 'Plzeň', space_id: 27, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 2, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 159, y: 483}, adjacent: [12, 28, 29, , ]},
-        {name_unique: 'České Budĕjovice', space_id: 28, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 196, y: 601}, adjacent: [27, 29, , , ]},
-        {name_unique: 'Praha', space_id: 29, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 317, y: 614}, adjacent: [27, 28, 30, 32, ]},
-        {name_unique: 'Charles University', space_id: 30, socio: 6, stability: 1, battleground: 1, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 380, y: 532}, adjacent: [29, 31, , , ]},
-        {name_unique: 'Czech Writers', space_id: 31, socio: 5, stability: 2, battleground: 1, demInfl: 2, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 444, y: 607}, adjacent: [30, , , , ]},
-        {name_unique: 'Brno', space_id: 32, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 1, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 403, y: 711}, adjacent: [29, 33, 34, , ]},
-        {name_unique: 'Ostrava', space_id: 33, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 523, y: 681}, adjacent: [22, 32, 34, 35, ]},
-        {name_unique: 'Bratislava', space_id: 34, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 417, y: 797}, adjacent: [32, 33, 35, , ]},
-        {name_unique: 'Catholic Church, Czechoslovakia', space_id: 35, socio: 7, stability: 5, battleground: 0, demInfl: 1, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 538, y: 794}, adjacent: [33, 34, 36, , ]},
-        {name_unique: 'Prešov', space_id: 36, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 658, y: 794}, adjacent: [35, 37, , , ]},
-        {name_unique: 'Košice', space_id: 37, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 777, y: 815}, adjacent: [36, 42, , , ]},
-        {name_unique: 'Catholic Church, Hungary', space_id: 38, socio: 7, stability: 5, battleground: 0, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 314, y: 886}, adjacent: [39, 43, , , ]},
-        {name_unique: 'Győr', space_id: 39, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 434, y: 887}, adjacent: [38, 40, 43, 44, ]},
-        {name_unique: 'Tatabánya', space_id: 40, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 549, y: 886}, adjacent: [39, 41, 45, , ]},
-        {name_unique: 'Miskolc', space_id: 41, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 664, y: 901}, adjacent: [40, 42, 45, , ]},
-        {name_unique: 'Debrecen', space_id: 42, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 781, y: 938}, adjacent: [37, 41, , , ]},
-        {name_unique: 'Szombathely', space_id: 43, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Hungary', region: 'Eastern Europe', box: {x: 316, y: 963}, adjacent: [38, 39, 44, , ]},
-        {name_unique: 'Székesfehérvár', space_id: 44, socio: 4, stability: 3, battleground: 0, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 442, y: 962}, adjacent: [39, 43, 45, , ]},
-        {name_unique: 'Budapest', space_id: 45, socio: 2, stability: 3, battleground: 1, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 630, y: 983}, adjacent: [40, 41, 44, 47, 48]},
-        {name_unique: 'Hungarian Writers', space_id: 46, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 348, y: 1040}, adjacent: [47, , , , ]},
-        {name_unique: 'Eötvös Loránd University', space_id: 47, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 512, y: 1034}, adjacent: [46, 45, , , ]},
-        {name_unique: 'Szeged', space_id: 48, socio: 3, stability: 4, battleground: 1, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 632, y: 1073}, adjacent: [45, 49, 50, , ]},
-        {name_unique: 'Pécs', space_id: 49, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 486, y: 1105}, adjacent: [48, , , , ]},
-        {name_unique: 'Timişoara', space_id: 50, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 597, y: 1204}, adjacent: [48, 51, 60, , ]},
-        {name_unique: 'Cluj-Napoca', space_id: 51, socio: 1, stability: 4, battleground: 1, demInfl: 0, comInfl: 2, country: 'Romania', region: 'Balkans', box: {x: 756, y: 1125}, adjacent: [50, 54, 58, 61, ]},
-        {name_unique: 'Târgu Mureş', space_id: 52, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 915, y: 1136}, adjacent: [53, 56, , , ]},
-        {name_unique: 'Iaşi', space_id: 53, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1072, y: 1097}, adjacent: [52, 57, 62, , ]},
-        {name_unique: 'Babeş-Bolyai University', space_id: 54, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 746, y: 1203}, adjacent: [51, 55, , , ]},
-        {name_unique: 'Romanian Writers', space_id: 55, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 739, y: 1278}, adjacent: [54, , , , ]},
-        {name_unique: 'Hargita/Covasna', space_id: 56, socio: 8, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 928, y: 1227}, adjacent: [52, , , , ]},
-        {name_unique: 'Braşov', space_id: 57, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1049, y: 1225}, adjacent: [53, 59, 61, , ]},
-        {name_unique: 'Orthodox Church Romania', space_id: 58, socio: 7, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 855, y: 1338}, adjacent: [51, 60, , , ]},
-        {name_unique: 'Ploieşti', space_id: 59, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1061, y: 1316}, adjacent: [57, 61, 62, , ]},
-        {name_unique: 'Craiova', space_id: 60, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 763, y: 1411}, adjacent: [50, 58, 61, , ]},
-        {name_unique: 'Bucureşti', space_id: 61, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'Romania', region: 'Balkans', box: {x: 929, y: 1445}, adjacent: [51, 57, 59, 60, 63]},
-        {name_unique: 'Galaţi', space_id: 62, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1104, y: 1399}, adjacent: [53, 59, 63, , ]},
-        {name_unique: 'Constanţa', space_id: 63, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1130, y: 1517}, adjacent: [61, 62, 72, , ]},
-        {name_unique: 'Pleven', space_id: 64, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 764, y: 1534}, adjacent: [68, , , , ]},
-        {name_unique: 'Orthodox Church Bulgaria', space_id: 65, socio: 7, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 882, y: 1540}, adjacent: [66, 68, , , ]},
-        {name_unique: 'Ruse', space_id: 66, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 998, y: 1540}, adjacent: [65, 69, 70, 71, 72]},
-        {name_unique: 'Sofia University', space_id: 67, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 645, y: 1650}, adjacent: [68, 73, , , ]},
-        {name_unique: 'Sofia', space_id: 68, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'Bulgaria', region: 'Balkans', box: {x: 768, y: 1653}, adjacent: [64, 65, 67, 69, 74]},
-        {name_unique: 'Stara Zagora', space_id: 69, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Bulgaria', region: 'Balkans', box: {x: 886, y: 1694}, adjacent: [66, 68, 71, , ]},
-        {name_unique: 'Razgrad', space_id: 70, socio: 8, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 954, y: 1620}, adjacent: [66, , , , ]},
-        {name_unique: 'Burgas', space_id: 71, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 1004, y: 1695}, adjacent: [66, 69, 72, , ]},
-        {name_unique: 'Varna', space_id: 72, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 1086, y: 1613}, adjacent: [63, 66, 71, , ]},
-        {name_unique: 'Bulgarian Writers', space_id: 73, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 652, y: 1726}, adjacent: [67, , , , ]},
-        {name_unique: 'Plovdiv', space_id: 74, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 771, y: 1739}, adjacent: [68, 75, , , ]},
-        {name_unique: 'Sliven', space_id: 75, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 894, y: 1768}, adjacent: [74, , , , ]}   
+const spaces = [
+	null,
+	{
+		name_unique: "Schwerin",
+		space_id: 1,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 111,
+			y: 61,
+		},
+		adjacent: [ 2, 3 ],
+		ascii_name: "Schwerin",
+	},
+	{
+		name_unique: "Rostock",
+		space_id: 2,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 228,
+			y: 41,
+		},
+		adjacent: [ 1, 3 ],
+		ascii_name: "Rostock",
+	},
+	{
+		name_unique: "Berlin",
+		space_id: 3,
+		socio: 2,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 2,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 251,
+			y: 113,
+		},
+		adjacent: [ 1, 2, 5, 9 ],
+		ascii_name: "Berlin",
+	},
+	{
+		name_unique: "German Writers",
+		space_id: 4,
+		socio: 5,
+		stability: 2,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 58,
+			y: 185,
+		},
+		adjacent: [ 5 ],
+		ascii_name: "German Writers",
+	},
+	{
+		name_unique: "Walter Ulbricht Academy",
+		space_id: 5,
+		socio: 6,
+		stability: 1,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 175,
+			y: 187,
+		},
+		adjacent: [ 3, 4 ],
+		ascii_name: "Walter Ulbricht Academy",
+	},
+	{
+		name_unique: "Lutheran Church",
+		space_id: 6,
+		socio: 7,
+		stability: 5,
+		battleground: 1,
+		demInfl: 1,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 300,
+			y: 212,
+		},
+		adjacent: [ 9 ],
+		ascii_name: "Lutheran Church",
+	},
+	{
+		name_unique: "Magdeburg",
+		space_id: 7,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 58,
+			y: 275,
+		},
+		adjacent: [ 8, 10, 11 ],
+		ascii_name: "Magdeburg",
+	},
+	{
+		name_unique: "Halle",
+		space_id: 8,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 175,
+			y: 278,
+		},
+		adjacent: [ 7, 9, 11 ],
+		ascii_name: "Halle",
+	},
+	{
+		name_unique: "Leipzig",
+		space_id: 9,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 297,
+			y: 297,
+		},
+		adjacent: [ 3, 6, 8, 11, 12 ],
+		ascii_name: "Leipzig",
+	},
+	{
+		name_unique: "Erfurt",
+		space_id: 10,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 23,
+			y: 356,
+		},
+		adjacent: [ 7 ],
+		ascii_name: "Erfurt",
+	},
+	{
+		name_unique: "Karl-Marx-Stadt",
+		space_id: 11,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 138,
+			y: 385,
+		},
+		adjacent: [ 7, 8, 9, 12 ],
+		ascii_name: "Karl-Marx-Stadt",
+	},
+	{
+		name_unique: "Dresden",
+		space_id: 12,
+		socio: 1,
+		stability: 4,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 2,
+		country: "East_Germany",
+		region: "Eastern Europe",
+		box: {
+			x: 262,
+			y: 375,
+		},
+		adjacent: [ 9, 11, 19, 27 ],
+		ascii_name: "Dresden",
+	},
+	{
+		name_unique: "Szczecin",
+		space_id: 13,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 434,
+			y: 204,
+		},
+		adjacent: [ 14, 16 ],
+		ascii_name: "Szczecin",
+	},
+	{
+		name_unique: "Gdańsk",
+		space_id: 14,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 1,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 699,
+			y: 215,
+		},
+		adjacent: [ 13, 15, 16, 17, 18 ],
+		ascii_name: "Gdansk",
+	},
+	{
+		name_unique: "Bydgoszcz",
+		space_id: 15,
+		socio: 1,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 1,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 679,
+			y: 304,
+		},
+		adjacent: [ 14, 17 ],
+		ascii_name: "Bydgoszcz",
+	},
+	{
+		name_unique: "Poznań",
+		space_id: 16,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 521,
+			y: 355,
+		},
+		adjacent: [ 13, 14, 19, 20 ],
+		ascii_name: "Poznan",
+	},
+	{
+		name_unique: "Warszawa",
+		space_id: 17,
+		socio: 2,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 1,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 806,
+			y: 383,
+		},
+		adjacent: [ 14, 15, 18, 21, 24 ],
+		ascii_name: "Warszawa",
+	},
+	{
+		name_unique: "Białystok",
+		space_id: 18,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 940,
+			y: 342,
+		},
+		adjacent: [ 14, 17, 24 ],
+		ascii_name: "Bialystok",
+	},
+	{
+		name_unique: "Wrocław",
+		space_id: 19,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 462,
+			y: 443,
+		},
+		adjacent: [ 12, 16, 20, 22 ],
+		ascii_name: "Wroclaw",
+	},
+	{
+		name_unique: "Catholic Church, Poland",
+		space_id: 20,
+		socio: 7,
+		stability: 5,
+		battleground: 0,
+		demInfl: 5,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 625,
+			y: 437,
+		},
+		adjacent: [ 16, 19, 21, 22, 23 ],
+		ascii_name: "Catholic Church, Poland",
+	},
+	{
+		name_unique: "Łódź",
+		space_id: 21,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 749,
+			y: 486,
+		},
+		adjacent: [ 17, 20, 23, 24 ],
+		ascii_name: "Lodz",
+	},
+	{
+		name_unique: "Katowice",
+		space_id: 22,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 570,
+			y: 569,
+		},
+		adjacent: [ 19, 20, 23, 33 ],
+		ascii_name: "Katowice",
+	},
+	{
+		name_unique: "Kraków",
+		space_id: 23,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 1,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 711,
+			y: 598,
+		},
+		adjacent: [ 20, 21, 22, 25 ],
+		ascii_name: "Krakow",
+	},
+	{
+		name_unique: "Lublin",
+		space_id: 24,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 1,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 879,
+			y: 603,
+		},
+		adjacent: [ 17, 18, 21 ],
+		ascii_name: "Lublin",
+	},
+	{
+		name_unique: "Jagiellonian University",
+		space_id: 25,
+		socio: 6,
+		stability: 1,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 679,
+			y: 681,
+		},
+		adjacent: [ 23, 26 ],
+		ascii_name: "Jagiellonian University",
+	},
+	{
+		name_unique: "Polish Writers",
+		space_id: 26,
+		socio: 5,
+		stability: 2,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Poland",
+		region: "Eastern Europe",
+		box: {
+			x: 832,
+			y: 694,
+		},
+		adjacent: [ 25 ],
+		ascii_name: "Polish Writers",
+	},
+	{
+		name_unique: "Plzeň",
+		space_id: 27,
+		socio: 1,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 2,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 159,
+			y: 483,
+		},
+		adjacent: [ 12, 28, 29 ],
+		ascii_name: "Plzen",
+	},
+	{
+		name_unique: "České Budĕjovice",
+		space_id: 28,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 196,
+			y: 601,
+		},
+		adjacent: [ 27, 29 ],
+		ascii_name: "Ceske Budejovice",
+	},
+	{
+		name_unique: "Praha",
+		space_id: 29,
+		socio: 2,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 2,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 317,
+			y: 614,
+		},
+		adjacent: [ 27, 28, 30, 32 ],
+		ascii_name: "Praha",
+	},
+	{
+		name_unique: "Charles University",
+		space_id: 30,
+		socio: 6,
+		stability: 1,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 380,
+			y: 532,
+		},
+		adjacent: [ 29, 31 ],
+		ascii_name: "Charles University",
+	},
+	{
+		name_unique: "Czech Writers",
+		space_id: 31,
+		socio: 5,
+		stability: 2,
+		battleground: 1,
+		demInfl: 2,
+		comInfl: 0,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 444,
+			y: 607,
+		},
+		adjacent: [ 30 ],
+		ascii_name: "Czech Writers",
+	},
+	{
+		name_unique: "Brno",
+		space_id: 32,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 1,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 403,
+			y: 711,
+		},
+		adjacent: [ 29, 33, 34 ],
+		ascii_name: "Brno",
+	},
+	{
+		name_unique: "Ostrava",
+		space_id: 33,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 523,
+			y: 681,
+		},
+		adjacent: [ 22, 32, 34, 35 ],
+		ascii_name: "Ostrava",
+	},
+	{
+		name_unique: "Bratislava",
+		space_id: 34,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 417,
+			y: 797,
+		},
+		adjacent: [ 32, 33, 35 ],
+		ascii_name: "Bratislava",
+	},
+	{
+		name_unique: "Catholic Church, Czechoslovakia",
+		space_id: 35,
+		socio: 7,
+		stability: 5,
+		battleground: 0,
+		demInfl: 1,
+		comInfl: 0,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 538,
+			y: 794,
+		},
+		adjacent: [ 33, 34, 36 ],
+		ascii_name: "Catholic Church, Czechoslovakia",
+	},
+	{
+		name_unique: "Prešov",
+		space_id: 36,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 658,
+			y: 794,
+		},
+		adjacent: [ 35, 37 ],
+		ascii_name: "Presov",
+	},
+	{
+		name_unique: "Košice",
+		space_id: 37,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Czechoslovakia",
+		region: "Eastern Europe",
+		box: {
+			x: 777,
+			y: 815,
+		},
+		adjacent: [ 36, 42 ],
+		ascii_name: "Kosice",
+	},
+	{
+		name_unique: "Catholic Church, Hungary",
+		space_id: 38,
+		socio: 7,
+		stability: 5,
+		battleground: 0,
+		demInfl: 1,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 314,
+			y: 886,
+		},
+		adjacent: [ 39, 43 ],
+		ascii_name: "Catholic Church, Hungary",
+	},
+	{
+		name_unique: "Győr",
+		space_id: 39,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 434,
+			y: 887,
+		},
+		adjacent: [ 38, 40, 43, 44 ],
+		ascii_name: "Gyor",
+	},
+	{
+		name_unique: "Tatabánya",
+		space_id: 40,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 549,
+			y: 886,
+		},
+		adjacent: [ 39, 41, 45 ],
+		ascii_name: "Tatabanya",
+	},
+	{
+		name_unique: "Miskolc",
+		space_id: 41,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 664,
+			y: 901,
+		},
+		adjacent: [ 40, 42, 45 ],
+		ascii_name: "Miskolc",
+	},
+	{
+		name_unique: "Debrecen",
+		space_id: 42,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 781,
+			y: 938,
+		},
+		adjacent: [ 37, 41 ],
+		ascii_name: "Debrecen",
+	},
+	{
+		name_unique: "Szombathely",
+		space_id: 43,
+		socio: 1,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 1,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 316,
+			y: 963,
+		},
+		adjacent: [ 38, 39, 44 ],
+		ascii_name: "Szombathely",
+	},
+	{
+		name_unique: "Székesfehérvár",
+		space_id: 44,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 1,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 442,
+			y: 962,
+		},
+		adjacent: [ 39, 43, 45 ],
+		ascii_name: "Szekesfehervar",
+	},
+	{
+		name_unique: "Budapest",
+		space_id: 45,
+		socio: 2,
+		stability: 3,
+		battleground: 1,
+		demInfl: 1,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 630,
+			y: 983,
+		},
+		adjacent: [ 40, 41, 44, 47, 48 ],
+		ascii_name: "Budapest",
+	},
+	{
+		name_unique: "Hungarian Writers",
+		space_id: 46,
+		socio: 5,
+		stability: 2,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 348,
+			y: 1040,
+		},
+		adjacent: [ 47 ],
+		ascii_name: "Hungarian Writers",
+	},
+	{
+		name_unique: "Eötvös Loránd University",
+		space_id: 47,
+		socio: 6,
+		stability: 1,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 512,
+			y: 1034,
+		},
+		adjacent: [ 46, 45 ],
+		ascii_name: "Eotvos Lorand University",
+	},
+	{
+		name_unique: "Szeged",
+		space_id: 48,
+		socio: 3,
+		stability: 4,
+		battleground: 1,
+		demInfl: 1,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 632,
+			y: 1073,
+		},
+		adjacent: [ 45, 49, 50 ],
+		ascii_name: "Szeged",
+	},
+	{
+		name_unique: "Pécs",
+		space_id: 49,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Hungary",
+		region: "Eastern Europe",
+		box: {
+			x: 486,
+			y: 1105,
+		},
+		adjacent: [ 48 ],
+		ascii_name: "Pecs",
+	},
+	{
+		name_unique: "Timişoara",
+		space_id: 50,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 597,
+			y: 1204,
+		},
+		adjacent: [ 48, 51, 60 ],
+		ascii_name: "Timisoara",
+	},
+	{
+		name_unique: "Cluj-Napoca",
+		space_id: 51,
+		socio: 1,
+		stability: 4,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 2,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 756,
+			y: 1125,
+		},
+		adjacent: [ 50, 54, 58, 61 ],
+		ascii_name: "Cluj-Napoca",
+	},
+	{
+		name_unique: "Târgu Mureş",
+		space_id: 52,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 915,
+			y: 1136,
+		},
+		adjacent: [ 53, 56 ],
+		ascii_name: "Targu Mures",
+	},
+	{
+		name_unique: "Iaşi",
+		space_id: 53,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 1072,
+			y: 1097,
+		},
+		adjacent: [ 52, 57, 62 ],
+		ascii_name: "Iasi",
+	},
+	{
+		name_unique: "Babeş-Bolyai University",
+		space_id: 54,
+		socio: 6,
+		stability: 1,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 746,
+			y: 1203,
+		},
+		adjacent: [ 51, 55 ],
+		ascii_name: "Babes-Bolyai University",
+	},
+	{
+		name_unique: "Romanian Writers",
+		space_id: 55,
+		socio: 5,
+		stability: 2,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 739,
+			y: 1278,
+		},
+		adjacent: [ 54 ],
+		ascii_name: "Romanian Writers",
+	},
+	{
+		name_unique: "Harghita/Covasna",
+		space_id: 56,
+		socio: 8,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 928,
+			y: 1227,
+		},
+		adjacent: [ 52 ],
+		ascii_name: "Harghita/Covasna",
+	},
+	{
+		name_unique: "Braşov",
+		space_id: 57,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 1049,
+			y: 1225,
+		},
+		adjacent: [ 53, 59, 61 ],
+		ascii_name: "Brasov",
+	},
+	{
+		name_unique: "Orthodox Church, Romania",
+		space_id: 58,
+		socio: 7,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 855,
+			y: 1338,
+		},
+		adjacent: [ 51, 60 ],
+		ascii_name: "Orthodox Church, Romania",
+	},
+	{
+		name_unique: "Ploieşti",
+		space_id: 59,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 1061,
+			y: 1316,
+		},
+		adjacent: [ 57, 61, 62 ],
+		ascii_name: "Ploiesti",
+	},
+	{
+		name_unique: "Craiova",
+		space_id: 60,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 763,
+			y: 1411,
+		},
+		adjacent: [ 50, 58, 61 ],
+		ascii_name: "Craiova",
+	},
+	{
+		name_unique: "Bucureşti",
+		space_id: 61,
+		socio: 2,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 2,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 929,
+			y: 1445,
+		},
+		adjacent: [ 51, 57, 59, 60, 63 ],
+		ascii_name: "Bucuresti",
+	},
+	{
+		name_unique: "Galaţi",
+		space_id: 62,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 1104,
+			y: 1399,
+		},
+		adjacent: [ 53, 59, 63 ],
+		ascii_name: "Galati",
+	},
+	{
+		name_unique: "Constanţa",
+		space_id: 63,
+		socio: 4,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Romania",
+		region: "Balkans",
+		box: {
+			x: 1130,
+			y: 1517,
+		},
+		adjacent: [ 61, 62, 72 ],
+		ascii_name: "Constanta",
+	},
+	{
+		name_unique: "Pleven",
+		space_id: 64,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 764,
+			y: 1534,
+		},
+		adjacent: [ 68 ],
+		ascii_name: "Pleven",
+	},
+	{
+		name_unique: "Orthodox Church, Bulgaria",
+		space_id: 65,
+		socio: 7,
+		stability: 3,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 882,
+			y: 1540,
+		},
+		adjacent: [ 66, 68 ],
+		ascii_name: "Orthodox Church, Bulgaria",
+	},
+	{
+		name_unique: "Ruse",
+		space_id: 66,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 998,
+			y: 1540,
+		},
+		adjacent: [ 65, 69, 70, 71, 72 ],
+		ascii_name: "Ruse",
+	},
+	{
+		name_unique: "Sofia University",
+		space_id: 67,
+		socio: 6,
+		stability: 1,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 645,
+			y: 1650,
+		},
+		adjacent: [ 68, 73 ],
+		ascii_name: "Sofia University",
+	},
+	{
+		name_unique: "Sofia",
+		space_id: 68,
+		socio: 2,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 2,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 768,
+			y: 1653,
+		},
+		adjacent: [ 64, 65, 67, 69, 74 ],
+		ascii_name: "Sofia",
+	},
+	{
+		name_unique: "Stara Zagora",
+		space_id: 69,
+		socio: 1,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 1,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 886,
+			y: 1694,
+		},
+		adjacent: [ 66, 68, 71 ],
+		ascii_name: "Stara Zagora",
+	},
+	{
+		name_unique: "Razgrad",
+		space_id: 70,
+		socio: 8,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 954,
+			y: 1620,
+		},
+		adjacent: [ 66 ],
+		ascii_name: "Razgrad",
+	},
+	{
+		name_unique: "Burgas",
+		space_id: 71,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 1004,
+			y: 1695,
+		},
+		adjacent: [ 66, 69, 72 ],
+		ascii_name: "Burgas",
+	},
+	{
+		name_unique: "Varna",
+		space_id: 72,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 1086,
+			y: 1613,
+		},
+		adjacent: [ 63, 66, 71 ],
+		ascii_name: "Varna",
+	},
+	{
+		name_unique: "Bulgarian Writers",
+		space_id: 73,
+		socio: 5,
+		stability: 2,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 652,
+			y: 1726,
+		},
+		adjacent: [ 67 ],
+		ascii_name: "Bulgarian Writers",
+	},
+	{
+		name_unique: "Plovdiv",
+		space_id: 74,
+		socio: 4,
+		stability: 3,
+		battleground: 1,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 771,
+			y: 1739,
+		},
+		adjacent: [ 68, 75 ],
+		ascii_name: "Plovdiv",
+	},
+	{
+		name_unique: "Sliven",
+		space_id: 75,
+		socio: 3,
+		stability: 4,
+		battleground: 0,
+		demInfl: 0,
+		comInfl: 0,
+		country: "Bulgaria",
+		region: "Balkans",
+		box: {
+			x: 894,
+			y: 1768,
+		},
+		adjacent: [ 74 ],
+		ascii_name: "Sliven",
+	},
 ]
 
 const cards = [
@@ -249,5 +1449,4 @@ null,
 {number: 54, name: 'Petition', value: 3, socio: 0, url: 'ps10'},
 ]
 
-
 if (typeof module !== 'undefined') module.exports = { spaces, cards, power_cards }
diff --git a/gencode.js b/gencode.js
deleted file mode 100644
index 6e66a02..0000000
--- a/gencode.js
+++ /dev/null
@@ -1,107 +0,0 @@
-"use strict"
-
-let fs = require("fs")
-
-let pc = 0
-
-function tokenize(s) {
-	let list = []
-	let p = 0,
-		n = s.length
-	while (p < n) {
-		while (p < n && s[p] === " ")
-			++p
-		if (p < n) {
-			let m = p
-			while (p < n && s[p] !== " ") {
-				let q = s[p++]
-				switch (q) {
-					case "(":
-					case "[":
-					case "{":
-						for (let x = 1; p < n && x > 0; ++p) {
-							switch (s[p]) {
-								case "(":
-								case "[":
-								case "{":
-									++x
-									break
-								case ")":
-								case "]":
-								case "}":
-									--x
-									break
-							}
-						}
-						break
-					case '"':
-					case "'":
-					case "`":
-						while (p < n && s[p] !== q)
-							++p
-					break
-				}
-			}
-			list.push(s.substring(m, p))
-		}
-	}
-	return list
-}
-
-function emit(line) {
-	++pc
-	line[0] = "vm_" + line[0]
-	for (let i = 1; i < line.length; ++i) {
-		if (typeof line[i] === "string") {
-			if (line[i] === "all")
-				line[i] = 999
-			if (line[i][0] === "(" && !line[i].match(/\)=>/))
-				line[i] = "()=>" + line[i]
-			if (line[i][0] === "`")
-				line[i] = "()=>" + line[i]
-		}
-	}
-	console.log("\t[ " + line.join(", ") + " ],")
-}
-
-console.log("// #region GENERATED EVENT CODE")
-console.log("const CODE = []")
-let first = false
-
-for (let line of fs.readFileSync("events.txt", "utf-8").split("\n")) {
-	line = line.trim()
-	if (line.length === 0 || line[0] === "#")
-		continue
-	if (line === "EOF")
-		break
-	line = tokenize(line)
-	switch (line[0]) {
-	case "CARD":
-		if (first++) {
-			emit(["return"])
-			console.log("]")
-		}
-		console.log("")
-		console.log("CODE[" + line[1] + "] = [ // " + line.slice(3).join(" "))
-		break
-
-	case "log":
-	case "prompt":
-		emit([ line[0], line.slice(1).join(" ") ])
-		break
-
-	case "asm":
-	case "if":
-	case "while":
-		emit([ line[0], "()=>" + line.slice(1).join(" ") ])
-		break
-
-	default:
-		emit(line)
-		break
-	}
-}
-
-emit(["return"])
-console.log("]")
-console.log("// #endregion")
\ No newline at end of file
diff --git a/images/trash-can.svg b/images/trash-can.svg
new file mode 100644
index 0000000..7b8da5a
--- /dev/null
+++ b/images/trash-can.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 512 512"><path stroke-width="1.18459" d="M188.479 28.56v59.229H96.08v35.537h319.838V87.79h-92.398v-59.23ZM209.8 49.881H302.2v37.907H209.8zm-93.585 94.767L151.88 483.44h208.243l35.66-338.792zm73.845 15.85.758 10.637 18.954 265.348.761 10.632-21.27 1.52-.758-10.637-18.954-265.348-.761-10.633zm131.878 0 21.27 1.52-.763 10.635L323.493 438l-.758 10.638-21.27-1.521.761-10.634 18.954-265.348.758-10.637zm-76.6.734h21.322v286.67H245.34z"/></svg>
diff --git a/info/cards.html b/info/cards.html
new file mode 100644
index 0000000..479867d
--- /dev/null
+++ b/info/cards.html
@@ -0,0 +1,193 @@
+<!DOCTYPE html>
+<html>
+<meta name="viewport" content="width=600">
+<title>1989 - Cards</title>
+<style>
+body {
+	background-color: slategray;
+}
+.list {
+	margin: 20px;
+	display: flex;
+	flex-wrap: wrap;
+	justify-content: center;
+	gap: 20px;
+}
+img {
+	border-radius: 16px;
+	box-shadow: 0 0 0 1px #444, 1px 2px 4px #0004;
+}
+</style>
+<body>
+
+<div class="list">
+<img src="../cards100/event_back.webp">
+<img src="../cards100/event_1.webp">
+<img src="../cards100/event_2.webp">
+<img src="../cards100/event_3.webp">
+<img src="../cards100/event_4.webp">
+<img src="../cards100/event_5.webp">
+<img src="../cards100/event_6.webp">
+<img src="../cards100/event_7.webp">
+<img src="../cards100/event_8.webp">
+<img src="../cards100/event_9.webp">
+<img src="../cards100/event_10.webp">
+<img src="../cards100/event_11.webp">
+<img src="../cards100/event_12.webp">
+<img src="../cards100/event_13.webp">
+<img src="../cards100/event_14.webp">
+<img src="../cards100/event_15.webp">
+<img src="../cards100/event_16.webp">
+<img src="../cards100/event_17.webp">
+<img src="../cards100/event_18.webp">
+<img src="../cards100/event_19.webp">
+<img src="../cards100/event_20.webp">
+<img src="../cards100/event_21.webp">
+<img src="../cards100/event_22.webp">
+<img src="../cards100/event_23.webp">
+<img src="../cards100/event_24.webp">
+<img src="../cards100/event_25.webp">
+<img src="../cards100/event_26.webp">
+<img src="../cards100/event_27.webp">
+<img src="../cards100/event_28.webp">
+<img src="../cards100/event_29.webp">
+<img src="../cards100/event_30.webp">
+<img src="../cards100/event_31.webp">
+<img src="../cards100/event_32.webp">
+<img src="../cards100/event_33.webp">
+<img src="../cards100/event_34.webp">
+<img src="../cards100/event_35.webp">
+<img src="../cards100/event_36.webp">
+<img src="../cards100/event_37.webp">
+<img src="../cards100/event_38.webp">
+<img src="../cards100/event_39.webp">
+<img src="../cards100/event_40.webp">
+<img src="../cards100/event_41.webp">
+<img src="../cards100/event_42.webp">
+<img src="../cards100/event_43.webp">
+<img src="../cards100/event_44.webp">
+<img src="../cards100/event_45.webp">
+<img src="../cards100/event_46.webp">
+<img src="../cards100/event_47.webp">
+<img src="../cards100/event_48.webp">
+<img src="../cards100/event_49.webp">
+<img src="../cards100/event_50.webp">
+<img src="../cards100/event_51.webp">
+<img src="../cards100/event_52.webp">
+<img src="../cards100/event_53.webp">
+<img src="../cards100/event_54.webp">
+<img src="../cards100/event_55.webp">
+<img src="../cards100/event_56.webp">
+<img src="../cards100/event_57.webp">
+<img src="../cards100/event_58.webp">
+<img src="../cards100/event_59.webp">
+<img src="../cards100/event_60.webp">
+<img src="../cards100/event_61.webp">
+<img src="../cards100/event_62.webp">
+<img src="../cards100/event_63.webp">
+<img src="../cards100/event_64.webp">
+<img src="../cards100/event_65.webp">
+<img src="../cards100/event_66.webp">
+<img src="../cards100/event_67.webp">
+<img src="../cards100/event_68.webp">
+<img src="../cards100/event_69.webp">
+<img src="../cards100/event_70.webp">
+<img src="../cards100/event_71.webp">
+<img src="../cards100/event_72.webp">
+<img src="../cards100/event_73.webp">
+<img src="../cards100/event_74.webp">
+<img src="../cards100/event_75.webp">
+<img src="../cards100/event_76.webp">
+<img src="../cards100/event_77.webp">
+<img src="../cards100/event_78.webp">
+<img src="../cards100/event_79.webp">
+<img src="../cards100/event_80.webp">
+<img src="../cards100/event_81.webp">
+<img src="../cards100/event_82.webp">
+<img src="../cards100/event_83.webp">
+<img src="../cards100/event_84.webp">
+<img src="../cards100/event_85.webp">
+<img src="../cards100/event_86.webp">
+<img src="../cards100/event_87.webp">
+<img src="../cards100/event_88.webp">
+<img src="../cards100/event_89.webp">
+<img src="../cards100/event_90.webp">
+<img src="../cards100/event_91.webp">
+<img src="../cards100/event_92.webp">
+<img src="../cards100/event_93.webp">
+<img src="../cards100/event_94.webp">
+<img src="../cards100/event_95.webp">
+<img src="../cards100/event_96.webp">
+<img src="../cards100/event_97.webp">
+<img src="../cards100/event_98.webp">
+<img src="../cards100/event_99.webp">
+<img src="../cards100/event_100.webp">
+<img src="../cards100/event_101.webp">
+<img src="../cards100/event_102.webp">
+<img src="../cards100/event_103.webp">
+<img src="../cards100/event_104.webp">
+<img src="../cards100/event_105.webp">
+<img src="../cards100/event_106.webp">
+<img src="../cards100/event_107.webp">
+<img src="../cards100/event_108.webp">
+<img src="../cards100/event_109.webp">
+<img src="../cards100/event_110.webp">
+</div>
+
+<div class="list">
+<img src="../cards100/power_back.webp">
+<img src="../cards100/power_1.webp">
+<img src="../cards100/power_2.webp">
+<img src="../cards100/power_3.webp">
+<img src="../cards100/power_4.webp">
+<img src="../cards100/power_5.webp">
+<img src="../cards100/power_6.webp">
+<img src="../cards100/power_7.webp">
+<img src="../cards100/power_8.webp">
+<img src="../cards100/power_9.webp">
+<img src="../cards100/power_10.webp">
+<img src="../cards100/power_11.webp">
+<img src="../cards100/power_12.webp">
+<img src="../cards100/power_13.webp">
+<img src="../cards100/power_14.webp">
+<img src="../cards100/power_15.webp">
+<img src="../cards100/power_16.webp">
+<img src="../cards100/power_17.webp">
+<img src="../cards100/power_18.webp">
+<img src="../cards100/power_19.webp">
+<img src="../cards100/power_20.webp">
+<img src="../cards100/power_21.webp">
+<img src="../cards100/power_22.webp">
+<img src="../cards100/power_23.webp">
+<img src="../cards100/power_24.webp">
+<img src="../cards100/power_25.webp">
+<img src="../cards100/power_26.webp">
+<img src="../cards100/power_27.webp">
+<img src="../cards100/power_28.webp">
+<img src="../cards100/power_29.webp">
+<img src="../cards100/power_30.webp">
+<img src="../cards100/power_31.webp">
+<img src="../cards100/power_32.webp">
+<img src="../cards100/power_33.webp">
+<img src="../cards100/power_34.webp">
+<img src="../cards100/power_35.webp">
+<img src="../cards100/power_36.webp">
+<img src="../cards100/power_37.webp">
+<img src="../cards100/power_38.webp">
+<img src="../cards100/power_39.webp">
+<img src="../cards100/power_40.webp">
+<img src="../cards100/power_41.webp">
+<img src="../cards100/power_42.webp">
+<img src="../cards100/power_43.webp">
+<img src="../cards100/power_44.webp">
+<img src="../cards100/power_45.webp">
+<img src="../cards100/power_46.webp">
+<img src="../cards100/power_47.webp">
+<img src="../cards100/power_48.webp">
+<img src="../cards100/power_49.webp">
+<img src="../cards100/power_50.webp">
+<img src="../cards100/power_51.webp">
+<img src="../cards100/power_52.webp">
+</div>
+
+</body>
diff --git a/play.css b/play.css
index 2a65885..3b49c7b 100644
--- a/play.css
+++ b/play.css
@@ -1,46 +1,14 @@
-main { background-color: dimgray; }
-header { background-color: silver; }
-header.your_turn { background-color: orange; }
-#role_Democrat { background-color: hsl(200, 80%, 80%); }
-#role_Communist { background-color: hsl(0, 80%, 80%); }
-#turn_info { background-color: white; }
-/*.aside_events {
-	font-family: "Source Sans";
-	font-style: normal;
-	font-size: 16px;
-	line-height: 1.5;
-}*/
-#deck_data {
-	font-family: "Source Sans";
-	font-style: normal;
-	font-size: 16px;
-	line-height: 1.5;
-}
-#deck_stat {padding-left: 5px; padding-bottom: 5px;}
-
+main { background-color: slategray; }
 
-#log { background-color: whitesmoke; }
-#log .h1 { font-weight: bold; padding-top:2px; padding-bottom:2px; text-align: center; }
-#log .h2 { padding-top:2px; padding-bottom:2px; text-align: center; }
-#log .h3 { text-align: center; }
-#log .h4 { text-decoration: underline; }
-#log .h5 { text-decoration: underline; }
+body.Democrat header.your_turn { background-color: hsl(206, 85%, 75%); }
+body.Communist header.your_turn { background-color: hsl(355, 70%, 75%); }
 
-#log .h2 { background-color: hsl(0,0%,80%);}
-#log .h1 { background-color: hsl(0,0%,80%); }
-#log .h2.dem { background-color: hsl(200, 80%, 80%); }
-#log .h2.com { background-color: hsl(0, 80%, 80%); }
-#log .h3.democrat { background-color: hsl(210,30%,90%); }
-#log .h3.h2.communist { background-color: hsl(35,40%,90%); }
+#role_Democrat { background-color: hsl(206, 80%, 80%); }
+#role_Communist { background-color: hsl(355, 70%, 80%); }
 
-#log div { padding-left: 20px; text-indent: -12px; }
-#log div.i { padding-left: 32px; text-indent: -12px; }
-#log div.ii { padding-left: 44px; text-indent: -12px; }
+/* LOG */
 
-
-#log .card_name { font-style: italic; }
-#log .card_name:hover { text-decoration: underline; }
-#log .space_tip:hover { cursor: pointer; text-decoration: underline; }
+#log { font-variant-numeric: tabular-nums; }
 
 #log .die {
 	display: inline-block;
@@ -62,555 +30,212 @@ header.your_turn { background-color: orange; }
 #log .d5 { background-position: 80% 0; }
 #log .d6 { background-position: 100% 0; }
 
-.selected {
-	cursor: pointer;
-}
+#log .h1 { font-weight: bold; padding-top:2px; padding-bottom:2px; text-align: center; }
+#log .h2 { padding-top:2px; padding-bottom:2px; text-align: center; }
+#log .h3 { text-align: center; }
+#log .h4 { text-decoration: underline; }
+#log .h5 { text-decoration: underline; }
 
-#log {
-	font-variant-numeric: tabular-nums;
-}
+#log { background-color: floralwhite }
+#log .h1 { background-color: tan }
+#log .h2 { background-color: wheat }
+#log .h2.dem { background-color: hsl(206, 85%, 80%); }
+#log .h2.com { background-color: hsl(355, 70%, 80%); }
 
-/* TOOLBAR */
+#log div { padding-left: 20px; text-indent: -12px; }
+#log div.i { padding-left: 32px; text-indent: -12px; }
+#log div.ii { padding-left: 44px; text-indent: -12px; }
 
-#toolbar {
-	justify-content: space-evenly;
-}
+#log .card_name { font-style: italic; }
+#log .card_name:hover { text-decoration: underline; }
+#log .space_tip:hover { cursor: pointer; text-decoration: underline; }
 
-#prompt {
-	display: flex;
-	margin-left: auto;
-}
+/* MAP */
 
-#button {
-	display: flex;
-	margin-left: auto;
+#mapwrap {
+	width: 1650px;
+	height: 2550px;
 }
-/* MAP */
 
 #map {
-	margin: 0 auto ;
-	position: relative;
-	background-repeat: no-repeat;
-	background-size: cover;
-	width: 1275px; /* was 1275*/
-	height: 2000px;
-	/*border: solid black;*/
-	overflow: clip;
+	width: 1650px;
+	height: 2550px;
+	background-size: 1650px 2550px;
 	box-shadow: 0px 1px 10px #0008;
-	/*z-index: 3;*/
-}
-
-#map { background-image: url(1989_map.jpg) }
-
-/* Containers to appear on hover*/
-        #overlay {
-            position: relative;
-            top: 0;
-            left: 0;
-            width: 100%;
-            height: 100%;
-            /* background-color: rgba(255, 255, 255, 0.8); /* Semi-transparent overlay */
-           /* display: none;*/ 
-            justify-content: center;
-            align-items: center;
-            text-align: left;
-        }
-
-/* SPACES */
-
-.space-area {
-	position: absolute;
-	box-sizing: border-box;
-	border: transparent red 2px;
-}
-
-/* PANELS AND HANDS */
-
-.panel {
-	background-color: #555;
-	display: inline-block;
-}
-
-.panel_header {
-	background-color: #444;
-	color: hsl(40, 60%, 90%);
-	font-weight: bold;
-	text-align: center;
-	padding: 3px 1em;
-}
-
-.hide {
-	display: none;
-}
-
-#hand_panel, #events_panel, #played_card_panel, #table_panel, #samizdat_panel, #opp_hand_panel, #power_panel, #ceausescu_panel  {
-	min-width: 200px;
-	width: auto;
-	/*display: inline-block;*/
-	margin: 10px;
-	border-radius: 5px;
-}
-
-#events {
-	display: flex;
-}
-
-#discard_panel, #removed_panel {
-	min-width: 200px;
-	width: auto;
-	display: inline-block;
-	margin: 10px;
-	border-radius: 5px;
-}
-
-#discard_panel.hide, #removed_panel.hide {
-	display: none;
-}
-
-#hand_panel {
-	margin: 10px;
-	border-radius: 5px;
-}
-
-/* INFLUENCE MARKERS */
-
-.demInfl {
-	position: absolute;
-	box-sizing: border-box;
-	bottom: 1px;
-	left: 6px;
-	height: 35px;
-	width: 35px;
-	border-radius: 5px;
-}
-
-.demInfl.controlled {
-	background-image: url(images/US_blank.gif);
-	background-size: contain;
-}
-
-
-.demInfl.uncontrolled {
-	background-image: url(images/USd_blank.gif);
-	background-size: contain;
-}
-/*
-.demInfl:hover {
-	cursor: pointer;
-}*/
-
-.comInfl {
-	position: absolute;
-	box-sizing: border-box;
-	bottom: 1px;
-	right: 6px;
-	height: 35px;
-	width: 35px;
-}
-/*
-.comInfl:hover {
-	cursor: pointer;
-}*/
-
-.comInfl.controlled {
-	background-image: url(images/SV_blank.gif);
-	background-size: contain;
-}
-
-
-.comInfl.uncontrolled {
-	background-image: url(images/SVd_blank.gif);
-	background-size: contain;
-}
-
-.demInflValue {
-	position: absolute;
-	box-sizing: border-box;
-	font-family: 'Open Sans';
-	font-size: 20px;
-	font-weight: bold;
-	top: 10px;
-	left: 16px;
 }
 
-.demInflValue_10 {
-	position: absolute;
-	box-sizing: border-box;
-	font-family: 'Open Sans';
-	font-size: 20px;
-	font-weight: bold;
-	top: 10px;
-	left: 10px;
+#map { background-image: url("map75.jpg") }
+@media (min-resolution: 97dpi) {
+	#map { background-image: url("map150.jpg") }
 }
 
-.comInflValue {
-	position: absolute;
-	box-sizing: border-box;
-	font-family: 'Open Sans';
-	font-size: 20px;
-	font-weight: bold;
-	top: 12px;
-	left: 74px;
-}
+/* SPACES */
 
-.comInflValue_10 {
+.space {
 	position: absolute;
 	box-sizing: border-box;
-	font-family: 'Open Sans';
-	font-size: 20px;
-	font-weight: bold;
-	top: 12px;
-	left: 68px;
+	border: 4px solid transparent;
 }
 
-.comInflValue.controlled, .held {
-	color: whitesmoke;
-	text-shadow: 
-        1px 1px 0 #c2272d, /* Right bottom */
-        -1px 1px 0 #c2272d, /* Left bottom */
-        1px -1px 0 #c2272d, /* Right top */
-        -1px -1px 0 #c2272d; /* Left top */
+.space.action {
+	border-color: white;
+	box-shadow: 0 0 0 1px black, inset 0 0 0 1px black;
 }
 
-.comInflValue.uncontrolled {
-	color: #c2272d;
-	text-shadow: 
-	1px 1px 0 #ffffff, /* Right bottom */
-	-1px 1px 0 #ffffff, /* Left bottom */
-	1px -1px 0 #ffffff, /* Right top */
-	-1px -1px 0 #ffffff; /* Left top */
-}
+.space.East_Germany.action { border-color: white; }
+.space.Poland.action { border-color: yellow; }
+.space.Czechoslovakia.action { border-color: lightgreen; }
+.space.Hungary.action { border-color: gold; }
+.space.Romania.action { border-color: peachpuff; }
+.space.Bulgaria.action { border-color: palegreen; }
 
-.comInflValue_10.controlled, .held {
-	color: whitesmoke;
-	text-shadow: 
-        1px 1px 0 #c2272d, /* Right bottom */
-        -1px 1px 0 #c2272d, /* Left bottom */
-        1px -1px 0 #c2272d, /* Right top */
-        -1px -1px 0 #c2272d; /* Left top */
+.space.tip {
+	border-color: lime;
+	box-shadow: 0 0 0 1px black, inset 0 0 0 1px black;
 }
 
-.comInflValue_10.uncontrolled {
-	color: #c2272d;
-	text-shadow: 
-	1px 1px 0 #ffffff, /* Right bottom */
-	-1px 1px 0 #ffffff, /* Left bottom */
-	1px -1px 0 #ffffff, /* Right top */
-	-1px -1px 0 #ffffff; /* Left top */
-}
-
-
-/* GAME MARKERS */
-
-.t0 {left: 511px}
-.t1 {left: 511px}
-.t2 {left: 553px}
-.t3 {left: 595px}
-.t4 {left: 637px}
-.t5 {left: 679px}
-.t6 {left: 721px}
-.t7 {left: 763px}
-.t8 {left: 805px}
-.t9 {left: 847px}
-.t10 {left: 889px}
-
-#turn-tracker {
-	position:absolute;
-	top: 65px;
-	height: 35px;
-	width: 36px;
-	/*display: block;*/
-}
-
-.r0 {left: 554px}
-.r1 {left: 554px}
-.r2 {left: 596px}
-.r3 {left: 638px}
-.r4 {left: 680px}
-.r5 {left: 722px}
-.r6 {left: 764px}
-.r7 {left: 806px}
-.r8 {left: 848px}
+/* MARKERS */
 
-.dem-action-round-tracker { background-image: url(images/US_Action_Round.gif);}
-.com-action-round-tracker { background-image: url(images/SV_Action_Round.gif);}
+/* node tools/gencolors.js */
+.marker { background-color: #ffffff; border-color: #eeeeee #8a8a8a #8a8a8a #eeeeee; box-shadow: 0 0 0 1px #323232, 1px 2px 4px #0008; }
+.demInfl.ctl { background-color: #c4e2f6; border-color: #e6ffff #8ca8bb #8ca8bb #e6ffff; box-shadow: 0 0 0 1px #274050, 1px 2px 4px #0008; }
+.comInfl.ctl { background-color: #c1272d; border-color: #e74e4c #9c0009 #9c0009 #e74e4c; box-shadow: 0 0 0 1px #520000, 1px 2px 4px #0008; }
+#marker_action_round.com { background-color: #147fc0; border-color: #44a3e6 #005c9b #005c9b #44a3e6; box-shadow: 0 0 0 1px #001a54, 1px 2px 4px #0008; }
+#marker_action_round.dem { background-color: #c1272d; border-color: #e74e4c #9c0009 #9c0009 #e74e4c; box-shadow: 0 0 0 1px #520000, 1px 2px 4px #0008; }
+#marker_vp, #marker_turn { background-color: #fadb04; border-color: #ffff51 #c0a100 #c0a100 #ffff51; box-shadow: 0 0 0 1px #563600, 1px 2px 4px #0008; }
+#marker_com_tst { background-color: #f26649; border-color: #ff9273 #c2391c #c2391c #ff9273; box-shadow: 0 0 0 1px #640000, 1px 2px 4px #0008; }
+#marker_dem_tst { background-color: #c4e2f4; border-color: #e6ffff #8ca8ba #8ca8ba #e6ffff; box-shadow: 0 0 0 1px #27404f, 1px 2px 4px #0008; }
 
-#action-round-tracker {
+#event_reminder_list {
 	position: absolute;
-	top: 114px;
-	height: 30px;
-	width: 35px;
-	background-size: cover;
-}
-
-
-
-#stability-track {
-	position:absolute;
-	left: 1085px;
-	height: 35px;
-	width: 35px;
-}
-
-.s0 {top: 853px}
-.s1 {top: 896px}
-.s2 {top: 939px}
-.s3 {top: 982px}
-.s4 {top: 1025px}
-
-
-.tst0 {left: 0}
-.tst1 {left: 38px}
-.tst2 {left: 93px}
-.tst3 {left: 148px}
-.tst4 {left: 203px}
-.tst5 {left: 258px}
-.tst6 {left: 313px}
-.tst7 {left: 368px}
-.tst8 {left: 436px}
-
-#dem-TST {
-	position: absolute;
-	top: 1680px;
-	height: 35px;
-	width: 35px;
-}
-
-#com-TST {
-	position: absolute;
-	top: 1782px;
-	height: 35px;
-	width: 35px;
-}
-
-.vp0 {top: 1913px;
-left: 660px}
-
-.vp-20, .vp-18, .vp-16, .vp-14, .vp-12, .vp-10, .vp-8, .vp-6, .vp-4, .vp-2, .vp1, .vp3, .vp5, .vp7, .vp9, .vp11, .vp13, .vp15, .vp17, .vp19 {top: 1889px}
-.vp-19, .vp-17, .vp-15, .vp-13, .vp-11, .vp-9, .vp-7, .vp-5, .vp-3, .vp-1, .vp2, .vp4, .vp6, .vp8, .vp10, .vp12, .vp14, .vp16, .vp18, .vp20 {top: 1938px}
-
-.vp-21 {top: 1912px; left: 117px}
-.vp21 {top: 1912px; left: 1182px}
-
-.vp-20 {left: 165px}
-.vp-19 {left: 189px}
-.vp-18 {left: 214px}
-.vp-17 {left: 238px}
-.vp-16 {left: 263px}
-.vp-15 {left: 287px}
-.vp-14 {left: 312px}
-.vp-13 {left: 336px}
-.vp-12 {left: 361px}
-.vp-11 {left: 385px}
-.vp-10 {left: 410px}
-.vp-9 {left: 434px}
-.vp-8 {left: 459px}
-.vp-7 {left: 483px}
-.vp-6 {left: 508px}
-.vp-5 {left: 532px}
-.vp-4 {left: 557px}
-.vp-3 {left: 581px}
-.vp-2 {left: 606px}
-.vp-1 {left: 630px}
-.vp1 {left: 692px}
-.vp2 {left: 717px}
-.vp3 {left: 741px}
-.vp4 {left: 766px}
-.vp5 {left: 790px}
-.vp6 {left: 815px}
-.vp7 {left: 839px}
-.vp8 {left: 864px}
-.vp9 {left: 888px}
-.vp10 {left: 913px}
-.vp11 {left: 937px}
-.vp12 {left: 962px}
-.vp13 {left: 986px}
-.vp14 {left: 1011px}
-.vp15 {left: 1035px}
-.vp16 {left: 1060px}
-.vp17 {left: 1084px}
-.vp18 {left: 1109px}
-.vp19 {left: 1133px}
-.vp20 {left: 1158px}
-
-#vp	{
-	position: absolute;
-	height: 40px;
-	width: 40px;
+	display: flex;
+	flex-rap: wrap;
+	gap: 5px;
+	bottom: 165px;
+	right: 195px;
 }
 
 .marker {
 	position: absolute;
-	height: 30px;
-	width: 30px;
-}
-
-.revolution {background-image: url(images/US_blank.gif); background-size: contain}
-.held {background-image: url(images/SV_blank.gif); background-size: contain}
-
-.germany {top: 127px; 	left: 439px}
-.poland { top: 232px; 	left: 934px}
-.czech {top: 494px; 	left: 362px}
-.hungary {top: 1041px; 	left: 813px}
-.romania {top: 1063px; 	left: 1012px}
-.bulgaria {top: 1578px;	left: 720px} 
-
-.times_held {
-	position: absolute; 
-	font-family: 'Open Sans';
-	font-size: 20px;
-	font-weight: bold;
-	top: -18px; 
-	left: 8px
-}
-
-.outlined_text {
-    text-shadow: 
-        1px 1px 0 #ffffff, /* Right bottom */
-        -1px 1px 0 #ffffff, /* Left bottom */
-        1px -1px 0 #ffffff, /* Right top */
-        -1px -1px 0 #ffffff; /* Left top */
-}
-
-/* ============= EVENT MARKERS ========== */
-
-.event-marker {
-	display: none;
-	position: absolute;
-	height: 30px;
-	width:  30px;
-	transition: transform 0.3s ease;
-}
-
-.event-marker:hover {
-	cursor: pointer;
-	transform: scale(2);
-	z-index: 1;
-}
-
-.event-marker.aside {
-	border: solid black 1.5px;
-	margin: 3px;
-	position: relative;
-}
-
-#turn_info {
-	display: flex;
-    flex-direction: column; 
-    align-items: flex-start; 	
-}
-
-#turn_info > div {
-	display: flex;
-    margin-bottom: 8px; 
-	gap: 4px; 
-}
-
-#turn_info > img {
-	display: block;
-    
-}
-
-/*Solidarity legalised*/
-#event_2 {
-	top: 216px;
-	left: 612px;
-}
-
-/*Systematisation*/
-#event_69 {
-	height: 65px;
-	width: 65px;
-}
+	pointer-events: none;
+	width: 45px;
+	height: 45px;
+	border: 2px solid;
+	border-color: #eee #bbb #bbb #eee;
+	/* TODO: per marker border color */
+	box-shadow: 0 0 0 1px #444;
+	//border-radius: 8px;
+}
+
+.demInfl { background-color: #fff; }
+.comInfl { background-color: #fff; }
+.demInfl.ctl { background-color: #147fc0; }
+.comInfl.ctl { background-color: #c1272d; }
+
+.demInfl.v1 { background-image: url(markers75/di1.png) }
+.demInfl.v2 { background-image: url(markers75/di2.png) }
+.demInfl.v3 { background-image: url(markers75/di3.png) }
+.demInfl.v4 { background-image: url(markers75/di4.png) }
+.demInfl.v5 { background-image: url(markers75/di5.png) }
+.demInfl.v6 { background-image: url(markers75/di6.png) }
+.demInfl.v7 { background-image: url(markers75/di7.png) }
+.demInfl.v8 { background-image: url(markers75/di8.png) }
+.demInfl.ctl.v1 { background-image: url(markers75/dc1.png) }
+.demInfl.ctl.v2 { background-image: url(markers75/dc2.png) }
+.demInfl.ctl.v3 { background-image: url(markers75/dc3.png) }
+.demInfl.ctl.v4 { background-image: url(markers75/dc4.png) }
+.demInfl.ctl.v5 { background-image: url(markers75/dc5.png) }
+.demInfl.ctl.v6 { background-image: url(markers75/dc6.png) }
+.demInfl.ctl.v7 { background-image: url(markers75/dc7.png) }
+.demInfl.ctl.v8 { background-image: url(markers75/dc8.png) }
+
+.comInfl.v1 { background-image: url(markers75/ci1.png) }
+.comInfl.v2 { background-image: url(markers75/ci2.png) }
+.comInfl.v3 { background-image: url(markers75/ci3.png) }
+.comInfl.v4 { background-image: url(markers75/ci4.png) }
+.comInfl.v5 { background-image: url(markers75/ci5.png) }
+.comInfl.v6 { background-image: url(markers75/ci6.png) }
+.comInfl.v7 { background-image: url(markers75/ci7.png) }
+.comInfl.v8 { background-image: url(markers75/ci8.png) }
+.comInfl.ctl.v1 { background-image: url(markers75/cc1.png) }
+.comInfl.ctl.v2 { background-image: url(markers75/cc2.png) }
+.comInfl.ctl.v3 { background-image: url(markers75/cc3.png) }
+.comInfl.ctl.v4 { background-image: url(markers75/cc4.png) }
+.comInfl.ctl.v5 { background-image: url(markers75/cc5.png) }
+.comInfl.ctl.v6 { background-image: url(markers75/cc6.png) }
+.comInfl.ctl.v7 { background-image: url(markers75/cc7.png) }
+.comInfl.ctl.v8 { background-image: url(markers75/cc8.png) }
+
+#marker_turn { background-image: url(markers75/turn.png) }
+#marker_action_round.dem { background-image: url(markers75/action_round_blue.png) }
+#marker_action_round.com { background-image: url(markers75/action_round_blue.png) }
+#marker_stability_track { background-image: url(markers75/ussr_stability_track.png) }
+#marker_dem_tst { background-image: url(markers75/ts_blue.png) }
+#marker_com_tst { background-image: url(markers75/ts_red.png) }
+#marker_vp { background-image: url(markers75/vp.png) }
+
+/* EVENT MARKERS */
+
+.marker.aside {
+	position: static;
+}
+
+#event_2 { background-image: url(markers75/event_solidarity_legalized.png) }
+#event_9 { background-image: url(markers75/event_the_wall.png) }
+#event_15 { background-image: url(markers75/event_honecker.png) }
+#event_24 { background-image: url(markers75/event_st_nicholas.png) }
+#event_26 { background-image: url(markers75/event_helsinki.png) }
+#event_39 { background-image: url(markers75/event_eco_glasnost.png) }
+#event_48 { background-image: url(markers75/event_we_are_the_people.png) }
+#event_49 { background-image: url(markers75/event_foreign_currency.png) }
+#event_53 { background-image: url(markers75/event_li_peng.png) }
+#event_58 { background-image: url(markers75/event_austria_hungary.png) }
+#event_59 { background-image: url(markers75/event_grenz_truppen.png) }
+#event_65 { background-image: url(markers75/event_pres_visit.png) }
+#event_69 { background-image: url(markers75/event_systematization.png) }
+#event_70 { background-image: url(markers75/event_securitate.png) }
+#event_73 { background-image: url(markers75/event_laszlo_tokes.png) }
+#event_97 { background-image: url(markers75/event_tyrant.png) }
+#event_100 { background-image: url(markers75/event_stand_fast.png) }
+#event_101 { background-image: url(markers75/event_elena.png) }
+#event_104 { background-image: url(markers75/event_nye_party.png) }
+
+/* Solidarity legalized */
+#event_2 { top: 265px; left: 778px; }
+
+/* The Wall */
+#event_9 { top: 175px; left: 216px; }
+
+/* CARD PANELS */
 
-/*The Tyrant is Gone*/
-#event_97 {
-	height: 40px;
-	width: 40px;
+.panel {
+	background-color: #607080;
+	max-width: 1650px;
+	margin: 24px auto;
 }
 
-/*The Wall*/
-#event_9 {
-	top: 143px;
-	left: 170px;
+.panel_header {
+	background-color: #506070;
+	color: white;
+	font-weight: bold;
+	padding: 3px;
+	text-align: center;
 }
 
-
-/* =========== CARDS ================= */
-/*
-.playedCard {
+.panel_body {
+	margin-top: 3px;
 	display: flex;
-	margin: auto;
-	height: 300px;
-}*/
-
-.hand_card {
-	background-size: contain;
-	height: 250px;
-	margin: 10px;
-	border-radius: 5px; 
-	transition: transform .3s ease 0.5s;
-}
-/*
-.hand_card:hover {
-	cursor: pointer;
-}*/
-
-.zoom {
-	transform: scale(1.75)
-}
-
-.power_card {
-	background-size: contain;
-	height: 250px;
-	margin: 10px;
-	border-radius: 5px; 
-}
-
-.discard_card, .event_card {
-	background-size: contain;
-	height: 150px;
-	margin: 5px;
-	border-radius: 5px; 
-	transition: transform .3s ease;
-}
-
-.discard_card:hover, .event_card:hover {
-	/*cursor: pointer;*/
-	transform: scale(2);
+	flex-wrap: wrap;
+	padding: 16px;
+	gap: 16px;
+	min-height: 350px;
 }
 
-.selected.space-area {
-	background-color: #0002;
-	outline: solid white 2px;
-	/*box-shadow: 0 0 4px white; */ 
-	border-radius: 10px 10px 0 0;
-}
-
-.space-area.tip {
-	background-color: #ff08;
-	outline: solid white 2px;
-	box-shadow: 0 0 8px #ff08; 
-	border-radius: 10px 10px 0 0;
-}
-
-.selected.hand_card {
-	outline: solid silver 3px;
-	/*box-shadow: 0 0 4px white; */ 
-	border-radius: 18px;
-}
-
-
-.selected.power_card {
-	outline: solid silver 3px;
-	/*box-shadow: 0 0 4px white; */ 
-	border-radius: 18px;
+.panel:has(.panel_body:empty) {
+	display: none;
 }
 
-/* =============== OTHER ===============*/
-#space-characteristics {display: none}
-
-/* =============== CARD IMAGES =========*/
+/* CARD IMAGES */
 
 #tooltip {
 	position: fixed;
@@ -626,116 +251,179 @@ left: 660px}
 	width: 250px;
 	height: 350px;
 	border-radius: 16px;
-	box-shadow: 1px 2px 4px #0004;
-}
-
-.card_1 {background-image: url(cards/e1.gif)}
-.card_2 {background-image: url(cards/e2.gif)}
-.card_3 {background-image: url(cards/e3.gif)}
-.card_4 {background-image: url(cards/e4.gif)}
-.card_5 {background-image: url(cards/e5.gif)}
-.card_6 {background-image: url(cards/e6.gif)}
-.card_7 {background-image: url(cards/e7.gif)}
-.card_8 {background-image: url(cards/e8.gif)}
-.card_9 {background-image: url(cards/e9.gif)}
-.card_10 {background-image: url(cards/e10.gif)}
-.card_11 {background-image: url(cards/e11.gif)}
-.card_12 {background-image: url(cards/e12.gif)}
-.card_13 {background-image: url(cards/e13.gif)}
-.card_14 {background-image: url(cards/e14.gif)}
-.card_15 {background-image: url(cards/e15.gif)}
-.card_16 {background-image: url(cards/e16.gif)}
-.card_17 {background-image: url(cards/e17.gif)}
-.card_18 {background-image: url(cards/e18.gif)}
-.card_19 {background-image: url(cards/e19.gif)}
-.card_20 {background-image: url(cards/e20.gif)}
-.card_21 {background-image: url(cards/e21.gif)}
-.card_22 {background-image: url(cards/e22.gif)}
-.card_23 {background-image: url(cards/e23.gif)}
-.card_24 {background-image: url(cards/e24.gif)}
-.card_25 {background-image: url(cards/e25.gif)}
-.card_26 {background-image: url(cards/e26.gif)}
-.card_27 {background-image: url(cards/e27.gif)}
-.card_28 {background-image: url(cards/e28.gif)}
-.card_29 {background-image: url(cards/e29.gif)}
-.card_30 {background-image: url(cards/e30.gif)}
-.card_31 {background-image: url(cards/e31.gif)}
-.card_32 {background-image: url(cards/e32.gif)}
-.card_33 {background-image: url(cards/e33.gif)}
-.card_34 {background-image: url(cards/e34.gif)}
-.card_35 {background-image: url(cards/e35.gif)}
-.card_36 {background-image: url(cards/e36.gif)}
-.card_37 {background-image: url(cards/e37.gif)}
-.card_38 {background-image: url(cards/e38.gif)}
-.card_39 {background-image: url(cards/e39.gif)}
-.card_40 {background-image: url(cards/e40.gif)}
-.card_41 {background-image: url(cards/e41.gif)}
-.card_42 {background-image: url(cards/e42.gif)}
-.card_43 {background-image: url(cards/e43.gif)}
-.card_44 {background-image: url(cards/e44.gif)}
-.card_45 {background-image: url(cards/e45.gif)}
-.card_46 {background-image: url(cards/e46.gif)}
-.card_47 {background-image: url(cards/e47.gif)}
-.card_48 {background-image: url(cards/e48.gif)}
-.card_49 {background-image: url(cards/e49.gif)}
-.card_50 {background-image: url(cards/e50.gif)}
-.card_51 {background-image: url(cards/e51.gif)}
-.card_52 {background-image: url(cards/e52.gif)}
-.card_53 {background-image: url(cards/e53.gif)}
-.card_54 {background-image: url(cards/e54.gif)}
-.card_55 {background-image: url(cards/e55.gif)}
-.card_56 {background-image: url(cards/e56.gif)}
-.card_57 {background-image: url(cards/e57.gif)}
-.card_58 {background-image: url(cards/e58.gif)}
-.card_59 {background-image: url(cards/e59.gif)}
-.card_60 {background-image: url(cards/e60.gif)}
-.card_61 {background-image: url(cards/e61.gif)}
-.card_62 {background-image: url(cards/e62.gif)}
-.card_63 {background-image: url(cards/e63.gif)}
-.card_64 {background-image: url(cards/e64.gif)}
-.card_65 {background-image: url(cards/e65.gif)}
-.card_66 {background-image: url(cards/e66.gif)}
-.card_67 {background-image: url(cards/e67.gif)}
-.card_68 {background-image: url(cards/e68.gif)}
-.card_69 {background-image: url(cards/e69.gif)}
-.card_70 {background-image: url(cards/e70.gif)}
-.card_71 {background-image: url(cards/e71.gif)}
-.card_72 {background-image: url(cards/e72.gif)}
-.card_73 {background-image: url(cards/e73.gif)}
-.card_74 {background-image: url(cards/e74.gif)}
-.card_75 {background-image: url(cards/e75.gif)}
-.card_76 {background-image: url(cards/e76.gif)}
-.card_77 {background-image: url(cards/e77.gif)}
-.card_78 {background-image: url(cards/e78.gif)}
-.card_79 {background-image: url(cards/e79.gif)}
-.card_80 {background-image: url(cards/e80.gif)}
-.card_81 {background-image: url(cards/e81.gif)}
-.card_82 {background-image: url(cards/e82.gif)}
-.card_83 {background-image: url(cards/e83.gif)}
-.card_84 {background-image: url(cards/e84.gif)}
-.card_85 {background-image: url(cards/e85.gif)}
-.card_86 {background-image: url(cards/e86.gif)}
-.card_87 {background-image: url(cards/e87.gif)}
-.card_88 {background-image: url(cards/e88.gif)}
-.card_89 {background-image: url(cards/e89.gif)}
-.card_90 {background-image: url(cards/e90.gif)}
-.card_91 {background-image: url(cards/e91.gif)}
-.card_92 {background-image: url(cards/e92.gif)}
-.card_93 {background-image: url(cards/e93.gif)}
-.card_94 {background-image: url(cards/e94.gif)}
-.card_95 {background-image: url(cards/e95.gif)}
-.card_96 {background-image: url(cards/e96.gif)}
-.card_97 {background-image: url(cards/e97.gif)}
-.card_98 {background-image: url(cards/e98.gif)}
-.card_99 {background-image: url(cards/e99.gif)}
-.card_100 {background-image: url(cards/e100.gif)}
-.card_101 {background-image: url(cards/e101.gif)}
-.card_102 {background-image: url(cards/e102.gif)}
-.card_103 {background-image: url(cards/e103.gif)}
-.card_104 {background-image: url(cards/e104.gif)}
-.card_105 {background-image: url(cards/e105.gif)}
-.card_106 {background-image: url(cards/e106.gif)}
-.card_107 {background-image: url(cards/e107.gif)}
-.card_108 {background-image: url(cards/e108.gif)}
-.card_109 {background-image: url(cards/e109.gif)}
-.card_110 {background-image: url(cards/e110.gif)}
+	box-shadow: 0 0 0 1px #444, 1px 2px 4px #0004;
+}
+
+.card.action {
+	box-shadow: 0 0 0 1px #444, 0 0 0 4px white;
+}
+
+.card.selected {
+	box-shadow: 0 0 0 1px #444, 0 0 0 4px yellow;
+}
+
+.card.event_0 { background-image: url(cards100/event_back.webp) }
+.card.event_1 { background-image: url(cards100/event_1.webp) }
+.card.event_2 { background-image: url(cards100/event_2.webp) }
+.card.event_3 { background-image: url(cards100/event_3.webp) }
+.card.event_4 { background-image: url(cards100/event_4.webp) }
+.card.event_5 { background-image: url(cards100/event_5.webp) }
+.card.event_6 { background-image: url(cards100/event_6.webp) }
+.card.event_7 { background-image: url(cards100/event_7.webp) }
+.card.event_8 { background-image: url(cards100/event_8.webp) }
+.card.event_9 { background-image: url(cards100/event_9.webp) }
+.card.event_10 { background-image: url(cards100/event_10.webp) }
+.card.event_11 { background-image: url(cards100/event_11.webp) }
+.card.event_12 { background-image: url(cards100/event_12.webp) }
+.card.event_13 { background-image: url(cards100/event_13.webp) }
+.card.event_14 { background-image: url(cards100/event_14.webp) }
+.card.event_15 { background-image: url(cards100/event_15.webp) }
+.card.event_16 { background-image: url(cards100/event_16.webp) }
+.card.event_17 { background-image: url(cards100/event_17.webp) }
+.card.event_18 { background-image: url(cards100/event_18.webp) }
+.card.event_19 { background-image: url(cards100/event_19.webp) }
+.card.event_20 { background-image: url(cards100/event_20.webp) }
+.card.event_21 { background-image: url(cards100/event_21.webp) }
+.card.event_22 { background-image: url(cards100/event_22.webp) }
+.card.event_23 { background-image: url(cards100/event_23.webp) }
+.card.event_24 { background-image: url(cards100/event_24.webp) }
+.card.event_25 { background-image: url(cards100/event_25.webp) }
+.card.event_26 { background-image: url(cards100/event_26.webp) }
+.card.event_27 { background-image: url(cards100/event_27.webp) }
+.card.event_28 { background-image: url(cards100/event_28.webp) }
+.card.event_29 { background-image: url(cards100/event_29.webp) }
+.card.event_30 { background-image: url(cards100/event_30.webp) }
+.card.event_31 { background-image: url(cards100/event_31.webp) }
+.card.event_32 { background-image: url(cards100/event_32.webp) }
+.card.event_33 { background-image: url(cards100/event_33.webp) }
+.card.event_34 { background-image: url(cards100/event_34.webp) }
+.card.event_35 { background-image: url(cards100/event_35.webp) }
+.card.event_36 { background-image: url(cards100/event_36.webp) }
+.card.event_37 { background-image: url(cards100/event_37.webp) }
+.card.event_38 { background-image: url(cards100/event_38.webp) }
+.card.event_39 { background-image: url(cards100/event_39.webp) }
+.card.event_40 { background-image: url(cards100/event_40.webp) }
+.card.event_41 { background-image: url(cards100/event_41.webp) }
+.card.event_42 { background-image: url(cards100/event_42.webp) }
+.card.event_43 { background-image: url(cards100/event_43.webp) }
+.card.event_44 { background-image: url(cards100/event_44.webp) }
+.card.event_45 { background-image: url(cards100/event_45.webp) }
+.card.event_46 { background-image: url(cards100/event_46.webp) }
+.card.event_47 { background-image: url(cards100/event_47.webp) }
+.card.event_48 { background-image: url(cards100/event_48.webp) }
+.card.event_49 { background-image: url(cards100/event_49.webp) }
+.card.event_50 { background-image: url(cards100/event_50.webp) }
+.card.event_51 { background-image: url(cards100/event_51.webp) }
+.card.event_52 { background-image: url(cards100/event_52.webp) }
+.card.event_53 { background-image: url(cards100/event_53.webp) }
+.card.event_54 { background-image: url(cards100/event_54.webp) }
+.card.event_55 { background-image: url(cards100/event_55.webp) }
+.card.event_56 { background-image: url(cards100/event_56.webp) }
+.card.event_57 { background-image: url(cards100/event_57.webp) }
+.card.event_58 { background-image: url(cards100/event_58.webp) }
+.card.event_59 { background-image: url(cards100/event_59.webp) }
+.card.event_60 { background-image: url(cards100/event_60.webp) }
+.card.event_61 { background-image: url(cards100/event_61.webp) }
+.card.event_62 { background-image: url(cards100/event_62.webp) }
+.card.event_63 { background-image: url(cards100/event_63.webp) }
+.card.event_64 { background-image: url(cards100/event_64.webp) }
+.card.event_65 { background-image: url(cards100/event_65.webp) }
+.card.event_66 { background-image: url(cards100/event_66.webp) }
+.card.event_67 { background-image: url(cards100/event_67.webp) }
+.card.event_68 { background-image: url(cards100/event_68.webp) }
+.card.event_69 { background-image: url(cards100/event_69.webp) }
+.card.event_70 { background-image: url(cards100/event_70.webp) }
+.card.event_71 { background-image: url(cards100/event_71.webp) }
+.card.event_72 { background-image: url(cards100/event_72.webp) }
+.card.event_73 { background-image: url(cards100/event_73.webp) }
+.card.event_74 { background-image: url(cards100/event_74.webp) }
+.card.event_75 { background-image: url(cards100/event_75.webp) }
+.card.event_76 { background-image: url(cards100/event_76.webp) }
+.card.event_77 { background-image: url(cards100/event_77.webp) }
+.card.event_78 { background-image: url(cards100/event_78.webp) }
+.card.event_79 { background-image: url(cards100/event_79.webp) }
+.card.event_80 { background-image: url(cards100/event_80.webp) }
+.card.event_81 { background-image: url(cards100/event_81.webp) }
+.card.event_82 { background-image: url(cards100/event_82.webp) }
+.card.event_83 { background-image: url(cards100/event_83.webp) }
+.card.event_84 { background-image: url(cards100/event_84.webp) }
+.card.event_85 { background-image: url(cards100/event_85.webp) }
+.card.event_86 { background-image: url(cards100/event_86.webp) }
+.card.event_87 { background-image: url(cards100/event_87.webp) }
+.card.event_88 { background-image: url(cards100/event_88.webp) }
+.card.event_89 { background-image: url(cards100/event_89.webp) }
+.card.event_90 { background-image: url(cards100/event_90.webp) }
+.card.event_91 { background-image: url(cards100/event_91.webp) }
+.card.event_92 { background-image: url(cards100/event_92.webp) }
+.card.event_93 { background-image: url(cards100/event_93.webp) }
+.card.event_94 { background-image: url(cards100/event_94.webp) }
+.card.event_95 { background-image: url(cards100/event_95.webp) }
+.card.event_96 { background-image: url(cards100/event_96.webp) }
+.card.event_97 { background-image: url(cards100/event_97.webp) }
+.card.event_98 { background-image: url(cards100/event_98.webp) }
+.card.event_99 { background-image: url(cards100/event_99.webp) }
+.card.event_100 { background-image: url(cards100/event_100.webp) }
+.card.event_101 { background-image: url(cards100/event_101.webp) }
+.card.event_102 { background-image: url(cards100/event_102.webp) }
+.card.event_103 { background-image: url(cards100/event_103.webp) }
+.card.event_104 { background-image: url(cards100/event_104.webp) }
+.card.event_105 { background-image: url(cards100/event_105.webp) }
+.card.event_106 { background-image: url(cards100/event_106.webp) }
+.card.event_107 { background-image: url(cards100/event_107.webp) }
+.card.event_108 { background-image: url(cards100/event_108.webp) }
+.card.event_109 { background-image: url(cards100/event_109.webp) }
+.card.event_110 { background-image: url(cards100/event_110.webp) }
+
+.card.power_0 { background-image: url(cards100/power_back.webp) }
+.card.power_1 { background-image: url(cards100/power_1.webp) }
+.card.power_2 { background-image: url(cards100/power_2.webp) }
+.card.power_3 { background-image: url(cards100/power_3.webp) }
+.card.power_4 { background-image: url(cards100/power_4.webp) }
+.card.power_5 { background-image: url(cards100/power_5.webp) }
+.card.power_6 { background-image: url(cards100/power_6.webp) }
+.card.power_7 { background-image: url(cards100/power_7.webp) }
+.card.power_8 { background-image: url(cards100/power_8.webp) }
+.card.power_9 { background-image: url(cards100/power_9.webp) }
+.card.power_10 { background-image: url(cards100/power_10.webp) }
+.card.power_11 { background-image: url(cards100/power_11.webp) }
+.card.power_12 { background-image: url(cards100/power_12.webp) }
+.card.power_13 { background-image: url(cards100/power_13.webp) }
+.card.power_14 { background-image: url(cards100/power_14.webp) }
+.card.power_15 { background-image: url(cards100/power_15.webp) }
+.card.power_16 { background-image: url(cards100/power_16.webp) }
+.card.power_17 { background-image: url(cards100/power_17.webp) }
+.card.power_18 { background-image: url(cards100/power_18.webp) }
+.card.power_19 { background-image: url(cards100/power_19.webp) }
+.card.power_20 { background-image: url(cards100/power_20.webp) }
+.card.power_21 { background-image: url(cards100/power_21.webp) }
+.card.power_22 { background-image: url(cards100/power_22.webp) }
+.card.power_23 { background-image: url(cards100/power_23.webp) }
+.card.power_24 { background-image: url(cards100/power_24.webp) }
+.card.power_25 { background-image: url(cards100/power_25.webp) }
+.card.power_26 { background-image: url(cards100/power_26.webp) }
+.card.power_27 { background-image: url(cards100/power_27.webp) }
+.card.power_28 { background-image: url(cards100/power_28.webp) }
+.card.power_29 { background-image: url(cards100/power_29.webp) }
+.card.power_30 { background-image: url(cards100/power_30.webp) }
+.card.power_31 { background-image: url(cards100/power_31.webp) }
+.card.power_32 { background-image: url(cards100/power_32.webp) }
+.card.power_33 { background-image: url(cards100/power_33.webp) }
+.card.power_34 { background-image: url(cards100/power_34.webp) }
+.card.power_35 { background-image: url(cards100/power_35.webp) }
+.card.power_36 { background-image: url(cards100/power_36.webp) }
+.card.power_37 { background-image: url(cards100/power_37.webp) }
+.card.power_38 { background-image: url(cards100/power_38.webp) }
+.card.power_39 { background-image: url(cards100/power_39.webp) }
+.card.power_40 { background-image: url(cards100/power_40.webp) }
+.card.power_41 { background-image: url(cards100/power_41.webp) }
+.card.power_42 { background-image: url(cards100/power_42.webp) }
+.card.power_43 { background-image: url(cards100/power_43.webp) }
+.card.power_44 { background-image: url(cards100/power_44.webp) }
+.card.power_45 { background-image: url(cards100/power_45.webp) }
+.card.power_46 { background-image: url(cards100/power_46.webp) }
+.card.power_47 { background-image: url(cards100/power_47.webp) }
+.card.power_48 { background-image: url(cards100/power_48.webp) }
+.card.power_49 { background-image: url(cards100/power_49.webp) }
+.card.power_50 { background-image: url(cards100/power_50.webp) }
+.card.power_51 { background-image: url(cards100/power_51.webp) }
+.card.power_52 { background-image: url(cards100/power_52.webp) }
diff --git a/play.html b/play.html
index e09e214..eb2f495 100644
--- a/play.html
+++ b/play.html
@@ -7,204 +7,140 @@
 <meta charset="utf-8">
 <title>1989</title>
 <link rel="icon" href="favicon.png">
-<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap" rel="stylesheet">
 <link rel="stylesheet" href="/fonts/fonts.css">
 <link rel="stylesheet" href="/common/client.css">
 <link rel="stylesheet" href="play.css">
 <script defer src="/common/client.js"></script>
 <script defer src="data.js"></script>
-<!-- <script defer src="rules.js"></script> -->
 <script defer src="play.js"></script>
-
 </head>
 
 <body>
+
 <div id="tooltip" class="card hide"></div>
 
 <header>
 	<div id="toolbar">
 		<details>
-			<summary><img src="images/cog.svg" width="50" height="50"></summary> <!-- Not sure why this is so big! -->
+			<summary><img src="/images/cog.svg"></summary>
+			<menu>
+				<li><a target="_blank" href="/1989-dawn-of-freedom/info/rules.html">Rules of Play</a>
+				<li><a target="_blank" href="/1989-dawn-of-freedom/info/background.html">Background Book</a>
+				<li><a target="_blank" href="/1989-dawn-of-freedom/info/reference.html">Reference Sheets</a>
+				<li class="separator">
+				<li><a target="_blank" href="/1989-dawn-of-freedom/info/cards.html">Card Gallery</a>
+			</menu>
+		</details>
+		<details>
+			<summary><img src="images/trash-can.svg"></summary>
 			<menu>
-				<li>Rules of Play
-				<li>Background Book
-				<li>Reference Sheets
-				
+				<li id="show_removed_menu" onclick="toggle_removed()">Show removed events
+				<li id="show_discard_menu" onclick="toggle_discard()">Show discard
 			</menu>
 		</details>
-		<button onclick="toggle_pieces()"><img src="images/earth-africa-europe.svg"></button>
-		<button onclick="toggle_discard()"><img src="images/bin.png"></button>
-		<button onclick="toggle_removed()"><img src="images/remove.png"></button>
 	</div>
 </header>
 
 <aside>
-	<div id="roles">
-		<div class="role" id="role_Democrat">
-			<div class="role_name">Democrat</div>
-			<div class="role_stat" id="role_stat_dem">0 cards in hand</div>
-			<div class="role_user">-</div>
-		</div>
-		<div class="role" id="role_Communist">
-			<div class="role_name">Communist</div>
-			<div class="role_stat" id="role_stat_com">0 cards in hand</div>
-			<div class="role_user">-</div>
-		</div>	
-		<div class="role" id="deck_data">
-			<div class="deck_name" id="deck_stat">Strategy deck:</div>
-			<div class="role_stat" id="deck_length">0 cards</div>
-		</div>
-	</div>
+	<div id="roles"></div>
+	<div id="turn_info"></div>
 	<div id="log"></div>
 </aside>
 
-<main data-min-zoom="0.5" data-max-zoom = "2.0">
-
-<!-- MAP, EVENTS -->
-<section id="sec_map">
-
-<div class="map" id="map">
-	<div id="pieces">
-		<div id="overlay">
-			<h2 id="space-characteristics"></h2>
-			<img id="turn-tracker" class="hide" src="images/Turn.gif">
-			<div class="us-action-round-tracker hide" id="action-round-tracker"></div>
-			<img id="stability-track" class="hide" src="images/SV_Stability.gif">
-			<img id="dem-TST" class="hide" src="images/US_Tiananmen_Square.gif">
-			<img id="com-TST" class="hide" src="images/SV_Tiananmen_Square.gif">
-			<img id="vp" class="hide" src="images/VP.gif">
-			<div class="germany marker" id="East_Germany">
-				<p class="times_held hide" id="East_Germany_times_held">1</p></div>
-			<div class="poland marker" id="Poland">
-				<p class="times_held hide" id="Poland_times_held">1</p></div>
-			<div class="czech marker" id="Czechoslovakia">
-				<p class="times_held hide" id="Czechoslovakia_times_held">1</p></div>
-			<div class="hungary marker" id="Hungary">
-				<p class="times_held hide" id="Hungary_times_held">1</p></div>
-			<div class="romania marker" id="Romania">
-				<p class="times_held hide" id="Romania_times_held">1</p></div>
-			<div class="bulgaria marker" id="Bulgaria">
-				<p class="times_held hide" id="Bulgaria_times_held">1</p></div>
+<main>
+
+<div id="mapwrap">
+<div id="map">
+	<div id="spaces"></div>
+	<div id="markers">
+		<div id="marker_turn" class="marker"></div>
+		<div id="marker_action_round" class="marker"></div>
+		<div id="marker_stability_track" class="marker"></div>
+		<div id="marker_dem_tst" class="marker"></div>
+		<div id="marker_com_tst" class="marker"></div>
+		<div id="marker_vp" class="marker"></div>
+
+		<!-- TODO
+		<div class="germany marker" id="East_Germany">
+			<p class="times_held hide" id="East_Germany_times_held">1</p></div>
+		<div class="poland marker" id="Poland">
+			<p class="times_held hide" id="Poland_times_held">1</p></div>
+		<div class="czech marker" id="Czechoslovakia">
+			<p class="times_held hide" id="Czechoslovakia_times_held">1</p></div>
+		<div class="hungary marker" id="Hungary">
+			<p class="times_held hide" id="Hungary_times_held">1</p></div>
+		<div class="romania marker" id="Romania">
+			<p class="times_held hide" id="Romania_times_held">1</p></div>
+		<div class="bulgaria marker" id="Bulgaria">
+			<p class="times_held hide" id="Bulgaria_times_held">1</p></div>
+		-->
 
 		<!-- PERMANENT EVENT MARKERS ON THE BOARD -->
-
-			
-			<img id="event_2" class="event-marker" src = "images/Event_Marker_Solidarity_Leg.gif">
-			<img id="event_69" class="event-marker" src="images/Event_Marker_Systematizatio.gif">
-			<img id="event_97" class="event-marker" src="images/Event_Marker_The_Tyrant_Is_.gif">
-			<img id="event_9" class="event-marker" src="images/Event_Marker_The_Wall.gif">
-
-		</div>
-		<div id="counters"></div>
+		<div id="event_reminder_list"></div>
 	</div>
 </div>
-</section>
-
-
-<!-- EVENTS IN PLAY -->
-<section id = "sec_events">
-	<div id="events_panel" class="panel hide">
-		<div id="events_header" class="panel_header">Event Markers</div>
-		<div id="events" class="panel_body">
-			<img id="event_15" class="event-marker aside" src="images/Event_Marker_Honecker.gif">
-			<img id="event_24" class="event-marker aside" src="images/Event_Marker_St_Nicholas.gif">
-			<img id="event_26" class="event-marker aside" src="images/Event_Marker_Helsinki.gif">
-			<img id="event_39" class="event-marker aside" src = "images/Event_Marker_Eco_Glasnost.gif">
-			<img id="event_48" class="event-marker aside" src="images/Event_Marker_We_are_the_Peo.gif">
-			<img id="event_49" class="event-marker aside" src="images/Event_Marker_Foreign_Curren.gif">
-			<img id="event_53" class="event-marker aside" src="images/Event_Marker_Li_Peng_.gif">
-			<img id="event_58" class="event-marker aside" src="images/Event_Marker_Austria_Hungar.gif">
-			<img id="event_59" class="event-marker aside" src="images/Event_Marker_Grenz_Truppen.gif">
-			<img id="event_65" class="event-marker aside" src="images/Event_Marker_Pres_Visit.gif">
-			<img id="event_70" class="event-marker aside" src="images/Event_Marker_Securitate.gif">
-			<img id="event_73" class="event-marker aside" src="images/Event_Marker_Laszlo.gif">
-			<img id="event_100" class="event-marker aside" src="images/Event_Marker_Stand_Fast.gif">
-			<img id="event_101" class="event-marker aside" src="images/Event_Marker_Elena.gif">
-			<img id="event_104" class="event-marker aside" src="images/Event_Marker_NYE_Party.gif">
-		</div>
-	</div>
-</section>
+</div>
 
 <!-- EVENTS ON THE TABLE -->
-<section id = "sec_table_cards">
-	<div id="table_panel" class="panel hide">
-		<div id="table_header" class="panel_header">Cards on the Table</div>
-		<div id="table_cards" class="panel_body"></div>
-	</div>
-</section>
+<div id="table_panel" class="panel">
+	<div id="table_header" class="panel_header">Cards on the Table</div>
+	<div id="table_cards" class="panel_body"></div>
+</div>
 
 <!-- PLAYED CARD -->
-<section id="sec_played_card">
-<div id="played_card_panel" class="panel hide">
-<div id="played_card_header" class="panel_header">Played Card</div>
-<div id="played_card" class="panel_body"></div>
+<div id="played_card_panel" class="panel">
+	<div id="played_card_header" class="panel_header">Played Card</div>
+	<div id="played_card" class="panel_body"></div>
 </div>
 
-</section>
-
-<!-- DISCARD -->
-<section id = "sec_discard">
-	<div id="discard_panel" class="panel">
-		<div id="discard_header" class="panel_header">Discard</div>
-		<div id="discard" class="panel_body"></div>
-	</div>
-</section>
-
-<!-- PERMANENTLY REMOVED -->
-<section id = "sec_removed">
-	<div id="removed_panel" class="panel hide">
-		<div id="removed_header" class="panel_header">Permanently Removed Events</div>
-		<div id="removed" class="panel_body"></div>
-	</div>
-</section>
+<!-- HAND -->
+<div id="hand_panel" class="panel">
+	<div id="hand_header" class="panel_header">Hand</div>
+	<div id="hand" class="panel_body"></div>
+</div>
 
 <!-- POWERSTRUGGLE -->
-<section id = "sec_power">
-	<div id="ceausescu_panel" class="panel hide">
-		<div id="ceausescu_header" class="panel_header">Ceausescu Cards</div>
-		<div id="ceausescu_hand" class="panel_body"></div>
-	</div>
-	<div id="power_panel" class="panel hide">
-		<div id="power_header" class="panel_header">Power Struggle Hand</div>
-		<div id="power_hand" class="panel_body"></div>
-	</div>
-</section>
-
-
+<div id="ceausescu_panel" class="panel">
+	<div id="ceausescu_header" class="panel_header">Ceausescu Cards</div>
+	<div id="ceausescu_hand" class="panel_body"></div>
+</div>
+<div id="power_panel" class="panel">
+	<div id="power_header" class="panel_header">Power Struggle Hand</div>
+	<div id="power_hand" class="panel_body"></div>
+</div>
 
 <!-- OPPONENT HAND -->
-<section id="sec_opp_hand">
+<div id="opp_hand_panel" class="panel">
+	<div id="opp_hand_header" class="panel_header">Opponent Hand</div>
+	<div id="opp_hand" class="panel_body"></div>
+</div>
 
-	<div id="opp_hand_panel" class="panel hide">
-		<div id="opp_hand_header" class="panel_header">Opponent Hand</div>
-		<div id="opp_hand" class="panel_body"></div>
-	</div>
-	
-</section>
+<div id="opp_power_hand_panel" class="panel">
+	<div id="opp_power_hand_header" class="panel_header">Opponent Power Struggle Hand</div>
+	<div id="opp_power_hand" class="panel_body"></div>
+</div>
 
 <!-- SAMIZDAT CARD -->
-<section id = "sec_samizdat">
-	<div id="samizdat_panel" class="panel">
-		<div id="samizdat_header" class="panel_header">Set aside card</div>
-		<div id="samizdat_card" class="panel_body"></div>
-	</div>
-</section>
-
+<div id="samizdat_panel" class="panel">
+	<div id="samizdat_header" class="panel_header">Samizdat Card</div>
+	<div id="samizdat_card" class="panel_body"></div>
+</div>
 
-<!-- HAND -->
-<section id="sec_hand">
+<!-- PERMANENTLY REMOVED -->
+<div id="removed_panel" class="panel">
+	<div id="removed_header" class="panel_header">Permanently Removed Events</div>
+	<div id="removed" class="panel_body"></div>
+</div>
 
-<div id="hand_panel" class="panel hide">
-	<div id="hand_header" class="panel_header">Hand</div>
-	<div id="hand" class="panel_body"></div>
+<!-- DISCARD -->
+<div id="discard_panel" class="panel">
+	<div id="discard_header" class="panel_header">Discard</div>
+	<div id="discard" class="panel_body"></div>
 </div>
 
-</section>
 
 </main>
 
 <footer id="status"></footer>
 
-
-
 </html>
diff --git a/play.js b/play.js
index 5ccf136..9ac9e60 100644
--- a/play.js
+++ b/play.js
@@ -1,677 +1,417 @@
+"use strict"
 
-const seed = 'none'
-const scenario = 'standard'
-const options = 'none'
-//const rules = require("./rules")
+let action_register = []
 
+function register_action(target, action, id) {
+	target.my_action = action
+	target.my_id = id
+	target.onmousedown = on_click_action
+	action_register.push(target)
+}
+
+function is_action(action, arg) {
+	return !!(view.actions && view.actions[action] && view.actions[action].includes(arg))
+}
+
+function on_click_action(evt) {
+	if (evt.button === 0)
+		send_action(evt.target.my_action, evt.target.my_id)
+}
+
+const last_space = 75
 const last_card = 110
 const last_power_card = 52
-let hover_timeout
-const height = 65
-const width  = 105
-const toolbar = document.getElementById('toolbar')
-const vpMarker = document.getElementById('vp')
-const counters = document.getElementById('counters')
-
-const countries= ['Poland', 'Hungary', 'East_Germany', 'Bulgaria', 'Czechoslovakia', 'Romania']
-
-/*const aside_events = [
-	"honecker",
-	"st_nicholas_church",
-	"helsinki_final_act",
-	"eco_glasnost",
-	"we_are_the_people",
-	"foreign_currency_debt_burden",
-	"li_peng",
-	"austria_hungary_border_reopened",
-	"grenztruppen",
-	"presidential_visit",
-	"securitate",
-	"laslzo_tokes",
-	"stand_fast",
-	"elena",
-	"new_years_eve_party"
-]*/
-const board_events = [2, 9, 69, 97]
+
+const countries = [ "Poland", "Hungary", "East_Germany", "Bulgaria", "Czechoslovakia", "Romania" ]
+const board_events = [ 2, 9, 69, 97 ]
 const box_events = [ 15, 24, 26, 39, 48, 49, 53, 58, 59, 65, 70, 73, 100, 101, 104 ]
-let box_events_showing = false
-let show_discard = false
-
-const overlay = document.getElementById('overlay');
-const spaceNameElement = document.getElementById('space-name');
-const spaceCharacteristicsElement = document.getElementById('space-characteristics');
-
-
-// Event listener to track mouse movement over the map
-        document.querySelector('.map').addEventListener('mousemove', function(event) {
-            const x = event.offsetX; // X-coordinate of mouse relative to container
-            const y = event.offsetY; // Y-coordinate of mouse relative to container
-	spaceCharacteristicsElement.innerText = `X: ${x}, Y: ${y}`;
-	})
-
-
- // Create map areas dynamically based on coordinates
-
- function create_ui() {
-
-// CREATE MAP
-
-	spaces.forEach((space) => {
-
-
-		if (space && space.box) {
-
-		//CREATE SPACES
-                const { x, y} = space.box;
-                const spaceArea = document.createElement('div');
-                spaceArea.classList.add('space-area', space.country)
-				spaceArea.id=`space_${space.space_id}`;
-                spaceArea.style.left = x + 'px';
-                spaceArea.style.top = y + 'px';
-                spaceArea.style.width = width + 'px';
-                spaceArea.style.height = height + 'px';
-				spaceArea.style.zIndex = 2;
-				spaceArea.my_space = space.space_id;  
-        		spaceArea.addEventListener('mousedown', on_click_space);
-		
-		//CREATE DEMOCRATIC INFLUENCE MARKERS FOR EACH SPACE
-				const dem_img = document.createElement('div')
-				dem_img.classList.add('demInfl', space.country)
-				dem_img.style.display = 'none'
-				dem_img.id=`${space.name_unique}_demInfl`
-				dem_img.style.zIndex = 1
-				dem_img.my_space = space.space_id;  
-        		dem_img.addEventListener('mousedown', on_click_space);
-				spaceArea.appendChild(dem_img)
-
-			//CREATE DEMOCRATIC INFLUENCE VALUES 
-				const demInflValue = document.createElement('p')
-				demInflValue.className='demInflValue'
-				demInflValue.style.display = 'none'
-				demInflValue.id=`${space.name_unique}_demInflValue`
-				demInflValue.innerText=space.demInfl
-				demInflValue.style.zIndex = 1
-				demInflValue.my_space = space.space_id;  
-        		demInflValue.addEventListener('mousedown', on_click_space);
-				spaceArea.appendChild(demInflValue)
-
-		//CREATE COMMUNIST INFLUENCE MARKERS FOR EACH SPACE
-				const com_img = document.createElement('div')
-				com_img.className='comInfl'
-				com_img.style.display='none'
-				com_img.id=`${space.name_unique}_comInfl`
-				com_img.style.zIndex = 1
-				com_img.my_space = space.space_id;  
-        		com_img.addEventListener('mousedown', on_click_space);
-				spaceArea.appendChild(com_img)
-
-			//CREATE COMMUNIST INFLUENCE VALUES 
-				const comInflValue = document.createElement('p')
-				comInflValue.className='comInflValue'
-				comInflValue.style.display='none'
-				comInflValue.id=`${space.name_unique}_comInflValue`
-				comInflValue.innerText=space.comInfl
-				comInflValue.style.zIndex = 1
-				comInflValue.my_space = space.space_id;  
-        		comInflValue.addEventListener('mousedown', on_click_space);
-				spaceArea.appendChild(comInflValue)
-			//} 
-		
-		counters.appendChild(spaceArea);
-		}
-	});
 
-// CREATE CARDS
+const ui = {
+	favicon: document.getElementById("favicon"),
+	turn_info: document.getElementById("turn_info"),
+
+	turn: document.getElementById("marker_turn"),
+	round: document.getElementById("marker_action_round"),
+	stability: document.getElementById("marker_stability_track"),
+	dem_tst: document.getElementById("marker_dem_tst"),
+	com_tst: document.getElementById("marker_com_tst"),
+	vp: document.getElementById("marker_vp"),
+
+	event_reminder_list: document.getElementById("event_reminder_list"),
+
+	played_card: document.getElementById("played_card"),
+	hand: document.getElementById("hand"),
+	power_hand: document.getElementById("power_hand"),
+	opp_hand: document.getElementById("opp_hand"),
+	opp_power_hand: document.getElementById("opp_power_hand"),
+	discard: document.getElementById("discard"),
+	removed: document.getElementById("removed"),
+	table_cards: document.getElementById("table_cards"),
+
+	ceausescu_hand: document.getElementById("ceausescu_hand"),
+	samizdat_card: document.getElementById("samizdat_card"),
+}
+
+function create_country(id, name) {
+	let [ x, y, w, h ] = LAYOUT[name]
+	let xc = Math.round(x + w / 2)
+	let yc = Math.round(y + h / 2)
+
+	let e = document.createElement("div")
+	e.className = "marker demInfl"
+	e.style.left = xc - 25 + "px"
+	e.style.top = yc - 25 + "px"
+	ui.countries[id] = e
+	document.getElementById("markers").appendChild(e)
+}
+
+function create_ui() {
+	ui.layout_xy = []
+	ui.spaces = []
+	ui.dem_inf = []
+	ui.com_inf = []
+
+	for (let s = 1; s <= last_space; ++s) {
+		let info = spaces[s]
+		let [ x, y, w, h ] = LAYOUT[info.ascii_name]
+		let xc = Math.round( x + w / 2 )
+		let yc = Math.round( y + h / 2 )
+		x -= 6
+		y -= 6
+		w += 12
+		h += 12
+
+		ui.layout_xy[s] = [ xc, yc ]
+
+		let space_e = document.createElement("div")
+		register_action(space_e, "space", s)
+		space_e.className = "space " + info.country
+		space_e.style.left = x + "px"
+		space_e.style.top = y + "px"
+		space_e.style.width = w + "px"
+		space_e.style.height = h + "px"
+		ui.spaces[s] = space_e
+
+		let com_e = document.createElement("div")
+		com_e.className = "marker comInfl hide"
+		com_e.style.left = (xc + 32 - 25) + "px"
+		com_e.style.top = (yc + 12 - 25) + "px"
+		ui.com_inf[s] = com_e
+
+		let dem_e = document.createElement("div")
+		dem_e.className = "marker demInfl hide"
+		dem_e.style.left = (xc - 32 - 25) + "px"
+		dem_e.style.top = (yc + 12 - 25) + "px"
+		ui.dem_inf[s] = dem_e
+
+		document.getElementById("spaces").append(space_e)
+		document.getElementById("markers").appendChild(com_e)
+		document.getElementById("markers").appendChild(dem_e)
+	}
 
-	const is_mobile = window.matchMedia("(pointer: coarse)").matches
 
+	ui.cards = []
 	for (let c = 1; c <= last_card; ++c) {
+		const card_e = document.createElement("div")
+		register_action(card_e, "card", c)
+		card_e.className = "card event_" + c
+		ui.cards[c] = card_e
+	}
 
-		const hand_card = document.createElement('img');
-        hand_card.classList.add('hand_card')
-		hand_card.id=`card_${c}`;
-		hand_card.src = `cards/e${c}.gif`
-		hand_card.my_card = c;  
-        hand_card.addEventListener('click', on_click_card);
-
-		if(!is_mobile) {
-			hand_card.addEventListener('mouseenter', () => {
-				hover_timeout = setTimeout(() => {
-					hand_card.classList.add('zoom');
-				}, 500) })
-			hand_card.addEventListener('mouseleave', () => {
-				clearTimeout(hover_timeout);
-				hand_card.classList.remove('zoom');
-			});
-		}
+	ui.power_cards = []
+	for (let c = 1; c <= last_power_card; ++c) {
+		const power_card_e = document.createElement("div")
+		register_action(power_card_e, "power_card", c)
+		power_card_e.className = "card power_" + c
+		ui.power_cards[c] = power_card_e
+	}
 
-		ui.cards.push(hand_card);
+	ui.events = []
+	for (let id of box_events) {
+		ui.events[id] = document.createElement("div")
+		ui.events[id].id = "event_" + id
+		ui.events[id].className = "marker event aside"
 	}
-	
-
-
-	for (let card of power_cards) {
-		if (!card) continue;
-    	const power_card = document.createElement('img');
-    	power_card.classList.add('power_card');
-    	power_card.id = `power_card_${card.number}`;
-    	power_card.src = `cards_2/${card.url}.gif`;
-    	power_card.my_card = card.number;
-    	power_card.addEventListener('mousedown', on_click_card);
-    	ui.power_cards.push(power_card);
+	for (let id of board_events) {
+		ui.events[id] = document.createElement("div")
+		ui.events[id].id = "event_" + id
+		ui.events[id].className = "marker event"
+		document.getElementById("markers").appendChild(ui.events[id])
 	}
-}
-
-
 
-
-function is_card_enabled(card) {
-	if (view.actions) {
-		if (card_action_menu.some(a => view.actions[a] && view.actions[a].includes(card)))
-			return true
-		if (view.actions.card_select && view.actions.card_select.includes(card))
-			return true
-		if (view.actions.card && view.actions.card.includes(card))
-			return true
-	}
-	return false
+	ui.countries = []
+	create_country(0, "country_poland")
+	create_country(1, "country_hungary")
+	create_country(2, "country_east_germany")
+	create_country(3, "country_bulgaria")
+	create_country(4, "country_czechoslovakia")
+	create_country(5, "country_romania")
 }
 
 // SUPPORTING FUNCTIONS
 
 function on_click_space(evt) {
-    if (evt.button === 0) {
-        const space = evt.target.my_space;
-        //console.log('on_click_space_called with space:', space);
-        if (send_action('infl', space)) {
+	if (evt.button === 0) {
+		const space = evt.target.my_space
+		//console.log('on_click_space_called with space:', space);
+		if (send_action("infl", space)) {
 			//console.log('send_action with infl:', space);
-			evt.stopPropagation();
-        } else if (send_action('sc', space)) {
+			evt.stopPropagation()
+		} else if (send_action("sc", space)) {
 			//console.log('send_action with sc:', space);
-			evt.stopPropagation();
+			evt.stopPropagation()
 		} else {
-           // console.log('send_action failed for space:', space);
-        }
-    }
-    //hide_popup_menu();
-}
-
-function on_click_card(evt) {
-	if (evt.button === 0) {
-		const card = evt.target.my_card;
-		//console.log('on_click_card_called with card:', card);
-		if (is_action('card', card)) {
-			//console.log('in action card')
-			if (send_action('card', card)) {
-				evt.stopPropagation();
-			}
-		}
-		if (is_action('power_card', card)) {
-			if (send_action('power_card', card)) {
-				evt.stopPropagation();
-			}
+			// console.log('send_action failed for space:', space);
 		}
 	}
+	//hide_popup_menu();
 }
 
-function is_action(action) {
-	//console.log('is_action called with: ', action)
-	//console.log('view.actions', view.actions)
-	if (view.actions && view.actions[action])
-		return true
-	return false
-}
-
-function is_card_action(action, card) {
-	//console.log('is_card_action called with action', action, 'card', card)
-	//console.log('view.actions', view.actions, 'view.actions[action]', view.actions[action])
-	if (view.actions && view.actions[action] && view.actions[action].includes(card))
-		return true
-	return false
-}
-
-function on_log(text) { // eslint-disable-line no-unused-vars
+function on_log(text) {
+	// eslint-disable-line no-unused-vars
 
 	let p = document.createElement("div")
 
 	if (text.match(/^>/)) {
 		text = text.substring(1)
-		p.className = 'i'
+		p.className = "i"
 	}
 
-	text = text.replace(/_/g, ' ')
+	text = text.replace(/_/g, " ")
 	text = text.replace(/C(\d+)/g, sub_card_name)
 	text = text.replace(/P(\d+)/g, sub_power_card_name)
 	text = text.replace(/V(\d+)/g, sub_power_card_value)
 	text = text.replace(/%(\d+)/g, sub_space_name)
 	text = text.replace(/D[1-6]/g, sub_die)
-	
 
 	if (text.match(/^\.h1/)) {
 		text = text.substring(4)
-		p.className = 'h1'
-	}
-	else if (text.match(/^\.h2d/)) {
+		p.className = "h1"
+	} else if (text.match(/^\.h2d/)) {
 		text = text.substring(5)
-		p.className = 'h2 dem'
-	}
-	else if (text.match(/^\.h2c/)) {
+		p.className = "h2 dem"
+	} else if (text.match(/^\.h2c/)) {
 		text = text.substring(5)
-		p.className = 'h2 com'
-	}
-	else if (text.match(/^\.h2/)) {
+		p.className = "h2 com"
+	} else if (text.match(/^\.h2/)) {
 		text = text.substring(4)
-		p.className = 'h2'
-	}
-	else if (text.match(/^\.h3/)) {
+		p.className = "h2"
+	} else if (text.match(/^\.h3/)) {
 		text = text.substring(4)
-		p.className = 'h3'
+		p.className = "h3"
 	}
 
 	p.innerHTML = text
 	return p
 }
 
-let ui = {
-	favicon: document.getElementById('favicon'),
-	player: [
-		document.getElementById("role_Democrat"),
-		document.getElementById("role_Communist"),
-	],
-	cards: [ null ],
-	power_cards: [null],
-	dem_hand_count: document.getElementById("role_stat_dem"),
-	com_hand_count: document.getElementById("role_stat_com"),
-	deck_length: document.getElementById("deck_length"),
-	played_card: 0,
-	table_panel: document.getElementById("table_panel"),
-	hand_panel: document.getElementById("hand_panel"),
-	turn: document.getElementById("turn-tracker"),
-	round: document.getElementById("action-round-tracker"),
-	stability: document.getElementById("stability-track"),
-	dem_TST: document.getElementById("dem-TST"),
-	com_TST: document.getElementById("com-TST"),
-	vp: document.getElementById("vp"),
-	spaces: document.getElementsByClassName("space-area")
+function layout_turn_marker() {
+	let x = 654 + 24 + (view.turn - 1) * 53
+	let y = 80 + 24
+	ui.turn.style.left = (x - 25) + "px"
+	ui.turn.style.top = (y - 25) + "px"
+}
 
+function layout_round_marker() {
+	let x = 709 + 24 + (view.turn - 1) * 53
+	let y = 142 + 24
+	ui.round.style.left = (x - 25) + "px"
+	ui.round.style.top = (y - 25) + "px"
+	if (view.round_player === "Democrat") // TODO: bit flag?
+		ui.round.className = "marker dem"
+	else
+		ui.round.className = "marker com"
 }
 
+function layout_stability_marker() {
+	let x = 24 + 1381
+	let y = 24 + 1081 + view.stability * 54
+	ui.stability.style.left = (x - 25) + "px"
+	ui.stability.style.top = (y - 25) + "px"
+}
 
-function on_update() {
-	//console.log('on_update called')
-	//console.log('view.valid_spaces: ', view.valid_spaces)
-	//console.log('view.actions: ', view.actions)
-	//console.log('view.power_cards:', view.power_cards)
-	document.querySelectorAll('[id^="space_"].selected').forEach(spaceElement => {spaceElement.classList.remove('selected');});
-    document.getElementById("power_hand")?.querySelectorAll('.selected').forEach(cardElement => {cardElement.classList.remove('selected');});
-	view.valid_spaces.forEach(space_id => {
-    	const spaceElementId = `space_${space_id}`;
-    	const spaceElement = document.getElementById(spaceElementId);
-
-    	if (spaceElement) {
-        	spaceElement.classList.add('selected');
-    	}
-	});
-
-	//Check influence values
-
-	for (let i = 1; i < spaces.length; i ++) {
-		
-		const space = spaces[i]
-		const demInfl = view.demInfl[i]
-		const comInfl = view.comInfl[i]
-		//console.log('piece', piece)
-		//console.log('space', space)
-		const dem_marker = document.getElementById(`${space.name_unique}_demInfl`);
-		const dem_number = document.getElementById(`${space.name_unique}_demInflValue`);
-		const com_marker = document.getElementById(`${space.name_unique}_comInfl`);
-		const com_number = document.getElementById(`${space.name_unique}_comInflValue`);
-
-		dem_number.innerText=demInfl
-		if (demInfl > 0) {
-			dem_marker.style.display = 'block';
-			dem_number.style.display = 'block';
-			
-			if (demInfl > 9) {
-				dem_number.classList.remove('demInflValue')
-				dem_number.classList.add('demInflValue_10')
-			} else {
-				dem_number.classList.add('demInflValue')
-				dem_number.classList.remove('demInflValue_10')
-			}
-
-			if(check_dem_control(demInfl, comInfl, space)){
-				dem_marker.classList.add('controlled')
-				dem_number.classList.add('outlined_text')
-				dem_marker.classList.remove('uncontrolled')
-			} else {
-				dem_marker.classList.add('uncontrolled')
-				dem_marker.classList.remove('controlled')
-				dem_number.classList.remove('outlined_text')
-			}
-		} else {
-			dem_marker.style.display = 'none';
-			dem_number.style.display = 'none';
-		}
-		com_number.innerText=comInfl
-		if (comInfl > 0) {
-			com_marker.style.display = 'block';
-			com_number.style.display = 'block';
-
-			if (comInfl > 9) {
-				com_number.classList.remove('comInflValue')
-				com_number.classList.add('comInflValue_10')
-			} else {
-				com_number.classList.add('comInflValue')
-				com_number.classList.remove('comInflValue_10')
-			}
-
-			if(check_com_control(demInfl, comInfl, space)){
-				com_marker.classList.add('controlled')
-				com_number.classList.add('controlled')
-				com_marker.classList.remove('uncontrolled')
-				com_number.classList.remove('uncontrolled')
-			} else {
-				com_marker.classList.add('uncontrolled')
-				com_number.classList.add('uncontrolled')
-				com_marker.classList.remove('controlled')
-				com_number.classList.remove('controlled')
-			}
-		} else {
-			com_marker.style.display = 'none';
-			com_number.style.display = 'none';
-		}
-		
-	}
+let TST_X = [ 53, 53+69, 53+69*2, 53+69*3, 53+69*4, 53+69*5, 53+69*6, 556 ]
+let TST_Y = [ 2128, 2257 ]
 
-// UPDATE COUNTRY MARKERS
-	for (let i = 0; i < countries.length; i++) {
-		const country = countries[i];
-		const marker = document.getElementById(country)
-		const times_held = document.getElementById(`${country}_times_held`)
-		
-		if (view.revolutions[find_country_index(country)]) {
-			marker.classList.add('revolution')
-			marker.classList.remove('held')
-			marker.style.display = 'block'
-			times_held.classList.add('outlined_text')
-			times_held.classList.remove('hide')
-		} else if (view.times_held[find_country_index(country)] > 0 ) {
-			//console.log('setting ', country)
-			marker.classList.add('held')
-			marker.style.display = 'block'
-			times_held.classList.remove('hide')
-			times_held.innerHTML = view.times_held[find_country_index(country)]
-		}
-		else {marker.style.display = 'none'}
-	} 
+function layout_tst_marker(e, v, top) {
+	let x = TST_X[v] + 24
+	let y = TST_Y[top] + 24
+	e.style.left = (x - 25) + "px"
+	e.style.top = (y - 25) + "px"
+}
 
-// UPDATE ASIDE
-	if (view.is_pwr_struggle) {
-		ui.dem_hand_count.innerText = `${view.democrat_power_hand} Power cards`
-		ui.com_hand_count.innerText = `${view.communist_power_hand} Power cards`		
-	} else{
-		ui.dem_hand_count.innerText = `${view.democrat_hand} cards`
-		ui.com_hand_count.innerText = `${view.communist_hand} cards`
+function layout_vp_marker() {
+	let x, y
+	if (view.vp === 0) {
+		y = 2425 + 25
+		x = 843 + 28
 	}
-	ui.deck_length.innerText = `${view.strategy_deck} cards`
-
-// UPDATE HAND
-	document.getElementById("hand").replaceChildren()
-	document.getElementById("played_card").replaceChildren()
-		
-	if (view.hand.length && view.is_pwr_struggle === false) {
-		document.getElementById("hand_panel").classList.remove("hide")
-		//console.log('view.actions.card', view.actions.card)
-		for (let c of view.hand) {
-			let card = ui.cards[c]
-			document.getElementById("hand").appendChild(card);
-			if (view.actions && view.actions.card && view.actions.card.includes(c)) {
-				card.classList.add('action')
-			} else {
-				card.classList.remove('action')
-			}
-			if (view.valid_cards.includes(c)) {
-                card.classList.add('selected')
-            } else {
-				card.classList.remove('selected')
-			}
-			card.classList.remove('discard_card')
+	else if (view.vp < 0) {
+		if (view.vp & 1) {
+			y = 2456 + 25
+			x = 803 + 28 - (-view.vp - 1)/2 * 62
+		} else {
+			y = 2395 + 25
+			x = 772 + 28 - (-view.vp - 2)/2 * 62
 		}
-	} else {
-		document.getElementById("hand_panel").classList.add("hide")
-	}
-
-// UPDATE DISCARD
-document.getElementById("discard").replaceChildren()
-if (!view.is_pwr_struggle) {
-	for (let c of view.strategy_discard) {
-		let discard_card = ui.cards[c]
-		document.getElementById("discard").appendChild(discard_card)
-		discard_card.classList.add('discard_card')
-		discard_card.classList.remove('selected')
-	}
-} else if (view.is_pwr_struggle) {
-	for (let c of view.strategy_discard) {
-		let discard_card = ui.power_cards[c]
-		document.getElementById("discard").appendChild(discard_card)
-		discard_card.classList.add('discard_card')
-		discard_card.classList.remove('selected')
 	}
-}
-
-// DISCARD FOR EVENTS
-//console.log('view.discard',view.discard)
-if(view.discard) {
-	//document.getElementById("discard").replaceChildren()
-	document.getElementById("discard_panel").classList.remove("hide")
-	for (let c of view.strategy_discard) {
-		let discard_card = ui.cards[c]
-		document.getElementById("discard").appendChild(discard_card)
-		discard_card.classList.add('discard_card')
-		if (view.valid_cards.includes(c)) {
-			discard_card.classList.add('selected')
+	else if (view.vp > 0) {
+		if (view.vp & 1) {
+			y = 2396 + 25
+			x = 883 + 28  + (view.vp - 1)/2 * 62
 		} else {
-			discard_card.classList.remove('selected')
+			y = 2455 + 25
+			x = 913 + 28 + (view.vp - 2)/2 * 62
 		}
-	}	
-} else {
-	if (!show_discard) {
-		document.getElementById("discard_panel").classList.add("hide")
+	}
+	ui.vp.style.left = (x - 25) + "px"
+	ui.vp.style.top = (y - 25) + "px"
+}
+
+function layout_country(id) {
+	for (let i = 0; i < 6; i++) {
+		// TODO: what number to display?
+		if (view.revolutions[id])
+			ui.countries[id].className = "marker comInfl ctl v" + view.times_held[id]
+		else if (view.times_held[id] > 0)
+			ui.countries[id].className = "marker demInfl ctl v" + view.times_held[id]
+		else
+			ui.countries[id].className = "marker hide"
 	}
 }
 
-// UPDATE PERMANENTLY REMOVED CARDS
-document.getElementById("removed").replaceChildren()
-for (let c of view.strategy_removed) {
-	let discard_card = ui.cards[c]
-	document.getElementById("removed").appendChild(discard_card)
-	discard_card.classList.add('discard_card')
-	discard_card.classList.remove('selected')
-}
-
-
-// PLAYED CARD PANEL
-if (view.played_card > 0) {
-	document.getElementById("played_card_panel").classList.remove("hide")
-	document.getElementById("played_card").appendChild(ui.cards[view.played_card]);
-	document.getElementById("played_card").classList.remove("hand_card")
-} else {
-	document.getElementById("played_card_panel").classList.add("hide")
-}
-
-// TABLE CARDS PANEL
-document.getElementById("table_cards").replaceChildren()
-if (view.table_cards.length > 0) {
-	document.getElementById("table_panel").classList.remove("hide")
-	for (let c of view.table_cards) {
-		let card = ui.cards[c]
-		document.getElementById("table_cards").appendChild(card);
-		card.classList.remove("hand_card")
-		card.classList.add('event_card');
-		}	
-	} else {
-	document.getElementById("table_panel").classList.add("hide")
-}
+function on_update() {
+	if (!ui.spaces)
+		create_ui()
 
-// OPPONENT HAND
-document.getElementById("opp_hand").replaceChildren()
-if (!view.is_pwr_struggle) {
-	if (view.show_opp_hand && view.opp_hand.length >0) {
-		document.getElementById("opp_hand_panel").classList.remove("hide")
-		for (let c of view.opp_hand) {
-			let card = ui.cards[c]
-			document.getElementById("opp_hand").appendChild(card);	
-			card.classList.remove('discard_card')
-			if (!view.is_pwr_struggle) {
-				if (view.valid_cards.includes(c)) {
-					card.classList.add('selected')
-				} else {
-					card.classList.remove('selected')
-				}
-			}
-		}	
+	// UPDATE ASIDE
+	if (view.is_pwr_struggle) {
+		roles.Democrat.stat.textContent = `${view.democrat_power_hand} Power cards`
+		roles.Communist.stat.textContent = `${view.communist_power_hand} Power cards`
 	} else {
-		document.getElementById("opp_hand_panel").classList.add("hide")
+		roles.Democrat.stat.textContent = `${view.democrat_hand} cards`
+		roles.Communist.stat.innerText = `${view.communist_hand} cards`
 	}
-} else {
-	//console.log('power struggle, show opp hand', view.show_opp_hand, 'view opp hand', view.opp_hand )
-	if (view.show_opp_hand && view.opp_hand && view.opp_hand.length > 0) {
-		document.getElementById("opp_hand_panel").classList.remove("hide")
-		for (let c of view.opp_hand) {
-			let card = ui.power_cards[c]
-			//console.log('power_card:', power_card)
-			document.getElementById("opp_hand").appendChild(card);
-			card.classList.remove('discard_card')
-		}	
+	ui.turn_info.innerText = `Strategy deck: ${view.strategy_deck} cards`
+
+	// UPDATE TRACK MARKERS
+	layout_turn_marker()
+	layout_round_marker()
+	layout_stability_marker()
+	layout_vp_marker()
+	layout_tst_marker(ui.dem_tst, view.dem_tst, 0)
+	layout_tst_marker(ui.com_tst, view.com_tst, 1)
+
+	// UPDATE EVENT MARKERS ON THE BOARD
+
+	if (view.persistent_events.includes(2))
+		ui.events[2].style.display = "block"
+	else
+		ui.events[2].style.display = "none"
+
+	if (view.persistent_events.includes(9))
+		ui.events[9].style.display = "block"
+	else
+		ui.events[9].style.display = "none"
+
+	if (view.persistent_events.includes(69)) {
+		ui.events[69].style.display = "block"
+		ui.events[69].style.left = ui.layout_xy[view.systematization][0] - 25 + "px"
+		ui.events[69].style.top = ui.layout_xy[view.systematization][1] - 25 + "px"
 	} else {
-		document.getElementById("opp_hand_panel").classList.add("hide")
+		ui.events[69].style.display = "none"
 	}
-}
 
-// POWER STRUGGLE HAND
-	document.getElementById("power_hand").replaceChildren()
-
-	if (view.power_hand.length && view.is_pwr_struggle) {
-		document.getElementById("power_panel").classList.remove("hide")
-		for (let c of view.power_hand) {
-			let power_card = ui.power_cards[c]
-			document.getElementById("power_hand").appendChild(power_card);
-			power_card.classList.remove('discard_card')
-			if (view.valid_cards.includes(c)) {
-                power_card.classList.add('selected');
-            }	
-		}	
+	if (view.persistent_events.includes(97)) {
+		ui.events[97].style.display = "block"
+		ui.events[97].style.left = ui.layout_xy[view.the_tyrant_is_gone][0] - 25 + "px"
+		ui.events[97].style.top = ui.layout_xy[view.the_tyrant_is_gone][1] - 25 + "px"
 	} else {
-		document.getElementById("power_panel").classList.add("hide")
+		ui.events[97].style.display = "none"
 	}
 
-// CEAUSESCU
+	// EVENT REMINDER LIST
+
+	ui.event_reminder_list.replaceChildren()
+	for (let id of box_events)
+		if (view.persistent_events.includes(id))
+			ui.event_reminder_list.appendChild(ui.events[id])
+
+	// UPDATE INFLUENCE VALUES
+	for (let s = 1; s <= last_space; ++s) {
+		const demInfl = view.demInfl[s]
+		const comInfl = view.comInfl[s]
+
+		if (demInfl - comInfl >= spaces[s].stability)
+			ui.dem_inf[s].className = "marker demInfl ctl v" + demInfl
+		else if (demInfl > 0)
+			ui.dem_inf[s].className = "marker demInfl v" + demInfl
+		else
+			ui.dem_inf[s].className = "marker demInfl hide"
+
+		if (comInfl - demInfl >= spaces[s].stability)
+			ui.com_inf[s].className = "marker comInfl ctl v" + comInfl
+		else if (comInfl > 0)
+			ui.com_inf[s].className = "marker comInfl v" + comInfl
+		else
+			ui.com_inf[s].className = "marker comInfl hide"
+	}
 
-if (view.ceausescu_cards && view.ceausescu_cards.length > 0 && view.is_pwr_struggle === true) {
-	document.getElementById("ceausescu_panel").classList.remove("hide")
-	for (let c of view.ceausescu_cards) {
-		let power_card = ui.power_cards[c]
-		document.getElementById("ceausescu_hand").appendChild(power_card);
-		power_card.classList.remove('discard_card')
+	// UPDATE COUNTRY MARKERS
 
-	}	
-} else {
-	document.getElementById("ceausescu_panel").classList.add("hide")
-}
+	for (let i = 0; i < 6; ++i)
+		layout_country(i)
 
-// SAMIZDAT CARD
-if (view.samizdat > 0 ) {
-	let samizdat_card = ui.cards[view.samizdat]
-	document.getElementById("samizdat_panel").classList.remove("hide")
-	document.getElementById("samizdat_card").appendChild(samizdat_card)
-} else {
-	document.getElementById("samizdat_panel").classList.add("hide")
-}
+	// UPDATE CARD DISPLAYS
 
-// UPDATE BOARD MARKERS
-	ui.turn.className = `t${view.turn}`
-	if (view.round_player === 'Democrat') {
-		ui.round.className = `dem-action-round-tracker r${view.round}`
-	} else {
-		ui.round.className = `com-action-round-tracker r${view.round}`
-	}
-	ui.stability.className = `s${view.stability}`
-	ui.dem_TST.className = `tst${view.dem_tst}`
-	ui.com_TST.className = `tst${view.com_tst}`
-	if (view.vp >= -20 && view.vp <= 20) {
-		ui.vp.className = `vp${view.vp}`
-	} else if (view.vp > 20) {
-		ui.vp.className = `vp21`
-	} else if (view.vp < -20) {
-		ui.vp.className = `vp-21`
-	}
-
-//console.log('strategy discard: ', view.strategy_discard)
-//console.log('valid spaces: ', view.valid_spaces)
-
-//console.log('view.persistent_events', view.persistent_events)
+	ui.played_card.replaceChildren()
+	if (view.played_card > 0)
+		ui.played_card.appendChild(ui.cards[view.played_card])
 
-// UPDATE EVENT MARKERS ON THE BOARD
+	ui.samizdat_card.replaceChildren()
+	if (view.samizdat > 0)
+		ui.samizdat_card.appendChild(ui.cards[view.samizdat])
 
-for (let id of board_events) {
-	let marker = document.getElementById(`event_${id}`)
-	//console.log('event', id, marker)
-	if (view.persistent_events.includes(id)) {
-		marker.style.display = 'block'
-	} else {
-		marker.style.display = 'none'
-	}
-}
+	ui.hand.replaceChildren()
+	for (let c of view.hand)
+		ui.hand.appendChild(ui.cards[c])
 
+	ui.power_hand.replaceChildren()
+	if (view.power_hand)
+		for (let c of view.power_hand)
+			ui.hand.appendChild(ui.power_cards[c])
 
-// UPDATE EVENT MARKERS BELOW THE BOARD
+	ui.opp_hand.replaceChildren()
+	if (view.opp_hand)
+		for (let c of view.opp_hand)
+			ui.opp_hand.appendChild(ui.cards[c])
 
-for (let id of box_events) {
-	let marker = document.getElementById(`event_${id}`)
-	//console.log('event', id, marker)
-	if (view.persistent_events.includes(id)) {
-		marker.style.display = 'block'
-	} else {
-		marker.style.display = 'none'
-	}
-}
+	// TODO: fix rules to set view.opp_power_hand
+	ui.opp_power_hand.replaceChildren()
+	if (view.opp_power_hand)
+		for (let c of view.opp_power_hand)
+			ui.opp_hand.appendChild(ui.power_cards[c])
 
+	ui.ceausescu_hand.replaceChildren()
+	if (view.ceausescu_cards)
+		for (let c of view.ceausescu_cards)
+			ui.ceausescu_hand.appendChild(ui.power_cards[c])
 
-// CHECK WHETHER ANY EVENT MARKERS ARE SHOWING IN THE EVENTS BOX
-box_events_showing = false
-for (let id of box_events) {
-    if (view.persistent_events.includes(id)) {
-        box_events_showing = true; 
-    } 
-/*
-	//Special check for events which are not true/false
-	if (view.persistent_events['foreign_currency_debt_burden'] !== '') {
-		aside_events_showing = true
-	}
-	if (view.persistent_events['stand_fast'] !== '') {
-		aside_events_showing = true
-	}
-		*/
-}
+	ui.discard.replaceChildren()
+	for (let c of view.strategy_discard)
+		ui.discard.appendChild(ui.cards[c])
 
-if (box_events_showing) {
-	document.getElementById('events_panel').classList.remove("hide")
-} else {
-	document.getElementById('events_panel').classList.add("hide")
-}
+	ui.removed.replaceChildren()
+	for (let c of view.strategy_removed)
+		ui.discard.appendChild(ui.cards[c])
 
-let systematization = document.getElementById('event_69')
-if (view.persistent_events.includes(69)) {
-	systematization.style.left = (spaces[view.systematization].box.x +20) +  'px';
-	systematization.style.top = spaces[view.systematization].box.y + 'px';
-}
+	ui.table_cards.replaceChildren()
+	if (view.table_cards)
+		for (let c of view.table_cards)
+			ui.table_cards.appendChild(ui.cards[c])
 
-let tyrant = document.getElementById('event_97')
-if (view.persistent_events.includes(97)) {
-	tyrant.style.left = (spaces[view.the_tyrant_is_gone].box.x - 41) +  'px';
-	tyrant.style.top = (spaces[view.the_tyrant_is_gone].box.y + 23) + 'px';
-} else {tyrant.style.display = 'none'}
+	for (let e of action_register)
+		e.classList.toggle("action", is_action(e.my_action, e.my_id))
 
 	action_button("yes", "Yes")
 	action_button("no", "No")
@@ -696,7 +436,7 @@ if (view.persistent_events.includes(97)) {
 	action_button("strike", "Strike")
 	action_button("march", "March")
 	action_button("rally", "Rally in the Square")
-	action_button("petition", "Petition")	
+	action_button("petition", "Petition")
 	action_button("bonus", "Calculate VP bonus")
 	action_button("scoring", "Score country")
 	action_button("retain", "Retain Power")
@@ -704,9 +444,9 @@ if (view.persistent_events.includes(97)) {
 	action_button("take", "Take Power")
 	action_button("concede", "Concede")
 	action_button("struggle", "Begin power struggle")
-	action_button("raise", "Raise the stakes")	
-	action_button("draw", "Draw")	
-	action_button("scoring", "Scoring")	
+	action_button("raise", "Raise the stakes")
+	action_button("draw", "Draw")
+	action_button("scoring", "Scoring")
 	action_button("event", "Event")
 	action_button("opp_event", "Resolve opponent event")
 	action_button("influence", "Place SPs")
@@ -716,8 +456,6 @@ if (view.persistent_events.includes(97)) {
 	action_button("done", "Done")
 	action_button("end_round", "End Round")
 	action_button("undo", "Undo")
-
-console.log('view.actions', view.actions)
 }
 
 // =========================== LOG FUNCTIONS ==============================================
@@ -738,9 +476,8 @@ function sub_power_card_value(match, p1) {
 }
 
 function sub_space_name(match, p1) {
-	let x = p1 | 0
-	let id = spaces[x].space_id
-	let name = spaces[x].name_unique
+	let id = p1 | 0
+	let name = spaces[id].name_unique
 	return `<span class="space_tip" onmouseenter="on_focus_space_tip(${id})" onmouseleave="on_blur_space_tip(${id})" onclick="on_click_space_tip(${id})">${name}</span>`
 }
 
@@ -754,45 +491,32 @@ const die = {
 	D3: '<span class="die white d3"></span>',
 	D4: '<span class="die white d4"></span>',
 	D5: '<span class="die white d5"></span>',
-	D6: '<span class="die white d6"></span>'
+	D6: '<span class="die white d6"></span>',
 }
 
 // =========================== VISUAL FUNCTIONS ==========================================#
 
-function on_focus_card_tip(card_number) { 
-	document.getElementById("tooltip").className = "card card_" + card_number
+function on_focus_card_tip(card_number) {
+	document.getElementById("tooltip").className = "card event_" + card_number
 }
 
-function on_blur_card_tip() { 
+function on_blur_card_tip() {
 	document.getElementById("tooltip").classList = "card hide"
 }
 
 function on_focus_space_tip(id) {
-	space = document.getElementById(`space_${id}`)
-	space.classList.add("tip")
-}
-
-function on_click_space_tip(id) {
-	space = document.getElementById(`space_${id}`)
-	scroll_into_view(space)
+	ui.spaces[id].classList.add("tip")
 }
 
 function on_blur_space_tip(id) {
-	space = document.getElementById(`space_${id}`)
-	space.classList.remove("tip")
+	ui.spaces[id].classList.remove("tip")
 }
 
-function toggle_pieces() {
-	document.getElementById("pieces").classList.toggle("hide")
+function on_click_space_tip(id) {
+	scroll_into_view(ui.spaces[id])
 }
 
-
 function toggle_discard() {
-	if (show_discard) {
-		show_discard = false
-	} else {
-		show_discard = true
-	}
 	document.getElementById("discard_panel").classList.toggle("hide")
 }
 
@@ -800,20 +524,118 @@ function toggle_removed() {
 	document.getElementById("removed_panel").classList.toggle("hide")
 }
 
-function check_dem_control(demInfl, comInfl, space) {
-	if ((demInfl - comInfl) >= space.stability) {
-		return true
-	} else{ false}
-}
-
-function check_com_control(demInfl, comInfl, space) {
-	if ((comInfl - demInfl) >= space.stability) {
-		return true
-	} else{ false}
-}
-
 function find_country_index(country) {
 	return countries.indexOf(country)
 }
 
-create_ui()
+// #region GENERATED LAYOUT DATA
+
+var LAYOUT = {
+	"Babes-Bolyai University": [958,1529,127,75],
+	"Berlin": [329,148,127,75],
+	"Bialystok": [1202,436,127,76],
+	"Brasov": [1339,1556,127,75],
+	"Bratislava": [539,1013,127,76],
+	"Brno": [521,904,127,76],
+	"Bucuresti": [1186,1837,127,76],
+	"Budapest": [809,1249,127,76],
+	"Bulgarian Writers": [838,2192,127,76],
+	"Burgas": [1289,2152,127,76],
+	"Bydgoszcz": [872,388,127,76],
+	"Catholic Church, Czechoslovakia": [692,1010,127,75],
+	"Catholic Church, Hungary": [409,1126,127,76],
+	"Catholic Church, Poland": [802,558,127,75],
+	"Ceske Budejovice": [260,765,127,77],
+	"Charles University": [491,677,128,76],
+	"Cluj-Napoca": [970,1429,127,76],
+	"Constanta": [1443,1925,127,76],
+	"Craiova": [977,1793,127,76],
+	"Czech Writers": [573,773,127,76],
+	"Debrecen": [1000,1192,127,76],
+	"Dresden": [343,479,127,76],
+	"Eotvos Lorand University": [658,1314,127,76],
+	"Erfurt": [38,455,127,76],
+	"Galati": [1409,1778,127,76],
+	"Gdansk": [896,277,127,76],
+	"German Writers": [81,239,127,76],
+	"Gyor": [560,1129,127,76],
+	"Halle": [231,357,127,75],
+	"Harghita/Covasna": [1186,1560,127,75],
+	"Hungarian Writers": [452,1322,127,76],
+	"Iasi": [1369,1395,127,76],
+	"Jagiellonian University": [870,867,127,76],
+	"Karl-Marx-Stadt": [184,492,127,75],
+	"Katowice": [733,723,127,76],
+	"Kosice": [995,1037,127,76],
+	"Krakow": [911,761,127,76],
+	"Leipzig": [387,379,127,76],
+	"Lodz": [959,620,127,76],
+	"Lublin": [1124,754,127,76],
+	"Lutheran Church": [391,271,127,76],
+	"Magdeburg": [79,352,127,75],
+	"Miskolc": [851,1146,127,76],
+	"Orthodox Church, Bulgaria": [1130,1956,127,76],
+	"Orthodox Church, Romania": [1094,1700,127,76],
+	"Ostrava": [673,868,127,75],
+	"Pecs": [626,1406,127,75],
+	"Pleven": [979,1948,127,76],
+	"Ploiesti": [1356,1671,127,76],
+	"Plovdiv": [987,2209,127,75],
+	"Plzen": [211,615,127,76],
+	"Polish Writers": [1051,883,127,75],
+	"Poznan": [671,452,127,76],
+	"Praha": [412,782,127,75],
+	"Presov": [844,1010,127,75],
+	"Razgrad": [1219,2057,127,76],
+	"Romanian Writers": [947,1625,127,75],
+	"Rostock": [299,53,127,76],
+	"Ruse": [1277,1956,127,76],
+	"Schwerin": [148,86,127,76],
+	"Sliven": [1144,2251,127,75],
+	"Sofia": [983,2098,127,76],
+	"Sofia University": [828,2095,127,76],
+	"Stara Zagora": [1133,2153,127,75],
+	"Szczecin": [574,263,127,75],
+	"Szeged": [812,1364,127,76],
+	"Szekesfehervar": [571,1223,127,75],
+	"Szombathely": [410,1224,127,76],
+	"Targu Mures": [1169,1443,127,76],
+	"Tatabanya": [706,1126,127,75],
+	"Timisoara": [767,1531,127,76],
+	"Varna": [1387,2051,127,76],
+	"Walter Ulbricht Academy": [234,240,127,76],
+	"Warszawa": [1032,490,127,75],
+	"Wroclaw": [595,565,127,75],
+	"action_1": [708,143,48,44],
+	"action_8": [1080,143,47,43],
+	"country_bulgaria": [915,1999,46,41],
+	"country_czechoslovakia": [463,624,44,39],
+	"country_east_germany": [560,160,43,37],
+	"country_hungary": [1034,1319,44,39],
+	"country_poland": [1188,292,44,39],
+	"country_romania": [1287,1349,44,39],
+	"event_solidarity_legalized": [779,270,44,43],
+	"event_the_wall": [222,179,40,41],
+	"tst_com_1": [53,2257,47,47],
+	"tst_com_7": [469,2257,47,47],
+	"tst_com_8": [556,2257,47,47],
+	"tst_dem_1": [53,2128,47,47],
+	"tst_dem_7": [469,2128,47,47],
+	"tst_dem_8": [556,2128,47,47],
+	"turn_1": [655,81,47,48],
+	"turn_10": [1133,80,48,48],
+	"ussr_1": [1381,1080,48,48],
+	"ussr_2": [1381,1134,48,48],
+	"ussr_3": [1381,1188,48,48],
+	"ussr_4": [1381,1243,48,48],
+	"ussr_5": [1381,1297,48,48],
+	"vp_0": [843,2425,55,51],
+	"vp_1": [883,2395,55,50],
+	"vp_19": [1440,2395,55,50],
+	"vp_2": [913,2455,56,51],
+	"vp_20": [1471,2455,55,51],
+	"vp_neg_1": [803,2455,56,51],
+	"vp_neg_19": [246,2456,55,50],
+	"vp_neg_2": [772,2395,56,51],
+	"vp_neg_20": [215,2395,55,51],
+}
diff --git a/rules.js b/rules.js
index 877c4d8..6ce54dd 100644
--- a/rules.js
+++ b/rules.js
@@ -268,18 +268,13 @@ exports.view = function(state, player) {
 // === ACTIONS ===========
 
 function gen_action(action, argument) {
-//console.log('gen_action called with ', action, ' and ', argument)
 	if (argument === undefined) {
-		//console.log('argument undefined')
 		view.actions[action] = 1
 	} else {
-		if (!(action in view.actions)) {
-			//console.log('push argument')
+		if (!(action in view.actions))
 			view.actions[action] = []
-		}
 		view.actions[action].push(argument)
 	}
-	//console.log('view.actions: ', view.actions, 'view.actions[action]: ', view.actions[action])
 }
 
 function gen_action_space(space){
@@ -9013,6 +9008,7 @@ states.vm_support_falters = {
 /* =================== EVENTS ================================ */
 
 // #region GENERATED EVENT CODE
+
 const CODE = []
 
 CODE[1] = [ // Legacy of Martial Law*
@@ -9875,43 +9871,44 @@ CODE[110] = [ // Malta Summit*
 	[ vm_remove_opp_infl, 5 ],
 	[ vm_return ],
 ]
-// #endregion
 
-
-// ============= TIANANMEN SQUARE TRACK AWARDS ====================
-CODE[203] = [//Tiananmen Square space 3 award
-	[vm_tst_3],
-	[vm_return]
-]
-CODE[204] = [//Tiananmen Square space 4 award
-	[vm_valid_spaces_opponent],
-	[vm_tst_4],
-	[vm_return]
+CODE[203] = [ // Tiananmen Square space 3 award
+	[ vm_tst_3 ],
+	[ vm_return ],
 ]
-CODE[206] = [//Tiananmen Square space 6
-	[vm_valid_spaces_sc],
-	[vm_tst_6],
-	[vm_return]
+
+CODE[204] = [ // Tiananmen Square space 4 award
+	[ vm_valid_spaces_opponent ],
+	[ vm_tst_4 ],
+	[ vm_return ],
 ]
-CODE[208] = [//Tiananmen Square space 8 event
-	[vm_tst_8],
-	[vm_return]
+
+CODE[206] = [ // Tiananmen Square space 6
+	[ vm_valid_spaces_sc ],
+	[ vm_tst_6 ],
+	[ vm_return ],
 ]
 
-// ============= POWER STRUGGLE WILDCARDS =========================
+CODE[208] = [ // Tiananmen Square space 8 event
+	[ vm_tst_8 ],
+	[ vm_return ],
+]
 
-CODE[349] = [//Scare Tactics
-	[vm_scare_tactics],
-	[vm_valid_spaces_country_opp],
-	[vm_prompt, ()=>` from ${country_name(game.vm_active_country)}`],
-	[vm_remove_opp_infl, 1],
-	[vm_return]
+CODE[349] = [ // Scare Tactics
+	[ vm_scare_tactics ],
+	[ vm_valid_spaces_country_opp ],
+	[ vm_prompt, ()=>` from ${country_name(game.vm_active_country)}` ],
+	[ vm_remove_opp_infl, 1 ],
+	[ vm_return ],
 ]
-CODE[350] = [//Support Surges
-	[vm_support_surges],
-	[vm_return]
+
+CODE[350] = [ // Support Surges
+	[ vm_support_surges ],
+	[ vm_return ],
 ]
-CODE[351] = [//Support Falters
-	[vm_support_falters],
-	[vm_return]
+
+CODE[351] = [ // Support Falters
+	[ vm_support_falters ],
+	[ vm_return ],
 ]
+// #endregion
diff --git a/tools/colors.js b/tools/colors.js
new file mode 100644
index 0000000..f8f7ace
--- /dev/null
+++ b/tools/colors.js
@@ -0,0 +1,110 @@
+"use strict"
+
+function rgb_from_any(color) {
+	switch (color.mode) {
+	case "rgb": return color
+	case "lrgb": return rgb_from_lrgb(color)
+	case "oklab": return rgb_from_oklab(color)
+	}
+}
+
+function lrgb_from_any(color) {
+	switch (color.mode) {
+	case "rgb": return lrgb_from_rgb(color)
+	case "lrgb": return color
+	case "oklab": return lrgb_from_oklab(color)
+	}
+}
+
+function oklab_from_any(color) {
+	switch (color.mode) {
+	case "rgb": return oklab_from_rgb(color)
+	case "lrgb": return oklab_from_lrgb(color)
+	case "oklab": return color
+	}
+}
+
+function format_hex(color) {
+	let {r, g, b} = rgb_from_any(color)
+	let adj = 1
+	r = Math.round(Math.max(0, Math.min(1, r)) * 255)
+	g = Math.round(Math.max(0, Math.min(1, g)) * 255)
+	b = Math.round(Math.max(0, Math.min(1, b)) * 255)
+	let x = (r << 16) | (g << 8) | b
+	return "#" + x.toString(16).padStart(6, "0")
+}
+
+function parse_hex(str) {
+	let x = parseInt(str.substring(1), 16)
+	return {
+		mode: "rgb",
+		r: ((x >> 16) & 255) / 255.0,
+		g: ((x >> 8) & 255) / 255.0,
+		b: ((x) & 255) / 255.0
+	}
+}
+
+function lrgb_from_rgb({ r, g, b }) {
+	function to_linear(c) {
+		let ac = Math.abs(c)
+		if (ac < 0.04045)
+			return c / 12.92
+		return (Math.sign(c) || 1) * Math.pow((ac + 0.055) / 1.055, 2.4)
+	}
+	return {
+		mode: "lrgb",
+                r: to_linear(r),
+                g: to_linear(g),
+                b: to_linear(b)
+        }
+}
+
+function rgb_from_lrgb({ r, g, b }) {
+	function from_linear(c) {
+		let ac = Math.abs(c)
+		if (ac > 0.0031308)
+			return (Math.sign(c) || 1) * (1.055 * Math.pow(ac, 1 / 2.4) - 0.055)
+		return c * 12.92
+	}
+        return {
+                mode: "rgb",
+                r: from_linear(r),
+                g: from_linear(g),
+                b: from_linear(b)
+	}
+}
+
+function oklab_from_lrgb({ r, g, b }) {
+	let L = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b)
+        let M = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b)
+        let S = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b)
+        return {
+                mode: "oklab",
+                l: 0.2104542553 * L + 0.793617785 * M - 0.0040720468 * S,
+                a: 1.9779984951 * L - 2.428592205 * M + 0.4505937099 * S,
+                b: 0.0259040371 * L + 0.7827717662 * M - 0.808675766 * S
+        }
+}
+
+function lrgb_from_oklab({ l, a, b }) {
+        let L = Math.pow(l + 0.3963377774 * a + 0.2158037573 * b, 3)
+        let M = Math.pow(l - 0.1055613458 * a - 0.0638541728 * b, 3)
+        let S = Math.pow(l - 0.0894841775 * a - 1.291485548 * b, 3)
+        return {
+                mode: "lrgb",
+                r: +4.0767416621 * L - 3.3077115913 * M + 0.2309699292 * S,
+                g: -1.2684380046 * L + 2.6097574011 * M - 0.3413193965 * S,
+                b: -0.0041960863 * L - 0.7034186147 * M + 1.707614701 * S
+	}
+}
+
+function oklab_from_rgb(rgb) {
+        return oklab_from_lrgb(lrgb_from_rgb(rgb))
+}
+
+function rgb_from_oklab(oklab) {
+	return rgb_from_lrgb(lrgb_from_oklab(oklab))
+}
+
+if (typeof module === "object")
+	module.exports = { format_hex, parse_hex, rgb_from_any, lrgb_from_any, oklab_from_any }
diff --git a/tools/gencode.js b/tools/gencode.js
new file mode 100644
index 0000000..f2e3a26
--- /dev/null
+++ b/tools/gencode.js
@@ -0,0 +1,106 @@
+"use strict"
+
+let fs = require("fs")
+
+let pc = 0
+
+function tokenize(s) {
+	let list = []
+	let p = 0,
+		n = s.length
+	while (p < n) {
+		while (p < n && s[p] === " ")
+			++p
+		if (p < n) {
+			let m = p
+			while (p < n && s[p] !== " ") {
+				let q = s[p++]
+				switch (q) {
+					case "(":
+					case "[":
+					case "{":
+						for (let x = 1; p < n && x > 0; ++p) {
+							switch (s[p]) {
+								case "(":
+								case "[":
+								case "{":
+									++x
+									break
+								case ")":
+								case "]":
+								case "}":
+									--x
+									break
+							}
+						}
+						break
+					case '"':
+					case "'":
+					case "`":
+						while (p < n && s[p] !== q)
+							++p
+					break
+				}
+			}
+			list.push(s.substring(m, p))
+		}
+	}
+	return list
+}
+
+function emit(line) {
+	++pc
+	line[0] = "vm_" + line[0]
+	for (let i = 1; i < line.length; ++i) {
+		if (typeof line[i] === "string") {
+			if (line[i] === "all")
+				line[i] = 999
+			if (line[i][0] === "(" && !line[i].match(/\)=>/))
+				line[i] = "()=>" + line[i]
+			if (line[i][0] === "`")
+				line[i] = "()=>" + line[i]
+		}
+	}
+	console.log("\t[ " + line.join(", ") + " ],")
+}
+
+console.log("const CODE = []")
+let first = false
+
+for (let line of fs.readFileSync("events.txt", "utf-8").split("\n")) {
+	line = line.trim()
+	if (line.length === 0 || line[0] === "#")
+		continue
+	if (line === "EOF")
+		break
+	line = tokenize(line)
+	switch (line[0]) {
+	case "CARD":
+		if (first++) {
+			emit(["return"])
+			console.log("]")
+		}
+		console.log("")
+		console.log("CODE[" + line[1] + "] = [ // " + line.slice(3).join(" "))
+		break
+
+	case "log":
+	case "prompt":
+		emit([ line[0], line.slice(1).join(" ") ])
+		break
+
+	case "asm":
+	case "if":
+	case "while":
+		emit([ line[0], "()=>" + line.slice(1).join(" ") ])
+		break
+
+	default:
+		emit(line)
+		break
+	}
+}
+
+emit(["return"])
+console.log("]")
+console.log("// #endregion")
diff --git a/tools/gencolors.js b/tools/gencolors.js
new file mode 100644
index 0000000..5904741
--- /dev/null
+++ b/tools/gencolors.js
@@ -0,0 +1,78 @@
+const { parse_hex, format_hex, lrgb_from_any, rgb_from_any, oklab_from_any } = require("./colors.js")
+
+const white = "#ffffff"
+const black = "#000000"
+
+function lerp(a, b, n) {
+	return a + (b - a) * n
+}
+
+function blend(a, b, n) {
+	a = lrgb_from_any(parse_hex(a))
+	b = lrgb_from_any(parse_hex(b))
+	return format_hex({
+		mode: "lrgb",
+		r: lerp(a.r, b.r, n),
+		g: lerp(a.g, b.g, n),
+		b: lerp(a.b, b.b, n)
+	})
+}
+
+function multiply_luminance(hex, m) {
+	let oklab = oklab_from_any(parse_hex(hex))
+	oklab.l = Math.max(0, Math.min(1, oklab.l * m))
+	return format_hex(oklab)
+}
+
+function add_luminance(hex, m) {
+	let oklab = oklab_from_any(parse_hex(hex))
+	oklab.l = Math.max(0, Math.min(1, oklab.l + m))
+	return format_hex(oklab)
+}
+
+function make_3d_colors(base) {
+	return [
+		base,
+		multiply_luminance(base, 0.9),
+		multiply_luminance(base, 0.8),
+		multiply_luminance(base, 0.7),
+		multiply_luminance(base, 0.4)
+	]
+}
+
+function make_2d_colors(base) {
+	return [
+		base,
+		multiply_luminance(base, 1.2),
+		multiply_luminance(base, 0.8),
+		multiply_luminance(base, 0.4)
+	]
+}
+
+function make_2d_colors_add(base) {
+	return [
+		base,
+		add_luminance(base, 0.2),
+		add_luminance(base, -0.2),
+		add_luminance(base, -0.5),
+	]
+}
+
+function print(x) {
+	console.log(x)
+}
+
+function gencss(color, sel) {
+	let [ bg, hi, lo, sh ] = make_2d_colors(color)
+	print(`${sel} { background-color: ${color}; border-color: ${hi} ${lo} ${lo} ${hi}; box-shadow: 0 0 0 1px ${sh}, 1px 2px 4px #0008; }`)
+}
+
+gencss("#bbbbbb", ".marker")
+gencss("#c4e2f6", ".demInfl.ctl")
+gencss("#c1272d", ".comInfl.ctl")
+gencss("#147fc0", "#marker_action_round.com")
+gencss("#c1272d", "#marker_action_round.dem")
+gencss("#fadb04", "#marker_vp, #marker_turn")
+gencss("#f26649", "#marker_com_tst")
+gencss("#c4e2f4", "#marker_dem_tst")
+
diff --git a/tools/genlayout.js b/tools/genlayout.js
new file mode 100644
index 0000000..37f419d
--- /dev/null
+++ b/tools/genlayout.js
@@ -0,0 +1,37 @@
+const fs = require("fs")
+
+let boxes = []
+let mode, name, x, y, w, h
+
+function flush() {
+	if (mode === 'rect') {
+		boxes[name] = [ x |0, y |0, w |0, h |0 ]
+	}
+	x = y = w = h = 0
+	name = null
+}
+
+for (let line of fs.readFileSync("tools/layout.svg", "utf-8").split("\n")) {
+	line = line.trim()
+	if (line.startsWith("<rect")) {
+		flush()
+		mode = "rect"
+		x = y = w = h = 0
+	} else if (line.startsWith('x="'))
+		x = Math.round(Number(line.split('"')[1]))
+	else if (line.startsWith('y="'))
+		y = Math.round(Number(line.split('"')[1]))
+	else if (line.startsWith('width="'))
+		w = Math.round(Number(line.split('"')[1]))
+	else if (line.startsWith('height="'))
+		h = Math.round(Number(line.split('"')[1]))
+	else if (line.startsWith('inkscape:label="'))
+		name = line.split('"')[1]
+}
+
+flush()
+
+console.log("var LAYOUT = {")
+for (let key of Object.keys(boxes).sort())
+	console.log("\t\"" + key + "\": " + JSON.stringify(boxes[key]) + ",")
+console.log("}")
diff --git a/tools/layout.svg b/tools/layout.svg
new file mode 100644
index 0000000..36c6045
--- /dev/null
+++ b/tools/layout.svg
@@ -0,0 +1,920 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1650"
+   height="2550"
+   version="1.1"
+   id="svg6"
+   sodipodi:docname="layout.svg"
+   inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview8"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="1183.328"
+     inkscape:cy="683.50131"
+     inkscape:current-layer="svg6"
+     inkscape:snap-grids="true"
+     inkscape:document-rotation="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid14" />
+  </sodipodi:namedview>
+  <image
+     sodipodi:absref="/home/tor/src/rally/public/1989-dawn-of-freedom/map75.png"
+     xlink:href="../map75.png"
+     style="display:inline;opacity:1"
+     id="image2"
+     sodipodi:insensitive="true"
+     image-rendering="pixelated"
+     height="2550"
+     width="1650"
+     y="0"
+     x="0" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect16"
+     width="127"
+     height="76"
+     x="148"
+     y="86"
+     inkscape:label="Schwerin" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect18"
+     width="127"
+     height="76"
+     x="299"
+     y="53"
+     inkscape:label="Rostock" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect22"
+     width="127"
+     height="75"
+     x="329"
+     y="148"
+     inkscape:label="Berlin" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect26"
+     width="127"
+     height="76"
+     x="81"
+     y="239"
+     inkscape:label="German Writers" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect28"
+     width="127"
+     height="76"
+     x="234"
+     y="240"
+     inkscape:label="Walter Ulbricht Academy" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect30"
+     width="127"
+     height="76"
+     x="391"
+     y="271"
+     inkscape:label="Lutheran Church" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect32"
+     width="127"
+     height="75"
+     x="574"
+     y="263"
+     inkscape:label="Szczecin" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect36"
+     width="127"
+     height="76"
+     x="896"
+     y="277"
+     inkscape:label="Gdansk" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect38"
+     width="127"
+     height="75"
+     x="79"
+     y="352"
+     inkscape:label="Magdeburg" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect40"
+     width="127"
+     height="75"
+     x="231"
+     y="357"
+     inkscape:label="Halle" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect42"
+     width="127"
+     height="76"
+     x="38"
+     y="455"
+     inkscape:label="Erfurt" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect44"
+     width="127"
+     height="75"
+     x="184"
+     y="492"
+     inkscape:label="Karl-Marx-Stadt" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect46"
+     width="127"
+     height="76"
+     x="343"
+     y="479"
+     inkscape:label="Dresden" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect48"
+     width="127"
+     height="76"
+     x="211"
+     y="615"
+     inkscape:label="Plzen" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect50"
+     width="128"
+     height="76"
+     x="491"
+     y="677"
+     inkscape:label="Charles University" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect54"
+     width="127"
+     height="75"
+     x="595"
+     y="565"
+     inkscape:label="Wroclaw" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect56"
+     width="127"
+     height="75"
+     x="802"
+     y="558"
+     inkscape:label="Catholic Church, Poland" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect58"
+     width="127"
+     height="76"
+     x="959"
+     y="620"
+     inkscape:label="Lodz" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect60"
+     width="127"
+     height="75"
+     x="1032"
+     y="490"
+     inkscape:label="Warszawa" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect62"
+     width="127"
+     height="76"
+     x="671"
+     y="452"
+     inkscape:label="Poznan" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect67"
+     width="127"
+     height="76"
+     x="872"
+     y="388"
+     inkscape:label="Bydgoszcz" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect71"
+     width="127"
+     height="76"
+     x="1202"
+     y="436"
+     inkscape:label="Bialystok" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect75"
+     width="127"
+     height="77"
+     x="260"
+     y="765"
+     inkscape:label="Ceske Budejovice" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect77"
+     width="127"
+     height="75"
+     x="412"
+     y="782"
+     inkscape:label="Praha" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect79"
+     width="127"
+     height="76"
+     x="573"
+     y="773"
+     inkscape:label="Czech Writers" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect81"
+     width="127"
+     height="76"
+     x="733"
+     y="723"
+     inkscape:label="Katowice" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect83"
+     width="127"
+     height="76"
+     x="911"
+     y="761"
+     inkscape:label="Krakow" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect85"
+     width="127"
+     height="76"
+     x="1124"
+     y="754"
+     inkscape:label="Lublin" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect87"
+     width="127"
+     height="76"
+     x="870"
+     y="867"
+     inkscape:label="Jagiellonian University" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect89"
+     width="127"
+     height="75"
+     x="1051"
+     y="883"
+     inkscape:label="Polish Writers" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect91"
+     width="127"
+     height="75"
+     x="673"
+     y="868"
+     inkscape:label="Ostrava" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect97"
+     width="127"
+     height="76"
+     x="521"
+     y="904"
+     inkscape:label="Brno" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect99"
+     width="127"
+     height="76"
+     x="539"
+     y="1013"
+     inkscape:label="Bratislava" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect101"
+     width="127"
+     height="75"
+     x="692"
+     y="1010"
+     inkscape:label="Catholic Church, Czechoslovakia" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect103"
+     width="127"
+     height="75"
+     x="844"
+     y="1010"
+     inkscape:label="Presov" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect105"
+     width="127"
+     height="76"
+     x="995"
+     y="1037"
+     inkscape:label="Kosice" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect109"
+     width="127"
+     height="76"
+     x="409"
+     y="1126"
+     inkscape:label="Catholic Church, Hungary" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect111"
+     width="127"
+     height="76"
+     x="560"
+     y="1129"
+     inkscape:label="Gyor" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect113"
+     width="127"
+     height="75"
+     x="706"
+     y="1126"
+     inkscape:label="Tatabanya" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect115"
+     width="127"
+     height="76"
+     x="851"
+     y="1146"
+     inkscape:label="Miskolc" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect117"
+     width="127"
+     height="76"
+     x="1000"
+     y="1192"
+     inkscape:label="Debrecen" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect119"
+     width="127"
+     height="76"
+     x="410"
+     y="1224"
+     inkscape:label="Szombathely" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect121"
+     width="127"
+     height="75"
+     x="571"
+     y="1223"
+     inkscape:label="Szekesfehervar" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect123"
+     width="127"
+     height="76"
+     x="809"
+     y="1249"
+     inkscape:label="Budapest" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect129"
+     width="127"
+     height="76"
+     x="812"
+     y="1364"
+     inkscape:label="Szeged" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect131"
+     width="127"
+     height="76"
+     x="658"
+     y="1314"
+     inkscape:label="Eotvos Lorand University" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect133"
+     width="127"
+     height="76"
+     x="452"
+     y="1322"
+     inkscape:label="Hungarian Writers" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect135"
+     width="127"
+     height="75"
+     x="626"
+     y="1406"
+     inkscape:label="Pecs" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect137"
+     width="127"
+     height="76"
+     x="1369"
+     y="1395"
+     inkscape:label="Iasi" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect139"
+     width="127"
+     height="76"
+     x="1169"
+     y="1443"
+     inkscape:label="Targu Mures" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect141"
+     width="127"
+     height="76"
+     x="970"
+     y="1429"
+     inkscape:label="Cluj-Napoca" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect143"
+     width="127"
+     height="76"
+     x="767"
+     y="1531"
+     inkscape:label="Timisoara" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect145"
+     width="127"
+     height="75"
+     x="947"
+     y="1625"
+     inkscape:label="Romanian Writers" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect147"
+     width="127"
+     height="75"
+     x="958"
+     y="1529"
+     inkscape:label="Babes-Bolyai University" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect149"
+     width="127"
+     height="75"
+     x="1186"
+     y="1560"
+     inkscape:label="Harghita/Covasna" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect151"
+     width="127"
+     height="75"
+     x="1339"
+     y="1556"
+     inkscape:label="Brasov" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect153"
+     width="127"
+     height="76"
+     x="1356"
+     y="1671"
+     inkscape:label="Ploiesti" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect155"
+     width="127"
+     height="76"
+     x="1409"
+     y="1778"
+     inkscape:label="Galati" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect157"
+     width="127"
+     height="76"
+     x="1186"
+     y="1837"
+     inkscape:label="Bucuresti" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect159"
+     width="127"
+     height="76"
+     x="977"
+     y="1793"
+     inkscape:label="Craiova" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect161"
+     width="127"
+     height="76"
+     x="1094"
+     y="1700"
+     inkscape:label="Orthodox Church, Romania" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect163"
+     width="127"
+     height="76"
+     x="387"
+     y="379"
+     inkscape:label="Leipzig" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect165"
+     width="127"
+     height="76"
+     x="979"
+     y="1948"
+     inkscape:label="Pleven" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect167"
+     width="127"
+     height="76"
+     x="1130"
+     y="1956"
+     inkscape:label="Orthodox Church, Bulgaria" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect169"
+     width="127"
+     height="76"
+     x="1277"
+     y="1956"
+     inkscape:label="Ruse" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect171"
+     width="127"
+     height="76"
+     x="1443"
+     y="1925"
+     inkscape:label="Constanta" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect175"
+     width="127"
+     height="76"
+     x="828"
+     y="2095"
+     inkscape:label="Sofia University" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect177"
+     width="127"
+     height="76"
+     x="983"
+     y="2098"
+     inkscape:label="Sofia" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect179"
+     width="127"
+     height="75"
+     x="1133"
+     y="2153"
+     inkscape:label="Stara Zagora" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect181"
+     width="127"
+     height="76"
+     x="1289"
+     y="2152"
+     inkscape:label="Burgas" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect183"
+     width="127"
+     height="76"
+     x="1219"
+     y="2057"
+     inkscape:label="Razgrad" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect185"
+     width="127"
+     height="76"
+     x="1387"
+     y="2051"
+     inkscape:label="Varna" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect187"
+     width="127"
+     height="75"
+     x="1144"
+     y="2251"
+     inkscape:label="Sliven" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect189"
+     width="127"
+     height="75"
+     x="987"
+     y="2209"
+     inkscape:label="Plovdiv" />
+  <rect
+     style="display:inline;fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect191"
+     width="127"
+     height="76"
+     x="838"
+     y="2192"
+     inkscape:label="Bulgarian Writers" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect207"
+     width="48"
+     height="48"
+     x="1381"
+     y="1080"
+     inkscape:label="ussr_1" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect209"
+     width="48"
+     height="48"
+     x="1381"
+     y="1134"
+     inkscape:label="ussr_2" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect211"
+     width="48"
+     height="48"
+     x="1381"
+     y="1188"
+     inkscape:label="ussr_3" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect213"
+     width="48"
+     height="48"
+     x="1381"
+     y="1243"
+     inkscape:label="ussr_4" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect215"
+     width="48"
+     height="48"
+     x="1381"
+     y="1297"
+     inkscape:label="ussr_5" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect217"
+     width="47"
+     height="47"
+     x="53"
+     y="2128"
+     inkscape:label="tst_dem_1" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect229"
+     width="47"
+     height="47"
+     x="469"
+     y="2128"
+     inkscape:label="tst_dem_7" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect231"
+     width="47"
+     height="47"
+     x="556"
+     y="2128"
+     inkscape:label="tst_dem_8" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect236"
+     width="47"
+     height="47"
+     x="53"
+     y="2257"
+     inkscape:label="tst_com_1" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect248"
+     width="47"
+     height="47"
+     x="469"
+     y="2257"
+     inkscape:label="tst_com_7" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect250"
+     width="47"
+     height="47"
+     x="556"
+     y="2257"
+     inkscape:label="tst_com_8" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect252"
+     width="55"
+     height="51"
+     x="215"
+     y="2395"
+     inkscape:label="vp_neg_20" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect254"
+     width="55"
+     height="50"
+     x="246"
+     y="2456"
+     inkscape:label="vp_neg_19" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect256"
+     width="55"
+     height="51"
+     x="843"
+     y="2425"
+     inkscape:label="vp_0" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect258"
+     width="55"
+     height="50"
+     x="883"
+     y="2395"
+     inkscape:label="vp_1" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect260"
+     width="55"
+     height="50"
+     x="1440"
+     y="2395"
+     inkscape:label="vp_19" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect262"
+     width="55"
+     height="51"
+     x="1471"
+     y="2455"
+     inkscape:label="vp_20" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect264"
+     width="56"
+     height="51"
+     x="913"
+     y="2455"
+     inkscape:label="vp_2" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect266"
+     width="56"
+     height="51"
+     x="803"
+     y="2455"
+     inkscape:label="vp_neg_1" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect268"
+     width="56"
+     height="51"
+     x="772"
+     y="2395"
+     inkscape:label="vp_neg_2" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect24"
+     width="40"
+     height="41"
+     x="222"
+     y="179"
+     inkscape:label="event_the_wall" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect34"
+     width="44"
+     height="43"
+     x="779"
+     y="270"
+     inkscape:label="event_solidarity_legalized" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect193"
+     width="47"
+     height="48"
+     x="655"
+     y="81"
+     inkscape:label="turn_1" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect195"
+     width="48"
+     height="44"
+     x="708"
+     y="143"
+     inkscape:label="action_1" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect203"
+     width="48"
+     height="48"
+     x="1133"
+     y="80"
+     inkscape:label="turn_10" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect205"
+     width="47"
+     height="43"
+     x="1080"
+     y="143"
+     inkscape:label="action_8" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect52"
+     width="44"
+     height="39"
+     x="463"
+     y="624"
+     inkscape:label="country_czechoslovakia" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect69"
+     width="44"
+     height="39"
+     x="1188"
+     y="292"
+     inkscape:label="country_poland" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect73"
+     width="43"
+     height="37"
+     x="560"
+     y="160"
+     inkscape:label="country_east_germany" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect125"
+     width="44"
+     height="39"
+     x="1034"
+     y="1319"
+     inkscape:label="country_hungary" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect127"
+     width="44"
+     height="39"
+     x="1287"
+     y="1349"
+     inkscape:label="country_romania" />
+  <rect
+     style="fill:#00fff2;fill-opacity:0.566802;stroke-width:0.355276"
+     id="rect173"
+     width="46"
+     height="41"
+     x="915"
+     y="1999"
+     inkscape:label="country_bulgaria" />
+</svg>
-- 
cgit v1.2.3


From af8119ac8f66aa81277c307ebc2e4be519219191 Mon Sep 17 00:00:00 2001
From: Tor Andersson <tor@ccxvii.net>
Date: Sun, 27 Oct 2024 00:58:11 +0200
Subject: Update favicon.

---
 favicon.png                  | Bin 10723 -> 0 bytes
 images/Hammer_and_sickle.svg |   5 +++++
 images/favicon_com.svg       |   5 +++++
 images/favicon_dem.svg       |  39 +++++++++++++++++++++++++++++++++++++++
 play.html                    |   2 +-
 5 files changed, 50 insertions(+), 1 deletion(-)
 delete mode 100644 favicon.png
 create mode 100644 images/Hammer_and_sickle.svg
 create mode 100644 images/favicon_com.svg
 create mode 100644 images/favicon_dem.svg

(limited to 'images')

diff --git a/favicon.png b/favicon.png
deleted file mode 100644
index 7431f53..0000000
Binary files a/favicon.png and /dev/null differ
diff --git a/images/Hammer_and_sickle.svg b/images/Hammer_and_sickle.svg
new file mode 100644
index 0000000..4aa6dd0
--- /dev/null
+++ b/images/Hammer_and_sickle.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="600" height="600">
+<path fill="#c00" d="M0 0h600v600H0z"/>
+<path fill="gold" d="m157.543 922.363-16.971 16.971-45.256 45.254-56.571 56.57 62.227 62.225 56.571-56.568 299.828 299.812a32 32 0 0 0 45.256 0 32 32 0 0 0 0-45.254l-299.826-299.814 16.971-16.971 50.915-50.91z" transform="translate(43 -799)"/>
+<path fill="gold" d="M255.989 844s168.008 128 168.008 256c0 64-56.003 136-152.007 136-64.003 0-104.241-47.764-104.241-47.764l-11.313 11.313a16 16 0 0 0-22.628 0 16 16 0 0 0-2.48 3.223 32 32 0 0 0-31.463 8.091 32 32 0 0 0-9.331 21.545c-25.432 13.753-67.565 40.575-86.27 75.592l.03.029a32 32 0 0 0-.03 31.971 32 32 0 0 0 43.715 11.713c35.026-18.708 61.855-60.852 75.605-86.281a32 32 0 0 0 21.537-9.315 32 32 0 0 0 7.932-13.201C177.569 1265.97 224.497 1300 287.99 1300c96.005 0 200.01-72 200.01-200 0-160-232.011-256-232.011-256" transform="translate(43 -799)"/>
+</svg>
diff --git a/images/favicon_com.svg b/images/favicon_com.svg
new file mode 100644
index 0000000..9f9cc3b
--- /dev/null
+++ b/images/favicon_com.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="56.693" height="56.693">
+<path fill="#bf2329" stroke-width="1.33333" d="M56.693 49.135c0 4.157-3.402 7.558-7.558 7.558H7.559C3.403 56.693 0 53.292 0 49.135V7.56C0 3.403 3.403 0 7.559 0h41.576c4.156 0 7.558 3.403 7.558 7.56z"/>
+<path fill="#f14d3e" stroke-width="1.33333" d="m15.776 26.877-4.195-4.024 9.55-9.549 6.896 1.273-5.411 5.518S48.01 44.104 49.07 45.27s.069 2.412-.462 3.046c-.53.639-1.921 1.454-2.993.394-1.143-1.126-25.419-26.14-25.419-26.14Z"/>
+<path fill="#f14d3e" stroke-width="1.33333" d="M15.765 35.833s10.248 5.45 16.268 4.802c6.02-.65 11.714-3.5 11.47-14.482-.244-10.978-15.538-20.7-15.538-20.7s21.07 5.328 21.556 22.043c.408 13.96-8.052 19.199-16.592 18.792S16.496 38.76 16.496 38.76l-.65.57.023.046s.642 1.343.114 1.95c-1.006 1.16-1.939-.067-2.46.474-.52.538-1.572 4.027-3.17 5.596-1.596 1.567-3.029 2.192-4.104 1.655l-.424-.339c-.666-1-.221-2.5 1.138-4.276 1.361-1.777 4.693-3.25 5.164-3.833s-.86-1.36.166-2.497c.542-.598 1.951-.128 1.951-.128z"/>
+</svg>
diff --git a/images/favicon_dem.svg b/images/favicon_dem.svg
new file mode 100644
index 0000000..d91fcc7
--- /dev/null
+++ b/images/favicon_dem.svg
@@ -0,0 +1,39 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="56.693" height="56.693">
+<path fill="#397dc6" stroke-width="1.33333" d="M56.693 49.135c0 4.157-3.401 7.558-7.56 7.558H7.56c-4.159 0-7.56-3.401-7.56-7.558V7.56C0 3.403 3.401 0 7.56 0h41.573c4.159 0 7.56 3.403 7.56 7.56z"/>
+<path fill="#c9e7f6" d="M12.596 23.901c1.639 1.472 2.416 3.67 3.388 5.69.445.925 1.07 1.758 1.413 2.669-2.305.21-2.298 2.644-2.6 4.485-.36 2.218-2.225 3.042-2.906 4.956-.65 1.82 1.081 4.32 1.778 6.002.891 2.136 1.495 3.628 3.011 5.28a105 105 0 0 0 2.621 2.732c.267.269 22.207.226 22.088-.06-1.252-3.046-1.738-6.672-2.432-9.847-.445-2.043-1.148-4.388-2.261-6.273-1.168-1.98-2.559-3.516-3.364-5.728-1.484-4.078-2.361-8.171-2.93-12.38-.285-2.111-.091-4.215-.514-6.304-.415-2.051-.717-4.036-1.024-6.127-.148-1.019-.599-2.116-.844-3.11-.252-1.029-.244-2.2-.763-3.162-.966-1.796-3.573-1.921-4.641-.18-1.115 1.816-.088 4.136.141 6.02.256 2.103.69 4.113.714 6.277.02 1.902-.115 4.058.094 5.927.162 1.419 1.703 6.29-.33 7.019-1.944.696-4.043-5.71-5.12-6.88-1.446-1.576-2.592-3.17-3.896-4.872-.659-.86-1.704-1.495-2.375-2.374-.636-.833-1.057-1.742-1.69-2.556-1.19-1.526-2.586-3.532-4.771-2.912-3.268.93-1.066 3.027-.068 4.627 1.21 1.936 2.172 4.095 3.24 6.1 1.189 2.241 2.172 3.303 4.041 4.981"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M12.596 23.901c1.639 1.472 2.416 3.67 3.388 5.69.445.925 1.07 1.758 1.413 2.669-2.305.21-2.298 2.644-2.6 4.485-.36 2.218-2.225 3.042-2.906 4.956-.65 1.82 1.081 4.32 1.778 6.002.891 2.136 1.495 3.628 3.011 5.28a105 105 0 0 0 2.621 2.732c.267.269 22.207.226 22.088-.06-1.252-3.046-1.738-6.672-2.432-9.847-.445-2.043-1.148-4.388-2.261-6.273-1.168-1.98-2.559-3.516-3.364-5.728-1.484-4.078-2.361-8.171-2.93-12.38-.285-2.111-.091-4.215-.514-6.304-.415-2.051-.717-4.036-1.024-6.127-.148-1.019-.599-2.116-.844-3.11-.252-1.029-.244-2.2-.763-3.162-.966-1.796-3.573-1.921-4.641-.18-1.115 1.816-.088 4.136.141 6.02.256 2.103.69 4.113.714 6.277.02 1.902-.115 4.058.094 5.927.162 1.419 1.703 6.29-.33 7.019-1.944.696-4.043-5.71-5.12-6.88-1.446-1.576-2.592-3.17-3.896-4.872-.659-.86-1.704-1.495-2.375-2.374-.636-.833-1.057-1.742-1.69-2.556-1.19-1.526-2.586-3.532-4.771-2.912-3.268.93-1.066 3.027-.068 4.627 1.21 1.936 2.172 4.095 3.24 6.1 1.189 2.241 2.172 3.303 4.041 4.981Z"/>
+<path fill="#c9e7f6" d="M22.067 43.815c.028.964 2.948 4.393 3.92 4.742.95.343 2.18-.334 2.734-1.09.762-1.034.252-1.574-.064-2.687"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M22.067 43.815c.028.964 2.948 4.393 3.92 4.742.95.343 2.18-.334 2.734-1.09.762-1.034.252-1.574-.064-2.687"/>
+<path fill="#c9e7f6" d="M22.11 36.904c-1.137-2.36-2.629-4.552-4.99-4.643"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M22.11 36.904c-1.137-2.36-2.629-4.552-4.99-4.643"/>
+<path fill="#c9e7f6" d="M17.435 39.92c-.864-.35-1.984-2.365-2.672-3.004"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M17.435 39.92c-.864-.35-1.984-2.365-2.672-3.004"/>
+<path fill="#c9e7f6" d="M13.153 45.347c1.788.902 4.271 1.132 6.227 2.028 1.33.612 4.64 3.029 5.283.246"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M13.153 45.347c1.788.902 4.271 1.132 6.227 2.028 1.33.612 4.64 3.029 5.283.246"/>
+<path fill="#c9e7f6" d="M26.685 48.64c-.194 1.553 1.607 5.475 3.056 6.033"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M26.685 48.64c-.194 1.553 1.607 5.475 3.056 6.033"/>
+<path fill="#c9e7f6" d="M36.363 53.787c1.52-.763 1.7-3.222 1.734-4.663"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M36.363 53.787c1.52-.763 1.7-3.222 1.734-4.663"/>
+<path fill="#c9e7f6" d="M24.767 44.97c.044-.105-.142-.3.06-.206.232 1.135.497 1.916 1.656 1.864 1.346-.06 1.734-1.053 1.373-1.921"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M24.767 44.97c.044-.105-.142-.3.06-.206.232 1.135.497 1.916 1.656 1.864 1.346-.06 1.734-1.053 1.373-1.921"/>
+<path fill="#c9e7f6" d="M23.027 45.807c-.366.088-.774.366-1.094.548.378 1.145 1.726 1.873 2.794 1.082"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M23.027 45.807c-.366.088-.774.366-1.094.548.378 1.145 1.726 1.873 2.794 1.082"/>
+<path fill="#c9e7f6" d="M9.147 16.643c.71-.547 1.516-.948 2.185-1.51"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M9.147 16.643c.71-.547 1.516-.948 2.185-1.51"/>
+<path fill="#c9e7f6" d="M23.459 9.145c.205.456 3.172-.005 3.95-.062"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M23.459 9.145c.205.456 3.172-.005 3.95-.062"/>
+<path fill="#c9e7f6" d="M24.967 15.467c.777.642 2.55.461 3.393.05"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M24.967 15.467c.777.642 2.55.461 3.393.05"/>
+<path fill="#c9e7f6" d="M12.273 22.184c.827-.956 2.439-1.7 3.438-2.725"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M12.273 22.184c.827-.956 2.439-1.7 3.438-2.725"/>
+<path fill="#c9e7f6" d="M15.327 48.59c-.05-.018-.378 0-.2-.058.706-.39 1.701-1.087 2.141-1.641"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M15.327 48.59c-.05-.018-.378 0-.2-.058.706-.39 1.701-1.087 2.141-1.641"/>
+<path fill="#c9e7f6" d="M28.292 32.245c.01 1.31-.49 2.995-.867 4.248"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M28.292 32.245c.01 1.31-.49 2.995-.867 4.248"/>
+<path fill="#c9e7f6" d="M35.592 39.455c3.513.042 1.235 6.358.215 6.176"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M35.592 39.455c3.513.042 1.235 6.358.215 6.176"/>
+<path fill="#c9e7f6" d="M33.703 37.757c-1.046 1.09-4.423.055-5.642-.492-1.912-.86-3.79-1.188-5.872-.586-1.685.488-4.242 1.362-4.461 3.44-.233 2.222 2.476 3.273 4.197 3.726 3.288.87 6.608.776 9.867 1.724"/>
+<path fill="none" stroke="#34699f" stroke-width=".9999974999999999" d="M33.703 37.757c-1.046 1.09-4.423.055-5.642-.492-1.912-.86-3.79-1.188-5.872-.586-1.685.488-4.242 1.362-4.461 3.44-.233 2.222 2.476 3.273 4.197 3.726 3.288.87 6.608.776 9.867 1.724"/>
+<path fill="#c9e7f6" d="M0 0c-.251-1.043-.621-1.581-1.709-1.516-.864.051-1.969.639-1.608 1.67.739 2.116 4.618 1.012 2.745-1.349" transform="matrix(1.33333 0 0 -1.33333 23.719 40.57)"/>
+<path fill="none" stroke="#34699f" stroke-width=".75" d="M0 0c-.251-1.043-.621-1.581-1.709-1.516-.864.051-1.969.639-1.608 1.67.739 2.116 4.618 1.012 2.745-1.349" transform="matrix(1.33333 0 0 -1.33333 23.719 40.57)"/>
+</svg>
diff --git a/play.html b/play.html
index f510ba0..d90c6ad 100644
--- a/play.html
+++ b/play.html
@@ -6,7 +6,7 @@
 <meta name="theme-color" content="#444">
 <meta charset="utf-8">
 <title>1989</title>
-<link rel="icon" href="favicon.png">
+<link rel="icon" href="images/Hammer_and_sickle.svg">
 <link rel="stylesheet" href="/fonts/fonts.css">
 <link rel="stylesheet" href="/common/client.css">
 <link rel="stylesheet" href="play.css">
-- 
cgit v1.2.3