aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2015-12-28 11:54:00 +0100
committerJakob Odersky <jakob@odersky.com>2016-01-29 13:50:37 -0800
commit4f4c799a6d9ccf333a3e609a2464e2f317875af7 (patch)
tree599232dd8c97fa9eb8f3426ea4375216ecadb386
parentc77bf21e7f4c197d34d23b2aebe5953a75d099e2 (diff)
downloadmavigator-4f4c799a6d9ccf333a3e609a2464e2f317875af7.tar.gz
mavigator-4f4c799a6d9ccf333a3e609a2464e2f317875af7.tar.bz2
mavigator-4f4c799a6d9ccf333a3e609a2464e2f317875af7.zip
Rename project and update dependencies
-rw-r--r--.gitignore1
-rw-r--r--build.sbt2
-rw-r--r--mavigator-bindings/build.sbt (renamed from vfd-bindings/build.sbt)4
-rw-r--r--mavigator-bindings/mavlink/common.xml (renamed from vfd-bindings/mavlink/common.xml)0
-rw-r--r--mavigator-dashboard/build.sbt11
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/Environment.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/Environment.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/Main.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/Main.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/MavlinkSocket.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/MavlinkSocket.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/RxUtil.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/RxUtil.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/Hud.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/Hud.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/Layout.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Altimeter.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Altimeter.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Bar.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Bar.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Clock.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Clock.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Compass.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Compass.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Distribution.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Distribution.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Generic.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Generic.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Horizon.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Horizon.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Instrument.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Instrument.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Led.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Led.scala)0
-rw-r--r--mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/SvgInstrument.scala (renamed from vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/SvgInstrument.scala)0
-rw-r--r--mavigator-index/build.sbt (renamed from vfd-dashboard/build.sbt)0
-rw-r--r--mavigator-index/src/main/scala/vfd/index/ActiveVehicle.scala (renamed from vfd-index/src/main/scala/vfd/index/ActiveVehicle.scala)0
-rw-r--r--mavigator-index/src/main/scala/vfd/index/Main.scala (renamed from vfd-index/src/main/scala/vfd/index/Main.scala)0
-rw-r--r--mavigator-index/src/main/scala/vfd/index/Util.scala (renamed from vfd-index/src/main/scala/vfd/index/Util.scala)0
-rw-r--r--mavigator-server/build.sbt11
-rw-r--r--mavigator-server/debian.sbt12
-rw-r--r--mavigator-server/src/main/resources/application.conf51
-rw-r--r--mavigator-server/src/main/resources/assets/audio/alarm.mp3bin0 -> 8776 bytes
-rw-r--r--mavigator-server/src/main/resources/assets/fonts/DIGITAL.TXT40
-rw-r--r--mavigator-server/src/main/resources/assets/fonts/DS-DIGIB.TTFbin0 -> 24896 bytes
-rw-r--r--mavigator-server/src/main/resources/assets/fonts/DS-DIGII.TTFbin0 -> 24676 bytes
-rw-r--r--mavigator-server/src/main/resources/assets/fonts/DS-DIGIT.TTFbin0 -> 25480 bytes
-rw-r--r--mavigator-server/src/main/resources/assets/fonts/ds-digi.ttfbin0 -> 24448 bytes
-rw-r--r--mavigator-server/src/main/resources/assets/images/hud/horizon.svg77
-rw-r--r--mavigator-server/src/main/resources/assets/images/hud/hud.svg182
-rw-r--r--mavigator-server/src/main/resources/assets/images/hud/overlay.html29
-rw-r--r--mavigator-server/src/main/resources/assets/images/hud/roll.svg143
-rw-r--r--mavigator-server/src/main/resources/assets/images/instruments/altimeter.svg1292
-rw-r--r--mavigator-server/src/main/resources/assets/images/instruments/bar.svg144
-rw-r--r--mavigator-server/src/main/resources/assets/images/instruments/compass.svg1034
-rw-r--r--mavigator-server/src/main/resources/assets/images/instruments/distance.svg218
-rw-r--r--mavigator-server/src/main/resources/assets/images/instruments/distribution.svg169
-rw-r--r--mavigator-server/src/main/resources/assets/images/instruments/generic.svg314
-rw-r--r--mavigator-server/src/main/resources/assets/images/instruments/generic2.svg1063
-rw-r--r--mavigator-server/src/main/resources/assets/images/instruments/horizon.svg569
-rw-r--r--mavigator-server/src/main/resources/assets/images/leds/green-off.svg283
-rw-r--r--mavigator-server/src/main/resources/assets/images/leds/green-on.svg283
-rw-r--r--mavigator-server/src/main/resources/assets/images/leds/led.svg293
-rw-r--r--mavigator-server/src/main/resources/assets/images/leds/none.svg284
-rw-r--r--mavigator-server/src/main/resources/assets/images/leds/red-off.svg284
-rw-r--r--mavigator-server/src/main/resources/assets/images/leds/red-on.svg284
-rw-r--r--mavigator-server/src/main/resources/assets/images/leds/yellow-on.svg284
-rw-r--r--mavigator-server/src/main/resources/assets/images/logo-invert.svg94
-rw-r--r--mavigator-server/src/main/resources/assets/images/logo.svg87
-rw-r--r--mavigator-server/src/main/resources/assets/stylesheets/main.css203
-rw-r--r--mavigator-server/src/main/scala/mavigator/Main.scala45
-rw-r--r--mavigator-server/src/main/scala/mavigator/MavlinkWebsocket.scala76
-rw-r--r--mavigator-server/src/main/scala/mavigator/Router.scala92
-rw-r--r--mavigator-server/src/main/scala/mavigator/settings.scala74
-rw-r--r--mavigator-server/src/main/twirl/mavigator/views/index.scala.html5
-rw-r--r--mavigator-server/src/main/twirl/mavigator/views/main.scala.html26
-rw-r--r--mavigator-uav/build.sbt9
-rw-r--r--mavigator-uav/src/main/scala/mavigator/uav/Connection.scala (renamed from vfd-uav/src/main/scala/vfd/uav/Connection.scala)44
-rw-r--r--mavigator-uav/src/main/scala/mavigator/uav/MavlinkUtil.scala (renamed from vfd-uav/src/main/scala/vfd/uav/MavlinkUtil.scala)4
-rw-r--r--mavigator-uav/src/main/scala/mavigator/uav/MockConnection.scala (renamed from vfd-uav/src/main/scala/vfd/uav/MockConnection.scala)26
-rw-r--r--mavigator-uav/src/main/scala/mavigator/uav/SerialConnection.scala (renamed from vfd-uav/src/main/scala/vfd/uav/SerialConnection.scala)18
-rw-r--r--mavigator-uav/src/main/scala/mavigator/uav/mock/RandomFlightPlan.scala (renamed from vfd-uav/src/main/scala/vfd/uav/mock/RandomFlightPlan.scala)5
-rw-r--r--project/Dependencies.scala23
-rw-r--r--project/MavigatorBuild.scala (renamed from project/VfdBuild.scala)39
-rw-r--r--project/ScalaJS.scala16
-rw-r--r--project/plugins.sbt9
-rw-r--r--vfd-index/build.sbt8
-rw-r--r--vfd-main/build.sbt5
-rw-r--r--vfd-uav/build.sbt9
75 files changed, 8176 insertions, 102 deletions
diff --git a/.gitignore b/.gitignore
index 22973af..5133a17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@ project/plugins/project/
# ensime
.ensime
+.ensime_cache/
# general files
/*.jar
diff --git a/build.sbt b/build.sbt
index 0941ea1..64a248e 100644
--- a/build.sbt
+++ b/build.sbt
@@ -1,2 +1,2 @@
//goto main project on load
-onLoad in Global := (Command.process("project vfd-main", _: State)) compose (onLoad in Global).value
+//onLoad in Global := (Command.process("project mavigator-main", _: State)) compose (onLoad in Global).value
diff --git a/vfd-bindings/build.sbt b/mavigator-bindings/build.sbt
index d5870e1..998cda1 100644
--- a/vfd-bindings/build.sbt
+++ b/mavigator-bindings/build.sbt
@@ -1,8 +1,8 @@
-import vfd.VfdBuild
+import mavigator.MavigatorBuild
enablePlugins(SbtMavlink)
enablePlugins(ScalaJSPlugin)
-VfdBuild.defaultSettings
+MavigatorBuild.defaultSettings
mavlinkDialect := baseDirectory.value / "mavlink" / "common.xml"
diff --git a/vfd-bindings/mavlink/common.xml b/mavigator-bindings/mavlink/common.xml
index 7f35f07..7f35f07 100644
--- a/vfd-bindings/mavlink/common.xml
+++ b/mavigator-bindings/mavlink/common.xml
diff --git a/mavigator-dashboard/build.sbt b/mavigator-dashboard/build.sbt
new file mode 100644
index 0000000..6b85191
--- /dev/null
+++ b/mavigator-dashboard/build.sbt
@@ -0,0 +1,11 @@
+import mavigator.{Dependencies, MavigatorBuild}
+
+enablePlugins(ScalaJSPlugin)
+
+MavigatorBuild.defaultSettings
+
+libraryDependencies ++= Seq(
+ Dependencies.jsDom.value,
+ Dependencies.scalatags.value,
+ Dependencies.scalarx.value
+)
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/Environment.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/Environment.scala
index 57cd39d..57cd39d 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/Environment.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/Environment.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/Main.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/Main.scala
index 71c5378..71c5378 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/Main.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/Main.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/MavlinkSocket.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/MavlinkSocket.scala
index 2fe8262..2fe8262 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/MavlinkSocket.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/MavlinkSocket.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/RxUtil.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/RxUtil.scala
index a73c3ba..a73c3ba 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/RxUtil.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/RxUtil.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Hud.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/Hud.scala
index 6abdb36..6abdb36 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Hud.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/Hud.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/Layout.scala
index fe1b34f..fe1b34f 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/Layout.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Altimeter.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Altimeter.scala
index b65b374..b65b374 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Altimeter.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Altimeter.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Bar.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Bar.scala
index 9f9f81c..9f9f81c 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Bar.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Bar.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Clock.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Clock.scala
index a5bfc03..a5bfc03 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Clock.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Clock.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Compass.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Compass.scala
index 9f1ae4a..9f1ae4a 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Compass.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Compass.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Distribution.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Distribution.scala
index f750bab..f750bab 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Distribution.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Distribution.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Generic.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Generic.scala
index 86c27e1..86c27e1 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Generic.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Generic.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Horizon.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Horizon.scala
index bbfe8cf..bbfe8cf 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Horizon.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Horizon.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Instrument.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Instrument.scala
index bf5c9ca..bf5c9ca 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Instrument.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Instrument.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Led.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Led.scala
index f5259b5..f5259b5 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Led.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/Led.scala
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/SvgInstrument.scala b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/SvgInstrument.scala
index fe6c58a..fe6c58a 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/SvgInstrument.scala
+++ b/mavigator-dashboard/src/main/scala/mavigator/dashboard/ui/instruments/SvgInstrument.scala
diff --git a/vfd-dashboard/build.sbt b/mavigator-index/build.sbt
index 31b502d..31b502d 100644
--- a/vfd-dashboard/build.sbt
+++ b/mavigator-index/build.sbt
diff --git a/vfd-index/src/main/scala/vfd/index/ActiveVehicle.scala b/mavigator-index/src/main/scala/vfd/index/ActiveVehicle.scala
index 0eaeea3..0eaeea3 100644
--- a/vfd-index/src/main/scala/vfd/index/ActiveVehicle.scala
+++ b/mavigator-index/src/main/scala/vfd/index/ActiveVehicle.scala
diff --git a/vfd-index/src/main/scala/vfd/index/Main.scala b/mavigator-index/src/main/scala/vfd/index/Main.scala
index d5b3f64..d5b3f64 100644
--- a/vfd-index/src/main/scala/vfd/index/Main.scala
+++ b/mavigator-index/src/main/scala/vfd/index/Main.scala
diff --git a/vfd-index/src/main/scala/vfd/index/Util.scala b/mavigator-index/src/main/scala/vfd/index/Util.scala
index 09793df..09793df 100644
--- a/vfd-index/src/main/scala/vfd/index/Util.scala
+++ b/mavigator-index/src/main/scala/vfd/index/Util.scala
diff --git a/mavigator-server/build.sbt b/mavigator-server/build.sbt
new file mode 100644
index 0000000..207fad6
--- /dev/null
+++ b/mavigator-server/build.sbt
@@ -0,0 +1,11 @@
+import mavigator.{Dependencies, MavigatorBuild}
+
+enablePlugins(SbtTwirl)
+
+MavigatorBuild.defaultSettings
+
+libraryDependencies ++= Seq(
+ Dependencies.akkaHttp,
+ Dependencies.akkaHttpCore,
+ Dependencies.akkaStreams
+)
diff --git a/mavigator-server/debian.sbt b/mavigator-server/debian.sbt
new file mode 100644
index 0000000..349ef43
--- /dev/null
+++ b/mavigator-server/debian.sbt
@@ -0,0 +1,12 @@
+enablePlugins(DebianPlugin)
+
+name := "Debian Example"
+
+version := "1.0"
+
+maintainer := "Max Smith <max.smith@yourcompany.io>"
+
+packageSummary := "Hello World Debian Package"
+
+packageDescription := """A fun package description of our software,
+ with multiple lines."""
diff --git a/mavigator-server/src/main/resources/application.conf b/mavigator-server/src/main/resources/application.conf
new file mode 100644
index 0000000..28511ad
--- /dev/null
+++ b/mavigator-server/src/main/resources/application.conf
@@ -0,0 +1,51 @@
+mavigator {
+
+ # Interface to listen for client connections
+ interface = "0.0.0.0"
+
+ # Port on which to listen for client connections
+ port = 8080
+
+ # Mavlink system ID identifying this base station
+ system_id = 1
+
+ # Settings related to the connection with a UAV
+ connection {
+
+ # The type of connection to use
+ # 'mock' or 'serial'
+ type = mock
+
+ # Mavlink component ID used by this connection,
+ # in case it needs to inject messages. I.e. heartbeats
+ # will originate from this ID.
+ component_id = 1
+
+ # Interval in milliseconds between heartbeat messages injected by
+ # the connection
+ # 0 = no heartbeats injected
+ heartbeat = 2000
+
+ # Settings related to serial connections
+ serial {
+ # Serial port
+ port = "/dev/ttyUSB0"
+ # Baud rate (b/s)
+ baud = 115200
+ # Use two stop bits
+ two_stop_bits = false
+ # Parity check
+ # 0 = None, 1 = Odd, 2 = Even
+ parity = 0
+ }
+
+ # Settings related to mock connections
+ mock {
+ # Mavlink system ID of the simulated UAV
+ remote_system_id = 42
+ # Speed multiplier of simulation
+ prescaler = 1
+ }
+ }
+
+} \ No newline at end of file
diff --git a/mavigator-server/src/main/resources/assets/audio/alarm.mp3 b/mavigator-server/src/main/resources/assets/audio/alarm.mp3
new file mode 100644
index 0000000..549ac00
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/audio/alarm.mp3
Binary files differ
diff --git a/mavigator-server/src/main/resources/assets/fonts/DIGITAL.TXT b/mavigator-server/src/main/resources/assets/fonts/DIGITAL.TXT
new file mode 100644
index 0000000..484dd47
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/fonts/DIGITAL.TXT
@@ -0,0 +1,40 @@
+DS-Font's TrueType Fonts
+Font name: DS-Digital (Normal, Bold, Italic, Bold Italic), Version 1.0
+Author: Dusit Supasawat
+Web Site: http://ds-font.hypermart.net
+Contact me: Dusit Supasawat, 325/38 Suksawat32 Ratburana Bangkok Thailand 10140
+Email address: dusit@mailcity.com
+
+Thanks for trying! We hope you really enjoy this my typeface. This font is
+distributed as shareware. You can use this font for a long time as you want.
+After all, when you think this font can be usefulness for you. You can send
+me some money, that would be way cool.
+
+I'm only asking $20 US shareware fee per this typeface for personal use.
+And $45 US is the usual amount per this typeface for commercial use.
+
+Distribution: You are free to distribute this archive so long as this text
+file is distributed with the archive, the font file have not been modified,
+and it is understood that the font's copyright remains with the original
+author (Dusit Supasawat).
+
+To register send your payment to:
+
+Dusit Supasawat
+325/38 Suksawat32 Ratburana
+Bangkok Thailand 10140
+
+And fill out something as this order form, and send it in with your payment.
+
+Font name:_________________________________________
+Your information
+Name:______________________________________________
+Address:___________________________________________
+City, State : _____________________________________
+Zip Code:__________________________________________
+Country:___________________________________________
+E-MAIL address:____________________________________
+
+
+You will receive fonts which you order by Email after registration. These fonts
+will be generated for you by specify your name in font information. \ No newline at end of file
diff --git a/mavigator-server/src/main/resources/assets/fonts/DS-DIGIB.TTF b/mavigator-server/src/main/resources/assets/fonts/DS-DIGIB.TTF
new file mode 100644
index 0000000..064ad47
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/fonts/DS-DIGIB.TTF
Binary files differ
diff --git a/mavigator-server/src/main/resources/assets/fonts/DS-DIGII.TTF b/mavigator-server/src/main/resources/assets/fonts/DS-DIGII.TTF
new file mode 100644
index 0000000..2aae3d8
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/fonts/DS-DIGII.TTF
Binary files differ
diff --git a/mavigator-server/src/main/resources/assets/fonts/DS-DIGIT.TTF b/mavigator-server/src/main/resources/assets/fonts/DS-DIGIT.TTF
new file mode 100644
index 0000000..65642f9
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/fonts/DS-DIGIT.TTF
Binary files differ
diff --git a/mavigator-server/src/main/resources/assets/fonts/ds-digi.ttf b/mavigator-server/src/main/resources/assets/fonts/ds-digi.ttf
new file mode 100644
index 0000000..0925877
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/fonts/ds-digi.ttf
Binary files differ
diff --git a/mavigator-server/src/main/resources/assets/images/hud/horizon.svg b/mavigator-server/src/main/resources/assets/images/hud/horizon.svg
new file mode 100644
index 0000000..8cf0150
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/hud/horizon.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="1200"
+ height="1200"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="horizon.svg"
+ viewBox="-600 -600 1200 1200"
+ preserveAspectRatio="none">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35374999"
+ inkscape:cx="356.86783"
+ inkscape:cy="585.56122"
+ inkscape:document-units="px"
+ inkscape:current-layer="horizon"
+ showgrid="true"
+ showborder="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1033"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2987"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <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>
+ <g
+ id="horizon">
+ <rect
+ style="fill:#c88f00;fill-opacity:1;stroke:none"
+ id="rect3000"
+ width="1800"
+ height="1200"
+ x="-900"
+ y="0" />
+ <rect
+ y="-1200"
+ x="-900"
+ height="1200"
+ width="1800"
+ id="rect3770"
+ style="fill:#aaeeff;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/hud/hud.svg b/mavigator-server/src/main/resources/assets/images/hud/hud.svg
new file mode 100644
index 0000000..943d7a4
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/hud/hud.svg
@@ -0,0 +1,182 @@
+<?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="1200"
+ height="1200"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="drawing.svg"
+ viewBox="-600 600 1200 1200">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.25013902"
+ inkscape:cx="1001.4796"
+ inkscape:cy="-231.89709"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ showborder="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1033"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2987"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <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>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:0.6;fill:#808000;fill-opacity:0.48235294;stroke:none"
+ id="rect2985"
+ width="1200"
+ height="1200"
+ x="-600"
+ y="600" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.6;fill:#808000;fill-opacity:0.48235294;stroke:none"
+ id="path2989"
+ sodipodi:cx="0"
+ sodipodi:cy="1200"
+ sodipodi:rx="440"
+ sodipodi:ry="440"
+ d="m 440,1200 a 440,440 0 1 1 -880,0 440,440 0 1 1 880,0 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3782"
+ d="m 380,1200 60,0"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m -440,1200 60,0"
+ id="path3012"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M 0,760.06247 0,815"
+ id="path3786"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="-412.46877" />
+ <path
+ inkscape:transform-center-y="-357.20843"
+ inkscape:connector-curvature="0"
+ id="path3794"
+ d="M -219.96877,819.00292 -192.5,866.58022"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="206.23439" />
+ <path
+ inkscape:transform-center-y="-291.65947"
+ inkscape:connector-curvature="0"
+ id="path3796"
+ d="m -311.08281,888.91719 38.8467,38.8467"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="291.65946" />
+ <path
+ inkscape:transform-center-y="-291.65947"
+ inkscape:connector-curvature="0"
+ id="path3798"
+ d="m 311.08281,888.91719 -38.8467,38.8467"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="-291.65946" />
+ <path
+ inkscape:transform-center-y="-357.20843"
+ inkscape:connector-curvature="0"
+ id="path3800"
+ d="M 219.96877,819.00292 192.5,866.58022"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="-206.23439" />
+ <path
+ inkscape:transform-center-y="-406.20244"
+ inkscape:connector-curvature="0"
+ id="path3802"
+ d="m 76.394345,766.74611 -9.539802,54.1029"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="-71.624444" />
+ <path
+ inkscape:transform-center-x="-141.07262"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 150.46749,786.59395 -18.78974,51.62438"
+ id="path3804"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="-387.59386" />
+ <path
+ inkscape:transform-center-y="-406.20244"
+ inkscape:connector-curvature="0"
+ id="path3806"
+ d="m -76.394345,766.74611 9.539802,54.1029"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="71.624444" />
+ <path
+ inkscape:transform-center-x="141.07262"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m -150.46749,786.59395 18.78974,51.62438"
+ id="path3808"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="-387.59386" />
+ <path
+ style="fill:#ffb380;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m -10,760 20,0 -10,40 -10,-40"
+ id="path3810"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ d="m 440,1200 a 440,440 0 1 1 -880,0 440,440 0 1 1 880,0 z"
+ sodipodi:ry="440"
+ sodipodi:rx="440"
+ sodipodi:cy="1200"
+ sodipodi:cx="0"
+ id="path3812"
+ style="opacity:0.6;fill:#808000;fill-opacity:0.48235294;stroke:none"
+ sodipodi:type="arc"
+ transform="translate(0,910)" />
+ <rect
+ style="opacity:0.6;fill:#ffb380;fill-opacity:0.48235294;stroke:#ffffff;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="rect3814"
+ width="125"
+ height="895"
+ x="-597.5"
+ y="752.5" />
+ <rect
+ y="752.5"
+ x="472.5"
+ height="895"
+ width="125"
+ id="rect3816"
+ style="opacity:0.6;fill:#ffb380;fill-opacity:0.48235294;stroke:#ffffff;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/hud/overlay.html b/mavigator-server/src/main/resources/assets/images/hud/overlay.html
new file mode 100644
index 0000000..58b0ef7
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/hud/overlay.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+
+<html>
+ <head>
+ <style>
+ html,body {
+ margin: 0;
+ width: 100%;
+ height: 100%;
+ }
+ </style>
+ </head>
+ <body>
+
+ <div style="width: 100%; height: 100%; display: flex; align-content: flex-start; align-items: stretch; flex-direction: row">
+ <div style="flex: 1; background-color: yellow;">side menu</div>
+
+ <div style="flex: 1 1 70%; background-color: red; position: relative;">
+ <div style="background-color: green; z-index: 0; display: flex; align-content: center; align-items: stretch; flex-direction: column; position: absolute; left: 0; right: 0; top: 0; bottom: 0;">
+ <object style="flex: 1 1 100%;" type="image/svg+xml" data="horizon.svg">level0</object>
+ </div>
+
+ <div style="z-index: 1; display: flex; align-content: center; align-items: stretch; flex-direction: column; position: absolute; left: 0; right: 0; top: 0; bottom: 0;">
+ <object style="flex: 1 1 100%;" type="image/svg+xml" data="roll.svg">level0</object>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/mavigator-server/src/main/resources/assets/images/hud/roll.svg b/mavigator-server/src/main/resources/assets/images/hud/roll.svg
new file mode 100644
index 0000000..93a9f90
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/hud/roll.svg
@@ -0,0 +1,143 @@
+<?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="1200"
+ height="1200"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="hud.svg"
+ viewBox="-600 600 1200 1200">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.70749999"
+ inkscape:cx="1028.6796"
+ inkscape:cy="816.93521"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ showborder="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1033"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2987"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <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
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ inkscape:connector-curvature="0"
+ id="path3782"
+ d="m 380,1200 60,0"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m -440,1200 60,0"
+ id="path3012"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M 0,760.06247 0,815"
+ id="path3786"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="-412.46877" />
+ <path
+ inkscape:transform-center-y="-357.20843"
+ inkscape:connector-curvature="0"
+ id="path3794"
+ d="M -219.96877,819.00292 -192.5,866.58022"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="206.23439" />
+ <path
+ inkscape:transform-center-y="-291.65947"
+ inkscape:connector-curvature="0"
+ id="path3796"
+ d="m -311.08281,888.91719 38.8467,38.8467"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="291.65946" />
+ <path
+ inkscape:transform-center-y="-291.65947"
+ inkscape:connector-curvature="0"
+ id="path3798"
+ d="m 311.08281,888.91719 -38.8467,38.8467"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="-291.65946" />
+ <path
+ inkscape:transform-center-y="-357.20843"
+ inkscape:connector-curvature="0"
+ id="path3800"
+ d="M 219.96877,819.00292 192.5,866.58022"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="-206.23439" />
+ <path
+ inkscape:transform-center-y="-406.20244"
+ inkscape:connector-curvature="0"
+ id="path3802"
+ d="m 76.394345,766.74611 -9.539802,54.1029"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="-71.624444" />
+ <path
+ inkscape:transform-center-x="-141.07262"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 150.46749,786.59395 -18.78974,51.62438"
+ id="path3804"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="-387.59386" />
+ <path
+ inkscape:transform-center-y="-406.20244"
+ inkscape:connector-curvature="0"
+ id="path3806"
+ d="m -76.394345,766.74611 9.539802,54.1029"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="71.624444" />
+ <path
+ inkscape:transform-center-x="141.07262"
+ style="fill:none;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m -150.46749,786.59395 18.78974,51.62438"
+ id="path3808"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="-387.59386" />
+ <path
+ style="fill:#ffb380;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m -10,760 20,0 -10,40 -10,-40"
+ id="path3810"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/instruments/altimeter.svg b/mavigator-server/src/main/resources/assets/images/instruments/altimeter.svg
new file mode 100644
index 0000000..2bfb306
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/instruments/altimeter.svg
@@ -0,0 +1,1292 @@
+<?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="110"
+ height="110"
+ id="svg2987"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="altitude.svg"
+ viewBox="-55 -55 110 110">
+ <defs
+ id="defs2989" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#ffffff"
+ borderopacity="0.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="0"
+ inkscape:zoom="5.6568542"
+ inkscape:cx="68.865226"
+ inkscape:cy="45.38396"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-grids="true"
+ inkscape:snap-object-midpoints="true"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2997"
+ units="px"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ spacingx="1px"
+ spacingy="1px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2992">
+ <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">
+ <g
+ id="fixed">
+ <path
+ sodipodi:type="arc"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="path2999"
+ sodipodi:cx="660"
+ sodipodi:cy="592.36218"
+ sodipodi:rx="380"
+ sodipodi:ry="380"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ transform="matrix(0.14473684,0,0,0.14473684,-95.526315,-85.73663)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#333333;fill-opacity:1;stroke:none"
+ id="path3016"
+ sodipodi:cx="660"
+ sodipodi:cy="592.36218"
+ sodipodi:rx="380"
+ sodipodi:ry="380"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ transform="matrix(0.13157895,0,0,0.13157895,-86.842106,-77.942392)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+ id="path3018"
+ sodipodi:cx="660"
+ sodipodi:cy="592.36218"
+ sodipodi:rx="380"
+ sodipodi:ry="380"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ transform="matrix(0.09210526,0,0,0.09210526,-60.789473,-54.559673)" />
+ <path
+ transform="translate(-55,-55)"
+ id="path3741"
+ d="M 55,0 C 24.624339,0 0,24.624339 0,55 0,85.375661 24.624339,110 55,110 85.375661,110 110,85.375661 110,55 110,24.624339 85.375661,0 55,0 z m 0,5 c 27.614238,0 50,22.385762 50,50 0,27.614238 -22.385762,50 -50,50 C 27.385762,105 5,82.614238 5,55 5,27.385762 27.385762,5 55,5 z"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f2f2f2;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-16.982601"
+ y="-14.119686"
+ id="altitude"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3120"
+ x="-16.982601"
+ y="-14.119686">0000.00</tspan></text>
+ <g
+ id="dial">
+ <g
+ id="graduation">
+ <rect
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3190"
+ width="0.5"
+ height="7"
+ x="-0.25"
+ y="-50"
+ inkscape:transform-center-y="-46.5" />
+ <rect
+ inkscape:transform-center-y="-37.61929"
+ y="-50"
+ x="-0.25"
+ height="7"
+ width="0.5"
+ id="rect3192"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.80901699,-0.58778525,0.58778525,0.80901699,0,0)"
+ inkscape:transform-center-x="27.332014" />
+ <rect
+ inkscape:transform-center-x="44.224128"
+ transform="matrix(0.30901699,-0.95105652,0.95105652,0.30901699,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3194"
+ width="0.5"
+ height="7"
+ x="-0.24999993"
+ y="-50"
+ inkscape:transform-center-y="-14.36929" />
+ <rect
+ inkscape:transform-center-y="14.36929"
+ y="-50"
+ x="-0.24999984"
+ height="7"
+ width="0.5"
+ id="rect3196"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.309017,-0.95105651,0.95105651,-0.309017,0,0)"
+ inkscape:transform-center-x="44.224128" />
+ <rect
+ inkscape:transform-center-x="27.332015"
+ transform="matrix(-0.809017,-0.58778525,0.58778525,-0.809017,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3198"
+ width="0.5"
+ height="7"
+ x="-0.24999982"
+ y="-50"
+ inkscape:transform-center-y="37.61929" />
+ <rect
+ inkscape:transform-center-y="46.5"
+ y="-50"
+ x="-0.24999973"
+ height="7"
+ width="0.5"
+ id="rect3200"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="scale(-1,-1)" />
+ <rect
+ transform="matrix(-0.80901699,0.58778525,-0.58778525,-0.80901699,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3202"
+ width="0.5"
+ height="7"
+ x="-0.24999978"
+ y="-50"
+ inkscape:transform-center-y="37.61929"
+ inkscape:transform-center-x="-27.332014" />
+ <rect
+ inkscape:transform-center-x="-44.224128"
+ inkscape:transform-center-y="14.36929"
+ y="-50"
+ x="-0.24999975"
+ height="7"
+ width="0.5"
+ id="rect3204"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.30901699,0.95105652,-0.95105652,-0.30901699,0,0)" />
+ <rect
+ transform="matrix(0.309017,0.95105651,-0.95105651,0.309017,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3206"
+ width="0.5"
+ height="7"
+ x="-0.24999969"
+ y="-50"
+ inkscape:transform-center-y="-14.36929"
+ inkscape:transform-center-x="-44.224128" />
+ <rect
+ inkscape:transform-center-x="-27.332015"
+ inkscape:transform-center-y="-37.61929"
+ y="-50"
+ x="-0.2499997"
+ height="7"
+ width="0.5"
+ id="rect3208"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.809017,0.58778525,-0.58778525,0.809017,0,0)" />
+ <rect
+ inkscape:transform-center-y="-47.905283"
+ y="-50"
+ x="-0.25"
+ height="4"
+ width="0.5"
+ id="rect3243"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.99802673,-0.06279052,0.06279052,0.99802673,0,0)"
+ inkscape:transform-center-x="3.013945" />
+ <rect
+ inkscape:transform-center-x="6.0159953"
+ transform="matrix(0.9921147,-0.12533323,0.12533323,0.9921147,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3245"
+ width="0.5"
+ height="4"
+ x="-0.25"
+ y="-50"
+ inkscape:transform-center-y="-47.621506" />
+ <rect
+ inkscape:transform-center-y="-47.149788"
+ y="-50"
+ x="-0.25000003"
+ height="4"
+ width="0.5"
+ id="rect3247"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.98228725,-0.18738131,0.18738131,0.98228725,0,0)"
+ inkscape:transform-center-x="8.9943032" />
+ <rect
+ inkscape:transform-center-x="11.937115"
+ transform="matrix(0.96858316,-0.24868988,0.24868988,0.96858316,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3249"
+ width="0.5"
+ height="4"
+ x="-0.25000003"
+ y="-50"
+ inkscape:transform-center-y="-46.491992" />
+ <rect
+ inkscape:transform-center-y="-45.650713"
+ y="-50"
+ x="-0.25000006"
+ height="4"
+ width="0.5"
+ id="rect3251"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.95105652,-0.30901699,0.30901699,0.95105652,0,0)"
+ inkscape:transform-center-x="14.832816" />
+ <rect
+ inkscape:transform-center-x="17.669979"
+ transform="matrix(0.92977649,-0.36812455,0.36812455,0.92977649,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3253"
+ width="0.5"
+ height="4"
+ x="-0.25000006"
+ y="-50"
+ inkscape:transform-center-y="-44.629272" />
+ <rect
+ inkscape:transform-center-y="-43.431699"
+ y="-50"
+ x="-0.25000009"
+ height="4"
+ width="0.5"
+ id="rect3255"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.90482705,-0.42577929,0.42577929,0.90482705,0,0)"
+ inkscape:transform-center-x="20.437407" />
+ <rect
+ inkscape:transform-center-x="23.124177"
+ transform="matrix(0.87630668,-0.48175367,0.48175367,0.87630668,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3257"
+ width="0.5"
+ height="4"
+ x="-0.25000015"
+ y="-50"
+ inkscape:transform-center-y="-42.062721" />
+ <rect
+ inkscape:transform-center-y="-40.527741"
+ y="-50"
+ x="-0.25000021"
+ height="4"
+ width="0.5"
+ id="rect3259"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.84432793,-0.53582679,0.53582679,0.84432793,0,0)"
+ inkscape:transform-center-x="25.719687" />
+ <rect
+ inkscape:transform-center-x="30.596353"
+ transform="matrix(0.77051325,-0.63742399,0.63742399,0.77051325,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3261"
+ width="0.5"
+ height="4"
+ x="-0.2500003"
+ y="-50"
+ inkscape:transform-center-y="-36.984636" />
+ <rect
+ inkscape:transform-center-y="-34.990494"
+ y="-50"
+ x="-0.25000036"
+ height="4"
+ width="0.5"
+ id="rect3263"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.72896863,-0.6845471,0.6845471,0.72896863,0,0)"
+ inkscape:transform-center-x="32.858262" />
+ <rect
+ inkscape:transform-center-x="34.990495"
+ transform="matrix(0.68454711,-0.72896862,0.72896862,0.68454711,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3265"
+ width="0.5"
+ height="4"
+ x="-0.25000039"
+ y="-50"
+ inkscape:transform-center-y="-32.858261" />
+ <rect
+ inkscape:transform-center-y="-30.596352"
+ y="-50"
+ x="-0.25000045"
+ height="4"
+ width="0.5"
+ id="rect3267"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.637424,-0.77051324,0.77051324,0.637424,0,0)"
+ inkscape:transform-center-x="36.984637" />
+ <rect
+ inkscape:transform-center-x="38.832817"
+ transform="matrix(0.58778526,-0.80901699,0.80901699,0.58778526,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3269"
+ width="0.5"
+ height="4"
+ x="-0.25000051"
+ y="-50"
+ inkscape:transform-center-y="-28.213692" />
+ <rect
+ inkscape:transform-center-y="-25.719686"
+ y="-50"
+ x="-0.25000057"
+ height="4"
+ width="0.5"
+ id="rect3271"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.5358268,-0.84432792,0.84432792,0.5358268,0,0)"
+ inkscape:transform-center-x="40.527742" />
+ <rect
+ inkscape:transform-center-x="42.062722"
+ transform="matrix(0.48175368,-0.87630668,0.87630668,0.48175368,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3273"
+ width="0.5"
+ height="4"
+ x="-0.25000066"
+ y="-50"
+ inkscape:transform-center-y="-23.124176" />
+ <rect
+ inkscape:transform-center-y="-20.437406"
+ y="-50"
+ x="-0.25000072"
+ height="4"
+ width="0.5"
+ id="rect3275"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.4257793,-0.90482705,0.90482705,0.4257793,0,0)"
+ inkscape:transform-center-x="43.4317" />
+ <rect
+ inkscape:transform-center-x="44.629273"
+ transform="matrix(0.36812456,-0.92977648,0.92977648,0.36812456,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3277"
+ width="0.5"
+ height="4"
+ x="-0.2500008"
+ y="-50"
+ inkscape:transform-center-y="-17.669978" />
+ <rect
+ inkscape:transform-center-y="-11.937114"
+ y="-50"
+ x="-0.25000095"
+ height="4"
+ width="0.5"
+ id="rect3279"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.24868989,-0.96858316,0.96858316,0.24868989,0,0)"
+ inkscape:transform-center-x="46.491993" />
+ <rect
+ inkscape:transform-center-x="47.149789"
+ transform="matrix(0.18738132,-0.98228725,0.98228725,0.18738132,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3281"
+ width="0.5"
+ height="4"
+ x="-0.25000101"
+ y="-50"
+ inkscape:transform-center-y="-8.9943026" />
+ <rect
+ inkscape:transform-center-y="-6.0159947"
+ y="-50"
+ x="-0.25000107"
+ height="4"
+ width="0.5"
+ id="rect3283"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.12533324,-0.9921147,0.9921147,0.12533324,0,0)"
+ inkscape:transform-center-x="47.621507" />
+ <rect
+ inkscape:transform-center-x="47.905284"
+ transform="matrix(0.06279053,-0.99802673,0.99802673,0.06279053,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3285"
+ width="0.5"
+ height="4"
+ x="-0.25000116"
+ y="-50"
+ inkscape:transform-center-y="-3.0139445" />
+ <rect
+ y="-50"
+ x="-0.25000122"
+ height="4"
+ width="0.5"
+ id="rect3287"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(1.0351335e-8,-1,1,1.0351335e-8,0,0)"
+ inkscape:transform-center-x="48.000001" />
+ <rect
+ inkscape:transform-center-x="47.905284"
+ transform="matrix(-0.06279051,-0.99802673,0.99802673,-0.06279051,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3289"
+ width="0.5"
+ height="4"
+ x="-0.25000128"
+ y="-50"
+ inkscape:transform-center-y="3.013945" />
+ <rect
+ inkscape:transform-center-y="6.0159951"
+ y="-50"
+ x="-0.25000134"
+ height="4"
+ width="0.5"
+ id="rect3291"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.12533322,-0.9921147,0.9921147,-0.12533322,0,0)"
+ inkscape:transform-center-x="47.621506" />
+ <rect
+ inkscape:transform-center-x="47.149788"
+ transform="matrix(-0.1873813,-0.98228725,0.98228725,-0.1873813,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3293"
+ width="0.5"
+ height="4"
+ x="-0.25000137"
+ y="-50"
+ inkscape:transform-center-y="8.994303" />
+ <rect
+ inkscape:transform-center-y="17.669978"
+ y="-50"
+ x="-0.2500014"
+ height="4"
+ width="0.5"
+ id="rect3295"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.36812454,-0.92977649,0.92977649,-0.36812454,0,0)"
+ inkscape:transform-center-x="44.629271" />
+ <rect
+ inkscape:transform-center-x="43.431698"
+ transform="matrix(-0.42577928,-0.90482706,0.90482706,-0.42577928,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3297"
+ width="0.5"
+ height="4"
+ x="-0.25000137"
+ y="-50"
+ inkscape:transform-center-y="20.437405" />
+ <rect
+ inkscape:transform-center-y="23.124175"
+ y="-50"
+ x="-0.25000131"
+ height="4"
+ width="0.5"
+ id="rect3299"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.48175366,-0.87630669,0.87630669,-0.48175366,0,0)"
+ inkscape:transform-center-x="42.06272" />
+ <rect
+ inkscape:transform-center-x="40.527739"
+ transform="matrix(-0.53582678,-0.84432793,0.84432793,-0.53582678,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3301"
+ width="0.5"
+ height="4"
+ x="-0.25000122"
+ y="-50"
+ inkscape:transform-center-y="25.719685" />
+ <rect
+ inkscape:transform-center-y="28.213691"
+ y="-50"
+ x="-0.25000113"
+ height="4"
+ width="0.5"
+ id="rect3303"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.58778524,-0.809017,0.809017,-0.58778524,0,0)"
+ inkscape:transform-center-x="38.832814" />
+ <rect
+ inkscape:transform-center-x="36.984634"
+ transform="matrix(-0.63742398,-0.77051325,0.77051325,-0.63742398,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3305"
+ width="0.5"
+ height="4"
+ x="-0.25000101"
+ y="-50"
+ inkscape:transform-center-y="30.59635" />
+ <rect
+ inkscape:transform-center-y="32.85826"
+ y="-50"
+ x="-0.25000086"
+ height="4"
+ width="0.5"
+ id="rect3307"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.6845471,-0.72896864,0.72896864,-0.6845471,0,0)"
+ inkscape:transform-center-x="34.990493" />
+ <rect
+ inkscape:transform-center-x="32.85826"
+ transform="matrix(-0.72896862,-0.68454712,0.68454712,-0.72896862,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3309"
+ width="0.5"
+ height="4"
+ x="-0.25000075"
+ y="-50"
+ inkscape:transform-center-y="34.990493" />
+ <rect
+ inkscape:transform-center-y="36.984634"
+ y="-50"
+ x="-0.25000063"
+ height="4"
+ width="0.5"
+ id="rect3311"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.77051323,-0.637424,0.637424,-0.77051323,0,0)"
+ inkscape:transform-center-x="30.59635" />
+ <rect
+ inkscape:transform-center-x="25.719685"
+ transform="matrix(-0.84432791,-0.53582681,0.53582681,-0.84432791,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3313"
+ width="0.5"
+ height="4"
+ x="-0.25000039"
+ y="-50"
+ inkscape:transform-center-y="40.527739" />
+ <rect
+ inkscape:transform-center-y="42.062719"
+ y="-50"
+ x="-0.2500003"
+ height="4"
+ width="0.5"
+ id="rect3315"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.87630667,-0.48175369,0.48175369,-0.87630667,0,0)"
+ inkscape:transform-center-x="23.124175" />
+ <rect
+ inkscape:transform-center-x="20.437405"
+ transform="matrix(-0.90482704,-0.42577931,0.42577931,-0.90482704,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3317"
+ width="0.5"
+ height="4"
+ x="-0.25000018"
+ y="-50"
+ inkscape:transform-center-y="43.431697" />
+ <rect
+ inkscape:transform-center-y="44.62927"
+ y="-50"
+ x="-0.25000009"
+ height="4"
+ width="0.5"
+ id="rect3319"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.92977648,-0.36812457,0.36812457,-0.92977648,0,0)"
+ inkscape:transform-center-x="17.669978" />
+ <rect
+ inkscape:transform-center-x="14.832815"
+ transform="matrix(-0.95105651,-0.30901701,0.30901701,-0.95105651,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3321"
+ width="0.5"
+ height="4"
+ x="-0.25"
+ y="-50"
+ inkscape:transform-center-y="45.650711" />
+ <rect
+ inkscape:transform-center-y="46.49199"
+ y="-50"
+ x="-0.24999988"
+ height="4"
+ width="0.5"
+ id="rect3323"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.96858316,-0.2486899,0.2486899,-0.96858316,0,0)"
+ inkscape:transform-center-x="11.937114" />
+ <rect
+ inkscape:transform-center-x="8.9943028"
+ transform="matrix(-0.98228725,-0.18738133,0.18738133,-0.98228725,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3325"
+ width="0.5"
+ height="4"
+ x="-0.24999976"
+ y="-50"
+ inkscape:transform-center-y="47.149786" />
+ <rect
+ inkscape:transform-center-y="47.621504"
+ y="-50"
+ x="-0.24999963"
+ height="4"
+ width="0.5"
+ id="rect3327"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.9921147,-0.12533325,0.12533325,-0.9921147,0,0)"
+ inkscape:transform-center-x="6.0159951" />
+ <rect
+ inkscape:transform-center-x="3.0139451"
+ transform="matrix(-0.99802673,-0.06279054,0.06279054,-0.99802673,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3329"
+ width="0.5"
+ height="4"
+ x="-0.24999952"
+ y="-50"
+ inkscape:transform-center-y="47.905281" />
+ <rect
+ inkscape:transform-center-y="47.905281"
+ y="-50"
+ x="-0.24999927"
+ height="4"
+ width="0.5"
+ id="rect3331"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.99802673,0.0627905,-0.0627905,-0.99802673,0,0)"
+ inkscape:transform-center-x="-3.0139449" />
+ <rect
+ inkscape:transform-center-x="-6.0159949"
+ transform="matrix(-0.9921147,0.12533321,-0.12533321,-0.9921147,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3333"
+ width="0.5"
+ height="4"
+ x="-0.24999915"
+ y="-50"
+ inkscape:transform-center-y="47.621504" />
+ <rect
+ inkscape:transform-center-y="47.149787"
+ y="-50"
+ x="-0.24999906"
+ height="4"
+ width="0.5"
+ id="rect3335"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.98228726,0.18738129,-0.18738129,-0.98228726,0,0)"
+ inkscape:transform-center-x="-8.9943027" />
+ <rect
+ inkscape:transform-center-x="-11.937114"
+ transform="matrix(-0.96858317,0.24868986,-0.24868986,-0.96858317,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3337"
+ width="0.5"
+ height="4"
+ x="-0.24999899"
+ y="-50"
+ inkscape:transform-center-y="46.491991" />
+ <rect
+ inkscape:transform-center-y="45.650712"
+ y="-50"
+ x="-0.24999893"
+ height="4"
+ width="0.5"
+ id="rect3339"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.95105653,0.30901697,-0.30901697,-0.95105653,0,0)"
+ inkscape:transform-center-x="-14.832815" />
+ <rect
+ inkscape:transform-center-x="-17.669978"
+ transform="matrix(-0.9297765,0.36812453,-0.36812453,-0.9297765,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3341"
+ width="0.5"
+ height="4"
+ x="-0.24999885"
+ y="-50"
+ inkscape:transform-center-y="44.629271" />
+ <rect
+ inkscape:transform-center-y="43.431698"
+ y="-50"
+ x="-0.24999881"
+ height="4"
+ width="0.5"
+ id="rect3343"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.90482706,0.42577927,-0.42577927,-0.90482706,0,0)"
+ inkscape:transform-center-x="-20.437406" />
+ <rect
+ inkscape:transform-center-x="-23.124176"
+ transform="matrix(-0.87630669,0.48175365,-0.48175365,-0.87630669,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3345"
+ width="0.5"
+ height="4"
+ x="-0.24999879"
+ y="-50"
+ inkscape:transform-center-y="42.06272" />
+ <rect
+ inkscape:transform-center-y="40.52774"
+ y="-50"
+ x="-0.24999876"
+ height="4"
+ width="0.5"
+ id="rect3347"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.84432794,0.53582677,-0.53582677,-0.84432794,0,0)"
+ inkscape:transform-center-x="-25.719686" />
+ <rect
+ inkscape:transform-center-x="-30.596352"
+ transform="matrix(-0.77051326,0.63742397,-0.63742397,-0.77051326,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3349"
+ width="0.5"
+ height="4"
+ x="-0.24999872"
+ y="-50"
+ inkscape:transform-center-y="36.984635" />
+ <rect
+ inkscape:transform-center-y="34.990494"
+ y="-50"
+ x="-0.24999872"
+ height="4"
+ width="0.5"
+ id="rect3351"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.72896865,0.68454709,-0.68454709,-0.72896865,0,0)"
+ inkscape:transform-center-x="-32.858262" />
+ <rect
+ inkscape:transform-center-x="-34.990495"
+ transform="matrix(-0.68454713,0.72896861,-0.72896861,-0.68454713,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3353"
+ width="0.5"
+ height="4"
+ x="-0.24999875"
+ y="-50"
+ inkscape:transform-center-y="32.858261" />
+ <rect
+ inkscape:transform-center-y="30.596351"
+ y="-50"
+ x="-0.24999878"
+ height="4"
+ width="0.5"
+ id="rect3355"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.63742401,0.77051322,-0.77051322,-0.63742401,0,0)"
+ inkscape:transform-center-x="-36.984636" />
+ <rect
+ inkscape:transform-center-x="-38.832817"
+ transform="matrix(-0.58778528,0.80901698,-0.80901698,-0.58778528,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3357"
+ width="0.5"
+ height="4"
+ x="-0.24999879"
+ y="-50"
+ inkscape:transform-center-y="28.213692" />
+ <rect
+ inkscape:transform-center-y="25.719686"
+ y="-50"
+ x="-0.24999885"
+ height="4"
+ width="0.5"
+ id="rect3359"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.53582682,0.84432791,-0.84432791,-0.53582682,0,0)"
+ inkscape:transform-center-x="-40.527742" />
+ <rect
+ inkscape:transform-center-x="-42.062723"
+ transform="matrix(-0.4817537,0.87630667,-0.87630667,-0.4817537,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3361"
+ width="0.5"
+ height="4"
+ x="-0.24999894"
+ y="-50"
+ inkscape:transform-center-y="23.124176" />
+ <rect
+ inkscape:transform-center-y="20.437406"
+ y="-50"
+ x="-0.24999906"
+ height="4"
+ width="0.5"
+ id="rect3363"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.42577932,0.90482704,-0.90482704,-0.42577932,0,0)"
+ inkscape:transform-center-x="-43.431701" />
+ <rect
+ inkscape:transform-center-x="-44.629274"
+ transform="matrix(-0.36812458,0.92977647,-0.92977647,-0.36812458,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3365"
+ width="0.5"
+ height="4"
+ x="-0.24999921"
+ y="-50"
+ inkscape:transform-center-y="17.669978" />
+ <rect
+ inkscape:transform-center-y="11.937114"
+ y="-50"
+ x="-0.24999955"
+ height="4"
+ width="0.5"
+ id="rect3367"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.24868991,0.96858315,-0.96858315,-0.24868991,0,0)"
+ inkscape:transform-center-x="-46.491995" />
+ <rect
+ inkscape:transform-center-x="-47.149792"
+ transform="matrix(-0.18738134,0.98228725,-0.98228725,-0.18738134,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3369"
+ width="0.5"
+ height="4"
+ x="-0.24999976"
+ y="-50"
+ inkscape:transform-center-y="8.9943024" />
+ <rect
+ inkscape:transform-center-y="6.0159943"
+ y="-50"
+ x="-0.24999999"
+ height="4"
+ width="0.5"
+ id="rect3371"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.12533326,0.9921147,-0.9921147,-0.12533326,0,0)"
+ inkscape:transform-center-x="-47.62151" />
+ <rect
+ inkscape:transform-center-x="-47.905287"
+ transform="matrix(-0.06279055,0.99802673,-0.99802673,-0.06279055,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3373"
+ width="0.5"
+ height="4"
+ x="-0.25000024"
+ y="-50"
+ inkscape:transform-center-y="3.013944" />
+ <rect
+ y="-50"
+ x="-0.25000048"
+ height="4"
+ width="0.5"
+ id="rect3375"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-3.031187e-8,1,-1,-3.031187e-8,0,0)"
+ inkscape:transform-center-x="-48.000004" />
+ <rect
+ inkscape:transform-center-x="-47.905287"
+ transform="matrix(0.06279049,0.99802673,-0.99802673,0.06279049,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3377"
+ width="0.5"
+ height="4"
+ x="-0.25000072"
+ y="-50"
+ inkscape:transform-center-y="-3.0139452" />
+ <rect
+ inkscape:transform-center-y="-6.0159955"
+ y="-50"
+ x="-0.25000098"
+ height="4"
+ width="0.5"
+ id="rect3379"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.1253332,0.99211471,-0.99211471,0.1253332,0,0)"
+ inkscape:transform-center-x="-47.62151" />
+ <rect
+ inkscape:transform-center-x="-47.149792"
+ transform="matrix(0.18738128,0.98228726,-0.98228726,0.18738128,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3381"
+ width="0.5"
+ height="4"
+ x="-0.25000125"
+ y="-50"
+ inkscape:transform-center-y="-8.9943036" />
+ <rect
+ inkscape:transform-center-y="-11.937115"
+ y="-50"
+ x="-0.25000149"
+ height="4"
+ width="0.5"
+ id="rect3383"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.24868985,0.96858317,-0.96858317,0.24868985,0,0)"
+ inkscape:transform-center-x="-46.491996" />
+ <rect
+ inkscape:transform-center-x="-44.629275"
+ transform="matrix(0.36812452,0.9297765,-0.9297765,0.36812452,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3385"
+ width="0.5"
+ height="4"
+ x="-0.25000203"
+ y="-50"
+ inkscape:transform-center-y="-17.66998" />
+ <rect
+ inkscape:transform-center-y="-20.437408"
+ y="-50"
+ x="-0.25000226"
+ height="4"
+ width="0.5"
+ id="rect3387"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.42577926,0.90482707,-0.90482707,0.42577926,0,0)"
+ inkscape:transform-center-x="-43.431702" />
+ <rect
+ inkscape:transform-center-x="-42.062724"
+ transform="matrix(0.48175364,0.8763067,-0.8763067,0.48175364,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3389"
+ width="0.5"
+ height="4"
+ x="-0.2500025"
+ y="-50"
+ inkscape:transform-center-y="-23.124178" />
+ <rect
+ inkscape:transform-center-y="-25.719688"
+ y="-50"
+ x="-0.25000274"
+ height="4"
+ width="0.5"
+ id="rect3391"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.53582676,0.84432795,-0.84432795,0.53582676,0,0)"
+ inkscape:transform-center-x="-40.527744" />
+ <rect
+ inkscape:transform-center-x="-38.832819"
+ transform="matrix(0.58778522,0.80901702,-0.80901702,0.58778522,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3393"
+ width="0.5"
+ height="4"
+ x="-0.25000298"
+ y="-50"
+ inkscape:transform-center-y="-28.213694" />
+ <rect
+ inkscape:transform-center-y="-30.596354"
+ y="-50"
+ x="-0.25000322"
+ height="4"
+ width="0.5"
+ id="rect3395"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.63742396,0.77051327,-0.77051327,0.63742396,0,0)"
+ inkscape:transform-center-x="-36.984639" />
+ <rect
+ inkscape:transform-center-x="-34.990497"
+ transform="matrix(0.68454708,0.72896865,-0.72896865,0.68454708,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3397"
+ width="0.5"
+ height="4"
+ x="-0.25000346"
+ y="-50"
+ inkscape:transform-center-y="-32.858264" />
+ <rect
+ inkscape:transform-center-y="-34.990497"
+ y="-50"
+ x="-0.25000373"
+ height="4"
+ width="0.5"
+ id="rect3399"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.7289686,0.68454713,-0.68454713,0.7289686,0,0)"
+ inkscape:transform-center-x="-32.858264" />
+ <rect
+ inkscape:transform-center-x="-30.596354"
+ transform="matrix(0.77051322,0.63742402,-0.63742402,0.77051322,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3401"
+ width="0.5"
+ height="4"
+ x="-0.25000399"
+ y="-50"
+ inkscape:transform-center-y="-36.984639" />
+ <rect
+ inkscape:transform-center-y="-40.527744"
+ y="-50"
+ x="-0.25000447"
+ height="4"
+ width="0.5"
+ id="rect3403"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.84432791,0.53582683,-0.53582683,0.84432791,0,0)"
+ inkscape:transform-center-x="-25.719688" />
+ <rect
+ inkscape:transform-center-x="-23.124178"
+ transform="matrix(0.87630666,0.48175371,-0.48175371,0.87630666,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3405"
+ width="0.5"
+ height="4"
+ x="-0.25000471"
+ y="-50"
+ inkscape:transform-center-y="-42.062724" />
+ <rect
+ inkscape:transform-center-y="-43.431702"
+ y="-50"
+ x="-0.25000495"
+ height="4"
+ width="0.5"
+ id="rect3407"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.90482703,0.42577933,-0.42577933,0.90482703,0,0)"
+ inkscape:transform-center-x="-20.437407" />
+ <rect
+ inkscape:transform-center-x="-17.669979"
+ transform="matrix(0.92977647,0.36812459,-0.36812459,0.92977647,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3409"
+ width="0.5"
+ height="4"
+ x="-0.25000519"
+ y="-50"
+ inkscape:transform-center-y="-44.629275" />
+ <rect
+ inkscape:transform-center-y="-45.650716"
+ y="-50"
+ x="-0.25000542"
+ height="4"
+ width="0.5"
+ id="rect3411"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.9510565,0.30901703,-0.30901703,0.9510565,0,0)"
+ inkscape:transform-center-x="-14.832816" />
+ <rect
+ inkscape:transform-center-x="-11.937114"
+ transform="matrix(0.96858315,0.24868992,-0.24868992,0.96858315,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3413"
+ width="0.5"
+ height="4"
+ x="-0.25000563"
+ y="-50"
+ inkscape:transform-center-y="-46.491995" />
+ <rect
+ inkscape:transform-center-y="-47.149791"
+ y="-50"
+ x="-0.25000581"
+ height="4"
+ width="0.5"
+ id="rect3415"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.98228724,0.18738135,-0.18738135,0.98228724,0,0)"
+ inkscape:transform-center-x="-8.9943024" />
+ <rect
+ inkscape:transform-center-x="-6.0159943"
+ transform="matrix(0.9921147,0.12533327,-0.12533327,0.9921147,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3417"
+ width="0.5"
+ height="4"
+ x="-0.25000599"
+ y="-50"
+ inkscape:transform-center-y="-47.621509" />
+ <rect
+ inkscape:transform-center-y="-47.905286"
+ y="-50"
+ x="-0.25000617"
+ height="4"
+ width="0.5"
+ id="rect3419"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.99802673,0.06279056,-0.06279056,0.99802673,0,0)"
+ inkscape:transform-center-x="-3.013944" />
+ <rect
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3421"
+ width="0.5"
+ height="4"
+ x="-0.25000635"
+ y="-50"
+ inkscape:transform-center-y="-48.000003" />
+ <rect
+ inkscape:transform-center-y="11.937114"
+ y="-50"
+ x="-0.25000137"
+ height="4"
+ width="0.5"
+ id="rect3423"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.24868987,-0.96858316,0.96858316,-0.24868987,0,0)"
+ inkscape:transform-center-x="46.491992" />
+ </g>
+ <text
+ inkscape:transform-center-x="0.42929375"
+ inkscape:transform-center-y="-38.934307"
+ sodipodi:linespacing="125%"
+ id="text3733"
+ y="-36.1035"
+ x="0.026167108"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="-36.1035"
+ x="0.026167108"
+ id="tspan3735"
+ sodipodi:role="line">0</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3856"
+ y="-28.502102"
+ x="22.653584"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ inkscape:transform-center-y="-38.934307"><tspan
+ y="-28.502102"
+ x="22.653584"
+ id="tspan3858"
+ sodipodi:role="line">1</tspan></text>
+ <text
+ inkscape:transform-center-y="-38.934307"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="37.149273"
+ y="-8.8798885"
+ id="text3860"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3862"
+ x="37.149273"
+ y="-8.8798885">2</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3864"
+ y="15.515295"
+ x="37.149273"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ inkscape:transform-center-y="-38.934307"><tspan
+ y="15.515295"
+ x="37.149273"
+ id="tspan3866"
+ sodipodi:role="line">3</tspan></text>
+ <text
+ inkscape:transform-center-y="-38.934307"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="23.007137"
+ y="34.430401"
+ id="text3868"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3870"
+ x="23.007137"
+ y="34.430401">4</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3872"
+ y="41.678246"
+ x="0.026166867"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ inkscape:transform-center-y="-38.934307"><tspan
+ y="41.678246"
+ x="0.026166867"
+ id="tspan3874"
+ sodipodi:role="line">5</tspan></text>
+ <text
+ inkscape:transform-center-y="-38.934307"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-23.838688"
+ y="34.253624"
+ id="text3876"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3878"
+ x="-23.838688"
+ y="34.253624">6</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3880"
+ y="15.515294"
+ x="-36.920162"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ inkscape:transform-center-y="-38.934307"><tspan
+ y="15.515294"
+ x="-36.920162"
+ id="tspan3882"
+ sodipodi:role="line">7</tspan></text>
+ <text
+ inkscape:transform-center-y="-38.934307"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-37.273716"
+ y="-9.586997"
+ id="text3884"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3886"
+ x="-37.273716"
+ y="-9.586997">8</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3888"
+ y="-29.385986"
+ x="-22.247698"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ inkscape:transform-center-y="-38.934307"><tspan
+ y="-29.385986"
+ x="-22.247698"
+ id="tspan3890"
+ sodipodi:role="line">9</tspan></text>
+ </g>
+ <g
+ id="hand">
+ <path
+ transform="translate(-55,-55)"
+ inkscape:connector-curvature="0"
+ id="path4682"
+ d="m 55,55 -1,0 -1,-28 2,-7 2,7 -1,28 z"
+ style="fill:#f2f2f2;stroke:#1a1a1a;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ transform="matrix(1.0490637,0,0,1.0490637,-57.698499,-57.6985)"
+ d="m 58.336308,55.000004 a 3.3363085,3.3363085 0 1 1 -6.672616,0 3.3363085,3.3363085 0 1 1 6.672616,0 z"
+ sodipodi:ry="3.3363085"
+ sodipodi:rx="3.3363085"
+ sodipodi:cy="55.000004"
+ sodipodi:cx="55"
+ id="path3900"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:6px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f2f2f2;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-5"
+ y="10"
+ id="text4818"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4820"
+ x="-5"
+ y="10">ALT</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4822"
+ y="18"
+ x="0.22802734"
+ style="font-size:6px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f2f2f2;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="18"
+ x="0.22802734"
+ id="tspan4824"
+ sodipodi:role="line">x10 m</tspan></text>
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/instruments/bar.svg b/mavigator-server/src/main/resources/assets/images/instruments/bar.svg
new file mode 100644
index 0000000..50ecebf
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/instruments/bar.svg
@@ -0,0 +1,144 @@
+<?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="32"
+ height="100"
+ id="svg4387"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ viewBox="0 0 32 100"
+ sodipodi:docname="bar.svg">
+ <defs
+ id="defs4389">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2997">
+ <rect
+ clip-path="none"
+ y="1.5"
+ x="1.5"
+ height="97"
+ width="29"
+ id="rect2999"
+ style="fill:#00ffff;fill-opacity:1;stroke:none" />
+ </clipPath>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6568542"
+ inkscape:cx="97.092685"
+ inkscape:cy="49.623219"
+ inkscape:document-units="px"
+ inkscape:current-layer="svg4387"
+ showgrid="true"
+ showguides="false"
+ inkscape:snap-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-grids="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4395"
+ units="px"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ spacingx="1px"
+ spacingy="1px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4392">
+ <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>
+ <rect
+ style="fill:#00ff00;fill-opacity:1;stroke:none"
+ id="level"
+ width="29"
+ height="97"
+ x="1.5"
+ y="1.5"
+ clip-path="url(#clipPath2997)" />
+ <g
+ id="fixed"
+ transform="translate(5,50)">
+ <path
+ id="rect3022"
+ transform="translate(-50,-50)"
+ d="m 50,0 c -2.77,0 -5,2.23 -5,5 l 0,90 c 0,2.77 2.23,5 5,5 l 22,0 c 2.77,0 5,-2.23 5,-5 L 77,5 C 77,2.23 74.77,0 72,0 L 50,0 z m 0,1.5 22,0 c 1.939,0 3.5,1.561 3.5,3.5 l 0,90 c 0,1.939 -1.561,3.5 -3.5,3.5 l -22,0 c -1.939,0 -3.5,-1.561 -3.5,-3.5 l 0,-90 c 0,-1.939 1.561,-3.5 3.5,-3.5 z"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <rect
+ ry="4.2188474e-16"
+ y="-1"
+ x="-5"
+ height="2"
+ width="8"
+ id="rect3042"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="rect3046"
+ width="8"
+ height="1"
+ x="-5"
+ y="-25.5"
+ ry="2.1094237e-16" />
+ <rect
+ ry="2.1094237e-16"
+ y="24.5"
+ x="-5"
+ height="1"
+ width="8"
+ id="rect3048"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
+ <rect
+ ry="2.1094237e-16"
+ y="-25.5"
+ x="19"
+ height="1"
+ width="8"
+ id="rect3054"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="rect3056"
+ width="8"
+ height="2"
+ x="19"
+ y="-1"
+ ry="4.2188474e-16" />
+ <rect
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="rect3058"
+ width="8"
+ height="1"
+ x="19"
+ y="24.5"
+ ry="2.1094237e-16" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/instruments/compass.svg b/mavigator-server/src/main/resources/assets/images/instruments/compass.svg
new file mode 100644
index 0000000..83cf17b
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/instruments/compass.svg
@@ -0,0 +1,1034 @@
+<?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="110"
+ height="110"
+ id="svg2987"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="heading.svg"
+ viewBox="-55 -55 110 110">
+ <defs
+ id="defs2989" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#ffffff"
+ borderopacity="0.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="0"
+ inkscape:zoom="2.8"
+ inkscape:cx="80.925724"
+ inkscape:cy="121.2003"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-grids="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2997"
+ units="px"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ spacingx="1px"
+ spacingy="1px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2992">
+ <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">
+ <path
+ sodipodi:type="arc"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="path2999"
+ sodipodi:cx="660"
+ sodipodi:cy="592.36218"
+ sodipodi:rx="380"
+ sodipodi:ry="380"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ transform="matrix(0.14473684,0,0,0.14473684,-95.526315,-85.73663)" />
+ <g
+ id="heading">
+ <path
+ sodipodi:type="arc"
+ style="fill:#333333;fill-opacity:1;stroke:none"
+ id="path3016"
+ sodipodi:cx="660"
+ sodipodi:cy="592.36218"
+ sodipodi:rx="380"
+ sodipodi:ry="380"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ transform="matrix(0.13157895,0,0,0.13157895,-86.842106,-77.942392)" />
+ <text
+ inkscape:transform-center-x="0.13476562"
+ inkscape:transform-center-y="-45.863281"
+ sodipodi:linespacing="125%"
+ id="text3025"
+ y="-43"
+ x="0.025250001"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="-43"
+ x="0.025250001"
+ id="tspan3027"
+ sodipodi:role="line">N</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3089"
+ width="0.5"
+ height="7"
+ x="-0.25"
+ y="-42"
+ inkscape:transform-center-x="0.25"
+ inkscape:transform-center-y="-38.5" />
+ <rect
+ inkscape:transform-center-x="-3.2247624"
+ transform="matrix(0.9961947,0.08715574,-0.08715574,0.9961947,0,0)"
+ inkscape:transform-center-y="-36.859204"
+ y="-39"
+ x="-0.25"
+ height="4"
+ width="0.5"
+ id="rect4329"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ inkscape:transform-center-x="-6.6854549"
+ transform="matrix(0.98480775,0.17364818,-0.17364818,0.98480775,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4401"
+ width="0.5"
+ height="7"
+ x="-0.25"
+ y="-42"
+ inkscape:transform-center-y="-37.915098" />
+ <rect
+ inkscape:transform-center-y="-36.178166"
+ y="-42"
+ x="-0.25000006"
+ height="7"
+ width="0.5"
+ id="rect4403"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(0.93969262,0.34202015,-0.34202015,0.93969262,0,0)"
+ inkscape:transform-center-x="-13.167776" />
+ <rect
+ inkscape:transform-center-x="-19.250001"
+ transform="matrix(0.8660254,0.50000001,-0.50000001,0.8660254,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4405"
+ width="0.5"
+ height="7"
+ x="-0.25000003"
+ y="-42"
+ inkscape:transform-center-y="-33.341978" />
+ <rect
+ inkscape:transform-center-y="-29.492711"
+ y="-42"
+ x="-0.24999996"
+ height="7"
+ width="0.5"
+ id="rect4407"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(0.76604444,0.64278762,-0.64278762,0.76604444,0,0)"
+ inkscape:transform-center-x="-24.747324" />
+ <rect
+ inkscape:transform-center-x="-29.492712"
+ transform="matrix(0.6427876,0.76604445,-0.76604445,0.6427876,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4409"
+ width="0.5"
+ height="7"
+ x="-0.24999987"
+ y="-42"
+ inkscape:transform-center-y="-24.747323" />
+ <rect
+ inkscape:transform-center-y="-19.25"
+ y="-42"
+ x="-0.24999973"
+ height="7"
+ width="0.5"
+ id="rect4411"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(0.49999999,0.86602541,-0.86602541,0.49999999,0,0)"
+ inkscape:transform-center-x="-33.341979" />
+ <rect
+ inkscape:transform-center-x="-36.178167"
+ transform="matrix(0.34202013,0.93969262,-0.93969262,0.34202013,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4413"
+ width="0.5"
+ height="7"
+ x="-0.2499996"
+ y="-42"
+ inkscape:transform-center-y="-13.167775" />
+ <rect
+ inkscape:transform-center-y="-6.6854543"
+ y="-42"
+ x="-0.24999942"
+ height="7"
+ width="0.5"
+ id="rect4415"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(0.17364817,0.98480776,-0.98480776,0.17364817,0,0)"
+ inkscape:transform-center-x="-37.9151" />
+ <rect
+ inkscape:transform-center-x="-38.500001"
+ transform="matrix(0,1,-1,0,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4417"
+ width="0.5"
+ height="7"
+ x="-0.24999921"
+ y="-42" />
+ <rect
+ inkscape:transform-center-y="6.6854551"
+ y="-42"
+ x="-0.24999905"
+ height="7"
+ width="0.5"
+ id="rect4419"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(-0.17364818,0.98480775,-0.98480775,-0.17364818,0,0)"
+ inkscape:transform-center-x="-37.915099" />
+ <rect
+ inkscape:transform-center-x="-36.178166"
+ transform="matrix(-0.34202015,0.93969262,-0.93969262,-0.34202015,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4421"
+ width="0.5"
+ height="7"
+ x="-0.24999894"
+ y="-42"
+ inkscape:transform-center-y="13.167776" />
+ <rect
+ inkscape:transform-center-y="19.250001"
+ y="-42"
+ x="-0.24999893"
+ height="7"
+ width="0.5"
+ id="rect4423"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(-0.50000001,0.8660254,-0.8660254,-0.50000001,0,0)"
+ inkscape:transform-center-x="-33.341978" />
+ <rect
+ inkscape:transform-center-x="-29.492711"
+ transform="matrix(-0.64278762,0.76604444,-0.76604444,-0.64278762,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4425"
+ width="0.5"
+ height="7"
+ x="-0.24999887"
+ y="-42"
+ inkscape:transform-center-y="24.747324" />
+ <rect
+ inkscape:transform-center-y="29.492712"
+ y="-42"
+ x="-0.24999881"
+ height="7"
+ width="0.5"
+ id="rect4427"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(-0.76604445,0.6427876,-0.6427876,-0.76604445,0,0)"
+ inkscape:transform-center-x="-24.747322" />
+ <rect
+ inkscape:transform-center-x="-19.249999"
+ transform="matrix(-0.86602541,0.49999999,-0.49999999,-0.86602541,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4429"
+ width="0.5"
+ height="7"
+ x="-0.24999879"
+ y="-42"
+ inkscape:transform-center-y="33.341979" />
+ <rect
+ inkscape:transform-center-y="36.178166"
+ y="-42"
+ x="-0.24999875"
+ height="7"
+ width="0.5"
+ id="rect4431"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(-0.93969262,0.34202013,-0.34202013,-0.93969262,0,0)"
+ inkscape:transform-center-x="-13.167774" />
+ <rect
+ inkscape:transform-center-x="-6.6854535"
+ transform="matrix(-0.98480776,0.17364817,-0.17364817,-0.98480776,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4433"
+ width="0.5"
+ height="7"
+ x="-0.24999879"
+ y="-42"
+ inkscape:transform-center-y="37.915099" />
+ <rect
+ inkscape:transform-center-y="38.5"
+ y="-42"
+ x="-0.24999879"
+ height="7"
+ width="0.5"
+ id="rect4435"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="scale(-1,-1)" />
+ <rect
+ inkscape:transform-center-x="6.6854549"
+ transform="matrix(-0.98480775,-0.17364818,0.17364818,-0.98480775,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4437"
+ width="0.5"
+ height="7"
+ x="-0.24999881"
+ y="-42"
+ inkscape:transform-center-y="37.915098" />
+ <rect
+ inkscape:transform-center-y="36.178165"
+ y="-42"
+ x="-0.2499989"
+ height="7"
+ width="0.5"
+ id="rect4439"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(-0.93969262,-0.34202015,0.34202015,-0.93969262,0,0)"
+ inkscape:transform-center-x="13.167776" />
+ <rect
+ inkscape:transform-center-x="19.25"
+ transform="matrix(-0.8660254,-0.50000001,0.50000001,-0.8660254,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4441"
+ width="0.5"
+ height="7"
+ x="-0.24999903"
+ y="-42"
+ inkscape:transform-center-y="33.341977" />
+ <rect
+ inkscape:transform-center-y="29.49271"
+ y="-42"
+ x="-0.24999921"
+ height="7"
+ width="0.5"
+ id="rect4443"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(-0.76604444,-0.64278762,0.64278762,-0.76604444,0,0)"
+ inkscape:transform-center-x="24.747323" />
+ <rect
+ inkscape:transform-center-x="29.492711"
+ transform="matrix(-0.6427876,-0.76604445,0.76604445,-0.6427876,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4445"
+ width="0.5"
+ height="7"
+ x="-0.24999939"
+ y="-42"
+ inkscape:transform-center-y="24.747322" />
+ <rect
+ inkscape:transform-center-y="19.249999"
+ y="-42"
+ x="-0.24999951"
+ height="7"
+ width="0.5"
+ id="rect4447"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(-0.49999999,-0.86602541,0.86602541,-0.49999999,0,0)"
+ inkscape:transform-center-x="33.341978" />
+ <rect
+ inkscape:transform-center-x="36.178165"
+ transform="matrix(-0.34202013,-0.93969262,0.93969262,-0.34202013,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4449"
+ width="0.5"
+ height="7"
+ x="-0.24999961"
+ y="-42"
+ inkscape:transform-center-y="13.167774" />
+ <rect
+ inkscape:transform-center-y="6.6854537"
+ y="-42"
+ x="-0.24999981"
+ height="7"
+ width="0.5"
+ id="rect4451"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(-0.17364817,-0.98480776,0.98480776,-0.17364817,0,0)"
+ inkscape:transform-center-x="37.915098" />
+ <rect
+ inkscape:transform-center-x="38.499999"
+ transform="matrix(0,-1,1,0,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4453"
+ width="0.5"
+ height="7"
+ x="-0.24999996"
+ y="-42" />
+ <rect
+ inkscape:transform-center-y="-6.6854548"
+ y="-42"
+ x="-0.25000012"
+ height="7"
+ width="0.5"
+ id="rect4455"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(0.17364818,-0.98480775,0.98480775,0.17364818,0,0)"
+ inkscape:transform-center-x="37.915097" />
+ <rect
+ inkscape:transform-center-x="36.178165"
+ transform="matrix(0.34202015,-0.93969262,0.93969262,0.34202015,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4457"
+ width="0.5"
+ height="7"
+ x="-0.25000036"
+ y="-42"
+ inkscape:transform-center-y="-13.167775" />
+ <rect
+ inkscape:transform-center-y="-19.249999"
+ y="-42"
+ x="-0.25000054"
+ height="7"
+ width="0.5"
+ id="rect4459"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(0.50000001,-0.8660254,0.8660254,0.50000001,0,0)"
+ inkscape:transform-center-x="33.341977" />
+ <rect
+ inkscape:transform-center-x="29.49271"
+ transform="matrix(0.64278762,-0.76604444,0.76604444,0.64278762,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4461"
+ width="0.5"
+ height="7"
+ x="-0.2500008"
+ y="-42"
+ inkscape:transform-center-y="-24.747322" />
+ <rect
+ inkscape:transform-center-y="-29.49271"
+ y="-42"
+ x="-0.25000107"
+ height="7"
+ width="0.5"
+ id="rect4463"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(0.76604445,-0.6427876,0.6427876,0.76604445,0,0)"
+ inkscape:transform-center-x="24.747322" />
+ <rect
+ inkscape:transform-center-x="19.249999"
+ transform="matrix(0.86602541,-0.49999999,0.49999999,0.86602541,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4465"
+ width="0.5"
+ height="7"
+ x="-0.25000131"
+ y="-42"
+ inkscape:transform-center-y="-33.341977" />
+ <rect
+ inkscape:transform-center-y="-36.178165"
+ y="-42"
+ x="-0.25000155"
+ height="7"
+ width="0.5"
+ id="rect4467"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ transform="matrix(0.93969262,-0.34202013,0.34202013,0.93969262,0,0)"
+ inkscape:transform-center-x="13.167775" />
+ <rect
+ inkscape:transform-center-x="6.6854547"
+ transform="matrix(0.98480776,-0.17364817,0.17364817,0.98480776,0,0)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4469"
+ width="0.5"
+ height="7"
+ x="-0.25000167"
+ y="-42"
+ inkscape:transform-center-y="-37.915098" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4473"
+ width="0.5"
+ height="4"
+ x="-0.24999999"
+ y="-39"
+ inkscape:transform-center-y="-35.739256"
+ transform="matrix(0.96592583,0.25881904,-0.25881904,0.96592583,0,0)"
+ inkscape:transform-center-x="-9.5763045" />
+ <rect
+ inkscape:transform-center-x="-15.636876"
+ transform="matrix(0.90630779,0.42261826,-0.42261826,0.90630779,0,0)"
+ inkscape:transform-center-y="-33.533388"
+ y="-39"
+ x="-0.24999994"
+ height="4"
+ width="0.5"
+ id="rect4475"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4477"
+ width="0.5"
+ height="4"
+ x="-0.24999994"
+ y="-39"
+ inkscape:transform-center-y="-30.308626"
+ transform="matrix(0.81915205,0.57357643,-0.57357643,0.81915205,0,0)"
+ inkscape:transform-center-x="-21.222328" />
+ <rect
+ inkscape:transform-center-x="-26.162951"
+ transform="matrix(0.70710679,0.70710678,-0.70710678,0.70710679,0,0)"
+ inkscape:transform-center-y="-26.162951"
+ y="-39"
+ x="-0.24999991"
+ height="4"
+ width="0.5"
+ id="rect4479"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4481"
+ width="0.5"
+ height="4"
+ x="-0.24999993"
+ y="-39"
+ inkscape:transform-center-y="-21.222328"
+ transform="matrix(0.57357644,0.81915204,-0.81915204,0.57357644,0,0)"
+ inkscape:transform-center-x="-30.308626" />
+ <rect
+ inkscape:transform-center-x="-33.533388"
+ transform="matrix(0.42261827,0.90630778,-0.90630778,0.42261827,0,0)"
+ inkscape:transform-center-y="-15.636876"
+ y="-39"
+ x="-0.24999987"
+ height="4"
+ width="0.5"
+ id="rect4483"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4485"
+ width="0.5"
+ height="4"
+ x="-0.24999985"
+ y="-39"
+ inkscape:transform-center-y="-9.5763052"
+ transform="matrix(0.25881906,0.96592582,-0.96592582,0.25881906,0,0)"
+ inkscape:transform-center-x="-35.739255" />
+ <rect
+ inkscape:transform-center-x="-36.859204"
+ transform="matrix(0.08715576,0.9961947,-0.9961947,0.08715576,0,0)"
+ inkscape:transform-center-y="-3.2247632"
+ y="-39"
+ x="-0.24999991"
+ height="4"
+ width="0.5"
+ id="rect4487"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4489"
+ width="0.5"
+ height="4"
+ x="-0.2499999"
+ y="-39"
+ inkscape:transform-center-y="3.2247619"
+ transform="matrix(-0.08715573,0.9961947,-0.9961947,-0.08715573,0,0)"
+ inkscape:transform-center-x="-36.859204" />
+ <rect
+ inkscape:transform-center-x="-35.739256"
+ transform="matrix(-0.25881903,0.96592583,-0.96592583,-0.25881903,0,0)"
+ inkscape:transform-center-y="9.576304"
+ y="-39"
+ x="-0.24999988"
+ height="4"
+ width="0.5"
+ id="rect4491"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4493"
+ width="0.5"
+ height="4"
+ x="-0.24999984"
+ y="-39"
+ inkscape:transform-center-y="15.636875"
+ transform="matrix(-0.42261825,0.90630779,-0.90630779,-0.42261825,0,0)"
+ inkscape:transform-center-x="-33.533388" />
+ <rect
+ inkscape:transform-center-x="-30.308626"
+ transform="matrix(-0.57357643,0.81915205,-0.81915205,-0.57357643,0,0)"
+ inkscape:transform-center-y="21.222328"
+ y="-39"
+ x="-0.2499999"
+ height="4"
+ width="0.5"
+ id="rect4495"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4497"
+ width="0.5"
+ height="4"
+ x="-0.24999987"
+ y="-39"
+ inkscape:transform-center-y="26.162951"
+ transform="matrix(-0.70710678,0.70710679,-0.70710679,-0.70710678,0,0)"
+ inkscape:transform-center-x="-26.162951" />
+ <rect
+ inkscape:transform-center-x="-21.222328"
+ transform="matrix(-0.81915204,0.57357644,-0.57357644,-0.81915204,0,0)"
+ inkscape:transform-center-y="30.308626"
+ y="-39"
+ x="-0.24999988"
+ height="4"
+ width="0.5"
+ id="rect4499"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4501"
+ width="0.5"
+ height="4"
+ x="-0.24999982"
+ y="-39"
+ inkscape:transform-center-y="33.533388"
+ transform="matrix(-0.90630778,0.42261827,-0.42261827,-0.90630778,0,0)"
+ inkscape:transform-center-x="-15.636876" />
+ <rect
+ inkscape:transform-center-x="-9.5763052"
+ transform="matrix(-0.96592582,0.25881906,-0.25881906,-0.96592582,0,0)"
+ inkscape:transform-center-y="35.739255"
+ y="-39"
+ x="-0.24999981"
+ height="4"
+ width="0.5"
+ id="rect4503"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4505"
+ width="0.5"
+ height="4"
+ x="-0.24999987"
+ y="-39"
+ inkscape:transform-center-y="36.859204"
+ transform="matrix(-0.9961947,0.08715576,-0.08715576,-0.9961947,0,0)"
+ inkscape:transform-center-x="-3.2247632" />
+ <rect
+ inkscape:transform-center-x="3.2247619"
+ transform="matrix(-0.9961947,-0.08715573,0.08715573,-0.9961947,0,0)"
+ inkscape:transform-center-y="36.859204"
+ y="-39"
+ x="-0.24999985"
+ height="4"
+ width="0.5"
+ id="rect4507"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4509"
+ width="0.5"
+ height="4"
+ x="-0.24999984"
+ y="-39"
+ inkscape:transform-center-y="35.739256"
+ transform="matrix(-0.96592583,-0.25881903,0.25881903,-0.96592583,0,0)"
+ inkscape:transform-center-x="9.576304" />
+ <rect
+ inkscape:transform-center-x="15.636875"
+ transform="matrix(-0.90630779,-0.42261825,0.42261825,-0.90630779,0,0)"
+ inkscape:transform-center-y="33.533388"
+ y="-39"
+ x="-0.24999979"
+ height="4"
+ width="0.5"
+ id="rect4511"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4513"
+ width="0.5"
+ height="4"
+ x="-0.24999985"
+ y="-39"
+ inkscape:transform-center-y="30.308626"
+ transform="matrix(-0.81915205,-0.57357643,0.57357643,-0.81915205,0,0)"
+ inkscape:transform-center-x="21.222328" />
+ <rect
+ inkscape:transform-center-x="26.162951"
+ transform="matrix(-0.70710679,-0.70710678,0.70710678,-0.70710679,0,0)"
+ inkscape:transform-center-y="26.162951"
+ y="-39"
+ x="-0.24999982"
+ height="4"
+ width="0.5"
+ id="rect4515"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4517"
+ width="0.5"
+ height="4"
+ x="-0.24999984"
+ y="-39"
+ inkscape:transform-center-y="21.222328"
+ transform="matrix(-0.57357644,-0.81915204,0.81915204,-0.57357644,0,0)"
+ inkscape:transform-center-x="30.308626" />
+ <rect
+ inkscape:transform-center-x="33.533388"
+ transform="matrix(-0.42261827,-0.90630778,0.90630778,-0.42261827,0,0)"
+ inkscape:transform-center-y="15.636876"
+ y="-39"
+ x="-0.24999979"
+ height="4"
+ width="0.5"
+ id="rect4519"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4521"
+ width="0.5"
+ height="4"
+ x="-0.24999978"
+ y="-39"
+ inkscape:transform-center-y="9.5763052"
+ transform="matrix(-0.25881906,-0.96592582,0.96592582,-0.25881906,0,0)"
+ inkscape:transform-center-x="35.739255" />
+ <rect
+ inkscape:transform-center-x="36.859204"
+ transform="matrix(-0.08715576,-0.9961947,0.9961947,-0.08715576,0,0)"
+ inkscape:transform-center-y="3.2247632"
+ y="-39"
+ x="-0.24999984"
+ height="4"
+ width="0.5"
+ id="rect4523"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4525"
+ width="0.5"
+ height="4"
+ x="-0.24999982"
+ y="-39"
+ inkscape:transform-center-y="-3.2247619"
+ transform="matrix(0.08715573,-0.9961947,0.9961947,0.08715573,0,0)"
+ inkscape:transform-center-x="36.859204" />
+ <rect
+ inkscape:transform-center-x="35.739256"
+ transform="matrix(0.25881903,-0.96592583,0.96592583,0.25881903,0,0)"
+ inkscape:transform-center-y="-9.576304"
+ y="-39"
+ x="-0.24999981"
+ height="4"
+ width="0.5"
+ id="rect4527"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4529"
+ width="0.5"
+ height="4"
+ x="-0.24999976"
+ y="-39"
+ inkscape:transform-center-y="-15.636875"
+ transform="matrix(0.42261825,-0.90630779,0.90630779,0.42261825,0,0)"
+ inkscape:transform-center-x="33.533388" />
+ <rect
+ inkscape:transform-center-x="30.308626"
+ transform="matrix(0.57357643,-0.81915205,0.81915205,0.57357643,0,0)"
+ inkscape:transform-center-y="-21.222328"
+ y="-39"
+ x="-0.24999982"
+ height="4"
+ width="0.5"
+ id="rect4531"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4533"
+ width="0.5"
+ height="4"
+ x="-0.24999979"
+ y="-39"
+ inkscape:transform-center-y="-26.162951"
+ transform="matrix(0.70710678,-0.70710679,0.70710679,0.70710678,0,0)"
+ inkscape:transform-center-x="26.162951" />
+ <rect
+ inkscape:transform-center-x="21.222328"
+ transform="matrix(0.81915204,-0.57357644,0.57357644,0.81915204,0,0)"
+ inkscape:transform-center-y="-30.308626"
+ y="-39"
+ x="-0.24999981"
+ height="4"
+ width="0.5"
+ id="rect4535"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4537"
+ width="0.5"
+ height="4"
+ x="-0.24999976"
+ y="-39"
+ inkscape:transform-center-y="-33.533388"
+ transform="matrix(0.90630778,-0.42261827,0.42261827,0.90630778,0,0)"
+ inkscape:transform-center-x="15.636876" />
+ <rect
+ inkscape:transform-center-x="9.5763052"
+ transform="matrix(0.96592582,-0.25881906,0.25881906,0.96592582,0,0)"
+ inkscape:transform-center-y="-35.739255"
+ y="-39"
+ x="-0.24999975"
+ height="4"
+ width="0.5"
+ id="rect4539"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect4541"
+ width="0.5"
+ height="4"
+ x="-0.24999981"
+ y="-39"
+ inkscape:transform-center-y="-36.859204"
+ transform="matrix(0.9961947,-0.08715576,0.08715576,0.9961947,0,0)"
+ inkscape:transform-center-x="3.2247632" />
+ <text
+ transform="matrix(0.8660254,0.5,-0.5,0.8660254,0,0)"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="0.0072135464"
+ y="-43.067314"
+ id="text4549"
+ sodipodi:linespacing="125%"
+ inkscape:transform-center-y="-39.786151"
+ inkscape:transform-center-x="-22.814931"><tspan
+ sodipodi:role="line"
+ id="tspan4551"
+ x="0.0072135464"
+ y="-43.067314">3</tspan></text>
+ <text
+ inkscape:transform-center-x="-39.651384"
+ inkscape:transform-center-y="-23.048351"
+ sodipodi:linespacing="125%"
+ id="text4553"
+ y="-43.116589"
+ x="-0.042062506"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)"><tspan
+ y="-43.116589"
+ x="-0.042062506"
+ id="tspan4555"
+ sodipodi:role="line">6</tspan></text>
+ <text
+ transform="matrix(0,1,-1,0,0,0)"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-0.10937481"
+ y="-43.134624"
+ id="text4557"
+ sodipodi:linespacing="125%"
+ inkscape:transform-center-y="-0.13476539"
+ inkscape:transform-center-x="-45.863281"><tspan
+ sodipodi:role="line"
+ id="tspan4559"
+ x="-0.10937481"
+ y="-43.134624">E</tspan></text>
+ <text
+ inkscape:transform-center-x="-39.786149"
+ inkscape:transform-center-y="22.81493"
+ sodipodi:linespacing="125%"
+ id="text4561"
+ y="-43.116589"
+ x="-0.17668717"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,0,0)"><tspan
+ y="-43.116589"
+ x="-0.17668717"
+ id="tspan4563"
+ sodipodi:role="line">12</tspan></text>
+ <text
+ transform="matrix(-0.8660254,0.5,-0.5,-0.8660254,0,0)"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-0.22596352"
+ y="-43.067314"
+ id="text4565"
+ sodipodi:linespacing="125%"
+ inkscape:transform-center-y="39.651385"
+ inkscape:transform-center-x="-23.048352"><tspan
+ sodipodi:role="line"
+ id="tspan4567"
+ x="-0.22596352"
+ y="-43.067314">15</tspan></text>
+ <text
+ inkscape:transform-center-x="-0.13476577"
+ inkscape:transform-center-y="45.863281"
+ sodipodi:linespacing="125%"
+ id="text4569"
+ y="-43"
+ x="-0.24399991"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ transform="scale(-1,-1)"><tspan
+ y="-43"
+ x="-0.24399991"
+ id="tspan4571"
+ sodipodi:role="line">S</tspan></text>
+ <text
+ transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-0.22596374"
+ y="-42.932686"
+ id="text4573"
+ sodipodi:linespacing="125%"
+ inkscape:transform-center-y="39.786148"
+ inkscape:transform-center-x="22.814929"><tspan
+ sodipodi:role="line"
+ id="tspan4575"
+ x="-0.22596374"
+ y="-42.932686">21</tspan></text>
+ <text
+ inkscape:transform-center-x="39.651383"
+ inkscape:transform-center-y="23.048351"
+ sodipodi:linespacing="125%"
+ id="text4577"
+ y="-42.883411"
+ x="-0.17668764"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)"><tspan
+ y="-42.883411"
+ x="-0.17668764"
+ id="tspan4579"
+ sodipodi:role="line">24</tspan></text>
+ <text
+ transform="matrix(0,-1,1,0,0,0)"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-0.10937551"
+ y="-42.865376"
+ id="text4581"
+ sodipodi:linespacing="125%"
+ inkscape:transform-center-y="0.13476589"
+ inkscape:transform-center-x="45.863281"><tspan
+ sodipodi:role="line"
+ id="tspan4583"
+ x="-0.10937551"
+ y="-42.865376">W</tspan></text>
+ <text
+ inkscape:transform-center-x="39.786149"
+ inkscape:transform-center-y="-22.81493"
+ sodipodi:linespacing="125%"
+ id="text4585"
+ y="-42.883411"
+ x="-0.042063359"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)"><tspan
+ y="-42.883411"
+ x="-0.042063359"
+ id="tspan4587"
+ sodipodi:role="line">30</tspan></text>
+ <text
+ transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="0.0072127138"
+ y="-42.932686"
+ id="text4589"
+ sodipodi:linespacing="125%"
+ inkscape:transform-center-y="-39.651382"
+ inkscape:transform-center-x="23.04835"><tspan
+ sodipodi:role="line"
+ id="tspan4591"
+ x="0.0072127138"
+ y="-42.932686">33</tspan></text>
+ </g>
+ <g
+ id="fixed">
+ <path
+ sodipodi:type="arc"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+ id="path3018"
+ sodipodi:cx="660"
+ sodipodi:cy="592.36218"
+ sodipodi:rx="380"
+ sodipodi:ry="380"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ transform="matrix(0.09210526,0,0,0.09210526,-60.789473,-54.559673)" />
+ <path
+ id="path3085"
+ d="m -15,-20 c -2.761424,0 -5,2.238576 -5,5 0,2.761424 2.238576,5 5,5 2.761424,0 5,-2.238576 5,-5 0,-2.761424 -2.238576,-5 -5,-5 z m 0,0.5 c 2.485281,0 4.5,2.014719 4.5,4.5 0,2.485281 -2.014719,4.5 -4.5,4.5 -2.485281,0 -4.5,-2.014719 -4.5,-4.5 0,-2.485281 2.014719,-4.5 4.5,-4.5 z"
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ d="m 15,-20 c -2.761424,0 -5,2.238576 -5,5 0,2.761424 2.238576,5 5,5 2.761424,0 5,-2.238576 5,-5 0,-2.761424 -2.238576,-5 -5,-5 z m 0,0.5 c 2.485281,0 4.5,2.014719 4.5,4.5 0,2.485281 -2.014719,4.5 -4.5,4.5 -2.485281,0 -4.5,-2.014719 -4.5,-4.5 0,-2.485281 2.014719,-4.5 4.5,-4.5 z"
+ id="path3093" />
+ <path
+ id="path3095"
+ d="m 15,10 c -2.761424,0 -5,2.238576 -5,5 0,2.761424 2.238576,5 5,5 2.761424,0 5,-2.238576 5,-5 0,-2.761424 -2.238576,-5 -5,-5 z m 0,0.5 c 2.485281,0 4.5,2.014719 4.5,4.5 0,2.485281 -2.014719,4.5 -4.5,4.5 -2.485281,0 -4.5,-2.014719 -4.5,-4.5 0,-2.485281 2.014719,-4.5 4.5,-4.5 z"
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ d="m -15,10 c -2.761424,0 -5,2.238576 -5,5 0,2.761424 2.238576,5 5,5 2.761424,0 5,-2.238576 5,-5 0,-2.761424 -2.238576,-5 -5,-5 z m 0,0.5 c 2.485281,0 4.5,2.014719 4.5,4.5 0,2.485281 -2.014719,4.5 -4.5,4.5 -2.485281,0 -4.5,-2.014719 -4.5,-4.5 0,-2.485281 2.014719,-4.5 4.5,-4.5 z"
+ id="path3097" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3099"
+ d="M -11.558058,11.558058 11.558058,-11.558058"
+ style="fill:none;stroke:#ff6600;stroke-width:0.49999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3101"
+ d="M -11.558058,-11.558058 11.558058,11.558058"
+ style="fill:none;stroke:#ff6600;stroke-width:0.49999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ inkscape:transform-center-y="-0.52004486"
+ transform="matrix(-1.6169678e-4,0.96137262,0.83266641,1.8669043e-4,-49.964312,26.269061)"
+ d="M -57.197225,63.122499 -59.901388,61.561249 -62.605551,60 l 2.704163,-1.56125 2.704164,-1.561249 0,3.122499 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="2.0943952"
+ sodipodi:arg1="1.0471976"
+ sodipodi:r2="1.8027756"
+ sodipodi:r1="3.6055512"
+ sodipodi:cy="60"
+ sodipodi:cx="-59"
+ sodipodi:sides="3"
+ id="path3778"
+ style="fill:none;stroke:#ff6600;stroke-width:0.55884141;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ sodipodi:type="star" />
+ </g>
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/instruments/distance.svg b/mavigator-server/src/main/resources/assets/images/instruments/distance.svg
new file mode 100644
index 0000000..1f4d6ff
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/instruments/distance.svg
@@ -0,0 +1,218 @@
+<?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="110"
+ height="110"
+ id="svg2987"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="distance.svg"
+ viewBox="-55 -55 110 110">
+ <defs
+ id="defs2989" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#ffffff"
+ borderopacity="0.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="0"
+ inkscape:zoom="2.8"
+ inkscape:cx="138.05523"
+ inkscape:cy="39.382212"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-grids="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2997"
+ units="px"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ spacingx="1px"
+ spacingy="1px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2992">
+ <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">
+ <path
+ transform="matrix(0.13157895,0,0,0.13157895,-86.842106,-77.942392)"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ sodipodi:ry="380"
+ sodipodi:rx="380"
+ sodipodi:cy="592.36218"
+ sodipodi:cx="660"
+ id="path3016"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.11842105,0,0,0.11842105,-78.157899,-70.148156)"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ sodipodi:ry="380"
+ sodipodi:rx="380"
+ sodipodi:cy="592.36218"
+ sodipodi:cx="660"
+ id="path3306"
+ style="fill:#666666;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+ id="path3304"
+ sodipodi:cx="660"
+ sodipodi:cy="592.36218"
+ sodipodi:rx="380"
+ sodipodi:ry="380"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ transform="matrix(0.10526316,0,0,0.10526316,-69.47369,-62.353918)" />
+ <path
+ transform="matrix(0.09210526,0,0,0.09210526,-60.789477,-54.559677)"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ sodipodi:ry="380"
+ sodipodi:rx="380"
+ sodipodi:cy="592.36218"
+ sodipodi:cx="660"
+ id="path3302"
+ style="fill:#666666;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+ id="path3300"
+ sodipodi:cx="660"
+ sodipodi:cy="592.36218"
+ sodipodi:rx="380"
+ sodipodi:ry="380"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ transform="matrix(0.07894737,0,0,0.07894737,-52.105268,-46.765439)" />
+ <path
+ transform="matrix(0.06578947,0,0,0.06578947,-43.421055,-38.971198)"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ sodipodi:ry="380"
+ sodipodi:rx="380"
+ sodipodi:cy="592.36218"
+ sodipodi:cx="660"
+ id="path3298"
+ style="fill:#666666;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+ id="path3277"
+ sodipodi:cx="660"
+ sodipodi:cy="592.36218"
+ sodipodi:rx="380"
+ sodipodi:ry="380"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ transform="matrix(0.05263158,0,0,0.05263158,-34.736845,-31.176959)" />
+ <path
+ transform="matrix(0.03947368,0,0,0.03947368,-26.052632,-23.382717)"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ sodipodi:ry="380"
+ sodipodi:rx="380"
+ sodipodi:cy="592.36218"
+ sodipodi:cx="660"
+ id="path3018"
+ style="fill:#666666;fill-opacity:1;stroke:#ff7f2a;stroke-width:16.18800173;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:type="arc" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:2.1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m -7.193878,-9.5918365 c -1.3243564,0 -2.3979591,1.0736028 -2.3979591,2.3979591 0,1.3243564 1.0736027,2.3979591 2.3979591,2.3979591 1.3243563,0 2.3979591,-1.0736027 2.3979591,-2.3979591 0,-1.3243563 -1.0736028,-2.3979591 -2.3979591,-2.3979591 z m 0,0.2397959 c 1.1919204,0 2.1581632,0.9662428 2.1581632,2.1581632 0,1.1919205 -0.9662428,2.1581632 -2.1581632,2.1581632 -1.1919205,0 -2.1581632,-0.9662427 -2.1581632,-2.1581632 0,-1.1919204 0.9662427,-2.1581632 2.1581632,-2.1581632 z"
+ id="path3085" />
+ <path
+ id="path3093"
+ d="m 7.1938766,-9.5918365 c -1.3243564,0 -2.3979591,1.0736028 -2.3979591,2.3979591 0,1.3243564 1.0736027,2.3979591 2.3979591,2.3979591 1.3243563,0 2.3979591,-1.0736027 2.3979591,-2.3979591 0,-1.3243563 -1.0736028,-2.3979591 -2.3979591,-2.3979591 z m 0,0.2397959 c 1.1919204,0 2.1581632,0.9662428 2.1581632,2.1581632 0,1.1919205 -0.9662428,2.1581632 -2.1581632,2.1581632 -1.1919205,0 -2.1581632,-0.9662427 -2.1581632,-2.1581632 0,-1.1919204 0.9662427,-2.1581632 2.1581632,-2.1581632 z"
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ d="m 7.1938766,4.7959181 c -1.3243564,0 -2.3979591,1.0736028 -2.3979591,2.3979591 0,1.3243564 1.0736027,2.3979591 2.3979591,2.3979591 1.3243563,0 2.3979591,-1.0736027 2.3979591,-2.3979591 0,-1.3243563 -1.0736028,-2.3979591 -2.3979591,-2.3979591 z m 0,0.2397959 c 1.1919204,0 2.1581632,0.9662428 2.1581632,2.1581632 0,1.1919205 -0.9662428,2.1581632 -2.1581632,2.1581632 -1.1919205,0 -2.1581632,-0.9662427 -2.1581632,-2.1581632 0,-1.1919204 0.9662427,-2.1581632 2.1581632,-2.1581632 z"
+ id="path3095" />
+ <path
+ id="path3097"
+ d="m -7.193878,4.7959181 c -1.3243564,0 -2.3979591,1.0736028 -2.3979591,2.3979591 0,1.3243564 1.0736027,2.3979591 2.3979591,2.3979591 1.3243563,0 2.3979591,-1.0736027 2.3979591,-2.3979591 0,-1.3243563 -1.0736028,-2.3979591 -2.3979591,-2.3979591 z m 0,0.2397959 c 1.1919204,0 2.1581632,0.9662428 2.1581632,2.1581632 0,1.1919205 -0.9662428,2.1581632 -2.1581632,2.1581632 -1.1919205,0 -2.1581632,-0.9662427 -2.1581632,-2.1581632 0,-1.1919204 0.9662427,-2.1581632 2.1581632,-2.1581632 z"
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ff6600;stroke-width:0.23979589;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M -5.5431508,5.54315 5.5431493,-5.5431502"
+ id="path3099"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ff6600;stroke-width:0.23979589;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M -5.5431508,-5.5431502 5.5431493,5.54315"
+ id="path3101"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:type="star"
+ style="fill:none;stroke:#ff6600;stroke-width:0.79236584;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3778"
+ sodipodi:sides="3"
+ sodipodi:cx="-59"
+ sodipodi:cy="60"
+ sodipodi:r1="3.6055512"
+ sodipodi:r2="1.8027756"
+ sodipodi:arg1="1.0471976"
+ sodipodi:arg2="2.0943952"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="M -57.197225,63.122499 -59.901388,61.561249 -62.605551,60 l 2.704163,-1.56125 2.704164,-1.561249 0,3.122499 z"
+ transform="matrix(-7.7548453e-5,0.46106644,0.39934,8.9535203e-5,-23.962476,16.598427)"
+ inkscape:transform-center-y="-0.52004486" />
+ <path
+ style="fill:#00ff00;stroke:#00ff00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m -50,-18.75 c 0.297619,0.05952 0.595238,0.119048 0.892857,0.178571 0.119048,0 0.239715,-0.01957 0.357143,0 0.242084,0.04035 0.471329,0.143864 0.714286,0.178572 0.176776,0.02525 0.359572,-0.02936 0.535714,0 0.18567,0.03095 0.353104,0.132919 0.535714,0.178571 0.294451,0.07361 0.598407,0.104959 0.892857,0.178572 0.182611,0.04565 0.351966,0.137738 0.535715,0.178571 0.353447,0.07854 0.717981,0.100028 1.071428,0.178572 0.183749,0.04083 0.357143,0.119047 0.535715,0.178571 0.357142,0.119048 0.709451,0.253721 1.071428,0.357143 0.05723,0.01635 0.119646,-0.0084 0.178572,0 0.35843,0.0512 0.711156,0.142544 1.071428,0.178571 0.236914,0.02369 0.478584,-0.03367 0.714286,0 0.186339,0.02662 0.357143,0.119048 0.535714,0.178572 0.416667,0 0.835401,-0.04146 1.25,0 0.187297,0.01873 0.349375,0.151951 0.535714,0.178571 0.235703,0.03367 0.476191,0 0.714286,0 0.238095,0 0.476191,0 0.714286,0 0.357143,0 0.714286,0 1.071428,0 0.238096,0 0.478584,0.03367 0.714286,0 0.186339,-0.02662 0.350045,-0.147626 0.535714,-0.178571 0.176142,-0.02936 0.366307,0.05647 0.535715,0 0.05647,-0.01882 -0.04953,-0.145554 0,-0.178572 1.080402,-0.720268 0.07149,0.258884 0.892857,-0.357143 0.134687,-0.101015 0.225677,-0.25197 0.357143,-0.357142 0.515632,-0.412506 0.509601,-0.235217 0.892857,-0.714286 0.13407,-0.167587 0.228373,-0.364022 0.357143,-0.535714 0.05051,-0.06734 0.124681,-0.113904 0.178571,-0.178572 0.101988,-0.122385 1.297569,-1.556459 1.428572,-1.785714 0.09339,-0.16343 0.09439,-0.367356 0.178571,-0.535714 0.09598,-0.191959 0.246724,-0.351683 0.357143,-0.535715 0.06848,-0.114131 0.119047,-0.238095 0.178571,-0.357143 0.178572,-0.357142 0.387419,-0.700689 0.535715,-1.071428 0.09115,-0.22787 0.108049,-0.479213 0.178571,-0.714286 0.108175,-0.360585 0.248967,-0.710844 0.357143,-1.071428 0.07052,-0.235073 0.100962,-0.481458 0.178571,-0.714286 0.377385,-1.132155 0.284942,-0.550868 0.535715,-1.428572 0.07629,-0.267001 0.214425,-0.964564 0.357142,-1.25 0.09598,-0.191958 0.261164,-0.343755 0.357143,-0.535714 1.003096,-2.006191 -0.08249,-0.03762 0.535715,-1.428571 0.216227,-0.486511 0.516558,-0.934253 0.714285,-1.428572 0.06991,-0.174768 0.09439,-0.367355 0.178572,-0.535714 0.09598,-0.191959 0.261163,-0.343756 0.357143,-0.535714 0.08418,-0.168359 0.112479,-0.359469 0.178571,-0.535715 0.03323,-0.470719 0.368814,-0.832749 0.535714,-1.25 0.06991,-0.174768 0.09439,-0.367355 0.178572,-0.535714 0.136569,-0.273139 0.55982,-0.863837 0.714285,-1.25 0.475265,-1.188161 -0.186741,0.132664 0.535715,-1.071428 0.136958,-0.228264 0.197423,-0.501327 0.357143,-0.714286 0.101015,-0.134687 0.263754,-0.21706 0.357142,-0.357143 0.219781,-0.32967 0.315935,-0.741758 0.535715,-1.071429 0.111406,-0.167109 0.599921,-0.599921 0.714285,-0.714285 0.416667,-0.416667 0.833334,-0.833334 1.25,-1.25 0.13948,-0.13948 0.432989,-0.381625 0.535715,-0.535715 0.07383,-0.110745 0.09871,-0.250663 0.178571,-0.357142 0.101015,-0.134687 0.25197,-0.225677 0.357143,-0.357143 0.13407,-0.167587 0.223073,-0.368128 0.357143,-0.535715 0.105173,-0.131466 0.256127,-0.222455 0.357143,-0.357142 0.07986,-0.10648 0.09871,-0.250664 0.178571,-0.357143 0.101015,-0.134687 0.256128,-0.222456 0.357143,-0.357143 0.422735,-0.563647 -0.134199,-0.222945 0.535714,-0.892857 0.649933,-0.649933 0.125471,0.189849 0.535715,-0.357143 0.128769,-0.171693 0.228373,-0.364022 0.357142,-0.535715 0.112156,-0.14954 0.46265,-0.389585 0.535715,-0.535714 0.178994,-0.357989 -0.295226,-0.0018 0.178571,-0.357143 1.770799,-1.328099 -0.35353,0.295211 0.892857,-0.535714 0.07004,-0.04669 0.106389,-0.135261 0.178572,-0.178571 0.228263,-0.136958 0.47619,-0.238096 0.714285,-0.357143 0.119048,-0.05952 0.230874,-0.136482 0.357143,-0.178572 0.05647,-0.01882 0.125332,0.02662 0.178572,0 0.191958,-0.09598 0.343756,-0.261163 0.535714,-0.357143 0.05324,-0.02662 0.120825,0.01444 0.178571,0 0.182611,-0.04565 0.351139,-0.141656 0.535715,-0.178571 0.116736,-0.02335 0.241649,0.02887 0.357143,0 0.129125,-0.03228 0.238095,-0.119048 0.357142,-0.178571 0.297619,-0.05952 0.592395,-0.135649 0.892858,-0.178572 0.117851,-0.01684 0.238095,0 0.357142,0 0.238096,0 0.476191,0 0.714286,0 0.119048,0 0.24165,0.02887 0.357143,0 0.129125,-0.03228 0.225855,-0.15669 0.357143,-0.178571 0.234856,-0.03914 0.47943,0.03914 0.714286,0 0.131288,-0.02188 0.225854,-0.15669 0.357142,-0.178572 0.347491,-0.05792 0.723939,0.05792 1.071429,0 0.242084,-0.04035 0.471329,-0.143863 0.714286,-0.178571 0.296962,-0.04242 0.918734,0 1.25,0 0.05952,0 0.136481,0.04209 0.178571,0 0.04209,-0.04209 -0.05324,-0.151952 0,-0.178572 C -4.000663,-50.231812 -30,-44 -4,-53 c 0.1124987,-0.03894 -33.119048,14 -33,14"
+ id="path3192"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccsscscsccsscsssssscccssscssssssssscssscsscccssssssssssssssssssscsccsscccccsscsssssssssc" />
+ <path
+ style="fill:#00ff00;stroke:#00ff00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m 37,-39 c 0.339238,0.286323 -23.076942,-8.950563 -22.714286,-8.678572 0.202031,0.151523 0.357143,0.357143 0.535715,0.535715 0.297619,0.297619 0.595238,0.595238 0.892857,0.892857 0.807636,0.807636 -0.15776,-0.184053 1.071428,1.25 0.109567,0.127827 0.238096,0.238095 0.357143,0.357143 0.297619,0.357143 0.607439,0.704462 0.892857,1.071428 0.131762,0.169408 0.223074,0.368128 0.357143,0.535715 0.342822,0.428527 0.728607,0.821473 1.071429,1.25 0.134069,0.167587 0.228373,0.364021 0.357143,0.535714 1.046559,1.395412 0.37132,0.376992 1.25,1.607143 0.124743,0.17464 0.225381,0.366306 0.357142,0.535714 0.285419,0.366967 0.607439,0.704462 0.892858,1.071429 0.395284,0.508223 0.676143,1.098919 1.071428,1.607143 0.155044,0.199341 0.38893,0.330215 0.535714,0.535714 0.154725,0.216614 0.200573,0.499001 0.357143,0.714286 3.190943,4.387545 -0.216344,-0.493646 1.607143,1.785714 0.319871,0.399838 0.572986,0.850161 0.892857,1.25 0.315519,0.394398 0.735874,0.69393 1.071429,1.071428 0.30886,0.347468 0.583997,0.723961 0.892857,1.071429 0.503332,0.566248 1.100326,1.044012 1.607143,1.607143 0.199097,0.221218 0.345183,0.485648 0.535714,0.714286 0.295565,0.354677 1.305583,1.163907 1.428572,1.25 0.218078,0.152654 0.489704,0.214227 0.714285,0.357142 0.416667,0.297619 0.833334,0.595238 1.25,0.892858 0.119048,0.05952 0.243011,0.110092 0.357143,0.178571 0.481522,0.288913 0.954816,0.591377 1.428572,0.892857 0.431074,0.27432 0.74827,0.547043 1.25,0.714286 0.112938,0.03765 0.244204,-0.03765 0.357142,0 0.252539,0.08418 0.467127,0.258279 0.714286,0.357143 0.154363,0.06175 0.377611,-0.0527 0.535714,0 0.12627,0.04209 0.228018,0.14629 0.357143,0.178571 0.115493,0.02887 0.238096,0 0.357143,0 0.05952,0 0.125332,-0.02662 0.178572,0 0.07529,0.03765 0.103279,0.140925 0.178571,0.178572 0.05324,0.02662 0.120204,-0.01167 0.178571,0 0.240657,0.04813 0.473629,0.13044 0.714286,0.178571 0.05837,0.01167 0.122102,-0.01882 0.178572,0 0.126269,0.04209 0.228017,0.14629 0.357142,0.178571 0.115494,0.02887 0.244205,-0.03765 0.357143,0 0.07986,0.02662 0.103279,0.140926 0.178572,0.178572 0.05324,0.02662 0.120825,-0.01444 0.178571,0 0.182611,0.04565 0.357143,0.119047 0.535714,0.178571 0.178572,0.05952 0.357143,0.119048 0.535715,0.178572 0.05952,0 0.120825,-0.01444 0.178571,0 0.182611,0.04565 0.350045,0.147626 0.535714,0.178571 0.176142,0.02936 0.360611,-0.03502 0.535715,0 0.130514,0.0261 0.230874,0.136482 0.357143,0.178572 0.232831,0.07761 0.473631,0.13044 0.714281,0.178571 0.0584,0.01167 0.11905,0 0.17858,0 0.23809,0.05952 0.47362,0.13044 0.71428,0.178571 0.0584,0.01167 0.12533,-0.02662 0.17857,0 0.84325,0.421624 -1.08993,-0.09391 0.71429,0.357143 0.17857,0.04464 0.35714,-0.08928 0.53571,0 0.47619,0.238095 -0.53571,0.178572 0.17857,0.178572"
+ id="path3194"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="csssscsssssssssssssssssccsscccscscscccccsccccccscccsccc" />
+ <path
+ style="fill:#00ff00;stroke:#00ff00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="m -34,40 c 0.124317,0.736668 -15.393362,-18.327802 -15,-18 0.258674,0.215561 -0.0057,-14.540561 0.25,-14.321429 0.162949,0.139671 0.372766,0.217473 0.535714,0.357143 0.255655,0.219133 0.455612,0.498725 0.714286,0.714286 0.10225,0.08521 0.250663,0.09871 0.357143,0.178571 0.134687,0.101016 0.225677,0.25197 0.357143,0.357143 0.167587,0.13407 0.357143,0.238095 0.535714,0.357143 0.238095,0.238095 0.458631,0.495153 0.714286,0.714286 0.325897,0.279341 0.732613,0.450762 1.071428,0.714286 0.366967,0.285418 0.704462,0.607438 1.071429,0.892857 0.169408,0.131761 0.372765,0.217472 0.535714,0.357143 0.255655,0.219132 0.46088,0.492555 0.714286,0.714285 0.223981,0.195984 0.47619,0.357143 0.714286,0.535715 0.647689,0.485766 1.332085,0.922811 1.964285,1.428571 0.197199,0.157759 0.338515,0.377955 0.535715,0.535714 0.377561,0.752881 1.358186,0.817072 1.964285,1.25 0.205499,0.146785 0.338515,0.377955 0.535715,0.535715 2.577478,2.061982 0.214504,0.136502 1.964285,1.25 0.270637,0.172223 1.30764,0.963155 1.785715,1.25 0.924277,0.554566 1.079703,0.567134 1.785714,1.071428 0.293483,0.209631 0.893906,0.698624 1.25,0.892857 0.467389,0.25494 0.961182,0.459346 1.428571,0.714286 0.188411,0.102769 0.351683,0.246724 0.535715,0.357143 2.423219,1.453932 0.298187,0.162648 1.964285,1.071428 0.421299,0.2298 0.828701,0.484487 1.25,0.714286 1.09127,0.595238 0.446429,0.14881 1.785715,0.892857 0.375216,0.208454 0.714285,0.476191 1.071428,0.714286 0.357143,0.238095 0.722148,0.464799 1.071429,0.714286 0.0685,0.04893 0.119047,0.119047 0.178571,0.178571 0.238095,0.238095 0.476191,0.476191 0.714286,0.714286 0.528844,0.528844 1.117762,1.04785 1.607143,1.607143 0.141325,0.161515 0.225381,0.366306 0.357143,0.535714 0.285418,0.366967 0.590307,0.718453 0.892857,1.071429 0.05478,0.06391 0.129643,0.110071 0.178571,0.178571 0.249486,0.349281 0.476191,0.714286 0.714286,1.071429 0.119047,0.178571 0.250663,0.349375 0.357143,0.535714 0.132071,0.231125 0.220185,0.486022 0.357143,0.714286 0.220838,0.368063 0.522327,0.687511 0.714285,1.071428 0.05324,0.10648 -0.03765,0.244205 0,0.357143 0.143353,0.430057 0.380796,0.823973 0.535715,1.25 0.677306,1.862593 -0.246537,-0.259198 0.357142,1.25 0.168359,0.420897 0.380796,0.823973 0.535715,1.25 0.167743,0.461294 0.222297,0.956611 0.357143,1.428571 0.05171,0.180989 0.12686,0.354726 0.178571,0.535715 0.06742,0.23598 0.111149,0.478305 0.178571,0.714285 0.205257,0.718399 0.478746,1.436238 0.714286,2.142858 0.05952,0.178571 0.137739,0.351965 0.178572,0.535714 0.07854,0.353447 0.100027,0.717981 0.178571,1.071427 0.277668,1.24951 0.136631,-0.335525 0.357143,1.42857 0.02215,0.1772 -0.03502,0.36061 0,0.53572 0.05221,0.26103 0.29258,0.45603 0.357143,0.71428 0.03314,0.13255 -0.05481,0.65948 0,0.71429 0.04209,0.0421 0.136481,-0.0421 0.178571,0 0.04209,0.0421 0,0.11905 0,0.17857 0,0.0595 0.05952,0.17857 0,0.17857 -0.05952,0 0,-0.23809 0,-0.17857 0,1.0119 -0.119047,0.0595 0.178572,0.35714 0.04209,0.0421 0,0.11905 0,0.17857 0,0.0595 0,0.11905 0,0.17858 0,0.11904 0,0.23809 0,0.35714 0,0.0595 0.05952,0.17857 0,0.17857 -0.05952,0 0,-0.11905 0,-0.17857"
+ id="path3196"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="csssssscssssssscsssssssssssscsssssssssscsssscscssscccsssscssssc" />
+ <path
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ d="M 55 0 C 24.624339 1.8947806e-14 0 24.624339 0 55 C 9.4739031e-15 85.375661 24.624339 110 55 110 C 85.375661 110 110 85.375661 110 55 C 110 24.624339 85.375661 -7.1054274e-15 55 0 z M 55 5 C 82.614238 5 105 27.385762 105 55 C 105 82.614238 82.614238 105 55 105 C 27.385762 105 5 82.614238 5 55 C 5 27.385762 27.385762 5 55 5 z "
+ transform="translate(-55,-55)"
+ id="path2999" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/instruments/distribution.svg b/mavigator-server/src/main/resources/assets/images/instruments/distribution.svg
new file mode 100644
index 0000000..4061720
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/instruments/distribution.svg
@@ -0,0 +1,169 @@
+<?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="100"
+ height="100"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ viewBox="-50 -50 100 100"
+ sodipodi:docname="distribution.svg">
+ <defs
+ id="defs4">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3098">
+ <path
+ sodipodi:type="arc"
+ style="fill:#00ffff;fill-opacity:1;stroke:none"
+ id="path3100"
+ sodipodi:cx="50"
+ sodipodi:cy="50"
+ sodipodi:rx="50"
+ sodipodi:ry="50"
+ d="M 100,50 A 50,50 0 1 1 0,50 50,50 0 1 1 100,50 z"
+ transform="translate(-50,-50)" />
+ </clipPath>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="95.600837"
+ inkscape:cx="19.951598"
+ inkscape:cy="84.621478"
+ inkscape:document-units="px"
+ inkscape:current-layer="svg2"
+ showgrid="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1033"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2985"
+ units="px"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ spacingx="1px"
+ spacingy="1px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <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
+ id="zones">
+ <path
+ transform="translate(-50,-50)"
+ d="m 60,50 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
+ sodipodi:ry="10"
+ sodipodi:rx="10"
+ sodipodi:cy="50"
+ sodipodi:cx="50"
+ id="balanced"
+ style="fill:#c6e9af;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="fixed">
+ <path
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0"
+ id="path2996"
+ d="m 23.467106,7.0710678 c 1.387622,-4.611486 1.387622,-9.5306496 0,-14.1421356 m -46.934212,0 c -1.387622,4.611486 -1.387622,9.5306496 0,14.1421356"
+ style="fill:none;stroke:#1a1a1a;stroke-width:1;stroke-opacity:1" />
+ <path
+ sodipodi:type="arc"
+ style="fill:none;stroke:#1a1a1a;stroke-width:0.15228426;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path3772"
+ sodipodi:cx="50"
+ sodipodi:cy="50"
+ sodipodi:rx="5"
+ sodipodi:ry="5"
+ d="m 55,50 a 5,5 0 1 1 -10,0 5,5 0 1 1 10,0 z"
+ transform="matrix(9.85,0,0,9.85,-492.5,-492.5)" />
+ <path
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0"
+ id="path3774"
+ d="m 36.327611,7.0710678 c 0.903087,-4.6644242 0.903087,-9.4777114 0,-14.1421356 m -72.655222,0 c -0.903087,4.6644242 -0.903087,9.4777114 0,14.1421356"
+ style="fill:none;stroke:#1a1a1a;stroke-width:1.00000012;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0"
+ id="path3776"
+ d="m -9.6785241,-7.0710678 c -3.0692919,4.1991084 -3.0692919,9.9430272 0,14.1421356 m 19.3570482,0 c 3.0692919,-4.1991084 3.0692919,-9.9430272 0,-14.1421356"
+ style="fill:none;stroke:#1a1a1a;stroke-width:1;stroke-opacity:1" />
+ <path
+ style="fill:none;stroke:#1a1a1a;stroke-width:1;stroke-opacity:1"
+ d="m 7.0710678,-23.467106 c -4.611486,-1.387622 -9.5306496,-1.387622 -14.1421356,0 m 0,46.934212 c 4.611486,1.387622 9.5306496,1.387622 14.1421356,0"
+ id="path3809"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#1a1a1a;stroke-width:1.00000012;stroke-opacity:1"
+ d="m 7.0710678,-36.327611 c -4.6644242,-0.903087 -9.4777114,-0.903087 -14.1421356,0 m 0,72.655222 c 4.6644242,0.903087 9.4777114,0.903087 14.1421356,0"
+ id="path3811"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#1a1a1a;stroke-width:1;stroke-opacity:1"
+ d="m -7.0710678,9.6785241 c 4.1991084,3.0692919 9.9430272,3.0692919 14.1421356,0 m 0,-19.3570482 c -4.1991084,-3.0692919 -9.9430272,-3.0692919 -14.1421356,0"
+ id="path3813"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ transform="translate(-50,-50)"
+ inkscape:connector-curvature="0"
+ id="path3819"
+ d="M 15,15 85,85"
+ style="fill:none;stroke:#1a1a1a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ transform="translate(-50,-50)"
+ inkscape:connector-curvature="0"
+ id="path3821"
+ d="M 15,85 85,15"
+ style="fill:none;stroke:#1a1a1a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <g
+ id="position"
+ clip-path="url(#clipPath3098)">
+ <rect
+ y="-7.5"
+ x="-0.5"
+ height="15"
+ width="1"
+ id="rect2997"
+ style="fill:#ff6600;fill-opacity:1;stroke:none" />
+ <rect
+ y="-0.5"
+ x="-7.5"
+ height="1"
+ width="14"
+ id="rect2999"
+ style="fill:#ff6600;fill-opacity:1;stroke:none" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/instruments/generic.svg b/mavigator-server/src/main/resources/assets/images/instruments/generic.svg
new file mode 100644
index 0000000..ac04b60
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/instruments/generic.svg
@@ -0,0 +1,314 @@
+<?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="100"
+ height="100"
+ id="svg4387"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ viewBox="-50 -50 100 100"
+ sodipodi:docname="basic.svg">
+ <defs
+ id="defs4389">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 50 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="100 : 50 : 1"
+ inkscape:persp3d-origin="50 : 33.333333 : 1"
+ id="perspective5114" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6568542"
+ inkscape:cx="65.204933"
+ inkscape:cy="31.918663"
+ inkscape:document-units="px"
+ inkscape:current-layer="svg4387"
+ showgrid="true"
+ showguides="false"
+ inkscape:snap-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-grids="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4395"
+ units="px"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ spacingx="1px"
+ spacingy="1px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4392">
+ <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
+ id="lower">
+ <path
+ inkscape:transform-center-y="44.418149"
+ inkscape:transform-center-x="11.044759"
+ inkscape:connector-curvature="0"
+ id="path5010"
+ d="m -0.52403983,48.510133 0.0154511,-3.487667 C -7.2448512,44.942356 -13.911142,43.340039 -19.989534,40.326163 l -1.591395,3.126201 c 6.563792,3.254436 13.7823459,4.974145 21.05688917,5.057769 z"
+ style="fill:#00d400;fill-opacity:1;stroke:none" />
+ <path
+ inkscape:transform-center-y="-24.174304"
+ inkscape:transform-center-x="39.074649"
+ inkscape:connector-curvature="0"
+ id="path5002"
+ d="m -45.973942,-15.488849 3.312195,1.092444 c 2.157808,-6.381812 5.741699,-12.226687 10.486391,-17.076243 l -2.481425,-2.479556 c -5.123476,5.236862 -8.989672,11.570695 -11.317161,18.463355 z"
+ style="fill:#00d400;fill-opacity:1;stroke:none" />
+ <path
+ style="fill:#00d400;fill-opacity:1;stroke:none"
+ d="m -47.994872,7.0710673 3.447146,-0.5303303 c -0.974661,-6.66586045 -0.434908,-13.5007347 1.590991,-19.975766 l -3.336661,-1.082757 c -2.187565,6.9920876 -2.756871,14.39079041 -1.701476,21.5888533 z"
+ id="path5004"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-x="45.733006"
+ inkscape:transform-center-y="-3.7233588" />
+ <path
+ inkscape:transform-center-y="17.810418"
+ inkscape:transform-center-x="42.280768"
+ inkscape:connector-curvature="0"
+ id="path5006"
+ d="m -39.553546,28.089583 2.830664,-2.037499 c -3.894666,-5.496838 -6.516711,-11.831799 -7.651224,-18.5208328 l -3.464548,0.5500689 c 1.225206,7.2231289 4.076892,14.0738809 8.285108,20.0082629 z"
+ style="fill:#00d400;fill-opacity:1;stroke:none" />
+ <path
+ style="fill:#00d400;fill-opacity:1;stroke:none"
+ d="m -22.490063,42.984936 1.597135,-3.10052 c -5.965685,-3.129577 -11.177957,-7.583685 -15.225573,-13.0286 l -2.837209,2.062987 c 4.370899,5.879623 10.021946,10.68905 16.465647,14.066133 z"
+ id="path5008"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-x="29.924319"
+ inkscape:transform-center-y="34.920377" />
+ </g>
+ <g
+ id="upper">
+ <path
+ inkscape:transform-center-y="-11.026553"
+ inkscape:transform-center-x="-44.430044"
+ inkscape:connector-curvature="0"
+ id="path4979"
+ d="m 43.460756,-21.556216 -3.114549,1.5696 c 2.986821,6.038424 4.585579,12.7055669 4.65973,19.48972598 l 3.507943,-0.001321 C 48.433702,-7.8240776 46.68882,-15.036587 43.460756,-21.556216 z"
+ style="fill:#ff0000;fill-opacity:1;stroke:none" />
+ <path
+ style="fill:#ff0000;fill-opacity:1;stroke:none"
+ d="m 28.9375,-38.9375 -2.0625,2.8125 c 5.402664,4.024287 9.853987,9.238934 13,15.25 L 43,-22.46875 C 39.602688,-28.959745 34.773576,-34.593978 28.9375,-38.9375 z"
+ id="path5000"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-x="-34.9375"
+ inkscape:transform-center-y="-29.90625" />
+ </g>
+ <g
+ id="dial">
+ <path
+ transform="translate(-50,-50)"
+ id="path4401"
+ d="M 50,0 C 22.385763,0 0,22.385763 0,50 c 0,27.614237 22.385763,50 50,50 l 0,-1.5 C 23.21419,98.5 1.5,76.78581 1.5,50 1.5,23.21419 23.21419,1.5 50,1.5 76.78581,1.5 98.5,23.21419 98.5,50 l 1.5,0 C 100,22.385763 77.614237,0 50,0 z"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <rect
+ inkscape:transform-center-y="51.283333"
+ y="41.5"
+ x="-1"
+ height="8.5"
+ width="2"
+ id="rect4409"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
+ <rect
+ inkscape:transform-center-x="31.996582"
+ transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,0,0)"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="rect4411"
+ width="2"
+ height="7.5"
+ x="-1"
+ y="41.5"
+ inkscape:transform-center-y="-31.996582" />
+ <rect
+ y="41.5"
+ x="-1.0000002"
+ height="8.5"
+ width="2"
+ id="rect4413"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="-51.283333" />
+ <rect
+ inkscape:transform-center-x="21.110558"
+ transform="matrix(0.89100652,0.4539905,-0.4539905,0.89100652,0,0)"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="rect4961"
+ width="1"
+ height="5"
+ x="-0.5"
+ y="44"
+ inkscape:transform-center-y="41.431803" />
+ <rect
+ inkscape:transform-center-y="27.332014"
+ y="44"
+ x="-0.49999985"
+ height="5"
+ width="1"
+ id="rect4963"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ transform="matrix(0.58778525,0.809017,-0.809017,0.58778525,0,0)"
+ inkscape:transform-center-x="37.61929" />
+ <rect
+ inkscape:transform-center-x="45.927507"
+ transform="matrix(0.15643446,0.98768834,-0.98768834,0.15643446,0,0)"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="rect4965"
+ width="1"
+ height="5"
+ x="-0.49999964"
+ y="44"
+ inkscape:transform-center-y="7.2742025" />
+ <rect
+ inkscape:transform-center-y="-14.36929"
+ y="44"
+ x="-0.49999928"
+ height="5"
+ width="1"
+ id="rect4967"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ transform="matrix(-0.309017,0.95105651,-0.95105651,-0.309017,0,0)"
+ inkscape:transform-center-x="44.224127" />
+ <rect
+ inkscape:transform-center-x="14.36929"
+ transform="matrix(-0.95105652,0.30901699,-0.30901699,-0.95105652,0,0)"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="rect4969"
+ width="1"
+ height="5"
+ x="-0.49999872"
+ y="44"
+ inkscape:transform-center-y="-44.224128" />
+ <rect
+ inkscape:transform-center-y="-45.927508"
+ y="44"
+ x="-0.49999878"
+ height="5"
+ width="1"
+ id="rect4971"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ transform="matrix(-0.98768834,-0.15643447,0.15643447,-0.98768834,0,0)"
+ inkscape:transform-center-x="-7.2742029" />
+ <rect
+ inkscape:transform-center-x="-27.332015"
+ transform="matrix(-0.80901699,-0.58778526,0.58778526,-0.80901699,0,0)"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="rect4973"
+ width="1"
+ height="5"
+ x="-0.49999899"
+ y="44"
+ inkscape:transform-center-y="-37.619291" />
+ <rect
+ inkscape:transform-center-y="-21.110559"
+ y="44"
+ x="-0.49999952"
+ height="5"
+ width="1"
+ id="rect4975"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ transform="matrix(-0.45399049,-0.89100653,0.89100653,-0.45399049,0,0)"
+ inkscape:transform-center-x="-41.431805" />
+ </g>
+ <g
+ id="labels">
+ <text
+ xml:space="preserve"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#4d4d4d;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="40.52644"
+ y="3.5468256"
+ id="text5100"
+ sodipodi:linespacing="125%"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Sans;-inkscape-font-specification:Sans"
+ sodipodi:role="line"
+ id="max"
+ x="40.52644"
+ y="3.5468256">100</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text5102"
+ y="39.272289"
+ x="0.0016270902"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ xml:space="preserve"><tspan
+ y="39.272289"
+ x="0.0016270902"
+ id="min"
+ sodipodi:role="line">0</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text5104"
+ y="27.28607"
+ x="25.962608"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#1a1a1a;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ xml:space="preserve"><tspan
+ y="27.28607"
+ x="25.962608"
+ id="value"
+ sodipodi:role="line">0</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text5106"
+ y="38.902164"
+ x="25.957726"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#4d4d4d;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
+ xml:space="preserve"><tspan
+ y="38.902164"
+ x="25.957726"
+ id="unit"
+ sodipodi:role="line">%</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text5108"
+ y="-20.848358"
+ x="-28.750261"
+ style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#4d4d4d;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="-20.848358"
+ x="-28.750261"
+ id="med"
+ sodipodi:role="line"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;text-anchor:start;font-family:Sans;-inkscape-font-specification:Sans">50</tspan></text>
+ </g>
+ <g
+ id="hand">
+ <path
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ d="m 48,50 c 0,13.34999 2,42 2,42 0,0 2,-28.65001 2,-42 0,-3 -4,-3 -4,0 z"
+ id="path5012"
+ inkscape:connector-curvature="0"
+ transform="translate(-50,-50)"
+ sodipodi:nodetypes="scss" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/instruments/generic2.svg b/mavigator-server/src/main/resources/assets/images/instruments/generic2.svg
new file mode 100644
index 0000000..02e4caa
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/instruments/generic2.svg
@@ -0,0 +1,1063 @@
+<?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="110"
+ height="110"
+ id="svg2987"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="generic.svg"
+ viewBox="-55 -55 110 110">
+ <defs
+ id="defs2989" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#ffffff"
+ borderopacity="0.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="0"
+ inkscape:zoom="2"
+ inkscape:cx="-32.598708"
+ inkscape:cy="85.113475"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-grids="true"
+ inkscape:snap-object-midpoints="true"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:snap-global="true"
+ inkscape:snap-nodes="false"
+ inkscape:snap-bbox="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2997"
+ units="px"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ spacingx="1px"
+ spacingy="1px" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata2992">
+ <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">
+ <path
+ transform="matrix(0.14473684,0,0,0.14473684,-95.526315,-85.73663)"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ sodipodi:ry="380"
+ sodipodi:rx="380"
+ sodipodi:cy="592.36218"
+ sodipodi:cx="660"
+ id="path2999"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.13157895,0,0,0.13157895,-86.842106,-77.942392)"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ sodipodi:ry="380"
+ sodipodi:rx="380"
+ sodipodi:cy="592.36218"
+ sodipodi:cx="660"
+ id="path3016"
+ style="fill:#333333;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ inkscape:transform-center-y="-42.359375"
+ inkscape:transform-center-x="-14.765616"
+ inkscape:connector-curvature="0"
+ id="path3372"
+ d="m -8.4662647e-7,-50 7.8029586e-7,7.062499 C 9.4425578,-42.937502 18.162476,-39.882027 25.249998,-34.718749 l 4.156251,-5.718747 C 21.15285,-46.450357 10.993025,-49.999997 -1.6970551e-5,-49.999953 z"
+ style="fill:#000080;fill-opacity:1;stroke:#1a1a1a;stroke-width:0.10000000000000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:#d40000;fill-opacity:1;stroke:#1a1a1a;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m -29.502325,40.414115 4.151232,-5.713683 c -7.63919,-5.550196 -12.89779,-13.147566 -15.596816,-21.490688 l -6.723873,2.183583 c 3.142869,9.715733 9.275914,18.559246 18.169498,25.020758 z"
+ id="path3347"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-x="36.448938"
+ inkscape:transform-center-y="26.811929" />
+ <path
+ transform="matrix(0.09210526,0,0,0.09210526,-60.789473,-54.559673)"
+ d="m 1040,592.36218 a 380,380 0 1 1 -760,0 380,380 0 1 1 760,0 z"
+ sodipodi:ry="380"
+ sodipodi:rx="380"
+ sodipodi:cy="592.36218"
+ sodipodi:cx="660"
+ id="path3018"
+ style="fill:#4d4d4d;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ d="m 0,-55 c -30.375661,0 -55,24.624339 -55,55 0,30.375661 24.624339,55 55,55 C 30.375661,55 55,30.375661 55,0 55,-30.375661 30.375661,-55 0,-55 z m 0,5 c 27.614238,0 50,22.385762 50,50 0,27.614238 -22.385762,50 -50,50 -27.614238,0 -50,-22.385762 -50,-50 0,-27.614238 22.385762,-50 50,-50 z"
+ id="path3741" />
+ <rect
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3190"
+ width="0.5"
+ height="7"
+ x="-0.25"
+ y="-50"
+ inkscape:transform-center-y="-46.5" />
+ <rect
+ inkscape:transform-center-y="-37.61929"
+ y="-50"
+ x="-0.25"
+ height="7"
+ width="0.5"
+ id="rect3192"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.80901699,-0.58778525,0.58778525,0.80901699,0,0)"
+ inkscape:transform-center-x="27.332014" />
+ <rect
+ inkscape:transform-center-x="44.224128"
+ transform="matrix(0.30901699,-0.95105652,0.95105652,0.30901699,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3194"
+ width="0.5"
+ height="7"
+ x="-0.24999993"
+ y="-50"
+ inkscape:transform-center-y="-14.36929" />
+ <rect
+ inkscape:transform-center-y="14.36929"
+ y="-50"
+ x="-0.24999984"
+ height="7"
+ width="0.5"
+ id="rect3196"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.309017,-0.95105651,0.95105651,-0.309017,0,0)"
+ inkscape:transform-center-x="44.224128" />
+ <rect
+ inkscape:transform-center-x="27.332015"
+ transform="matrix(-0.809017,-0.58778525,0.58778525,-0.809017,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3198"
+ width="0.5"
+ height="7"
+ x="-0.24999982"
+ y="-50"
+ inkscape:transform-center-y="37.61929" />
+ <rect
+ transform="matrix(-0.80901699,0.58778525,-0.58778525,-0.80901699,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3202"
+ width="0.5"
+ height="7"
+ x="-0.24999978"
+ y="-50"
+ inkscape:transform-center-y="37.61929"
+ inkscape:transform-center-x="-27.332014" />
+ <rect
+ inkscape:transform-center-x="-44.224128"
+ inkscape:transform-center-y="14.36929"
+ y="-50"
+ x="-0.24999975"
+ height="7"
+ width="0.5"
+ id="rect3204"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.30901699,0.95105652,-0.95105652,-0.30901699,0,0)" />
+ <rect
+ transform="matrix(0.309017,0.95105651,-0.95105651,0.309017,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3206"
+ width="0.5"
+ height="7"
+ x="-0.24999969"
+ y="-50"
+ inkscape:transform-center-y="-14.36929"
+ inkscape:transform-center-x="-44.224128" />
+ <rect
+ inkscape:transform-center-x="-27.332015"
+ inkscape:transform-center-y="-37.61929"
+ y="-50"
+ x="-0.2499997"
+ height="7"
+ width="0.5"
+ id="rect3208"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.809017,0.58778525,-0.58778525,0.809017,0,0)" />
+ <rect
+ inkscape:transform-center-y="-47.905283"
+ y="-50"
+ x="-0.25"
+ height="4"
+ width="0.5"
+ id="rect3243"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.99802673,-0.06279052,0.06279052,0.99802673,0,0)"
+ inkscape:transform-center-x="3.013945" />
+ <rect
+ inkscape:transform-center-x="6.0159953"
+ transform="matrix(0.9921147,-0.12533323,0.12533323,0.9921147,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3245"
+ width="0.5"
+ height="4"
+ x="-0.25"
+ y="-50"
+ inkscape:transform-center-y="-47.621506" />
+ <rect
+ inkscape:transform-center-y="-47.149788"
+ y="-50"
+ x="-0.25000003"
+ height="4"
+ width="0.5"
+ id="rect3247"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.98228725,-0.18738131,0.18738131,0.98228725,0,0)"
+ inkscape:transform-center-x="8.9943032" />
+ <rect
+ inkscape:transform-center-x="11.937115"
+ transform="matrix(0.96858316,-0.24868988,0.24868988,0.96858316,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3249"
+ width="0.5"
+ height="4"
+ x="-0.25000003"
+ y="-50"
+ inkscape:transform-center-y="-46.491992" />
+ <rect
+ inkscape:transform-center-y="-45.650713"
+ y="-50"
+ x="-0.25000006"
+ height="4"
+ width="0.5"
+ id="rect3251"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.95105652,-0.30901699,0.30901699,0.95105652,0,0)"
+ inkscape:transform-center-x="14.832816" />
+ <rect
+ inkscape:transform-center-x="17.669979"
+ transform="matrix(0.92977649,-0.36812455,0.36812455,0.92977649,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3253"
+ width="0.5"
+ height="4"
+ x="-0.25000006"
+ y="-50"
+ inkscape:transform-center-y="-44.629272" />
+ <rect
+ inkscape:transform-center-y="-43.431699"
+ y="-50"
+ x="-0.25000009"
+ height="4"
+ width="0.5"
+ id="rect3255"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.90482705,-0.42577929,0.42577929,0.90482705,0,0)"
+ inkscape:transform-center-x="20.437407" />
+ <rect
+ inkscape:transform-center-x="23.124177"
+ transform="matrix(0.87630668,-0.48175367,0.48175367,0.87630668,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3257"
+ width="0.5"
+ height="4"
+ x="-0.25000015"
+ y="-50"
+ inkscape:transform-center-y="-42.062721" />
+ <rect
+ inkscape:transform-center-y="-40.527741"
+ y="-50"
+ x="-0.25000021"
+ height="4"
+ width="0.5"
+ id="rect3259"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.84432793,-0.53582679,0.53582679,0.84432793,0,0)"
+ inkscape:transform-center-x="25.719687" />
+ <rect
+ inkscape:transform-center-x="30.596353"
+ transform="matrix(0.77051325,-0.63742399,0.63742399,0.77051325,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3261"
+ width="0.5"
+ height="4"
+ x="-0.2500003"
+ y="-50"
+ inkscape:transform-center-y="-36.984636" />
+ <rect
+ inkscape:transform-center-y="-34.990494"
+ y="-50"
+ x="-0.25000036"
+ height="4"
+ width="0.5"
+ id="rect3263"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.72896863,-0.6845471,0.6845471,0.72896863,0,0)"
+ inkscape:transform-center-x="32.858262" />
+ <rect
+ inkscape:transform-center-x="34.990495"
+ transform="matrix(0.68454711,-0.72896862,0.72896862,0.68454711,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3265"
+ width="0.5"
+ height="4"
+ x="-0.25000039"
+ y="-50"
+ inkscape:transform-center-y="-32.858261" />
+ <rect
+ inkscape:transform-center-y="-30.596352"
+ y="-50"
+ x="-0.25000045"
+ height="4"
+ width="0.5"
+ id="rect3267"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.637424,-0.77051324,0.77051324,0.637424,0,0)"
+ inkscape:transform-center-x="36.984637" />
+ <rect
+ inkscape:transform-center-x="38.832817"
+ transform="matrix(0.58778526,-0.80901699,0.80901699,0.58778526,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3269"
+ width="0.5"
+ height="4"
+ x="-0.25000051"
+ y="-50"
+ inkscape:transform-center-y="-28.213692" />
+ <rect
+ inkscape:transform-center-y="-25.719686"
+ y="-50"
+ x="-0.25000057"
+ height="4"
+ width="0.5"
+ id="rect3271"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.5358268,-0.84432792,0.84432792,0.5358268,0,0)"
+ inkscape:transform-center-x="40.527742" />
+ <rect
+ inkscape:transform-center-x="42.062722"
+ transform="matrix(0.48175368,-0.87630668,0.87630668,0.48175368,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3273"
+ width="0.5"
+ height="4"
+ x="-0.25000066"
+ y="-50"
+ inkscape:transform-center-y="-23.124176" />
+ <rect
+ inkscape:transform-center-y="-20.437406"
+ y="-50"
+ x="-0.25000072"
+ height="4"
+ width="0.5"
+ id="rect3275"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.4257793,-0.90482705,0.90482705,0.4257793,0,0)"
+ inkscape:transform-center-x="43.4317" />
+ <rect
+ inkscape:transform-center-x="44.629273"
+ transform="matrix(0.36812456,-0.92977648,0.92977648,0.36812456,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3277"
+ width="0.5"
+ height="4"
+ x="-0.2500008"
+ y="-50"
+ inkscape:transform-center-y="-17.669978" />
+ <rect
+ inkscape:transform-center-y="-11.937114"
+ y="-50"
+ x="-0.25000095"
+ height="4"
+ width="0.5"
+ id="rect3279"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.24868989,-0.96858316,0.96858316,0.24868989,0,0)"
+ inkscape:transform-center-x="46.491993" />
+ <rect
+ inkscape:transform-center-x="47.149789"
+ transform="matrix(0.18738132,-0.98228725,0.98228725,0.18738132,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3281"
+ width="0.5"
+ height="4"
+ x="-0.25000101"
+ y="-50"
+ inkscape:transform-center-y="-8.9943026" />
+ <rect
+ inkscape:transform-center-y="-6.0159947"
+ y="-50"
+ x="-0.25000107"
+ height="4"
+ width="0.5"
+ id="rect3283"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.12533324,-0.9921147,0.9921147,0.12533324,0,0)"
+ inkscape:transform-center-x="47.621507" />
+ <rect
+ inkscape:transform-center-x="47.905284"
+ transform="matrix(0.06279053,-0.99802673,0.99802673,0.06279053,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3285"
+ width="0.5"
+ height="4"
+ x="-0.25000116"
+ y="-50"
+ inkscape:transform-center-y="-3.0139445" />
+ <rect
+ y="-50"
+ x="-0.25000122"
+ height="4"
+ width="0.5"
+ id="rect3287"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(1.0351335e-8,-1,1,1.0351335e-8,0,0)"
+ inkscape:transform-center-x="48.000001" />
+ <rect
+ inkscape:transform-center-x="47.905284"
+ transform="matrix(-0.06279051,-0.99802673,0.99802673,-0.06279051,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3289"
+ width="0.5"
+ height="4"
+ x="-0.25000128"
+ y="-50"
+ inkscape:transform-center-y="3.013945" />
+ <rect
+ inkscape:transform-center-y="6.0159951"
+ y="-50"
+ x="-0.25000134"
+ height="4"
+ width="0.5"
+ id="rect3291"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.12533322,-0.9921147,0.9921147,-0.12533322,0,0)"
+ inkscape:transform-center-x="47.621506" />
+ <rect
+ inkscape:transform-center-x="47.149788"
+ transform="matrix(-0.1873813,-0.98228725,0.98228725,-0.1873813,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3293"
+ width="0.5"
+ height="4"
+ x="-0.25000137"
+ y="-50"
+ inkscape:transform-center-y="8.994303" />
+ <rect
+ inkscape:transform-center-y="17.669978"
+ y="-50"
+ x="-0.2500014"
+ height="4"
+ width="0.5"
+ id="rect3295"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.36812454,-0.92977649,0.92977649,-0.36812454,0,0)"
+ inkscape:transform-center-x="44.629271" />
+ <rect
+ inkscape:transform-center-x="43.431698"
+ transform="matrix(-0.42577928,-0.90482706,0.90482706,-0.42577928,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3297"
+ width="0.5"
+ height="4"
+ x="-0.25000137"
+ y="-50"
+ inkscape:transform-center-y="20.437405" />
+ <rect
+ inkscape:transform-center-y="23.124175"
+ y="-50"
+ x="-0.25000131"
+ height="4"
+ width="0.5"
+ id="rect3299"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.48175366,-0.87630669,0.87630669,-0.48175366,0,0)"
+ inkscape:transform-center-x="42.06272" />
+ <rect
+ inkscape:transform-center-x="40.527739"
+ transform="matrix(-0.53582678,-0.84432793,0.84432793,-0.53582678,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3301"
+ width="0.5"
+ height="4"
+ x="-0.25000122"
+ y="-50"
+ inkscape:transform-center-y="25.719685" />
+ <rect
+ inkscape:transform-center-y="28.213691"
+ y="-50"
+ x="-0.25000113"
+ height="4"
+ width="0.5"
+ id="rect3303"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.58778524,-0.809017,0.809017,-0.58778524,0,0)"
+ inkscape:transform-center-x="38.832814" />
+ <rect
+ inkscape:transform-center-x="36.984634"
+ transform="matrix(-0.63742398,-0.77051325,0.77051325,-0.63742398,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3305"
+ width="0.5"
+ height="4"
+ x="-0.25000101"
+ y="-50"
+ inkscape:transform-center-y="30.59635" />
+ <rect
+ inkscape:transform-center-y="32.85826"
+ y="-50"
+ x="-0.25000086"
+ height="4"
+ width="0.5"
+ id="rect3307"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.6845471,-0.72896864,0.72896864,-0.6845471,0,0)"
+ inkscape:transform-center-x="34.990493" />
+ <rect
+ inkscape:transform-center-x="32.85826"
+ transform="matrix(-0.72896862,-0.68454712,0.68454712,-0.72896862,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3309"
+ width="0.5"
+ height="4"
+ x="-0.25000075"
+ y="-50"
+ inkscape:transform-center-y="34.990493" />
+ <rect
+ inkscape:transform-center-y="36.984634"
+ y="-50"
+ x="-0.25000063"
+ height="4"
+ width="0.5"
+ id="rect3311"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.77051323,-0.637424,0.637424,-0.77051323,0,0)"
+ inkscape:transform-center-x="30.59635" />
+ <rect
+ inkscape:transform-center-x="-30.596352"
+ transform="matrix(-0.77051326,0.63742397,-0.63742397,-0.77051326,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3349"
+ width="0.5"
+ height="4"
+ x="-0.24999872"
+ y="-50"
+ inkscape:transform-center-y="36.984635" />
+ <rect
+ inkscape:transform-center-y="34.990494"
+ y="-50"
+ x="-0.24999872"
+ height="4"
+ width="0.5"
+ id="rect3351"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.72896865,0.68454709,-0.68454709,-0.72896865,0,0)"
+ inkscape:transform-center-x="-32.858262" />
+ <rect
+ inkscape:transform-center-x="-34.990495"
+ transform="matrix(-0.68454713,0.72896861,-0.72896861,-0.68454713,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3353"
+ width="0.5"
+ height="4"
+ x="-0.24999875"
+ y="-50"
+ inkscape:transform-center-y="32.858261" />
+ <rect
+ inkscape:transform-center-y="30.596351"
+ y="-50"
+ x="-0.24999878"
+ height="4"
+ width="0.5"
+ id="rect3355"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.63742401,0.77051322,-0.77051322,-0.63742401,0,0)"
+ inkscape:transform-center-x="-36.984636" />
+ <rect
+ inkscape:transform-center-x="-38.832817"
+ transform="matrix(-0.58778528,0.80901698,-0.80901698,-0.58778528,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3357"
+ width="0.5"
+ height="4"
+ x="-0.24999879"
+ y="-50"
+ inkscape:transform-center-y="28.213692" />
+ <rect
+ inkscape:transform-center-y="25.719686"
+ y="-50"
+ x="-0.24999885"
+ height="4"
+ width="0.5"
+ id="rect3359"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.53582682,0.84432791,-0.84432791,-0.53582682,0,0)"
+ inkscape:transform-center-x="-40.527742" />
+ <rect
+ inkscape:transform-center-x="-42.062723"
+ transform="matrix(-0.4817537,0.87630667,-0.87630667,-0.4817537,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3361"
+ width="0.5"
+ height="4"
+ x="-0.24999894"
+ y="-50"
+ inkscape:transform-center-y="23.124176" />
+ <rect
+ inkscape:transform-center-y="20.437406"
+ y="-50"
+ x="-0.24999906"
+ height="4"
+ width="0.5"
+ id="rect3363"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.42577932,0.90482704,-0.90482704,-0.42577932,0,0)"
+ inkscape:transform-center-x="-43.431701" />
+ <rect
+ inkscape:transform-center-x="-44.629274"
+ transform="matrix(-0.36812458,0.92977647,-0.92977647,-0.36812458,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3365"
+ width="0.5"
+ height="4"
+ x="-0.24999921"
+ y="-50"
+ inkscape:transform-center-y="17.669978" />
+ <rect
+ inkscape:transform-center-y="11.937114"
+ y="-50"
+ x="-0.24999955"
+ height="4"
+ width="0.5"
+ id="rect3367"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.24868991,0.96858315,-0.96858315,-0.24868991,0,0)"
+ inkscape:transform-center-x="-46.491995" />
+ <rect
+ inkscape:transform-center-x="-47.149792"
+ transform="matrix(-0.18738134,0.98228725,-0.98228725,-0.18738134,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3369"
+ width="0.5"
+ height="4"
+ x="-0.24999976"
+ y="-50"
+ inkscape:transform-center-y="8.9943024" />
+ <rect
+ inkscape:transform-center-y="6.0159943"
+ y="-50"
+ x="-0.24999999"
+ height="4"
+ width="0.5"
+ id="rect3371"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.12533326,0.9921147,-0.9921147,-0.12533326,0,0)"
+ inkscape:transform-center-x="-47.62151" />
+ <rect
+ inkscape:transform-center-x="-47.905287"
+ transform="matrix(-0.06279055,0.99802673,-0.99802673,-0.06279055,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3373"
+ width="0.5"
+ height="4"
+ x="-0.25000024"
+ y="-50"
+ inkscape:transform-center-y="3.013944" />
+ <rect
+ y="-50"
+ x="-0.25000048"
+ height="4"
+ width="0.5"
+ id="rect3375"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-3.031187e-8,1,-1,-3.031187e-8,0,0)"
+ inkscape:transform-center-x="-48.000004" />
+ <rect
+ inkscape:transform-center-x="-47.905287"
+ transform="matrix(0.06279049,0.99802673,-0.99802673,0.06279049,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3377"
+ width="0.5"
+ height="4"
+ x="-0.25000072"
+ y="-50"
+ inkscape:transform-center-y="-3.0139452" />
+ <rect
+ inkscape:transform-center-y="-6.0159955"
+ y="-50"
+ x="-0.25000098"
+ height="4"
+ width="0.5"
+ id="rect3379"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.1253332,0.99211471,-0.99211471,0.1253332,0,0)"
+ inkscape:transform-center-x="-47.62151" />
+ <rect
+ inkscape:transform-center-x="-47.149792"
+ transform="matrix(0.18738128,0.98228726,-0.98228726,0.18738128,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3381"
+ width="0.5"
+ height="4"
+ x="-0.25000125"
+ y="-50"
+ inkscape:transform-center-y="-8.9943036" />
+ <rect
+ inkscape:transform-center-y="-11.937115"
+ y="-50"
+ x="-0.25000149"
+ height="4"
+ width="0.5"
+ id="rect3383"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.24868985,0.96858317,-0.96858317,0.24868985,0,0)"
+ inkscape:transform-center-x="-46.491996" />
+ <rect
+ inkscape:transform-center-x="-44.629275"
+ transform="matrix(0.36812452,0.9297765,-0.9297765,0.36812452,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3385"
+ width="0.5"
+ height="4"
+ x="-0.25000203"
+ y="-50"
+ inkscape:transform-center-y="-17.66998" />
+ <rect
+ inkscape:transform-center-y="-20.437408"
+ y="-50"
+ x="-0.25000226"
+ height="4"
+ width="0.5"
+ id="rect3387"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.42577926,0.90482707,-0.90482707,0.42577926,0,0)"
+ inkscape:transform-center-x="-43.431702" />
+ <rect
+ inkscape:transform-center-x="-42.062724"
+ transform="matrix(0.48175364,0.8763067,-0.8763067,0.48175364,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3389"
+ width="0.5"
+ height="4"
+ x="-0.2500025"
+ y="-50"
+ inkscape:transform-center-y="-23.124178" />
+ <rect
+ inkscape:transform-center-y="-25.719688"
+ y="-50"
+ x="-0.25000274"
+ height="4"
+ width="0.5"
+ id="rect3391"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.53582676,0.84432795,-0.84432795,0.53582676,0,0)"
+ inkscape:transform-center-x="-40.527744" />
+ <rect
+ inkscape:transform-center-x="-38.832819"
+ transform="matrix(0.58778522,0.80901702,-0.80901702,0.58778522,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3393"
+ width="0.5"
+ height="4"
+ x="-0.25000298"
+ y="-50"
+ inkscape:transform-center-y="-28.213694" />
+ <rect
+ inkscape:transform-center-y="-30.596354"
+ y="-50"
+ x="-0.25000322"
+ height="4"
+ width="0.5"
+ id="rect3395"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.63742396,0.77051327,-0.77051327,0.63742396,0,0)"
+ inkscape:transform-center-x="-36.984639" />
+ <rect
+ inkscape:transform-center-x="-34.990497"
+ transform="matrix(0.68454708,0.72896865,-0.72896865,0.68454708,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3397"
+ width="0.5"
+ height="4"
+ x="-0.25000346"
+ y="-50"
+ inkscape:transform-center-y="-32.858264" />
+ <rect
+ inkscape:transform-center-y="-34.990497"
+ y="-50"
+ x="-0.25000373"
+ height="4"
+ width="0.5"
+ id="rect3399"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.7289686,0.68454713,-0.68454713,0.7289686,0,0)"
+ inkscape:transform-center-x="-32.858264" />
+ <rect
+ inkscape:transform-center-x="-30.596354"
+ transform="matrix(0.77051322,0.63742402,-0.63742402,0.77051322,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3401"
+ width="0.5"
+ height="4"
+ x="-0.25000399"
+ y="-50"
+ inkscape:transform-center-y="-36.984639" />
+ <rect
+ inkscape:transform-center-y="-40.527744"
+ y="-50"
+ x="-0.25000447"
+ height="4"
+ width="0.5"
+ id="rect3403"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.84432791,0.53582683,-0.53582683,0.84432791,0,0)"
+ inkscape:transform-center-x="-25.719688" />
+ <rect
+ inkscape:transform-center-x="-23.124178"
+ transform="matrix(0.87630666,0.48175371,-0.48175371,0.87630666,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3405"
+ width="0.5"
+ height="4"
+ x="-0.25000471"
+ y="-50"
+ inkscape:transform-center-y="-42.062724" />
+ <rect
+ inkscape:transform-center-y="-43.431702"
+ y="-50"
+ x="-0.25000495"
+ height="4"
+ width="0.5"
+ id="rect3407"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.90482703,0.42577933,-0.42577933,0.90482703,0,0)"
+ inkscape:transform-center-x="-20.437407" />
+ <rect
+ inkscape:transform-center-x="-17.669979"
+ transform="matrix(0.92977647,0.36812459,-0.36812459,0.92977647,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3409"
+ width="0.5"
+ height="4"
+ x="-0.25000519"
+ y="-50"
+ inkscape:transform-center-y="-44.629275" />
+ <rect
+ inkscape:transform-center-y="-45.650716"
+ y="-50"
+ x="-0.25000542"
+ height="4"
+ width="0.5"
+ id="rect3411"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.9510565,0.30901703,-0.30901703,0.9510565,0,0)"
+ inkscape:transform-center-x="-14.832816" />
+ <rect
+ inkscape:transform-center-x="-11.937114"
+ transform="matrix(0.96858315,0.24868992,-0.24868992,0.96858315,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3413"
+ width="0.5"
+ height="4"
+ x="-0.25000563"
+ y="-50"
+ inkscape:transform-center-y="-46.491995" />
+ <rect
+ inkscape:transform-center-y="-47.149791"
+ y="-50"
+ x="-0.25000581"
+ height="4"
+ width="0.5"
+ id="rect3415"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.98228724,0.18738135,-0.18738135,0.98228724,0,0)"
+ inkscape:transform-center-x="-8.9943024" />
+ <rect
+ inkscape:transform-center-x="-6.0159943"
+ transform="matrix(0.9921147,0.12533327,-0.12533327,0.9921147,0,0)"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3417"
+ width="0.5"
+ height="4"
+ x="-0.25000599"
+ y="-50"
+ inkscape:transform-center-y="-47.621509" />
+ <rect
+ inkscape:transform-center-y="-47.905286"
+ y="-50"
+ x="-0.25000617"
+ height="4"
+ width="0.5"
+ id="rect3419"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(0.99802673,0.06279056,-0.06279056,0.99802673,0,0)"
+ inkscape:transform-center-x="-3.013944" />
+ <rect
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3421"
+ width="0.5"
+ height="4"
+ x="-0.25000635"
+ y="-50"
+ inkscape:transform-center-y="-48.000003" />
+ <rect
+ inkscape:transform-center-y="11.937114"
+ y="-50"
+ x="-0.25000137"
+ height="4"
+ width="0.5"
+ id="rect3423"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#e6e6e6;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ transform="matrix(-0.24868987,-0.96858317,0.96858317,-0.24868987,0,0)"
+ inkscape:transform-center-x="46.491992" />
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="0.026167108"
+ y="-36.1035"
+ id="text3733"
+ sodipodi:linespacing="125%"
+ inkscape:transform-center-y="-38.934307"
+ inkscape:transform-center-x="0.42929375"><tspan
+ sodipodi:role="line"
+ id="tspan3735"
+ x="0.026167108"
+ y="-36.1035">4</tspan></text>
+ <text
+ inkscape:transform-center-y="-38.934307"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="22.653584"
+ y="-28.502102"
+ id="text3856"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3858"
+ x="22.653584"
+ y="-28.502102">5</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3860"
+ y="-8.8798885"
+ x="37.149273"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ inkscape:transform-center-y="-38.934307"><tspan
+ y="-8.8798885"
+ x="37.149273"
+ id="tspan3862"
+ sodipodi:role="line">6</tspan></text>
+ <text
+ inkscape:transform-center-y="-38.934307"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="37.149273"
+ y="15.515295"
+ id="text3864"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3866"
+ x="37.149273"
+ y="15.515295">7</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3868"
+ y="34.430401"
+ x="23.007137"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ inkscape:transform-center-y="-38.934307"><tspan
+ y="34.430401"
+ x="23.007137"
+ id="tspan3870"
+ sodipodi:role="line">8</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3876"
+ y="34.253624"
+ x="-23.838688"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ inkscape:transform-center-y="-38.934307"><tspan
+ y="34.253624"
+ x="-23.838688"
+ id="tspan3878"
+ sodipodi:role="line">0</tspan></text>
+ <text
+ inkscape:transform-center-y="-38.934307"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-36.920162"
+ y="15.515294"
+ id="text3880"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3882"
+ x="-36.920162"
+ y="15.515294">1</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3884"
+ y="-9.586997"
+ x="-37.273716"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"
+ inkscape:transform-center-y="-38.934307"><tspan
+ y="-9.586997"
+ x="-37.273716"
+ id="tspan3886"
+ sodipodi:role="line">2</tspan></text>
+ <text
+ inkscape:transform-center-y="-38.934307"
+ xml:space="preserve"
+ style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f9f9f9;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-22.247698"
+ y="-29.385986"
+ id="text3888"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3890"
+ x="-22.247698"
+ y="-29.385986">3</tspan></text>
+ <path
+ style="fill:#f2f2f2;stroke:#1a1a1a;stroke-width:0.10141722;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M -0.05195261,0.40925929 0.53642344,0.83673951 -22.150899,33.300471 l -6.995676,7.154101 4.642171,-8.864022 23.8640754,-31.60877087 z"
+ id="path4682"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="19.880424"
+ inkscape:transform-center-x="14.305076" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ id="path3900"
+ sodipodi:cx="55"
+ sodipodi:cy="55.000004"
+ sodipodi:rx="3.3363085"
+ sodipodi:ry="3.3363085"
+ d="m 58.336308,55.000004 a 3.3363085,3.3363085 0 1 1 -6.672616,0 3.3363085,3.3363085 0 1 1 6.672616,0 z"
+ transform="matrix(1.0490637,0,0,1.0490637,-57.698499,-57.6985)" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/instruments/horizon.svg b/mavigator-server/src/main/resources/assets/images/instruments/horizon.svg
new file mode 100644
index 0000000..363b962
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/instruments/horizon.svg
@@ -0,0 +1,569 @@
+<?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="110"
+ height="110"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="attitude.svg"
+ viewBox="-55 -55 110 110">
+ <defs
+ id="defs4">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3055">
+ <path
+ sodipodi:type="arc"
+ style="fill:#00ff00;fill-opacity:1;stroke:none"
+ id="path3057"
+ sodipodi:cx="55"
+ sodipodi:cy="55"
+ sodipodi:rx="50"
+ sodipodi:ry="50"
+ d="M 105,55 A 50,50 0 1 1 5,55 50,50 0 1 1 105,55 z"
+ transform="translate(-55,-55)" />
+ </clipPath>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8284271"
+ inkscape:cx="-19.222023"
+ inkscape:cy="22.322089"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ showborder="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-grids="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2985"
+ units="px"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ spacingy="1px"
+ spacingx="1px"
+ originx="50px"
+ originy="50px"
+ dotted="false" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <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">
+ <g
+ id="roll"
+ clip-path="url(#clipPath3055)">
+ <g
+ id="pitch">
+ <rect
+ style="fill:#2eccfa;fill-opacity:1;stroke:none"
+ id="rect3861"
+ width="100"
+ height="150"
+ x="-50"
+ y="-150" />
+ <rect
+ style="fill:#61380b;fill-opacity:1;stroke:none"
+ id="rect3863"
+ width="100"
+ height="150"
+ x="-50"
+ y="0" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3866"
+ width="0.5"
+ height="100"
+ x="-0.25"
+ y="-50"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="1174.9999" />
+ <rect
+ inkscape:transform-center-x="352.49997"
+ transform="matrix(0,-1,1,0,0,0)"
+ y="-15"
+ x="9.75"
+ height="30"
+ width="0.5"
+ id="rect3872"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3874"
+ width="0.5"
+ height="30"
+ x="19.75"
+ y="-15"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="352.49997" />
+ <rect
+ inkscape:transform-center-x="352.49997"
+ transform="matrix(0,-1,1,0,0,0)"
+ y="-15"
+ x="29.75"
+ height="30"
+ width="0.5"
+ id="rect3876"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3878"
+ width="0.5"
+ height="30"
+ x="-20.25"
+ y="-15"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="352.49997" />
+ <rect
+ inkscape:transform-center-x="352.49997"
+ transform="matrix(0,-1,1,0,0,0)"
+ y="-15"
+ x="-30.25"
+ height="30"
+ width="0.5"
+ id="rect3880"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ inkscape:transform-center-x="352.49997"
+ transform="matrix(0,-1,1,0,0,0)"
+ y="-15"
+ x="-10.25"
+ height="30"
+ width="0.5"
+ id="rect3882"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3884"
+ width="0.5"
+ height="20"
+ x="4.75"
+ y="-10"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="234.99998" />
+ <rect
+ inkscape:transform-center-x="234.99998"
+ transform="matrix(0,-1,1,0,0,0)"
+ y="-10"
+ x="14.75"
+ height="20"
+ width="0.5"
+ id="rect3886"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3888"
+ width="0.5"
+ height="20"
+ x="24.75"
+ y="-10"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="234.99998" />
+ <rect
+ inkscape:transform-center-x="234.99998"
+ transform="matrix(0,-1,1,0,0,0)"
+ y="-10"
+ x="-5.25"
+ height="20"
+ width="0.5"
+ id="rect3890"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="rect3892"
+ width="0.5"
+ height="20"
+ x="-15.25"
+ y="-10"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:transform-center-x="234.99998" />
+ <rect
+ inkscape:transform-center-x="234.99998"
+ transform="matrix(0,-1,1,0,0,0)"
+ y="-10"
+ x="-25.25"
+ height="20"
+ width="0.5"
+ id="rect3894"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3896"
+ y="11.698608"
+ x="15.550568"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="11.698608"
+ x="15.550568"
+ id="tspan3898"
+ sodipodi:role="line">10</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="15.550568"
+ y="-18.301392"
+ id="text3920"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3922"
+ x="15.550568"
+ y="-18.301392">20</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3924"
+ y="-28.301392"
+ x="15.550568"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="-28.301392"
+ x="15.550568"
+ id="tspan3926"
+ sodipodi:role="line">30</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="15.550568"
+ y="21.698608"
+ id="text3928"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3930"
+ x="15.550568"
+ y="21.698608">20</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3932"
+ y="31.698608"
+ x="15.550568"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="31.698608"
+ x="15.550568"
+ id="tspan3934"
+ sodipodi:role="line">30</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3936"
+ y="-8.3013916"
+ x="15.550568"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="-8.3013916"
+ x="15.550568"
+ id="tspan3938"
+ sodipodi:role="line">10</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-21.544434"
+ y="-8.3013916"
+ id="text3940"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3942"
+ x="-21.544434"
+ y="-8.3013916">10</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3956"
+ y="11.698608"
+ x="-21.544434"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="11.698608"
+ x="-21.544434"
+ id="tspan3958"
+ sodipodi:role="line">10</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-21.544434"
+ y="21.698608"
+ id="text3960"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3962"
+ x="-21.544434"
+ y="21.698608">20</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3964"
+ y="31.698608"
+ x="-21.544434"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="31.698608"
+ x="-21.544434"
+ id="tspan3966"
+ sodipodi:role="line">30</tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3968"
+ y="-18.301392"
+ x="-21.544434"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ xml:space="preserve"><tspan
+ y="-18.301392"
+ x="-21.544434"
+ id="tspan3970"
+ sodipodi:role="line">20</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
+ x="-21.544434"
+ y="-28.301392"
+ id="text3972"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3974"
+ x="-21.544434"
+ y="-28.301392">30</tspan></text>
+ <g
+ id="runway">
+ <path
+ inkscape:transform-center-x="-25"
+ inkscape:transform-center-y="43.30127"
+ inkscape:connector-curvature="0"
+ id="path3046"
+ d="M 50,86.60254 0,0"
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.16695975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.16695975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M 86.60254,50 0,0"
+ id="path3977"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="25"
+ inkscape:transform-center-x="-43.30127" />
+ <path
+ inkscape:transform-center-x="25"
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.16695975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M -50,86.60254 1.2675457e-8,-4.7305491e-8"
+ id="path3979"
+ inkscape:connector-curvature="0"
+ inkscape:transform-center-y="43.30127" />
+ <path
+ inkscape:transform-center-y="25"
+ inkscape:connector-curvature="0"
+ id="path3981"
+ d="M -86.60254,50 2.3652725e-8,-4.0967757e-8"
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.16695975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:transform-center-x="43.30127" />
+ </g>
+ </g>
+ <path
+ sodipodi:type="star"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ id="path3769"
+ sodipodi:sides="3"
+ sodipodi:cx="-59"
+ sodipodi:cy="60"
+ sodipodi:r1="3.6055512"
+ sodipodi:r2="1.8027756"
+ sodipodi:arg1="1.0471976"
+ sodipodi:arg2="2.0943952"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="M -57.197225,63.122499 -59.901388,61.561249 -62.605551,60 l 2.704163,-1.56125 2.704164,-1.561249 0,3.122499 z"
+ transform="matrix(-1.6169678e-4,-0.93374506,0.83266641,-1.8132539e-4,-49.96923,-103.39675)"
+ inkscape:transform-center-y="0.50505596" />
+ <rect
+ transform="matrix(0.93969262,-0.34202014,0.34202014,0.93969262,0,0)"
+ y="-47.848526"
+ x="-0.28910306"
+ height="3"
+ width="0.5"
+ id="rect3832"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ inkscape:transform-center-y="-43.610196"
+ inkscape:transform-center-x="16.138873" />
+ <rect
+ transform="matrix(0.98480775,-0.17364818,0.17364818,0.98480775,0,0)"
+ y="-47.887447"
+ x="-0.26598009"
+ height="3"
+ width="0.5"
+ id="rect3830"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ inkscape:transform-center-y="-45.750151"
+ inkscape:transform-center-x="8.3208343" />
+ <rect
+ inkscape:transform-center-x="-46.999996"
+ transform="matrix(0,1,-1,0,0,0)"
+ y="-48.999996"
+ x="-0.17979249"
+ height="4"
+ width="0.5"
+ id="rect3816"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ transform="matrix(0.98480775,0.17364818,-0.17364818,0.98480775,0,0)"
+ y="-47.974239"
+ x="-0.24160324"
+ height="3"
+ width="0.5"
+ id="rect3828"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ inkscape:transform-center-y="-45.836941"
+ inkscape:transform-center-x="-7.8284371" />
+ <rect
+ transform="matrix(0.93969262,0.34202014,-0.34202014,0.93969262,0,0)"
+ y="-48.019543"
+ x="-0.24104837"
+ height="3"
+ width="0.5"
+ id="rect3826"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ inkscape:transform-center-y="-43.781215"
+ inkscape:transform-center-x="-15.669033" />
+ <rect
+ inkscape:transform-center-x="-40.703191"
+ transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)"
+ y="-48.964905"
+ x="-0.18920913"
+ height="4"
+ width="0.5"
+ id="rect3814"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ inkscape:transform-center-y="-23.500008" />
+ <rect
+ inkscape:transform-center-x="-23.500002"
+ transform="matrix(0.8660254,0.5,-0.5,0.8660254,0,0)"
+ y="-48.939209"
+ x="-0.21489985"
+ height="4"
+ width="0.5"
+ id="rect3812"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ inkscape:transform-center-y="-40.703202" />
+ <rect
+ inkscape:transform-center-x="23.500002"
+ transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)"
+ y="-48.939209"
+ x="-0.28510073"
+ height="4"
+ width="0.5"
+ id="rect3810"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ inkscape:transform-center-y="-40.703202" />
+ <rect
+ inkscape:transform-center-x="46.999996"
+ transform="matrix(0,-1,1,0,0,0)"
+ y="-48.999996"
+ x="-0.32020748"
+ height="4"
+ width="0.5"
+ id="rect3808"
+ style="fill:#ffffff;fill-opacity:1;stroke:none" />
+ <rect
+ inkscape:transform-center-x="40.703191"
+ transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)"
+ y="-48.964901"
+ x="-0.3107909"
+ height="4"
+ width="0.5"
+ id="rect3804"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ inkscape:transform-center-y="-23.500008" />
+ <path
+ transform="matrix(1.1232449,0,0,1.1232449,0,-112.25429)"
+ d="m 40,100 a 40,40 0 1 1 -80,0 40,40 0 1 1 80,0 z"
+ sodipodi:ry="40"
+ sodipodi:rx="40"
+ sodipodi:cy="100"
+ sodipodi:cx="0"
+ id="path3985"
+ style="fill:none;stroke:#ffffff;stroke-width:0.1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ id="fixed">
+ <path
+ id="path3976"
+ d="m 0,-55 c -30.37566,0 -55,24.62432 -55,55.00002 0,30.3756 24.62434,55 55,55 30.37566,0 55,-24.6244 55,-55 C 55,-30.37568 30.37566,-55 0,-55 z m 0,5.00002 c 27.61424,0 50,22.3857 50,50 0,27.6142 -22.38576,50 -50,50 -27.61424,0 -50,-22.3858 -50,-50 0,-27.6143 22.38576,-50 50,-50 z"
+ style="fill:#1a1a1a;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:transform-center-y="-0.52004486"
+ transform="matrix(-1.6169678e-4,0.96137262,0.83266641,1.8669043e-4,-49.96923,16.02602)"
+ d="M -57.197225,63.122499 -59.901388,61.561249 -62.605551,60 l 2.704163,-1.56125 2.704164,-1.561249 0,3.122499 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="2.0943952"
+ sodipodi:arg1="1.0471976"
+ sodipodi:r2="1.8027756"
+ sodipodi:r1="3.6055512"
+ sodipodi:cy="60"
+ sodipodi:cx="-59"
+ sodipodi:sides="3"
+ id="path3778"
+ style="fill:none;stroke:#ff6600;stroke-opacity:1"
+ sodipodi:type="star" />
+ <rect
+ y="-0.5"
+ x="-20"
+ height="1"
+ width="15"
+ id="rect3990"
+ style="fill:#ff6600;fill-opacity:1;stroke:none" />
+ <rect
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ id="rect3992"
+ width="15"
+ height="1"
+ x="5"
+ y="-0.5" />
+ <path
+ id="path3996"
+ d="m 0,-4.99998 c -2.76142,0 -5,2.2386 -5,5 0,2.7614 2.23858,5 5,5 2.76142,0 5,-2.2386 5,-5 0,-2.7614 -2.23858,-5 -5,-5 z m 0,1 c 2.20914,0 4,1.7908 4,4 0,2.2091 -1.79086,4 -4,4 -2.20914,0 -4,-1.7909 -4,-4 0,-2.2092 1.79086,-4 4,-4 z"
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ inkscape:connector-curvature="0" />
+ <path
+ transform="matrix(0.5,0,0,0.5,0,-49.99998)"
+ d="m 1,100 c 0,0.55228 -0.44771525,1 -1,1 -0.55228475,0 -1,-0.44772 -1,-1 0,-0.552285 0.44771525,-1 1,-1 0.55228475,0 1,0.447715 1,1 z"
+ sodipodi:ry="1"
+ sodipodi:rx="1"
+ sodipodi:cy="100"
+ sodipodi:cx="0"
+ id="path4001"
+ style="fill:#ff6600;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/leds/green-off.svg b/mavigator-server/src/main/resources/assets/images/leds/green-off.svg
new file mode 100644
index 0000000..1c227fd
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/leds/green-off.svg
@@ -0,0 +1,283 @@
+<?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="64px"
+ height="64px"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="red-off.svg">
+ <defs
+ id="defs2987">
+ <linearGradient
+ id="linearGradient3803"
+ inkscape:collect="always">
+ <stop
+ id="stop3805"
+ offset="0"
+ style="stop-color:#cfcfcf;stop-opacity:0.51141554" />
+ <stop
+ id="stop3807"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.04109589" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3891">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.26940638"
+ offset="0"
+ id="stop3893" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.15525115"
+ offset="1"
+ id="stop3895" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3883">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.02283105"
+ offset="0"
+ id="stop3885" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="1"
+ id="stop3887" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3849">
+ <stop
+ id="stop3851"
+ offset="0"
+ style="stop-color:#00ac00;stop-opacity:1" />
+ <stop
+ id="stop3853"
+ offset="1"
+ style="stop-color:#8cff00;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3807">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop3809" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.25"
+ offset="1"
+ id="stop3811" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3787">
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1;"
+ offset="0"
+ id="stop3789" />
+ <stop
+ style="stop-color:#cccccc;stop-opacity:1"
+ offset="1"
+ id="stop3791" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3777">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3779" />
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1"
+ offset="1"
+ id="stop3781" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3777"
+ id="linearGradient3783"
+ x1="16.608555"
+ y1="18.651081"
+ x2="75.365089"
+ y2="69.463295"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3793"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0026007,0.01478583,-0.01619592,1.0982174,0.55265642,-4.8228038)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3891"
+ id="linearGradient3901"
+ x1="10.083722"
+ y1="34.833542"
+ x2="44.591557"
+ y2="14.1497"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3807"
+ id="radialGradient3794"
+ gradientUnits="userSpaceOnUse"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3803"
+ id="linearGradient3801"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)"
+ x1="-11.46802"
+ y1="62.658627"
+ x2="53.882328"
+ y2="18.582912" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.34375"
+ inkscape:cx="4.4967747"
+ inkscape:cy="30.440278"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1024"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="background"
+ inkscape:groupmode="layer"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ sodipodi:type="arc"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2993"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)" />
+ <path
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3771"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3785"
+ style="fill:url(#radialGradient3793);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3783)"
+ id="path3775"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)" />
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3795"
+ style="fill:#46ff00;fill-opacity:0;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="color"
+ style="display:inline">
+ <path
+ sodipodi:type="arc"
+ style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ id="path3773"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="reflection"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3805"
+ style="fill:url(#radialGradient3794);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ sodipodi:type="arc" />
+ <path
+ style="fill:url(#linearGradient3801);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 13.661019,17.992002 c -2.716552,0 -5.3380492,0.375822 -7.8315903,1.074244 -1.8971123,3.856752 -2.9801626,8.198554 -2.9801626,12.786977 0,16.017772 12.9868349,29.004607 29.0046069,29.004607 2.703688,0 5.313926,-0.382194 7.796937,-1.074245 1.910078,-3.867248 3.014816,-8.21652 3.014816,-12.82163 0,-16.017772 -12.986835,-28.969953 -29.004607,-28.969953 z"
+ id="path3815"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3901);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 31.853873,2.8486171 c -4.086863,0 -7.978121,0.8657411 -11.504814,2.3910608 2.453382,-0.6830778 5.034928,-1.0742447 7.692978,-1.0742447 16.52263,0 29.905586,14.0815598 29.905586,31.4303198 0,5.007819 -1.133611,9.729358 -3.118775,13.930528 3.772658,-4.895422 6.029632,-11.014661 6.029632,-17.673058 0,-16.017771 -12.986835,-29.0046059 -29.004607,-29.0046059 z"
+ id="path3857"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/leds/green-on.svg b/mavigator-server/src/main/resources/assets/images/leds/green-on.svg
new file mode 100644
index 0000000..c358e3a
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/leds/green-on.svg
@@ -0,0 +1,283 @@
+<?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="64px"
+ height="64px"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="green-other.svg">
+ <defs
+ id="defs2987">
+ <linearGradient
+ id="linearGradient3803"
+ inkscape:collect="always">
+ <stop
+ id="stop3805"
+ offset="0"
+ style="stop-color:#cfcfcf;stop-opacity:0.51141554" />
+ <stop
+ id="stop3807"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.04109589" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3891">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.26940638"
+ offset="0"
+ id="stop3893" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.15525115"
+ offset="1"
+ id="stop3895" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3883">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.02283105"
+ offset="0"
+ id="stop3885" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="1"
+ id="stop3887" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3849">
+ <stop
+ id="stop3851"
+ offset="0"
+ style="stop-color:#00ac00;stop-opacity:1" />
+ <stop
+ id="stop3853"
+ offset="1"
+ style="stop-color:#8cff00;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3807">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop3809" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.5"
+ offset="1"
+ id="stop3811" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3787">
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1;"
+ offset="0"
+ id="stop3789" />
+ <stop
+ style="stop-color:#cccccc;stop-opacity:1"
+ offset="1"
+ id="stop3791" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3777">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3779" />
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1"
+ offset="1"
+ id="stop3781" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3777"
+ id="linearGradient3783"
+ x1="16.608555"
+ y1="18.651081"
+ x2="75.365089"
+ y2="69.463295"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3793"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0026007,0.01478583,-0.01619592,1.0982174,0.55265642,-4.8228038)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3891"
+ id="linearGradient3901"
+ x1="10.083722"
+ y1="34.833542"
+ x2="44.591557"
+ y2="14.1497"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3807"
+ id="radialGradient3794"
+ gradientUnits="userSpaceOnUse"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientTransform="matrix(1.8217016,0,0,1.8217016,-39.564835,-34.392156)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3803"
+ id="linearGradient3801"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)"
+ x1="-11.46802"
+ y1="62.658627"
+ x2="53.882328"
+ y2="18.582912" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.34375"
+ inkscape:cx="25.192171"
+ inkscape:cy="36.435594"
+ inkscape:current-layer="layer3"
+ showgrid="true"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1024"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="background"
+ inkscape:groupmode="layer"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ sodipodi:type="arc"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2993"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)" />
+ <path
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3771"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3785"
+ style="fill:url(#radialGradient3793);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3783)"
+ id="path3775"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)" />
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3795"
+ style="fill:#46ff00;fill-opacity:0;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="color"
+ style="display:inline">
+ <path
+ sodipodi:type="arc"
+ style="fill:#07ff00;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ id="path3773"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="reflection"
+ style="display:inline">
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3805"
+ style="fill:url(#radialGradient3794);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ sodipodi:type="arc" />
+ <path
+ style="fill:url(#linearGradient3801);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 13.661019,17.992002 c -2.716552,0 -5.3380492,0.375822 -7.8315903,1.074244 -1.8971123,3.856752 -2.9801626,8.198554 -2.9801626,12.786977 0,16.017772 12.9868349,29.004607 29.0046069,29.004607 2.703688,0 5.313926,-0.382194 7.796937,-1.074245 1.910078,-3.867248 3.014816,-8.21652 3.014816,-12.82163 0,-16.017772 -12.986835,-28.969953 -29.004607,-28.969953 z"
+ id="path3815"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3901);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 31.853873,2.8486171 c -4.086863,0 -7.978121,0.8657411 -11.504814,2.3910608 2.453382,-0.6830778 5.034928,-1.0742447 7.692978,-1.0742447 16.52263,0 29.905586,14.0815598 29.905586,31.4303198 0,5.007819 -1.133611,9.729358 -3.118775,13.930528 3.772658,-4.895422 6.029632,-11.014661 6.029632,-17.673058 0,-16.017771 -12.986835,-29.0046059 -29.004607,-29.0046059 z"
+ id="path3857"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/leds/led.svg b/mavigator-server/src/main/resources/assets/images/leds/led.svg
new file mode 100644
index 0000000..74cc4ff
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/leds/led.svg
@@ -0,0 +1,293 @@
+<?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="64"
+ height="64"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="led.svg"
+ viewBox="0 0 64 64">
+ <defs
+ id="defs2987">
+ <linearGradient
+ id="linearGradient3803"
+ inkscape:collect="always">
+ <stop
+ id="stop3805"
+ offset="0"
+ style="stop-color:#cfcfcf;stop-opacity:0.51141554" />
+ <stop
+ id="stop3807"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.04109589" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3891">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.26940638"
+ offset="0"
+ id="stop3893" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.15525115"
+ offset="1"
+ id="stop3895" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3883">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.02283105"
+ offset="0"
+ id="stop3885" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="1"
+ id="stop3887" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3849">
+ <stop
+ id="stop3851"
+ offset="0"
+ style="stop-color:#00ac00;stop-opacity:1" />
+ <stop
+ id="stop3853"
+ offset="1"
+ style="stop-color:#8cff00;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3807">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop3809" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.5"
+ offset="1"
+ id="stop3811" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3787">
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1;"
+ offset="0"
+ id="stop3789" />
+ <stop
+ style="stop-color:#cccccc;stop-opacity:1"
+ offset="1"
+ id="stop3791" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3777">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3779" />
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1"
+ offset="1"
+ id="stop3781" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3777"
+ id="linearGradient3783"
+ x1="16.608555"
+ y1="18.651081"
+ x2="75.365089"
+ y2="69.463295"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3793"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0026007,0.01478583,-0.01619592,1.0982174,0.55265642,-4.8228038)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3891"
+ id="linearGradient3901"
+ x1="10.083722"
+ y1="34.833542"
+ x2="44.591557"
+ y2="14.1497"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3807"
+ id="radialGradient3794"
+ gradientUnits="userSpaceOnUse"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientTransform="matrix(1.7287032,0,0,1.7287032,-35.086972,-30.499726)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3803"
+ id="linearGradient3801"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)"
+ x1="-11.46802"
+ y1="62.658627"
+ x2="53.882328"
+ y2="18.582912" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.34375"
+ inkscape:cx="25.462406"
+ inkscape:cy="33.437936"
+ inkscape:current-layer="svg2985"
+ showgrid="true"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="background"
+ inkscape:groupmode="layer"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ sodipodi:type="arc"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2993"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)" />
+ <path
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3771"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3785"
+ style="fill:url(#radialGradient3793);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3783)"
+ id="path3775"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)" />
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3795"
+ style="fill:#46ff00;fill-opacity:0;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="color"
+ style="display:inline">
+ <path
+ sodipodi:type="arc"
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ id="light"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)">
+ <animate
+ attributeType="XML"
+ attributeName="fill"
+ dur="2s"
+ repeatCount="indefinite"
+ id="animate40"
+ values="#782121, #ff0000, #782121" />
+ </path>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="reflection"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3805"
+ style="fill:url(#radialGradient3794);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ sodipodi:type="arc" />
+ <path
+ style="fill:url(#linearGradient3801);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 13.661019,17.992002 c -2.716552,0 -5.3380492,0.375822 -7.8315903,1.074244 -1.8971123,3.856752 -2.9801626,8.198554 -2.9801626,12.786977 0,16.017772 12.9868349,29.004607 29.0046069,29.004607 2.703688,0 5.313926,-0.382194 7.796937,-1.074245 1.910078,-3.867248 3.014816,-8.21652 3.014816,-12.82163 0,-16.017772 -12.986835,-28.969953 -29.004607,-28.969953 z"
+ id="path3815"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3901);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 31.853873,2.8486171 c -4.086863,0 -7.978121,0.8657411 -11.504814,2.3910608 2.453382,-0.6830778 5.034928,-1.0742447 7.692978,-1.0742447 16.52263,0 29.905586,14.0815598 29.905586,31.4303198 0,5.007819 -1.133611,9.729358 -3.118775,13.930528 3.772658,-4.895422 6.029632,-11.014661 6.029632,-17.673058 0,-16.017771 -12.986835,-29.0046059 -29.004607,-29.0046059 z"
+ id="path3857"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/leds/none.svg b/mavigator-server/src/main/resources/assets/images/leds/none.svg
new file mode 100644
index 0000000..85bc475
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/leds/none.svg
@@ -0,0 +1,284 @@
+<?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="64px"
+ height="64px"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="green-other-off.svg">
+ <defs
+ id="defs2987">
+ <linearGradient
+ id="linearGradient3803"
+ inkscape:collect="always">
+ <stop
+ id="stop3805"
+ offset="0"
+ style="stop-color:#cfcfcf;stop-opacity:0.51141554" />
+ <stop
+ id="stop3807"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.04109589" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3891">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.26940638"
+ offset="0"
+ id="stop3893" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.15525115"
+ offset="1"
+ id="stop3895" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3883">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.02283105"
+ offset="0"
+ id="stop3885" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="1"
+ id="stop3887" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3849">
+ <stop
+ id="stop3851"
+ offset="0"
+ style="stop-color:#00ac00;stop-opacity:1" />
+ <stop
+ id="stop3853"
+ offset="1"
+ style="stop-color:#8cff00;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3807">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop3809" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.5"
+ offset="1"
+ id="stop3811" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3787">
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1;"
+ offset="0"
+ id="stop3789" />
+ <stop
+ style="stop-color:#cccccc;stop-opacity:1"
+ offset="1"
+ id="stop3791" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3777">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3779" />
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1"
+ offset="1"
+ id="stop3781" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3777"
+ id="linearGradient3783"
+ x1="16.608555"
+ y1="18.651081"
+ x2="75.365089"
+ y2="69.463295"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3793"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0026007,0.01478583,-0.01619592,1.0982174,0.55265642,-4.8228038)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3891"
+ id="linearGradient3901"
+ x1="10.083722"
+ y1="34.833542"
+ x2="44.591557"
+ y2="14.1497"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3807"
+ id="radialGradient3794"
+ gradientUnits="userSpaceOnUse"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientTransform="matrix(1.7287032,0,0,1.7287032,-35.086972,-30.499726)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3803"
+ id="linearGradient3801"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)"
+ x1="-11.46802"
+ y1="62.658627"
+ x2="53.882328"
+ y2="18.582912" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.34375"
+ inkscape:cx="24.862874"
+ inkscape:cy="36.435594"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1024"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="background"
+ inkscape:groupmode="layer"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ sodipodi:type="arc"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2993"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)" />
+ <path
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3771"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3785"
+ style="fill:url(#radialGradient3793);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3783)"
+ id="path3775"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)" />
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3795"
+ style="fill:#46ff00;fill-opacity:0;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="color"
+ style="display:inline">
+ <path
+ sodipodi:type="arc"
+ style="fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ id="path3773"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="reflection"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3805"
+ style="fill:url(#radialGradient3794);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ sodipodi:type="arc" />
+ <path
+ style="fill:url(#linearGradient3801);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 13.661019,17.992002 c -2.716552,0 -5.3380492,0.375822 -7.8315903,1.074244 -1.8971123,3.856752 -2.9801626,8.198554 -2.9801626,12.786977 0,16.017772 12.9868349,29.004607 29.0046069,29.004607 2.703688,0 5.313926,-0.382194 7.796937,-1.074245 1.910078,-3.867248 3.014816,-8.21652 3.014816,-12.82163 0,-16.017772 -12.986835,-28.969953 -29.004607,-28.969953 z"
+ id="path3815"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3901);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 31.853873,2.8486171 c -4.086863,0 -7.978121,0.8657411 -11.504814,2.3910608 2.453382,-0.6830778 5.034928,-1.0742447 7.692978,-1.0742447 16.52263,0 29.905586,14.0815598 29.905586,31.4303198 0,5.007819 -1.133611,9.729358 -3.118775,13.930528 3.772658,-4.895422 6.029632,-11.014661 6.029632,-17.673058 0,-16.017771 -12.986835,-29.0046059 -29.004607,-29.0046059 z"
+ id="path3857"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/leds/red-off.svg b/mavigator-server/src/main/resources/assets/images/leds/red-off.svg
new file mode 100644
index 0000000..ecd3ca5
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/leds/red-off.svg
@@ -0,0 +1,284 @@
+<?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="64px"
+ height="64px"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="red-other.svg">
+ <defs
+ id="defs2987">
+ <linearGradient
+ id="linearGradient3803"
+ inkscape:collect="always">
+ <stop
+ id="stop3805"
+ offset="0"
+ style="stop-color:#cfcfcf;stop-opacity:0.51141554" />
+ <stop
+ id="stop3807"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.04109589" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3891">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.26940638"
+ offset="0"
+ id="stop3893" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.15525115"
+ offset="1"
+ id="stop3895" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3883">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.02283105"
+ offset="0"
+ id="stop3885" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="1"
+ id="stop3887" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3849">
+ <stop
+ id="stop3851"
+ offset="0"
+ style="stop-color:#00ac00;stop-opacity:1" />
+ <stop
+ id="stop3853"
+ offset="1"
+ style="stop-color:#8cff00;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3807">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop3809" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.5"
+ offset="1"
+ id="stop3811" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3787">
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1;"
+ offset="0"
+ id="stop3789" />
+ <stop
+ style="stop-color:#cccccc;stop-opacity:1"
+ offset="1"
+ id="stop3791" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3777">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3779" />
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1"
+ offset="1"
+ id="stop3781" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3777"
+ id="linearGradient3783"
+ x1="16.608555"
+ y1="18.651081"
+ x2="75.365089"
+ y2="69.463295"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3793"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0026007,0.01478583,-0.01619592,1.0982174,0.55265642,-4.8228038)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3891"
+ id="linearGradient3901"
+ x1="10.083722"
+ y1="34.833542"
+ x2="44.591557"
+ y2="14.1497"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3807"
+ id="radialGradient3794"
+ gradientUnits="userSpaceOnUse"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientTransform="matrix(1.7287032,0,0,1.7287032,-35.086972,-30.499726)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3803"
+ id="linearGradient3801"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)"
+ x1="-11.46802"
+ y1="62.658627"
+ x2="53.882328"
+ y2="18.582912" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.34375"
+ inkscape:cx="24.862874"
+ inkscape:cy="36.435594"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1024"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="background"
+ inkscape:groupmode="layer"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ sodipodi:type="arc"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2993"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)" />
+ <path
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3771"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3785"
+ style="fill:url(#radialGradient3793);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3783)"
+ id="path3775"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)" />
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3795"
+ style="fill:#46ff00;fill-opacity:0;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="color"
+ style="display:inline">
+ <path
+ sodipodi:type="arc"
+ style="fill:#782121;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ id="path3773"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="reflection"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3805"
+ style="fill:url(#radialGradient3794);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ sodipodi:type="arc" />
+ <path
+ style="fill:url(#linearGradient3801);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 13.661019,17.992002 c -2.716552,0 -5.3380492,0.375822 -7.8315903,1.074244 -1.8971123,3.856752 -2.9801626,8.198554 -2.9801626,12.786977 0,16.017772 12.9868349,29.004607 29.0046069,29.004607 2.703688,0 5.313926,-0.382194 7.796937,-1.074245 1.910078,-3.867248 3.014816,-8.21652 3.014816,-12.82163 0,-16.017772 -12.986835,-28.969953 -29.004607,-28.969953 z"
+ id="path3815"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3901);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 31.853873,2.8486171 c -4.086863,0 -7.978121,0.8657411 -11.504814,2.3910608 2.453382,-0.6830778 5.034928,-1.0742447 7.692978,-1.0742447 16.52263,0 29.905586,14.0815598 29.905586,31.4303198 0,5.007819 -1.133611,9.729358 -3.118775,13.930528 3.772658,-4.895422 6.029632,-11.014661 6.029632,-17.673058 0,-16.017771 -12.986835,-29.0046059 -29.004607,-29.0046059 z"
+ id="path3857"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/leds/red-on.svg b/mavigator-server/src/main/resources/assets/images/leds/red-on.svg
new file mode 100644
index 0000000..e7fffea
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/leds/red-on.svg
@@ -0,0 +1,284 @@
+<?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="64px"
+ height="64px"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="red-other.svg">
+ <defs
+ id="defs2987">
+ <linearGradient
+ id="linearGradient3803"
+ inkscape:collect="always">
+ <stop
+ id="stop3805"
+ offset="0"
+ style="stop-color:#cfcfcf;stop-opacity:0.51141554" />
+ <stop
+ id="stop3807"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.04109589" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3891">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.26940638"
+ offset="0"
+ id="stop3893" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.15525115"
+ offset="1"
+ id="stop3895" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3883">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.02283105"
+ offset="0"
+ id="stop3885" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="1"
+ id="stop3887" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3849">
+ <stop
+ id="stop3851"
+ offset="0"
+ style="stop-color:#00ac00;stop-opacity:1" />
+ <stop
+ id="stop3853"
+ offset="1"
+ style="stop-color:#8cff00;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3807">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop3809" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.5"
+ offset="1"
+ id="stop3811" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3787">
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1;"
+ offset="0"
+ id="stop3789" />
+ <stop
+ style="stop-color:#cccccc;stop-opacity:1"
+ offset="1"
+ id="stop3791" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3777">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3779" />
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1"
+ offset="1"
+ id="stop3781" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3777"
+ id="linearGradient3783"
+ x1="16.608555"
+ y1="18.651081"
+ x2="75.365089"
+ y2="69.463295"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3793"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0026007,0.01478583,-0.01619592,1.0982174,0.55265642,-4.8228038)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3891"
+ id="linearGradient3901"
+ x1="10.083722"
+ y1="34.833542"
+ x2="44.591557"
+ y2="14.1497"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3807"
+ id="radialGradient3794"
+ gradientUnits="userSpaceOnUse"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientTransform="matrix(1.7287032,0,0,1.7287032,-35.086972,-30.499726)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3803"
+ id="linearGradient3801"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)"
+ x1="-11.46802"
+ y1="62.658627"
+ x2="53.882328"
+ y2="18.582912" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.34375"
+ inkscape:cx="24.862874"
+ inkscape:cy="36.435594"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1024"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="background"
+ inkscape:groupmode="layer"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ sodipodi:type="arc"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2993"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)" />
+ <path
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3771"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3785"
+ style="fill:url(#radialGradient3793);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3783)"
+ id="path3775"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)" />
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3795"
+ style="fill:#46ff00;fill-opacity:0;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="color"
+ style="display:inline">
+ <path
+ sodipodi:type="arc"
+ style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ id="path3773"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="reflection"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3805"
+ style="fill:url(#radialGradient3794);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ sodipodi:type="arc" />
+ <path
+ style="fill:url(#linearGradient3801);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 13.661019,17.992002 c -2.716552,0 -5.3380492,0.375822 -7.8315903,1.074244 -1.8971123,3.856752 -2.9801626,8.198554 -2.9801626,12.786977 0,16.017772 12.9868349,29.004607 29.0046069,29.004607 2.703688,0 5.313926,-0.382194 7.796937,-1.074245 1.910078,-3.867248 3.014816,-8.21652 3.014816,-12.82163 0,-16.017772 -12.986835,-28.969953 -29.004607,-28.969953 z"
+ id="path3815"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3901);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 31.853873,2.8486171 c -4.086863,0 -7.978121,0.8657411 -11.504814,2.3910608 2.453382,-0.6830778 5.034928,-1.0742447 7.692978,-1.0742447 16.52263,0 29.905586,14.0815598 29.905586,31.4303198 0,5.007819 -1.133611,9.729358 -3.118775,13.930528 3.772658,-4.895422 6.029632,-11.014661 6.029632,-17.673058 0,-16.017771 -12.986835,-29.0046059 -29.004607,-29.0046059 z"
+ id="path3857"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/leds/yellow-on.svg b/mavigator-server/src/main/resources/assets/images/leds/yellow-on.svg
new file mode 100644
index 0000000..3b271b0
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/leds/yellow-on.svg
@@ -0,0 +1,284 @@
+<?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="64px"
+ height="64px"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="red-other.svg">
+ <defs
+ id="defs2987">
+ <linearGradient
+ id="linearGradient3803"
+ inkscape:collect="always">
+ <stop
+ id="stop3805"
+ offset="0"
+ style="stop-color:#cfcfcf;stop-opacity:0.51141554" />
+ <stop
+ id="stop3807"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0.04109589" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3891">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.26940638"
+ offset="0"
+ id="stop3893" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0.15525115"
+ offset="1"
+ id="stop3895" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3883">
+ <stop
+ style="stop-color:#000000;stop-opacity:0.02283105"
+ offset="0"
+ id="stop3885" />
+ <stop
+ style="stop-color:#000000;stop-opacity:1"
+ offset="1"
+ id="stop3887" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3849">
+ <stop
+ id="stop3851"
+ offset="0"
+ style="stop-color:#00ac00;stop-opacity:1" />
+ <stop
+ id="stop3853"
+ offset="1"
+ style="stop-color:#8cff00;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3807">
+ <stop
+ style="stop-color:#000000;stop-opacity:0"
+ offset="0"
+ id="stop3809" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0.5"
+ offset="1"
+ id="stop3811" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3787">
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1;"
+ offset="0"
+ id="stop3789" />
+ <stop
+ style="stop-color:#cccccc;stop-opacity:1"
+ offset="1"
+ id="stop3791" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3777">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop3779" />
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:1"
+ offset="1"
+ id="stop3781" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3777"
+ id="linearGradient3783"
+ x1="16.608555"
+ y1="18.651081"
+ x2="75.365089"
+ y2="69.463295"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3787"
+ id="radialGradient3793"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0026007,0.01478583,-0.01619592,1.0982174,0.55265642,-4.8228038)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3891"
+ id="linearGradient3901"
+ x1="10.083722"
+ y1="34.833542"
+ x2="44.591557"
+ y2="14.1497"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3807"
+ id="radialGradient3794"
+ gradientUnits="userSpaceOnUse"
+ cx="48.149883"
+ cy="41.854801"
+ fx="48.149883"
+ fy="41.854801"
+ r="27.765808"
+ gradientTransform="matrix(1.7287032,0,0,1.7287032,-35.086972,-30.499726)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3803"
+ id="linearGradient3801"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.1088977,0,0,1.1088977,-3.2150185,-2.383994)"
+ x1="-11.46802"
+ y1="62.658627"
+ x2="53.882328"
+ y2="18.582912" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="13.34375"
+ inkscape:cx="16.019783"
+ inkscape:cy="36.435594"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1024"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="background"
+ inkscape:groupmode="layer"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ sodipodi:type="arc"
+ style="fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ id="path2993"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)" />
+ <path
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3771"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(-1.1268556,0,0,1.1268556,86.070613,-15.351671)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3785"
+ style="fill:url(#radialGradient3793);fill-opacity:1;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3783)"
+ id="path3775"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0565207,0,0,1.0565207,82.725544,-12.366264)" />
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3795"
+ style="fill:#46ff00;fill-opacity:0;fill-rule:nonzero;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="color"
+ style="display:inline">
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffd42a;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ id="path3773"
+ sodipodi:cx="48.149883"
+ sodipodi:cy="41.854801"
+ sodipodi:rx="27.765808"
+ sodipodi:ry="27.765808"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="reflection"
+ style="display:inline"
+ sodipodi:insensitive="true">
+ <path
+ transform="matrix(-1.0445488,0,0,1.0445488,82.149098,-11.865182)"
+ d="m 75.915691,41.854801 a 27.765808,27.765808 0 1 1 -55.531616,0 27.765808,27.765808 0 1 1 55.531616,0 z"
+ sodipodi:ry="27.765808"
+ sodipodi:rx="27.765808"
+ sodipodi:cy="41.854801"
+ sodipodi:cx="48.149883"
+ id="path3805"
+ style="fill:url(#radialGradient3794);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ sodipodi:type="arc" />
+ <path
+ style="fill:url(#linearGradient3801);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 13.661019,17.992002 c -2.716552,0 -5.3380492,0.375822 -7.8315903,1.074244 -1.8971123,3.856752 -2.9801626,8.198554 -2.9801626,12.786977 0,16.017772 12.9868349,29.004607 29.0046069,29.004607 2.703688,0 5.313926,-0.382194 7.796937,-1.074245 1.910078,-3.867248 3.014816,-8.21652 3.014816,-12.82163 0,-16.017772 -12.986835,-28.969953 -29.004607,-28.969953 z"
+ id="path3815"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#linearGradient3901);fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
+ d="m 31.853873,2.8486171 c -4.086863,0 -7.978121,0.8657411 -11.504814,2.3910608 2.453382,-0.6830778 5.034928,-1.0742447 7.692978,-1.0742447 16.52263,0 29.905586,14.0815598 29.905586,31.4303198 0,5.007819 -1.133611,9.729358 -3.118775,13.930528 3.772658,-4.895422 6.029632,-11.014661 6.029632,-17.673058 0,-16.017771 -12.986835,-29.0046059 -29.004607,-29.0046059 z"
+ id="path3857"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/logo-invert.svg b/mavigator-server/src/main/resources/assets/images/logo-invert.svg
new file mode 100644
index 0000000..eb38e8f
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/logo-invert.svg
@@ -0,0 +1,94 @@
+<?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="64"
+ height="64"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="logo.svg"
+ viewBox="0 0 64 64">
+ <defs
+ id="defs2987" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11"
+ inkscape:cx="11.178414"
+ inkscape:cy="36.371776"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <rect
+ style="fill:#222222;fill-opacity:1;stroke:none"
+ id="rect3798"
+ width="64"
+ height="64"
+ x="0"
+ y="-2.6645353e-15" />
+ <path
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#f9f9f9"
+ d="m 15.863636,5.6278409 c -5.595824,0 -10.144886,4.5490621 -10.144886,10.1448861 0,5.595824 4.549062,10.144886 10.144886,10.144886 5.595824,0 10.144886,-4.549062 10.144886,-10.144886 0,-5.595824 -4.549062,-10.1448861 -10.144886,-10.1448861 z m 0,1.7765239 c 4.619372,0 8.368362,3.7489902 8.368362,8.3683622 0,4.619372 -3.74899,8.368362 -8.368362,8.368362 -4.619372,0 -8.3683621,-3.74899 -8.3683621,-8.368362 0,-4.619372 3.7489901,-8.3683622 8.3683621,-8.3683622 z"
+ id="path2993"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3008"
+ d="m 47.863636,5.6278409 c -5.595824,0 -10.144886,4.5490621 -10.144886,10.1448861 0,5.595824 4.549062,10.144886 10.144886,10.144886 5.595824,0 10.144886,-4.549062 10.144886,-10.144886 0,-5.595824 -4.549062,-10.1448861 -10.144886,-10.1448861 z m 0,1.7765239 c 4.619372,0 8.368362,3.7489902 8.368362,8.3683622 0,4.619372 -3.74899,8.368362 -8.368362,8.368362 -4.619372,0 -8.368362,-3.74899 -8.368362,-8.368362 0,-4.619372 3.74899,-8.3683622 8.368362,-8.3683622 z"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#f9f9f9" />
+ <path
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#f9f9f9"
+ d="m 47.863636,37.627841 c -5.595824,0 -10.144886,4.549062 -10.144886,10.144886 0,5.595824 4.549062,10.144886 10.144886,10.144886 5.595824,0 10.144886,-4.549062 10.144886,-10.144886 0,-5.595824 -4.549062,-10.144886 -10.144886,-10.144886 z m 0,1.776524 c 4.619372,0 8.368362,3.74899 8.368362,8.368362 0,4.619372 -3.74899,8.368362 -8.368362,8.368362 -4.619372,0 -8.368362,-3.74899 -8.368362,-8.368362 0,-4.619372 3.74899,-8.368362 8.368362,-8.368362 z"
+ id="path3010"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3012"
+ d="m 15.863636,37.627841 c -5.595824,0 -10.1448856,4.549062 -10.1448856,10.144886 0,5.595824 4.5490616,10.144886 10.1448856,10.144886 5.595824,0 10.144886,-4.549062 10.144886,-10.144886 0,-5.595824 -4.549062,-10.144886 -10.144886,-10.144886 z m 0,1.776524 c 4.619372,0 8.368362,3.74899 8.368362,8.368362 0,4.619372 -3.74899,8.368362 -8.368362,8.368362 -4.619372,0 -8.3683616,-3.74899 -8.3683616,-8.368362 0,-4.619372 3.7489896,-8.368362 8.3683616,-8.368362 z"
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#f9f9f9" />
+ <path
+ style="fill:#f9f9f9;stroke:#f9f9f9;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M 22.454545,22.090909 41.363636,41"
+ id="path3014"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#f9f9f9;stroke:#f9f9f9;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 22.090909,41.090909 19,-19"
+ id="path3016"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/images/logo.svg b/mavigator-server/src/main/resources/assets/images/logo.svg
new file mode 100644
index 0000000..b905aad
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/images/logo.svg
@@ -0,0 +1,87 @@
+<?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="64"
+ height="64"
+ id="svg2985"
+ version="1.1"
+ inkscape:version="0.48.5 r10040"
+ sodipodi:docname="logo.svg"
+ viewBox="0 0 64 64">
+ <defs
+ id="defs2987" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11"
+ inkscape:cx="39.433014"
+ inkscape:cy="29.099049"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ inkscape:window-width="1920"
+ inkscape:window-height="1029"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata2990">
+ <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
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ style="fill:#222222;fill-opacity:1;stroke:#222222;stroke-opacity:1"
+ d="m 15.863636,5.6278409 c -5.595824,0 -10.144886,4.5490621 -10.144886,10.1448861 0,5.595824 4.549062,10.144886 10.144886,10.144886 5.595824,0 10.144886,-4.549062 10.144886,-10.144886 0,-5.595824 -4.549062,-10.1448861 -10.144886,-10.1448861 z m 0,1.7765239 c 4.619372,0 8.368362,3.7489902 8.368362,8.3683622 0,4.619372 -3.74899,8.368362 -8.368362,8.368362 -4.619372,0 -8.3683621,-3.74899 -8.3683621,-8.368362 0,-4.619372 3.7489901,-8.3683622 8.3683621,-8.3683622 z"
+ id="path2993"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3008"
+ d="m 47.863636,5.6278409 c -5.595824,0 -10.144886,4.5490621 -10.144886,10.1448861 0,5.595824 4.549062,10.144886 10.144886,10.144886 5.595824,0 10.144886,-4.549062 10.144886,-10.144886 0,-5.595824 -4.549062,-10.1448861 -10.144886,-10.1448861 z m 0,1.7765239 c 4.619372,0 8.368362,3.7489902 8.368362,8.3683622 0,4.619372 -3.74899,8.368362 -8.368362,8.368362 -4.619372,0 -8.368362,-3.74899 -8.368362,-8.368362 0,-4.619372 3.74899,-8.3683622 8.368362,-8.3683622 z"
+ style="fill:#222222;fill-opacity:1;stroke:#222222;stroke-opacity:1" />
+ <path
+ style="fill:#222222;fill-opacity:1;stroke:#222222;stroke-opacity:1"
+ d="m 47.863636,37.627841 c -5.595824,0 -10.144886,4.549062 -10.144886,10.144886 0,5.595824 4.549062,10.144886 10.144886,10.144886 5.595824,0 10.144886,-4.549062 10.144886,-10.144886 0,-5.595824 -4.549062,-10.144886 -10.144886,-10.144886 z m 0,1.776524 c 4.619372,0 8.368362,3.74899 8.368362,8.368362 0,4.619372 -3.74899,8.368362 -8.368362,8.368362 -4.619372,0 -8.368362,-3.74899 -8.368362,-8.368362 0,-4.619372 3.74899,-8.368362 8.368362,-8.368362 z"
+ id="path3010"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path3012"
+ d="m 15.863636,37.627841 c -5.595824,0 -10.1448856,4.549062 -10.1448856,10.144886 0,5.595824 4.5490616,10.144886 10.1448856,10.144886 5.595824,0 10.144886,-4.549062 10.144886,-10.144886 0,-5.595824 -4.549062,-10.144886 -10.144886,-10.144886 z m 0,1.776524 c 4.619372,0 8.368362,3.74899 8.368362,8.368362 0,4.619372 -3.74899,8.368362 -8.368362,8.368362 -4.619372,0 -8.3683616,-3.74899 -8.3683616,-8.368362 0,-4.619372 3.7489896,-8.368362 8.3683616,-8.368362 z"
+ style="fill:#222222;fill-opacity:1;stroke:#222222;stroke-opacity:1" />
+ <path
+ style="fill:#222222;stroke:#222222;stroke-width:1.79999994999999990;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
+ d="M 22.454545,22.090909 41.363636,41"
+ id="path3014"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#222222;stroke:#222222;stroke-width:1.79999994999999990;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
+ d="m 22.090909,41.090909 19,-19"
+ id="path3016"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mavigator-server/src/main/resources/assets/stylesheets/main.css b/mavigator-server/src/main/resources/assets/stylesheets/main.css
new file mode 100644
index 0000000..f254449
--- /dev/null
+++ b/mavigator-server/src/main/resources/assets/stylesheets/main.css
@@ -0,0 +1,203 @@
+html, body {
+ width: 100%;
+ height: 100%;
+}
+
+body {
+ background-color: #e6e6e6;
+}
+
+.loader {
+ width: 100%;
+ font-size: 50px;
+ text-align: center;
+}
+
+#vfd-dashboard {
+ width: 100%;
+ height: 100%;
+}
+
+#vfd-dashboard header {
+ color: #eeeeee;
+ background-color: #222222;
+ padding-left: 8px;
+ padding-right: 8px;
+ padding-top: 3px;
+ padding-bottom: 3px;
+ margin-bottom: 3px;
+ display: flex;
+}
+
+#vfd-dashboard header > * {
+ margin: 5px;
+ flex: 1;
+}
+
+#vfd-dashboard header > :nth-child(1) {
+ text-align: left;
+}
+
+#vfd-dashboard header > :nth-child(2) {
+ text-align: center;
+}
+
+#vfd-dashboard header > :nth-child(3) {
+ text-align: right;
+}
+
+/* dashboard layout */
+.d-container {
+ display: flex;
+ align-content: flex-start;
+ align-items: stretch;
+}
+
+.d-container > * {
+ flex: 1;
+}
+
+.d-column {
+ flex-direction: column;
+}
+
+.d-row {
+ flex-direction: row;
+}
+
+.d-above {
+ flex: none;
+}
+
+.d-left {
+ flex: 1 1 30%;
+}
+
+.d-main {
+ flex: 1 1 70%;
+}
+
+.d-panel {
+ margin: 3px;
+ padding: 10px;
+ background-color: white;
+ border-radius: 3px;
+}
+
+
+/* Mode styles */
+.mode {
+ display: inline-block;
+ box-sizing: border-box;
+ text-decoration: normal;
+ margin-right: 5px;
+}
+
+.mode.danger {
+ color: #d9534f;
+ text-shadow: 0 0 5px #d9534f;
+ animation: danger-blink 1s linear infinite;
+ -webkit-animation: danger-blink 1s linear infinite;
+}
+
+.mode.warning {
+ color: #f0ad4e;
+ text-shadow: 0 0 5px #f0ad4e;
+}
+
+.mode.info {
+ color: #5bc0de;
+ text-shadow: 0 0 5px #5bc0de;
+}
+
+.mode.success {
+ color: #5cb85c;
+ text-shadow: 0 0 5px #5cb85c;
+}
+
+.mode.off {
+ color: #eeeeee;
+ text-shadow: none;
+ animation: none;
+ -webkit-animation: none;
+}
+
+/* TODO: Rules below are maybe obsolete and need to be reviewed */
+.table-instrument {
+ table-layout: fixed;
+ width: 100%;
+}
+
+.table-instrument td {
+ width: 100%;
+}
+
+.heartbeat {
+ color: rgba(165, 25, 25, 1);
+ animation: heartbeat 2s linear infinite;
+ -webkit-animation: heartbeat 2s linear infinite;
+}
+
+@keyframes heartbeat {
+ 0% {
+ transform: scale(1);
+ }
+ 7% {
+ transform: scale(1.3);
+ }
+ 14% {
+ transform: scale(1);
+ }
+ 21% {
+ transform: scale(1.3);
+ }
+ 28% {
+ transform: scale(1);
+ }
+}
+@-webkit-keyframes heartbeat {
+ 0% {
+ transform: scale(1);
+ }
+ 7% {
+ transform: scale(1.3);
+ }
+ 14% {
+ transform: scale(1);
+ }
+ 21% {
+ transform: scale(1.3);
+ }
+ 28% {
+ transform: scale(1);
+ }
+}
+
+@keyframes danger-blink {
+ 0% {
+ color: #eeeeee;
+ text-shadow: none;
+ }
+ 50% {
+ color: #d9534f;
+ text-shadow: 0 0 5px #d9534f;
+ }
+ 100% {
+ color: #eeeeee;
+ text-shadow: none;
+ }
+}
+@-webkit-keyframes danger-blink {
+ 0% {
+ color: #eeeeee;
+ text-shadow: none;
+ }
+ 50% {
+ color: #d9534f;
+ text-shadow: 0 0 5px #d9534f;
+ }
+ 100% {
+ color: #eeeeee;
+ text-shadow: none;
+ }
+} \ No newline at end of file
diff --git a/mavigator-server/src/main/scala/mavigator/Main.scala b/mavigator-server/src/main/scala/mavigator/Main.scala
new file mode 100644
index 0000000..ca81fa9
--- /dev/null
+++ b/mavigator-server/src/main/scala/mavigator/Main.scala
@@ -0,0 +1,45 @@
+package mavigator
+
+import akka.actor._
+import akka.http.scaladsl._
+import akka.http.scaladsl.server._
+import akka.stream._
+import scala.concurrent.Await
+import scala.concurrent.duration.Duration
+
+object Main {
+
+ implicit lazy val system = ActorSystem("mavigator")
+ implicit lazy val materializer = ActorMaterializer()
+
+ def main(args: Array[String]): Unit = {
+ import system.dispatcher
+
+ system.log.info("System started.")
+
+ val router = (new Router(system)).route
+ val settings = Mavigator(system)
+
+ system.log.info(s"Starting server on ${settings.interface}:${settings.port}...")
+ val binding = Http(system).bindAndHandle(router, settings.interface, settings.port)
+
+ for (b <- binding) {
+ val addr = b.localAddress.getHostString()
+ val port = b.localAddress.getPort()
+ system.log.info(s"Server is listening on $addr:$port")
+ }
+
+ scala.io.StdIn.readLine()
+
+ binding.flatMap{b =>
+ system.log.info("Shutting down server...")
+ b.unbind()
+ }.onComplete{ _ =>
+ system.log.info("Server shut down")
+ system.terminate()
+ }
+
+ Await.result(system.whenTerminated, Duration.Inf)
+
+ }
+}
diff --git a/mavigator-server/src/main/scala/mavigator/MavlinkWebsocket.scala b/mavigator-server/src/main/scala/mavigator/MavlinkWebsocket.scala
new file mode 100644
index 0000000..9cbfa64
--- /dev/null
+++ b/mavigator-server/src/main/scala/mavigator/MavlinkWebsocket.scala
@@ -0,0 +1,76 @@
+package mavigator
+
+import akka.actor.Terminated
+import akka.actor._
+import akka.http.scaladsl._
+import akka.http.scaladsl.model.ws.Message
+import akka.http.scaladsl.model.ws.TextMessage
+import akka.http.scaladsl.server._
+import akka.stream.OverflowStrategy
+import akka.stream._
+import akka.stream.scaladsl.Flow
+import akka.stream.scaladsl.GraphDSL
+import akka.stream.scaladsl.Sink
+import akka.stream.scaladsl.Source
+import akka.util.ByteString
+import mavigator.uav.Connection
+import scala.concurrent.Await
+import scala.concurrent.duration.Duration
+
+
+/**
+ * Adapted from https://github.com/jrudolph/akka-http-scala-js-websocket-chat
+ */
+class MavlinkWebsocket(system: ActorSystem) {
+
+ /*
+ GraphDSL.create(Source.actorRef[Connection.Event](1, OverflowStrategy.fail)) {implicit builder =>
+ import GraphDSL.Implicits._
+
+ //source: SourceShape[Connection.Event] =>
+ source =>
+
+ val inSink = builder.materializedValue.map { client: ActorRef =>
+ Sink.actorRef[Connection.Command](
+ Mavigator(system).uav,
+ Connection.Unregister(client)
+ )
+ }
+
+ (inSink., source.out)
+
+ //FlowShape(inSink.in, source.out)
+ //???
+ }
+ */
+
+ /** Sink that forwards incomming (from the browser) messages to the uav. */
+ private val inSink = Sink.actorRef[Connection.Command](
+ Mavigator(system).uav,
+ Connection.Send(ByteString("goodbye")) //unregister
+ )
+
+ /** Source that emmits messages comming from the uav. */
+ private val outSource = Source.actorRef[Connection.Event](
+ bufferSize = 1,
+ overflowStrategy = OverflowStrategy.fail
+ ) mapMaterializedValue { client => // a client is spawned for every outSource materialization
+ Mavigator(system).uav.tell(Connection.Register, client)
+ }
+
+ private val flow: Flow[Connection.Command, Connection.Event, _] = Flow.fromSinkAndSource(inSink, outSource)
+
+ @deprecated("WIP", "0.0")
+ val wsflow = Flow[Message].collect{
+ case TextMessage.Strict(msg) => Connection.Send(ByteString(msg))
+ // unpack incoming WS text messages...
+ // This will lose (ignore) messages not received in one chunk (which is
+ // unlikely because chat messages are small) but absolutely possible
+ // FIXME: We need to handle TextMessage.Streamed as well.
+ }.via(flow).map {
+ case msg: Connection.Event =>
+ TextMessage.Strict(msg.toString) // ... pack outgoing messages into WS JSON messages ...
+ }
+
+}
+
diff --git a/mavigator-server/src/main/scala/mavigator/Router.scala b/mavigator-server/src/main/scala/mavigator/Router.scala
new file mode 100644
index 0000000..bd54422
--- /dev/null
+++ b/mavigator-server/src/main/scala/mavigator/Router.scala
@@ -0,0 +1,92 @@
+package mavigator
+
+import akka.actor._
+import akka.stream._
+import akka.stream.scaladsl._
+import akka.http.scaladsl._
+import akka.http.scaladsl.model._
+import akka.http.scaladsl.server._
+
+
+class Router(system: ActorSystem) {
+
+ import Directives._
+
+ val route: Route = (
+ path("info") {
+ get {
+ val f: play.twirl.api.Html = mavigator.views.html.index()
+ complete(f.body)
+ }
+ } ~
+ path("dashboard" / IntNumber) { id =>
+ get {
+ //get dashboard for remote sys id
+ ???
+ }
+ } ~
+ path("mavlink") {
+ get {
+ /*extractUpgradeToWebsocket{ upgrade =>
+ //upgrade.handleMessagesWith(inSink: Sink[Message, _$3], outSource: Source[Message, _$4])
+ ???
+ }*/
+ handleWebsocketMessages((new MavlinkWebsocket(system)).wsflow)
+ }
+ } ~
+ pathPrefix("assets") {
+ get {
+ encodeResponse {
+ getFromResourceDirectory("assets")
+ }
+ }
+ } ~
+ pathEndOrSingleSlash {
+ get {
+ complete("hello world")
+ }
+ }
+ )
+
+}
+
+import akka.http.scaladsl.model.ws._
+import akka.stream.scaladsl._
+
+object SocketService {
+
+ /*
+ val out: Source[OutgoingMessage, ActorRef] = Source.actorRef[OutgoingMessage](0, OverflowStrategy.fail)
+ val in = Sink.actorRef(ref: ActorRef, onCompleteMessage: Any)
+ */
+
+
+ /*
+ Flow[Message, Message, _] { implicit builder =>
+
+ val in: Flow[Message, IncomingMessage, _] = Flow[Message].map {
+ case TextMessage.Strict(txt) => IncomingMessage(s"frpm websocket $txt")
+ case _ => ???
+ }
+
+ val out: Flow[OutgoingMessage, Message, _] = Flow[OutgoingMessage].map {
+ case OutgoingMessage(txt) => TextMessage(s"to websocket $text")
+ }
+
+ val chatActorSink = Sink.actorRef[ChatEvent](chatRoomActor, UserLeft(user))
+
+ }
+ */
+}
+
+/*
+object EchoService {
+
+ val flow: Flow[Message, Message, _] = Flow[Message].map {
+ case TextMessage.Strict(txt) => TextMessage("ECHO: " + txt)
+ case _ => TextMessage("Message type unsupported")
+ }
+
+}
+ */
+
diff --git a/mavigator-server/src/main/scala/mavigator/settings.scala b/mavigator-server/src/main/scala/mavigator/settings.scala
new file mode 100644
index 0000000..9089c2e
--- /dev/null
+++ b/mavigator-server/src/main/scala/mavigator/settings.scala
@@ -0,0 +1,74 @@
+package mavigator
+
+import akka.actor.ActorSystem
+import akka.actor.Extension
+import akka.actor.ExtensionId
+import akka.actor.ExtensionIdProvider
+import akka.actor.ExtendedActorSystem
+
+import scala.concurrent.duration.Duration
+import com.typesafe.config.Config
+import java.util.concurrent.TimeUnit
+
+import akka.actor.ActorRef
+import akka.actor.Props
+import mavigator.uav.MockConnection
+import mavigator.uav.SerialConnection
+
+class MavigatorImpl(system: ExtendedActorSystem) extends Extension {
+
+ private val config = system.settings.config.getConfig("mavigator")
+
+ val interface: String = config.getString("interface")
+
+ val port: Int = config.getInt("port")
+
+ /** Mavlink system ID identifying the base station */
+ val systemId: Byte = config.getInt("system_id").toByte
+
+ val tpe = config.getString("connection.type")
+
+ /** Actor representing a connection channel to UAVs. This actor
+ * implements the protocol defined in [mavigator.uav.Connection] */
+ val uav: ActorRef = {
+ val config = this.config.getConfig("connection")
+ val tpe = config.getString("type")
+ val heartbeat = config.getInt("heartbeat")
+ val compId = config.getString("component_id").toByte
+
+ val props = tpe match {
+ case "mock" =>
+ val remote = config.getInt("mock.remote_system_id").toByte
+ val prescaler = config.getInt("mock.prescaler")
+ MockConnection(systemId, compId, remote, prescaler)
+
+ case "serial" =>
+ val serial = config.getConfig("serial")
+ SerialConnection(
+ systemId,
+ compId,
+ heartbeat,
+ serial.getString("port"),
+ serial.getInt("baud"),
+ serial.getBoolean("two_stop_bits"),
+ serial.getInt("parity")
+ )
+
+ case unknown => throw new IllegalArgumentException("Unsupported connection type '" + unknown + "'")
+
+ }
+
+ system.actorOf(props, name = "uav-connection")
+ }
+
+}
+
+object Mavigator extends ExtensionId[MavigatorImpl] with ExtensionIdProvider {
+
+ override def lookup = Mavigator
+
+ override def createExtension(system: ExtendedActorSystem) =
+ new MavigatorImpl(system)
+
+}
+
diff --git a/mavigator-server/src/main/twirl/mavigator/views/index.scala.html b/mavigator-server/src/main/twirl/mavigator/views/index.scala.html
new file mode 100644
index 0000000..1bf892b
--- /dev/null
+++ b/mavigator-server/src/main/twirl/mavigator/views/index.scala.html
@@ -0,0 +1,5 @@
+@()
+
+@main("Index"){
+<h1>Hello world!</h1>
+}
diff --git a/mavigator-server/src/main/twirl/mavigator/views/main.scala.html b/mavigator-server/src/main/twirl/mavigator/views/main.scala.html
new file mode 100644
index 0000000..10a48dd
--- /dev/null
+++ b/mavigator-server/src/main/twirl/mavigator/views/main.scala.html
@@ -0,0 +1,26 @@
+@(title: String)(content: Html)
+
+<!DOCTYPE html>
+
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="mobile-web-app-capable" content="yes">
+ <title>Mavigator - @title</title>
+
+ <link rel="shortcut icon" href="/assets/images/logo.svg">
+ <link rel="stylesheet" media="screen" href="/assets/lib/bootstrap/css/bootstrap.min.css">
+ <link rel="stylesheet" media="screen" href="/assets/lib/font-awesome/css/font-awesome.min.css">
+ <link rel="stylesheet" media="screen" href="/assets/stylesheets/main.css">
+ </head>
+ <body>
+
+ @content
+
+ <script type="text/javascript" src="/assets/lib/jquery/jquery.js"></script>
+ <script type="text/javascript" src="/assets/lib/bootstrap/js/bootstrap.min.js"></script>
+
+ </body>
+</html>
diff --git a/mavigator-uav/build.sbt b/mavigator-uav/build.sbt
new file mode 100644
index 0000000..13a8b5a
--- /dev/null
+++ b/mavigator-uav/build.sbt
@@ -0,0 +1,9 @@
+import mavigator.{Dependencies, MavigatorBuild}
+
+MavigatorBuild.defaultSettings
+
+libraryDependencies ++= Seq(
+ Dependencies.akkaActor,
+ Dependencies.flow,
+ Dependencies.flowNative
+)
diff --git a/vfd-uav/src/main/scala/vfd/uav/Connection.scala b/mavigator-uav/src/main/scala/mavigator/uav/Connection.scala
index 223a787..7399657 100644
--- a/vfd-uav/src/main/scala/vfd/uav/Connection.scala
+++ b/mavigator-uav/src/main/scala/mavigator/uav/Connection.scala
@@ -1,5 +1,6 @@
-package vfd.uav
+package mavigator.uav
+import akka.actor.ActorLogging
import scala.collection.mutable.ArrayBuffer
import akka.actor.Actor
@@ -10,8 +11,12 @@ import akka.util.ByteString
/** Protocol definition. */
object Connection {
- trait Event
- trait Command
+
+ /** Any messages received and transmitted by actors implementing this protocol. */
+ sealed trait Message
+
+ /** Messages emitted by actors implementing this protocol. */
+ trait Event extends Message
/** Received data from the uav (or any other systems on the link) */
case class Received(bstr: ByteString) extends Event
@@ -19,41 +24,50 @@ object Connection {
/** The connection closed or could not be opened */
case class Closed(message: String) extends Event
+ /** Messages that can be received by actors implementing this protocol. */
+ trait Command extends Message
+
/** Register the sender to be notified on events */
case object Register extends Command
+ case class Unregister(client: ActorRef) extends Command
+
/** Send given bytes out to the uav (or any other systems on the link) */
case class Send(bstr: ByteString) extends Command
+
}
/** Common behavior of connection actors. */
-trait Connection { myself: Actor =>
+trait Connection { myself: Actor with ActorLogging =>
- /** Current clients that should be notified on incoming messages. */
private val _clients = new ArrayBuffer[ActorRef]
+
+ /** Current clients that should be notified on incoming messages. */
def clients = _clients.toSeq
/** Adds a client to the client list and acquires a deathwatch. */
- protected def register(client: ActorRef) = {
+ protected def register(client: ActorRef): Unit = {
_clients += client
myself.context.watch(client)
+ myself.log.info("Client registered {}", client)
}
/** Remove client and release deathwatch. */
- protected def unregister(client: ActorRef) = {
+ protected def unregister(client: ActorRef): Unit = if (clients contains client) {
_clients -= client
myself.context.unwatch(client)
+ myself.log.info("Client unregistered {}", client)
}
/** Sends a message to all registered clients. */
- protected def sendAll(msg: Any) = clients foreach (_ ! msg)
+ protected def sendAll(msg: Any): Unit = clients foreach (_ ! msg)
- /**
- * Common registration behavior. Manages the events `Register` and `Terminated` by
- * registering and unregistering clients.
- */
- protected def registration: Receive = {
+ /** Common registration behavior. Manages the messages `Register` and `Terminated` by
+ * registering and unregistering clients. */
+ protected def handleRegistration: Receive = {
case Connection.Register => register(sender)
- case Terminated(client) if clients contains client => unregister(client)
+ case Terminated(client) => unregister(client)
+ case other => myself.log.warning("Unknown message: {}", other)
}
-} \ No newline at end of file
+
+}
diff --git a/vfd-uav/src/main/scala/vfd/uav/MavlinkUtil.scala b/mavigator-uav/src/main/scala/mavigator/uav/MavlinkUtil.scala
index 8a8c364..3756dd6 100644
--- a/vfd-uav/src/main/scala/vfd/uav/MavlinkUtil.scala
+++ b/mavigator-uav/src/main/scala/mavigator/uav/MavlinkUtil.scala
@@ -1,4 +1,4 @@
-package vfd.uav
+package mavigator.uav
import org.mavlink.Assembler
import org.mavlink.Packet
@@ -43,4 +43,4 @@ trait MavlinkUtil { myself: Actor with ActorLogging =>
protected val incoming: Parser = new Parser(pckt =>
log.debug("incoming message: " + Message.unpack(pckt.messageId, pckt.payload)))
-} \ No newline at end of file
+}
diff --git a/vfd-uav/src/main/scala/vfd/uav/MockConnection.scala b/mavigator-uav/src/main/scala/mavigator/uav/MockConnection.scala
index d08a8b6..5949a3a 100644
--- a/vfd-uav/src/main/scala/vfd/uav/MockConnection.scala
+++ b/mavigator-uav/src/main/scala/mavigator/uav/MockConnection.scala
@@ -1,4 +1,4 @@
-package vfd.uav
+package mavigator.uav
import java.util.concurrent.TimeUnit.MILLISECONDS
import scala.concurrent.duration.FiniteDuration
@@ -16,47 +16,47 @@ import akka.actor.Props
import akka.util.ByteString
import scala.concurrent.duration._
import org.mavlink.messages.Message
-import vfd.uav.mock.RandomFlightPlan
+import mock.RandomFlightPlan
class MockConnection(
localSystemId: Byte,
localComponentId: Byte,
remoteSystemId: Byte,
- prescaler: Int)
- extends Actor with ActorLogging with Connection with MavlinkUtil {
+ prescaler: Int
+)
+ extends Actor with ActorLogging with Connection with MavlinkUtil {
- import Connection._
import context._
override val systemId = remoteSystemId
override val componentId = remoteSystemId
-
+
val plan = new RandomFlightPlan
-
- def scheduleMessage(delay: FiniteDuration)(fct: => Message) = system.scheduler.schedule(delay, delay){
+
+ def scheduleMessage(delay: FiniteDuration)(fct: => Message) = system.scheduler.schedule(delay, delay) {
sendAll(Received(assemble(fct)))
}
- def scheduleBytes(delay: FiniteDuration)(fct: => Array[Byte]) = system.scheduler.schedule(delay, delay){
+ def scheduleBytes(delay: FiniteDuration)(fct: => Array[Byte]) = system.scheduler.schedule(delay, delay) {
sendAll(Received(ByteString(fct)))
}
override def preStart() = {
//increment state
- system.scheduler.schedule(0.01.seconds * prescaler, 0.01.seconds * prescaler){plan.tick(0.01)}
-
+ system.scheduler.schedule(0.01.seconds * prescaler, 0.01.seconds * prescaler) { plan.tick(0.01) }
+
//send messages
scheduleMessage(0.1.seconds * prescaler)(plan.position)
scheduleMessage(0.05.seconds * prescaler)(plan.attitude)
scheduleMessage(0.05.seconds * prescaler)(plan.motors)
scheduleMessage(0.1.seconds * prescaler)(plan.distance)
scheduleMessage(1.seconds)(plan.heartbeat)
-
+
//simulate noisy line
scheduleBytes(0.3.seconds * prescaler)(MockPackets.invalidCrc)
scheduleBytes(1.5.seconds * prescaler)(MockPackets.invalidOverflow)
}
- def receive = registration
+ override def receive = handleRegistration
}
diff --git a/vfd-uav/src/main/scala/vfd/uav/SerialConnection.scala b/mavigator-uav/src/main/scala/mavigator/uav/SerialConnection.scala
index 1756cac..24c70a1 100644
--- a/vfd-uav/src/main/scala/vfd/uav/SerialConnection.scala
+++ b/mavigator-uav/src/main/scala/mavigator/uav/SerialConnection.scala
@@ -1,4 +1,4 @@
-package vfd.uav
+package mavigator.uav
import java.util.concurrent.TimeUnit.MILLISECONDS
@@ -72,8 +72,8 @@ class SerialConnection(
context become opened(sender)
case Connection.Send(_) => () // ignore
- /*
- * During opening, any outgoing messages are discarded.
+ /*
+ * During opening, any outgoing messages are discarded.
* By using some kind of message stashing, maybe messages could be treated
* once the port has been opened. However, in such a case failure also needs
* to be considered, thus complicating the protocol. Since opening is typically
@@ -99,14 +99,14 @@ class SerialConnection(
case Connection.Send(bstr) =>
outgoing.push(bstr)
- //no sending is enabled
+ //no sending is currently enabled
}
- def receive = closed
- def closed = _closed orElse registration
- def opening = _opening orElse registration
- def opened(op: ActorRef) = _opened(op) orElse registration
+ def closed = _closed orElse handleRegistration
+ def opening = _opening orElse handleRegistration
+ def opened(op: ActorRef) = _opened(op) orElse handleRegistration
+ override def receive = closed
}
@@ -133,4 +133,4 @@ object SerialConnection {
Props(classOf[SerialConnection], systemId, componentId, hb, port, settings)
}
-} \ No newline at end of file
+}
diff --git a/vfd-uav/src/main/scala/vfd/uav/mock/RandomFlightPlan.scala b/mavigator-uav/src/main/scala/mavigator/uav/mock/RandomFlightPlan.scala
index 12e3d5c..1e5431e 100644
--- a/vfd-uav/src/main/scala/vfd/uav/mock/RandomFlightPlan.scala
+++ b/mavigator-uav/src/main/scala/mavigator/uav/mock/RandomFlightPlan.scala
@@ -1,4 +1,5 @@
-package vfd.uav.mock
+package mavigator.uav
+package mock
import scala.util.Random
@@ -99,4 +100,4 @@ class RandomFlightPlan {
servo8Raw = 0
)
-} \ No newline at end of file
+}
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
new file mode 100644
index 0000000..1be5b70
--- /dev/null
+++ b/project/Dependencies.scala
@@ -0,0 +1,23 @@
+package mavigator
+
+import sbt._
+import sbt.Keys._
+import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._
+
+object Dependencies {
+
+ val AkkaVersion = "2.4.2-RC1"
+
+ val akkaActor = "com.typesafe.akka" %% "akka-actor" % AkkaVersion
+ val akkaHttp = "com.typesafe.akka" %% "akka-http" % AkkaVersion
+ val akkaHttpCore = "com.typesafe.akka" %% "akka-http-core" % AkkaVersion
+ val akkaStreams = "com.typesafe.akka" %% "akka-stream" % AkkaVersion
+
+ val flow = "com.github.jodersky" %% "flow" % "2.4.0"
+ val flowNative = "com.github.jodersky" % "flow-native" % "2.4.0" % Runtime
+
+ val jsDom = Def.setting{"org.scala-js" %%% "scalajs-dom" % "0.8.2"}
+ val scalatags = Def.setting{"com.lihaoyi" %%% "scalatags" % "0.5.3"}
+ val scalarx = Def.setting{"com.lihaoyi" %%% "scalarx" % "0.2.8"}
+
+}
diff --git a/project/VfdBuild.scala b/project/MavigatorBuild.scala
index a80d62c..5bc999c 100644
--- a/project/VfdBuild.scala
+++ b/project/MavigatorBuild.scala
@@ -1,10 +1,10 @@
-package vfd
+package mavigator
import sbt._
import sbt.Keys._
import sbt.Project.projectToRef
-object VfdBuild extends Build {
+object MavigatorBuild extends Build {
// settings common to all projects
val defaultSettings = Seq(
@@ -16,45 +16,42 @@ object VfdBuild extends Build {
lazy val root = Project(
id = "root",
base = file("."),
- aggregate = Seq(bindings, main, uav, dashboard, index)
+ aggregate = Seq(bindings, uav)
)
// empty project that uses SbtMavlink to generate protocol bindings
lazy val bindings = Project(
- id = "vfd-bindings",
- base = file("vfd-bindings")
+ id = "mavigator-bindings",
+ base = file("mavigator-bindings")
)
- // main play project
- lazy val main = Project(
- id = "vfd-main",
- base = file("vfd-main"),
- dependencies = Seq(bindings, uav),
- aggregate = Seq(
- projectToRef(dashboard),
- projectToRef(index)
- )
+ // main akka http server project
+ lazy val server = Project(
+ id = "mavigator-server",
+ base = file("mavigator-server"),
+ dependencies = Seq(bindings, uav)
)
// communication backend
lazy val uav = Project(
- id = "vfd-uav",
- base = file("vfd-uav"),
+ id = "mavigator-uav",
+ base = file("mavigator-uav"),
dependencies = Seq(bindings)
)
// main cockpit front-end
lazy val dashboard = Project(
- id = "vfd-dashboard",
- base = file("vfd-dashboard"),
+ id = "mavigator-dashboard",
+ base = file("mavigator-dashboard"),
dependencies = Seq(bindings)
)
+ /*
// landing page providing selection of drone
lazy val index = Project(
- id = "vfd-index",
- base = file("vfd-index"),
+ id = "mavigator-index",
+ base = file("mavigator-index"),
dependencies = Seq(bindings)
)
-
+ */
}
diff --git a/project/ScalaJS.scala b/project/ScalaJS.scala
deleted file mode 100644
index 49f23ad..0000000
--- a/project/ScalaJS.scala
+++ /dev/null
@@ -1,16 +0,0 @@
-package vfd
-
-import sbt.Keys._
-import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._
-
-object ScalaJS {
-
- val settings = Seq(
- libraryDependencies ++= Seq(
- "org.scala-js" %%% "scalajs-dom" % "0.8.0",
- "com.lihaoyi" %%% "scalatags" % "0.5.2",
- "com.lihaoyi" %%% "scalarx" % "0.2.8"
- )
- )
-
-}
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 71b5073..85aac41 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -12,13 +12,16 @@ resolvers += "jgit-repo" at "http://download.eclipse.org/jgit/maven"
*/
// play web framework
-addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6")
+//addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.6")
// add support for scalajs
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.5")
+// twirl html templating
+addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.1.1")
+
// enable "smooth" dependencies between play and scalajs projects
-addSbtPlugin("com.vmunier" % "sbt-play-scalajs" % "0.2.3")
+//addSbtPlugin("com.vmunier" % "sbt-play-scalajs" % "0.2.3")
// generate MAVLink protocol bindings
addSbtPlugin("com.github.jodersky" % "sbt-mavlink" % "0.5.2")
@@ -36,3 +39,5 @@ addSbtPlugin("com.github.jodersky" % "sbt-mavlink" % "0.5.2")
// generate documentation for all projects
//addSbtPlugin("com.eed3si9n" % "sbt-unidoc" % "0.3.3")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0")
diff --git a/vfd-index/build.sbt b/vfd-index/build.sbt
deleted file mode 100644
index 31b502d..0000000
--- a/vfd-index/build.sbt
+++ /dev/null
@@ -1,8 +0,0 @@
-import vfd.{ScalaJS, VfdBuild}
-
-enablePlugins(ScalaJSPlugin)
-enablePlugins(ScalaJSPlay)
-
-VfdBuild.defaultSettings
-
-ScalaJS.settings
diff --git a/vfd-main/build.sbt b/vfd-main/build.sbt
index 4357a93..141b310 100644
--- a/vfd-main/build.sbt
+++ b/vfd-main/build.sbt
@@ -6,7 +6,8 @@ VfdBuild.defaultSettings
scalaJSProjects := Seq(dashboard, index)
pipelineStages := Seq(scalaJSProd)
+
libraryDependencies ++= Seq(
- "org.webjars" % "bootstrap" % "3.3.4",
- "org.webjars" % "font-awesome" % "4.3.0"
+ "org.webjars" % "bootstrap" % "3.3.6",
+ "org.webjars" % "font-awesome" % "4.5.0"
)
diff --git a/vfd-uav/build.sbt b/vfd-uav/build.sbt
deleted file mode 100644
index 40d2182..0000000
--- a/vfd-uav/build.sbt
+++ /dev/null
@@ -1,9 +0,0 @@
-import vfd.VfdBuild
-
-VfdBuild.defaultSettings
-
-libraryDependencies ++= Seq(
- "com.typesafe.akka" %% "akka-actor" % "2.3.10",
- "com.github.jodersky" %% "flow" % "2.1.1",
- "com.github.jodersky" % "flow-native" % "2.1.1"
-)