Bimba.git

commit 076a9923c8d5f588489aae6a667e82a5763a3475

Author: Adam Pioterek <adam.pioterek@protonmail.ch>

research/PKP

 .gitignore | 2 
 research/badges.md | 5 
 research/bundle.pem | 83 ----
 research/icon.md | 4 
 research/peka-vm-api.md | 524 ++++++++++++++++++++++++++++++
 research/pkp | 37 ++
 research/svg/departure_timetable.svg | 38 ++
 research/svg/download.svg | 4 
 research/svg/favourite.svg | 5 
 research/svg/info.svg | 4 
 research/svg/logo.svg | 260 ++++++++++++++
 research/svg/low_floor.svg | 77 ++++
 research/svg/more.svg | 4 
 research/svg/nodb.svg | 67 +++
 research/svg/timetable_full.svg | 35 ++
 research/svg/vm.svg | 59 +++


diff --git a/.gitignore b/.gitignore
index f59b45660e95a0a997e5ddfb6988bdd928658004..83957113cd0e2c9f668217158c710892a728a3fb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,5 +45,5 @@ /captures
 .externalNativeBuild
 
 app/release/
-research/
+research/localonly
 database/timetable*




diff --git a/research/Specyfikacja-GTFS-07.12.2017.pdf b/research/Specyfikacja-GTFS-07.12.2017.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0655f1a852018ad8d5a55c9aaa09360f3097e118
Binary files /dev/null and b/research/Specyfikacja-GTFS-07.12.2017.pdf differ




diff --git a/research/badges.md b/research/badges.md
deleted file mode 100644
index 34c5ea6f822b37f8dcdd400d596d52f70eb56696..0000000000000000000000000000000000000000
--- a/research/badges.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# CodeCov
-
-* [website](https://codecov.io/)
-* [example android](https://github.com/codecov/example-android)
-* [with travis](https://github.com/codecov/example-android/blob/master/.travis.yml)




diff --git a/research/bundle.pem b/research/bundle.pem
deleted file mode 100644
index 12585890132ce18cf3ebf0ac2819017cba1e3123..0000000000000000000000000000000000000000
--- a/research/bundle.pem
+++ /dev/null
@@ -1,83 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT
-MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
-YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG
-EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg
-R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9
-9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq
-fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv
-iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU
-1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+
-bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW
-MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA
-ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l
-uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn
-Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS
-tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
-PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un
-hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
-5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIETTCCAzWgAwIBAgIDAjpxMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlVT
-MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
-YWwgQ0EwHhcNMTMxMjExMjM0NTUxWhcNMjIwNTIwMjM0NTUxWjBCMQswCQYDVQQG
-EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSUmFwaWRTU0wg
-U0hBMjU2IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1jBEgEu
-l9h9GKrIwuWF4hdsYC7JjTEFORoGmFbdVNcRjFlbPbFUrkshhTIWX1SG5tmx2GCJ
-a1i+ctqgAEJ2sSdZTM3jutRc2aZ/uyt11UZEvexAXFm33Vmf8Wr3BvzWLxmKlRK6
-msrVMNI4/Bk7WxU7NtBDTdFlodSLwWBBs9ZwF8w5wJwMoD23ESJOztmpetIqYpyg
-C04q18NhWoXdXBC5VD0tA/hJ8LySt7ecMcfpuKqCCwW5Mc0IW7siC/acjopVHHZD
-dvDibvDfqCl158ikh4tq8bsIyTYYZe5QQ7hdctUoOeFTPiUs2itP3YqeUFDgb5rE
-1RkmiQF1cwmbOwIDAQABo4IBSjCCAUYwHwYDVR0jBBgwFoAUwHqYaI2J+6sFZAwR
-fap9ZbjKzE4wHQYDVR0OBBYEFJfCJ1CewsnsDIgyyHyt4qYBT9pvMBIGA1UdEwEB
-/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDYGA1UdHwQvMC0wK6ApoCeGJWh0
-dHA6Ly9nMS5zeW1jYi5jb20vY3Jscy9ndGdsb2JhbC5jcmwwLwYIKwYBBQUHAQEE
-IzAhMB8GCCsGAQUFBzABhhNodHRwOi8vZzIuc3ltY2IuY29tMEwGA1UdIARFMEMw
-QQYKYIZIAYb4RQEHNjAzMDEGCCsGAQUFBwIBFiVodHRwOi8vd3d3Lmdlb3RydXN0
-LmNvbS9yZXNvdXJjZXMvY3BzMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTeW1h
-bnRlY1BLSS0xLTU2OTANBgkqhkiG9w0BAQsFAAOCAQEANevhiyBWlLp6vXmp9uP+
-bji0MsGj21hWID59xzqxZ2nVeRQb9vrsYPJ5zQoMYIp0TKOTKqDwUX/N6fmS/Zar
-RfViPT9gRlATPSATGC6URq7VIf5Dockj/lPEvxrYrDrK3maXI67T30pNcx9vMaJR
-BBZqAOv5jUOB8FChH6bKOvMoPF9RrNcKRXdLDlJiG9g4UaCSLT+Qbsh+QJ8gRhVd
-4FB84XavXu0R0y8TubglpK9YCa81tGJUheNI3rzSkHp6pIQNo0LyUcDUrVNlXWz4
-Px8G8k/Ll6BKWcZ40egDuYVtLLrhX7atKz4lecWLVtXjCYDqwSfC2Q7sRwrp0Mr8
-2A==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIGZTCCBU2gAwIBAgIQCWJPhs8z+oLr80YZnKUBTjANBgkqhkiG9w0BAQsFADBC
-MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMS
-UmFwaWRTU0wgU0hBMjU2IENBMB4XDTE3MDYyMjAwMDAwMFoXDTE4MDYyMjIzNTk1
-OVowHDEaMBgGA1UEAwwRd3d3Lnp0bS5wb3puYW4ucGwwggIiMA0GCSqGSIb3DQEB
-AQUAA4ICDwAwggIKAoICAQCn/bPI4eRB/t1KyfVyb7QtesUzDQ0xgqUg/I4SasJZ
-wj1G1fmkP9r7e1pACZ3SVrZwezqfa0dpRtSt6RYyqI70hdklLRAc4PsQb6ZWaOuz
-Lg118OK4vDBAono+AlD0vNEdeF1vunQHsGCKvZ4V9SrNv3v86xw1iHZB1E3zupXx
-xLrJSuD4D3HfUaiVwJnE0rF/2b2SF9WstSSczJm5b31uI8+CbCgThv380J/sMAKn
-0UKHaxd+qZWbDMIS0OLc6kdFnm2fNrmwiSNtnE6bMaZBq9igCA41hMriGgBH2h0q
-6AqlxK47DCDRi08H3DEBmi0mRmHdxu2AbEnHPPZuhOUvoHIwAiirI3Siivy2CLm1
-mBoHtrgK9OoID6bsSjhPG/zDBT4wd5QAOwNSQ9ncQy0lEyC3pQ80P4pVo8Oq0HlW
-BPmlUWfD7C7Dh+h0RMP+aN0KD9oDL7Fx9zNZBjqqYSuqczPZIcSPi7c9YP4g/c2r
-SgmhAl/4EDN6UVZy8lWyD178OL5GoeCxWaxspCry5h5PAMsr+sftgXx9/Z4ymi/8
-W6LUfeCmehmtxHWoTpCgT52Q9wQmqnZphj9KLNCqKpJRNV5YrAxc4ZDEJaxZI/ZS
-TFptJKVJstBKfeBw203gaye8U4xiVxrSLOJqEL65kjZg1LOSCn315iPH7zTR1xS2
-GQIDAQABo4ICezCCAncwHAYDVR0RBBUwE4IRd3d3Lnp0bS5wb3puYW4ucGwwCQYD
-VR0TBAIwADArBgNVHR8EJDAiMCCgHqAchhpodHRwOi8vZ3Auc3ltY2IuY29tL2dw
-LmNybDBvBgNVHSAEaDBmMGQGBmeBDAECATBaMCoGCCsGAQUFBwIBFh5odHRwczov
-L3d3dy5yYXBpZHNzbC5jb20vbGVnYWwwLAYIKwYBBQUHAgIwIAweaHR0cHM6Ly93
-d3cucmFwaWRzc2wuY29tL2xlZ2FsMB8GA1UdIwQYMBaAFJfCJ1CewsnsDIgyyHyt
-4qYBT9pvMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
-BQUHAwIwVwYIKwYBBQUHAQEESzBJMB8GCCsGAQUFBzABhhNodHRwOi8vZ3Auc3lt
-Y2QuY29tMCYGCCsGAQUFBzAChhpodHRwOi8vZ3Auc3ltY2IuY29tL2dwLmNydDCC
-AQMGCisGAQQB1nkCBAIEgfQEgfEA7wB2AN3rHSt6DU+mIIuBrYFocH4ujp0B1VyI
-jT0RxM227L7MAAABXM9F02oAAAQDAEcwRQIgXZ3Ri+/TqCOBrN0h1bgZMeaMUGCq
-Z+X3x32HnilBFqwCIQDYH4+Vkc5PKYGU8zwSDPa5flQlOrnQSoZ1MmGzJzzWeAB1
-AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABXM9F06EAAAQDAEYw
-RAIgHPwBJvn48rGK4XlKWYDaoA2JYu0ncaQVyJTOsccc64MCIGjc42DqWCyhSUAA
-TMFz6GVsglqfvv90bCk3yEoLyEQoMA0GCSqGSIb3DQEBCwUAA4IBAQCmXR1Pmo8J
-uMqVJe6NXklEmoFwM1UJ4td8fLrwMEYwaknFSmaB6JkjOS5cZ3Segb9XBY4sT9Ya
-AvF2kdOKA339UaSd+yimYYLt/KhO1nnYlNKrfGcjTnybuyczUDxsYR4N8FbTI9Yr
-Z0baIlbVmSax9tjxwFMLWkgcd6tbwzCs+XPjvKMwQgxfuu14a5lI9EMsE1jjgxpa
-jhedn5fNtKZdgaY9NVOsTkPSw79CzQfgSamSONyWaT949maFRe//sZPBOnE4jTBb
-VJrNbfm+H+NFv7bF1Js2xPkgJuGkuKVc1H1qoJX4lf1vfpaZSSmzbe2O6GXHKF4y
-MKlNUKhgoBO4
------END CERTIFICATE-----




diff --git a/research/icon.md b/research/icon.md
deleted file mode 100644
index bf702930d2bc29b0e333a5b8cbae6adf41d5f66b..0000000000000000000000000000000000000000
--- a/research/icon.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# icon ideas
-
-* tachograf
-* Poznań specific ones from: ![http://www.transportszynowy.pl/znaki2.gif](http://www.transportszynowy.pl/znaki2.gif)




diff --git a/research/peka-vm-api.md b/research/peka-vm-api.md
new file mode 100644
index 0000000000000000000000000000000000000000..d459a9f1fead3f2bf7e1c98bc8c50f18d19eb012
--- /dev/null
+++ b/research/peka-vm-api.md
@@ -0,0 +1,524 @@
+# Ostrzeżenie
+
+Autor tego dokumentu nie jest w jakikolwiek sposób powiązany z ZTM, a informacje służące do jego napisania zostały pozyskane przez analizę kodu wykorzystywanego przez stronę http://www.peka.poznan.pl/vm oraz pakietów wymienianych między serwerem i klientem podczas korzystania z niej.
+
+# Zapytanie
+
+Zapytanie wykonywane jest przez HTTP do hosta www.peka.poznan.pl i zasobu `/vm/method.vm` , z parametrem `ts` przekazywanym przez `GET` i zawierającym wynik javascriptowej `new Date().getTime()`. `Content-Type` zapytania musi być ustawione na `application/x-www-form-urlencoded; charset=UTF-8`, w przeciwnym razie znaki spoza standardowego zakresu ASCII nie będą działały poprawnie.
+
+Wszystkie znaki kodowane są jako UTF-8.
+
+Dane `POST` zapytania instruują serwer odnośnie funkcji, którą ma on wykonać. Nazwa funkcji mieści się w parametrze `method`, natomiast jej parametry jako JSON w `p0`. Implementacja przepuszcza jeszcze to, co idzie do `p0` przez `Object.toJSON`, ale serwer nie zdaje się zwracać na to uwagi.
+
+Wygląda na to, że serwer zawsze zwraca 200 OK, nawet gdy wywoła się funkcję, której nie posiada : jako wynik zapytania jest wtedy zwracany pusty JSON.
+
+Podanie niepoprawnych parametrów do funkcji kończy się zwróceniem obiektu JSON zawierającego komunikat błędu w atrybucie `failure`, np. :
+```javascript
+{  
+   "failure":"error: java.lang.reflect.InvocationTargetException"
+}
+```
+
+Poprawne wywołanie funkcji kończy się przesłaniem obiektu zawierającego w sobie obiekt `success`, którego znaczenie jest uzależnione od wywołanej funkcji. Obiekt ten jest pomijany w tym dokumencie w opisie wyjścia danej funkcji.
+
+W przykładach wykorzystywana jest funkcja `peka_vm_get`, której definicja w Bashu wygląda następująco :
+```bash
+peka_vm_get()
+{
+  curl -H 'Content-Type:application/x-www-form-urlencoded; charset=UTF-8' \
+    http://www.peka.poznan.pl/vm/method.vm?ts=$(($(date +'%s') * 1000)) \
+    -d "method=$1" \
+    -d "p0=$2"
+}
+```
+
+Jeśli parametr wejściowy jakiejś funkcji jest "wzorcem", należy go rozumieć jak wyszukiwanie z glob-gwiazdkami po obu stronach wzorca. Wielkość liter jest ignorowana. Powinno być to widoczne w przykładach.
+
+# Słowniczek
+* *bollard* - coś, co najwygodniej chyba wytłumaczyć jako "słupek". Jest to fizyczne miejsce, w którym zatrzymują się pojazdy. Na jeden przystanek może przypadać więcej niż jeden bollard : jeden dla pojazdów jadących w jednym kierunku, a drugi - w drugim. Dochodzą do tego jeszcze osobne punkty przystankowe dla linii nocnych. Przystanek AWF ma na przykład aż siedem takich punktów : dwa tramwajowe na Królowej Jadwigi, jeden tramwajowy na Garbarach, i autobusowe rozrzucone w różnych miejscach.
+
+# Funkcje
+## `getStopPoints`
+Pobiera listę przystanków o nazwie pasującej do zadanego wzorca.
+### Wejście
+* `pattern` - wzorzec, według którego serwer ma szukać przystanku.
+
+### Wyjście
+Tablica zawierająca obiekty, w których mamy :
+* `symbol` - identyfikator przystanku używany do późniejszych zapytań
+* `name` - pełna nazwa przystanku.
+
+### Przykład
+```
+peka_vm_get getStopPoints '{"pattern":"Pół"}'
+```
+```javascript
+{  
+   "success":[  
+      {  
+         "symbol":"BOZSZ",
+         "name":"Bolechowo-Os./Zespół Szkół"
+      },
+      {  
+         "symbol":"PRPLN",
+         "name":"Promnice/Północna"
+      },
+      {  
+         "symbol":"POLW",
+         "name":"Półwiejska"
+      }
+   ]
+}
+```
+
+## `getBollards`
+Chyba nieużywana. Dla pustego obiektu przesłanego w zapytaniu pobiera wszystkie bollardy.
+
+## `getBollardsByStopPoint`
+Zwraca listę bollardów dla danego przystanku i listę linii odjeżdżających z niego.
+
+### Wejście
+* `name` : nazwa przystanku, zwrócona w `getStopPoints`
+
+### Wyjście
+Obiekt `bollards`, będący tablicą obiektów `bollard` (opisanym w `getTimes`) i `directions`, który sam jest tablicą obiektów zawierających :
+* `returnVariant` : jakiś bool, z tego co widziałem prawie zawsze false.
+* `lineName` : nazwa linii odjeżdżającej z danego punktu,
+* `direction` : kierunek tejże linii.
+
+### Przykład
+```
+peka_vm_get getBollardsByStopPoint '{"name":"Termy Maltańskie"}'
+```
+```javascript
+{  
+   "success":{  
+      "bollards":[  
+         {  
+            "directions":[  
+               {  
+                  "returnVariant":false,
+                  "direction":"Rondo Rataje",
+                  "lineName":"84"
+               },
+               {  
+                  "returnVariant":false,
+                  "direction":"Termy Maltańskie",
+                  "lineName":"84"
+               },
+               {  
+                  "returnVariant":false,
+                  "direction":"Rondo Śródka",
+                  "lineName":"84"
+               },
+               {  
+                  "returnVariant":false,
+                  "direction":"Nowe ZOO",
+                  "lineName":"84"
+               }
+            ],
+            "bollard":{  
+               "symbol":"TEMA22",
+               "tag":"TEMA01",
+               "name":"Termy Maltańskie",
+               "mainBollard":false
+            }
+         }
+      ]
+   }
+}
+```
+
+## `getBollardsByStreet`
+Zwraca listę bollardów znajdujących się przy zadanej ulicy.
+
+### Wejście
+* `name` : nazwa ulicy
+
+### Wyjście
+To samo, co przy `getBollardsByStopPoint`.
+
+### Przykład
+```
+peka_vm_get getBollardsByStreet '{"name":"Lutycka"}'
+```
+```javascript
+{  
+   "success":{  
+      "bollards":[  
+         {  
+            "directions":[  
+               {  
+                  "returnVariant":false,
+                  "direction":"Szarych Szeregów",
+                  "lineName":"83"
+               }
+            ],
+            "bollard":{  
+               "symbol":"LU I21",
+               "tag":"LU I01",
+               "name":"Lutycka I n/ż",
+               "mainBollard":false
+            }
+         },
+         {  
+            "directions":[  
+               {  
+                  "returnVariant":false,
+                  "direction":"Szarych Szeregów",
+                  "lineName":"83"
+               }
+            ],
+            "bollard":{  
+               "symbol":"LUII21",
+               "tag":"LUII01",
+               "name":"Lutycka II n/ż",
+               "mainBollard":false
+            }
+         },
+         {  
+            "directions":[  
+               {  
+                  "returnVariant":false,
+                  "direction":"Rondo Śródka",
+                  "lineName":"83"
+               }
+            ],
+            "bollard":{  
+               "symbol":"LUII22",
+               "tag":"LUII02",
+               "name":"Lutycka II n/ż",
+               "mainBollard":false
+            }
+         },
+         {  
+            "directions":[  
+               {  
+                  "returnVariant":false,
+                  "direction":"Rondo Śródka",
+                  "lineName":"83"
+               }
+            ],
+            "bollard":{  
+               "symbol":"LU I22",
+               "tag":"LU I02",
+               "name":"Lutycka I n/ż",
+               "mainBollard":false
+            }
+         },
+         {  
+            "directions":[  
+               {  
+                  "returnVariant":false,
+                  "direction":"Poznań Główny",
+                  "lineName":"236"
+               }
+            ],
+            "bollard":{  
+               "symbol":"ROOB22",
+               "tag":"ROOB02",
+               "name":"Rondo Obornicka",
+               "mainBollard":false
+            }
+         },
+         {  
+            "directions":[  
+               {  
+                  "returnVariant":false,
+                  "direction":"Poznań Główny",
+                  "lineName":"246"
+               }
+            ],
+            "bollard":{  
+               "symbol":"ROOB21",
+               "tag":"ROOB01",
+               "name":"Rondo Obornicka",
+               "mainBollard":false
+            }
+         }
+      ]
+   }
+}
+```
+
+## `getBollardsByLine`
+Zwraca bollardy, przy których zatrzymuje się dana linia, włącznie z jej wariacjami wynikającymi z wyjazdami/zjazdami z/do zajezdni.
+
+### Wejście
+* `name` : nazwa linii
+
+### Wyjście
+Obiekt `directions`, będący tablicą obiektów zawierających w sobie obiekt `direction` i `bollards`. `direction` zawiera :
+* `returnVariant` - chyba `true` dla "powracającego", chociaż trudno mi się domyślić, jakie to ma naprawdę znaczenie.
+* `direction` - kierunek jazdy
+* `lineName` - nazwę linii.
+
+`bollards` to natomiast tablica obiektów zawierających wszystkie bollardy, przy których zatrzymuje się dana wariacja linii. Każdy z tych obiektów zawiera to samo, co `bollard` znajdujący się w wyniku `getBollardsByStopPoint`, ale z dodanym `orderNo`, czyli - chyba - kolejny numer przystanku dla linii. Atrybut ten pewnie być użyty do zrekonstruowania trasy danej linii i jej wariacji, ale nie udało mi się znaleźć na to jakiegoś algorytmu.
+
+### Przykład
+Pominięty ze względu na zbyt duży rozmiar.
+
+## `getLines`
+Pobiera linie komunikacji pasujące do zadanego wzorca.
+
+### Wejście
+* `pattern`
+
+### Wyjście
+Tablica zawierająca obiekty, których `name` zawiera pełną nazwę linii.
+
+### Przykład
+```
+peka_vm_get getLines '{"pattern":"16"}'
+```
+```javascript
+{  
+   "success":[  
+      {  
+         "name":"16"
+      },
+      {  
+         "name":"616"
+      },
+      {  
+         "name":"716"
+      }
+   ]
+}
+```
+## `getStreets`
+Pobiera listę ulic razem z ich identyfikatorami, pasującymi do zadanego wzorca.
+
+### Wejście
+* `pattern` : wzorzec.
+
+### Wyjście
+Tablica obiektów zawierających `id` ulicy do użycia w późniejszych zapytaniach, oraz `name`, czyli ich pełną nazwę.
+
+### Przykład
+```
+peka_vm_get getStreets '{"pattern":"Gło"}'
+```
+```javascript
+{  
+   "success":[  
+      {  
+         "id":3,
+         "name":"Głogowska"
+      },
+      {  
+         "id":159,
+         "name":"Koziegłowy/Gdyńska"
+      },
+      {  
+         "id":270,
+         "name":"Koziegłowy/Piaskowa"
+      },
+      {  
+         "id":167,
+         "name":"Koziegłowy/Piłsudskiego"
+      },
+      {  
+         "id":166,
+         "name":"Koziegłowy/Poznańska"
+      },
+      {  
+         "id":165,
+         "name":"Koziegłowy/Taczaka"
+      },
+      {  
+         "id":319,
+         "name":"Kórnik/pl. Niepodległości"
+      },
+      {  
+         "id":277,
+         "name":"Luboń/Niepodległości"
+      },
+      {  
+         "id":143,
+         "name":"al. Niepodległości"
+      },
+      {  
+         "id":6,
+         "name":"zajezdnia Głogowska"
+      }
+   ]
+}
+```
+
+## `getTimes`
+Pobiera szacowane czasy przyjazdu kolejnych pojazdów na zadany bollard.
+
+### Wejście
+* `symbol` : `tag` bollarda (niestety nie `symbol`, jak mogłoby się wydawać) wyciągnięty przez którąś z wariacji funkcji `getBollards`, dla którego pobrać listę przyjazdów.
+
+### Wyjście
+Dwa obiekty : `bollard` opisujący bollarda i zawierający :
+ * `symbol` - identyfikator bollarda w systemie,
+ *  `tag` - alternatywny identyfikator?,
+ *  `name` - nazwę przystanku, do którego należy bollard,
+ *  `mainBollard` - na razie widziałem tutaj tylko `false`, ale domyślam się, że może to być `true` dla "jednobollardowych" przystanków.
+
+Oraz obiekt `times` będący tablicą obiektów zawierających :
+* `realTime` - czy przyjazd jest podany w oparciu o położenie pojazdu na podstawie odczytu jego lokalizacji,
+* `minutes` - ile minut zostało do przyjazdu,
+* `direction` - kierunek trasy,
+* `onStopPoint` - czy pojazd aktualnie znajduje się na bollardzie,
+* `departure` - szacowany czas odjazdu podany jako `yyyy-MM-dd'T'HH:mm:ss.SSS'Z'`. **Nie** jest to ISO 8601, ponieważ końcowe `Z` sugerowałoby wtedy, że jest on podany w UTC. Tak się jednak nie dzieje : godzina podawana jest w czasie lokalnym , czyli CET albo CEST.
+* `line` - linia, którą obsługuje pojazd.
+
+### Przykład
+```
+peka_vm_get getTimes '{"symbol":"AWF03"}'
+```
+```javascript
+{
+   "success":{
+      "bollard":{
+         "symbol":"AWF03",
+         "tag":"AWF21",
+         "name":"AWF",
+         "mainBollard":false
+      },
+      "times":[
+         {  
+            "realTime":true,
+            "minutes":0,
+            "direction":"Os. Orła Białego",
+            "onStopPoint":true,
+            "departure":"2016-11-25T21:48:00.000Z",
+            "line":"74"
+         },
+         {  
+            "realTime":true,
+            "minutes":20,
+            "direction":"Os. Orła Białego",
+            "onStopPoint":false,
+            "departure":"2016-11-25T22:08:00.000Z",
+            "line":"74"
+         }
+      ]
+   }
+}
+```
+
+## `getTimesForAllBollards`
+Pobiera czasy przyjazdu na wszystkich bollardach przypisanych do danego przystanku. Swoiste połączenie `getBollardsByStopPoint` i `getTimes`.
+
+### Wejście
+* `name` : nazwa przystanku.
+
+### Wyjście
+Obiekt `bollardsWithTimes`, będący tablicą struktur opisanych w `getTimes`.
+
+### Przykład
+```
+peka_vm_get getTimesForAllBollards '{"name":"Katowicka"}'
+```
+```javascript
+{  
+   "success":{  
+      "bollardsWithTimes":[  
+         {  
+            "bollard":{  
+               "symbol":"KATO22",
+               "tag":"KATO02",
+               "name":"Katowicka",
+               "mainBollard":false
+            },
+            "times":[  
+               {  
+                  "realTime":true,
+                  "minutes":8,
+                  "direction":"Rondo Śródka",
+                  "onStopPoint":false,
+                  "departure":"2016-11-25T22:48:00.000Z",
+                  "line":"57"
+               },
+               {  
+                  "realTime":true,
+                  "minutes":13,
+                  "direction":"Termy Maltańskie",
+                  "onStopPoint":false,
+                  "departure":"2016-11-25T22:53:00.000Z",
+                  "line":"84"
+               }
+            ]
+         },
+         {  
+            "bollard":{  
+               "symbol":"KATO21",
+               "tag":"KATO01",
+               "name":"Katowicka",
+               "mainBollard":false
+            },
+            "times":[  
+               {  
+                  "realTime":false,
+                  "minutes":13,
+                  "direction":"Rondo Rataje",
+                  "onStopPoint":false,
+                  "departure":"2016-11-25T22:53:00.000Z",
+                  "line":"84"
+               },
+               {  
+                  "realTime":false,
+                  "minutes":24,
+                  "direction":"Mogileńska",
+                  "onStopPoint":false,
+                  "departure":"2016-11-25T23:04:00.000Z",
+                  "line":"57"
+               }
+            ]
+         }
+      ]
+   }
+}
+```
+
+## `getServerTime`
+Pobiera aktualny czas na serwerze jako coś, co wygląda na liczbę milisekund od 1. stycznia 1970. Na wejściu pusty obiekt.
+
+### Przykład
+```
+peka_vm_get getServerTime '{}'
+```
+```javascript
+{"success":1480110116917}
+```
+
+## `findMessagesForBollard`
+Zwraca wiadomości zapisane przez administrację serwisu, skojarzone z danym bollardem. Z reguły wykorzystywane do zakomunikowania czasowych zmian w rozkładzie.
+
+### Wejście
+* `symbol` : identyfikator bollarda
+
+### Wyjście
+Tablica obiektów zawierających następujące pola :
+* `content` : wiadomość, która ma zostać wyświetlona, jako HTML,
+* `startHour`, `stopsGroups` i `endHour` : przeznaczenie nieznane, nie są używane w ogóle przez kod renderujący oficjalną stronę,
+* `startDate` : data oznaczająca początek okresu, kiedy komunikat ma zacząć zostać wyświetlany,
+* `endDate` : j.w., ale oznaczająca koniec tego okresu.
+
+Format daty jest taki sam jak ten używany przez pole `departure` w `getTimes`.
+
+### Przykład
+```
+peka_vm_get findMessagesForBollard '{"symbol":"RJEZ04"}'
+```
+```javascript
+{  
+   "success":[  
+      {  
+         "content":"INFO: Od 9 kwietnia, w związku z remontem torowiska na ul. 28 Czerwca 1956 r., zmianie ulegną trasy linii tramwajowych nr 2, 9, 10 i 11. Uruchomiona zostanie komunikacja zastępcza. Szczegóły na stronie <a href=\"http://tiny.pl/g5dss\">www.ztm.poznan.pl<\/a>.",
+         "startDate":"2017-04-06T01:00:00.000Z",
+         "stopsGroups":[  
+
+         ],
+         "startHour":60,
+         "endDate":"2017-04-11T23:00:00.000Z",
+         "endHour":1380
+      }
+   ]
+}
+```




diff --git a/research/pkp b/research/pkp
new file mode 100644
index 0000000000000000000000000000000000000000..230f97e801f615336f910c6647a0500d61df3088
--- /dev/null
+++ b/research/pkp
@@ -0,0 +1,37 @@
+https://github.com/bartekmp/infopasazer
+
+stacja:
+curl 'https://portalpasazera.pl/WyszukiwaniePolaczen/StacjeFiltrRead?wprowadzonyTekst=Warszawa' \
+-XGET \
+-H '387693: 764f49' \
+-H 'Referer: https://portalpasazera.pl/WyszukiwaniePolaczen/' \
+-H 'Accept: */*' \
+-H 'Connection: Keep-Alive' \
+-H 'Accept-Encoding: gzip, deflate' \
+-H 'Accept-Language: en-gb, en;q=0.90' \
+-H 'DNT: 1' \
+-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1 (KHTML, like Gecko) Version/11.0 Safari/605.1 Epiphany/3.26.5.1' \
+-H 'Cookie: ASP.NET_SessionId=d4pkbz3xwzewshdm5dqvjxyi; __RequestVerificationToken=XiuyWQvHFRmudTBK2Ke_484x-LZC91Q-1fOwP_AzGT3szmmvdCUVDmNJNpMP6z_HrxjXBy_duOm1l1FP2Asg6Tz1DttmvE8rJc_X0XwOtfY1' \
+-H 'aa7cbb: 7d52cc' \
+-H 'X-Requested-With: XMLHttpRequest' \
+-H 'X-Kendo-Ui-Version: r3-2016-sp2'
+
+połączenie:
+curl 'https://portalpasazera.pl/WyszukiwaniePolaczen/WyszukajPolaczenia' \
+-XPOST \
+-H 'Referer: https://portalpasazera.pl/WyszukiwaniePolaczen/' \
+-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
+-H 'Origin: https://portalpasazera.pl' \
+-H 'Accept: */*' \
+-H 'Connection: Keep-Alive' \
+-H 'Accept-Encoding: gzip, deflate' \
+-H 'Accept-Language: en-gb, en;q=0.90' \
+-H 'DNT: 1' \
+-H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/605.1 (KHTML, like Gecko) Version/11.0 Safari/605.1 Epiphany/3.26.5.1' \
+-H 'Cookie: Section_WP_ThroughStations=1; ASP.NET_SessionId=q43u4zrurf2oh12fcy2td1no; __RequestVerificationToken=6V9CETnBIOhA61_KpfNlmxazzjfjEqk1ZHTKpZQkjn24rtLDqnFpJbCVNi7ariHdA38gslZhTpziDp6kC9EcLLZnHj0vn9BcA1WIEdjGrsk1; cookie=true' \               # Proste do uzyskania Podaje przy dowolnym połączeniu (można zrobić GET / >/dev/null)
+-H 'Content-Length: 1058' \
+-H 'c2e09f: 44952b' \                       # to i następna linia musi się zgadzać ze stacjami (jest deterministyczne, zależne od stacji można sprawdzić wszystkie interesujące stacje i zahardcodować (nie wiem, może to się jakoś ma do wyniku StacjeFiltrRead?)
+-H 'aa7cbb: 7d52cc' \                       # To jest poznań Główny
+-H 'X-Requested-With: XMLHttpRequest' \
+-H 'X-Kendo-Ui-Version: r3-2016-sp2' \
+--data 'sort=&group=&filter=&kryteria=%7B%22IdStacjiPoczatkowej%22%3A%22356503%22%2C%22NazwaStacjiPoczatkowej%22%3A%22Lubo%C5%84+ko%C5%82o+Poznania%22%2C%22StacjePosrednie%22%3A%5B%5D%2C%22IdStacjiKoncowej%22%3A%22356701%22%2C%22NazwaStacjiKoncowej%22%3A%22Pozna%C5%84+G%C5%82%C3%B3wny%22%2C%22KategorieSzybkosci%22%3A%5B%22SZ%22%2C%22DA%22%2C%22LO%22%2C%22AG%22%5D%2C%22Uslugi%22%3A%5B%5D%2C%22PolaczenieBezposrednie%22%3Afalse%2C%22GlobalneParametryPolaczenia%22%3Atrue%2C%22Data%22%3A%222018-02-07%22%2C%22Czas%22%3A%2220%3A51%22%2C%22PociagCzynnosc%22%3A%22Odjazd%22%2C%22Przewoznicy%22%3A%5B%22KM%22%2C%22PR%22%2C%22KM%C5%81%22%2C%22%C5%81KA%22%2C%22IC%22%2C%22AR%22%2C%22KD%22%2C%22KS%22%2C%22KW%22%2C%22LEO%22%2C%22ODEG%22%2C%22CARGO%22%2C%22SKMT%22%2C%22SKPL%22%2C%22SKM%22%5D%2C%22MinimalnyCzasNaPrzesiadke%22%3A%2200%3A10%22%2C%22grc%22%3A%22%22%2C%22p%22%3A%22ok%22%7D&rodzaj=NoweWyszukiwanie&zapamietanePolaczenia=null&__RequestVerificationToken=arWI_CJhi7iighRQMaB7eWLKYMUMvW5kA2ObVpS0KjEslYMd1fSBSkrY4Ipi978ZUEktfFvHurtV6XWxk5zF0PORcxv_q0XZp3K6SGYKOnM1'




diff --git a/research/svg/departure_timetable.svg b/research/svg/departure_timetable.svg
new file mode 100644
index 0000000000000000000000000000000000000000..6029c7740978a518e1d4acdd31de22fabd2986a5
--- /dev/null
+++ b/research/svg/departure_timetable.svg
@@ -0,0 +1,38 @@
+<?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"
+   fill="#000000"
+   height="24"
+   viewBox="0 0 24 24"
+   width="24"
+   version="1.1"
+   id="svg6">
+  <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" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <path
+     d="M0 0h24v24H0z"
+     fill="none"
+     id="path2" />
+  <path
+     d="M 19,3 C 12,2.4802944 12,2.481597 5,3 3.89,3 3.01,3.9 3.01,5 L 3,19 c 0,1.1 0.89,2 2,2 h 14 c 1.1,0 2,-0.9 2,-2 V 5 C 21,3.9 20.1,3 19,3 Z m 0,16 H 5 V 8 h 14 z"
+     id="path4" />
+  <path
+     id="path2-6"
+     d="m 17,12 h -5 v 5 h 5 z" />
+</svg>




diff --git a/research/svg/download.svg b/research/svg/download.svg
new file mode 100644
index 0000000000000000000000000000000000000000..6e3674ba7937318b725e8eaf6f4d24ca9e570366
--- /dev/null
+++ b/research/svg/download.svg
@@ -0,0 +1,4 @@
+<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
+    <path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/>
+    <path d="M0 0h24v24H0z" fill="none"/>
+</svg>
\ No newline at end of file




diff --git a/research/svg/favourite.svg b/research/svg/favourite.svg
new file mode 100644
index 0000000000000000000000000000000000000000..742e71af5c709a7bae7e5f54190ee88a5cbc90fb
--- /dev/null
+++ b/research/svg/favourite.svg
@@ -0,0 +1,5 @@
+<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
+    <path d="M0 0h24v24H0z" fill="none"/>
+    <path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"/>
+    <path d="M0 0h24v24H0z" fill="none"/>
+</svg>
\ No newline at end of file




diff --git a/research/svg/info.svg b/research/svg/info.svg
new file mode 100644
index 0000000000000000000000000000000000000000..5c09d08bd5bd7c3fde49fa77d2878ba4362b21d9
--- /dev/null
+++ b/research/svg/info.svg
@@ -0,0 +1,4 @@
+<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
+    <path d="M0 0h24v24H0z" fill="none"/>
+    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/>
+</svg>
\ No newline at end of file




diff --git a/research/svg/logo.png b/research/svg/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..8755208932a42a232f7773f8d9459bb018949e3e
Binary files /dev/null and b/research/svg/logo.png differ




diff --git a/research/svg/logo.svg b/research/svg/logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..be16739c5c15d36c1c385e0ab5c3130a9f06fa9a
--- /dev/null
+++ b/research/svg/logo.svg
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<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="200mm"
+   height="200mm"
+   viewBox="0 0 200 200"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.2 5c3e80d, 2017-08-06"
+   sodipodi:docname="logo.svg"
+   inkscape:export-filename="/home/adam/Code/AndroidstudioProjects/Bimba/research/svg/logo.svg.png"
+   inkscape:export-xdpi="24.383999"
+   inkscape:export-ydpi="24.383999">
+  <defs
+     id="defs2">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient1361">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0.09803922"
+         offset="0"
+         id="stop1357" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop1359" />
+    </linearGradient>
+    <filter
+       style="color-interpolation-filters:sRGB"
+       inkscape:label="Drop Shadow"
+       id="filter1280">
+      <feFlood
+         flood-opacity="0.392157"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood1270" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite1272" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="4"
+         result="blur"
+         id="feGaussianBlur1274" />
+      <feOffset
+         dx="0"
+         dy="4"
+         result="offset"
+         id="feOffset1276" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite1278" />
+    </filter>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient1361"
+       id="radialGradient1365"
+       cx="4"
+       cy="101"
+       fx="4"
+       fy="101"
+       r="96"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0000001,2,-1.5695368,1.5695368,154.5232,-65.523216)" />
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter991">
+      <feFlood
+         flood-opacity="0.878431"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood981" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite983" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="4"
+         result="blur"
+         id="feGaussianBlur985" />
+      <feOffset
+         dx="0"
+         dy="4"
+         result="offset"
+         id="feOffset987" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite989" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter1170">
+      <feFlood
+         flood-opacity="0.878431"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood1160" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite1162" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="4"
+         result="blur"
+         id="feGaussianBlur1164" />
+      <feOffset
+         dx="0"
+         dy="4"
+         result="offset"
+         id="feOffset1166" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite1168" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.2636461"
+     inkscape:cx="743.36383"
+     inkscape:cy="240.48066"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1368"
+     inkscape:window-height="744"
+     inkscape:window-x="0"
+     inkscape:window-y="24"
+     inkscape:window-maximized="0"
+     showguides="true" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-97)">
+    <g
+       id="g1158"
+       style="filter:url(#filter1170)"
+       transform="translate(-207.84451,6.0480813)">
+      <g
+         transform="translate(53.089061,14.198568)"
+         id="g889">
+        <rect
+           style="opacity:1;fill:#ffeb3b;fill-opacity:1;stroke:none;stroke-width:2.96499991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect883"
+           width="49.017162"
+           height="6.3608532"
+           x="230.24687"
+           y="256.711" />
+        <rect
+           style="opacity:1;fill:#ffeb3b;fill-opacity:1;stroke:none;stroke-width:2.96499991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect885"
+           width="45.535828"
+           height="8.0748444"
+           x="231.86546"
+           y="258.30765" />
+      </g>
+      <g
+         transform="translate(-34.585518,13.767788)"
+         id="g1099">
+        <g
+           id="g931"
+           transform="translate(87.267586,2.0209161)">
+          <rect
+             transform="rotate(-8.4179204)"
+             y="120.48581"
+             x="228.13066"
+             height="16.558657"
+             width="1.7562211"
+             id="rect912"
+             style="opacity:1;fill:#ffeb3b;fill-opacity:1;stroke:none;stroke-width:2.96499991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <rect
+             transform="matrix(-0.98922659,-0.14639244,-0.14639244,0.98922659,0,0)"
+             y="45.955666"
+             x="-276.83392"
+             height="16.558657"
+             width="1.7562211"
+             id="rect912-2"
+             style="opacity:1;fill:#ffeb3b;fill-opacity:1;stroke:none;stroke-width:2.96499991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+        <g
+           transform="matrix(0.68150644,0,0,0.68150644,168.81255,-74.159075)"
+           id="g889-3">
+          <rect
+             y="256.711"
+             x="230.24687"
+             height="6.3608532"
+             width="49.017162"
+             id="rect883-5"
+             style="opacity:1;fill:#ffeb3b;fill-opacity:1;stroke:none;stroke-width:2.96499991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <rect
+             y="258.30765"
+             x="231.86546"
+             height="8.0748444"
+             width="45.535828"
+             id="rect885-6"
+             style="opacity:1;fill:#ffeb3b;fill-opacity:1;stroke:none;stroke-width:2.96499991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+      </g>
+      <path
+         id="rect993"
+         transform="matrix(0.26458333,0,0,0.26458333,0,97)"
+         d="M 1122.9727,86.363281 814.02148,395.3125 1085.1016,666.39258 h 78.2519 L 892.27344,395.3125 1163.5078,124.08008 1434.7402,395.3125 1163.6621,666.39258 h 78.252 L 1512.9922,395.3125 1204.043,86.363281 Z"
+         style="opacity:1;fill:#ffeb3b;fill-opacity:1;stroke:none;stroke-width:9.13763046;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:connector-curvature="0" />
+    </g>
+    <rect
+       style="opacity:0.2;fill:url(#radialGradient1365);fill-opacity:1;stroke:none;stroke-width:2.96499991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1355"
+       width="192"
+       height="192"
+       x="4"
+       y="101" />
+  </g>
+</svg>




diff --git a/research/svg/low_floor.svg b/research/svg/low_floor.svg
new file mode 100644
index 0000000000000000000000000000000000000000..bf39c36bb0c27d5a19caaa1fa77a2e830f3b4655
--- /dev/null
+++ b/research/svg/low_floor.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="120mm"
+   height="120mm"
+   viewBox="0 0 120 120"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.2 5c3e80d, 2017-08-06"
+   sodipodi:docname="low_floor.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="249.28691"
+     inkscape:cy="250.16946"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1368"
+     inkscape:window-height="744"
+     inkscape:window-x="0"
+     inkscape:window-y="24"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Igor Bredikhin</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>CC-BY</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:source>https://commons.wikimedia.org/wiki/File:Short-haired-Dachshund.jpg</dc:source>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-38.883767,-1.5298379)">
+    <path
+       style="fill:#000000;stroke-width:0.26458332"
+       d="m 73.864398,95.769338 c -2.557616,-0.26414 -2.762808,-0.35077 -3.176582,-1.34107 -0.534754,-1.27985 -0.519774,-1.34249 0.464603,-1.94268 0.681096,-0.41527 1.333863,-0.52449 3.139318,-0.52528 1.904455,-7.9e-4 2.394104,-0.0912 2.976563,-0.54936 0.383426,-0.3016 0.69714,-0.69451 0.69714,-0.87312 0,-0.17862 0.139049,-0.4638 0.309001,-0.63376 0.751369,-0.75137 1.279329,-3.48053 0.811427,-4.19447 -0.106913,-0.16313 -0.951513,-0.67742 -1.876888,-1.14286 -0.925377,-0.46544 -2.263608,-1.2547 -2.97385,-1.75392 -0.71024,-0.49921 -1.401577,-0.90766 -1.536306,-0.90766 -0.134726,0 -1.475399,-1.17571 -2.979274,-2.61268 -2.802324,-2.67766 -3.830987,-4.2257 -5.208519,-7.83837 -0.604099,-1.58428 -0.789112,-4.84837 -0.463846,-8.18341 0.22461,-2.303 -0.0241,-5.174173 -0.689218,-7.956173 -0.139163,-0.58208 -0.289849,-1.37155 -0.334857,-1.75437 -0.07973,-0.67815 -0.444336,-1.92831 -1.031632,-3.5373 -0.15935,-0.43656 -0.258355,-0.93487 -0.220009,-1.10735 0.03835,-0.17249 -0.345797,-0.96317 -0.853649,-1.75707 -0.818477,-1.27949 -1.067313,-1.47749 -2.19048,-1.74302 -1.538223,-0.36365 -8.161558,-0.21248 -9.866066,0.22519 -1.144864,0.29397 -1.777528,0.22133 -5.16742,-0.59329 -0.712691,-0.17126 -2.493051,-1.92196 -2.922089,-2.87339 l -0.480002,-1.06446 1.549948,-1.43106 c 0.852472,-0.78709 1.609262,-1.37175 1.681755,-1.29926 0.07249,0.0725 0.499484,-0.1464 0.948869,-0.48644 0.449386,-0.34003 1.173586,-0.70622 1.609335,-0.81375 0.435748,-0.10753 0.942986,-0.3206 1.127195,-0.47348 0.184209,-0.15288 1.192549,-0.70885 2.240754,-1.2355 1.54945,-0.77848 2.188482,-1.30727 3.417393,-2.82784 1.418204,-1.75479 1.69606,-1.95685 4.498647,-3.27142 2.137588,-1.00265 3.422285,-1.44058 4.51739,-1.53988 0.841669,-0.0763 1.530308,-0.24129 1.530308,-0.3666 0,-0.12531 0.178594,-0.22783 0.396875,-0.22783 0.218281,0 0.396875,0.1024 0.396875,0.22756 0,0.12517 0.638495,0.29347 1.418878,0.37401 1.674143,0.17279 3.859274,1.21037 4.640437,2.20346 0.305398,0.38825 0.555268,0.61575 0.555268,0.50554 0,-0.5813 0.767948,0.5537 0.943996,1.39521 0.113083,0.54052 0.229717,1.07205 0.259189,1.1812 0.02947,0.10914 0.06847,0.30011 0.08666,0.42438 0.01818,0.12427 0.330729,0.54713 0.694531,0.93967 0.363802,0.39255 0.661458,0.83364 0.661458,0.9802 0,0.23774 1.47071,2.28196 1.882569,2.61668 0.08953,0.0728 0.252648,0.42995 0.362495,0.79375 0.247478,0.81964 1.54722,3.47932 2.392013,4.89479 0.3474,0.58209 0.636802,1.35712 0.643115,1.7223 0.0063,0.368 0.247345,0.81126 0.540641,0.99443 0.375322,0.23439 0.529675,0.61827 0.530911,1.32041 0.0011,0.54447 0.238299,1.34713 0.527423,1.7837 0.289123,0.43656 0.526465,0.95326 0.527423,1.14821 0.0021,0.43165 1.052184,1.34437 1.560652,1.35653 0.202555,0.005 1.097849,0.46956 1.989542,1.03272 0.891691,0.56315 2.035652,1.10932 2.542133,1.21371 0.506481,0.10439 1.397124,0.39792 1.979207,0.65228 1.209157,0.52838 4.616257,1.67805 6.753217,2.27876 1.39789,0.39295 4.970975,0.78292 9.386375,1.02444 10.84152,0.593023 14.547,0.735713 21.43123,0.825263 10.5136,0.13676 14.02834,0.45259 16.21204,1.45679 3.15511,1.45092 5.73868,4.88218 6.56776,8.72266 0.20418,0.94583 0.37124,1.92511 0.37124,2.17618 0,0.47524 1.21319,3.36317 2.08683,4.96762 0.55411,1.01761 1.67763,1.80276 2.62267,1.83279 0.85893,0.0273 2.02863,0.68262 2.667,1.49417 0.60831,0.77334 0.57628,2.0588 -0.11159,4.4783 -0.49243,1.73207 -0.55693,4.8121 -0.1512,7.21993 0.3073,1.82367 0.29181,1.99894 -0.28553,3.23114 l -0.61047,1.30287 -1.78593,-0.037 c -1.01633,-0.021 -1.78594,-0.15354 -1.78594,-0.30749 0,-0.15823 -0.1318,-0.13873 -0.3175,0.047 -0.45417,0.45417 -2.45914,0.40062 -2.8549,-0.0763 -0.26458,-0.3188 -0.24586,-0.4248 0.0984,-0.55689 0.23384,-0.0897 0.35706,-0.27333 0.27382,-0.40801 -0.0832,-0.13467 0.51888,-0.92583 1.33802,-1.75814 1.12053,-1.13855 1.45062,-1.64435 1.33298,-2.04252 -0.086,-0.29108 -0.21581,-1.77665 -0.28846,-3.30127 -0.11233,-2.35734 -0.21661,-2.862 -0.69708,-3.37343 -0.31075,-0.33078 -0.76161,-0.60141 -1.00192,-0.60141 -0.53216,0 -1.46054,0.97258 -1.70843,1.78978 -0.1,0.32953 -0.28864,0.53309 -0.41928,0.45235 -0.30722,-0.18987 -1.02403,1.52434 -1.02865,2.45996 -0.006,1.14617 -0.31881,3.08321 -0.53601,3.31557 -0.3797,0.40623 -2.36153,0.434 -3.11002,0.0436 -0.40603,-0.21179 -1.05863,-0.38581 -1.45022,-0.38671 -0.3916,-7.9e-4 -0.77574,-0.10478 -0.85366,-0.23085 -0.16257,-0.26304 0.62933,-1.04055 1.50132,-1.47405 0.53444,-0.26569 0.60126,-0.51813 0.67156,-2.53703 0.0429,-1.23309 0.016,-2.48946 -0.0598,-2.79194 -0.21662,-0.86409 -1.29118,-1.16984 -4.11146,-1.16984 -2.37147,0 -2.68278,-0.0587 -3.36694,-0.63433 -0.94174,-0.79242 -2.72954,-1.73365 -3.85469,-2.0294 -0.47081,-0.12375 -1.51085,-0.41083 -2.31122,-0.63794 -1.53167,-0.43464 -7.42003,-0.51354 -8.20207,-0.1099 -0.21828,0.11266 -1.40891,0.3295 -2.64583,0.48187 -3.74098,0.46083 -6.7161,1.05976 -8.76808,1.76513 -1.07115,0.3682 -2.47064,0.78046 -3.10998,0.91612 -0.63933,0.13565 -1.29418,0.35473 -1.45521,0.48683 -0.16102,0.1321 -2.79309,0.91595 -5.849025,1.74188 -3.05594,0.82594 -6.09204,1.66293 -6.74688,1.85998 -0.654842,0.19706 -1.845467,0.48679 -2.645832,0.64386 -0.800364,0.15706 -1.842161,0.48963 -2.315104,0.73903 -0.851799,0.44919 -0.860007,0.47219 -0.871571,2.44381 -0.0064,1.09469 -0.167842,2.58336 -0.358709,3.30815 -0.311211,1.18178 -0.439719,1.33811 -1.245092,1.51471 -1.052701,0.23084 -9.938213,0.47543 -11.481398,0.31605 z"
+       id="path4515"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>




diff --git a/research/svg/more.svg b/research/svg/more.svg
new file mode 100644
index 0000000000000000000000000000000000000000..eba41f0af5c5d918f21ca4f9dd456c684c6bcebc
--- /dev/null
+++ b/research/svg/more.svg
@@ -0,0 +1,4 @@
+<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
+    <path d="M0 0h24v24H0z" fill="none"/>
+    <path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/>
+</svg>
\ No newline at end of file




diff --git a/research/svg/nodb.svg b/research/svg/nodb.svg
new file mode 100644
index 0000000000000000000000000000000000000000..2473baef81e7aad05f75eb66fa272c1d0e321717
--- /dev/null
+++ b/research/svg/nodb.svg
@@ -0,0 +1,67 @@
+<?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"
+   id="svg8"
+   version="1.1"
+   viewBox="0 0 285.74999 508.00001"
+   height="1920"
+   width="1080">
+  <defs
+     id="defs2" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(0,211.00002)"
+     id="layer1">
+    <rect
+       y="-211.00002"
+       x="0"
+       height="508"
+       width="285.75"
+       id="rect4485"
+       style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2.96499991;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <rect
+       y="130.19077"
+       x="136.12813"
+       height="166.80922"
+       width="13.49375"
+       id="rect4495"
+       style="opacity:1;fill:#aaaaaa;fill-opacity:1;stroke:none;stroke-width:5.5416379;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <g
+       id="g5093"
+       transform="matrix(0.28222223,0,0,0.28222223,100.54167,47.749918)">
+      <circle
+         id="blauwe_cirkel"
+         cx="150"
+         cy="150"
+         r="150"
+         style="fill:#0e518d;stroke:none" />
+      <g
+         id="symbool_voetpad" />
+      <path
+         style="fill:#ffffff;stroke:none"
+         id="tram_zwart"
+         d="m 110.21944,84.81961 -38.897406,26.63158 32.087416,21.98037 H 45.043711 l 1.079393,6.82962 L 40,163.6742 v 29.88939 h 18.545941 l 1.609278,-7.2025 h 62.663691 l 1.60927,7.2025 h 51.14363 l 1.60928,-7.2025 h 62.66369 l 1.60928,7.2025 H 260 V 163.6742 l -6.12311,-23.41302 1.09902,-6.82962 H 117.02943 l 32.0678,-21.98037 z m 0,6.12311 29.90901,20.48884 v 0.0589 l -29.90901,20.50847 -29.909003,-20.50847 v -0.0589 z M 49.891168,140.26118 H 66.454951 V 163.6742 H 43.78769 Z m 20.900982,0 H 98.876004 V 163.6742 H 70.79215 Z m 32.40142,0 h 28.08385 v 23.41302 h -28.08385 z m 32.40143,0 h 28.80999 V 163.6742 H 135.595 Z m 33.12757,0 h 28.08385 v 23.41302 h -28.08385 z m 32.42105,0 h 28.08385 v 23.41302 h -28.08385 z m 32.40143,0 h 16.56378 l 6.10348,23.41302 H 233.54505 Z M 65.885816,191.03192 v 2.45316 c 0,5.35876 4.336163,9.69492 9.694915,9.69492 4.304046,0 7.956129,-2.80368 9.223907,-6.69224 h 13.541476 c 1.26777,3.88856 4.919856,6.69224 9.223906,6.69224 5.35874,0 9.69491,-4.33616 9.69491,-9.69492 l -0.0392,-2.45316 H 65.885867 Z m 116.888494,0 -0.0393,2.45316 c 0,5.35876 4.33617,9.69492 9.69492,9.69492 4.30405,0 7.95613,-2.80368 9.22391,-6.69224 h 13.54148 c 1.26778,3.88856 4.91986,6.69224 9.2239,6.69224 5.35876,0 9.69492,-4.33616 9.69492,-9.69492 v -2.45316 h -51.33987 z" />
+      <circle
+         id="circle3774"
+         cx="150"
+         cy="150"
+         r="141.942"
+         style="fill:none;stroke:#f7fbf5;stroke-width:6.73600006" />
+    </g>
+  </g>
+</svg>




diff --git a/research/svg/timetable_full.svg b/research/svg/timetable_full.svg
new file mode 100644
index 0000000000000000000000000000000000000000..426d183ff1bf2bb4135985e6d2a9826fea215d52
--- /dev/null
+++ b/research/svg/timetable_full.svg
@@ -0,0 +1,35 @@
+<?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"
+   id="svg6"
+   version="1.1"
+   width="24"
+   viewBox="0 0 24 24"
+   height="24"
+   fill="#000000">
+  <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" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <path
+     id="path2"
+     fill="none"
+     d="M0 0h24v24H0z" />
+  <path
+     id="path4"
+     d="M 17,10 H 7 v 2 H 17 Z M 19,3 C 12,2.4802944 12,2.481597 5,3 3.89,3 3.01,3.9 3.01,5 L 3,19 c 0,1.1 0.89,2 2,2 h 14 c 1.1,0 2,-0.9 2,-2 V 5 C 21,3.9 20.1,3 19,3 Z m 0,16 H 5 V 8 H 19 Z M 14,14 H 7 v 2 h 7 z" />
+</svg>




diff --git a/research/svg/vm.svg b/research/svg/vm.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e22fcf65b5ff9e600b9354f88bfdaa59d09e04c3
--- /dev/null
+++ b/research/svg/vm.svg
@@ -0,0 +1,59 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg6"
+   version="1.1"
+   width="24"
+   viewBox="0 0 24 24"
+   height="24"
+   fill="#000000"
+   sodipodi:docname="vm.svg"
+   inkscape:version="0.92.1 r">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1368"
+     inkscape:window-height="744"
+     id="namedview64"
+     showgrid="false"
+     inkscape:zoom="21.166667"
+     inkscape:cx="12"
+     inkscape:cy="12"
+     inkscape:window-x="0"
+     inkscape:window-y="24"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6" />
+  <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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <path
+     id="path2"
+     fill="none"
+     d="M0 0h24v24H0z" />
+  <path
+     d="M 12 4 C 9.11 4 6.5996094 5.6390625 5.3496094 8.0390625 C 2.3396094 8.3590625 -1.1842379e-15 10.91 0 14 C 0 17.31 2.69 20 6 20 L 19 20 C 21.76 20 24 17.76 24 15 C 24 12.36 21.949609 10.219062 19.349609 10.039062 C 18.669609 6.5890625 15.64 4 12 4 z M 4.4042969 10.652344 L 5.921875 10.652344 L 7.4179688 15.642578 L 8.921875 10.652344 L 10.443359 10.652344 L 8.1328125 17.289062 L 6.7070312 17.289062 L 4.4042969 10.652344 z M 11.072266 10.652344 L 12.859375 10.652344 L 14.5625 15.464844 L 16.257812 10.652344 L 18.054688 10.652344 L 18.054688 17.289062 L 16.681641 17.289062 L 16.681641 15.474609 L 16.818359 12.34375 L 15.027344 17.289062 L 14.089844 17.289062 L 12.302734 12.347656 L 12.439453 15.474609 L 12.439453 17.289062 L 11.072266 17.289062 L 11.072266 10.652344 z "
+     id="path4" />
+</svg>