summaryrefslogtreecommitdiffhomepage
path: root/static
diff options
context:
space:
mode:
authorPrivate Island Networks Inc <opensource@privateisland.tech>2026-03-03 15:56:53 -0500
committerPrivate Island Networks Inc <opensource@privateisland.tech>2026-03-03 15:56:53 -0500
commitab6ca080771b706a310ebfd8a4192841cdfef05c (patch)
treef9da21650402f17330d68bb7d6f86b031191ddb9 /static
initial commit of experimental code base for PI Explorer (PI-EXP)HEADmain
Diffstat (limited to 'static')
-rw-r--r--static/css/base.css440
-rw-r--r--static/css/ss.css55
-rw-r--r--static/images/favicon.icobin0 -> 198 bytes
-rw-r--r--static/images/icons-svg/action-black.svg37
-rw-r--r--static/images/icons-svg/action-white.svg37
-rw-r--r--static/images/icons-svg/alert-black.svg38
-rw-r--r--static/images/icons-svg/alert-white.svg38
-rw-r--r--static/images/icons-svg/arrow-d-black.svg37
-rw-r--r--static/images/icons-svg/arrow-d-l-black.svg37
-rw-r--r--static/images/icons-svg/arrow-d-l-white.svg37
-rw-r--r--static/images/icons-svg/arrow-d-r-black.svg37
-rw-r--r--static/images/icons-svg/arrow-d-r-white.svg37
-rw-r--r--static/images/icons-svg/arrow-d-white.svg37
-rw-r--r--static/images/icons-svg/arrow-l-black.svg37
-rw-r--r--static/images/icons-svg/arrow-l-white.svg37
-rw-r--r--static/images/icons-svg/arrow-r-black.svg37
-rw-r--r--static/images/icons-svg/arrow-r-white.svg37
-rw-r--r--static/images/icons-svg/arrow-u-black.svg37
-rw-r--r--static/images/icons-svg/arrow-u-l-black.svg37
-rw-r--r--static/images/icons-svg/arrow-u-l-white.svg37
-rw-r--r--static/images/icons-svg/arrow-u-r-black.svg37
-rw-r--r--static/images/icons-svg/arrow-u-r-white.svg37
-rw-r--r--static/images/icons-svg/arrow-u-white.svg37
-rw-r--r--static/images/icons-svg/audio-black.svg40
-rw-r--r--static/images/icons-svg/audio-white.svg40
-rw-r--r--static/images/icons-svg/back-black.svg37
-rw-r--r--static/images/icons-svg/back-white.svg37
-rw-r--r--static/images/icons-svg/bars-black.svg38
-rw-r--r--static/images/icons-svg/bars-white.svg38
-rw-r--r--static/images/icons-svg/bullets-black.svg40
-rw-r--r--static/images/icons-svg/bullets-white.svg40
-rw-r--r--static/images/icons-svg/calendar-black.svg39
-rw-r--r--static/images/icons-svg/calendar-white.svg39
-rw-r--r--static/images/icons-svg/camera-black.svg39
-rw-r--r--static/images/icons-svg/camera-white.svg39
-rw-r--r--static/images/icons-svg/carat-d-black.svg37
-rw-r--r--static/images/icons-svg/carat-d-white.svg37
-rw-r--r--static/images/icons-svg/carat-l-black.svg37
-rw-r--r--static/images/icons-svg/carat-l-white.svg37
-rw-r--r--static/images/icons-svg/carat-r-black.svg37
-rw-r--r--static/images/icons-svg/carat-r-white.svg37
-rw-r--r--static/images/icons-svg/carat-u-black.svg37
-rw-r--r--static/images/icons-svg/carat-u-white.svg37
-rw-r--r--static/images/icons-svg/check-black.svg37
-rw-r--r--static/images/icons-svg/check-white.svg37
-rw-r--r--static/images/icons-svg/clock-black.svg38
-rw-r--r--static/images/icons-svg/clock-white.svg38
-rw-r--r--static/images/icons-svg/cloud-black.svg39
-rw-r--r--static/images/icons-svg/cloud-white.svg39
-rw-r--r--static/images/icons-svg/comment-black.svg37
-rw-r--r--static/images/icons-svg/comment-white.svg37
-rw-r--r--static/images/icons-svg/delete-black.svg37
-rw-r--r--static/images/icons-svg/delete-white.svg37
-rw-r--r--static/images/icons-svg/edit-black.svg37
-rw-r--r--static/images/icons-svg/edit-white.svg37
-rw-r--r--static/images/icons-svg/eye-black.svg38
-rw-r--r--static/images/icons-svg/eye-white.svg38
-rw-r--r--static/images/icons-svg/forbidden-black.svg40
-rw-r--r--static/images/icons-svg/forbidden-white.svg40
-rw-r--r--static/images/icons-svg/forward-black.svg37
-rw-r--r--static/images/icons-svg/forward-white.svg37
-rw-r--r--static/images/icons-svg/gear-black.svg52
-rw-r--r--static/images/icons-svg/gear-white.svg52
-rw-r--r--static/images/icons-svg/grid-black.svg44
-rw-r--r--static/images/icons-svg/grid-white.svg44
-rw-r--r--static/images/icons-svg/heart-black.svg37
-rw-r--r--static/images/icons-svg/heart-white.svg37
-rw-r--r--static/images/icons-svg/home-black.svg37
-rw-r--r--static/images/icons-svg/home-white.svg37
-rw-r--r--static/images/icons-svg/info-black.svg38
-rw-r--r--static/images/icons-svg/info-white.svg38
-rw-r--r--static/images/icons-svg/location-black.svg38
-rw-r--r--static/images/icons-svg/location-white.svg38
-rw-r--r--static/images/icons-svg/lock-black.svg38
-rw-r--r--static/images/icons-svg/lock-white.svg38
-rw-r--r--static/images/icons-svg/mail-black.svg37
-rw-r--r--static/images/icons-svg/mail-white.svg37
-rw-r--r--static/images/icons-svg/minus-black.svg37
-rw-r--r--static/images/icons-svg/minus-white.svg37
-rw-r--r--static/images/icons-svg/navigation-black.svg37
-rw-r--r--static/images/icons-svg/navigation-white.svg37
-rw-r--r--static/images/icons-svg/phone-black.svg43
-rw-r--r--static/images/icons-svg/phone-white.svg43
-rw-r--r--static/images/icons-svg/plus-black.svg37
-rw-r--r--static/images/icons-svg/plus-white.svg37
-rw-r--r--static/images/icons-svg/power-black.svg41
-rw-r--r--static/images/icons-svg/power-white.svg41
-rw-r--r--static/images/icons-svg/recycle-black.svg38
-rw-r--r--static/images/icons-svg/recycle-white.svg38
-rw-r--r--static/images/icons-svg/refresh-black.svg40
-rw-r--r--static/images/icons-svg/refresh-white.svg40
-rw-r--r--static/images/icons-svg/search-black.svg40
-rw-r--r--static/images/icons-svg/search-white.svg40
-rw-r--r--static/images/icons-svg/shop-black.svg39
-rw-r--r--static/images/icons-svg/shop-white.svg39
-rw-r--r--static/images/icons-svg/star-black.svg37
-rw-r--r--static/images/icons-svg/star-white.svg37
-rw-r--r--static/images/icons-svg/tag-black.svg37
-rw-r--r--static/images/icons-svg/tag-white.svg37
-rw-r--r--static/images/icons-svg/user-black.svg41
-rw-r--r--static/images/icons-svg/user-white.svg41
-rw-r--r--static/images/icons-svg/video-black.svg37
-rw-r--r--static/images/icons-svg/video-white.svg37
-rw-r--r--static/images/loading.gifbin0 -> 3208 bytes
-rw-r--r--static/js/base.js200
-rw-r--r--static/js/controller.js93
-rw-r--r--static/js/lmmi.js39
-rw-r--r--static/js/main.js118
-rw-r--r--static/js/mdio.js36
-rw-r--r--static/js/mle.js35
-rw-r--r--static/js/modal.js120
-rw-r--r--static/js/ss.js302
-rw-r--r--static/js/ws.js147
113 files changed, 5419 insertions, 0 deletions
diff --git a/static/css/base.css b/static/css/base.css
new file mode 100644
index 0000000..702a034
--- /dev/null
+++ b/static/css/base.css
@@ -0,0 +1,440 @@
+:root {
+ --mc-color: #0072b0;
+ font-size: 1.0em;
+ box-sizing: border-box;
+}
+
+/* See 3.6 in CID. */
+*, *::before, *::after {
+ box-sizing: inherit;
+}
+
+/* defaults */
+body {
+ font-family: Helvetica, Arial, sans-serif;
+ margin: 1rem;
+}
+
+form {
+ border: 1px solid black;
+ border-radius: 1em;
+ width: 50vw;
+}
+
+a:link {
+ text-decoration: none;
+}
+
+a:visited {
+ text-decoration: none;
+}
+
+button {
+ color: white;
+ border: 0.1px solid green;
+ border-radius: 0.2em;
+ background-color: green;
+}
+
+button.mc-quiet {
+ box-shadow: inherit;
+ padding: 5px;
+}
+
+input, select {
+ border-width: 1px;
+ border-color: black;
+ margin: 0.2em 0;
+}
+
+input[type="submit"] {
+ background-color: green;
+ color: white;
+}
+
+div#betsy {
+ width: 98vw;
+ height: 80vh;
+}
+
+#mc-main-window {
+ height: 800px;
+}
+
+#mc-header {
+ color: white;
+ background-color: var(--mc-color);
+}
+
+#mc-banner {
+ font-size: 2.0em;
+ padding: 0.5em;
+}
+
+/* top container for menu */
+#mc-menu {
+ position: relative;
+ width: 100%;
+}
+
+/* hamburger */
+#mc-menu-hamburger {
+ position: absolute;
+ top: -1.4em;
+ right: 0.1em;
+ border: 0;
+ background-color: transparent;
+ font-size: 2.5em;
+ width: 1em;
+ height: 1em;
+ line-height: 0.4;
+ text-indent: 4em;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+/* div parent for mc-menu-list */
+#mc-menu-dropdown {
+ z-index: 20;
+ display: none;
+ position: absolute;
+ right: 0;
+ margin: 0;
+}
+
+@media ( max-width : 35em) {
+ #mc-menu.is-open #mc-menu-dropdown {
+ display: block;
+ }
+}
+
+@media ( min-width : 35em) {
+ #mc-menu-dropdown {
+ display: block;
+ position: static;
+ }
+}
+
+#mc-menu-list {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+#mc-menu-list>li {
+ text-align: center;
+ border-bottom: 2px solid #185aa5;
+}
+
+#mc-menu-list>li a {
+ display: inline-block;
+ color: white;
+ font-size: 1.1rem;
+ font-weight: normal;
+ padding: 0.1em 1em 0.1em 1em;
+ margin: 0 auto;
+}
+
+@media ( min-width : 35em) {
+ #mc-menu-list {
+ display: flex;
+ position: static;
+ border: 0;
+ }
+ #mc-menu-list>li {
+ flex: 1;
+ padding-bottom: 0;
+ }
+ #mc-menu-list>li a {
+ display: inline-block;
+ border-top: 5px solid var(--mc-color);
+ border-bottom: 5px solid var(--mc-color);
+ transition: border-bottom 0.3s ease-out;
+ }
+ #mc-menu-list>li a:hover {
+ border-bottom: 5px solid #00cc00;
+ }
+}
+
+/* svg */
+.mc-divider {
+ padding: 0;
+ margin: 1em;
+ width: 90%;
+ height: 0.2em;
+ stroke: #185aa5;
+ stroke-width: 1.3px;
+ stroke-opacity: 0.6;
+}
+
+#mc-log-hdr {
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: flext-start;
+ height: 5rem;
+}
+
+#mc-log {
+ max-height: 70%;
+ background-color: white;
+ overflow-x: hidden; /* Hide horizontal scrollbar */
+ overflow-y: scroll; /* Add vertical scrollbar */
+}
+
+.mc-log-row {
+ margin: 1 px;
+ padding: 1 px;
+ display: flex;
+ flex-wrap: nowrap;
+ align-items: flext-start;
+}
+
+.mc-log-col {
+ font-size: 1.5rem;
+}
+
+.mc-log-col-time {
+ padding: 1em 0px;
+ color: black;
+ flex-basis: 200px;
+}
+
+.mc-log-col-pc {
+ padding: 1em 0px;
+ color: green;
+ flex-basis: 300px;
+}
+
+.mc-log-col-phy0 {
+ padding: 1em 0px;
+ color: blue;
+ flex-basis: 300px;
+}
+
+.mc-log-col-phy1 {
+ padding: 1em 0px;
+ color: red;
+ flex-basis: 300px;
+}
+
+@media ( min-width : 80em) {
+ .mc-log-col-pc {
+ flex-basis: 600px;
+ }
+ .mc-log-col-phy0 {
+ flex-basis: 600px;
+ }
+}
+
+.mc-table-striped thead th {
+ border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */
+}
+
+.mc-table-striped tbody th, .mc-table-striped tbody td {
+ border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback */
+}
+
+.mc-table-striped tbody tr:nth-child(odd) td, .mc-table-striped tbody tr:nth-child(odd) th
+ {
+ background-color: rgba(0, 139, 0, 0.1);
+}
+
+.mc-table-striped th, .mc-table-striped td {
+ padding: 1.0em 2.0em;
+}
+
+/* Icons */
+.mc-icons {
+ margin: 0 auto;
+ display: block;
+ text-align: center;
+ vertical-align: center;
+}
+
+.mc-icon {
+ width: 28px;
+ height: 28px;
+ padding: 0.4em 0.7em;
+ margin: 1em 0.2em;
+ background-color: #f0f0f0;
+ border-radius: 2em;
+ cursor: pointer;
+}
+
+.mc-icon-small {
+ width: 14px;
+ height: 14px;
+ padding: 0.2em 0.35em;
+ background-color: #f0f0f0;
+ border-radius: 1em;
+ cursor: pointer;
+}
+
+h1 {
+ /* color: #185aa5; */
+ font-size: 2rem;
+ padding: 0.4em;
+}
+
+p {
+ color: #185aa5;
+ margin: 1.2em;
+ width: 90%;
+ line-height: 1.4em;
+ text-align: justify;
+}
+
+button.mc-action {
+ margin: 5px 5px;
+ border: 1px solid black;
+ color: white;
+ cursor: pointer;
+ padding: 10px 10px;
+ border-radius: 4px;
+ text-align: center;
+ text-decoration: none;
+ display: inline-block;
+ font-size: 0.8rem;
+}
+
+#mc-mode-box {
+ border: 1px solid black;
+ border-radius: 15px;
+ width: 700px;
+ padding: 1rem;
+}
+
+/* outer modal container */
+#mc-modal {
+ display: none;
+}
+
+/* disable the viewport behind the modal box */
+#mc-modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background-color: rgba(0, 0, 0, 0.5);
+ z-index: 50;
+}
+
+/* modal box */
+#mc-modal-body {
+ position: fixed;
+ border-radius: 1em;
+ border: 2px #185aa5 solid;
+ top: 20%;
+ bottom: 20%;
+ right: 20%;
+ left: 20%;
+ padding: 2em 3em 2em 3em;
+ background-color: white;
+ overflow: auto;
+ z-index: 60;
+}
+
+/* offsets are calculated in js */
+#mc-modal-body.mc-image {
+
+}
+
+#mc-modal-body.mc-large {
+ top: 10%;
+ bottom: 10%;
+ right: 10%;
+ left: 10%;
+}
+
+#mc-modal-body.mc-small {
+ padding: 1em 1.5em;
+ margin: 0;
+ top: 10%;
+ bottom: 10%;
+ right: 10%;
+ left: 10%;
+ overflow: scroll;
+}
+
+#mc-modal-body.mc-xtra-small {
+ padding: 1em 1.5em;
+ margin: 0;
+ top: 15%;
+ bottom: 15%;
+ right: 15%;
+ left: 15%;
+ overflow: scroll;
+}
+
+@media ( min-width : 45em) {
+ #mc-modal-body.mc-small {
+ top: 15%;
+ bottom: 15%;
+ right: 15%;
+ left: 15%;
+ }
+ #mc-modal-body.mc-xtra-small {
+ top: 35%;
+ bottom: 35%;
+ right: 25%;
+ left: 25%;
+ }
+}
+
+@media ( min-width : 80em) {
+ #mc-modal-body.mc-small {
+ top: 25%;
+ bottom: 25%;
+ right: 25%;
+ left: 25%;
+ }
+ #mc-modal-body.mc-xtra-small {
+ top: 35%;
+ bottom: 35%;
+ right: 30%;
+ left: 30%;
+ }
+}
+
+/* modal close button */
+button#mc-modal-close {
+ position: absolute;
+ background-color: white;
+ color: black;
+ top: 0.1em;
+ right: 0.1em;
+ cursor: pointer;
+ font-size: 2em;
+ height: 1em;
+ width: 1em;
+ text-indent: 10em;
+ overflow: hidden;
+ border: 0;
+}
+
+/* modal close button */
+#mc-modal-buttons {
+ position: absolute;
+ bottom: 1em;
+ left: 3em;
+ padding: 0.3em;
+ border: 0;
+}
+
+#mc-modal-close::after {
+ position: absolute;
+ line-height: 0.5;
+ top: 0.2em;
+ left: 0.1em;
+ text-indent: 0;
+ content: "\00D7";
+}
+
+/* spinner */
+#mc-loading {
+ position: fixed;
+ display: none;
+ top: 49%;
+ left: 49%;
+} \ No newline at end of file
diff --git a/static/css/ss.css b/static/css/ss.css
new file mode 100644
index 0000000..09e0efb
--- /dev/null
+++ b/static/css/ss.css
@@ -0,0 +1,55 @@
+
+.mc-ss-input {
+ width: 90%;
+ font-size: 1.1rem;
+ min-height: 2.2em;
+ text-align: left;
+ margin: 0.5em;
+}
+
+.mc-ss-main-panel table {
+ margin: 2em 0;
+}
+
+.mc-ss-main-panel table td {
+ padding: 0.7em 0.3em;
+ font-size: 0.9rem;
+}
+
+.mc-ss-table th.mc-sortable:hover {
+ text-decoration: underline;
+ cursor: pointer;
+}
+
+.mc-table-bit-map, .mc-ss-table {
+ border-collapse: collapse;
+ width: 80%;
+ margin: 0 auto;
+}
+
+.mc-table-basic-no-border th, .mc-table-basic th {
+ font-weight: bold;
+}
+
+.mc-ss-table {
+ border: 1px solid black;
+ padding: 0.3em;
+ text-decoration: underline;
+ cursor: pointer;
+}
+
+.mc-ss-table th {
+ border: 1px solid black;
+ padding: 0.3em;
+}
+
+
+.mc-ss-table td {
+ border: 1px solid black;
+ padding: 0.3em;
+}
+
+.mc-table-bit-map td {
+ border: 1px solid black;
+ padding: 0.3em;
+} \ No newline at end of file
diff --git a/static/images/favicon.ico b/static/images/favicon.ico
new file mode 100644
index 0000000..bc6bda5
--- /dev/null
+++ b/static/images/favicon.ico
Binary files differ
diff --git a/static/images/icons-svg/action-black.svg b/static/images/icons-svg/action-black.svg
new file mode 100644
index 0000000..20048d8
--- /dev/null
+++ b/static/images/icons-svg/action-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="13px" viewBox="0 0 14 13" style="enable-background:new 0 0 14 13;" xml:space="preserve">
+<path d="M9,5v3l5-4L9,0v3c0,0-5,0-5,7C6,5,9,5,9,5z M11,11H2V5h1l2-2H0v10h13V7l-2,2V11z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/action-white.svg b/static/images/icons-svg/action-white.svg
new file mode 100644
index 0000000..23da40d
--- /dev/null
+++ b/static/images/icons-svg/action-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="13px" viewBox="0 0 14 13" style="enable-background:new 0 0 14 13;" xml:space="preserve">
+<path fill="#FFF" d="M9,5v3l5-4L9,0v3c0,0-5,0-5,7C6,5,9,5,9,5z M11,11H2V5h1l2-2H0v10h13V7l-2,2V11z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/alert-black.svg b/static/images/icons-svg/alert-black.svg
new file mode 100644
index 0000000..d4179fe
--- /dev/null
+++ b/static/images/icons-svg/alert-black.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="12px" viewBox="0 0 14 12" style="enable-background:new 0 0 14 12;" xml:space="preserve">
+<path d="M7,0L0,12h14L7,0z M7,11c-0.553,0-1-0.447-1-1s0.447-1,1-1s1,0.447,1,1S7.553,11,7,11z M7,8C6.447,8,6,7.553,6,7V5
+ c0-0.553,0.447-1,1-1s1,0.447,1,1v2C8,7.553,7.553,8,7,8z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/alert-white.svg b/static/images/icons-svg/alert-white.svg
new file mode 100644
index 0000000..ff06604
--- /dev/null
+++ b/static/images/icons-svg/alert-white.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="12px" viewBox="0 0 14 12" style="enable-background:new 0 0 14 12;" xml:space="preserve">
+<path fill="#FFF" d="M7,0L0,12h14L7,0z M7,11c-0.553,0-1-0.447-1-1s0.447-1,1-1s1,0.447,1,1S7.553,11,7,11z M7,8C6.447,8,6,7.553,6,7V5
+ c0-0.553,0.447-1,1-1s1,0.447,1,1v2C8,7.553,7.553,8,7,8z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-d-black.svg b/static/images/icons-svg/arrow-d-black.svg
new file mode 100644
index 0000000..7a8b7de
--- /dev/null
+++ b/static/images/icons-svg/arrow-d-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="9,7 9,0 5,0 5,7 0,7 7,14 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-d-l-black.svg b/static/images/icons-svg/arrow-d-l-black.svg
new file mode 100644
index 0000000..8c8d305
--- /dev/null
+++ b/static/images/icons-svg/arrow-d-l-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,3 11,0 3.5,7.5 0,4 0,14 10,14 6.5,10.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-d-l-white.svg b/static/images/icons-svg/arrow-d-l-white.svg
new file mode 100644
index 0000000..f7379cd
--- /dev/null
+++ b/static/images/icons-svg/arrow-d-l-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,3 11,0 3.5,7.5 0,4 0,14 10,14 6.5,10.5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-d-r-black.svg b/static/images/icons-svg/arrow-d-r-black.svg
new file mode 100644
index 0000000..95861e0
--- /dev/null
+++ b/static/images/icons-svg/arrow-d-r-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="10.5,7.5 3,0 0,3 7.5,10.5 4,14 14,14 14,4 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-d-r-white.svg b/static/images/icons-svg/arrow-d-r-white.svg
new file mode 100644
index 0000000..7874ca8
--- /dev/null
+++ b/static/images/icons-svg/arrow-d-r-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="10.5,7.5 3,0 0,3 7.5,10.5 4,14 14,14 14,4 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-d-white.svg b/static/images/icons-svg/arrow-d-white.svg
new file mode 100644
index 0000000..f80ad1b
--- /dev/null
+++ b/static/images/icons-svg/arrow-d-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="9,7 9,0 5,0 5,7 0,7 7,14 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-l-black.svg b/static/images/icons-svg/arrow-l-black.svg
new file mode 100644
index 0000000..0190649
--- /dev/null
+++ b/static/images/icons-svg/arrow-l-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="7,5 7,0 0,7 7,14 7,9 14,9 14,5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-l-white.svg b/static/images/icons-svg/arrow-l-white.svg
new file mode 100644
index 0000000..d9de81d
--- /dev/null
+++ b/static/images/icons-svg/arrow-l-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="7,5 7,0 0,7 7,14 7,9 14,9 14,5 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-r-black.svg b/static/images/icons-svg/arrow-r-black.svg
new file mode 100644
index 0000000..7853c5f
--- /dev/null
+++ b/static/images/icons-svg/arrow-r-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,7 7,0 7,5 0,5 0,9 7,9 7,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-r-white.svg b/static/images/icons-svg/arrow-r-white.svg
new file mode 100644
index 0000000..8c28fc7
--- /dev/null
+++ b/static/images/icons-svg/arrow-r-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,7 7,0 7,5 0,5 0,9 7,9 7,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-u-black.svg b/static/images/icons-svg/arrow-u-black.svg
new file mode 100644
index 0000000..abf9d90
--- /dev/null
+++ b/static/images/icons-svg/arrow-u-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="7,0 0,7 5,7 5,14 9,14 9,7 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-u-l-black.svg b/static/images/icons-svg/arrow-u-l-black.svg
new file mode 100644
index 0000000..08b5c6d
--- /dev/null
+++ b/static/images/icons-svg/arrow-u-l-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,11 6.5,3.5 10,0 0,0 0,10 3.5,6.5 11,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-u-l-white.svg b/static/images/icons-svg/arrow-u-l-white.svg
new file mode 100644
index 0000000..234471e
--- /dev/null
+++ b/static/images/icons-svg/arrow-u-l-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,11 6.5,3.5 10,0 0,0 0,10 3.5,6.5 11,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-u-r-black.svg b/static/images/icons-svg/arrow-u-r-black.svg
new file mode 100644
index 0000000..db1536d
--- /dev/null
+++ b/static/images/icons-svg/arrow-u-r-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,0 4,0 7.5,3.5 0,11 3,14 10.5,6.5 14,10 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-u-r-white.svg b/static/images/icons-svg/arrow-u-r-white.svg
new file mode 100644
index 0000000..5a510f2
--- /dev/null
+++ b/static/images/icons-svg/arrow-u-r-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,0 4,0 7.5,3.5 0,11 3,14 10.5,6.5 14,10 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/arrow-u-white.svg b/static/images/icons-svg/arrow-u-white.svg
new file mode 100644
index 0000000..7e2aeb2
--- /dev/null
+++ b/static/images/icons-svg/arrow-u-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="7,0 0,7 5,7 5,14 9,14 9,7 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/audio-black.svg b/static/images/icons-svg/audio-black.svg
new file mode 100644
index 0000000..f3651d7
--- /dev/null
+++ b/static/images/icons-svg/audio-black.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14.018px" height="14px" viewBox="0 0 14.018 14" style="enable-background:new 0 0 14.018 14;" xml:space="preserve">
+<path d="M1,4C0.447,4,0,4.447,0,5v4c0,0.553,0.447,1,1,1h1l4,4V0L2,4H1z M10.346,7c0-1.699-1.042-3.154-2.546-3.867L6.982,4.68
+ C7.885,5.107,8.51,5.98,8.51,7S7.885,8.893,6.982,9.32L7.8,10.867C9.304,10.154,10.346,8.699,10.346,7z M9.447,0.017L8.618,1.586
+ C10.723,2.584,12.182,4.621,12.182,7s-1.459,4.416-3.563,5.414l0.829,1.569c2.707-1.283,4.57-3.925,4.57-6.983
+ S12.154,1.3,9.447,0.017z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/audio-white.svg b/static/images/icons-svg/audio-white.svg
new file mode 100644
index 0000000..a689699
--- /dev/null
+++ b/static/images/icons-svg/audio-white.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14.018px" height="14px" viewBox="0 0 14.018 14" style="enable-background:new 0 0 14.018 14;" xml:space="preserve">
+<path fill="#FFF" d="M1,4C0.447,4,0,4.447,0,5v4c0,0.553,0.447,1,1,1h1l4,4V0L2,4H1z M10.346,7c0-1.699-1.042-3.154-2.546-3.867L6.982,4.68
+ C7.885,5.107,8.51,5.98,8.51,7S7.885,8.893,6.982,9.32L7.8,10.867C9.304,10.154,10.346,8.699,10.346,7z M9.447,0.017L8.618,1.586
+ C10.723,2.584,12.182,4.621,12.182,7s-1.459,4.416-3.563,5.414l0.829,1.569c2.707-1.283,4.57-3.925,4.57-6.983
+ S12.154,1.3,9.447,0.017z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/back-black.svg b/static/images/icons-svg/back-black.svg
new file mode 100644
index 0000000..d6f928a
--- /dev/null
+++ b/static/images/icons-svg/back-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="14px" viewBox="0 0 12 14" style="enable-background:new 0 0 12 14;" xml:space="preserve">
+<path d="M4,3V0L0,4l4,4V5c0,0,6,0,6,3s-5,4-5,4v2c0,0,7-1,7-6C12,4,7,3,4,3z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/back-white.svg b/static/images/icons-svg/back-white.svg
new file mode 100644
index 0000000..b34d43b
--- /dev/null
+++ b/static/images/icons-svg/back-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="14px" viewBox="0 0 12 14" style="enable-background:new 0 0 12 14;" xml:space="preserve">
+<path fill="#FFF" d="M4,3V0L0,4l4,4V5c0,0,6,0,6,3s-5,4-5,4v2c0,0,7-1,7-6C12,4,7,3,4,3z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/bars-black.svg b/static/images/icons-svg/bars-black.svg
new file mode 100644
index 0000000..1aebe36
--- /dev/null
+++ b/static/images/icons-svg/bars-black.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path d="M1,2h12c0.553,0,1-0.447,1-1s-0.447-1-1-1H1C0.447,0,0,0.447,0,1S0.447,2,1,2z M13,4H1C0.447,4,0,4.447,0,5s0.447,1,1,1h12
+ c0.553,0,1-0.447,1-1S13.553,4,13,4z M13,8H1C0.447,8,0,8.447,0,9s0.447,1,1,1h12c0.553,0,1-0.447,1-1S13.553,8,13,8z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/bars-white.svg b/static/images/icons-svg/bars-white.svg
new file mode 100644
index 0000000..98cd320
--- /dev/null
+++ b/static/images/icons-svg/bars-white.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path fill="#FFF" d="M1,2h12c0.553,0,1-0.447,1-1s-0.447-1-1-1H1C0.447,0,0,0.447,0,1S0.447,2,1,2z M13,4H1C0.447,4,0,4.447,0,5s0.447,1,1,1h12
+ c0.553,0,1-0.447,1-1S13.553,4,13,4z M13,8H1C0.447,8,0,8.447,0,9s0.447,1,1,1h12c0.553,0,1-0.447,1-1S13.553,8,13,8z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/bullets-black.svg b/static/images/icons-svg/bullets-black.svg
new file mode 100644
index 0000000..3bf9680
--- /dev/null
+++ b/static/images/icons-svg/bullets-black.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path d="M5,2h8c0.553,0,1-0.447,1-1s-0.447-1-1-1H5C4.447,0,4,0.447,4,1S4.447,2,5,2z M13,4H5C4.447,4,4,4.447,4,5s0.447,1,1,1h8
+ c0.553,0,1-0.447,1-1S13.553,4,13,4z M13,8H5C4.447,8,4,8.447,4,9s0.447,1,1,1h8c0.553,0,1-0.447,1-1S13.553,8,13,8z M1,0
+ C0.447,0,0,0.447,0,1s0.447,1,1,1s1-0.447,1-1S1.553,0,1,0z M1,4C0.447,4,0,4.447,0,5s0.447,1,1,1s1-0.447,1-1S1.553,4,1,4z M1,8
+ C0.447,8,0,8.447,0,9s0.447,1,1,1s1-0.447,1-1S1.553,8,1,8z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/bullets-white.svg b/static/images/icons-svg/bullets-white.svg
new file mode 100644
index 0000000..ecc4f95
--- /dev/null
+++ b/static/images/icons-svg/bullets-white.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path fill="#FFF" d="M5,2h8c0.553,0,1-0.447,1-1s-0.447-1-1-1H5C4.447,0,4,0.447,4,1S4.447,2,5,2z M13,4H5C4.447,4,4,4.447,4,5s0.447,1,1,1h8
+ c0.553,0,1-0.447,1-1S13.553,4,13,4z M13,8H5C4.447,8,4,8.447,4,9s0.447,1,1,1h8c0.553,0,1-0.447,1-1S13.553,8,13,8z M1,0
+ C0.447,0,0,0.447,0,1s0.447,1,1,1s1-0.447,1-1S1.553,0,1,0z M1,4C0.447,4,0,4.447,0,5s0.447,1,1,1s1-0.447,1-1S1.553,4,1,4z M1,8
+ C0.447,8,0,8.447,0,9s0.447,1,1,1s1-0.447,1-1S1.553,8,1,8z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/calendar-black.svg b/static/images/icons-svg/calendar-black.svg
new file mode 100644
index 0000000..5c3aede
--- /dev/null
+++ b/static/images/icons-svg/calendar-black.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M0,8h2V6H0V8z M3,8h2V6H3V8z M6,8h2V6H6V8z M9,8h2V6H9V8z M12,8h2V6h-2V8z M0,11h2V9H0V11z M3,11h2V9H3V11z M6,11h2V9H6V11z
+ M9,11h2V9H9V11z M12,11h2V9h-2V11z M0,14h2v-2H0V14z M3,14h2v-2H3V14z M6,14h2v-2H6V14z M9,14h2v-2H9V14z M12,1
+ c0-0.553-0.447-1-1-1s-1,0.447-1,1H4c0-0.553-0.447-1-1-1S2,0.447,2,1H0v4h14V1H12z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/calendar-white.svg b/static/images/icons-svg/calendar-white.svg
new file mode 100644
index 0000000..177dab9
--- /dev/null
+++ b/static/images/icons-svg/calendar-white.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M0,8h2V6H0V8z M3,8h2V6H3V8z M6,8h2V6H6V8z M9,8h2V6H9V8z M12,8h2V6h-2V8z M0,11h2V9H0V11z M3,11h2V9H3V11z M6,11h2V9H6V11z
+ M9,11h2V9H9V11z M12,11h2V9h-2V11z M0,14h2v-2H0V14z M3,14h2v-2H3V14z M6,14h2v-2H6V14z M9,14h2v-2H9V14z M12,1
+ c0-0.553-0.447-1-1-1s-1,0.447-1,1H4c0-0.553-0.447-1-1-1S2,0.447,2,1H0v4h14V1H12z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/camera-black.svg b/static/images/icons-svg/camera-black.svg
new file mode 100644
index 0000000..865095d
--- /dev/null
+++ b/static/images/icons-svg/camera-black.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="11px" viewBox="0 0 14 11" style="enable-background:new 0 0 14 11;" xml:space="preserve">
+<path d="M12,1H9.908C9.702,0.419,9.152,0,8.5,0h-3C4.848,0,4.298,0.419,4.092,1H2C0.896,1,0,1.896,0,3v6c0,1.104,0.896,2,2,2h10
+ c1.104,0,2-0.896,2-2V3C14,1.896,13.104,1,12,1z M7,9C5.343,9,4,7.657,4,6s1.343-3,3-3s3,1.343,3,3S8.657,9,7,9z M7,4
+ C5.896,4,5,4.896,5,6s0.896,2,2,2s2-0.896,2-2S8.104,4,7,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/camera-white.svg b/static/images/icons-svg/camera-white.svg
new file mode 100644
index 0000000..b84265c
--- /dev/null
+++ b/static/images/icons-svg/camera-white.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="11px" viewBox="0 0 14 11" style="enable-background:new 0 0 14 11;" xml:space="preserve">
+<path fill="#FFF" d="M12,1H9.908C9.702,0.419,9.152,0,8.5,0h-3C4.848,0,4.298,0.419,4.092,1H2C0.896,1,0,1.896,0,3v6c0,1.104,0.896,2,2,2h10
+ c1.104,0,2-0.896,2-2V3C14,1.896,13.104,1,12,1z M7,9C5.343,9,4,7.657,4,6s1.343-3,3-3s3,1.343,3,3S8.657,9,7,9z M7,4
+ C5.896,4,5,4.896,5,6s0.896,2,2,2s2-0.896,2-2S8.104,4,7,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/carat-d-black.svg b/static/images/icons-svg/carat-d-black.svg
new file mode 100644
index 0000000..b6445a7
--- /dev/null
+++ b/static/images/icons-svg/carat-d-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="8px" viewBox="0 0 12 8" style="enable-background:new 0 0 12 8;" xml:space="preserve">
+<polygon points="10,0 6,4 2,0 0,2 6,8 12,2 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/carat-d-white.svg b/static/images/icons-svg/carat-d-white.svg
new file mode 100644
index 0000000..4d6d185
--- /dev/null
+++ b/static/images/icons-svg/carat-d-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="8px" viewBox="0 0 12 8" style="enable-background:new 0 0 12 8;" xml:space="preserve">
+<polygon fill="#FFF" points="10,0 6,4 2,0 0,2 6,8 12,2 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/carat-l-black.svg b/static/images/icons-svg/carat-l-black.svg
new file mode 100644
index 0000000..2c8b91f
--- /dev/null
+++ b/static/images/icons-svg/carat-l-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="8px" height="12px" viewBox="0 0 8 12" style="enable-background:new 0 0 8 12;" xml:space="preserve">
+<polygon points="8,2 6,0 0,6 6,12 8,10 4,6 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/carat-l-white.svg b/static/images/icons-svg/carat-l-white.svg
new file mode 100644
index 0000000..e18f613
--- /dev/null
+++ b/static/images/icons-svg/carat-l-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="8px" height="12px" viewBox="0 0 8 12" style="enable-background:new 0 0 8 12;" xml:space="preserve">
+<polygon fill="#FFF" points="8,2 6,0 0,6 6,12 8,10 4,6 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/carat-r-black.svg b/static/images/icons-svg/carat-r-black.svg
new file mode 100644
index 0000000..57cf497
--- /dev/null
+++ b/static/images/icons-svg/carat-r-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="8px" height="12px" viewBox="0 0 8 12" style="enable-background:new 0 0 8 12;" xml:space="preserve">
+<polygon points="2,0 0,2 4,6 0,10 2,12 8,6 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/carat-r-white.svg b/static/images/icons-svg/carat-r-white.svg
new file mode 100644
index 0000000..b034d95
--- /dev/null
+++ b/static/images/icons-svg/carat-r-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="8px" height="12px" viewBox="0 0 8 12" style="enable-background:new 0 0 8 12;" xml:space="preserve">
+<polygon fill="#FFF" points="2,0 0,2 4,6 0,10 2,12 8,6 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/carat-u-black.svg b/static/images/icons-svg/carat-u-black.svg
new file mode 100644
index 0000000..533a739
--- /dev/null
+++ b/static/images/icons-svg/carat-u-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="8px" viewBox="0 0 12 8" style="enable-background:new 0 0 12 8;" xml:space="preserve">
+<polygon points="6,0 0,6 2,8 6,4 10,8 12,6 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/carat-u-white.svg b/static/images/icons-svg/carat-u-white.svg
new file mode 100644
index 0000000..670e48b
--- /dev/null
+++ b/static/images/icons-svg/carat-u-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="8px" viewBox="0 0 12 8" style="enable-background:new 0 0 12 8;" xml:space="preserve">
+<polygon fill="#FFF" points="6,0 0,6 2,8 6,4 10,8 12,6 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/check-black.svg b/static/images/icons-svg/check-black.svg
new file mode 100644
index 0000000..db5b715
--- /dev/null
+++ b/static/images/icons-svg/check-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="12px" viewBox="0 0 14 12" style="enable-background:new 0 0 14 12;" xml:space="preserve">
+<polygon points="14,3 11,0 5.003,5.997 3,4 0,7 4.966,12 4.983,11.983 5,12 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/check-white.svg b/static/images/icons-svg/check-white.svg
new file mode 100644
index 0000000..b257fd7
--- /dev/null
+++ b/static/images/icons-svg/check-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="12px" viewBox="0 0 14 12" style="enable-background:new 0 0 14 12;" xml:space="preserve">
+<polygon fill="#FFF" points="14,3 11,0 5.003,5.997 3,4 0,7 4.966,12 4.983,11.983 5,12 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/clock-black.svg b/static/images/icons-svg/clock-black.svg
new file mode 100644
index 0000000..c68abef
--- /dev/null
+++ b/static/images/icons-svg/clock-black.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M7,0C3.134,0,0,3.134,0,7s3.134,7,7,7s7-3.134,7-7S10.866,0,7,0z M7,12c-2.762,0-5-2.238-5-5s2.238-5,5-5s5,2.238,5,5
+ S9.762,12,7,12z M9,6H8V4c0-0.553-0.447-1-1-1S6,3.447,6,4v3c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1S9.553,6,9,6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/clock-white.svg b/static/images/icons-svg/clock-white.svg
new file mode 100644
index 0000000..5589238
--- /dev/null
+++ b/static/images/icons-svg/clock-white.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M7,0C3.134,0,0,3.134,0,7s3.134,7,7,7s7-3.134,7-7S10.866,0,7,0z M7,12c-2.762,0-5-2.238-5-5s2.238-5,5-5s5,2.238,5,5
+ S9.762,12,7,12z M9,6H8V4c0-0.553-0.447-1-1-1S6,3.447,6,4v3c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1S9.553,6,9,6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/cloud-black.svg b/static/images/icons-svg/cloud-black.svg
new file mode 100644
index 0000000..6fa55f4
--- /dev/null
+++ b/static/images/icons-svg/cloud-black.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="9px" viewBox="0 0 14 9" style="enable-background:new 0 0 14 9;" xml:space="preserve">
+<path d="M14,7c0-0.793-0.465-1.472-1.134-1.795C12.949,4.984,13,4.749,13,4.5c0-1.104-0.896-2-2-2c-0.158,0-0.31,0.023-0.457,0.058
+ C9.816,1.049,8.286,0,6.5,0C4.17,0,2.276,1.777,2.046,4.046C0.883,4.26,0,5.274,0,6.5C0,7.881,1.119,9,2.5,9h10V8.93
+ C13.361,8.706,14,7.931,14,7z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/cloud-white.svg b/static/images/icons-svg/cloud-white.svg
new file mode 100644
index 0000000..3e0bde3
--- /dev/null
+++ b/static/images/icons-svg/cloud-white.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="9px" viewBox="0 0 14 9" style="enable-background:new 0 0 14 9;" xml:space="preserve">
+<path fill="#FFF" d="M14,7c0-0.793-0.465-1.472-1.134-1.795C12.949,4.984,13,4.749,13,4.5c0-1.104-0.896-2-2-2c-0.158,0-0.31,0.023-0.457,0.058
+ C9.816,1.049,8.286,0,6.5,0C4.17,0,2.276,1.777,2.046,4.046C0.883,4.26,0,5.274,0,6.5C0,7.881,1.119,9,2.5,9h10V8.93
+ C13.361,8.706,14,7.931,14,7z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/comment-black.svg b/static/images/icons-svg/comment-black.svg
new file mode 100644
index 0000000..485fcc8
--- /dev/null
+++ b/static/images/icons-svg/comment-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M12,0H2C0.896,0,0,0.896,0,2v7c0,1.104,0.896,2,2,2h1v3l3-3h6c1.104,0,2-0.896,2-2V2C14,0.896,13.104,0,12,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/comment-white.svg b/static/images/icons-svg/comment-white.svg
new file mode 100644
index 0000000..8d188db
--- /dev/null
+++ b/static/images/icons-svg/comment-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M12,0H2C0.896,0,0,0.896,0,2v7c0,1.104,0.896,2,2,2h1v3l3-3h6c1.104,0,2-0.896,2-2V2C14,0.896,13.104,0,12,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/delete-black.svg b/static/images/icons-svg/delete-black.svg
new file mode 100644
index 0000000..74d9988
--- /dev/null
+++ b/static/images/icons-svg/delete-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,3 11,0 7,4 3,0 0,3 4,7 0,11 3,14 7,10 11,14 14,11 10,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/delete-white.svg b/static/images/icons-svg/delete-white.svg
new file mode 100644
index 0000000..a6cc735
--- /dev/null
+++ b/static/images/icons-svg/delete-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,3 11,0 7,4 3,0 0,3 4,7 0,11 3,14 7,10 11,14 14,11 10,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/edit-black.svg b/static/images/icons-svg/edit-black.svg
new file mode 100644
index 0000000..d908f9d
--- /dev/null
+++ b/static/images/icons-svg/edit-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M1,10l-1,4l4-1l7-7L8,3L1,10z M11,0L9,2l3,3l2-2L11,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/edit-white.svg b/static/images/icons-svg/edit-white.svg
new file mode 100644
index 0000000..a88643d
--- /dev/null
+++ b/static/images/icons-svg/edit-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M1,10l-1,4l4-1l7-7L8,3L1,10z M11,0L9,2l3,3l2-2L11,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/eye-black.svg b/static/images/icons-svg/eye-black.svg
new file mode 100644
index 0000000..7f96a8e
--- /dev/null
+++ b/static/images/icons-svg/eye-black.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path d="M7,0C3,0,0,5,0,5s3,5,7,5s7-5,7-5S11,0,7,0z M7,8C5.343,8,4,6.657,4,5s1.343-3,3-3s3,1.343,3,3S8.657,8,7,8z M7,4
+ C6.448,4,6,4.447,6,5s0.448,1,1,1s1-0.447,1-1S7.552,4,7,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/eye-white.svg b/static/images/icons-svg/eye-white.svg
new file mode 100644
index 0000000..7b0d0e8
--- /dev/null
+++ b/static/images/icons-svg/eye-white.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path fill="#FFF" d="M7,0C3,0,0,5,0,5s3,5,7,5s7-5,7-5S11,0,7,0z M7,8C5.343,8,4,6.657,4,5s1.343-3,3-3s3,1.343,3,3S8.657,8,7,8z M7,4
+ C6.448,4,6,4.447,6,5s0.448,1,1,1s1-0.447,1-1S7.552,4,7,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/forbidden-black.svg b/static/images/icons-svg/forbidden-black.svg
new file mode 100644
index 0000000..fe831bc
--- /dev/null
+++ b/static/images/icons-svg/forbidden-black.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M12.601,11.187C13.476,10.018,14,8.572,14,7c0-3.866-3.134-7-7-7C5.428,0,3.982,0.524,2.813,1.399L2.757,1.343L2.053,2.048
+ L2.048,2.053L1.343,2.758l0.056,0.056C0.524,3.982,0,5.428,0,7c0,3.866,3.134,7,7,7c1.572,0,3.018-0.524,4.187-1.399l0.056,0.057
+ l0.705-0.705l0.005-0.005l0.705-0.705L12.601,11.187z M7,2c2.761,0,5,2.238,5,5c0,1.019-0.308,1.964-0.832,2.754L4.246,2.832
+ C5.036,2.308,5.981,2,7,2z M7,12c-2.761,0-5-2.238-5-5c0-1.019,0.308-1.964,0.832-2.754l6.922,6.922C8.964,11.692,8.019,12,7,12z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/forbidden-white.svg b/static/images/icons-svg/forbidden-white.svg
new file mode 100644
index 0000000..710ac39
--- /dev/null
+++ b/static/images/icons-svg/forbidden-white.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M12.601,11.187C13.476,10.018,14,8.572,14,7c0-3.866-3.134-7-7-7C5.428,0,3.982,0.524,2.813,1.399L2.757,1.343L2.053,2.048
+ L2.048,2.053L1.343,2.758l0.056,0.056C0.524,3.982,0,5.428,0,7c0,3.866,3.134,7,7,7c1.572,0,3.018-0.524,4.187-1.399l0.056,0.057
+ l0.705-0.705l0.005-0.005l0.705-0.705L12.601,11.187z M7,2c2.761,0,5,2.238,5,5c0,1.019-0.308,1.964-0.832,2.754L4.246,2.832
+ C5.036,2.308,5.981,2,7,2z M7,12c-2.761,0-5-2.238-5-5c0-1.019,0.308-1.964,0.832-2.754l6.922,6.922C8.964,11.692,8.019,12,7,12z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/forward-black.svg b/static/images/icons-svg/forward-black.svg
new file mode 100644
index 0000000..35af7b6
--- /dev/null
+++ b/static/images/icons-svg/forward-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="14px" viewBox="0 0 12 14" style="enable-background:new 0 0 12 14;" xml:space="preserve">
+<path d="M12,4L8,0v3C5,3,0,4,0,8c0,5,7,6,7,6v-2c0,0-5-1-5-4s6-3,6-3v3L12,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/forward-white.svg b/static/images/icons-svg/forward-white.svg
new file mode 100644
index 0000000..5cd2def
--- /dev/null
+++ b/static/images/icons-svg/forward-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="14px" viewBox="0 0 12 14" style="enable-background:new 0 0 12 14;" xml:space="preserve">
+<path fill="#FFF" d="M12,4L8,0v3C5,3,0,4,0,8c0,5,7,6,7,6v-2c0,0-5-1-5-4s6-3,6-3v3L12,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/gear-black.svg b/static/images/icons-svg/gear-black.svg
new file mode 100644
index 0000000..4f397c5
--- /dev/null
+++ b/static/images/icons-svg/gear-black.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M13.621,5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82
+ c-0.079-0.153-0.073-0.337,0.017-0.486l0.549-0.915c0.118-0.196,0.088-0.448-0.075-0.61l-0.862-0.863
+ c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916,0.55C9.844,2.182,9.659,2.188,9.506,2.109C9.244,1.975,8.97,1.861,8.686,1.77
+ c-0.165-0.052-0.29-0.187-0.332-0.354L8.095,0.379C8.039,0.156,7.839,0,7.609,0H6.391c-0.229,0-0.43,0.156-0.485,0.379L5.646,1.415
+ C5.604,1.582,5.479,1.718,5.313,1.77c-0.284,0.092-0.559,0.206-0.82,0.34C4.339,2.188,4.155,2.182,4.007,2.093L3.092,1.544
+ c-0.196-0.118-0.448-0.087-0.61,0.075L1.619,2.481C1.457,2.644,1.426,2.896,1.544,3.093l0.549,0.914
+ c0.089,0.148,0.095,0.332,0.017,0.486C1.975,4.755,1.861,5.029,1.77,5.314c-0.053,0.164-0.188,0.29-0.354,0.332L0.379,5.905
+ C0.156,5.961,0,6.161,0,6.391v1.219c0,0.229,0.156,0.43,0.379,0.485l1.036,0.26C1.582,8.396,1.717,8.521,1.77,8.687
+ c0.092,0.284,0.205,0.559,0.34,0.82C2.188,9.66,2.182,9.844,2.093,9.993l-0.549,0.915c-0.118,0.195-0.087,0.448,0.075,0.61
+ l0.862,0.862c0.162,0.163,0.414,0.193,0.61,0.075l0.915-0.549c0.148-0.089,0.332-0.095,0.486-0.017
+ c0.262,0.135,0.536,0.248,0.82,0.34c0.165,0.053,0.291,0.187,0.332,0.354l0.259,1.036C5.96,13.844,6.16,14,6.39,14h1.22
+ c0.229,0,0.43-0.156,0.485-0.379l0.259-1.036c0.042-0.167,0.168-0.302,0.333-0.354c0.284-0.092,0.559-0.205,0.82-0.34
+ c0.154-0.078,0.338-0.072,0.486,0.017l0.914,0.549c0.197,0.118,0.449,0.088,0.611-0.074l0.862-0.863
+ c0.163-0.162,0.193-0.415,0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263,0.248-0.536,0.339-0.82
+ c0.053-0.165,0.188-0.291,0.355-0.333l1.036-0.259C13.844,8.039,14,7.839,14,7.609V6.39C14,6.16,13.844,5.96,13.621,5.904z M7,10
+ c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S8.657,10,7,10z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/gear-white.svg b/static/images/icons-svg/gear-white.svg
new file mode 100644
index 0000000..3a5668f
--- /dev/null
+++ b/static/images/icons-svg/gear-white.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M13.621,5.904l-1.036-0.259c-0.168-0.042-0.303-0.168-0.355-0.332c-0.092-0.284-0.205-0.559-0.339-0.82
+ c-0.079-0.153-0.073-0.337,0.017-0.486l0.549-0.915c0.118-0.196,0.088-0.448-0.075-0.61l-0.862-0.863
+ c-0.162-0.163-0.414-0.193-0.611-0.075l-0.916,0.55C9.844,2.182,9.659,2.188,9.506,2.109C9.244,1.975,8.97,1.861,8.686,1.77
+ c-0.165-0.052-0.29-0.187-0.332-0.354L8.095,0.379C8.039,0.156,7.839,0,7.609,0H6.391c-0.229,0-0.43,0.156-0.485,0.379L5.646,1.415
+ C5.604,1.582,5.479,1.718,5.313,1.77c-0.284,0.092-0.559,0.206-0.82,0.34C4.339,2.188,4.155,2.182,4.007,2.093L3.092,1.544
+ c-0.196-0.118-0.448-0.087-0.61,0.075L1.619,2.481C1.457,2.644,1.426,2.896,1.544,3.093l0.549,0.914
+ c0.089,0.148,0.095,0.332,0.017,0.486C1.975,4.755,1.861,5.029,1.77,5.314c-0.053,0.164-0.188,0.29-0.354,0.332L0.379,5.905
+ C0.156,5.961,0,6.161,0,6.391v1.219c0,0.229,0.156,0.43,0.379,0.485l1.036,0.26C1.582,8.396,1.717,8.521,1.77,8.687
+ c0.092,0.284,0.205,0.559,0.34,0.82C2.188,9.66,2.182,9.844,2.093,9.993l-0.549,0.915c-0.118,0.195-0.087,0.448,0.075,0.61
+ l0.862,0.862c0.162,0.163,0.414,0.193,0.61,0.075l0.915-0.549c0.148-0.089,0.332-0.095,0.486-0.017
+ c0.262,0.135,0.536,0.248,0.82,0.34c0.165,0.053,0.291,0.187,0.332,0.354l0.259,1.036C5.96,13.844,6.16,14,6.39,14h1.22
+ c0.229,0,0.43-0.156,0.485-0.379l0.259-1.036c0.042-0.167,0.168-0.302,0.333-0.354c0.284-0.092,0.559-0.205,0.82-0.34
+ c0.154-0.078,0.338-0.072,0.486,0.017l0.914,0.549c0.197,0.118,0.449,0.088,0.611-0.074l0.862-0.863
+ c0.163-0.162,0.193-0.415,0.075-0.611l-0.549-0.915c-0.089-0.148-0.096-0.332-0.017-0.485c0.134-0.263,0.248-0.536,0.339-0.82
+ c0.053-0.165,0.188-0.291,0.355-0.333l1.036-0.259C13.844,8.039,14,7.839,14,7.609V6.39C14,6.16,13.844,5.96,13.621,5.904z M7,10
+ c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S8.657,10,7,10z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/grid-black.svg b/static/images/icons-svg/grid-black.svg
new file mode 100644
index 0000000..e692e1f
--- /dev/null
+++ b/static/images/icons-svg/grid-black.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M3,0H1C0.447,0,0,0.447,0,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C4,0.447,3.553,0,3,0z M8,0H6
+ C5.447,0,5,0.447,5,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C9,0.447,8.553,0,8,0z M13,0h-2c-0.553,0-1,0.447-1,1v2
+ c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C14,0.447,13.553,0,13,0z M3,5H1C0.447,5,0,5.447,0,6v2c0,0.553,0.447,1,1,1h2
+ c0.553,0,1-0.447,1-1V6C4,5.447,3.553,5,3,5z M8,5H6C5.447,5,5,5.447,5,6v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V6
+ C9,5.447,8.553,5,8,5z M13,5h-2c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V6C14,5.447,13.553,5,13,5z M3,10
+ H1c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1v-2C4,10.447,3.553,10,3,10z M8,10H6c-0.553,0-1,0.447-1,1v2
+ c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1v-2C9,10.447,8.553,10,8,10z M13,10h-2c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2
+ c0.553,0,1-0.447,1-1v-2C14,10.447,13.553,10,13,10z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/grid-white.svg b/static/images/icons-svg/grid-white.svg
new file mode 100644
index 0000000..5cfaa7c
--- /dev/null
+++ b/static/images/icons-svg/grid-white.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M3,0H1C0.447,0,0,0.447,0,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C4,0.447,3.553,0,3,0z M8,0H6
+ C5.447,0,5,0.447,5,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C9,0.447,8.553,0,8,0z M13,0h-2c-0.553,0-1,0.447-1,1v2
+ c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V1C14,0.447,13.553,0,13,0z M3,5H1C0.447,5,0,5.447,0,6v2c0,0.553,0.447,1,1,1h2
+ c0.553,0,1-0.447,1-1V6C4,5.447,3.553,5,3,5z M8,5H6C5.447,5,5,5.447,5,6v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V6
+ C9,5.447,8.553,5,8,5z M13,5h-2c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1V6C14,5.447,13.553,5,13,5z M3,10
+ H1c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1v-2C4,10.447,3.553,10,3,10z M8,10H6c-0.553,0-1,0.447-1,1v2
+ c0,0.553,0.447,1,1,1h2c0.553,0,1-0.447,1-1v-2C9,10.447,8.553,10,8,10z M13,10h-2c-0.553,0-1,0.447-1,1v2c0,0.553,0.447,1,1,1h2
+ c0.553,0,1-0.447,1-1v-2C14,10.447,13.553,10,13,10z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/heart-black.svg b/static/images/icons-svg/heart-black.svg
new file mode 100644
index 0000000..77373d5
--- /dev/null
+++ b/static/images/icons-svg/heart-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="13.744px" viewBox="0 0 14 13.744" style="enable-background:new 0 0 14 13.744;" xml:space="preserve">
+<path d="M7,1.744c-2-3-7-2-7,2c0,3,4,7,4,7s2.417,2.479,3,3c0.583-0.521,3-3,3-3s4-4,4-7C14-0.256,9-1.256,7,1.744z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/heart-white.svg b/static/images/icons-svg/heart-white.svg
new file mode 100644
index 0000000..48fd304
--- /dev/null
+++ b/static/images/icons-svg/heart-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="13.744px" viewBox="0 0 14 13.744" style="enable-background:new 0 0 14 13.744;" xml:space="preserve">
+<path fill="#FFF" d="M7,1.744c-2-3-7-2-7,2c0,3,4,7,4,7s2.417,2.479,3,3c0.583-0.521,3-3,3-3s4-4,4-7C14-0.256,9-1.256,7,1.744z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/home-black.svg b/static/images/icons-svg/home-black.svg
new file mode 100644
index 0000000..a4950a3
--- /dev/null
+++ b/static/images/icons-svg/home-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="7,0 0,7 2,7 2,14 5,14 5,9 9,9 9,14 12,14 12,7 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/home-white.svg b/static/images/icons-svg/home-white.svg
new file mode 100644
index 0000000..b7c1a61
--- /dev/null
+++ b/static/images/icons-svg/home-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="7,0 0,7 2,7 2,14 5,14 5,9 9,9 9,14 12,14 12,7 14,7 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/info-black.svg b/static/images/icons-svg/info-black.svg
new file mode 100644
index 0000000..151cfa2
--- /dev/null
+++ b/static/images/icons-svg/info-black.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M7,0C3.134,0,0,3.134,0,7s3.134,7,7,7s7-3.134,7-7S10.866,0,7,0z M7,2c0.552,0,1,0.447,1,1S7.552,4,7,4S6,3.553,6,3
+ S6.448,2,7,2z M9,11H5v-1h1V6H5V5h3v5h1V11z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/info-white.svg b/static/images/icons-svg/info-white.svg
new file mode 100644
index 0000000..dd0f885
--- /dev/null
+++ b/static/images/icons-svg/info-white.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M7,0C3.134,0,0,3.134,0,7s3.134,7,7,7s7-3.134,7-7S10.866,0,7,0z M7,2c0.552,0,1,0.447,1,1S7.552,4,7,4S6,3.553,6,3
+ S6.448,2,7,2z M9,11H5v-1h1V6H5V5h3v5h1V11z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/location-black.svg b/static/images/icons-svg/location-black.svg
new file mode 100644
index 0000000..16a59b8
--- /dev/null
+++ b/static/images/icons-svg/location-black.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="8px" height="14px" viewBox="0 0 8 14" style="enable-background:new 0 0 8 14;" xml:space="preserve">
+<path d="M4,0C1.791,0,0,1.791,0,4c0,2,4,10,4,10S8,6,8,4C8,1.791,6.209,0,4,0z M4,6C2.896,6,2,5.104,2,4s0.896-2,2-2s2,0.896,2,2
+ S5.104,6,4,6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/location-white.svg b/static/images/icons-svg/location-white.svg
new file mode 100644
index 0000000..ce48397
--- /dev/null
+++ b/static/images/icons-svg/location-white.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="8px" height="14px" viewBox="0 0 8 14" style="enable-background:new 0 0 8 14;" xml:space="preserve">
+<path fill="#FFF" d="M4,0C1.791,0,0,1.791,0,4c0,2,4,10,4,10S8,6,8,4C8,1.791,6.209,0,4,0z M4,6C2.896,6,2,5.104,2,4s0.896-2,2-2s2,0.896,2,2
+ S5.104,6,4,6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/lock-black.svg b/static/images/icons-svg/lock-black.svg
new file mode 100644
index 0000000..deb3d48
--- /dev/null
+++ b/static/images/icons-svg/lock-black.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="14px" viewBox="0 0 12 14" style="enable-background:new 0 0 12 14;" xml:space="preserve">
+<path d="M11,6V5c0-2.762-2.239-5-5-5S1,2.238,1,5v1H0v8h12V6H11z M6.5,9.847V12h-1V9.847C5.207,9.673,5,9.366,5,9
+ c0-0.553,0.448-1,1-1s1,0.447,1,1C7,9.366,6.793,9.673,6.5,9.847z M9,6H3V5c0-1.657,1.343-3,3-3s3,1.343,3,3V6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/lock-white.svg b/static/images/icons-svg/lock-white.svg
new file mode 100644
index 0000000..543cfbb
--- /dev/null
+++ b/static/images/icons-svg/lock-white.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="14px" viewBox="0 0 12 14" style="enable-background:new 0 0 12 14;" xml:space="preserve">
+<path fill="#FFF" d="M11,6V5c0-2.762-2.239-5-5-5S1,2.238,1,5v1H0v8h12V6H11z M6.5,9.847V12h-1V9.847C5.207,9.673,5,9.366,5,9
+ c0-0.553,0.448-1,1-1s1,0.447,1,1C7,9.366,6.793,9.673,6.5,9.847z M9,6H3V5c0-1.657,1.343-3,3-3s3,1.343,3,3V6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/mail-black.svg b/static/images/icons-svg/mail-black.svg
new file mode 100644
index 0000000..827e298
--- /dev/null
+++ b/static/images/icons-svg/mail-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path d="M0,1.75V10h14V1.75L7,7L0,1.75z M14,0H0l7,5L14,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/mail-white.svg b/static/images/icons-svg/mail-white.svg
new file mode 100644
index 0000000..2f0b717
--- /dev/null
+++ b/static/images/icons-svg/mail-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path fill="#FFF" d="M0,1.75V10h14V1.75L7,7L0,1.75z M14,0H0l7,5L14,0z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/minus-black.svg b/static/images/icons-svg/minus-black.svg
new file mode 100644
index 0000000..cd8aec9
--- /dev/null
+++ b/static/images/icons-svg/minus-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="4px" viewBox="0 0 14 4" style="enable-background:new 0 0 14 4;" xml:space="preserve">
+<rect width="14" height="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/minus-white.svg b/static/images/icons-svg/minus-white.svg
new file mode 100644
index 0000000..1e33c63
--- /dev/null
+++ b/static/images/icons-svg/minus-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="4px" viewBox="0 0 14 4" style="enable-background:new 0 0 14 4;" xml:space="preserve">
+<rect fill="#FFF" width="14" height="4"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/navigation-black.svg b/static/images/icons-svg/navigation-black.svg
new file mode 100644
index 0000000..a09c35e
--- /dev/null
+++ b/static/images/icons-svg/navigation-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,0 0,6 8,6 8,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/navigation-white.svg b/static/images/icons-svg/navigation-white.svg
new file mode 100644
index 0000000..38e99c3
--- /dev/null
+++ b/static/images/icons-svg/navigation-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,0 0,6 8,6 8,14 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/phone-black.svg b/static/images/icons-svg/phone-black.svg
new file mode 100644
index 0000000..4879050
--- /dev/null
+++ b/static/images/icons-svg/phone-black.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="13.979px" height="14.016px" viewBox="0 0 13.979 14.016" style="enable-background:new 0 0 13.979 14.016;"
+ xml:space="preserve">
+<path d="M6.939,9.189C6.165,8.557,5.271,7.705,4.497,6.744C3.953,6.071,3.473,5.363,3.969,4.866l-3.482-3.48
+ C-0.021,2.02-1.146,5.04,3.675,9.984c5.08,5.211,8.356,4.096,8.92,3.51l-3.396-3.4C8.725,10.568,8.113,10.146,6.939,9.189z
+ M13.82,11.519v-0.004c0,0-2.649-2.646-2.65-2.648c-0.21-0.21-0.546-0.205-0.754,0.002L9.455,9.831l3.404,3.408
+ c0,0,0.962-0.96,0.961-0.961l0.002-0.001C14.043,12.056,14.021,11.721,13.82,11.519z M5.192,3.644V3.642
+ c0.221-0.222,0.2-0.557,0-0.758V2.881c0,0-2.726-2.724-2.727-2.725C2.255-0.055,1.92-0.05,1.712,0.157L0.751,1.121l3.48,3.483
+ C4.231,4.604,5.192,3.645,5.192,3.644z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/phone-white.svg b/static/images/icons-svg/phone-white.svg
new file mode 100644
index 0000000..d180382
--- /dev/null
+++ b/static/images/icons-svg/phone-white.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="13.979px" height="14.016px" viewBox="0 0 13.979 14.016" style="enable-background:new 0 0 13.979 14.016;"
+ xml:space="preserve">
+<path fill="#FFF" d="M6.939,9.189C6.165,8.557,5.271,7.705,4.497,6.744C3.953,6.071,3.473,5.363,3.969,4.866l-3.482-3.48
+ C-0.021,2.02-1.146,5.04,3.675,9.984c5.08,5.211,8.356,4.096,8.92,3.51l-3.396-3.4C8.725,10.568,8.113,10.146,6.939,9.189z
+ M13.82,11.519v-0.004c0,0-2.649-2.646-2.65-2.648c-0.21-0.21-0.546-0.205-0.754,0.002L9.455,9.831l3.404,3.408
+ c0,0,0.962-0.96,0.961-0.961l0.002-0.001C14.043,12.056,14.021,11.721,13.82,11.519z M5.192,3.644V3.642
+ c0.221-0.222,0.2-0.557,0-0.758V2.881c0,0-2.726-2.724-2.727-2.725C2.255-0.055,1.92-0.05,1.712,0.157L0.751,1.121l3.48,3.483
+ C4.231,4.604,5.192,3.645,5.192,3.644z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/plus-black.svg b/static/images/icons-svg/plus-black.svg
new file mode 100644
index 0000000..2e268b0
--- /dev/null
+++ b/static/images/icons-svg/plus-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon points="14,5 9,5 9,0 5,0 5,5 0,5 0,9 5,9 5,14 9,14 9,9 14,9 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/plus-white.svg b/static/images/icons-svg/plus-white.svg
new file mode 100644
index 0000000..488129f
--- /dev/null
+++ b/static/images/icons-svg/plus-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<polygon fill="#FFF" points="14,5 9,5 9,0 5,0 5,5 0,5 0,9 5,9 5,14 9,14 9,9 14,9 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/power-black.svg b/static/images/icons-svg/power-black.svg
new file mode 100644
index 0000000..c078e27
--- /dev/null
+++ b/static/images/icons-svg/power-black.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="13.896px" viewBox="0 0 12 13.896" style="enable-background:new 0 0 12 13.896;" xml:space="preserve">
+<path d="M10.243,3.356c-0.392-0.401-1.024-0.401-1.415,0c-0.39,0.402-0.39,1.054,0,1.455C9.584,5.59,10,6.623,10,7.722
+ c0,1.1-0.416,2.133-1.172,2.911c-1.511,1.556-4.145,1.556-5.656,0C2.416,9.854,2,8.821,2,7.722c0-1.099,0.416-2.132,1.172-2.91
+ c0.39-0.401,0.39-1.053,0-1.455c-0.391-0.401-1.024-0.401-1.415,0C0.624,4.522,0,6.073,0,7.722c0,1.649,0.624,3.2,1.757,4.366
+ C2.891,13.254,4.397,13.896,6,13.896s3.109-0.643,4.243-1.809C11.376,10.922,12,9.371,12,7.722C12,6.073,11.376,4.522,10.243,3.356z
+ M6,8c0.553,0,1-0.447,1-1V1c0-0.553-0.447-1-1-1S5,0.447,5,1v6C5,7.553,5.447,8,6,8z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/power-white.svg b/static/images/icons-svg/power-white.svg
new file mode 100644
index 0000000..aa5a7a1
--- /dev/null
+++ b/static/images/icons-svg/power-white.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="13.896px" viewBox="0 0 12 13.896" style="enable-background:new 0 0 12 13.896;" xml:space="preserve">
+<path fill="#FFF" d="M10.243,3.356c-0.392-0.401-1.024-0.401-1.415,0c-0.39,0.402-0.39,1.054,0,1.455C9.584,5.59,10,6.623,10,7.722
+ c0,1.1-0.416,2.133-1.172,2.911c-1.511,1.556-4.145,1.556-5.656,0C2.416,9.854,2,8.821,2,7.722c0-1.099,0.416-2.132,1.172-2.91
+ c0.39-0.401,0.39-1.053,0-1.455c-0.391-0.401-1.024-0.401-1.415,0C0.624,4.522,0,6.073,0,7.722c0,1.649,0.624,3.2,1.757,4.366
+ C2.891,13.254,4.397,13.896,6,13.896s3.109-0.643,4.243-1.809C11.376,10.922,12,9.371,12,7.722C12,6.073,11.376,4.522,10.243,3.356z
+ M6,8c0.553,0,1-0.447,1-1V1c0-0.553-0.447-1-1-1S5,0.447,5,1v6C5,7.553,5.447,8,6,8z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/recycle-black.svg b/static/images/icons-svg/recycle-black.svg
new file mode 100644
index 0000000..c481e29
--- /dev/null
+++ b/static/images/icons-svg/recycle-black.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="12px" viewBox="0 0 14 12" style="enable-background:new 0 0 14 12;" xml:space="preserve">
+<path d="M3,6h1L2,3L0,6h1c0,3.313,2.687,6,6,6c0.702,0,1.374-0.127,2-0.349V9.445C8.41,9.789,7.732,10,7,10C4.791,10,3,8.209,3,6z
+ M13,6c0-3.313-2.687-6-6-6C6.298,0,5.626,0.127,5,0.349v2.206C5.59,2.211,6.268,2,7,2c2.209,0,4,1.791,4,4h-1l2,3l2-3H13z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/recycle-white.svg b/static/images/icons-svg/recycle-white.svg
new file mode 100644
index 0000000..11b9c12
--- /dev/null
+++ b/static/images/icons-svg/recycle-white.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="12px" viewBox="0 0 14 12" style="enable-background:new 0 0 14 12;" xml:space="preserve">
+<path fill="#FFF" d="M3,6h1L2,3L0,6h1c0,3.313,2.687,6,6,6c0.702,0,1.374-0.127,2-0.349V9.445C8.41,9.789,7.732,10,7,10C4.791,10,3,8.209,3,6z
+ M13,6c0-3.313-2.687-6-6-6C6.298,0,5.626,0.127,5,0.349v2.206C5.59,2.211,6.268,2,7,2c2.209,0,4,1.791,4,4h-1l2,3l2-3H13z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/refresh-black.svg b/static/images/icons-svg/refresh-black.svg
new file mode 100644
index 0000000..16c978c
--- /dev/null
+++ b/static/images/icons-svg/refresh-black.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14.001px" height="14.002px" viewBox="0 0 14.001 14.002" style="enable-background:new 0 0 14.001 14.002;"
+ xml:space="preserve">
+<path d="M14.001,6.001v-6l-2.06,2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994,2.872,0.153,0.939,3.501
+ c-1.933,3.348-0.786,7.629,2.562,9.562c3.348,1.933,7.629,0.785,9.562-2.562l-1.732-1c-1.381,2.392-4.438,3.211-6.83,1.83
+ s-3.211-4.438-1.83-6.83s4.438-3.211,6.83-1.83c0.389,0.225,0.718,0.506,1.02,0.81l-2.52,2.52H14.001z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/refresh-white.svg b/static/images/icons-svg/refresh-white.svg
new file mode 100644
index 0000000..fa370e6
--- /dev/null
+++ b/static/images/icons-svg/refresh-white.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14.001px" height="14.002px" viewBox="0 0 14.001 14.002" style="enable-background:new 0 0 14.001 14.002;"
+ xml:space="preserve">
+<path fill="#FFF" d="M14.001,6.001v-6l-2.06,2.06c-0.423-0.424-0.897-0.809-1.44-1.122C7.153-0.994,2.872,0.153,0.939,3.501
+ c-1.933,3.348-0.786,7.629,2.562,9.562c3.348,1.933,7.629,0.785,9.562-2.562l-1.732-1c-1.381,2.392-4.438,3.211-6.83,1.83
+ s-3.211-4.438-1.83-6.83s4.438-3.211,6.83-1.83c0.389,0.225,0.718,0.506,1.02,0.81l-2.52,2.52H14.001z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/search-black.svg b/static/images/icons-svg/search-black.svg
new file mode 100644
index 0000000..2b9e863
--- /dev/null
+++ b/static/images/icons-svg/search-black.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="13.701px" height="13.721px" viewBox="0 0 13.701 13.721" style="enable-background:new 0 0 13.701 13.721;"
+ xml:space="preserve">
+<path d="M10.021,8.626C10.638,7.738,11,6.662,11,5.5C11,2.463,8.537,0,5.5,0S0,2.463,0,5.5S2.463,11,5.5,11
+ c1.152,0,2.221-0.356,3.105-0.962l3.682,3.683l1.414-1.414L10.021,8.626z M5.5,9C3.567,9,2,7.433,2,5.5S3.567,2,5.5,2S9,3.567,9,5.5
+ S7.433,9,5.5,9z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/search-white.svg b/static/images/icons-svg/search-white.svg
new file mode 100644
index 0000000..01ccc7c
--- /dev/null
+++ b/static/images/icons-svg/search-white.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="13.701px" height="13.721px" viewBox="0 0 13.701 13.721" style="enable-background:new 0 0 13.701 13.721;"
+ xml:space="preserve">
+<path fill="#FFF" d="M10.021,8.626C10.638,7.738,11,6.662,11,5.5C11,2.463,8.537,0,5.5,0S0,2.463,0,5.5S2.463,11,5.5,11
+ c1.152,0,2.221-0.356,3.105-0.962l3.682,3.683l1.414-1.414L10.021,8.626z M5.5,9C3.567,9,2,7.433,2,5.5S3.567,2,5.5,2S9,3.567,9,5.5
+ S7.433,9,5.5,9z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/shop-black.svg b/static/images/icons-svg/shop-black.svg
new file mode 100644
index 0000000..9e1bd39
--- /dev/null
+++ b/static/images/icons-svg/shop-black.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="14px" viewBox="0 0 12 14" style="enable-background:new 0 0 12 14;" xml:space="preserve">
+<path d="M9,4V3c0-1.657-1.343-3-3-3S3,1.343,3,3v1H0v10h12V4H9z M3.5,6C3.224,6,3,5.776,3,5.5S3.224,5,3.5,5S4,5.224,4,5.5
+ S3.776,6,3.5,6z M4,3c0-1.104,0.896-2,2-2s2,0.896,2,2v1H4V3z M8.5,6C8.224,6,8,5.776,8,5.5S8.224,5,8.5,5S9,5.224,9,5.5
+ S8.776,6,8.5,6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/shop-white.svg b/static/images/icons-svg/shop-white.svg
new file mode 100644
index 0000000..b98cb4b
--- /dev/null
+++ b/static/images/icons-svg/shop-white.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="12px" height="14px" viewBox="0 0 12 14" style="enable-background:new 0 0 12 14;" xml:space="preserve">
+<path fill="#FFF" d="M9,4V3c0-1.657-1.343-3-3-3S3,1.343,3,3v1H0v10h12V4H9z M3.5,6C3.224,6,3,5.776,3,5.5S3.224,5,3.5,5S4,5.224,4,5.5
+ S3.776,6,3.5,6z M4,3c0-1.104,0.896-2,2-2s2,0.896,2,2v1H4V3z M8.5,6C8.224,6,8,5.776,8,5.5S8.224,5,8.5,5S9,5.224,9,5.5
+ S8.776,6,8.5,6z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/star-black.svg b/static/images/icons-svg/star-black.svg
new file mode 100644
index 0000000..f2c1afe
--- /dev/null
+++ b/static/images/icons-svg/star-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="13px" viewBox="0 0 14 13" style="enable-background:new 0 0 14 13;" xml:space="preserve">
+<polygon points="14,5 9,5 7,0 5,5 0,5 4,8 2.625,13 7,10 11.375,13 10,8 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/star-white.svg b/static/images/icons-svg/star-white.svg
new file mode 100644
index 0000000..d15188e
--- /dev/null
+++ b/static/images/icons-svg/star-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="13px" viewBox="0 0 14 13" style="enable-background:new 0 0 14 13;" xml:space="preserve">
+<polygon fill="#FFF" points="14,5 9,5 7,0 5,5 0,5 4,8 2.625,13 7,10 11.375,13 10,8 "/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/tag-black.svg b/static/images/icons-svg/tag-black.svg
new file mode 100644
index 0000000..bd11ae6
--- /dev/null
+++ b/static/images/icons-svg/tag-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M5,0H0v5l9,9l5-5L5,0z M3,4C2.447,4,2,3.553,2,3s0.447-1,1-1s1,0.447,1,1S3.553,4,3,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/tag-white.svg b/static/images/icons-svg/tag-white.svg
new file mode 100644
index 0000000..7cd4a50
--- /dev/null
+++ b/static/images/icons-svg/tag-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M5,0H0v5l9,9l5-5L5,0z M3,4C2.447,4,2,3.553,2,3s0.447-1,1-1s1,0.447,1,1S3.553,4,3,4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/user-black.svg b/static/images/icons-svg/user-black.svg
new file mode 100644
index 0000000..7530c98
--- /dev/null
+++ b/static/images/icons-svg/user-black.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path d="M8.851,10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383,8.49,9.738,7.621,9.891,6.465C10.493,6.355,10.5,5.967,10.5,5.5
+ c0-0.437-0.008-0.804-0.502-0.94C9.999,4.539,10,4.521,10,4.5c0-2.103-1-4-2-4C8,0.5,7.5,0,6.5,0C5,0,4,1.877,4,4.5
+ c0,0.021,0.001,0.039,0.002,0.06C3.508,4.696,3.5,5.063,3.5,5.5c0,0.467,0.007,0.855,0.609,0.965
+ C4.262,7.621,4.617,8.49,5.303,8.997c0.047,0.341,0.026,0.704-0.153,1.104C1.503,10.503,0,12,0,12v2h14v-2
+ C14,12,12.497,10.503,8.851,10.101z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/user-white.svg b/static/images/icons-svg/user-white.svg
new file mode 100644
index 0000000..5528c2e
--- /dev/null
+++ b/static/images/icons-svg/user-white.svg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="14px" viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
+<path fill="#FFF" d="M8.851,10.101c-0.18-0.399-0.2-0.763-0.153-1.104C9.383,8.49,9.738,7.621,9.891,6.465C10.493,6.355,10.5,5.967,10.5,5.5
+ c0-0.437-0.008-0.804-0.502-0.94C9.999,4.539,10,4.521,10,4.5c0-2.103-1-4-2-4C8,0.5,7.5,0,6.5,0C5,0,4,1.877,4,4.5
+ c0,0.021,0.001,0.039,0.002,0.06C3.508,4.696,3.5,5.063,3.5,5.5c0,0.467,0.007,0.855,0.609,0.965
+ C4.262,7.621,4.617,8.49,5.303,8.997c0.047,0.341,0.026,0.704-0.153,1.104C1.503,10.503,0,12,0,12v2h14v-2
+ C14,12,12.497,10.503,8.851,10.101z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/video-black.svg b/static/images/icons-svg/video-black.svg
new file mode 100644
index 0000000..cc50181
--- /dev/null
+++ b/static/images/icons-svg/video-black.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path d="M8,0H2C0.896,0,0,0.896,0,2v6c0,1.104,0.896,2,2,2h6c1.104,0,2-0.896,2-2V5V2C10,0.896,9.104,0,8,0z M10,5l4,4V1L10,5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/icons-svg/video-white.svg b/static/images/icons-svg/video-white.svg
new file mode 100644
index 0000000..ddcdf16
--- /dev/null
+++ b/static/images/icons-svg/video-white.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="14px" height="10px" viewBox="0 0 14 10" style="enable-background:new 0 0 14 10;" xml:space="preserve">
+<path fill="#FFF" d="M8,0H2C0.896,0,0,0.896,0,2v6c0,1.104,0.896,2,2,2h6c1.104,0,2-0.896,2-2V5V2C10,0.896,9.104,0,8,0z M10,5l4,4V1L10,5z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/static/images/loading.gif b/static/images/loading.gif
new file mode 100644
index 0000000..b143d4f
--- /dev/null
+++ b/static/images/loading.gif
Binary files differ
diff --git a/static/js/base.js b/static/js/base.js
new file mode 100644
index 0000000..2920c25
--- /dev/null
+++ b/static/js/base.js
@@ -0,0 +1,200 @@
+/*
+ *
+ * Copyright (C) 2026 Private Island Networks Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * file: base.js
+ *
+ */
+
+ "use strict";
+
+const STATUS = {
+ OK: 10,
+ FORM: 20,
+ DUPLICATE: 30,
+ REDIRECT: 100,
+ UNBOUND_FORM: 0,
+ ERROR_CSRF: -1,
+ ERROR_PARAMS: -2,
+ ERROR_SERVER: -3,
+ ERROR_COOKIES: -4,
+ ERROR_TAMPER: -5,
+};
+
+const PORT_PHY0 = 0;
+const PORT_PHY1 = 1;
+const PORT_PHY2 = 2;
+const PORT_PC = 10;
+
+const MSG_FORMAT_BASIC = 0;
+const MSG_FORMAT_CONTROLLER = 1;
+const MSG_FORMAT_MLE = 2;
+
+const MODE_IDLE = 0;
+const MODE_LIVE = 1;
+const MODE_FILE = 2;
+
+const MSG_TYPE_NULL = 0
+const MSG_TYPE_WRITE = 1;
+const MSG_TYPE_READ = 2;
+const MSG_TYPE_REPLY_SUCCESS = 3;
+const MSG_TYPE_REPLY_ERROR = 4;
+const MSG_TYPE_NOTIY = 5;
+const MSG_TYPE_MLE = 0X10;
+const MSG_MAP = { MSG_TYPE_NULL : "NULL", MSG_TYPE_WRITE : "Write", MSG_TYPE_READ : "Read",
+ MSG_TYPE_REPLY_SUCCESS : "Success", MSG_TYPE_REPLY_ERROR : "Error", MSG_TYPE_NOTIY : "Notify",
+ MSG_TYPE_MLE : "MLE"};
+
+/**
+ * Convert the server's response from JSON (string) to JS object form and
+ * gracefully handle an exception
+ */
+function getResponse(resp) {
+ try {
+ resp = JSON.parse(resp);
+ } catch (err) {
+ resp = {};
+ resp.d = "";
+ resp.r = MC_CONSTANTS.SERVER;
+ }
+
+ return resp;
+}
+
+function getString(obj) {
+ var result = "";
+ for (var key in obj) {
+ if (result) {
+ result += "&";
+ }
+ result += key + "=" + encodeURIComponent(obj[key]);
+ }
+ return result;
+}
+
+function getPrefix() {
+ return window.location.pathname.split('/')[1]; // eg., /todos/<function>
+}
+
+/**
+ * Alert the user depending on error returned by the server. Todo: consider
+ * using jqm popups instead of alert
+ */
+function processError(resp) {
+ $.loading('none');
+ if (resp.r === MC_CONSTANTS.COOKIES || resp.r === MC_CONSTANTS.CSRF) {
+ alert("Error saving your submission. Cookies may be blocked. Please modify your browser's settings and try again including refreshing this page");
+ } else if (resp.r === MC_CONSTANTS.TAMPER) {
+ alert("Our web server is in an inconsistent state with your browser. Please refresh your page and try again.");
+ } else {
+ alert("Server error. Sorry about the trouble. It's been logged, and our team will look into it");
+ }
+}
+
+
+function $(selector, el) {
+ if (!el) {
+ el = document;
+ }
+ return el.querySelector(selector);
+}
+
+$.loading = function(display) {
+ $('#mc-loading').style.display = display;
+};
+
+
+$.get = function(url, data, callback) {
+ var xhr = new XMLHttpRequest();
+
+ xhr.addEventListener("progress", updateProgress);
+ xhr.addEventListener("load", transferComplete);
+ xhr.addEventListener("error", transferFailed);
+ xhr.addEventListener("abort", transferCanceled);
+
+ if (data) {
+ url += "?" + getString(data);
+ }
+
+ xhr.open('GET', url, true);
+
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+ xhr.send(null);
+
+ function updateProgress(event) {
+ // was:event.loaded / event.total
+ console.log('updateProgress');
+ }
+
+ function transferComplete(event) {
+ callback(event.target.response);
+ }
+
+ function transferFailed(event) {
+ console.log('transferFailed');
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ }
+
+ function transferCanceled(event) {
+ console.log('transferCanceled');
+ }
+};
+
+$.post = function(url, data, callback) {
+ var xhr = new XMLHttpRequest();
+ xhr.open('POST', url, true);
+
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+ if (!(data instanceof FormData)) {
+ xhr.setRequestHeader("Content-type",
+ "application/x-www-form-urlencoded");
+ data = getString(data);
+ }
+
+ xhr.onreadystatechange = function(event) {
+ if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
+ callback(event.target.response);
+ }
+ };
+
+ xhr.send(data);
+};
+
+function $$(selector, el) {
+ if (!el) {
+ el = document;
+ }
+ return el.querySelectorAll(selector);
+ // Note: the returned object is a NodeList.
+ // If you'd like to convert it to a Array for convenience, use this instead:
+ // return Array.prototype.slice.call(el.querySelectorAll(selector));
+}
+
+// MDN: Assigning to an undeclared variable throws a ReferenceError
+function isStrictMode() {
+ try {
+ mc_doesNotExist = true;
+ }
+ catch(E) {
+ console.log(E.message);
+ return true;
+ }
+ return false;
+}
+
+
diff --git a/static/js/controller.js b/static/js/controller.js
new file mode 100644
index 0000000..a12362b
--- /dev/null
+++ b/static/js/controller.js
@@ -0,0 +1,93 @@
+/*
+ *
+ * Copyright (C) 2026 Private Island Networks Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * file: controller.js
+ *
+ *
+ */
+
+function ajaxData() {
+ var data = {};
+ return data;
+}
+
+
+function log_msg(msg) {
+ let msg_str = '';
+
+ msg_str += msg.type + ': ' + msg.address + ' ' + msg.data + '<br>';
+
+ return msg_str;
+}
+
+function postControllerMsg(event) {
+ $.loading('block');
+ event.preventDefault();
+ console.log("postControllerMsg");
+
+ let fd = new FormData($('#mc-cont_message'));
+ fd.append('dummy', 'foo')
+
+ $.post("/controller", fd, function(resp) {
+ $.loading('none');
+ resp = JSON.parse(resp);
+ if (resp.r == STATUS.OK) {
+ let log = document.getElementById('mc-log');
+ let height = 2 * resp.d.length;
+ for (let i=0; i < resp.d.length; i++) {
+ msg = resp.d[i];
+ if (msg.port == PORT_PC) {
+ log.innerHTML += '<div class="mc-log-row style=height:' + height.toString() + 'rem"><div class="mc-log-col-time">' + msg.time + '</div>' +
+ '<div class="mc-log-col-pc">' + log_msg(msg) + '</div>' +
+ '<div class="mc-log-col-phy0"></div>' +
+ '<div class="mc-log-col-phy1"></div></div>';
+ }
+ else if (msg.port == PORT_PHY0) {
+ log.innerHTML += '<div class="mc-log-row"><div class="mc-log-col-time">' + msg.time + '</div>' +
+ '<div class="mc-log-col-pc"></div>' +
+ '<div class="mc-log-col-phy0">' + log_msg(msg) +
+ '</div><div class="mc-log-col-phy1"></div></div>';
+ }
+ }
+ }
+
+ console.log("done");
+ });
+
+}
+
+/*
+The DOMContentLoaded event fires as soon as the HTML document has been fully parsed,
+which typically occurs long before images, stylesheets, and other external resources
+have loaded.
+*/
+window.addEventListener("DOMContentLoaded", function(e) {
+ var MsgForm = $('#mc-cont_message')
+ try {
+ // $('button[value=submit]').addEventListener('click', postControllerMsg);
+ MsgForm.addEventListener('submit', postControllerMsg);
+ } catch (event) {
+ }
+});
+
+/*
+The load event is essential for operations that require the entire web page to be fully loaded,
+including all dependent resources like images and stylesheets.
+This event ensures that every element is available for script manipulation.
+*/
+window.addEventListener("load", function(e) {
+ console.log("controller loaded");
+}); \ No newline at end of file
diff --git a/static/js/lmmi.js b/static/js/lmmi.js
new file mode 100644
index 0000000..5cad4e5
--- /dev/null
+++ b/static/js/lmmi.js
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (C) 2026 Private Island Networks Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * file: lmmi.js
+ *
+ *
+ */
+
+ "use strict";
+
+function ajaxData() {
+ var data = {};
+ return data;
+}
+
+/*
+The load event is essential for operations that require the entire web page to be fully loaded,
+including all dependent resources like images and stylesheets.
+This event ensures that every element is available for script manipulation.
+*/
+window.addEventListener("load", function(e) {
+
+ ss = spreadSheet('.mc-ss-main-panel');
+ $('#mc-ss-reload-all').addEventListener('click', ss.getNewTable);
+ console.log("lmmi loaded");
+}); \ No newline at end of file
diff --git a/static/js/main.js b/static/js/main.js
new file mode 100644
index 0000000..3caa3a7
--- /dev/null
+++ b/static/js/main.js
@@ -0,0 +1,118 @@
+/*
+ *
+ * Copyright (C) 2026 Private Island Networks Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * file: main.js
+ *
+ */
+
+
+"use strict";
+
+let selected_mode = MODE_LIVE;
+
+window.addEventListener("load", function(e) {
+ // re-initialize controls, as needed
+ /*
+ $('#mc-mode-live').checked=true;
+ $('#mc-filename').value = null; // clear any file that was previously selected
+
+ // set up event listeners
+ $('#mc-mode-live').addEventListener('change',wl_changeMode);
+ $('#mc-mode-file').addEventListener('change',wl_changeMode);
+ $('#mc-filename').addEventListener('change',wl_filename);
+ $('#mc-start').addEventListener('click', wl_start);
+ $('#mc-stop').addEventListener('click', wl_stop);
+ $('#mc-help').addEventListener('click', wl_help);
+ $('#mc-clear').addEventListener('click', wl_clear);
+ */
+ console.log("strict mode test: ",isStrictMode());
+});
+
+
+function wl_changeMode(event) {
+ event.preventDefault();
+ console.log('change mode: ',event.target.id);
+ if (event.target.id == "mc-mode-file") {
+ selected_mode = MODE_FILE;
+ }
+ else {
+ selected_mode = MODE_LIVE;
+ }
+}
+
+function wl_filename(event) {
+ event.preventDefault();
+ $.loading('block');
+
+ let data = { 'filename': event.target.files[0].name };
+
+ $.post("/filename", data, function(resp) {
+ console.log("filename");
+ });
+
+ $.loading('none');
+}
+
+function wl_start(event) {
+ event.preventDefault();
+ let data = { 'mode': selected_mode }
+ $.loading('block');
+
+ $.post("/start", data, function(resp) {
+ $('#mc-mode').innerText = "Running";
+ });
+ // await new Promise(r => setTimeout(r, 1000));
+ $.loading('none');
+}
+
+function wl_stop(event) {
+ event.preventDefault();
+ let data = { 'mode': MODE_IDLE }
+ $('#mc-mode').innerText = "Idle";
+ $.loading('block');
+ $.post("/stop", data, function(resp) {
+ $('#mc-mode').innerText = "Idle";
+ });
+ $.loading('none');
+}
+
+function wl_help(event) {
+ event.preventDefault();
+ m = modal('large');
+ /* jshint multistr: true */
+ m.display('<h2>GEODSS WebLogger Help:</h2> \
+ <img width=800px src="/static/fiber_tap.svg">');
+}
+
+function wl_clear(event) {
+ event.preventDefault();
+ let log = $('#mc-log');
+ while (log.firstChild) {
+ log.removeChild(log.firstChild);
+ }
+}
+
+function update_fw_version(fw_version) {
+ $('#mc-fw-version').innerText = fw_version.substring(2,4);
+}
+
+function update_fw_increment(fw_increment) {
+ $('#mc-fw-increment').innerText = fw_increment.substring(2,4);
+}
+
+function update_temperature(temperature) {
+ $('#mc-temperature').innerText = parseInt(temperature,16) + " \xB0F";
+}
diff --git a/static/js/mdio.js b/static/js/mdio.js
new file mode 100644
index 0000000..9185450
--- /dev/null
+++ b/static/js/mdio.js
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2026 Private Island Networks Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * file: mdio.js
+ *
+ */
+
+ "use strict";
+
+function ajaxData() {
+ var data = {};
+ return data;
+}
+
+/*
+The load event is essential for operations that require the entire web page to be fully loaded,
+including all dependent resources like images and stylesheets.
+This event ensures that every element is available for script manipulation.
+*/
+window.addEventListener("load", function(e) {
+ var ss = spreadSheet('.mc-ss-main-panel');
+ $('#mc-ss-reload-all').addEventListener('click', ss.getNewTable);
+ console.log("mdio loaded");
+}); \ No newline at end of file
diff --git a/static/js/mle.js b/static/js/mle.js
new file mode 100644
index 0000000..0a28665
--- /dev/null
+++ b/static/js/mle.js
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2026 Private Island Networks Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * file: mle.js
+ *
+ */
+
+ "use strict";
+
+function ajaxData() {
+ var data = {};
+ return data;
+}
+
+/*
+The load event is essential for operations that require the entire web page to be fully loaded,
+including all dependent resources like images and stylesheets.
+This event ensures that every element is available for script manipulation.
+*/
+window.addEventListener("load", function(e) {
+
+ console.log("mle loaded");
+}); \ No newline at end of file
diff --git a/static/js/modal.js b/static/js/modal.js
new file mode 100644
index 0000000..af4763b
--- /dev/null
+++ b/static/js/modal.js
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2026 Private Island Networks Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * file: modal.js
+ *
+ */
+
+"use strict";
+
+/*
+ * Modal TODO: stop using ids
+ * Only add and remove classes programmatically
+ *
+ */
+
+function Modal(size) {
+ var modal = this;
+ this.modalContainer = $('#mc-modal');
+ this.modalBody = $('#mc-modal-body', this.modalContainer);
+ this.modalBackdrop = $('#mc-modal-backdrop', this.modalContainer);
+ this.modalClose = $('#mc-modal-close', this.modalContainer);
+
+ this.modalBody.classList="";
+
+ if (size !== undefined) {
+ this.modalBody.classList.add('mc-' + size);
+ }
+
+ this.modalClose.addEventListener('click', function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ modal.modalContainer.style.display = 'none';
+ if ($('#mc-modal-content')) {
+ el = $('#mc-modal-content');
+ el.remove(); // IE supports removeNode
+ }
+ });
+ this.modalBackdrop.addEventListener('click', function(event) {
+ event.preventDefault();
+ event.stopPropagation();
+ });
+}
+
+Modal.prototype = {
+ constructor : Modal,
+ display : modal_display,
+ hide : modal_hide,
+ clean : modal_clean,
+};
+
+function modal(size) {
+ return new Modal(size);
+}
+
+function modal_display(content) {
+ var img, body, ratio, oldWidth, oldHeight;
+ this.clean();
+
+ if (content instanceof HTMLImageElement) {
+ img = content;
+ body = $('#mc-modal-body');
+
+ ratio = img.width / img.height;
+
+ /* todo use the bigger img dimension */
+ if (window.innerWidth - img.width < 20) {
+ img.width = window.innerWidth - 80;
+ img.height = img.width / ratio;
+ }
+
+ if (window.innerHeight - img.height < 20) {
+ img.height = window.innerHeight - 80;
+ }
+
+ body.style.top = String((window.innerHeight - img.height - 64) / 2) + 'px';
+ body.style.bottom = String((window.innerHeight - img.height - 64) / 2) + 'px';
+ body.style.left = String((window.innerWidth - img.width - 64) / 2) + 'px';
+ body.style.right = String((window.innerWidth - img.width - 64) / 2) + 'px';
+
+ el = document.createElement("div");
+ el.id = "mc-modal-content";
+ el.innerHTML = '<img src="' + img.src + '">';
+ this.modalBody.appendChild(el);
+
+ } else {
+ el = document.createElement("div");
+ el.id = "mc-modal-content";
+ el.innerHTML = content;
+ this.modalBody.appendChild(el);
+ var dateInputs = $$('.mc-date', this.modalBody);
+ dateInputs.forEach(function(val) {
+ val.addEventListener('click', setDate);
+ });
+ }
+
+ this.modalContainer.style.display = 'block';
+}
+
+function modal_hide() {
+ this.modalContainer.style.display = 'none';
+}
+
+function modal_clean() {
+ var el;
+ if ((el = $('#mc-modal-content', this.modalContainer))) {
+ el.remove();
+ }
+} \ No newline at end of file
diff --git a/static/js/ss.js b/static/js/ss.js
new file mode 100644
index 0000000..6f0310f
--- /dev/null
+++ b/static/js/ss.js
@@ -0,0 +1,302 @@
+/*
+ * Copyright (C) 2026 Private Island Networks Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * file: ss.js
+ *
+ */
+
+"use strict";
+
+/* constructor spreadsheet */
+function SpreadSheet(selector) {
+ var ss = this;
+ this.activeCell = null;
+ this.panel = $(selector);
+ this.panel.addEventListener('click', function(event){
+
+ if (event.target.classList.contains('mc-edit')) {
+ ss.editCell.call(ss, event);
+ }
+ else if (event.target.classList.contains('mc-icon') || event.target.nodeName==="IMG") {
+ ss.actions.call(ss, event);
+ }
+ else if (event.target.classList.contains('mc-sortable')) {
+ data = ajaxData();
+ data.sort=event.target.innerHTML.toLowerCase();
+ ss.getNewTable(event,data);
+ }
+ });
+ this.getNewTable = function(event, data) {
+ $.loading('block');
+ if (data == undefined) {
+ data = ajaxData();
+ }
+ $.get('/' + getPrefix(), data, function(resp) {
+ resp = JSON.parse(resp);
+ let values = resp.values;
+ console.log(resp.values);
+ cols=$$(".mc-values");
+ for (let i = 0; i < 16; i++) {
+ cols[i].textContent = "0x" + values[i].toString(16);
+ }
+ $.loading('none');
+ });
+ }
+}
+
+SpreadSheet.prototype = {
+ constructor: SpreadSheet,
+ actions: spreadSheet_actions,
+ editCell: spreadSheet_editCell,
+ newRow: spreadSheet_newRow
+};
+
+function spreadSheet(selector) {
+ return new SpreadSheet(selector);
+}
+
+function spreadSheet_actions(event) {
+ event.preventDefault(); // this fixed my href bug on 3/2/18!
+ $.loading('block');
+ var ss = this;
+ var link, icon, td, tr, id, action, txt, el, data, m;
+
+ if (event.target.nodeName==="IMG") {
+ icon = event.target;
+ link = icon.parentNode;
+ }
+ else {
+ link=event.target;
+ }
+
+ action=link.dataset.action;
+
+ td=link.parentNode.parentNode; // link is wrapped in a div and then a td cell
+ tr = td.parentElement;
+ id = tr.dataset.id;
+
+ txt = td.innerHTML;
+
+ // modal actions
+ if (action === 'edit' || action === 'cut' || action === 'notify' || action === 'modify') {
+
+ $.get('/' + getPrefix() + '/' + action + '/' + id, null,
+ function(resp) {
+ var resp = getResponse(resp);
+ $.loading('none');
+
+ if (action === 'edit') {
+ m = modal('large');
+ }
+ else {
+ m = modal();
+ }
+
+ if (resp.r === MC_CONSTANTS.REDIRECT) {
+ window.location.assign(resp.d);
+ } else if (resp.r === MC_CONSTANTS.NONE) {
+ m.display(resp.d)
+ $('button[value="submit"]', m.modalContainer)
+ .addEventListener('click', submitForm);
+ } else {
+ processError(resp);
+ }
+ })
+ }
+
+ // replace object actions
+ else if (action === "recalc") {
+ $.get('/' + getPrefix() + '/' + action + '/' + id, null, function(resp) {
+ var resp = getResponse(resp);
+ $.loading('none');
+ tr.innerHTML = resp.d;
+ if (resp.n) {
+ m = modal('large');
+ m.display(resp.n);
+ }
+ });
+ }
+
+ function submitForm(e) {
+ console.log('submit Form');
+ $.loading('block');
+ var form = $('form', m.modalContainer);
+ // var nodes = form.childNodes;
+ var data = new FormData(form);
+ // nodes.forEach(addToFormData, data);
+
+ $.post('/' + getPrefix() + '/' + action + '/' + id, data, function(resp) {
+ resp = getResponse(resp);
+ if (resp.r === MC_CONSTANTS.NONE) {
+ m.hide();
+ ss.getNewTable(e);
+ } else if (resp.r === MC_CONSTANTS.FORM) {
+ form.innerHTML=resp.d;
+ $('button[value="submit"]',m.modalContainer).addEventListener('click', submitForm );
+ } else {
+ processError(resp);
+ }
+ $.loading('none');
+ });
+ }
+}
+
+/* set up a handler for a new SpreadSheet item / row */
+function spreadSheet_newRow(selector) {
+ var ss = this;
+ var m = modal('large');
+ try{
+ $(selector).addEventListener('click',function(event) {
+ $.get('/' + getPrefix() + '/new/', null, function(resp) {
+
+ resp = getResponse(resp);
+ if (resp.r === MC_CONSTANTS.NONE) {
+ m.display(resp.d);
+ $('button[value="submit"]', m.modalContainer).addEventListener('click', submitForm);
+ } else {
+ processError(resp);
+ }
+ });
+ });
+ }
+ catch(event) {
+ console.log('spreadSheet_newRow problem')
+ }
+
+ function submitForm(e) {
+ $.loading('block');
+ var form = $('form', m.modalContainer);
+ var nodes = form.childNodes;
+ var data = new FormData();
+ nodes.forEach(addToFormData, data);
+
+ $.post('/' + getPrefix() + '/new/', data, function(resp) {
+ resp = getResponse(resp);
+ if (resp.r === MC_CONSTANTS.NONE) {
+ m.hide();
+ ss.getNewTable(e);
+ } else if (resp.r === MC_CONSTANTS.FORM) {
+ form.innerHTML=resp.d;
+ $('button[value="submit"]',m.modalContainer).addEventListener('click', submitForm );
+ } else {
+ processError(resp);
+ }
+ $.loading('none');
+ });
+ }
+}
+
+
+function spreadSheet_editCell(event) {
+ console.log('editCell');
+ var td=event.target;
+ var tr = td.parentElement;
+ var id = tr.dataset.id;
+ var type=td.dataset.type;
+ var field=td.dataset.field;
+ var txt = td.innerHTML;
+ var el, data;
+
+ if (type==="text") {
+ td.innerHTML="";
+ el = document.createElement("input");
+ el.addEventListener('keypress', keyHandler);
+ $('body').addEventListener('click',clickHandler);
+ // append the input
+ el.className="mc-ss-input"
+ el.value=txt;
+ td.appendChild(el);
+ el.focus();
+ }
+
+ /* TODO: do I need to be worried that the handler won't be set in time? */
+ else if (type==="date") {
+ var cal = calendar('.mc-cal');
+ cal.container.addEventListener("evtCalClose", calCloseHandler);
+ cal.open(td);
+ }
+
+ /* calendar has been closed */
+ function calCloseHandler(event) {
+ console.log('calCloseHandler');
+ cal.container.removeEventListener('evtCalClose',calCloseHandler);
+
+ if (event.detail.cancel) {
+ return;
+ }
+
+ $.loading('block');
+ data = {
+ id: id,
+ field: "date",
+ value: cal.getSelectedDate().toISOString(),
+ };
+
+ $.post('/' + getPrefix() + '/modify', data, function(resp) {
+ resp = getResponse(resp);
+ if(resp.r == MC_CONSTANTS.NONE) {
+ td.innerHTML=resp.d;
+ }
+ else {
+ processError(resp);
+ }
+ $.loading('none');
+ });
+ }
+
+ function keyHandler(event) {
+ console.log(keyHandler);
+ var el = event.target;
+ var key = event.keyCode;
+ var txt = el.value;
+
+ if (key==27) {
+ event.preventDefault();
+ el.remove();
+ td.innerHTML=txt;
+ }
+ else if (key==13) {
+ event.preventDefault();
+ var data = {
+ id: id,
+ field: field,
+ value: txt,
+ };
+
+ el.remove();
+ td.innerHTML=txt;
+
+ $.post('/' + getPrefix() + '/modify', data, function(response) {
+ console.log("upload text suceeded");
+ });
+ }
+ }
+
+ function clickHandler(event) {
+ console.log('clickHandler');
+ if(event.target.nodeName==="TD") {
+ return; // don't cancel out of a cell we just clicked
+ }
+ $('body').removeEventListener('click',clickHandler);
+ var children = td.childNodes;
+ children.forEach(function(val) {
+ val.remove();
+ })
+ td.innerHTML=txt;
+ }
+}
+
+
+ \ No newline at end of file
diff --git a/static/js/ws.js b/static/js/ws.js
new file mode 100644
index 0000000..bc814ff
--- /dev/null
+++ b/static/js/ws.js
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2026 Private Island Networks Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * file: ws.js
+ *
+ */
+
+"use strict";
+
+let socket = new WebSocket("ws://localhost:8010/logger");
+console.log("here we go");
+let state = "Wait";
+let log = document.getElementById('mc-log');
+
+function log_msg(msg) {
+ let msg_str = '';
+
+ if (msg.num_cmds > 1) {
+ console.log('multi commands');
+ }
+
+ for (let i = 0; i < msg.num_cmds; i++) {
+ if (msg.cmds[i][0].includes('RDREG') || msg.cmds[i][0].includes('GETTEMP')) {
+ msg_str += msg.cmds[i][0] + ' ' + msg.cmds[i][1] + '<br>';
+ }
+ else if (msg.cmds[i][0] == "" && (msg.cmds[i][1] == "PHY1_STATUS" || msg.cmds[i][1] == "PHY2_STATUS")) {
+ let val = parseInt(msg.cmds[i][2], 16) & 0x8;
+ if (val) {
+ msg_str += msg.cmds[i][1] + ': LOS = 1' + '<br>';
+ }
+ else {
+ msg_str += msg.cmds[i][1] + ': LOS = 0' + '<br>';
+ }
+ }
+ else {
+ msg_str += msg.cmds[i][0] + ' ' + msg.cmds[i][1] + ' ' + msg.cmds[i][2] + '<br>';
+ }
+ }
+
+ return msg_str;
+}
+
+// setInterval(function(){console.log(state)},1000);
+
+socket.onopen = function(e) {
+ console.log("[open] Connection established");
+ console.log("Sending to server");
+ socket.send("open"); // can send data as a string, Blob, or ArrayBuffer.
+};
+
+function update_mode(mode) {
+ if (mode == MODE_IDLE)
+ $('#mc-mode').innerText = "Idle";
+ else if (mode == MODE_LIVE || mode == MODE_FILE)
+ $('#mc-mode').innerText = "Running";
+ else
+ console.log("unsupported mode")
+}
+
+socket.onmessage = function(event) {
+ let num_msgs = 0;
+
+ let msg = JSON.parse(event.data);
+ if (msg.format == MSG_FORMAT_BASIC) {
+ if (typeof msg['mode'] !== "undefined") {
+ console.log("mode: ", msg['mode']);
+ update_mode(msg['mode']);
+ }
+ else if (typeof msg['fw_version'] !== "undefined") {
+ console.log("fw_version: ", msg['fw_version']);
+ update_fw_version(msg['fw_version']);
+ }
+ else if (typeof msg['fw_increment'] !== "undefined") {
+ console.log("fw_increment: ", msg['fw_increment']);
+ update_fw_increment(msg['fw_increment']);
+ }
+ else if (typeof msg['temperature'] !== "undefined") {
+ console.log("temperature: ", msg['temperature']);
+ update_temperature(msg['temperature']);
+ }
+ else
+ console.log("unsupported control");
+
+ return;
+ }
+
+ let height = 2 * msg.num_cmds;
+ if (height == 0) {
+ height = 2;
+ }
+
+ num_msgs += 1;
+ console.log("From server:", num_msgs, ': ', msg);
+
+ if (msg.port == PORT_PC) {
+ log.innerHTML += '<div class="mc-log-row style=height:' + height.toString() + 'rem"><div class="mc-log-col-time">' + msg.time + '</div>' +
+ '<div class="mc-log-col-pc">' + log_msg(msg) + '</div>' +
+ '<div class="mc-log-col-phy0"></div>' +
+ '<div class="mc-log-col-phy1"></div></div>';
+ }
+ else if (msg.port == PORT_PHY0) {
+ log.innerHTML += '<div class="mc-log-row"><div class="mc-log-col-time">' + msg.time + '</div>' +
+ '<div class="mc-log-col-pc"></div>' +
+ '<div class="mc-log-col-phy0">' + log_msg(msg) +
+ '</div><div class="mc-log-col-phy1"></div></div>';
+ }
+ else if (msg.port == PORT_PHY1) {
+ log.innerHTML += '<div class="mc-log-row"><div class="mc-log-col-time">' + msg.time + '</div>' +
+ '<div class="mc-log-col-pc"></div>' +
+ '<div class="mc-log-col-phy0"></div>' +
+ '<div class="mc-log-col-phy1">' + log_msg(msg) + '</div></div>';
+ }
+
+ // socket.send("request");
+ state = "Request"
+};
+
+socket.onclose = function(event) {
+ state = "Closed"
+ if (event.wasClean) {
+ console.log(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
+ } else {
+ // e.g. server process killed or network down
+ // event.code is usually 1006 in this case
+ console.log('[close] Connection died');
+ }
+};
+
+socket.onerror = function(error) {
+ state = "Error"
+ console.log(`[error]`);
+};
+
+// When you've finished using the WebSocket connection,
+// call the WebSocket method close():

Highly Recommended Verilog Books