[valadoc/wip/beniofel/new-style: 9/10] wip



commit daf47a32e381a467c642c10f4e30ef2b53c7c0b0
Author: Ben Iofel <iofelben gmail com>
Date:   Wed Mar 30 20:14:29 2016 -0400

    wip

 Makefile.am                     |    1 +
 configure.ac                    |    2 +
 src/doclets/Makefile.am         |    1 +
 src/doclets/html2/Makefile.am   |   60 ++++
 src/doclets/html2/doclet.vala   |  224 ++++++++++++++
 web-assets/Makefile.am          |   35 +++
 web-assets/abstractclass.svg    |  180 +++++++++++
 web-assets/abstractmethod.svg   |  163 ++++++++++
 web-assets/abstractproperty.svg |  138 +++++++++
 web-assets/class.svg            |  168 +++++++++++
 web-assets/coll_close.png       |  Bin 0 -> 185 bytes
 web-assets/coll_close.svg       |   61 ++++
 web-assets/coll_open.png        |  Bin 0 -> 204 bytes
 web-assets/coll_open.svg        |   61 ++++
 web-assets/constant.svg         |  170 +++++++++++
 web-assets/constructor.svg      |  237 +++++++++++++++
 web-assets/delegate.svg         |  126 ++++++++
 web-assets/enum.svg             |  304 +++++++++++++++++++
 web-assets/enumvalue.svg        |  120 ++++++++
 web-assets/errorcode.svg        |  138 +++++++++
 web-assets/errordomain.svg      |  322 ++++++++++++++++++++
 web-assets/field.svg            |  170 +++++++++++
 web-assets/interface.svg        |   42 +++
 web-assets/method.svg           |  151 ++++++++++
 web-assets/namespace.svg        |   36 +++
 web-assets/package.svg          |   40 +++
 web-assets/packages.svg         |   83 +++++
 web-assets/property.svg         |  126 ++++++++
 web-assets/scripts.js           |   49 +++
 web-assets/signal.svg           |  116 +++++++
 web-assets/staticmethod.svg     |  163 ++++++++++
 web-assets/struct.svg           |  148 +++++++++
 web-assets/style.css            |  631 +++++++++++++++++++++++++++++++++++++++
 web-assets/tip.svg              |   50 +++
 web-assets/virtualmethod.svg    |  163 ++++++++++
 web-assets/virtualproperty.svg  |  138 +++++++++
 web-assets/warning.svg          |  118 ++++++++
 37 files changed, 4735 insertions(+), 0 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 0c214ce..512b07d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -7,6 +7,7 @@ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
 SUBDIRS = src \
           tests \
           icons \
+          web-assets \
           doc \
           $(NULL)
 
diff --git a/configure.ac b/configure.ac
index 8a00d76..357cd49 100644
--- a/configure.ac
+++ b/configure.ac
@@ -114,6 +114,7 @@ src/libvaladoc/valadoc-1.0.pc
 src/libvaladoc/valadoc-1.0.deps
 src/Makefile
 icons/Makefile
+web-assets/Makefile
 doc/Makefile
 src/libvaladoc/Makefile
 src/driver/Makefile
@@ -128,6 +129,7 @@ src/driver/0.34.x/Makefile
 src/driver/0.36.x/Makefile
 src/doclets/Makefile
 src/doclets/html/Makefile
+src/doclets/html2/Makefile
 src/doclets/devhelp/Makefile
 src/doclets/gtkdoc/Makefile
 src/valadoc/Makefile
diff --git a/src/doclets/Makefile.am b/src/doclets/Makefile.am
index 90cf4b3..87962fc 100644
--- a/src/doclets/Makefile.am
+++ b/src/doclets/Makefile.am
@@ -2,6 +2,7 @@ NULL =
 
 SUBDIRS = \
        html \
+       html2 \
        devhelp \
        gtkdoc \
        $(NULL)
diff --git a/src/doclets/html2/Makefile.am b/src/doclets/html2/Makefile.am
new file mode 100644
index 0000000..da7f4da
--- /dev/null
+++ b/src/doclets/html2/Makefile.am
@@ -0,0 +1,60 @@
+NULL =
+
+AM_CFLAGS = \
+       -DPACKAGE_ASSETSDIR=\"$(datadir)/valadoc/web-assets/\" \
+       -I $(top_builddir)/src/libvaladoc/ \
+       $(GLIB_CFLAGS) \
+       $(LIBGEE_CFLAGS) \
+       $(LIBGVC_CFLAGS) \
+       -g \
+       -w \
+       $(NULL)
+
+AM_VALAFLAGS = \
+       $(VALAFLAGS) \
+       --vapidir $(top_srcdir)/src/vapi \
+       --vapidir $(top_builddir)/src/libvaladoc \
+       --basedir $(srcdir) \
+       --directory $(builddir) \
+       -C \
+       -g \
+       $(NULL)
+
+BUILT_SOURCES = libdoclet.vala.stamp
+
+doclet_LTLIBRARIES = libdoclet.la
+
+docletdir = $(libdir)/valadoc/doclets/html2
+
+libdoclet_la_LDFLAGS = -module -avoid-version -no-undefined
+
+libdoclet_la_VALASOURCES = \
+       doclet.vala \
+       $(NULL)
+
+nodist_libdoclet_la_SOURCES = \
+       $(libdoclet_la_VALASOURCES:.vala=.c) \
+       $(NULL)
+
+libdoclet.vala.stamp: $(libdoclet_la_VALASOURCES) Makefile
+       $(VALAC) \
+               $(AM_VALAFLAGS) \
+               --pkg gee-0.8 \
+               --pkg valadoc-1.0 \
+               $(filter %.vala %.c,$^)
+       touch $@
+
+libdoclet_la_LIBADD = \
+       $(top_builddir)/src/libvaladoc/libvaladoc.la \
+       $(GLIB_LIBS) \
+       $(LIBGEE_LIBS) \
+       $(NULL)
+
+EXTRA_DIST = \
+       $(libdoclet_la_VALASOURCES) \
+       $(NULL)
+
+CLEANFILES = \
+       $(BUILT_SOURCES) \
+       $(nodist_libdoclet_la_SOURCES) \
+       $(NULL)
diff --git a/src/doclets/html2/doclet.vala b/src/doclets/html2/doclet.vala
new file mode 100644
index 0000000..1eafa56
--- /dev/null
+++ b/src/doclets/html2/doclet.vala
@@ -0,0 +1,224 @@
+/* doclet.vala
+ *
+ * Copyright (C) 2008-2012 Florian Brosch
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ *
+ * Author:
+ *     Florian Brosch <flo brosch gmail com>
+ */
+
+using Valadoc;
+using Valadoc.Api;
+using Valadoc.Html;
+using Gee;
+
+
+[CCode (cprefix = "", cname = "PACKAGE_ASSETSDIR")]
+public extern const string assets_dir;
+
+public class Valadoc.Html.Doclet : Valadoc.Html.BasicDoclet {
+       private const string css_path_package = "style.css";
+       private const string css_path_wiki = "../style.css";
+       private const string css_path = "../style.css";
+
+
+       private const string js_path_package = "scripts.js";
+       private const string js_path_wiki = "../scripts.js";
+       private const string js_path = "../scripts.js";
+
+       private class IndexLinkHelper : LinkHelper {
+               protected override string? from_wiki_to_package (WikiPage from, Api.Package to) {
+                       if (from.name != "index.valadoc") {
+                               return base.from_wiki_to_package (from, to);;
+                       }
+
+                       return Path.build_filename (to.name, to.name + ".htm");
+               }
+
+               protected override string? from_wiki_to_wiki (WikiPage from, WikiPage to) {
+                       if (from.name != "index.valadoc") {
+                               return base.from_wiki_to_wiki (from, to);
+                       }
+
+                       return Path.build_filename (_settings.pkg_name, translate_wiki_name (to));
+               }
+
+               protected override string? from_wiki_to_node (WikiPage from, Api.Node to) {
+                       if (from.name != "index.valadoc") {
+                               return base.from_wiki_to_node (from, to);
+                       }
+
+                       if (enable_browsable_check && (!to.is_browsable(_settings) || 
!to.package.is_browsable (_settings))) {
+                               return null;
+                       }
+
+                       return Path.build_filename (to.package.name, to.get_full_name () + ".html");
+               }
+       }
+
+       private string get_real_path ( Api.Node element ) {
+               return GLib.Path.build_filename ( this.settings.path, element.package.name, 
element.get_full_name () + ".html" );
+       }
+
+       protected virtual string get_icon_directory () {
+               return ".."; // ../images
+       }
+
+       public override void process (Settings settings, Api.Tree tree, ErrorReporter reporter) {
+               base.process (settings, tree, reporter);
+
+               DirUtils.create_with_parents (this.settings.path, 0777);
+               copy_directory (assets_dir, settings.path);
+
+               write_wiki_pages (tree, css_path_wiki, js_path_wiki, Path.build_filename(settings.path, 
settings.pkg_name));
+
+               var tmp = _renderer;
+               _renderer = new HtmlRenderer (settings, new IndexLinkHelper (), this.cssresolver);
+               GLib.FileStream file = GLib.FileStream.open (GLib.Path.build_filename (settings.path, 
"index.html"), "w");
+               writer = new Html.MarkupWriter (file);
+               _renderer.set_writer (writer);
+               write_file_header (Valadoc.Html.Doclet.css_path_package, Valadoc.Html.Doclet.js_path_package, 
settings.pkg_name);
+               write_navi_packages (tree);
+               write_package_index_content (tree);
+               write_file_footer ();
+               _renderer = tmp;
+               file = null;
+
+               tree.accept (this);
+       }
+
+       public override void visit_tree (Api.Tree tree) {
+               tree.accept_children (this);
+       }
+
+       public override void visit_package (Package package) {
+               if (!package.is_browsable (settings)) {
+                       return ;
+               }
+
+               string pkg_name = package.name;
+               string path = GLib.Path.build_filename ( this.settings.path, pkg_name );
+
+               var rt = DirUtils.create (path, 0777);
+               rt = DirUtils.create (GLib.Path.build_filename (path, "img"), 0777);
+
+               GLib.FileStream file = GLib.FileStream.open (GLib.Path.build_filename (path, "index.htm"), 
"w");
+               writer = new Html.MarkupWriter (file);
+               _renderer.set_writer (writer);
+               write_file_header (Valadoc.Html.Doclet.css_path, Valadoc.Html.Doclet.js_path, pkg_name);
+               write_navi_package (package);
+               write_package_content (package, package);
+               write_file_footer ();
+               file = null;
+
+               package.accept_all_children (this);
+       }
+
+       public override void visit_namespace (Namespace ns) {
+               string rpath = this.get_real_path (ns);
+
+               if (ns.name != null) {
+                       GLib.FileStream file = GLib.FileStream.open (rpath, "w");
+                       writer = new Html.MarkupWriter (file);
+                       _renderer.set_writer (writer);
+                       write_file_header (Valadoc.Html.Doclet.css_path, Valadoc.Html.Doclet.js_path, 
ns.get_full_name () + " &ndash; " + ns.package.name);
+                       write_navi_symbol (ns);
+                       write_namespace_content (ns, ns);
+                       write_file_footer ();
+                       file = null;
+               }
+
+               ns.accept_all_children (this);
+       }
+
+       private void process_node (Api.Node node, bool accept_all_children) {
+               string rpath = this.get_real_path (node);
+
+               GLib.FileStream file = GLib.FileStream.open (rpath, "w");
+               writer = new Html.MarkupWriter (file);
+               _renderer.set_writer (writer);
+               write_file_header (css_path, js_path, node.get_full_name() + " &ndash; " + node.package.name);
+               if (is_internal_node (node)) {
+                       write_navi_symbol (node);
+               } else {
+                       write_navi_leaf_symbol (node);
+               }
+               write_symbol_content (node);
+               write_file_footer ();
+               file = null;
+
+               if (accept_all_children) {
+                       node.accept_all_children (this);
+               }
+       }
+
+       public override void visit_interface (Interface item) {
+               process_node (item, true);
+       }
+
+       public override void visit_class (Api.Class item) {
+               process_node (item, true);
+       }
+
+       public override void visit_struct (Api.Struct item) {
+               process_node (item, true);
+       }
+
+       public override void visit_error_domain (Api.ErrorDomain item) {
+               process_node (item, true);
+       }
+
+       public override void visit_enum (Api.Enum item) {
+               process_node (item, true);
+       }
+
+       public override void visit_property (Api.Property item) {
+               process_node (item, false);
+       }
+
+       public override void visit_constant (Api.Constant item) {
+               process_node (item, false);
+       }
+
+       public override void visit_field (Api.Field item) {
+               process_node (item, false);
+       }
+
+       public override void visit_error_code (Api.ErrorCode item) {
+               process_node (item, false);
+       }
+
+       public override void visit_enum_value (Api.EnumValue item) {
+               process_node (item, false);
+       }
+
+       public override void visit_delegate (Api.Delegate item) {
+               process_node (item, false);
+       }
+
+       public override void visit_signal (Api.Signal item) {
+               process_node (item, false);
+       }
+
+       public override void visit_method (Api.Method item) {
+               process_node (item, false);
+       }
+}
+
+
+public Type register_plugin (Valadoc.ModuleLoader module_loader) {
+       return typeof ( Valadoc.Html.Doclet );
+}
diff --git a/web-assets/Makefile.am b/web-assets/Makefile.am
new file mode 100644
index 0000000..303b253
--- /dev/null
+++ b/web-assets/Makefile.am
@@ -0,0 +1,35 @@
+NULL =
+
+iconsdir = $(datadir)/valadoc/web-assets
+
+dist_icons_DATA = \
+       style.css \
+       scripts.js \
+       abstractclass.svg \
+       abstractmethod.svg \
+       abstractproperty.svg \
+       class.svg \
+       coll_close.png \
+       coll_open.png \
+       constant.svg \
+       constructor.svg \
+       delegate.svg \
+       enum.svg \
+       enumvalue.svg \
+       errorcode.svg \
+       errordomain.svg \
+       field.svg \
+       interface.svg \
+       method.svg \
+       namespace.svg \
+       package.svg \
+       packages.svg \
+       property.svg \
+       signal.svg \
+       staticmethod.svg \
+       struct.svg \
+       tip.svg \
+       virtualmethod.svg \
+       virtualproperty.svg \
+       warning.svg \
+       $(NULL)
diff --git a/web-assets/abstractclass.svg b/web-assets/abstractclass.svg
new file mode 100644
index 0000000..1c3e080
--- /dev/null
+++ b/web-assets/abstractclass.svg
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+  </defs>
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <rect
+     transform="matrix(0.70710678,0.70710678,0.70710678,-0.70710678,0,0)"
+     ry="0.87651831"
+     rx="0.87651831"
+     y="-4.1452508"
+     x="11.4111"
+     height="6.876286"
+     width="6.876286"
+     id="rect4164"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3585dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4164-8-7-9-8"
+     d="M 10 6.5 C 9.7759452 6.5 9.5525418 6.5861301 9.3808594 6.7578125 L 6.9140625 9.2226562 L 8.6035156 
10.912109 C 9.3869899 11.695584 10.648166 11.695584 11.431641 10.912109 L 13.101562 9.2421875 L 10.619141 
6.7578125 C 10.447458 6.5861301 10.224055 6.5 10 6.5 z "
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4164-8-7-0"
+     d="M 10 6.5 C 9.7759452 6.5 9.5525418 6.5861301 9.3808594 6.7578125 L 7.5195312 8.6210938 L 8.9570312 
10.058594 C 9.544637 10.646199 10.490519 10.646199 11.078125 10.058594 L 12.5 8.6386719 L 10.619141 6.7578125 
C 10.447458 6.5861301 10.224055 6.5 10 6.5 z "
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <rect
+     transform="matrix(0.70710678,0.70710678,0.70710678,-0.70710678,0,0)"
+     ry="0.87651831"
+     rx="0.87651831"
+     y="0.11011919"
+     x="7.1811862"
+     height="6.876286"
+     width="6.876286"
+     id="rect4164-0"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#844cc8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4164-8-7-9"
+     d="M 7.7421875 2.4140625 L 5.7753906 4.3808594 C 5.4320258 4.7242242 5.4320258 5.2757758 5.7753906 
5.6191406 L 8.1484375 7.9921875 L 5.7578125 10.380859 C 5.4144477 10.724224 5.4144477 11.275776 5.7578125 
11.619141 L 6.7324219 12.59375 L 10.912109 8.4140625 C 11.695584 7.6305882 11.695584 6.3694118 10.912109 
5.5859375 L 7.7421875 2.4140625 z "
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4164-8-7"
+     d="M 7.1367188 3.0195312 L 5.7753906 4.3808594 C 5.4320258 4.7242242 5.4320258 5.2757758 5.7753906 
5.6191406 L 8.1484375 7.9921875 L 5.7578125 10.380859 C 5.4144477 10.724224 5.4144477 11.275776 5.7578125 
11.619141 L 6.1289062 11.990234 L 10.058594 8.0605469 C 10.646199 7.4729411 10.646199 6.5270589 10.058594 
5.9394531 L 7.1367188 3.0195312 z "
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <rect
+     transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
+     ry="0.87651831"
+     rx="0.87651831"
+     y="5.0471387"
+     x="-4.8523564"
+     height="6.876286"
+     width="6.876286"
+     id="rect4164-8"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.07;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 7.0890263,2.4375 C 6.2491115,2.437407 5.5006124,2.9674635 5.2218393,3.7597656 L 
2.7023081,10.927734 c -0.4518437,1.287031 0.5031446,2.634604 1.8671874,2.634766 l 1.6308594,0 c 
0.7911214,-0.0014 1.5054244,-0.473735 1.8164064,-1.201172 0.31154,0.728741 1.027771,1.201361 
1.820312,1.201172 l 1.6308597,0 c 1.364382,-10e-4 2.318537,-1.34984 1.865234,-2.636719 L 10.80387,3.7578125 C 
10.524676,2.9669569 9.7773263,2.4379431 8.9386363,2.4375 Z"
+     id="path4416-7" />
+  <path
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="m 7.088048,3.388672 c -0.4360754,4.186e-4 -0.8244044,0.276007 -0.9687495,0.6875 l 
-2.5195313,7.167969 c -0.2337134,0.667686 0.2613417,1.366353 0.96875,1.367188 l 1.6308594,0 C 
6.6514404,12.611003 7.050203,12.3153 7.181798,11.882813 l 0.296876,-0.970703 1.0781243,0 0.296876,0.970703 c 
0.131595,0.432486 0.530357,0.72819 0.982421,0.728516 l 1.6308597,0 c 0.708572,-3.63e-4 1.204194,-0.700829 
0.96875,-1.369141 L 9.9064083,4.0742189 C 9.7614033,3.6634963 9.3732263,3.3887985 8.9376583,3.388672 Z"
+     id="path4416" />
+  <path
+     
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="m 7.0883954,4.4160158 -2.5195308,7.1679692 1.6308594,0 0.5175782,-1.6992194 2.6015621,0 
0.517578,1.6992194 1.6308597,0 -2.5292967,-7.1679692 z m 0.9316409,1.109375 c 0.02604,0.1171876 
0.06836,0.2747396 0.126953,0.4765626 0.06185,0.2018229 0.332032,1.0735677 0.810547,2.6132812 l -1.8593749,0 C 
7.6059744,6.9713544 7.9126144,5.9420575 8.0200363,5.5253908 Z"
+     id="text3368" />
+</svg>
diff --git a/web-assets/abstractmethod.svg b/web-assets/abstractmethod.svg
new file mode 100644
index 0000000..891d09f
--- /dev/null
+++ b/web-assets/abstractmethod.svg
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   height="16"
+   id="svg7384"
+   version="1.1"
+   width="16.036167">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4169">
+      <stop
+         id="stop4171"
+         offset="0"
+         style="stop-color:#403757;stop-opacity:1;" />
+      <stop
+         id="stop4173"
+         offset="1"
+         style="stop-color:#403757;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0,-2)"
+       gradientUnits="userSpaceOnUse"
+       y2="7"
+       x2="0"
+       y1="5.7507787"
+       x1="2.3021808"
+       id="linearGradient4175"
+       xlink:href="#linearGradient4169" />
+    <linearGradient
+       osb:paint="solid"
+       id="linearGradient4526">
+      <stop
+         id="stop4528"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+  </defs>
+  <path
+     id="rect4194-8-1"
+     d="m 0,5 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z"
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4175);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <g
+     id="layer9"
+     label="status"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer10"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer13"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer14"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer15"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="g71291"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer9-2-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-0-6"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer11-5"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer14-7-9"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer15-5-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g71291-8-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g4953-5"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer12-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-2"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer11"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer13-0"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer14-3"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer15-1"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g71291-5"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g4953"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer12"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#844cc8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 9.8972757,2.3502185 C 9.4420058,1.8949492 8.7220627,1.88186 8.2830522,2.3208699 L 
4.3208683,6.2830549 C 3.8818592,6.7220639 3.8949481,7.4420074 4.3502207,7.8972767 L 10.102726,13.64978 c 
0.455271,0.455272 1.175214,0.468361 1.614224,0.02935 l 3.962182,-3.9621871 c 0.439009,-0.4390102 
0.42592,-1.1589534 -0.02935,-1.6142245 z"
+     id="rect4162-1-2-3" />
+  <path
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.05;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 9.070943,2.4375001 C 8.2310282,2.4374071 7.4825291,2.9674636 7.203756,3.7597657 L 
4.6842248,10.927734 c -0.4518437,1.287031 0.5031446,2.634604 1.8671874,2.634766 l 1.6308594,0 C 
8.973393,13.5611 9.687696,13.088765 9.998678,12.361328 c 0.31154,0.728741 1.027771,1.201361 1.820312,1.201172 
l 1.63086,0 c 1.364382,-10e-4 2.318537,-1.34984 1.865234,-2.636719 L 12.785787,3.7578126 C 12.506593,2.966957 
11.759243,2.4379432 10.920553,2.4375001 Z"
+     id="path4416-7" />
+  <path
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.15;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="m 9.0699647,3.3886721 c -0.4360754,4.186e-4 -0.8244044,0.276007 -0.9687495,0.6875 L 
5.5816839,11.244141 c -0.2337134,0.667686 0.2613417,1.366353 0.96875,1.367188 l 1.6308594,0 C 
8.6333571,12.611003 9.0321197,12.3153 9.1637147,11.882813 l 0.296876,-0.970703 1.0781243,0 0.296876,0.970703 
c 0.131595,0.432486 0.530357,0.72819 0.982421,0.728516 l 1.63086,0 c 0.708572,-3.63e-4 1.204194,-0.700829 
0.96875,-1.369141 L 11.888325,4.074219 C 11.74332,3.6634964 11.355143,3.3887986 10.919575,3.3886721 Z"
+     id="path4416" />
+  <path
+     
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="m 9.0703121,4.4160159 -2.5195308,7.1679691 1.6308594,0 0.5175782,-1.6992193 2.6015621,0 
0.517578,1.6992193 1.63086,0 -2.529297,-7.1679691 z m 0.9316409,1.109375 c 0.02604,0.1171876 
0.06836,0.2747396 0.126953,0.4765626 0.06185,0.2018229 0.332032,1.0735677 0.810547,2.6132812 l -1.8593749,0 C 
9.5878911,6.9713545 9.8945311,5.9420576 10.001953,5.5253909 Z"
+     id="text3368" />
+</svg>
diff --git a/web-assets/abstractproperty.svg b/web-assets/abstractproperty.svg
new file mode 100644
index 0000000..11245d8
--- /dev/null
+++ b/web-assets/abstractproperty.svg
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+  </defs>
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <path
+     id="rect3375"
+     d="M 10.130787,1 A 4.8692121,4.8692121 0 0 0 5.2615759,5.869212 4.8692121,4.8692121 0 0 0 
5.7846357,8.0636861 L 1.3576471,12.488298 c -0.47686282,0.476861 -0.47686282,1.246857 0,1.72372 l 
0.4303356,0.430334 c 0.4768629,0.476864 1.2468572,0.476864 1.72372,0 L 7.941069,10.210609 A 
4.8692121,4.8692121 0 0 0 10.130787,10.738424 4.8692121,4.8692121 0 0 0 15,5.869212 4.8692121,4.8692121 0 0 0 
14.474562,3.6794931 l -3.05039,3.0503901 c -0.476862,0.4768629 -1.246856,0.4768629 -1.7237202,0 L 
9.2701167,6.2995476 c -0.4768629,-0.4768628 -0.4768629,-1.2468571 0,-1.7237201 L 12.322884,1.5230599 A 
4.8692121,4.8692121 0 0 0 10.130787,1 Z"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path4416-7"
+     d="M 7.0890263,2.4375 C 6.2491115,2.437407 5.5006124,2.9674635 5.2218393,3.7597656 L 
2.7023081,10.927734 c -0.4518437,1.287031 0.5031446,2.634604 1.8671874,2.634766 l 1.6308594,0 c 
0.7911214,-0.0014 1.5054244,-0.473735 1.8164064,-1.201172 0.31154,0.728741 1.027771,1.201361 
1.820312,1.201172 l 1.6308597,0 c 1.364382,-10e-4 2.318537,-1.34984 1.865234,-2.636719 L 10.80387,3.7578125 C 
10.524676,2.9669569 9.7773263,2.4379431 8.9386363,2.4375 Z"
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.07000002;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path4416"
+     d="m 7.088048,3.388672 c -0.4360754,4.186e-4 -0.8244044,0.276007 -0.9687495,0.6875 l 
-2.5195313,7.167969 c -0.2337134,0.667686 0.2613417,1.366353 0.96875,1.367188 l 1.6308594,0 C 
6.6514404,12.611003 7.050203,12.3153 7.181798,11.882813 l 0.296876,-0.970703 1.0781243,0 0.296876,0.970703 c 
0.131595,0.432486 0.530357,0.72819 0.982421,0.728516 l 1.6308597,0 c 0.708572,-3.63e-4 1.204194,-0.700829 
0.96875,-1.369141 L 9.9064083,4.0742189 C 9.7614033,3.6634963 9.3732263,3.3887985 8.9376583,3.388672 Z"
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="text3368"
+     d="m 7.0883954,4.4160158 -2.5195308,7.1679692 1.6308594,0 0.5175782,-1.6992194 2.6015621,0 
0.517578,1.6992194 1.6308597,0 -2.5292967,-7.1679692 z m 0.9316409,1.109375 c 0.02604,0.1171876 
0.06836,0.2747396 0.126953,0.4765626 0.06185,0.2018229 0.332032,1.0735677 0.810547,2.6132812 l -1.8593749,0 C 
7.6059744,6.9713544 7.9126144,5.9420575 8.0200363,5.5253908 Z"
+     
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 />
+</svg>
diff --git a/web-assets/class.svg b/web-assets/class.svg
new file mode 100644
index 0000000..c39ba13
--- /dev/null
+++ b/web-assets/class.svg
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+  </defs>
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <rect
+     transform="matrix(0.70710678,0.70710678,0.70710678,-0.70710678,0,0)"
+     ry="0.87651831"
+     rx="0.87651831"
+     y="-4.1452508"
+     x="11.4111"
+     height="6.876286"
+     width="6.876286"
+     id="rect4164"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3585dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4164-8-7-9-8"
+     d="M 10 6.5 C 9.7759452 6.5 9.5525418 6.5861301 9.3808594 6.7578125 L 6.9140625 9.2226562 L 8.6035156 
10.912109 C 9.3869899 11.695584 10.648166 11.695584 11.431641 10.912109 L 13.101562 9.2421875 L 10.619141 
6.7578125 C 10.447458 6.5861301 10.224055 6.5 10 6.5 z "
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4164-8-7-0"
+     d="M 10 6.5 C 9.7759452 6.5 9.5525418 6.5861301 9.3808594 6.7578125 L 7.5195312 8.6210938 L 8.9570312 
10.058594 C 9.544637 10.646199 10.490519 10.646199 11.078125 10.058594 L 12.5 8.6386719 L 10.619141 6.7578125 
C 10.447458 6.5861301 10.224055 6.5 10 6.5 z "
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <rect
+     transform="matrix(0.70710678,0.70710678,0.70710678,-0.70710678,0,0)"
+     ry="0.87651831"
+     rx="0.87651831"
+     y="0.11011919"
+     x="7.1811862"
+     height="6.876286"
+     width="6.876286"
+     id="rect4164-0"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#844cc8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4164-8-7-9"
+     d="M 7.7421875 2.4140625 L 5.7753906 4.3808594 C 5.4320258 4.7242242 5.4320258 5.2757758 5.7753906 
5.6191406 L 8.1484375 7.9921875 L 5.7578125 10.380859 C 5.4144477 10.724224 5.4144477 11.275776 5.7578125 
11.619141 L 6.7324219 12.59375 L 10.912109 8.4140625 C 11.695584 7.6305882 11.695584 6.3694118 10.912109 
5.5859375 L 7.7421875 2.4140625 z "
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4164-8-7"
+     d="M 7.1367188 3.0195312 L 5.7753906 4.3808594 C 5.4320258 4.7242242 5.4320258 5.2757758 5.7753906 
5.6191406 L 8.1484375 7.9921875 L 5.7578125 10.380859 C 5.4144477 10.724224 5.4144477 11.275776 5.7578125 
11.619141 L 6.1289062 11.990234 L 10.058594 8.0605469 C 10.646199 7.4729411 10.646199 6.5270589 10.058594 
5.9394531 L 7.1367188 3.0195312 z "
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <rect
+     transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
+     ry="0.87651831"
+     rx="0.87651831"
+     y="5.0471387"
+     x="-4.8523564"
+     height="6.876286"
+     width="6.876286"
+     id="rect4164-8"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+</svg>
diff --git a/web-assets/coll_close.png b/web-assets/coll_close.png
new file mode 100644
index 0000000..948573a
Binary files /dev/null and b/web-assets/coll_close.png differ
diff --git a/web-assets/coll_close.svg b/web-assets/coll_close.svg
new file mode 100644
index 0000000..8ddd96b
--- /dev/null
+++ b/web-assets/coll_close.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   width="16"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-293.0006,-68)"
+     id="layer14" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-293.0006,-68)"
+     
style="display:inline;color:#bebebe;clip-rule:nonzero;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stroke:none;marker:none"
+     id="layer12">
+    <path
+       
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect31992"
+       d="m 296.0006,75 0,2 10,0 0,-2 z" />
+  </g>
+</svg>
diff --git a/web-assets/coll_open.png b/web-assets/coll_open.png
new file mode 100644
index 0000000..d2124a2
Binary files /dev/null and b/web-assets/coll_open.png differ
diff --git a/web-assets/coll_open.svg b/web-assets/coll_open.svg
new file mode 100644
index 0000000..1cf11ae
--- /dev/null
+++ b/web-assets/coll_open.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   width="16"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-293.0006,-68)"
+     id="layer14" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-293.0006,-68)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-293.0006,-68)"
+     
style="display:inline;color:#bebebe;clip-rule:nonzero;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stroke:none;marker:none"
+     id="layer12">
+    <path
+       
style="color:#bebebe;fill:#403757;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;clip-rule:nonzero;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill-rule:nonzero;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect31992"
+       d="m 300.0006,71 0,4 -4,0 0,2 4,0 0,4 2,0 0,-4 4,0 0,-2 -4,0 0,-4 -2,0 z" />
+  </g>
+</svg>
diff --git a/web-assets/constant.svg b/web-assets/constant.svg
new file mode 100644
index 0000000..43cd478
--- /dev/null
+++ b/web-assets/constant.svg
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   height="16"
+   id="svg7384"
+   version="1.1"
+   width="16.036167">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4169">
+      <stop
+         id="stop4171"
+         offset="0"
+         style="stop-color:#403757;stop-opacity:1;" />
+      <stop
+         id="stop4173"
+         offset="1"
+         style="stop-color:#403757;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(-1,-2)"
+       gradientUnits="userSpaceOnUse"
+       y2="7"
+       x2="0"
+       y1="5.7507787"
+       x1="2.3021808"
+       id="linearGradient4175"
+       xlink:href="#linearGradient4169" />
+    <linearGradient
+       osb:paint="solid"
+       id="linearGradient4526">
+      <stop
+         id="stop4528"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,-1,-1,19)"
+       gradientUnits="userSpaceOnUse"
+       y2="7"
+       x2="0"
+       y1="5.7507787"
+       x1="2.3021808"
+       id="linearGradient4175-1"
+       xlink:href="#linearGradient4169" />
+  </defs>
+  <path
+     id="rect4194-8-1"
+     d="m 0,9 0,1 9,0 0,-1 z m 0,2 0,1 9,0 0,-1 z"
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4175);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <g
+     id="layer9"
+     label="status"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer10"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer13"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer14"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer15"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="g71291"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer9-2-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-0-6"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer11-5"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer14-7-9"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer15-5-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g71291-8-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g4953-5"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer12-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-2"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer11"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer13-0"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer14-3"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer15-1"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g71291-5"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g4953"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer12"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <path
+     id="rect4194-8-1-4"
+     d="M 0,8 0,7 9,7 9,8 Z M 0,6 0,5 9,5 9,6 Z"
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4175-1);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <rect
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0"
+     id="rect4164"
+     width="8.4043493"
+     height="8.4043493"
+     x="-2.7879624"
+     y="8.5257492"
+     rx="1.0713001"
+     ry="1.0713001"
+     transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" />
+</svg>
diff --git a/web-assets/constructor.svg b/web-assets/constructor.svg
new file mode 100644
index 0000000..2f6caeb
--- /dev/null
+++ b/web-assets/constructor.svg
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   height="16"
+   id="svg7384"
+   version="1.1"
+   width="16.036167">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4169">
+      <stop
+         id="stop4171"
+         offset="0"
+         style="stop-color:#403757;stop-opacity:1;" />
+      <stop
+         id="stop4173"
+         offset="1"
+         style="stop-color:#403757;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0,-2)"
+       gradientUnits="userSpaceOnUse"
+       y2="7"
+       x2="0"
+       y1="5.7507787"
+       x1="2.3021808"
+       id="linearGradient4175"
+       xlink:href="#linearGradient4169" />
+    <linearGradient
+       osb:paint="solid"
+       id="linearGradient4526">
+      <stop
+         id="stop4528"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#linearGradient2378"
+       id="radialGradient5583"
+       fy="9.3411446"
+       fx="38.658855"
+       r="8.341651"
+       cy="9.3411446"
+       cx="38.658855" />
+    <linearGradient
+       id="linearGradient2378">
+      <stop
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1"
+         id="stop2380" />
+      <stop
+         offset="0.25"
+         style="stop-color:#fefede;stop-opacity:0.91836733"
+         id="stop4146" />
+      <stop
+         offset="0.5"
+         style="stop-color:#f5f328;stop-opacity:1"
+         id="stop2386" />
+      <stop
+         offset="1"
+         style="stop-color:#f5f32d;stop-opacity:0.12234043"
+         id="stop10317" />
+    </linearGradient>
+  </defs>
+  <path
+     id="rect4194-8-1"
+     d="m 0,5 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z"
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4175);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <g
+     id="layer9"
+     label="status"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer10"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer13"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer14"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer15"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="g71291"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer9-2-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-0-6"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer11-5"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer14-7-9"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer15-5-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g71291-8-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g4953-5"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer12-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-2"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer11"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer13-0"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer14-3"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer15-1"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g71291-5"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g4953"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer12"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#844cc8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 9.8972757,2.3502185 C 9.4420058,1.8949492 8.7220627,1.88186 8.2830522,2.3208699 L 
4.3208683,6.2830549 C 3.8818592,6.7220639 3.8949481,7.4420074 4.3502207,7.8972767 L 10.102726,13.64978 c 
0.455271,0.455272 1.175214,0.468361 1.614224,0.02935 l 3.962182,-3.9621871 c 0.439009,-0.4390102 
0.42592,-1.1589534 -0.02935,-1.6142245 z"
+     id="rect4162-1-2-3" />
+  <g
+     id="g11289"
+     transform="matrix(0.96540943,0,0,0.96540943,-15.652057,-407.20813)">
+    <g
+       id="g11291"
+       transform="translate(1,-2)">
+      <path
+         style="fill:url(#radialGradient5583);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path11293"
+         transform="matrix(0.6381964,0,0,0.6527009,1.8280575,423.27802)"
+         d="m 47.000506,9.3411446 a 8.341651,8.341651 0 1 1 -16.683302,0 8.341651,8.341651 0 1 1 16.683302,0 
z" />
+      <path
+         
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#edd400;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;marker:none"
+         id="path11295"
+         transform="matrix(0.3735602,0.1529503,-0.1660098,0.3441734,14.555208,419.81907)"
+         d="m 33.71875,0.03125 c -0.46837,-0.02427825 -1.008512,0.01404767 -1.5625,0.25 -1.129977,0.48127465 
-1.700725,1.4483493 -1.9375,2.0625 -0.236775,0.6141507 -0.281018,1.0549602 -0.3125,1.46875 -0.06296,0.8275796 
0.01008,1.5217193 0.0625,2.1875 0.03304,0.4196326 0.06923,0.7273675 0.09375,1.0625 -0.319841,0.1605167 
-0.619458,0.3286599 -1.03125,0.53125 -0.610226,0.3002144 -1.253218,0.6168944 -1.9375,1.09375 
-0.342141,0.2384278 -0.720058,0.4999648 -1.125,1 -0.404942,0.500035 -0.919606,1.417742 -0.8125,2.625 
0.108676,1.224957 0.83472,2.054022 1.34375,2.46875 0.50903,0.414728 0.929157,0.59112 1.3125,0.75 
0.766686,0.31776 1.443306,0.466599 2.09375,0.625 0.423819,0.103212 0.72877,0.16643 1.0625,0.25 
0.05591,0.355577 0.119142,0.696752 0.1875,1.15625 0.09984,0.671109 0.191872,1.391649 0.4375,2.1875 
0.122814,0.397926 0.273261,0.807176 0.625,1.34375 0.351739,0.536574 1.042902,1.323794 2.21875,1.59375 
1.189482,0.273085 2.196543,-0.144295 2.75,-0.5 0.553457,-0.355705 0.855882,-0.71
 6081 1.125,-1.03125 0.538236,-0.630338 0.901965,-1.215335 1.25,-1.78125 0.224135,-0.36445 0.38361,-0.619366 
0.5625,-0.90625 0.357545,0.05568 0.696337,0.112092 1.15625,0.1875 0.671715,0.110135 1.385879,0.209184 
2.21875,0.21875 0.416435,0.0048 0.85184,0.01304 1.46875,-0.15625 0.61691,-0.169294 1.597608,-0.588383 
2.21875,-1.625 0.629824,-1.051107 0.511312,-2.177123 0.34375,-2.8125 -0.167562,-0.635377 -0.377164,-1.02135 
-0.59375,-1.375 -0.433171,-0.7073 -0.91187,-1.241553 -1.34375,-1.75 -0.276147,-0.325105 -0.469802,-0.553142 
-0.6875,-0.8125 0.161407,-0.316481 0.320983,-0.6265922 0.53125,-1.03125 0.311591,-0.5996545 
0.63911,-1.2121538 0.90625,-2 C 46.47732,6.9185769 46.595828,6.484287 46.625,5.84375 46.654172,5.203213 
46.538668,4.1550279 45.75,3.25 44.950066,2.3320462 43.904222,2.1026594 43.25,2.0625 c -0.654222,-0.040159 
-1.096889,0.03051 -1.5,0.125 -0.806222,0.1889801 -1.478143,0.4689271 -2.09375,0.71875 -0.40176,0.1630405 
-0.683141,0.2800004 -1,0.40625 C 38.401264,3.0584702 3
 8.169883,2.830184 37.84375,2.5 37.367094,2.0174234 36.855154,1.4970295 36.1875,1 35.853673,0.75148523 
35.505496,0.47536814 34.90625,0.25 34.606627,0.13731593 34.18712,0.05552825 33.71875,0.03125 Z" />
+      <path
+         
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;marker:none"
+         id="path11297"
+         transform="matrix(0.3831859,0.1529503,-0.1702874,0.3441734,14.241265,419.81907)"
+         d="m 44.503206,15.464878 c -1.191831,1.966747 -3.665135,-0.99033 -5.763376,-0.04909 
-2.024585,0.908204 -1.431674,4.753003 -3.591868,4.245718 -2.238783,-0.52574 -0.190729,-3.79178 
-1.734298,-5.496465 -1.489383,-1.644844 -4.962785,0.107157 -5.147865,-2.10407 -0.191814,-2.2916723 
3.547258,-1.353118 4.691521,-3.3479161 1.104095,-1.9247728 -1.635497,-4.6867762 0.410312,-5.5461045 
2.120236,-0.8905915 2.383055,2.9555064 4.633817,3.4273387 2.171752,0.4552692 3.951993,-3.0037432 
5.401452,-1.3236111 1.502192,1.7412568 -2.074449,3.1797221 -1.827664,5.466128 0.238121,2.206145 
4.077962,2.830361 2.927969,4.728068 z" />
+    </g>
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect11299"
+       y="424"
+       x="27"
+       height="1"
+       width="1" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect11301"
+       y="426"
+       x="24"
+       height="1"
+       width="1" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect11303"
+       y="426"
+       x="30"
+       height="1"
+       width="1" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect11305"
+       y="429"
+       x="29"
+       height="1"
+       width="1" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect11307"
+       y="429"
+       x="25"
+       height="1"
+       width="1" />
+  </g>
+</svg>
diff --git a/web-assets/delegate.svg b/web-assets/delegate.svg
new file mode 100644
index 0000000..d45e57c
--- /dev/null
+++ b/web-assets/delegate.svg
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+  </defs>
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <path
+     id="rect8278"
+     d="M 6 3 C 5.446 3 5 3.446 5 4 L 5 5 L 2.7929688 5 C 2.353664 5 2 5.3536642 2 5.7929688 L 4.2070312 8 L 
6 8 L 7 8 L 7 7 L 9 7 L 9 8 L 10 8 L 11.792969 8 L 14 5.7929688 C 14 5.3536642 13.646336 5 13.207031 5 L 11 5 
L 11 4 C 11 3.446 10.554 3 10 3 L 6 3 z M 6.5 4 L 9.5 4 C 9.777 4 10 4.223 10 4.5 L 10 5 L 6 5 L 6 4.5 C 6 
4.223 6.223 4 6.5 4 z M 2 7.2070312 L 2 13.207031 C 2 13.646336 2.3536642 14 2.7929688 14 L 13.207031 14 C 
13.646336 14 14 13.646336 14 13.207031 L 14 7.2070312 L 12.207031 9 L 9 9 L 9 10 L 7 10 L 7 9 L 3.7929688 9 L 
2 7.2070312 z "
+     
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#814cc8;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+</svg>
diff --git a/web-assets/enum.svg b/web-assets/enum.svg
new file mode 100644
index 0000000..0cd3c62
--- /dev/null
+++ b/web-assets/enum.svg
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   height="16"
+   id="svg7384"
+   version="1.1"
+   width="16.036167">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 3.5555556,0 C 2.6937778,0 2,0.7008571 2,1.5714286 L 2,9.428572 C 2,10.299143 2.6937778,11 
3.5555556,11 L 14.444444,11 C 15.306223,11 16,10.299143 16,9.428572 L 16,1.5714286 C 16,0.7008571 15.306223,0 
14.444444,0 Z"
+     id="rect4162-1-2-3-8-7" />
+  <g
+     id="layer9-5-3"
+     label="status"
+     style="display:inline"
+     transform="translate(-432.01847,10)" />
+  <g
+     id="layer10-5-2"
+     style="display:inline"
+     transform="translate(-432.01847,10)" />
+  <g
+     id="layer13-9-9"
+     style="display:inline"
+     transform="translate(-432.01847,10)" />
+  <g
+     id="layer14-5-5"
+     transform="translate(-432.01847,10)" />
+  <g
+     id="layer15-5-8"
+     style="display:inline"
+     transform="translate(-432.01847,10)" />
+  <g
+     id="g71291-6-4"
+     style="display:inline"
+     transform="translate(-432.01847,10)" />
+  <g
+     id="layer9-2-2-5-0"
+     style="display:inline"
+     transform="translate(-700.78173,601.60207)" />
+  <g
+     id="layer10-0-6-1-9"
+     style="display:inline"
+     transform="translate(-700.78173,601.60207)" />
+  <g
+     id="layer11-5-5-1"
+     transform="translate(-700.78173,601.60207)" />
+  <g
+     id="layer14-7-9-0-7"
+     transform="translate(-700.78173,601.60207)" />
+  <g
+     id="layer15-5-2-6-7"
+     style="display:inline"
+     transform="translate(-700.78173,601.60207)" />
+  <g
+     id="g71291-8-4-6-6"
+     style="display:inline"
+     transform="translate(-700.78173,601.60207)" />
+  <g
+     id="g4953-5-5-9"
+     style="display:inline"
+     transform="translate(-700.78173,601.60207)" />
+  <g
+     id="layer12-4-2-3"
+     style="display:inline"
+     transform="translate(-700.78173,601.60207)" />
+  <g
+     id="layer10-2-9-7"
+     style="display:inline"
+     transform="translate(-287.04652,404.39676)" />
+  <g
+     id="layer11-2-5"
+     transform="translate(-287.04652,404.39676)" />
+  <g
+     id="layer13-0-1-1"
+     style="display:inline"
+     transform="translate(-287.04652,404.39676)" />
+  <g
+     id="layer14-3-5-4"
+     transform="translate(-287.04652,404.39676)" />
+  <g
+     id="layer15-1-4-7"
+     style="display:inline"
+     transform="translate(-287.04652,404.39676)" />
+  <g
+     id="g71291-5-9-2"
+     style="display:inline"
+     transform="translate(-287.04652,404.39676)" />
+  <g
+     id="g4953-51-8"
+     style="display:inline"
+     transform="translate(-287.04652,404.39676)" />
+  <g
+     id="layer12-8-0"
+     style="display:inline"
+     transform="translate(-287.04652,404.39676)" />
+  <path
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="m 4.9819164,3 0,1 7.9999996,0 0,-1 -7.9999996,0 z m 0,2 0,1 7.9999996,0 0,-1 -7.9999996,0 z m 0,2 
0,1 7.9999996,0 0,-1 -7.9999996,0 z"
+     id="rect4194-8-1-7-2" />
+  <g
+     id="layer9"
+     label="status"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer10"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer13"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer14"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer15"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="g71291"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer9-2-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-0-6"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer11-5"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer14-7-9"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer15-5-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g71291-8-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g4953-5"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer12-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-2"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer11"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer13-0"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer14-3"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer15-1"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g71291-5"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g4953"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer12"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer9-5"
+     label="status"
+     style="display:inline"
+     transform="translate(-434.01847,15)" />
+  <g
+     id="layer10-5"
+     style="display:inline"
+     transform="translate(-434.01847,15)" />
+  <g
+     id="layer13-9"
+     style="display:inline"
+     transform="translate(-434.01847,15)" />
+  <g
+     id="layer14-5"
+     transform="translate(-434.01847,15)" />
+  <g
+     id="layer15-5"
+     style="display:inline"
+     transform="translate(-434.01847,15)" />
+  <g
+     id="g71291-6"
+     style="display:inline"
+     transform="translate(-434.01847,15)" />
+  <g
+     id="layer9-2-2-5"
+     style="display:inline"
+     transform="translate(-702.78173,606.60207)" />
+  <g
+     id="layer10-0-6-1"
+     style="display:inline"
+     transform="translate(-702.78173,606.60207)" />
+  <g
+     id="layer11-5-5"
+     transform="translate(-702.78173,606.60207)" />
+  <g
+     id="layer14-7-9-0"
+     transform="translate(-702.78173,606.60207)" />
+  <g
+     id="layer15-5-2-6"
+     style="display:inline"
+     transform="translate(-702.78173,606.60207)" />
+  <g
+     id="g71291-8-4-6"
+     style="display:inline"
+     transform="translate(-702.78173,606.60207)" />
+  <g
+     id="g4953-5-5"
+     style="display:inline"
+     transform="translate(-702.78173,606.60207)" />
+  <g
+     id="layer12-4-2"
+     style="display:inline"
+     transform="translate(-702.78173,606.60207)" />
+  <g
+     id="layer10-2-9"
+     style="display:inline"
+     transform="translate(-289.04652,409.39676)" />
+  <g
+     id="layer11-2"
+     transform="translate(-289.04652,409.39676)" />
+  <g
+     id="layer13-0-1"
+     style="display:inline"
+     transform="translate(-289.04652,409.39676)" />
+  <g
+     id="layer14-3-5"
+     transform="translate(-289.04652,409.39676)" />
+  <g
+     id="layer15-1-4"
+     style="display:inline"
+     transform="translate(-289.04652,409.39676)" />
+  <g
+     id="g71291-5-9"
+     style="display:inline"
+     transform="translate(-289.04652,409.39676)" />
+  <g
+     id="g4953-51"
+     style="display:inline"
+     transform="translate(-289.04652,409.39676)" />
+  <g
+     id="layer12-8"
+     style="display:inline"
+     transform="translate(-289.04652,409.39676)" />
+  <path
+     id="rect4489"
+     d="M 2 4 L 2 9.4277344 C 2 10.298305 2.6929097 11 3.5546875 11 L 14.445312 11 C 14.642115 11 14.826982 
10.959355 15 10.892578 L 15 6.4492188 C 15 5.092504 13.992586 4 12.740234 4 L 2 4 z "
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#800000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4564"
+     d="M 2 3 L 2 9.4277344 C 2 10.298305 2.6929097 11 3.5546875 11 L 14.445312 11 C 15.307091 11 16 
10.298305 16 9.4277344 L 16 6 C 16 4.338 14.662 3 13 3 L 2 3 z "
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.05;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#800000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 1.5555556,5 C 0.6937778,5 0,5.7008571 0,6.5714286 L 0,14.428572 C 0,15.299143 0.6937778,16 
1.5555556,16 L 12.444444,16 C 13.306223,16 14,15.299143 14,14.428572 L 14,6.5714286 C 14,5.7008571 
13.306223,5 12.444444,5 Z"
+     id="rect4162-1-2-3-8" />
+  <path
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="m 2.9819164,8 0,1 7.9999996,0 0,-1 -7.9999996,0 z m 0,2 0,1 7.9999996,0 0,-1 -7.9999996,0 z m 0,2 
0,1 7.9999996,0 0,-1 -7.9999996,0 z"
+     id="rect4194-8-1-7" />
+</svg>
diff --git a/web-assets/enumvalue.svg b/web-assets/enumvalue.svg
new file mode 100644
index 0000000..984d346
--- /dev/null
+++ b/web-assets/enumvalue.svg
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <path
+     id="rect4162-1-2-3"
+     d="M 2.5736392,2 C 1.7118614,2 1.0180836,2.7008571 1.0180836,3.5714286 l 0,7.8571434 C 
1.0180836,12.299143 1.7118614,13 2.5736392,13 l 10.8888888,0 c 0.861779,0 1.555556,-0.700857 
1.555556,-1.571428 l 0,-7.8571434 C 15.018084,2.7008571 14.324307,2 13.462528,2 Z"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4194-8-1"
+     d="m 4,5 0,1 8,0 0,-1 -8,0 z m 0,2 0,1 8,0 0,-1 -8,0 z m 0,2 0,1 8,0 0,-1 -8,0 z"
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+</svg>
diff --git a/web-assets/errorcode.svg b/web-assets/errorcode.svg
new file mode 100644
index 0000000..fb1d873
--- /dev/null
+++ b/web-assets/errorcode.svg
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   height="16"
+   id="svg7384"
+   version="1.1"
+   width="16.036167">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <g
+     id="layer9"
+     label="status"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer10"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer13"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer14"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer15"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="g71291"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer9-2-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-0-6"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer11-5"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer14-7-9"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer15-5-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g71291-8-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g4953-5"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer12-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-2"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer11"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer13-0"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer14-3"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer15-1"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g71291-5"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g4953"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer12"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 2.5736392,2 C 1.7118614,2 1.0180836,2.7008571 1.0180836,3.5714286 l 0,7.8571434 C 
1.0180836,12.299143 1.7118614,13 2.5736392,13 l 10.8888888,0 c 0.861779,0 1.555556,-0.700857 
1.555556,-1.571428 l 0,-7.8571434 C 15.018084,2.7008571 14.324307,2 13.462528,2 Z"
+     id="rect4162-1-2-3" />
+  <path
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="m 4,5 0,1 8,0 0,-1 -8,0 z m 0,2 0,1 8,0 0,-1 -8,0 z m 0,2 0,1 8,0 0,-1 -8,0 z"
+     id="rect4194-8-1" />
+  <path
+     id="path3482-5-7-8"
+     d="M 12.5 7 C 9.462444 7 7 9.4624441 7 12.5 C 7 12.668742 7.010516 12.835131 7.0253906 13 L 13.462891 
13 C 14.32467 13 15.017578 12.298305 15.017578 11.427734 L 15.017578 7.6132812 C 14.262633 7.223445 13.408225 
7 12.5 7 z "
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.05;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#800000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path3482-5-7"
+     d="M 12.5 8 C 10.014727 8 8 10.014727 8 12.5 C 8 12.671403 8.0321217 12.83358 8.0507812 13 L 13.462891 
13 C 14.32467 13 15.017578 12.298305 15.017578 11.427734 L 15.017578 8.7695312 C 14.298925 8.2833774 
13.432966 8 12.5 8 z "
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#800000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#ef2929;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.90939796;marker:none;enable-background:accumulate"
+     id="path3482-5"
+     d="m 12.50002,8.9965178 c -1.93299,0 -3.5,1.5670102 -3.5,3.5000002 0,1.93299 1.56701,3.5 3.5,3.5 
1.93299,0 3.5,-1.56701 3.5,-3.5 0,-1.93299 -1.56701,-3.5000002 -3.5,-3.5000002 z"
+     class="error" />
+  <path
+     
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.90939796;marker:none;enable-background:accumulate"
+     id="path3482-5-0"
+     d="m 10.00002,11.965268 5,0 0,1.03125 -5,0 z"
+     class="error" />
+</svg>
diff --git a/web-assets/errordomain.svg b/web-assets/errordomain.svg
new file mode 100644
index 0000000..e1bc113
--- /dev/null
+++ b/web-assets/errordomain.svg
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <path
+     id="rect4162-1-2-3-8-7"
+     d="M 3.5555556,0 C 2.6937778,0 2,0.7008571 2,1.5714286 L 2,9.428572 C 2,10.299143 2.6937778,11 
3.5555556,11 L 14.444444,11 C 15.306223,11 16,10.299143 16,9.428572 L 16,1.5714286 C 16,0.7008571 15.306223,0 
14.444444,0 Z"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <g
+     transform="translate(-432.01847,10)"
+     style="display:inline"
+     label="status"
+     id="layer9-5-3" />
+  <g
+     transform="translate(-432.01847,10)"
+     style="display:inline"
+     id="layer10-5-2" />
+  <g
+     transform="translate(-432.01847,10)"
+     style="display:inline"
+     id="layer13-9-9" />
+  <g
+     transform="translate(-432.01847,10)"
+     id="layer14-5-5" />
+  <g
+     transform="translate(-432.01847,10)"
+     style="display:inline"
+     id="layer15-5-8" />
+  <g
+     transform="translate(-432.01847,10)"
+     style="display:inline"
+     id="g71291-6-4" />
+  <g
+     transform="translate(-700.78173,601.60207)"
+     style="display:inline"
+     id="layer9-2-2-5-0" />
+  <g
+     transform="translate(-700.78173,601.60207)"
+     style="display:inline"
+     id="layer10-0-6-1-9" />
+  <g
+     transform="translate(-700.78173,601.60207)"
+     id="layer11-5-5-1" />
+  <g
+     transform="translate(-700.78173,601.60207)"
+     id="layer14-7-9-0-7" />
+  <g
+     transform="translate(-700.78173,601.60207)"
+     style="display:inline"
+     id="layer15-5-2-6-7" />
+  <g
+     transform="translate(-700.78173,601.60207)"
+     style="display:inline"
+     id="g71291-8-4-6-6" />
+  <g
+     transform="translate(-700.78173,601.60207)"
+     style="display:inline"
+     id="g4953-5-5-9" />
+  <g
+     transform="translate(-700.78173,601.60207)"
+     style="display:inline"
+     id="layer12-4-2-3" />
+  <g
+     transform="translate(-287.04652,404.39676)"
+     style="display:inline"
+     id="layer10-2-9-7" />
+  <g
+     transform="translate(-287.04652,404.39676)"
+     id="layer11-2-5" />
+  <g
+     transform="translate(-287.04652,404.39676)"
+     style="display:inline"
+     id="layer13-0-1-1" />
+  <g
+     transform="translate(-287.04652,404.39676)"
+     id="layer14-3-5-4" />
+  <g
+     transform="translate(-287.04652,404.39676)"
+     style="display:inline"
+     id="layer15-1-4-7" />
+  <g
+     transform="translate(-287.04652,404.39676)"
+     style="display:inline"
+     id="g71291-5-9-2" />
+  <g
+     transform="translate(-287.04652,404.39676)"
+     style="display:inline"
+     id="g4953-51-8" />
+  <g
+     transform="translate(-287.04652,404.39676)"
+     style="display:inline"
+     id="layer12-8-0" />
+  <path
+     id="rect4194-8-1-7-2"
+     d="m 4.9819164,3 0,1 7.9999996,0 0,-1 -7.9999996,0 z m 0,2 0,1 7.9999996,0 0,-1 -7.9999996,0 z m 0,2 
0,1 7.9999996,0 0,-1 -7.9999996,0 z"
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <g
+     transform="translate(-434.01847,15)"
+     style="display:inline"
+     label="status"
+     id="layer9-5" />
+  <g
+     transform="translate(-434.01847,15)"
+     style="display:inline"
+     id="layer10-5" />
+  <g
+     transform="translate(-434.01847,15)"
+     style="display:inline"
+     id="layer13-9" />
+  <g
+     transform="translate(-434.01847,15)"
+     id="layer14-5" />
+  <g
+     transform="translate(-434.01847,15)"
+     style="display:inline"
+     id="layer15-5" />
+  <g
+     transform="translate(-434.01847,15)"
+     style="display:inline"
+     id="g71291-6" />
+  <g
+     transform="translate(-702.78173,606.60207)"
+     style="display:inline"
+     id="layer9-2-2-5" />
+  <g
+     transform="translate(-702.78173,606.60207)"
+     style="display:inline"
+     id="layer10-0-6-1" />
+  <g
+     transform="translate(-702.78173,606.60207)"
+     id="layer11-5-5" />
+  <g
+     transform="translate(-702.78173,606.60207)"
+     id="layer14-7-9-0" />
+  <g
+     transform="translate(-702.78173,606.60207)"
+     style="display:inline"
+     id="layer15-5-2-6" />
+  <g
+     transform="translate(-702.78173,606.60207)"
+     style="display:inline"
+     id="g71291-8-4-6" />
+  <g
+     transform="translate(-702.78173,606.60207)"
+     style="display:inline"
+     id="g4953-5-5" />
+  <g
+     transform="translate(-702.78173,606.60207)"
+     style="display:inline"
+     id="layer12-4-2" />
+  <g
+     transform="translate(-289.04652,409.39676)"
+     style="display:inline"
+     id="layer10-2-9" />
+  <g
+     transform="translate(-289.04652,409.39676)"
+     id="layer11-2" />
+  <g
+     transform="translate(-289.04652,409.39676)"
+     style="display:inline"
+     id="layer13-0-1" />
+  <g
+     transform="translate(-289.04652,409.39676)"
+     id="layer14-3-5" />
+  <g
+     transform="translate(-289.04652,409.39676)"
+     style="display:inline"
+     id="layer15-1-4" />
+  <g
+     transform="translate(-289.04652,409.39676)"
+     style="display:inline"
+     id="g71291-5-9" />
+  <g
+     transform="translate(-289.04652,409.39676)"
+     style="display:inline"
+     id="g4953-51" />
+  <g
+     transform="translate(-289.04652,409.39676)"
+     style="display:inline"
+     id="layer12-8" />
+  <path
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#800000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 2 4 L 2 9.4277344 C 2 10.298305 2.6929097 11 3.5546875 11 L 14.445312 11 C 14.642115 11 14.826982 
10.959355 15 10.892578 L 15 6.4492188 C 15 5.092504 13.992586 4 12.740234 4 L 2 4 z "
+     id="rect4489" />
+  <path
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.05;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#800000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 2 3 L 2 9.4277344 C 2 10.298305 2.6929097 11 3.5546875 11 L 14.445312 11 C 15.307091 11 16 
10.298305 16 9.4277344 L 16 6 C 16 4.338 14.662 3 13 3 L 2 3 z "
+     id="rect4564" />
+  <path
+     id="rect4162-1-2-3-8"
+     d="M 1.5555556,5 C 0.6937778,5 0,5.7008571 0,6.5714286 L 0,14.428572 C 0,15.299143 0.6937778,16 
1.5555556,16 L 12.444444,16 C 13.306223,16 14,15.299143 14,14.428572 L 14,6.5714286 C 14,5.7008571 
13.306223,5 12.444444,5 Z"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="rect4194-8-1-7"
+     d="m 2.9819164,8 0,1 7.9999996,0 0,-1 -7.9999996,0 z m 0,2 0,1 7.9999996,0 0,-1 -7.9999996,0 z m 0,2 
0,1 7.9999996,0 0,-1 -7.9999996,0 z"
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path3482-5-7-8"
+     d="M 12.5 7 C 9.462444 7 7 9.4624441 7 12.5 C 7 13.829923 7.4721504 15.048966 8.2578125 16 L 12.445312 
16 C 13.307092 16 14 15.298305 14 14.427734 L 14 11 L 14.445312 11 C 15.307092 11 16 10.298305 16 9.4277344 L 
16 8.2578125 C 15.048966 7.4721503 13.829923 7 12.5 7 z "
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.05;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#800000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0"
 />
+  <path
+     id="path3482-5-7"
+     d="M 12.5 8 C 10.014727 8 8 10.014727 8 12.5 C 8 13.922146 8.6730346 15.175351 9.703125 16 L 12.445312 
16 C 13.307092 16 14 15.298305 14 14.427734 L 14 11 L 14.445312 11 C 15.223845 11 15.860044 10.426337 
15.976562 9.6738281 C 15.151429 8.6604873 13.908662 8 12.5 8 z "
+     
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#800000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate;clip-rule:nonzero;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
 />
+  <path
+     
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#ef2929;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.90939796;marker:none;enable-background:accumulate"
+     id="path3482-5"
+     d="m 12.50002,8.9965178 c -1.93299,0 -3.5,1.5670102 -3.5,3.5000002 0,1.93299 1.56701,3.5 3.5,3.5 
1.93299,0 3.5,-1.56701 3.5,-3.5 0,-1.93299 -1.56701,-3.5000002 -3.5,-3.5000002 z"
+     class="error" />
+  <path
+     
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.90939796;marker:none;enable-background:accumulate"
+     id="path3482-5-0"
+     d="m 10.00002,11.965268 5,0 0,1.03125 -5,0 z"
+     class="error" />
+</svg>
diff --git a/web-assets/field.svg b/web-assets/field.svg
new file mode 100644
index 0000000..b071a4a
--- /dev/null
+++ b/web-assets/field.svg
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4169">
+      <stop
+         style="stop-color:#403757;stop-opacity:1;"
+         offset="0"
+         id="stop4171" />
+      <stop
+         style="stop-color:#403757;stop-opacity:0;"
+         offset="1"
+         id="stop4173" />
+    </linearGradient>
+    <linearGradient
+       xlink:href="#linearGradient4169"
+       id="linearGradient4175"
+       x1="2.3021808"
+       y1="5.7507787"
+       x2="0"
+       y2="7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-1,-2)" />
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+    <linearGradient
+       xlink:href="#linearGradient4169"
+       id="linearGradient4175-1"
+       x1="2.3021808"
+       y1="5.7507787"
+       x2="0"
+       y2="7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,-1,-1,19)" />
+  </defs>
+  <path
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4175);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="m 0,9 0,1 9,0 0,-1 z m 0,2 0,1 9,0 0,-1 z"
+     id="rect4194-8-1" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <path
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4175-1);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 0,8 0,7 9,7 9,8 Z M 0,6 0,5 9,5 9,6 Z"
+     id="rect4194-8-1-4" />
+  <rect
+     transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
+     ry="1.0713001"
+     rx="1.0713001"
+     y="8.5257492"
+     x="-2.7879624"
+     height="8.4043493"
+     width="8.4043493"
+     id="rect4164"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3585dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0"
 />
+</svg>
diff --git a/web-assets/interface.svg b/web-assets/interface.svg
new file mode 100644
index 0000000..58fc2fe
--- /dev/null
+++ b/web-assets/interface.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+  </defs>
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#3585dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 12.5,5 A 3.5,3.5 0 0 0 9.0390625,8 l -3.09375,0 A 2.5,2.5 0 0 0 3.5,6 2.5,2.5 0 0 0 1,8.5 2.5,2.5 
0 0 0 3.5,11 2.5,2.5 0 0 0 5.9492188,9 L 9.0410156,9 A 3.5,3.5 0 0 0 12.5,12 3.5,3.5 0 0 0 16,8.5 3.5,3.5 0 0 
0 12.5,5 Z m 0,2 A 1.5,1.5 0 0 1 14,8.5 1.5,1.5 0 0 1 12.5,10 1.5,1.5 0 0 1 11,8.5 1.5,1.5 0 0 1 12.5,7 Z"
+     id="path3369" />
+</svg>
diff --git a/web-assets/method.svg b/web-assets/method.svg
new file mode 100644
index 0000000..a310e37
--- /dev/null
+++ b/web-assets/method.svg
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   height="16"
+   id="svg7384"
+   version="1.1"
+   width="16.036167">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4169">
+      <stop
+         id="stop4171"
+         offset="0"
+         style="stop-color:#403757;stop-opacity:1;" />
+      <stop
+         id="stop4173"
+         offset="1"
+         style="stop-color:#403757;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0,-2)"
+       gradientUnits="userSpaceOnUse"
+       y2="7"
+       x2="0"
+       y1="5.7507787"
+       x1="2.3021808"
+       id="linearGradient4175"
+       xlink:href="#linearGradient4169" />
+    <linearGradient
+       osb:paint="solid"
+       id="linearGradient4526">
+      <stop
+         id="stop4528"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+  </defs>
+  <path
+     id="rect4194-8-1"
+     d="m 0,5 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z"
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4175);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <g
+     id="layer9"
+     label="status"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer10"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer13"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer14"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer15"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="g71291"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer9-2-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-0-6"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer11-5"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer14-7-9"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer15-5-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g71291-8-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g4953-5"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer12-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-2"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer11"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer13-0"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer14-3"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer15-1"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g71291-5"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g4953"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer12"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#844cc8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 9.8972757,2.3502185 C 9.4420058,1.8949492 8.7220627,1.88186 8.2830522,2.3208699 L 
4.3208683,6.2830549 C 3.8818592,6.7220639 3.8949481,7.4420074 4.3502207,7.8972767 L 10.102726,13.64978 c 
0.455271,0.455272 1.175214,0.468361 1.614224,0.02935 l 3.962182,-3.9621871 c 0.439009,-0.4390102 
0.42592,-1.1589534 -0.02935,-1.6142245 z"
+     id="rect4162-1-2-3" />
+</svg>
diff --git a/web-assets/namespace.svg b/web-assets/namespace.svg
new file mode 100644
index 0000000..282b5c3
--- /dev/null
+++ b/web-assets/namespace.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   width="16.036"
+   height="16"
+   id="svg2"
+   version="1.1">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <title
+     id="title4">elementary Symbolic Icon Theme</title>
+  <path
+     id="path8069"
+     d="m 5.500034,14.5 0,0 c -1.500034,0.03125 -2,-0.9375 -2,-2 l 0,-2.5 C 3.500034,9.15625 2.499966,8.5 
1,8.5 2.2202282,8.480454 3.510011,8.0690658 3.500034,7 l 0,-2.5 c -0.03125,-1.09375 0.499966,-2 2,-2"
+     
style="fill:none;fill-rule:evenodd;stroke:#403757;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
 />
+  <path
+     
style="fill:none;fill-rule:evenodd;stroke:#403757;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
+     d="m 10.491992,14.5 0,0 c 1.500034,0.03125 2,-0.9375 2,-2 l 0,-2.5 c 0,-0.84375 1.000068,-1.5 
2.500034,-1.5 C 13.771798,8.480454 12.482015,8.0690658 12.491992,7 l 0,-2.5 c 0.03125,-1.09375 -0.499966,-2 
-2,-2"
+     id="path8075" />
+</svg>
diff --git a/web-assets/package.svg b/web-assets/package.svg
new file mode 100644
index 0000000..4ec6ad1
--- /dev/null
+++ b/web-assets/package.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   height="16"
+   id="svg7384"
+   version="1.1"
+   width="16.036167">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <path
+     
style="fill:#d5bd93;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="M 1,4 8,0.42367601 15,4 15,6 8,9 1,6 Z"
+     id="path4220" />
+  <path
+     
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#b69f7b;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 8,7.75 15,4 15,11.713396 8,15.551402 7,13 Z"
+     id="path4224" />
+  <path
+     
style="fill:#ccb18c;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+     d="M 1,4 1,11.713396 8,15.501558 8,7.75 Z"
+     id="path4222" />
+</svg>
diff --git a/web-assets/packages.svg b/web-assets/packages.svg
new file mode 100644
index 0000000..f5d62dd
--- /dev/null
+++ b/web-assets/packages.svg
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   width="16"
+   version="1.1"
+   id="svg7384"
+   height="15.999979">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <g
+     transform="translate(-273.0002,-170.00001)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-273.0002,-170.00001)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-273.0002,-170.00001)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-273.0002,-170.00001)"
+     id="layer14" />
+  <g
+     transform="translate(-273.0002,-170.00001)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-273.0002,-170.00001)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-273.0002,-170.00001)"
+     
style="display:inline;color:#bebebe;clip-rule:nonzero;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     id="layer12">
+    <g
+       
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000065;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       transform="matrix(1,0,0,0.99999871,115.62018,-589.90211)"
+       id="g5388-4">
+      <title
+         id="title5390-0">go-home</title>
+      <g
+         transform="matrix(0.02603569,0,0,0.02603569,345.96663,902.07624)"
+         
style="fill:#403757;fill-opacity:1;color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:38.40883975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         id="g5392-9">
+        <g
+           
style="fill:#403757;fill-opacity:1;color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:38.40883975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+           id="g5394-5" />
+        <g
+           
style="fill:#403757;fill-opacity:1;color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:38.40883975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+           id="g5396-3" />
+      </g>
+      <g
+         
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.00000065;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+         transform="matrix(0,1,1,0,-360.61998,639.9031)"
+         id="g5398-3" />
+    </g>
+    <path
+       
style="fill:#403757;fill-opacity:1;stroke:none;color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill-rule:nonzero;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="path2998-6-8"
+       d="m 281.0002,170.99998 -7.75,7.75 1.5,1.5 1.25,-1.25 0,6 4,0 0,-3 c 0,-0.554 0.446,-1 1,-1 0.554,0 
1,0.446 1,1 l 0,3 4,0 0,-6 1.25,1.25 1.5,-1.5 -7.75,-7.75 z m 3,1 0,0.75 2,2 0,-2.75 -2,0 z" />
+  </g>
+</svg>
diff --git a/web-assets/property.svg b/web-assets/property.svg
new file mode 100644
index 0000000..724345d
--- /dev/null
+++ b/web-assets/property.svg
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+  </defs>
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <path
+     id="rect3375"
+     d="M 10.130787,1 A 4.8692121,4.8692121 0 0 0 5.2615759,5.869212 4.8692121,4.8692121 0 0 0 
5.7846357,8.0636861 L 1.3576471,12.488298 c -0.47686282,0.476861 -0.47686282,1.246857 0,1.72372 l 
0.4303356,0.430334 c 0.4768629,0.476864 1.2468572,0.476864 1.72372,0 L 7.941069,10.210609 A 
4.8692121,4.8692121 0 0 0 10.130787,10.738424 4.8692121,4.8692121 0 0 0 15,5.869212 4.8692121,4.8692121 0 0 0 
14.474562,3.6794931 l -3.05039,3.0503901 c -0.476862,0.4768629 -1.246856,0.4768629 -1.7237202,0 L 
9.2701167,6.2995476 c -0.4768629,-0.4768628 -0.4768629,-1.2468571 0,-1.7237201 L 12.322884,1.5230599 A 
4.8692121,4.8692121 0 0 0 10.130787,1 Z"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+</svg>
diff --git a/web-assets/scripts.js b/web-assets/scripts.js
new file mode 100644
index 0000000..02629ed
--- /dev/null
+++ b/web-assets/scripts.js
@@ -0,0 +1,49 @@
+/* markupwriter.vala
+ *
+ * Copyright (C) 2008-2009 Florian Brosch
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ *
+ * Author:
+ *     Florian Brosch <flo brosch gmail com>
+ */
+
+function get_path (path) {
+       var pos = path.lastIndexOf ('/');
+       if (pos < 0) {
+               return '';
+       }
+
+       return path.substring (pos, -1) + '/';
+}
+
+function toggle_box (self, id) {
+       var element = document.getElementById (id);
+       if (element == null) {
+               return ;
+       }
+
+       var style = self.currentStyle || window.getComputedStyle (self, false);
+       var orig_path = /url[ \t]*\(('(.*)'|"(.*)")\)/.exec (style.backgroundImage)[1].slice(1, -1);
+       var orig_dir = get_path (orig_path);
+       if (element.style.display == 'block') {
+               element.style.display = 'none';
+               self.style.backgroundImage = "url('" + orig_dir + 'coll_open.png' + "')";
+       } else {
+               element.style.display = 'block';
+               self.style.backgroundImage = "url('" + orig_dir + 'coll_close.png' + "')";
+       }
+}
+
diff --git a/web-assets/signal.svg b/web-assets/signal.svg
new file mode 100644
index 0000000..210ea33
--- /dev/null
+++ b/web-assets/signal.svg
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 6,1 13,1 9,7 13,7 4,15 7.0249221,8 3.4049844,8 Z"
+     id="path3371" />
+</svg>
diff --git a/web-assets/staticmethod.svg b/web-assets/staticmethod.svg
new file mode 100644
index 0000000..a251483
--- /dev/null
+++ b/web-assets/staticmethod.svg
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4169">
+      <stop
+         style="stop-color:#403757;stop-opacity:1;"
+         offset="0"
+         id="stop4171" />
+      <stop
+         style="stop-color:#403757;stop-opacity:0;"
+         offset="1"
+         id="stop4173" />
+    </linearGradient>
+    <linearGradient
+       xlink:href="#linearGradient4169"
+       id="linearGradient4175"
+       x1="2.3021808"
+       y1="5.7507787"
+       x2="0"
+       y2="7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-2)" />
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+  </defs>
+  <path
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4175);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="m 0,5 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z"
+     id="rect4194-8-1" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <path
+     id="rect4162-1-2-3"
+     d="M 9.8972757,2.3502185 C 9.4420058,1.8949492 8.7220627,1.88186 8.2830522,2.3208699 L 
4.3208683,6.2830549 C 3.8818592,6.7220639 3.8949481,7.4420074 4.3502207,7.8972767 L 10.102726,13.64978 c 
0.455271,0.455272 1.175214,0.468361 1.614224,0.02935 l 3.962182,-3.9621871 c 0.439009,-0.4390102 
0.42592,-1.1589534 -0.02935,-1.6142245 z"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#844cc8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path4498-6"
+     d="m 10.173828,2.3574219 c -1.071571,0 -2.1827418,0.2792021 -3.0468749,1.0058593 l -0.00586,0.00391 C 
6.2646005,4.0929182 5.7832031,5.2836856 5.7832031,6.3613281 c 0,0.5906928 0.1218548,1.2190433 
0.4179688,1.7890625 0.04136,0.079619 0.1194885,0.1322089 0.1660156,0.2089844 C 5.9445932,8.7331039 
5.7021731,9.2698406 5.7011719,9.8339844 l 0,1.4062496 c -4.84e-4,0.753768 0.4284986,1.441959 
1.1054687,1.773438 0.8890132,0.43463 1.8796239,0.628906 2.8886719,0.628906 1.1214215,0 2.2561795,-0.260471 
3.1660155,-0.990234 l 0.002,0 c 0.899353,-0.719475 1.435547,-1.946732 1.435547,-3.0625002 0,-0.8136255 
-0.251698,-1.6955305 -0.783203,-2.3828126 -0.02623,-0.034069 -0.06899,-0.035713 -0.0957,-0.068359 
0.08229,-0.1165009 0.151706,-0.2415808 0.207031,-0.3730469 L 14.115234,5.5898438 C 14.528162,4.5946982 
14.066508,3.4522999 13.078125,3.0234375 12.629143,2.8287466 12.181455,2.6715164 11.732422,2.5546875 
11.228806,2.4226719 10.704148,2.3574219 10.173828,2.3574219 Z"
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.05;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path4498"
+     d="m 10.173828,3.2734375 c -0.9247496,0 -1.7945205,0.2339045 -2.4570311,0.7910156 l -0.00391,0.00195 c 
-0.6569055,0.5566146 -1.013672,1.4243255 -1.0136718,2.2949219 0,0.4721609 0.095334,0.9453843 
0.3144531,1.3671875 0.1919534,0.3695103 0.4549134,0.6983474 0.7695312,0.9707032 0.0574,0.04969 
0.1461505,0.080833 0.2070313,0.1269531 C 7.30985,8.6134246 6.6181716,9.1211146 6.6171875,9.8339844 l 
0,1.4062496 c 7.33e-5,0.403382 0.2296319,0.771585 0.5917969,0.949219 0.7483583,0.365865 1.5920635,0.53711 
2.4863281,0.537109 0.9834015,0 1.8900355,-0.225363 2.5917965,-0.787109 0.699374,-0.557541 1.095703,-1.451597 
1.095703,-2.3496092 0,-0.6513437 -0.191017,-1.3061584 -0.589843,-1.8222657 -0.234305,-0.305212 
-0.636707,-0.4810909 -0.96875,-0.7011719 0.419849,-0.00755 0.795451,-0.2628055 0.957031,-0.6503906 L 
13.269531,5.2402344 C 13.491768,4.7062581 13.243776,4.0928041 12.712891,3.8632812 12.301426,3.6848588 
11.897939,3.5428705 11.5,3.4394531 l -0.002,0 C 11.073112,3.3282386 10.629591,3
 .2734375 10.173828,3.2734375 Z"
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.15;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="text3368"
+     d="m 10.173828,4.3300781 c -0.7552082,0 -1.3476561,0.1816407 -1.7773436,0.5429688 -0.4264323,0.3613281 
-0.640625,0.8567708 -0.640625,1.4882812 0,0.3352865 0.065104,0.6282552 0.1953125,0.8789063 0.1302083,0.250651 
0.3053385,0.4713541 0.5234375,0.6601562 0.2180989,0.1888021 0.5442708,0.3847656 0.9804687,0.5898438 
0.4654948,0.2213541 0.7740889,0.3834635 0.9238279,0.484375 0.152995,0.1009114 0.267578,0.2057291 
0.345703,0.3164062 0.07813,0.1074219 0.117188,0.2311198 0.117188,0.3710938 0,0.250651 -0.08854,0.4394526 
-0.267578,0.5664066 -0.175781,0.126953 -0.429688,0.191406 -0.761719,0.191406 -0.2766927,0 -0.5826823,-0.04492 
-0.9179688,-0.132813 C 8.5625,10.199219 8.155599,10.048828 7.6738281,9.8339844 l 0,1.4062496 c 
0.5859375,0.286459 1.2597657,0.429688 2.0214844,0.429688 0.8268225,0 1.4713545,-0.185547 1.9335935,-0.556641 
0.465495,-0.371093 0.697266,-0.878906 0.697266,-1.5234372 0,-0.4654948 -0.123698,-0.858724 
-0.371094,-1.1777344 C 11.707682,8.0898437 11.251302,7.7701823 1
 0.583984,7.4511719 10.079427,7.2102865 9.7578125,7.0442708 9.6210938,6.953125 9.4876302,6.858724 
9.389974,6.7617188 9.328125,6.6640625 9.266276,6.563151 9.2363281,6.4459635 9.2363281,6.3125 c 0,-0.2148438 
0.075521,-0.3880208 0.2285157,-0.5214844 C 9.6178385,5.6575521 9.8385417,5.5898438 10.125,5.5898438 c 
0.240885,-10e-8 0.485026,0.031901 0.732422,0.09375 0.250651,0.061849 0.566406,0.1699218 0.947266,0.3261718 L 
12.292969,4.8339844 C 11.92513,4.6744792 11.570964,4.5507812 11.232422,4.4628906 10.897135,4.375 
10.544922,4.3300781 10.173828,4.3300781 Z"
+     
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 />
+</svg>
diff --git a/web-assets/struct.svg b/web-assets/struct.svg
new file mode 100644
index 0000000..56a0e2d
--- /dev/null
+++ b/web-assets/struct.svg
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   height="16"
+   id="svg7384"
+   version="1.1"
+   width="16.036167">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       osb:paint="solid"
+       id="linearGradient4526">
+      <stop
+         id="stop4528"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+    </linearGradient>
+  </defs>
+  <g
+     id="layer9"
+     label="status"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer10"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer13"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer14"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer15"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="g71291"
+     style="display:inline"
+     transform="translate(-433.00039,12)" />
+  <g
+     id="layer9-2-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-0-6"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer11-5"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer14-7-9"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer15-5-2"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g71291-8-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="g4953-5"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer12-4"
+     style="display:inline"
+     transform="translate(-701.76365,603.60207)" />
+  <g
+     id="layer10-2"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer11"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer13-0"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer14-3"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer15-1"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g71291-5"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="g4953"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <g
+     id="layer12"
+     style="display:inline"
+     transform="translate(-288.02844,406.39676)" />
+  <rect
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;filter-blend-mode:normal;filter-gaussianBlur-deviation:0"
+     id="rect4164-5"
+     width="8"
+     height="8"
+     x="2"
+     y="2"
+     rx="1"
+     ry="1" />
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.05;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 6 4 C 4.892 4 4 4.892 4 6 L 4 10 L 9 10 C 9.554 10 10 9.554 10 9 L 10 4 L 6 4 z "
+     id="rect4164-4-9" />
+  <path
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="M 6.5 5 C 5.669 5 5 5.669 5 6.5 L 5 10 L 9 10 C 9.554 10 10 9.554 10 9 L 10 5 L 6.5 5 z "
+     id="rect4164-4" />
+  <rect
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     id="rect4164"
+     width="8"
+     height="8"
+     x="6"
+     y="6"
+     rx="1"
+     ry="1" />
+</svg>
diff --git a/web-assets/style.css b/web-assets/style.css
new file mode 100644
index 0000000..d2ce5f3
--- /dev/null
+++ b/web-assets/style.css
@@ -0,0 +1,631 @@
+* {
+       font-family: 'Times New Roman';
+       font-size: 12pt;
+}
+
+ul.external_link {
+}
+
+.main_optional_parameter {
+       font-style: italic;
+}
+
+.main_diagram {
+       border-style: none;
+       display: block;
+       margin: 0px auto;
+}
+
+.site_navi {
+       text-align: right;
+}
+
+.main_notification {
+       padding-right: 10px;
+       padding-left: 60px;
+       padding-bottom: 5px;
+       padding-top: 5px;
+       border-color: #aaaaff;
+       background-color: #eeeeff;
+       border-style: solid;
+       border-width: 1px;
+       margin: 10px;
+       min-height: 48px;
+       background-position: 6px 0.5em;
+       background-repeat: no-repeat;
+       background-image: url(warning.svg);
+}
+
+.main_table {
+       border-collapse: collapse;
+       border: 1px solid #aaaaff;
+       background: #eeeeff;
+       margin-right:auto;
+       margin-left:auto;
+}
+
+.main_source, .main_sourcesample {
+       padding-right: 10px;
+       padding-left: 5px;
+       padding-bottom: 5px;
+       padding-top: 5px;
+       margin: 10px;
+
+       border-color: #aaaaff;
+       background-color: #eeeeff;
+       border-style: solid;
+       border-width: 1px;
+}
+
+
+input {
+       border-color: #aaaaff;
+       border-style: solid;
+       border-width: 1px;
+}
+
+
+
+
+.site_header {
+       font-size: 25px;
+       padding-bottom: 10px;
+       padding-top: 10px;
+       background-color: #aaaaff;
+       width: 100%;
+}
+
+
+div {
+       font-family:'Verdana';
+       font-size: 12;
+}
+
+
+.site_title {
+       text-align: left;
+       font-size: 40;
+}
+
+div.site_footer {
+       text-align: center;
+       background-color: #aaaaff;
+       padding-bottom: 5px;
+       padding-top: 5px;
+       width: 100%;
+       clear: left;
+}
+
+
+div.site_body {
+       font-size: 10;
+}
+
+
+div.site_navigation {
+       float: left;
+
+       width: 240px;
+       border-color: #aaaaff;
+       border-style: solid;
+       border-width: 1px;
+       background-color: #eeeeff;
+}
+
+
+.site_content {
+       font-size: 12px;
+       margin-left: 250px;
+       margin-right: 5px;
+       text-align: left;
+}
+
+
+.main_type {
+       text-decoration: none;
+       font-style: italic;
+       color: #000000;
+}
+
+.main_basic_type {
+       text-decoration: none;
+       font-weight: bold;
+       color: #2e8b57;
+}
+
+.main_keyword {
+       text-decoration: none;
+       font-weight: bold;
+       color: #a52a2a;
+}
+
+.main_escape {
+       text-decoration: none;
+       color: #6a5acd;
+}
+
+.xml_cdata {
+       text-decoration: none;
+       font-weight: normal;
+       color: #a020f0;
+}
+
+.xml_escape {
+       text-decoration: none;
+       font-weight: normal;
+       color: #a020f0;
+}
+
+.xml_element {
+       text-decoration: none;
+       font-weight: normal;
+       color: #008a8c;
+}
+
+.xml_attribute {
+       text-decoration: none;
+       font-weight: bold;
+       color: #6a5acd;
+}
+
+.xml_attribute_value {
+       text-decoration: none;
+       font-weight: normal;
+       color: #ff00ff;
+}
+
+.xml_comment {
+       text-decoration: none;
+       font-weight: normal;
+       color: #0202ff;
+}
+
+.main_source .main_literal {
+       text-decoration: none;
+       color: #ff00ff;
+}
+
+.main_comment {
+       text-decoration: none;
+       color: #888a85;
+}
+
+.main_preprocessor {
+       text-decoration: none;
+       color: #ad7fa8;
+}
+
+div.main_code_definition {
+       padding-right: 10px;
+       padding-left: 10px;
+       padding-bottom: 5px;
+       padding-top: 5px;
+
+       font-family: monospace;
+       border-color: #aaaaff;
+       background-color: #eeeeff;
+       border-style: solid;
+       border-width: 1px;
+       margin: 10px;
+}
+
+div.main_notification_block {
+       padding-right: 10px;
+       padding-left: 10px;
+       padding-bottom: 5px;
+       padding-top: 5px;
+
+       border-color: #d08717;
+       background-color: #fbf2c3;
+       border-style: solid;
+       border-width: 1px;
+       margin: 10px;
+}
+
+span.main_block_headline {
+       background-image:url(tip.svg);
+       background-repeat:no-repeat;
+       background-position:center right;
+       font-weight:bold;
+       display:block;
+}
+
+div.main_block_content {
+       margin-left:15px;
+}
+
+span.leaf_code_definition {
+       font-family: monospace;
+}
+
+
+div.leaf_brief_description {
+       display: block;
+       margin-left: 40px;
+}
+
+
+h1.main_title {
+       font-size: 20px;
+       margin-bottom: 0px;
+}
+
+h2.main_title {
+       margin-bottom: 0px;
+}
+
+h3.main_title {
+       margin-bottom: 0px;
+}
+
+.main_hr {
+       border: 0;
+       color: #aaaaff;
+       background-color: #aaaaff;
+       height: 1px;
+       margin-top: 5px;
+       margin-bottom: 5px;
+}
+
+
+
+.main_parameter_table_text, .main_errordomain_table_text, .main_enum_table_text {
+}
+
+.main_parameter_table_unknown_parameter {
+       color: GREY;
+}
+
+.main_parameter_table_name, .main_errordomain_table_name, .main_enum_table_name {
+       vertical-align: top;
+       text-align: right;
+       font-weight: bold;
+       width: 120px;
+       padding-right: 10px;
+}
+
+.main_parameter_table, .main_errordomain_table, .main_enum_table {
+       margin-weight: 20px;
+       margin-left: 20px;
+}
+
+
+
+.description a.constant, .brief_description a.constant {
+       background-image:url(constant.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.namespace, .brief_description a.namespace {
+       background-image:url(namespace.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.struct, .brief_description a.struct {
+       background-image:url(struct.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.interface, .brief_description a.interface {
+       background-image:url(interface.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.enum, .brief_description a.enum {
+       background-image:url(enum.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.errordomain, .brief_description a.errordomain {
+       background-image:url(errordomain.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.delegate, .brief_description a.delegate {
+       background-image:url(delegate.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.signal, .brief_description a.signal {
+       background-image:url(signal.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.field, .brief_description a.field {
+       background-image:url(field.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.enumvalue, .brief_description a.enumvalue {
+       background-image:url(enumvalue.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.errorcode, .brief_description a.errorcode {
+       background-image:url(errorcode.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.class, .brief_description a.class {
+       background-image:url(class.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+a.abstract_class, .description a.abstract_class, .brief_description a.abstract_class {
+       background-image:url(abstractclass.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+       font-style: italic;
+}
+.description a.property, .brief_description a.property {
+       background-image:url(property.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.virtual_property, .brief_description a.virtual_property {
+       background-image:url(virtualproperty.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.abstract_property, .brief_description a.abstract_property {
+       background-image:url(abstractproperty.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.method, .brief_description a.method {
+       background-image:url(method.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.static_method, .brief_description a.static_method {
+       background-image:url(staticmethod.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+a.virtual_method, .description a.virtual_method, .brief_description a.virtual_method {
+       background-image:url(virtualmethod.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.abstract_method, .brief_description a.abstract_method {
+       background-image:url(abstractmethod.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+.description a.creation_method, .brief_description a.creation_method {
+       background-image:url(constructor.svg);
+       display:inline-block;
+       padding-right:17px;
+       background-repeat:no-repeat;
+       background-position:center right;
+       border:0px;
+}
+
+.navi_main .errorcode, .navi_inline .errorcode {
+       list-style-image:url(errorcode.svg);
+}
+.navi_main .enumvalue, .navi_inline .enumvalue {
+       list-style-image:url(enumvalue.svg);
+}
+.navi_main .abstract_class, .navi_inline .abstract_class {
+       list-style-image: url(abstractclass.svg);
+}
+.navi_main .abstract_method, .navi_inline .abstract_method {
+       list-style-image: url( abstractmethod.svg );
+}
+.navi_main .creation_method, .navi_inline .creation_method, .main_list_m {
+       list-style-image: url(constructor.svg);
+}
+.navi_main .static_method, .navi_inline .static_method {
+       list-style-image: url(staticmethod.svg);
+}
+.navi_main .package_index {
+       list-style-image: url(packages.svg);
+}
+.navi_main .virtual_method, .navi_inline .virtual_method {
+       list-style-image: url(virtualmethod.svg);
+}
+.navi_main .errordomain, .navi_inline .errordomain, .main_list_errdom {
+       list-style-image: url(errordomain.svg);
+}
+.navi_main .namespace, .navi_inline .namespace, .main_list_ns {
+       list-style-image: url(namespace.svg);
+}
+.navi_main .method, .navi_inline .method {
+       list-style-image: url(method.svg);
+}
+.navi_main .struct, .navi_inline .struct, .main_list_stru {
+       list-style-image: url(struct.svg);
+}
+.navi_main .interface, .navi_inline .interface, .main_list_iface {
+       list-style-image: url(interface.svg);
+}
+.navi_main .field, .navi_inline .field, .main_list_field {
+       list-style-image: url(field.svg);
+}
+.navi_main .class, .navi_inline .class, .main_list_cl {
+       list-style-image: url(class.svg);
+}
+.navi_main .enum, .navi_inline .enum, .main_list_en {
+       list-style-image: url(enum.svg);
+}
+.navi_main .property, .navi_inline .property, .main_list_prop {
+       list-style-image: url(property.svg);
+}
+.navi_main .abstract_property, .navi_inline .abstract_property {
+       list-style-image: url(abstractproperty.svg);
+}
+.navi_main .virtual_property, .navi_inline .virtual_property {
+       list-style-image: url(virtualproperty.svg);
+}
+.navi_main .delegate, .navi_inline .delegate, .main_list_del {
+       list-style-image: url(delegate.svg);
+}
+.navi_main .signal, .navi_inline .signal, .main_list_sig {
+       list-style-image: url(signal.svg);
+}
+.navi_main .package, .navi_inline .package {
+       list-style-image: url(package.svg);
+}
+.navi_main .constant, .navi_inline .constant {
+       list-style-image: url(constant.svg);
+}
+
+
+.navi_main {
+       margin-top: 10px;
+       margin-bottom: 10px;
+       padding-left: 30px;
+}
+
+.navi_hr {
+       border: 0;
+       color: #aaaaff;
+       background-color: #aaaaff;
+       height: 1px;
+       margin-left: 10px;
+       margin-right: 10px;
+       margin-top: 5px;
+       margin-bottom: 5px;
+}
+
+
+
+.navi_main a, .navi_inline a, a.external_link
+{
+       text-decoration: none;
+       color:  #214b87;
+}
+
+.navi_main .abstract_class > a, .navi_inline .abstract_class > a {
+       font-style: italic;
+}
+
+a.navi_link:hover, a.external_link:hover {
+       text-decoration: underline;
+}
+
+ul.no_bullet li {
+       list-style-type: none;
+}
+
+.main_see_list {
+}
+
+.navi_inline {
+}
+
+.css_content_literal {
+       font-family: monospace;
+       color: #ff01ff;
+}
+
+code {
+       font-family: monospace;
+}
+
+.main_code_definition a, .leaf_code_definition a {
+       text-decoration: none;
+       color: inherit;
+}
+.main_code_definition a:hover, .leaf_code_definition a:hover {
+       text-decoration: underline;
+}
+
+.box {
+}
+.box .headline {
+       background-image: url("coll_open.png");
+       background-position: calc(100% - 1px) center;
+       background-repeat: no-repeat;
+       background-color: #eeeeff;
+       border-color: #aaaaff;
+       border-style: solid;
+       border-width: 1px;
+       margin: auto;
+       width: 90%;
+       margin-top: 20px;
+       font-weight: bold;
+}
+.box .content {
+       border-color: #aaaaff;
+       border-width: 0 1 1 1;
+       border-style: solid;
+       overflow: auto;
+       display: none;
+       margin: auto;
+       width: 90%;
+}
+.box .column {
+       float: left;
+       width: 33%;
+}
+
+.namespace_note {
+}
+.package_note {
+}
+
+.deprecated {
+       text-decoration:line-through;
+}
diff --git a/web-assets/tip.svg b/web-assets/tip.svg
new file mode 100644
index 0000000..0effdb1
--- /dev/null
+++ b/web-assets/tip.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   viewBox="0 0 16 16"
+   version="1.1"
+   id="svg8175"
+   height="16"
+   width="16">
+  <defs
+     id="defs8177" />
+  <metadata
+     id="metadata8180">
+    <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">
+    <path
+       id="path11"
+       d="m 5,9 0,5 c 0,1.1045 0.8955,2 2,2 l 1,0 c 1.1045,0 2,-0.8955 2,-2 L 10,9 9,9 6,9 Z"
+       style="fill:#808080;stroke:none;fill-opacity:1" />
+    <path
+       id="path13"
+       d="M 7.5 0 C 4.462875 0 2 2.462875 2 5.5 C 2 7.6358668 3.2207698 9.4835431 5 10.394531 L 5 11 L 7.5 
11 L 10 11 L 10 10.394531 C 11.77923 9.4835431 13 7.6358668 13 5.5 C 13 2.462875 10.537125 0 7.5 0 z "
+       style="fill:#fbc02d;stroke:none;fill-opacity:1" />
+    <path
+       id="path12703"
+       d="M 6.078125,12.828125 8.84375,11.15625"
+       
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;opacity:0.5"
 />
+    <path
+       id="path9"
+       d="M 5.5,4 C 4.672875,4 4,4.672875 4,5.5 4,6.327125 4.672875,7 5.5,7 L 6,7 6,11 7,11 7,7 8,7 8,11 
9,11 9,7 9.5,7 C 10.327125,7 11,6.327125 11,5.5 11,4.672875 10.327125,4 9.5,4 8.672875,4 8,4.672875 8,5.5 L 
8,6 7,6 7,5.5 C 7,4.672875 6.327125,4 5.5,4 Z m 0,1 C 5.775875,5 6,5.224625 6,5.5 L 6,6 5.5,6 C 5.224125,6 
5,5.775375 5,5.5 5,5.224625 5.224125,5 5.5,5 Z m 4,0 C 9.775875,5 10,5.224625 10,5.5 10,5.775375 9.775875,6 
9.5,6 L 9,6 9,5.5 C 9,5.224625 9.224125,5 9.5,5 Z"
+       style="opacity:0.4;fill:#4b3601;stroke:none;fill-opacity:1" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;opacity:0.5"
+       d="M 6.078125,14.828125 8.84375,13.15625"
+       id="path12705" />
+  </g>
+</svg>
diff --git a/web-assets/virtualmethod.svg b/web-assets/virtualmethod.svg
new file mode 100644
index 0000000..ec720df
--- /dev/null
+++ b/web-assets/virtualmethod.svg
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4169">
+      <stop
+         style="stop-color:#403757;stop-opacity:1;"
+         offset="0"
+         id="stop4171" />
+      <stop
+         style="stop-color:#403757;stop-opacity:0;"
+         offset="1"
+         id="stop4173" />
+    </linearGradient>
+    <linearGradient
+       xlink:href="#linearGradient4169"
+       id="linearGradient4175"
+       x1="2.3021808"
+       y1="5.7507787"
+       x2="0"
+       y2="7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-2)" />
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+  </defs>
+  <path
+     
style="color:#bebebe;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4175);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     d="m 0,5 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z m 0,2 0,1 10,0 0,-1 z"
+     id="rect4194-8-1" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <path
+     id="rect4162-1-2-3"
+     d="M 9.8972757,2.3502185 C 9.4420058,1.8949492 8.7220627,1.88186 8.2830522,2.3208699 L 
4.3208683,6.2830549 C 3.8818592,6.7220639 3.8949481,7.4420074 4.3502207,7.8972767 L 10.102726,13.64978 c 
0.455271,0.455272 1.175214,0.468361 1.614224,0.02935 l 3.962182,-3.9621871 c 0.439009,-0.4390102 
0.42592,-1.1589534 -0.02935,-1.6142245 z"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#844cc8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path3504-4"
+     d="M 6.7519556,2.567383 C 5.4751106,2.5667361 4.5757713,3.8212349 4.9863306,5.0302736 l 
2.421875,7.1386714 c 0.25706,0.75597 0.9671445,1.264183 1.7656246,1.263672 l 1.6503908,0 c 0.797762,-3.25e-4 
1.506843,-0.508382 1.763672,-1.263672 L 15.013674,5.0302736 C 15.423969,3.822014 14.526024,2.5680737 
13.250002,2.567383 l -1.527343,0 C 10.967633,2.5676723 10.287384,3.0234848 10.000002,3.7216799 
9.7128912,3.024142 9.033614,2.5684633 8.2792993,2.567383 Z"
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.07;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path3504"
+     d="M 6.750977,3.5185551 C 6.126519,3.5187276 5.6869615,4.1323181 5.8876958,4.7236332 l 
2.421875,7.1386718 c 0.1254329,0.36999 0.4726069,0.618982 0.863281,0.619141 l 1.6503912,0 c 0.390674,-1.59e-4 
0.737848,-0.249151 0.863281,-0.619141 L 14.112305,4.7236332 C 14.313039,4.1323182 13.873482,3.5187277 
13.249024,3.5185551 l -1.527344,0 C 11.324683,3.518404 10.973201,3.7751045 10.85254,4.1533207 L 
9.9970708,6.8388676 9.1474618,4.1552738 C 9.0274918,3.7762846 8.6758451,3.5186739 8.2783208,3.5185551 Z"
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="text3368"
+     d="m 6.7509768,4.4306644 2.4218748,7.1386716 1.6503914,0 2.425781,-7.1386716 -1.527344,0 
-1.353515,4.2480469 C 10.159831,9.4274093 10.038738,9.9514973 10.00293,10.250977 9.9834,10.120768 
9.93197,9.8896483 9.8505866,9.5576173 9.7724566,9.2223313 9.6969406,8.9293623 9.6220706,8.6787113 l 
-1.34375,-4.2480469 z"
+     
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 />
+</svg>
diff --git a/web-assets/virtualproperty.svg b/web-assets/virtualproperty.svg
new file mode 100644
index 0000000..a115d6d
--- /dev/null
+++ b/web-assets/virtualproperty.svg
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb";
+   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";
+   width="16.036167"
+   version="1.1"
+   id="svg7384"
+   height="16">
+  <metadata
+     id="metadata90">
+    <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>elementary Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <title
+     id="title9167">elementary Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <linearGradient
+       id="linearGradient4526"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4528" />
+    </linearGradient>
+  </defs>
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-433.00039,12)"
+     id="layer14" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-433.00039,12)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer11-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-701.76365,603.60207)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer11" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     id="layer14-3" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-288.02844,406.39676)"
+     style="display:inline"
+     id="layer12" />
+  <path
+     id="rect3375"
+     d="M 10.130787,1 A 4.8692121,4.8692121 0 0 0 5.2615759,5.869212 4.8692121,4.8692121 0 0 0 
5.7846357,8.0636861 L 1.3576471,12.488298 c -0.47686282,0.476861 -0.47686282,1.246857 0,1.72372 l 
0.4303356,0.430334 c 0.4768629,0.476864 1.2468572,0.476864 1.72372,0 L 7.941069,10.210609 A 
4.8692121,4.8692121 0 0 0 10.130787,10.738424 4.8692121,4.8692121 0 0 0 15,5.869212 4.8692121,4.8692121 0 0 0 
14.474562,3.6794931 l -3.05039,3.0503901 c -0.476862,0.4768629 -1.246856,0.4768629 -1.7237202,0 L 
9.2701167,6.2995476 c -0.4768629,-0.4768628 -0.4768629,-1.2468571 0,-1.7237201 L 12.322884,1.5230599 A 
4.8692121,4.8692121 0 0 0 10.130787,1 Z"
+     
style="color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path3504-4"
+     d="M 6.7519556,2.5673833 C 5.4751106,2.5667364 4.5757713,3.8212352 4.9863306,5.0302739 l 
2.421875,7.1386711 c 0.25706,0.75597 0.9671445,1.264183 1.7656246,1.263672 l 1.6503908,0 c 0.797762,-3.25e-4 
1.506843,-0.508382 1.763672,-1.263672 l 2.42578,-7.1386711 C 15.423968,3.8220143 14.526024,2.568074 
13.250002,2.5673833 l -1.527343,0 C 10.967633,2.5676726 10.287384,3.023485 10.000002,3.7216802 
9.7128912,3.0241422 9.033614,2.5684635 8.2792993,2.5673833 Z"
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.07000002;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="path3504"
+     d="M 6.750977,3.5185553 C 6.126519,3.5187278 5.6869615,4.1323184 5.8876958,4.7236335 l 
2.421875,7.1386715 c 0.1254329,0.36999 0.4726069,0.618982 0.863281,0.619141 l 1.6503912,0 c 0.390674,-1.59e-4 
0.737848,-0.249151 0.863281,-0.619141 L 14.112305,4.7236335 C 14.313039,4.1323185 13.873482,3.5187279 
13.249024,3.5185553 l -1.527344,0 C 11.324683,3.5184042 10.973201,3.7751048 10.85254,4.153321 L 
9.9970708,6.8388679 9.1474618,4.1552741 c -0.11997,-0.3789892 -0.4716167,-0.6366 -0.869141,-0.6367188 z"
+     
style="color:#fbc02d;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.2;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
 />
+  <path
+     id="text3368"
+     d="m 6.7509768,4.4306647 2.4218748,7.1386713 1.6503914,0 2.425781,-7.1386713 -1.527344,0 
-1.353515,4.2480469 C 10.159831,9.4274096 10.038738,9.9514976 10.00293,10.250977 9.9834,10.120768 
9.93197,9.8896486 9.8505866,9.5576176 9.7724566,9.2223316 9.6969406,8.9293626 9.6220706,8.6787116 l 
-1.34375,-4.2480469 z"
+     
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'Open
 Sans';-inkscape-font-specification:'Open Sans 
Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 />
+</svg>
diff --git a/web-assets/warning.svg b/web-assets/warning.svg
new file mode 100644
index 0000000..180f361
--- /dev/null
+++ b/web-assets/warning.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   version="1.1"
+   width="48"
+   height="48"
+   id="svg3964">
+  <defs
+     id="defs3966" />
+  <metadata
+     id="metadata3969">
+    <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>
+  <path
+     
style="fill:#fbc02d;fill-opacity:1;fill-rule:nonzero;stroke:none;color:#fbc02d;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+     id="path11155-5"
+     d="M 45.68698,40.55553 26.58999,4.5553699 c -0.54891,-1 -1.54213,-1.55556 -2.64829,-1.55556 -1.10615,0 
-2.10447,0.66666 -2.66171,1.66667 L 2.3252,40.66665 C 1.87903,41.55554 1.87393,42.77777 2.4233,43.66666 
2.97266,44.55556 3.85573,45 4.96189,45 l 38.05177,0 c 1.10616,0 2.10401,-0.55556 2.55019,-1.44445 
0.55677,-0.88889 0.56141,-2.00001 0.12312,-3.00002 z" />
+  <path
+     
style="color:#bebebe;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:62.4582634px;line-height:125%;font-family:Georgia;text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#403757;fill-opacity:1;fill-rule:nonzero;stroke:none;marker:none;enable-background:accumulate;clip-rule:nonzero;opacity:0.6;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter-blend-mode:normal;filter-gaussianBlur-deviation:0;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto"
+     id="path3295-1-9"
+     d="m 21.58199,14.62299 c 0.56298,5.49932 1.20785,10.9608 1.6871,16.48166 0.48203,0 1.04739,0 1.52942,0 
0.39752,-5.30178 1.03869,-10.57152 1.50122,-15.86673 0.23577,-1.25383 -0.40799,-2.74252 -1.732,-3.04715 
-1.30833,-0.38251 -2.77006,0.56472 -2.94403,1.91776 -0.0288,0.16985 -0.0417,0.34223 -0.0417,0.51446 l 
-10e-6,0 z m -0.16686,22.3587 c -0.0595,1.63694 1.74163,2.92014 3.27948,2.40117 1.48951,-0.38015 
2.27406,-2.25229 1.51068,-3.58306 -0.68335,-1.37564 -2.68725,-1.82889 -3.84001,-0.77606 -0.58269,0.47873 
-0.96891,1.19339 -0.95015,1.95795 l 0,0 z" />
+  <g
+     transform="translate(-450.43903,25.733645)"
+     style="display:inline"
+     label="status"
+     id="layer9" />
+  <g
+     transform="translate(-450.43903,25.733645)"
+     style="display:inline"
+     id="layer10" />
+  <g
+     transform="translate(-450.43903,25.733645)"
+     style="display:inline"
+     id="layer13" />
+  <g
+     transform="translate(-450.43903,25.733645)"
+     id="layer14" />
+  <g
+     transform="translate(-450.43903,25.733645)"
+     style="display:inline"
+     id="layer15" />
+  <g
+     transform="translate(-450.43903,25.733645)"
+     style="display:inline"
+     id="g71291" />
+  <g
+     transform="translate(-719.20229,617.33572)"
+     style="display:inline"
+     id="layer9-2-2" />
+  <g
+     transform="translate(-719.20229,617.33572)"
+     style="display:inline"
+     id="layer10-0-6" />
+  <g
+     transform="translate(-719.20229,617.33572)"
+     id="layer11-5" />
+  <g
+     transform="translate(-719.20229,617.33572)"
+     id="layer14-7-9" />
+  <g
+     transform="translate(-719.20229,617.33572)"
+     style="display:inline"
+     id="layer15-5-2" />
+  <g
+     transform="translate(-719.20229,617.33572)"
+     style="display:inline"
+     id="g71291-8-4" />
+  <g
+     transform="translate(-719.20229,617.33572)"
+     style="display:inline"
+     id="g4953-5" />
+  <g
+     transform="translate(-719.20229,617.33572)"
+     style="display:inline"
+     id="layer12-4" />
+  <g
+     transform="translate(-305.46708,420.1304)"
+     style="display:inline"
+     id="layer10-2" />
+  <g
+     transform="translate(-305.46708,420.1304)"
+     id="layer11" />
+  <g
+     transform="translate(-305.46708,420.1304)"
+     style="display:inline"
+     id="layer13-0" />
+  <g
+     transform="translate(-305.46708,420.1304)"
+     id="layer14-3" />
+  <g
+     transform="translate(-305.46708,420.1304)"
+     style="display:inline"
+     id="layer15-1" />
+  <g
+     transform="translate(-305.46708,420.1304)"
+     style="display:inline"
+     id="g71291-5" />
+  <g
+     transform="translate(-305.46708,420.1304)"
+     style="display:inline"
+     id="g4953" />
+  <g
+     transform="translate(-305.46708,420.1304)"
+     style="display:inline"
+     id="layer12" />
+</svg>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]