aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--index.html2
-rw-r--r--main.a4da0525.js13
-rw-r--r--main.a4da0525.js.map1
-rw-r--r--main.ea7a67f6.js13
-rw-r--r--main.ea7a67f6.js.map1
-rw-r--r--service-worker.js4
-rw-r--r--styles.27f55dac.css.map1
-rw-r--r--styles.6ffd6063.css (renamed from styles.27f55dac.css)4
-rw-r--r--styles.6ffd6063.css.map1
9 files changed, 20 insertions, 20 deletions
diff --git a/index.html b/index.html
index 7194eb8..0923b12 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en" dir="ltr"><head><meta charset="utf-8"><meta name="viewport" content="viewport-fit=cover,width=device-width, initial-scale=1, shrink-to-fit=no,initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><meta name="HandheldFriendly" content="true"><title>HOVER:BIT Controller</title><link rel="canonical"><link rel="stylesheet" type="text/css" href="/hoverbit-ble/styles.27f55dac.css"><link rel="manifest" href="/hoverbit-ble/manifest.webmanifest" crossorigin="use-credentials"><link rel="preconnect" href="https://fonts.gstatic.com"><link href="https://fonts.googleapis.com/css2?family=Kufam&display=swap" rel="stylesheet"></head><body> <div class="app-info"> <h1>HOVER:BIT Controller</h1> <span class="version">1.0.8-alpha.4</span> </div> <div class="landscape-warning"> <div class="landscape-warning-content"> <i class="fa-sync-alt fas"></i> <h1>Please use landscape mode</h1> <button id="btn_ignore_landscape_warning">Ignore</button> </div> </div> <div class="top-buttons"> </div> <button class="button-center button-center-top" id="btn_connect">CONNECT</button> <button class="button-center button-center-top" id="btn_disconnect">DISCONNECT</button> <div class="acc-string"><pre>T: 0, R: 0</pre></div> <button class="button-center button-center-bottom" id="btn_arm">ARM</button> <button class="button-center button-center-bottom" id="btn_disarm">DISARM</button> <div class="joystick joystick-left"></div> <div class="joystick joystick-right"></div> <div class="statusline"> <span class="connection statusline-item"> <i class="fa-bluetooth-b fab"></i> </span> <span class="arm statusline-item"> <i class="fa-exclamation-triangle fas"></i> </span> <span class="notification-area"></span> <span class="ping statusline-item"> <i class="fa-broadcast-tower fas"></i> </span> <span class="battery statusline-item"> <i class="fa-car-battery fas"></i> <span class="battery-status">0%</span> </span> </div> <script type="text/javascript" src="/hoverbit-ble/main.a4da0525.js"></script> </body></html>
+<!DOCTYPE html><html lang="en" dir="ltr"><head><meta charset="utf-8"><meta name="viewport" content="viewport-fit=cover,width=device-width, initial-scale=1, shrink-to-fit=no,initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><meta name="HandheldFriendly" content="true"><title>HOVER:BIT Controller</title><link rel="canonical"><link rel="stylesheet" type="text/css" href="/hoverbit-ble/styles.6ffd6063.css"><link rel="manifest" href="/hoverbit-ble/manifest.webmanifest" crossorigin="use-credentials"><link rel="preconnect" href="https://fonts.gstatic.com"><link href="https://fonts.googleapis.com/css2?family=Kufam&display=swap" rel="stylesheet"></head><body> <div class="app-info"> <h1>HOVER:BIT Controller</h1> <span class="version">1.1.1</span> </div> <div class="landscape-warning"> <div class="landscape-warning-content"> <i class="fa-sync-alt fas"></i> <h1>Please use landscape mode</h1> <button id="btn_ignore_landscape_warning">Ignore</button> </div> </div> <div class="top-buttons"> </div> <button class="button-center button-center-top" id="btn_connect">CONNECT</button> <button class="button-center button-center-top" id="btn_disconnect">DISCONNECT</button> <div class="acc-string"><pre>T: 0, R: 0</pre></div> <button class="button-center button-center-bottom" id="btn_arm">ARM</button> <button class="button-center button-center-bottom" id="btn_disarm">DISARM</button> <div class="joystick joystick-left"></div> <div class="joystick joystick-right"></div> <div class="statusline"> <span class="connection statusline-item"> <i class="fa-bluetooth-b fab"></i> </span> <span class="arm statusline-item"> <i class="fa-exclamation-triangle fas"></i> </span> <span class="notification-area"></span> <span class="ping statusline-item"> <i class="fa-broadcast-tower fas"></i> </span> <span class="battery statusline-item"> <i class="fa-car-battery fas"></i> <span class="battery-status">0%</span> </span> </div> <script type="text/javascript" src="/hoverbit-ble/main.ea7a67f6.js"></script> </body></html>
diff --git a/main.a4da0525.js b/main.a4da0525.js
deleted file mode 100644
index 5d55f92..0000000
--- a/main.a4da0525.js
+++ /dev/null
@@ -1,13 +0,0 @@
-parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"thIN":[function(require,module,exports) {
-var define;
-var t;!function(i,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof t&&t.amd?t("nipplejs",[],e):"object"==typeof exports?exports.nipplejs=e():i.nipplejs=e()}(window,function(){return function(t){var i={};function e(o){if(i[o])return i[o].exports;var n=i[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,e),n.l=!0,n.exports}return e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:o})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,i){if(1&i&&(t=e(t)),8&i)return t;if(4&i&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(e.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&i&&"string"!=typeof t)for(var n in t)e.d(o,n,function(i){return t[i]}.bind(null,n));return o},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},e.p="",e(e.s=0)}([function(t,i,e){"use strict";e.r(i);var o,n=function(t,i){var e=i.x-t.x,o=i.y-t.y;return Math.sqrt(e*e+o*o)},s=function(t){return t*(Math.PI/180)},r=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.addEventListener?t.addEventListener(o,e,!1):t.attachEvent&&t.attachEvent(o,e)},d=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.removeEventListener?t.removeEventListener(o,e):t.detachEvent&&t.detachEvent(o,e)},a=function(t){return t.preventDefault(),t.type.match(/^touch/)?t.changedTouches:t},p=function(){return{x:void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,y:void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop}},c=function(t,i){i.top||i.right||i.bottom||i.left?(t.style.top=i.top,t.style.right=i.right,t.style.bottom=i.bottom,t.style.left=i.left):(t.style.left=i.x+"px",t.style.top=i.y+"px")},h=function(t,i,e){var o=l(t);for(var n in o)if(o.hasOwnProperty(n))if("string"==typeof i)o[n]=i+" "+e;else{for(var s="",r=0,d=i.length;r<d;r+=1)s+=i[r]+" "+e+", ";o[n]=s.slice(0,-2)}return o},l=function(t){var i={};return i[t]="",["webkit","Moz","o"].forEach(function(e){i[e+t.charAt(0).toUpperCase()+t.slice(1)]=""}),i},u=function(t,i){for(var e in i)i.hasOwnProperty(e)&&(t[e]=i[e]);return t},f=function(t,i){if(t.length)for(var e=0,o=t.length;e<o;e+=1)i(t[e]);else i(t)},y=!!("ontouchstart"in window),m=!!window.PointerEvent,v=!!window.MSPointerEvent,g={start:"mousedown",move:"mousemove",end:"mouseup"},b={};function x(){}m?o={start:"pointerdown",move:"pointermove",end:"pointerup, pointercancel"}:v?o={start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:y?(o={start:"touchstart",move:"touchmove",end:"touchend, touchcancel"},b=g):o=g,x.prototype.on=function(t,i){var e,o=t.split(/[ ,]+/g);this._handlers_=this._handlers_||{};for(var n=0;n<o.length;n+=1)e=o[n],this._handlers_[e]=this._handlers_[e]||[],this._handlers_[e].push(i);return this},x.prototype.off=function(t,i){return this._handlers_=this._handlers_||{},void 0===t?this._handlers_={}:void 0===i?this._handlers_[t]=null:this._handlers_[t]&&this._handlers_[t].indexOf(i)>=0&&this._handlers_[t].splice(this._handlers_[t].indexOf(i),1),this},x.prototype.trigger=function(t,i){var e,o=this,n=t.split(/[ ,]+/g);o._handlers_=o._handlers_||{};for(var s=0;s<n.length;s+=1)e=n[s],o._handlers_[e]&&o._handlers_[e].length&&o._handlers_[e].forEach(function(t){t.call(o,{type:e,target:o},i)})},x.prototype.config=function(t){this.options=this.defaults||{},t&&(this.options=function(t,i){var e={};for(var o in t)t.hasOwnProperty(o)&&i.hasOwnProperty(o)?e[o]=i[o]:t.hasOwnProperty(o)&&(e[o]=t[o]);return e}(this.options,t))},x.prototype.bindEvt=function(t,i){var e=this;return e._domHandlers_=e._domHandlers_||{},e._domHandlers_[i]=function(){"function"==typeof e["on"+i]?e["on"+i].apply(e,arguments):console.warn('[WARNING] : Missing "on'+i+'" handler.')},r(t,o[i],e._domHandlers_[i]),b[i]&&r(t,b[i],e._domHandlers_[i]),e},x.prototype.unbindEvt=function(t,i){return this._domHandlers_=this._domHandlers_||{},d(t,o[i],this._domHandlers_[i]),b[i]&&d(t,b[i],this._domHandlers_[i]),delete this._domHandlers_[i],this};var O=x;function _(t,i){return this.identifier=i.identifier,this.position=i.position,this.frontPosition=i.frontPosition,this.collection=t,this.defaults={size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,mode:"dynamic",zone:document.body,lockX:!1,lockY:!1,shape:"circle"},this.config(i),"dynamic"===this.options.mode&&(this.options.restOpacity=0),this.id=_.id,_.id+=1,this.buildEl().stylize(),this.instance={el:this.ui.el,on:this.on.bind(this),off:this.off.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),add:this.addToDom.bind(this),remove:this.removeFromDom.bind(this),destroy:this.destroy.bind(this),setPosition:this.setPosition.bind(this),resetDirection:this.resetDirection.bind(this),computeDirection:this.computeDirection.bind(this),trigger:this.trigger.bind(this),position:this.position,frontPosition:this.frontPosition,ui:this.ui,identifier:this.identifier,id:this.id,options:this.options},this.instance}_.prototype=new O,_.constructor=_,_.id=0,_.prototype.buildEl=function(t){return this.ui={},this.options.dataOnly?this:(this.ui.el=document.createElement("div"),this.ui.back=document.createElement("div"),this.ui.front=document.createElement("div"),this.ui.el.className="nipple collection_"+this.collection.id,this.ui.back.className="back",this.ui.front.className="front",this.ui.el.setAttribute("id","nipple_"+this.collection.id+"_"+this.id),this.ui.el.appendChild(this.ui.back),this.ui.el.appendChild(this.ui.front),this)},_.prototype.stylize=function(){if(this.options.dataOnly)return this;var t=this.options.fadeTime+"ms",i=function(t,i){var e=l("borderRadius");for(var o in e)e.hasOwnProperty(o)&&(e[o]="50%");return e}(),e=h("transition","opacity",t),o={};return o.el={position:"absolute",opacity:this.options.restOpacity,display:"block",zIndex:999},o.back={position:"absolute",display:"block",width:this.options.size+"px",height:this.options.size+"px",marginLeft:-this.options.size/2+"px",marginTop:-this.options.size/2+"px",background:this.options.color,opacity:".5"},o.front={width:this.options.size/2+"px",height:this.options.size/2+"px",position:"absolute",display:"block",marginLeft:-this.options.size/4+"px",marginTop:-this.options.size/4+"px",background:this.options.color,opacity:".5"},u(o.el,e),"circle"===this.options.shape&&u(o.back,i),u(o.front,i),this.applyStyles(o),this},_.prototype.applyStyles=function(t){for(var i in this.ui)if(this.ui.hasOwnProperty(i))for(var e in t[i])this.ui[i].style[e]=t[i][e];return this},_.prototype.addToDom=function(){return this.options.dataOnly||document.body.contains(this.ui.el)?this:(this.options.zone.appendChild(this.ui.el),this)},_.prototype.removeFromDom=function(){return this.options.dataOnly||!document.body.contains(this.ui.el)?this:(this.options.zone.removeChild(this.ui.el),this)},_.prototype.destroy=function(){clearTimeout(this.removeTimeout),clearTimeout(this.showTimeout),clearTimeout(this.restTimeout),this.trigger("destroyed",this.instance),this.removeFromDom(),this.off()},_.prototype.show=function(t){var i=this;return i.options.dataOnly?i:(clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.addToDom(),i.restCallback(),setTimeout(function(){i.ui.el.style.opacity=1},0),i.showTimeout=setTimeout(function(){i.trigger("shown",i.instance),"function"==typeof t&&t.call(this)},i.options.fadeTime),i)},_.prototype.hide=function(t){var i=this;return i.options.dataOnly?i:(i.ui.el.style.opacity=i.options.restOpacity,clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.removeTimeout=setTimeout(function(){var e="dynamic"===i.options.mode?"none":"block";i.ui.el.style.display=e,"function"==typeof t&&t.call(i),i.trigger("hidden",i.instance)},i.options.fadeTime),i.options.restJoystick&&i.setPosition(t,{x:0,y:0}),i)},_.prototype.setPosition=function(t,i){var e=this;e.frontPosition={x:i.x,y:i.y};var o=e.options.fadeTime+"ms",n={};n.front=h("transition",["top","left"],o);var s={front:{}};s.front={left:e.frontPosition.x+"px",top:e.frontPosition.y+"px"},e.applyStyles(n),e.applyStyles(s),e.restTimeout=setTimeout(function(){"function"==typeof t&&t.call(e),e.restCallback()},e.options.fadeTime)},_.prototype.restCallback=function(){var t={};t.front=h("transition","none",""),this.applyStyles(t),this.trigger("rested",this.instance)},_.prototype.resetDirection=function(){this.direction={x:!1,y:!1,angle:!1}},_.prototype.computeDirection=function(t){var i,e,o,n=t.angle.radian,s=Math.PI/4,r=Math.PI/2;if(n>s&&n<3*s&&!t.lockX?i="up":n>-s&&n<=s&&!t.lockY?i="left":n>3*-s&&n<=-s&&!t.lockX?i="down":t.lockY||(i="right"),t.lockY||(e=n>-r&&n<r?"left":"right"),t.lockX||(o=n>0?"up":"down"),t.force>this.options.threshold){var d,a={};for(d in this.direction)this.direction.hasOwnProperty(d)&&(a[d]=this.direction[d]);var p={};for(d in this.direction={x:e,y:o,angle:i},t.direction=this.direction,a)a[d]===this.direction[d]&&(p[d]=!0);if(p.x&&p.y&&p.angle)return t;p.x&&p.y||this.trigger("plain",t),p.x||this.trigger("plain:"+e,t),p.y||this.trigger("plain:"+o,t),p.angle||this.trigger("dir dir:"+i,t)}else this.resetDirection();return t};var w=_;function T(t,i){return this.nipples=[],this.idles=[],this.actives=[],this.ids=[],this.pressureIntervals={},this.manager=t,this.id=T.id,T.id+=1,this.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:"dynamic",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,lockX:!1,lockY:!1,shape:"circle",dynamicPage:!1},this.config(i),"static"!==this.options.mode&&"semi"!==this.options.mode||(this.options.multitouch=!1),this.options.multitouch||(this.options.maxNumberOfNipples=1),this.updateBox(),this.prepareNipples(),this.bindings(),this.begin(),this.nipples}T.prototype=new O,T.constructor=T,T.id=0,T.prototype.prepareNipples=function(){var t=this.nipples;t.on=this.on.bind(this),t.off=this.off.bind(this),t.options=this.options,t.destroy=this.destroy.bind(this),t.ids=this.ids,t.id=this.id,t.processOnMove=this.processOnMove.bind(this),t.processOnEnd=this.processOnEnd.bind(this),t.get=function(i){if(void 0===i)return t[0];for(var e=0,o=t.length;e<o;e+=1)if(t[e].identifier===i)return t[e];return!1}},T.prototype.bindings=function(){this.bindEvt(this.options.zone,"start"),this.options.zone.style.touchAction="none",this.options.zone.style.msTouchAction="none"},T.prototype.begin=function(){var t=this.options;if("static"===t.mode){var i=this.createNipple(t.position,this.manager.getIdentifier());i.add(),this.idles.push(i)}},T.prototype.createNipple=function(t,i){var e=p(),o={},n=this.options;if(t.x&&t.y)o={x:t.x-(e.x+this.box.left),y:t.y-(e.y+this.box.top)};else if(t.top||t.right||t.bottom||t.left){var s=document.createElement("DIV");s.style.display="hidden",s.style.top=t.top,s.style.right=t.right,s.style.bottom=t.bottom,s.style.left=t.left,s.style.position="absolute",n.zone.appendChild(s);var r=s.getBoundingClientRect();n.zone.removeChild(s),o=t,t={x:r.left+e.x,y:r.top+e.y}}var d=new w(this,{color:n.color,size:n.size,threshold:n.threshold,fadeTime:n.fadeTime,dataOnly:n.dataOnly,restJoystick:n.restJoystick,restOpacity:n.restOpacity,mode:n.mode,identifier:i,position:t,zone:n.zone,frontPosition:{x:0,y:0},shape:n.shape});return n.dataOnly||(c(d.ui.el,o),c(d.ui.front,d.frontPosition)),this.nipples.push(d),this.trigger("added "+d.identifier+":added",d),this.manager.trigger("added "+d.identifier+":added",d),this.bindNipple(d),d},T.prototype.updateBox=function(){this.box=this.options.zone.getBoundingClientRect()},T.prototype.bindNipple=function(t){var i,e=this,o=function(t,o){i=t.type+" "+o.id+":"+t.type,e.trigger(i,o)};t.on("destroyed",e.onDestroyed.bind(e)),t.on("shown hidden rested dir plain",o),t.on("dir:up dir:right dir:down dir:left",o),t.on("plain:up plain:right plain:down plain:left",o)},T.prototype.pressureFn=function(t,i,e){var o=this,n=0;clearInterval(o.pressureIntervals[e]),o.pressureIntervals[e]=setInterval(function(){var e=t.force||t.pressure||t.webkitForce||0;e!==n&&(i.trigger("pressure",e),o.trigger("pressure "+i.identifier+":pressure",e),n=e)}.bind(o),100)},T.prototype.onstart=function(t){var i=this,e=i.options,o=t;return t=a(t),i.updateBox(),f(t,function(n){i.actives.length<e.maxNumberOfNipples?i.processOnStart(n):o.type.match(/^touch/)&&(Object.keys(i.manager.ids).forEach(function(e){if(Object.values(o.touches).findIndex(function(t){return t.identifier===e})<0){var n=[t[0]];n.identifier=e,i.processOnEnd(n)}}),i.actives.length<e.maxNumberOfNipples&&i.processOnStart(n))}),i.manager.bindDocument(),!1},T.prototype.processOnStart=function(t){var i,e=this,o=e.options,s=e.manager.getIdentifier(t),r=t.force||t.pressure||t.webkitForce||0,d={x:t.pageX,y:t.pageY},a=e.getOrCreate(s,d);a.identifier!==s&&e.manager.removeIdentifier(a.identifier),a.identifier=s;var p=function(i){i.trigger("start",i),e.trigger("start "+i.id+":start",i),i.show(),r>0&&e.pressureFn(t,i,i.identifier),e.processOnMove(t)};if((i=e.idles.indexOf(a))>=0&&e.idles.splice(i,1),e.actives.push(a),e.ids.push(a.identifier),"semi"!==o.mode)p(a);else{if(!(n(d,a.position)<=o.catchDistance))return a.destroy(),void e.processOnStart(t);p(a)}return a},T.prototype.getOrCreate=function(t,i){var e,o=this.options;return/(semi|static)/.test(o.mode)?(e=this.idles[0])?(this.idles.splice(0,1),e):"semi"===o.mode?this.createNipple(i,t):(console.warn("Coudln't find the needed nipple."),!1):e=this.createNipple(i,t)},T.prototype.processOnMove=function(t){var i=this.options,e=this.manager.getIdentifier(t),o=this.nipples.get(e);if(function(t){return isNaN(t.buttons)?0!==t.pressure:0!==t.buttons}(t)){if(!o)return console.error("Found zombie joystick with ID "+e),void this.manager.removeIdentifier(e);if(i.dynamicPage){var r=p();a=o.el.getBoundingClientRect(),o.position={x:r.x+a.left,y:r.y+a.top}}o.identifier=e;var d=o.options.size/2,a={x:t.pageX,y:t.pageY};i.lockX&&(a.y=o.position.y),i.lockY&&(a.x=o.position.x);var h,l,u,f,y,m,v,g,b=n(a,o.position),x=(h=a,u=(l=o.position).x-h.x,f=l.y-h.y,function(t){return t*(180/Math.PI)}(Math.atan2(f,u))),O=s(x),_=b/d,w={distance:b,position:a};"circle"===o.options.shape?(b=Math.min(b,d),y=o.position,m=b,g={x:0,y:0},v=s(v=x),g.x=y.x-m*Math.cos(v),g.y=y.y-m*Math.sin(v),a=g):(a=function(t,i,e){return{x:Math.min(Math.max(t.x,i.x-e),i.x+e),y:Math.min(Math.max(t.y,i.y-e),i.y+e)}}(a,o.position,d),b=n(a,o.position));var T=a.x-o.position.x,k=a.y-o.position.y;o.frontPosition={x:T,y:k},i.dataOnly||c(o.ui.front,o.frontPosition);var P={identifier:o.identifier,position:a,force:_,pressure:t.force||t.pressure||t.webkitForce||0,distance:b,angle:{radian:O,degree:x},vector:{x:T/d,y:-k/d},raw:w,instance:o,lockX:i.lockX,lockY:i.lockY};(P=o.computeDirection(P)).angle={radian:s(180-x),degree:180-x},o.trigger("move",P),this.trigger("move "+o.id+":move",P)}else this.processOnEnd(t)},T.prototype.processOnEnd=function(t){var i=this,e=i.options,o=i.manager.getIdentifier(t),n=i.nipples.get(o),s=i.manager.removeIdentifier(n.identifier);n&&(e.dataOnly||n.hide(function(){"dynamic"===e.mode&&(n.trigger("removed",n),i.trigger("removed "+n.id+":removed",n),i.manager.trigger("removed "+n.id+":removed",n),n.destroy())}),clearInterval(i.pressureIntervals[n.identifier]),n.resetDirection(),n.trigger("end",n),i.trigger("end "+n.id+":end",n),i.ids.indexOf(n.identifier)>=0&&i.ids.splice(i.ids.indexOf(n.identifier),1),i.actives.indexOf(n)>=0&&i.actives.splice(i.actives.indexOf(n),1),/(semi|static)/.test(e.mode)?i.idles.push(n):i.nipples.indexOf(n)>=0&&i.nipples.splice(i.nipples.indexOf(n),1),i.manager.unbindDocument(),/(semi|static)/.test(e.mode)&&(i.manager.ids[s.id]=s.identifier))},T.prototype.onDestroyed=function(t,i){this.nipples.indexOf(i)>=0&&this.nipples.splice(this.nipples.indexOf(i),1),this.actives.indexOf(i)>=0&&this.actives.splice(this.actives.indexOf(i),1),this.idles.indexOf(i)>=0&&this.idles.splice(this.idles.indexOf(i),1),this.ids.indexOf(i.identifier)>=0&&this.ids.splice(this.ids.indexOf(i.identifier),1),this.manager.removeIdentifier(i.identifier),this.manager.unbindDocument()},T.prototype.destroy=function(){for(var t in this.unbindEvt(this.options.zone,"start"),this.nipples.forEach(function(t){t.destroy()}),this.pressureIntervals)this.pressureIntervals.hasOwnProperty(t)&&clearInterval(this.pressureIntervals[t]);this.trigger("destroyed",this.nipples),this.manager.unbindDocument(),this.off()};var k=T;function P(t){var i,e=this;return e.ids={},e.index=0,e.collections=[],e.config(t),e.prepareCollections(),r(window,"resize",function(t){clearTimeout(i),i=setTimeout(function(){var t,i=p();e.collections.forEach(function(e){e.forEach(function(e){t=e.el.getBoundingClientRect(),e.position={x:i.x+t.left,y:i.y+t.top}})})},100)}),e.collections}P.prototype=new O,P.constructor=P,P.prototype.prepareCollections=function(){var t=this;t.collections.create=t.create.bind(t),t.collections.on=t.on.bind(t),t.collections.off=t.off.bind(t),t.collections.destroy=t.destroy.bind(t),t.collections.get=function(i){var e;return t.collections.every(function(t){return!(e=t.get(i))}),e}},P.prototype.create=function(t){return this.createCollection(t)},P.prototype.createCollection=function(t){var i=new k(this,t);return this.bindCollection(i),this.collections.push(i),i},P.prototype.bindCollection=function(t){var i,e=this,o=function(t,o){i=t.type+" "+o.id+":"+t.type,e.trigger(i,o)};t.on("destroyed",e.onDestroyed.bind(e)),t.on("shown hidden rested dir plain",o),t.on("dir:up dir:right dir:down dir:left",o),t.on("plain:up plain:right plain:down plain:left",o)},P.prototype.bindDocument=function(){this.binded||(this.bindEvt(document,"move").bindEvt(document,"end"),this.binded=!0)},P.prototype.unbindDocument=function(t){Object.keys(this.ids).length&&!0!==t||(this.unbindEvt(document,"move").unbindEvt(document,"end"),this.binded=!1)},P.prototype.getIdentifier=function(t){var i;return t?void 0===(i=void 0===t.identifier?t.pointerId:t.identifier)&&(i=this.latest||0):i=this.index,void 0===this.ids[i]&&(this.ids[i]=this.index,this.index+=1),this.latest=i,this.ids[i]},P.prototype.removeIdentifier=function(t){var i={};for(var e in this.ids)if(this.ids[e]===t){i.id=e,i.identifier=this.ids[e],delete this.ids[e];break}return i},P.prototype.onmove=function(t){return this.onAny("move",t),!1},P.prototype.onend=function(t){return this.onAny("end",t),!1},P.prototype.oncancel=function(t){return this.onAny("end",t),!1},P.prototype.onAny=function(t,i){var e,o=this,n="processOn"+t.charAt(0).toUpperCase()+t.slice(1);return i=a(i),f(i,function(t){e=o.getIdentifier(t),f(o.collections,function(t,i,e){e.ids.indexOf(i)>=0&&(e[n](t),t._found_=!0)}.bind(null,t,e)),t._found_||o.removeIdentifier(e)}),!1},P.prototype.destroy=function(){this.unbindDocument(!0),this.ids={},this.index=0,this.collections.forEach(function(t){t.destroy()}),this.off()},P.prototype.onDestroyed=function(t,i){if(this.collections.indexOf(i)<0)return!1;this.collections.splice(this.collections.indexOf(i),1)};var E=new P;i.default={create:function(t){return E.create(t)},factory:E}}]).default});
-},{}],"GaXO":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.requestMicrobit=exports.getServices=void 0;var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};function t(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}function n(e,t,n,r){return new(n||(n=Promise))(function(i,a){function o(e){try{s(r.next(e))}catch(e){a(e)}}function u(e){try{s(r.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,u)}s((r=r.apply(e,t||[])).next())})}function r(e,t){var n,r,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(a){return function(u){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,r=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],r=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,u])}}}var i,a=function(){function e(e){void 0===e&&(e=1),this.concurrent=e,this.queue=[],this.running=0}return e.prototype.pump=function(){return n(this,void 0,void 0,function(){var e,t,n;return r(this,function(r){switch(r.label){case 0:if(this.running>=this.concurrent)return[2];if(!(e=this.queue.shift()))return[2];this.running++,r.label=1;case 1:return r.trys.push([1,3,,4]),[4,e.fn()];case 2:return t=r.sent(),e.resolve(t),[3,4];case 3:return n=r.sent(),e.reject(n),[3,4];case 4:return this.running--,[2,this.pump()]}})})},e.prototype.add=function(e){var t=this;return new Promise(function(n,r){return t.queue.push({fn:e,resolve:n,reject:r}),t.pump()})},e}(),o=function(){function e(e,t){this.service=e,this.emitter=t}return e.prototype.getCharacteristic=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return this.characteristics?[3,2]:(t=this,[4,this.service.getCharacteristics()]);case 1:t.characteristics=n.sent(),n.label=2;case 2:return[2,this.characteristics.find(function(t){return t.uuid===e})]}})})},e.prototype.getCharacteristicValue=function(t){return n(this,void 0,void 0,function(){var i,a=this;return r(this,function(o){switch(o.label){case 0:return[4,this.getCharacteristic(t)];case 1:if(!(i=o.sent()))throw new Error("Unable to locate characteristic");return[4,e.queue.add(function(){return n(a,void 0,void 0,function(){return r(this,function(e){return[2,i.readValue()]})})})];case 2:return[2,o.sent()]}})})},e.prototype.setCharacteristicValue=function(t,i){return n(this,void 0,void 0,function(){var a,o=this;return r(this,function(u){switch(u.label){case 0:return[4,this.getCharacteristic(t)];case 1:if(!(a=u.sent()))throw new Error("Unable to locate characteristic");return[4,e.queue.add(function(){return n(o,void 0,void 0,function(){return r(this,function(e){return[2,a.writeValue(i)]})})})];case 2:return u.sent(),[2]}})})},e.prototype.handleListener=function(t,i,a){return n(this,void 0,void 0,function(){var o,u=this;return r(this,function(s){switch(s.label){case 0:return[4,this.getCharacteristic(i)];case 1:return(o=s.sent())?[4,e.queue.add(function(){return n(u,void 0,void 0,function(){return r(this,function(e){return[2,o.startNotifications()]})})})]:[2];case 2:return s.sent(),this.emitter.on("newListener",function(i){if(!(i!==t||u.emitter.listenerCount(t)>0))return e.queue.add(function(){return n(u,void 0,void 0,function(){return r(this,function(e){return[2,o.addEventListener("characteristicvaluechanged",a)]})})})}),this.emitter.on("removeListener",function(i){if(!(i!==t||u.emitter.listenerCount(t)>0))return e.queue.add(function(){return n(u,void 0,void 0,function(){return r(this,function(e){return[2,o.removeEventListener("characteristicvaluechanged",a)]})})})}),[2]}})})},e.queue=new a,e}();!function(e){e.modelNumber="00002a24-0000-1000-8000-00805f9b34fb",e.serialNumber="00002a25-0000-1000-8000-00805f9b34fb",e.firmwareRevision="00002a26-0000-1000-8000-00805f9b34fb",e.hardwareRevision="00002a27-0000-1000-8000-00805f9b34fb",e.manufacturer="00002a29-0000-1000-8000-00805f9b34fb"}(i||(i={}));var u=function(){function e(e){this.helper=new o(e)}return e.create=function(t){return n(this,void 0,void 0,function(){return r(this,function(n){return[2,new e(t)]})})},e.prototype.readDeviceInformation=function(){return n(this,void 0,void 0,function(){var e,t,n,a,o,u;return r(this,function(r){switch(r.label){case 0:return e={},[4,this.readStringCharacteristic(i.modelNumber)];case 1:return(t=r.sent())&&(e.modelNumber=t),[4,this.readStringCharacteristic(i.serialNumber)];case 2:return(n=r.sent())&&(e.serialNumber=n),[4,this.readStringCharacteristic(i.firmwareRevision)];case 3:return(a=r.sent())&&(e.firmwareRevision=a),[4,this.readStringCharacteristic(i.hardwareRevision)];case 4:return(o=r.sent())&&(e.hardwareRevision=o),[4,this.readStringCharacteristic(i.manufacturer)];case 5:return(u=r.sent())&&(e.manufacturer=u),[2,e]}})})},e.prototype.readStringCharacteristic=function(e){return n(this,void 0,void 0,function(){var t,n;return r(this,function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,this.helper.getCharacteristicValue(e)];case 1:return t=r.sent(),n=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength),[2,String.fromCharCode.apply(null,Array.from(new Uint8Array(n)))];case 2:return r.sent(),[2,void 0];case 3:return[2]}})})},e.uuid="0000180a-0000-1000-8000-00805f9b34fb",e}();function s(){}function c(){c.init.call(this)}function h(e){return void 0===e._maxListeners?c.defaultMaxListeners:e._maxListeners}function f(e,t,n){if(t)e.call(n);else for(var r=e.length,i=y(e,r),a=0;a<r;++a)i[a].call(n)}function d(e,t,n,r){if(t)e.call(n,r);else for(var i=e.length,a=y(e,i),o=0;o<i;++o)a[o].call(n,r)}function l(e,t,n,r,i){if(t)e.call(n,r,i);else for(var a=e.length,o=y(e,a),u=0;u<a;++u)o[u].call(n,r,i)}function v(e,t,n,r,i,a){if(t)e.call(n,r,i,a);else for(var o=e.length,u=y(e,o),s=0;s<o;++s)u[s].call(n,r,i,a)}function p(e,t,n,r){if(t)e.apply(n,r);else for(var i=e.length,a=y(e,i),o=0;o<i;++o)a[o].apply(n,r)}function g(e,t,n,r){var i,a,o,u;if("function"!=typeof n)throw new TypeError('"listener" argument must be a function');if((a=e._events)?(a.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),a=e._events),o=a[t]):(a=e._events=new s,e._eventsCount=0),o){if("function"==typeof o?o=a[t]=r?[n,o]:[o,n]:r?o.unshift(n):o.push(n),!o.warned&&(i=h(e))&&i>0&&o.length>i){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,u=c,"function"==typeof console.warn?console.warn(u):console.log(u)}}else o=a[t]=n,++e._eventsCount;return e}function m(e,t,n){var r=!1;function i(){e.removeListener(t,i),r||(r=!0,n.apply(e,arguments))}return i.listener=n,i}function w(e){var t=this._events;if(t){var n=t[e];if("function"==typeof n)return 1;if(n)return n.length}return 0}function y(e,t){for(var n=new Array(t);t--;)n[t]=e[t];return n}s.prototype=Object.create(null),c.EventEmitter=c,c.usingDomains=!1,c.prototype.domain=void 0,c.prototype._events=void 0,c.prototype._maxListeners=void 0,c.defaultMaxListeners=10,c.init=function(){this.domain=null,c.usingDomains&&(void 0).active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new s,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},c.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},c.prototype.getMaxListeners=function(){return h(this)},c.prototype.emit=function(e){var t,n,r,i,a,o,u,s="error"===e;if(o=this._events)s=s&&null==o.error;else if(!s)return!1;if(u=this.domain,s){if(t=arguments[1],!u){if(t instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=u,t.domainThrown=!1,u.emit("error",t),!1}if(!(n=o[e]))return!1;var h="function"==typeof n;switch(r=arguments.length){case 1:f(n,h,this);break;case 2:d(n,h,this,arguments[1]);break;case 3:l(n,h,this,arguments[1],arguments[2]);break;case 4:v(n,h,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(r-1),a=1;a<r;a++)i[a-1]=arguments[a];p(n,h,this,i)}return!0},c.prototype.addListener=function(e,t){return g(this,e,t,!1)},c.prototype.on=c.prototype.addListener,c.prototype.prependListener=function(e,t){return g(this,e,t,!0)},c.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,m(this,e,t)),this},c.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,m(this,e,t)),this},c.prototype.removeListener=function(e,t){var n,r,i,a,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(r=this._events))return this;if(!(n=r[e]))return this;if(n===t||n.listener&&n.listener===t)0==--this._eventsCount?this._events=new s:(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(i=-1,a=n.length;a-- >0;)if(n[a]===t||n[a].listener&&n[a].listener===t){o=n[a].listener,i=a;break}if(i<0)return this;if(1===n.length){if(n[0]=void 0,0==--this._eventsCount)return this._events=new s,this;delete r[e]}else!function(e,t){for(var n=t,r=n+1,i=e.length;r<i;n+=1,r+=1)e[n]=e[r];e.pop()}(n,i);r.removeListener&&this.emit("removeListener",e,o||t)}return this},c.prototype.removeAllListeners=function(e){var t,n;if(!(n=this._events))return this;if(!n.removeListener)return 0===arguments.length?(this._events=new s,this._eventsCount=0):n[e]&&(0==--this._eventsCount?this._events=new s:delete n[e]),this;if(0===arguments.length){for(var r,i=Object.keys(n),a=0;a<i.length;++a)"removeListener"!==(r=i[a])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=new s,this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},c.prototype.listeners=function(e){var t,n=this._events;return n&&(t=n[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(t):[]},c.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):w.call(e,t)},c.prototype.listenerCount=w,c.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var b,C,V=function(e){function n(){var t=null!==e&&e.apply(this,arguments)||this;return t.isEventListenerObject=function(e){return void 0!==e.handleEvent},t}return t(n,e),n.prototype.addEventListener=function(t,n){if(n){var r=this.isEventListenerObject(n)?n.handleEvent:n;e.prototype.addListener.call(this,t,r)}},n.prototype.removeEventListener=function(t,n){if(n){var r=this.isEventListenerObject(n)?n.handleEvent:n;e.prototype.removeListener.call(this,t,r)}},n.prototype.dispatchEvent=function(t,n){var r;return r="string"==typeof t?new CustomEvent(t,{detail:n}):t,e.prototype.emit.call(this,r.type,r)},n}(c);!function(e){e.buttonAState="e95dda90-251d-470a-a062-fa1922dfa9a8",e.buttonBState="e95dda91-251d-470a-a062-fa1922dfa9a8"}(b||(b={})),function(e){e[e.Release=0]="Release",e[e.ShortPress=1]="ShortPress",e[e.LongPress=2]="LongPress"}(C||(C={}));var L,D=function(e){function i(t){var n=e.call(this)||this;return n.helper=new o(t,n),n}return t(i,e),i.create=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return[4,(t=new i(e)).init()];case 1:return n.sent(),[2,t]}})})},i.prototype.init=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.handleListener("buttonastatechanged",b.buttonAState,this.buttonAStateChangedHandler.bind(this))];case 1:return e.sent(),[4,this.helper.handleListener("buttonbstatechanged",b.buttonBState,this.buttonBStateChangedHandler.bind(this))];case 2:return e.sent(),[2]}})})},i.prototype.readButtonAState=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.getCharacteristicValue(b.buttonAState)];case 1:return[2,e.sent().getUint8(0)]}})})},i.prototype.readButtonBState=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.getCharacteristicValue(b.buttonBState)];case 1:return[2,e.sent().getUint8(0)]}})})},i.prototype.buttonAStateChangedHandler=function(e){var t=e.target.value;this.dispatchEvent("buttonastatechanged",t.getUint8(0))},i.prototype.buttonBStateChangedHandler=function(e){var t=e.target.value;this.dispatchEvent("buttonbstatechanged",t.getUint8(0))},i.uuid="e95d9882-251d-470a-a062-fa1922dfa9a8",i}(V);!function(e){e.ledMatrixState="e95d7b77-251d-470a-a062-fa1922dfa9a8",e.ledText="e95d93ee-251d-470a-a062-fa1922dfa9a8",e.scrollingDelay="e95d0d2d-251d-470a-a062-fa1922dfa9a8"}(L||(L={}));var S,E=function(){function e(e){this.helper=new o(e)}return e.create=function(t){return n(this,void 0,void 0,function(){return r(this,function(n){return[2,new e(t)]})})},e.prototype.writeText=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return t=this.encodeString(e),[2,this.helper.setCharacteristicValue(L.ledText,t)]})})},e.prototype.readMatrixState=function(){return n(this,void 0,void 0,function(){var e;return r(this,function(t){switch(t.label){case 0:return[4,this.helper.getCharacteristicValue(L.ledMatrixState)];case 1:return e=t.sent(),[2,this.viewToLedMatrix(e)]}})})},e.prototype.writeMatrixState=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return t=this.ledMatrixToView(e),[2,this.helper.setCharacteristicValue(L.ledMatrixState,t)]})})},e.prototype.getScrollingDelay=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.getCharacteristicValue(L.scrollingDelay)];case 1:return[2,e.sent().getUint16(0,!0)]}})})},e.prototype.setScrollingDelay=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return(t=new DataView(new ArrayBuffer(2))).setUint16(0,e,!0),[2,this.helper.setCharacteristicValue(L.scrollingDelay,t)]})})},e.prototype.encodeString=function(e){for(var t=new ArrayBuffer(e.length),n=new Uint8Array(t),r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return t},e.prototype.viewToLedMatrix=function(e){for(var t=[],n=0;n<5;n++)t[n]=this.byteToBoolArray(e.getUint8(n));return t},e.prototype.byteToBoolArray=function(e){for(var t=[!1,!1,!1,!1,!1],n=0;n<t.length;n++)t[n]=1==(1&e),e>>=1;return t.reverse()},e.prototype.ledMatrixToView=function(e){for(var t=new DataView(new ArrayBuffer(5)),n=0;n<5;n++)t.setUint8(n,this.boolArrayToByte(e[n]));return t},e.prototype.boolArrayToByte=function(e){return e.reduce(function(e,t){return e<<1|(t?1:0)},0)},e.uuid="e95dd91d-251d-470a-a062-fa1922dfa9a8",e}();!function(e){e.temperature="e95d9250-251d-470a-a062-fa1922dfa9a8",e.temperaturePeriod="e95d1b25-251d-470a-a062-fa1922dfa9a8"}(S||(S={}));var A,x=function(e){function i(t){var n=e.call(this)||this;return n.helper=new o(t,n),n}return t(i,e),i.create=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return[4,(t=new i(e)).init()];case 1:return n.sent(),[2,t]}})})},i.prototype.init=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.handleListener("temperaturechanged",S.temperature,this.temperatureChangedHandler.bind(this))];case 1:return e.sent(),[2]}})})},i.prototype.readTemperature=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.getCharacteristicValue(S.temperature)];case 1:return[2,e.sent().getInt8(0)]}})})},i.prototype.getTemperaturePeriod=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.getCharacteristicValue(S.temperaturePeriod)];case 1:return[2,e.sent().getUint16(0,!0)]}})})},i.prototype.setTemperaturePeriod=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return(t=new DataView(new ArrayBuffer(2))).setUint16(0,e,!0),[4,this.helper.setCharacteristicValue(S.temperaturePeriod,t)];case 1:return[2,n.sent()]}})})},i.prototype.temperatureChangedHandler=function(e){var t=e.target.value;this.dispatchEvent("temperaturechanged",t.getInt8(0))},i.uuid="e95d6100-251d-470a-a062-fa1922dfa9a8",i}(V);!function(e){e.accelerometerData="e95dca4b-251d-470a-a062-fa1922dfa9a8",e.accelerometerPeriod="e95dfb24-251d-470a-a062-fa1922dfa9a8"}(A||(A={}));var T,U,_=function(e){function i(t){var n=e.call(this)||this;return n.helper=new o(t,n),n}return t(i,e),i.create=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return[4,(t=new i(e)).init()];case 1:return n.sent(),[2,t]}})})},i.prototype.init=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.handleListener("accelerometerdatachanged",A.accelerometerData,this.accelerometerDataChangedHandler.bind(this))];case 1:return e.sent(),[2]}})})},i.prototype.readAccelerometerData=function(){return n(this,void 0,void 0,function(){var e;return r(this,function(t){switch(t.label){case 0:return[4,this.helper.getCharacteristicValue(A.accelerometerData)];case 1:return e=t.sent(),[2,this.dataViewToAccelerometerData(e)]}})})},i.prototype.getAccelerometerPeriod=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.getCharacteristicValue(A.accelerometerPeriod)];case 1:return[2,e.sent().getUint16(0,!0)]}})})},i.prototype.setAccelerometerPeriod=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return(t=new DataView(new ArrayBuffer(2))).setUint16(0,e,!0),[2,this.helper.setCharacteristicValue(A.accelerometerPeriod,t)]})})},i.prototype.accelerometerDataChangedHandler=function(e){var t=e.target.value,n=this.dataViewToAccelerometerData(t);this.dispatchEvent("accelerometerdatachanged",n)},i.prototype.dataViewToAccelerometerData=function(e){return{x:e.getInt16(0,!0)/1e3,y:e.getInt16(2,!0)/1e3,z:e.getInt16(4,!0)/1e3}},i.uuid="e95d0753-251d-470a-a062-fa1922dfa9a8",i}(V);!function(e){e.magnetometerData="e95dfb11-251d-470a-a062-fa1922dfa9a8",e.magnetometerPeriod="e95d386c-251d-470a-a062-fa1922dfa9a8",e.magnetometerBearing="e95d9715-251d-470a-a062-fa1922dfa9a8",e.magnetometerCalibration="e95db358-251d-470a-a062-fa1922dfa9a8"}(T||(T={})),function(e){e[e.unknown=0]="unknown",e[e.requested=1]="requested",e[e.completed=2]="completed",e[e.errored=3]="errored"}(U||(U={}));var B,P,M,q=function(e){function i(t){var n=e.call(this)||this;return n.helper=new o(t,n),n}return t(i,e),i.create=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return[4,(t=new i(e)).init()];case 1:return n.sent(),[2,t]}})})},i.prototype.init=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.handleListener("magnetometerdatachanged",T.magnetometerData,this.magnetometerDataChangedHandler.bind(this))];case 1:return e.sent(),[4,this.helper.handleListener("magnetometerbearingchanged",T.magnetometerBearing,this.magnetometerBearingChangedHandler.bind(this))];case 2:return e.sent(),[4,this.helper.handleListener("magnetometercalibrationchanged",T.magnetometerCalibration,this.magnetometerCalibrationChangedHandler.bind(this))];case 3:return e.sent(),[2]}})})},i.prototype.calibrate=function(){return n(this,void 0,void 0,function(){return r(this,function(e){return[2,this.helper.setCharacteristicValue(T.magnetometerCalibration,new Uint8Array([1]))]})})},i.prototype.readMagnetometerData=function(){return n(this,void 0,void 0,function(){var e;return r(this,function(t){switch(t.label){case 0:return[4,this.helper.getCharacteristicValue(T.magnetometerData)];case 1:return e=t.sent(),[2,this.dataViewToMagnetometerData(e)]}})})},i.prototype.readMagnetometerBearing=function(){return n(this,void 0,void 0,function(){var e;return r(this,function(t){switch(t.label){case 0:return[4,this.helper.getCharacteristicValue(T.magnetometerBearing)];case 1:return 2===(e=t.sent()).byteLength?[2,e.getUint16(0,!0)]:[2,void 0]}})})},i.prototype.getMagnetometerPeriod=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.getCharacteristicValue(T.magnetometerPeriod)];case 1:return[2,e.sent().getUint16(0,!0)]}})})},i.prototype.setMagnetometerPeriod=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return(t=new DataView(new ArrayBuffer(2))).setUint16(0,e,!0),[2,this.helper.setCharacteristicValue(T.magnetometerPeriod,t)]})})},i.prototype.magnetometerDataChangedHandler=function(e){var t=e.target.value,n=this.dataViewToMagnetometerData(t);this.dispatchEvent("magnetometerdatachanged",n)},i.prototype.magnetometerBearingChangedHandler=function(e){var t=e.target.value;2===t.byteLength&&this.dispatchEvent("magnetometerbearingchanged",t.getUint16(0,!0))},i.prototype.magnetometerCalibrationChangedHandler=function(e){var t=e.target.value;1===t.byteLength&&this.dispatchEvent("magnetometercalibrationchanged",t.getUint8(0))},i.prototype.dataViewToMagnetometerData=function(e){return{x:e.getInt16(0,!0),y:e.getInt16(1,!0),z:e.getInt16(2,!0)}},i.uuid="e95df2d8-251d-470a-a062-fa1922dfa9a8",i}(V);!function(e){e.pinData="e95d8d00-251d-470a-a062-fa1922dfa9a8",e.pinAdConfiguration="e95d5899-251d-470a-a062-fa1922dfa9a8",e.pinIoConfiguration="e95db9fe-251d-470a-a062-fa1922dfa9a8",e.pwmControl="e95dd822-251d-470a-a062-fa1922dfa9a8"}(B||(B={})),function(e){e[e.Digital=0]="Digital",e[e.Analogue=1]="Analogue"}(P||(P={})),function(e){e[e.Output=0]="Output",e[e.Input=1]="Input"}(M||(M={}));var H,R=function(e){function i(t){var n=e.call(this)||this;return n.helper=new o(t,n),n}return t(i,e),i.create=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return[4,(t=new i(e)).init()];case 1:return n.sent(),[2,t]}})})},i.prototype.init=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.handleListener("pindatachanged",B.pinData,this.pinDataChangedHandler.bind(this))];case 1:return e.sent(),[2]}})})},i.prototype.readPinData=function(){return n(this,void 0,void 0,function(){var e;return r(this,function(t){switch(t.label){case 0:return[4,this.helper.getCharacteristicValue(B.pinData)];case 1:return e=t.sent(),[2,this.dataViewToPinData(e)]}})})},i.prototype.writePinData=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return t=this.pinDataToDataView(e),[2,this.helper.setCharacteristicValue(B.pinData,t)]})})},i.prototype.getAdConfiguration=function(){return n(this,void 0,void 0,function(){var e;return r(this,function(t){switch(t.label){case 0:return[4,this.helper.getCharacteristicValue(B.pinAdConfiguration)];case 1:return e=t.sent(),[2,this.dataViewToConfig(e)]}})})},i.prototype.setAdConfiguration=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return t=this.configToDataView(e),[2,this.helper.setCharacteristicValue(B.pinAdConfiguration,t)]})})},i.prototype.getIoConfiguration=function(){return n(this,void 0,void 0,function(){var e;return r(this,function(t){switch(t.label){case 0:return[4,this.helper.getCharacteristicValue(B.pinIoConfiguration)];case 1:return e=t.sent(),[2,this.dataViewToConfig(e)]}})})},i.prototype.setIoConfiguration=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return t=this.configToDataView(e),[2,this.helper.setCharacteristicValue(B.pinIoConfiguration,t)]})})},i.prototype.setPwmControl=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return t=this.pwmControlDataToDataView(e),[2,this.helper.setCharacteristicValue(B.pwmControl,t)]})})},i.prototype.pinDataChangedHandler=function(e){var t=e.target.value,n=this.dataViewToPinData(t);this.dispatchEvent("pindatachanged",n)},i.prototype.dataViewToPinData=function(e){for(var t=[],n=0;n<e.byteLength;n+=2)t.push({pin:e.getUint8(n),value:e.getUint8(n+1)});return t},i.prototype.pinDataToDataView=function(e){var t=new DataView(new ArrayBuffer(2*e.length));return e.forEach(function(e,n){t.setUint8(2*n,e.pin),t.setUint8(2*n+1,e.value)}),t},i.prototype.dataViewToConfig=function(e){for(var t=[],n=(e.getUint16(0)<<8)+e.getUint8(2),r=0;r<24;r++)t.push(n>>r);return t},i.prototype.configToDataView=function(e){for(var t=new DataView(new ArrayBuffer(3)),n=0,r=0;r<e.length;r++)n&=1<<e[r];return t.setUint16(0,n>>8,!0),t.setUint8(2,255&n),t},i.prototype.pwmControlDataToDataView=function(e){var t=new DataView(new ArrayBuffer(7));return t.setUint8(0,e.pin),t.setUint16(1,e.value,!0),t.setUint32(3,e.period,!0),t},i.uuid="e95d127b-251d-470a-a062-fa1922dfa9a8",i}(V);!function(e){e.tx="6e400002-b5a3-f393-e0a9-e50e24dcca9e",e.rx="6e400003-b5a3-f393-e0a9-e50e24dcca9e"}(H||(H={}));var I,O=function(e){function i(t){var n=e.call(this)||this;return n.helper=new o(t,n),n}return t(i,e),i.create=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return[4,(t=new i(e)).init()];case 1:return n.sent(),[2,t]}})})},i.prototype.init=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.handleListener("receive",H.tx,this.receiveHandler.bind(this))];case 1:return e.sent(),[4,this.helper.handleListener("receiveText",H.tx,this.receiveTextHandler.bind(this))];case 2:return e.sent(),[2]}})})},i.prototype.send=function(e){return n(this,void 0,void 0,function(){return r(this,function(t){return[2,this.helper.setCharacteristicValue(H.rx,e)]})})},i.prototype.sendText=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){return t=e.split("").map(function(e){return e.charCodeAt(0)}),[2,this.helper.setCharacteristicValue(H.rx,new Uint8Array(t).buffer)]})})},i.prototype.receiveHandler=function(e){var t=e.target.value,n=new Uint8Array(t.buffer);this.dispatchEvent("receive",n)},i.prototype.receiveTextHandler=function(e){var t=e.target.value,n=Array.prototype.slice.call(new Uint8Array(t.buffer)),r=String.fromCharCode.apply(null,n);this.dispatchEvent("receiveText",r)},i.uuid="6e400001-b5a3-f393-e0a9-e50e24dcca9e",i}(V);!function(e){e.microBitRequirements="e95db84c-251d-470a-a062-fa1922dfa9a8",e.microBitEvent="e95d9775-251d-470a-a062-fa1922dfa9a8",e.clientRequirements="e95d23c4-251d-470a-a062-fa1922dfa9a8",e.clientEvent="e95d5404-251d-470a-a062-fa1922dfa9a8"}(I||(I={}));var k,j=function(e){function i(t){var n=e.call(this)||this;return n.helper=new o(t,n),n}return t(i,e),i.create=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return[4,(t=new i(e)).init()];case 1:return n.sent(),[2,t]}})})},i.prototype.init=function(){return n(this,void 0,void 0,function(){return r(this,function(e){switch(e.label){case 0:return[4,this.helper.handleListener("microbitevent",I.microBitEvent,this.eventHandler.bind(this))];case 1:return e.sent(),[4,this.helper.handleListener("microbitrequirementschanged",I.microBitRequirements,this.microbitRequirementsChangedHandler.bind(this))];case 2:return e.sent(),[2]}})})},i.prototype.getMicrobitRequirements=function(){return n(this,void 0,void 0,function(){var e;return r(this,function(t){switch(t.label){case 0:return[4,this.helper.getCharacteristicValue(I.microBitRequirements)];case 1:return e=t.sent(),[2,this.viewToMicrobitEvent(e)]}})})},i.prototype.setClientRequirements=function(e,t){return n(this,void 0,void 0,function(){var n;return r(this,function(r){switch(r.label){case 0:return(n=new DataView(new ArrayBuffer(4))).setUint16(0,e,!0),n.setUint16(1,t,!0),[4,this.helper.setCharacteristicValue(I.clientRequirements,n)];case 1:return[2,r.sent()]}})})},i.prototype.readMicrobitEvent=function(){return n(this,void 0,void 0,function(){var e;return r(this,function(t){switch(t.label){case 0:return[4,this.helper.getCharacteristicValue(I.microBitEvent)];case 1:return e=t.sent(),[2,this.viewToMicrobitEvent(e)]}})})},i.prototype.writeClientEvent=function(e,t){return n(this,void 0,void 0,function(){var n;return r(this,function(r){switch(r.label){case 0:return(n=new DataView(new ArrayBuffer(4))).setUint16(0,e,!0),n.setUint16(1,t,!0),[4,this.helper.setCharacteristicValue(I.clientEvent,n)];case 1:return[2,r.sent()]}})})},i.prototype.microbitRequirementsChangedHandler=function(e){var t=e.target.value,n=this.viewToMicrobitEvent(t);this.dispatchEvent("microbitrequirementschanged",n)},i.prototype.eventHandler=function(e){var t=e.target.value,n=this.viewToMicrobitEvent(t);this.dispatchEvent("microbitevent",n)},i.prototype.viewToMicrobitEvent=function(e){return{type:e.getUint16(0,!0),value:e.getUint16(1,!0)}},i.uuid="e95d93af-251d-470a-a062-fa1922dfa9a8",i}(V);(k||(k={})).dfuControl="e95d93b1-251d-470a-a062-fa1922dfa9a8";var N=function(){function e(e){this.helper=new o(e)}return e.create=function(t){return n(this,void 0,void 0,function(){return r(this,function(n){return[2,new e(t)]})})},e.prototype.requestDfu=function(){return this.helper.setCharacteristicValue(k.dfuControl,new Uint8Array([1]))},e.prototype.requestFlashCode=function(){return this.helper.setCharacteristicValue(k.dfuControl,new Uint8Array([2]))},e.uuid="e95d93b0-251d-470a-a062-fa1922dfa9a8",e}(),z=function(){function e(e){this.services=e}return e.prototype.createService=function(e){return n(this,void 0,void 0,function(){var t;return r(this,function(n){switch(n.label){case 0:return(t=this.services.find(function(t){return t.uuid===e.uuid}))?[4,e.create(t)]:[2,void 0];case 1:return[2,n.sent()]}})})},e}(),F=function(e){return n(void 0,void 0,void 0,function(){return r(this,function(t){switch(t.label){case 0:return[4,e.requestDevice({filters:[{namePrefix:"BBC micro:bit"}],optionalServices:[u.uuid,D.uuid,E.uuid,x.uuid,_.uuid,q.uuid,R.uuid,O.uuid,j.uuid,N.uuid]})];case 1:return[2,t.sent()]}})})},G=function(e){return n(void 0,void 0,void 0,function(){var t,n,i,a,o,s,c,h,f,d,l,v;return r(this,function(r){switch(r.label){case 0:return e&&e.gatt?e.gatt.connected?[3,2]:[4,e.gatt.connect()]:[2,{}];case 1:r.sent(),r.label=2;case 2:return[4,e.gatt.getPrimaryServices()];case 3:return t=r.sent(),[4,(n=new z(t)).createService(u)];case 4:return i=r.sent(),[4,n.createService(D)];case 5:return a=r.sent(),[4,n.createService(E)];case 6:return o=r.sent(),[4,n.createService(x)];case 7:return s=r.sent(),[4,n.createService(_)];case 8:return c=r.sent(),[4,n.createService(q)];case 9:return h=r.sent(),[4,n.createService(O)];case 10:return f=r.sent(),[4,n.createService(j)];case 11:return d=r.sent(),[4,n.createService(N)];case 12:return l=r.sent(),[4,n.createService(R)];case 13:return v=r.sent(),[2,{deviceInformationService:i,buttonService:a,ledService:o,temperatureService:s,accelerometerService:c,magnetometerService:h,uartService:f,eventService:d,dfuControlService:l,ioPinService:v}]}})})};exports.getServices=G,exports.requestMicrobit=F;
-},{}],"SiMs":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.notif_alert=a,exports.notif_warn=i,exports.notif_info=c,exports.notif_success=l;let e=void 0,t=[];function n(a){let i=document.querySelector(".statusline .notification-area");if(null===i.querySelector(".notification")&&void 0===e){if(screen.availHeight>screen.availWidth&&!document.body.classList.contains("ignore-landscape-warning"))return e=setInterval(()=>{(screen.availHeight<screen.availWidth||document.body.classList.contains("ignore-landscape-warning"))&&(clearInterval(e),e=void 0,n(t.pop()))},1e3),void t.push(a);let c=document.createElement("div");c.className="notification",c.appendChild(a[0]),c.appendChild(a[1]),i.appendChild(c),setTimeout(()=>{i.removeChild(c),t.length>0&&n(t.pop())},5e3)}else t.push(a)}function a(e){let t=document.createElement("div");t.className="notification-content";let a=document.createElement("p");a.innerHTML=e,t.appendChild(a);let i=document.createElement("i");i.className="alert fas fa-exclamation-triangle",t.appendChild(i),n([i,t])}function i(e){let t=document.createElement("div");t.className="notification-content";let a=document.createElement("p");a.innerHTML=e,t.appendChild(a);let i=document.createElement("i");i.className="warning fas fa-exclamation-triangle",t.appendChild(i),n([i,t])}function c(e){let t=document.createElement("div");t.className="notification-content";let a=document.createElement("p");a.innerHTML=e,t.appendChild(a);let i=document.createElement("i");i.className="info fas fa-info-circle",t.appendChild(i),n([i,t])}function l(e){let t=document.createElement("div");t.className="notification-content";let a=document.createElement("p");a.innerHTML=e,t.appendChild(a);let i=document.createElement("i");i.className="success fas fa-check-circle",t.appendChild(i),n([i,t])}
-},{}],"CLny":[function(require,module,exports) {
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("./notification");function t(e,t){var s=t.get(e);if(!s)throw new TypeError("attempted to get private field on non-instance");return s.get?s.get.call(e):s.value}function s(e,t,s){var r=t.get(e);if(!r)throw new TypeError("attempted to set private field on non-instance");if(r.set)r.set.call(e,s);else{if(!r.writable)throw new TypeError("attempted to set read only private field");r.value=s}return s}var r=new WeakMap,a=new WeakMap,i=new WeakMap,n=new WeakMap,l=new WeakMap,o=new WeakMap;class h{constructor(){r.set(this,{writable:!0,value:0}),a.set(this,{writable:!0,value:0}),i.set(this,{writable:!0,value:0}),n.set(this,{writable:!0,value:0}),l.set(this,{writable:!0,value:0}),o.set(this,{writable:!0,value:0})}acc(e){e.match(/[A-Z][-,0-9]+/g).forEach((e,r)=>{switch(e.substring(0,1)){case"T":s(this,a,parseInt(e.substring(1,e.length)));break;case"R":s(this,n,parseInt(e.substring(1,e.length)));break;case"A":s(this,o,1==parseInt(e.substring(1,e.length))),t(this,o)?document.body.classList.add("armed"):document.body.classList.remove("armed");break;case"S":break;default:console.log(`Unkown acc: ${e}`)}}),document.querySelector(".acc-string pre").innerHTML=`T: ${t(this,a)}, R: ${t(this,n)}`}reset(){this.setArm(0),this.setThrottle(0),this.setRudder(0)}setThrottle(e){t(this,o)&&(e>100&&(e=100),e<0&&(e=0),s(this,r,e))}getThrottle(){return t(this,r)}setRudder(e){t(this,o)&&(e>90&&(e=90),e<-90&&(e=-90),s(this,i,e))}getRudder(){return t(this,i)}setArm(e){s(this,l,e),t(this,l)||(s(this,r,0),s(this,i,0))}getArm(){return t(this,l)}}exports.default=h;
-},{"./notification":"SiMs"}],"d6sW":[function(require,module,exports) {
-"use strict";var e=r(require("nipplejs")),t=require("microbit-web-bluetooth"),n=r(require("./hoverControlModule")),o=require("./notification");function r(e){return e&&e.__esModule?e:{default:e}}let i="service-worker.js";navigator.serviceWorker&&navigator.serviceWorker.register(i,{scope:"/hoverbit-ble/"}).then(e=>{e.onupdatefound=(()=>{const t=e.installing;null!=t&&(t.onstatechange=(()=>{"installed"===t.state&&(navigator.serviceWorker.controller?(0,o.notif_info)("New content is available, relaunch the app to install it."):(0,o.notif_success)("Content is cached for offline use."))}))}),e.update()}).catch(e=>{(0,o.notif_alert)("Could not install service worker..."),console.error("Error during service worker registration:",e)}),document.getElementById("btn_ignore_landscape_warning").addEventListener("click",()=>{document.body.classList.add("ignore-landscape-warning")});let c,a,d=new n.default,s=e.default.create({zone:document.querySelector(".joystick-left"),size:200,position:{left:"50%",bottom:"50%"},mode:"static",lockX:!0}),l=e.default.create({zone:document.querySelector(".joystick-right"),size:200,position:{left:"50%",bottom:"50%"},mode:"static",lockY:!0});s.on("move",(e,t)=>{let n=90*t.distance/100;t.angle.degree>90&&(n*=-1),d.setRudder(n)}),s.on("end",(e,t)=>{d.setRudder(0)}),l.on("move",(e,t)=>{let n=t.distance;t.angle.degree>90&&(n=0,t.distance>=100&&(d.reset(),d.getArm()&&(0,o.notif_alert)("Detected panicy reducing of throttle, dearming..."))),d.setThrottle(n)}),l.on("end",(e,t)=>{d.setThrottle(0)}),document.getElementById("btn_arm").addEventListener("click",()=>{d.setArm(!0)}),document.getElementById("btn_disarm").addEventListener("click",()=>{d.setArm(!1)}),document.querySelector("#btn_disconnect").addEventListener("click",()=>{d.reset(),c.gatt.disconnect()});let u=setInterval(()=>{void 0!==c&&c?c.gatt.connected?document.body.classList.add("connected"):(document.body.classList.remove("connected"),document.body.classList.remove("armed")):void 0!==c&&c.gatt.reconnect()},500),v=setInterval(async()=>{if(void 0!==c&&c&&c.gatt.connected&&a.uartService){let e="T"+d.getThrottle().toString()+"R"+d.getRudder().toString()+"A"+(d.getArm()?"1":"0")+"S0:";await a.uartService.sendText(e)}},70);function g(e){var t=document.querySelector(".ping i"),n=t.cloneNode(!0);if(t.parentNode.replaceChild(n,t),-1!=e.detail.indexOf(":")){let t=e.detail.split(":");"B"==t[0]?document.querySelector(".battery-status").innerHTML=t[1]+"mV":"ACC"==t[0]?d.acc(t[1]):console.log(t)}else(0,o.notif_warn)("Received weird data from MICRO:BIT..."),console.log(`Received unknown: ${e.detail}`)}document.getElementById("btn_connect").onclick=(async()=>{void 0!==c&&c.gatt.connected&&c.disconnect();const e=await(0,t.requestMicrobit)(window.navigator.bluetooth);if(c=e,e){d.reset();const n=await(0,t.getServices)(e);(a=n).deviceInformationService,n.uartService&&n.uartService.addEventListener("receiveText",g)}});
-},{"nipplejs":"thIN","microbit-web-bluetooth":"GaXO","./hoverControlModule":"CLny","./notification":"SiMs"}]},{},["d6sW"], null)
-//# sourceMappingURL=/hoverbit-ble/main.a4da0525.js.map \ No newline at end of file
diff --git a/main.a4da0525.js.map b/main.a4da0525.js.map
deleted file mode 100644
index c3774e1..0000000
--- a/main.a4da0525.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../node_modules/nipplejs/dist/nipplejs.js","../src/services/dfu-control.ts","../src/promise-queue.ts","../src/services/device-information.ts","../src/service-helper.ts","../node_modules/rollup-plugin-node-builtins/src/es6/events.js","../src/event-dispatcher.ts","../src/services/button.ts","../src/services/led.ts","../src/services/temperature.ts","../src/services/accelerometer.ts","../src/services/magnetometer.ts","../src/services/io-pin.ts","../src/services/uart.ts","../src/services/event.ts","../src/index.ts","js/notification.js","js/hoverControlModule.js","js/main.js"],"names":["DeviceInformationCharacteristic","concurrent","this","PromiseQueue","running","promise","queue","shift","fn","result","_a","resolve","reject","error_1","pump","Promise","_this","push","service","emitter","ServiceHelper","uuid","characteristics","getCharacteristics","_b","find","characteristic","getCharacteristic","Error","add","readValue","value","writeValue","event","handler","startNotifications","on","emitterEvent","listenerCount","addEventListener","removeEventListener","helper","DeviceInformationService","info","readStringCharacteristic","modelNumber","serialNumber","firmwareRevision","hardwareRevision","manufacturer","getCharacteristicValue","view","buffer","slice","byteOffset","byteLength","String","fromCharCode","apply","Array","from","Uint8Array","undefined","EventHandlers","EventEmitter","init","call","$getMaxListeners","that","_maxListeners","defaultMaxListeners","emitNone","isFn","self","len","length","listeners","arrayClone","i","emitOne","arg1","emitTwo","arg2","emitThree","arg3","emitMany","args","_addListener","target","type","listener","prepend","m","events","existing","e","TypeError","_events","newListener","emit","_eventsCount","unshift","warned","w","name","count","console","warn","log","_onceWrap","fired","g","removeListener","arguments","evlistener","arr","copy","prototype","Object","create","usingDomains","domain","active","getPrototypeOf","setMaxListeners","n","isNaN","getMaxListeners","er","doError","error","err","context","domainEmitter","domainThrown","addListener","prependListener","once","prependOnceListener","list","position","originalListener","index","k","pop","removeAllListeners","key","keys","ret","eventNames","Reflect","ownKeys","ButtonCharacteristic","ButtonState","handleEvent","__extends","EventDispatcher","isEventListenerObject","_super","callback","eventOrType","detail","CustomEvent","LedCharacteristic","ButtonService","bluetoothService","handleListener","buttonAState","buttonAStateChangedHandler","bind","buttonBState","buttonBStateChangedHandler","getUint8","dispatchEvent","TemperatureCharacteristic","LedService","text","encoded","encodeString","setCharacteristicValue","ledText","ledMatrixState","viewToLedMatrix","state","ledMatrixToView","scrollingDelay","getUint16","delay","DataView","ArrayBuffer","setUint16","charCodeAt","matrix","byteToBoolArray","byte","bools","reverse","setUint8","boolArrayToByte","reduce","bool","AccelerometerCharacteristic","TemperatureService","temperature","temperatureChangedHandler","getInt8","temperaturePeriod","frequency","MagnetometerCharacteristic","MagnetometerCalibration","AccelerometerService","accelerometerData","accelerometerDataChangedHandler","dataViewToAccelerometerData","accelerometerPeriod","x","getInt16","y","z","IoPinCharacteristic","AD","IO","MagnetometerService","magnetometerData","magnetometerDataChangedHandler","magnetometerBearing","magnetometerBearingChangedHandler","magnetometerCalibration","magnetometerCalibrationChangedHandler","dataViewToMagnetometerData","magnetometerPeriod","UartCharacteristic","IoPinService","pinData","pinDataChangedHandler","dataViewToPinData","data","pinDataToDataView","pinAdConfiguration","dataViewToConfig","config","configToDataView","pinIoConfiguration","pwmControlDataToDataView","pwmControl","pin","forEach","setUint32","period","EventCharacteristic","UartService","tx","receiveHandler","receiveTextHandler","rx","arrayData","split","map","numberArray","DfuCharacteristic","EventService","microBitEvent","eventHandler","microBitRequirements","microbitRequirementsChangedHandler","viewToMicrobitEvent","clientRequirements","clientEvent","microbitEvent","DfuControlService","dfuControl","services","ServiceBuilder","serviceClass","found","requestMicrobit","bluetooth","requestDevice","filters","namePrefix","optionalServices","getServices","device","gatt","connected","connect","getPrimaryServices","builder","createService","deviceInformationService","buttonService","ledService","temperatureService","accelerometerService","magnetometerService","uartService","eventService","dfuControlService","ioPinService","waiting_timer","notif_queue","notif","notif_c","notification_area","document","querySelector","screen","availHeight","availWidth","body","classList","contains","setInterval","clearInterval","notif_elem","createElement","className","appendChild","setTimeout","removeChild","notif_alert","alert_str","div","innerHTML","icon","notif_warn","notif_info","info_str","notif_success","success_str","hoverControlModule","constructor","acc","accString","match","item","substring","parseInt","remove","reset","setArm","setThrottle","setRudder","throttle","getThrottle","rudder","getRudder","arm","getArm","sw","navigator","serviceWorker","register","scope","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","update","catch","getElementById","bluetoothDevice","bluetoothDeviceServices","hoverControl","joystickLeft","nipplejs","zone","size","left","bottom","mode","lockX","joystickRight","lockY","evt","distance","angle","degree","disconnect","intervalConnectionChecker","reconnect","intervalSendCommands","command","toString","sendText","receiveText","elm","newone","cloneNode","parentNode","replaceChild","indexOf","parts","onclick","window"],"mappings":"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","file":"main.a4da0525.js","sourceRoot":"../src","sourcesContent":["!function(t,i){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(\"nipplejs\",[],i):\"object\"==typeof exports?exports.nipplejs=i():t.nipplejs=i()}(window,function(){return function(t){var i={};function e(o){if(i[o])return i[o].exports;var n=i[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,e),n.l=!0,n.exports}return e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:o})},e.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},e.t=function(t,i){if(1&i&&(t=e(t)),8&i)return t;if(4&i&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(e.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&i&&\"string\"!=typeof t)for(var n in t)e.d(o,n,function(i){return t[i]}.bind(null,n));return o},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,\"a\",i),i},e.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},e.p=\"\",e(e.s=0)}([function(t,i,e){\"use strict\";e.r(i);var o,n=function(t,i){var e=i.x-t.x,o=i.y-t.y;return Math.sqrt(e*e+o*o)},s=function(t){return t*(Math.PI/180)},r=function(t){return t*(180/Math.PI)},d=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.addEventListener?t.addEventListener(o,e,!1):t.attachEvent&&t.attachEvent(o,e)},a=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.removeEventListener?t.removeEventListener(o,e):t.detachEvent&&t.detachEvent(o,e)},p=function(t){return t.preventDefault(),t.type.match(/^touch/)?t.changedTouches:t},c=function(){return{x:void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,y:void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop}},h=function(t,i){i.top||i.right||i.bottom||i.left?(t.style.top=i.top,t.style.right=i.right,t.style.bottom=i.bottom,t.style.left=i.left):(t.style.left=i.x+\"px\",t.style.top=i.y+\"px\")},l=function(t,i,e){var o=u(t);for(var n in o)if(o.hasOwnProperty(n))if(\"string\"==typeof i)o[n]=i+\" \"+e;else{for(var s=\"\",r=0,d=i.length;r<d;r+=1)s+=i[r]+\" \"+e+\", \";o[n]=s.slice(0,-2)}return o},u=function(t){var i={};i[t]=\"\";return[\"webkit\",\"Moz\",\"o\"].forEach(function(e){i[e+t.charAt(0).toUpperCase()+t.slice(1)]=\"\"}),i},f=function(t,i){for(var e in i)i.hasOwnProperty(e)&&(t[e]=i[e]);return t},y=function(t,i){if(t.length)for(var e=0,o=t.length;e<o;e+=1)i(t[e]);else i(t)},m=!!(\"ontouchstart\"in window),v=!!window.PointerEvent,g=!!window.MSPointerEvent,b={start:\"mousedown\",move:\"mousemove\",end:\"mouseup\"},x={};function O(){}v?o={start:\"pointerdown\",move:\"pointermove\",end:\"pointerup, pointercancel\"}:g?o={start:\"MSPointerDown\",move:\"MSPointerMove\",end:\"MSPointerUp\"}:m?(o={start:\"touchstart\",move:\"touchmove\",end:\"touchend, touchcancel\"},x=b):o=b,O.prototype.on=function(t,i){var e,o=t.split(/[ ,]+/g);this._handlers_=this._handlers_||{};for(var n=0;n<o.length;n+=1)e=o[n],this._handlers_[e]=this._handlers_[e]||[],this._handlers_[e].push(i);return this},O.prototype.off=function(t,i){return this._handlers_=this._handlers_||{},void 0===t?this._handlers_={}:void 0===i?this._handlers_[t]=null:this._handlers_[t]&&this._handlers_[t].indexOf(i)>=0&&this._handlers_[t].splice(this._handlers_[t].indexOf(i),1),this},O.prototype.trigger=function(t,i){var e,o=this,n=t.split(/[ ,]+/g);o._handlers_=o._handlers_||{};for(var s=0;s<n.length;s+=1)e=n[s],o._handlers_[e]&&o._handlers_[e].length&&o._handlers_[e].forEach(function(t){t.call(o,{type:e,target:o},i)})},O.prototype.config=function(t){this.options=this.defaults||{},t&&(this.options=function(t,i){var e={};for(var o in t)t.hasOwnProperty(o)&&i.hasOwnProperty(o)?e[o]=i[o]:t.hasOwnProperty(o)&&(e[o]=t[o]);return e}(this.options,t))},O.prototype.bindEvt=function(t,i){var e=this;return e._domHandlers_=e._domHandlers_||{},e._domHandlers_[i]=function(){\"function\"==typeof e[\"on\"+i]?e[\"on\"+i].apply(e,arguments):console.warn('[WARNING] : Missing \"on'+i+'\" handler.')},d(t,o[i],e._domHandlers_[i]),x[i]&&d(t,x[i],e._domHandlers_[i]),e},O.prototype.unbindEvt=function(t,i){return this._domHandlers_=this._domHandlers_||{},a(t,o[i],this._domHandlers_[i]),x[i]&&a(t,x[i],this._domHandlers_[i]),delete this._domHandlers_[i],this};var _=O;function w(t,i){return this.identifier=i.identifier,this.position=i.position,this.frontPosition=i.frontPosition,this.collection=t,this.defaults={size:100,threshold:.1,color:\"white\",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,mode:\"dynamic\",zone:document.body,lockX:!1,lockY:!1,shape:\"circle\"},this.config(i),\"dynamic\"===this.options.mode&&(this.options.restOpacity=0),this.id=w.id,w.id+=1,this.buildEl().stylize(),this.instance={el:this.ui.el,on:this.on.bind(this),off:this.off.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),add:this.addToDom.bind(this),remove:this.removeFromDom.bind(this),destroy:this.destroy.bind(this),setPosition:this.setPosition.bind(this),resetDirection:this.resetDirection.bind(this),computeDirection:this.computeDirection.bind(this),trigger:this.trigger.bind(this),position:this.position,frontPosition:this.frontPosition,ui:this.ui,identifier:this.identifier,id:this.id,options:this.options},this.instance}w.prototype=new _,w.constructor=w,w.id=0,w.prototype.buildEl=function(t){return this.ui={},this.options.dataOnly?this:(this.ui.el=document.createElement(\"div\"),this.ui.back=document.createElement(\"div\"),this.ui.front=document.createElement(\"div\"),this.ui.el.className=\"nipple collection_\"+this.collection.id,this.ui.back.className=\"back\",this.ui.front.className=\"front\",this.ui.el.setAttribute(\"id\",\"nipple_\"+this.collection.id+\"_\"+this.id),this.ui.el.appendChild(this.ui.back),this.ui.el.appendChild(this.ui.front),this)},w.prototype.stylize=function(){if(this.options.dataOnly)return this;var t=this.options.fadeTime+\"ms\",i=function(t,i){var e=u(t);for(var o in e)e.hasOwnProperty(o)&&(e[o]=i);return e}(\"borderRadius\",\"50%\"),e=l(\"transition\",\"opacity\",t),o={};return o.el={position:\"absolute\",opacity:this.options.restOpacity,display:\"block\",zIndex:999},o.back={position:\"absolute\",display:\"block\",width:this.options.size+\"px\",height:this.options.size+\"px\",marginLeft:-this.options.size/2+\"px\",marginTop:-this.options.size/2+\"px\",background:this.options.color,opacity:\".5\"},o.front={width:this.options.size/2+\"px\",height:this.options.size/2+\"px\",position:\"absolute\",display:\"block\",marginLeft:-this.options.size/4+\"px\",marginTop:-this.options.size/4+\"px\",background:this.options.color,opacity:\".5\"},f(o.el,e),\"circle\"===this.options.shape&&f(o.back,i),f(o.front,i),this.applyStyles(o),this},w.prototype.applyStyles=function(t){for(var i in this.ui)if(this.ui.hasOwnProperty(i))for(var e in t[i])this.ui[i].style[e]=t[i][e];return this},w.prototype.addToDom=function(){return this.options.dataOnly||document.body.contains(this.ui.el)?this:(this.options.zone.appendChild(this.ui.el),this)},w.prototype.removeFromDom=function(){return this.options.dataOnly||!document.body.contains(this.ui.el)?this:(this.options.zone.removeChild(this.ui.el),this)},w.prototype.destroy=function(){clearTimeout(this.removeTimeout),clearTimeout(this.showTimeout),clearTimeout(this.restTimeout),this.trigger(\"destroyed\",this.instance),this.removeFromDom(),this.off()},w.prototype.show=function(t){var i=this;return i.options.dataOnly?i:(clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.addToDom(),i.restCallback(),setTimeout(function(){i.ui.el.style.opacity=1},0),i.showTimeout=setTimeout(function(){i.trigger(\"shown\",i.instance),\"function\"==typeof t&&t.call(this)},i.options.fadeTime),i)},w.prototype.hide=function(t){var i=this;return i.options.dataOnly?i:(i.ui.el.style.opacity=i.options.restOpacity,clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.removeTimeout=setTimeout(function(){var e=\"dynamic\"===i.options.mode?\"none\":\"block\";i.ui.el.style.display=e,\"function\"==typeof t&&t.call(i),i.trigger(\"hidden\",i.instance)},i.options.fadeTime),i.options.restJoystick&&i.setPosition(t,{x:0,y:0}),i)},w.prototype.setPosition=function(t,i){var e=this;e.frontPosition={x:i.x,y:i.y};var o=e.options.fadeTime+\"ms\",n={};n.front=l(\"transition\",[\"top\",\"left\"],o);var s={front:{}};s.front={left:e.frontPosition.x+\"px\",top:e.frontPosition.y+\"px\"},e.applyStyles(n),e.applyStyles(s),e.restTimeout=setTimeout(function(){\"function\"==typeof t&&t.call(e),e.restCallback()},e.options.fadeTime)},w.prototype.restCallback=function(){var t={};t.front=l(\"transition\",\"none\",\"\"),this.applyStyles(t),this.trigger(\"rested\",this.instance)},w.prototype.resetDirection=function(){this.direction={x:!1,y:!1,angle:!1}},w.prototype.computeDirection=function(t){var i,e,o,n=t.angle.radian,s=Math.PI/4,r=Math.PI/2;if(n>s&&n<3*s&&!t.lockX?i=\"up\":n>-s&&n<=s&&!t.lockY?i=\"left\":n>3*-s&&n<=-s&&!t.lockX?i=\"down\":t.lockY||(i=\"right\"),t.lockY||(e=n>-r&&n<r?\"left\":\"right\"),t.lockX||(o=n>0?\"up\":\"down\"),t.force>this.options.threshold){var d,a={};for(d in this.direction)this.direction.hasOwnProperty(d)&&(a[d]=this.direction[d]);var p={};for(d in this.direction={x:e,y:o,angle:i},t.direction=this.direction,a)a[d]===this.direction[d]&&(p[d]=!0);if(p.x&&p.y&&p.angle)return t;p.x&&p.y||this.trigger(\"plain\",t),p.x||this.trigger(\"plain:\"+e,t),p.y||this.trigger(\"plain:\"+o,t),p.angle||this.trigger(\"dir dir:\"+i,t)}else this.resetDirection();return t};var T=w;function k(t,i){return this.nipples=[],this.idles=[],this.actives=[],this.ids=[],this.pressureIntervals={},this.manager=t,this.id=k.id,k.id+=1,this.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:\"dynamic\",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:\"white\",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,lockX:!1,lockY:!1,shape:\"circle\",dynamicPage:!1},this.config(i),\"static\"!==this.options.mode&&\"semi\"!==this.options.mode||(this.options.multitouch=!1),this.options.multitouch||(this.options.maxNumberOfNipples=1),this.updateBox(),this.prepareNipples(),this.bindings(),this.begin(),this.nipples}k.prototype=new _,k.constructor=k,k.id=0,k.prototype.prepareNipples=function(){var t=this.nipples;t.on=this.on.bind(this),t.off=this.off.bind(this),t.options=this.options,t.destroy=this.destroy.bind(this),t.ids=this.ids,t.id=this.id,t.processOnMove=this.processOnMove.bind(this),t.processOnEnd=this.processOnEnd.bind(this),t.get=function(i){if(void 0===i)return t[0];for(var e=0,o=t.length;e<o;e+=1)if(t[e].identifier===i)return t[e];return!1}},k.prototype.bindings=function(){this.bindEvt(this.options.zone,\"start\"),this.options.zone.style.touchAction=\"none\",this.options.zone.style.msTouchAction=\"none\"},k.prototype.begin=function(){var t=this.options;if(\"static\"===t.mode){var i=this.createNipple(t.position,this.manager.getIdentifier());i.add(),this.idles.push(i)}},k.prototype.createNipple=function(t,i){var e=c(),o={},n=this.options;if(t.x&&t.y)o={x:t.x-(e.x+this.box.left),y:t.y-(e.y+this.box.top)};else if(t.top||t.right||t.bottom||t.left){var s=document.createElement(\"DIV\");s.style.display=\"hidden\",s.style.top=t.top,s.style.right=t.right,s.style.bottom=t.bottom,s.style.left=t.left,s.style.position=\"absolute\",n.zone.appendChild(s);var r=s.getBoundingClientRect();n.zone.removeChild(s),o=t,t={x:r.left+e.x,y:r.top+e.y}}var d=new T(this,{color:n.color,size:n.size,threshold:n.threshold,fadeTime:n.fadeTime,dataOnly:n.dataOnly,restJoystick:n.restJoystick,restOpacity:n.restOpacity,mode:n.mode,identifier:i,position:t,zone:n.zone,frontPosition:{x:0,y:0},shape:n.shape});return n.dataOnly||(h(d.ui.el,o),h(d.ui.front,d.frontPosition)),this.nipples.push(d),this.trigger(\"added \"+d.identifier+\":added\",d),this.manager.trigger(\"added \"+d.identifier+\":added\",d),this.bindNipple(d),d},k.prototype.updateBox=function(){this.box=this.options.zone.getBoundingClientRect()},k.prototype.bindNipple=function(t){var i,e=this,o=function(t,o){i=t.type+\" \"+o.id+\":\"+t.type,e.trigger(i,o)};t.on(\"destroyed\",e.onDestroyed.bind(e)),t.on(\"shown hidden rested dir plain\",o),t.on(\"dir:up dir:right dir:down dir:left\",o),t.on(\"plain:up plain:right plain:down plain:left\",o)},k.prototype.pressureFn=function(t,i,e){var o=this,n=0;clearInterval(o.pressureIntervals[e]),o.pressureIntervals[e]=setInterval(function(){var e=t.force||t.pressure||t.webkitForce||0;e!==n&&(i.trigger(\"pressure\",e),o.trigger(\"pressure \"+i.identifier+\":pressure\",e),n=e)}.bind(o),100)},k.prototype.onstart=function(t){var i=this,e=i.options,o=t;t=p(t),i.updateBox();return y(t,function(n){i.actives.length<e.maxNumberOfNipples?i.processOnStart(n):o.type.match(/^touch/)&&(Object.keys(i.manager.ids).forEach(function(e){if(Object.values(o.touches).findIndex(function(t){return t.identifier===e})<0){var n=[t[0]];n.identifier=e,i.processOnEnd(n)}}),i.actives.length<e.maxNumberOfNipples&&i.processOnStart(n))}),i.manager.bindDocument(),!1},k.prototype.processOnStart=function(t){var i,e=this,o=e.options,s=e.manager.getIdentifier(t),r=t.force||t.pressure||t.webkitForce||0,d={x:t.pageX,y:t.pageY},a=e.getOrCreate(s,d);a.identifier!==s&&e.manager.removeIdentifier(a.identifier),a.identifier=s;var p=function(i){i.trigger(\"start\",i),e.trigger(\"start \"+i.id+\":start\",i),i.show(),r>0&&e.pressureFn(t,i,i.identifier),e.processOnMove(t)};if((i=e.idles.indexOf(a))>=0&&e.idles.splice(i,1),e.actives.push(a),e.ids.push(a.identifier),\"semi\"!==o.mode)p(a);else{if(!(n(d,a.position)<=o.catchDistance))return a.destroy(),void e.processOnStart(t);p(a)}return a},k.prototype.getOrCreate=function(t,i){var e,o=this.options;return/(semi|static)/.test(o.mode)?(e=this.idles[0])?(this.idles.splice(0,1),e):\"semi\"===o.mode?this.createNipple(i,t):(console.warn(\"Coudln't find the needed nipple.\"),!1):e=this.createNipple(i,t)},k.prototype.processOnMove=function(t){var i=this.options,e=this.manager.getIdentifier(t),o=this.nipples.get(e);if(function(t){return isNaN(t.buttons)?0!==t.pressure:0!==t.buttons}(t)){if(!o)return console.error(\"Found zombie joystick with ID \"+e),void this.manager.removeIdentifier(e);if(i.dynamicPage){var d=c();p=o.el.getBoundingClientRect(),o.position={x:d.x+p.left,y:d.y+p.top}}o.identifier=e;var a=o.options.size/2,p={x:t.pageX,y:t.pageY};i.lockX&&(p.y=o.position.y),i.lockY&&(p.x=o.position.x);var l,u,f,y,m,v,g,b,x=n(p,o.position),O=(l=p,u=o.position,f=u.x-l.x,y=u.y-l.y,r(Math.atan2(y,f))),_=s(O),w=x/a,T={distance:x,position:p};\"circle\"===o.options.shape?(x=Math.min(x,a),m=o.position,v=x,b={x:0,y:0},g=s(g=O),b.x=m.x-v*Math.cos(g),b.y=m.y-v*Math.sin(g),p=b):(p=function(t,i,e){return{x:Math.min(Math.max(t.x,i.x-e),i.x+e),y:Math.min(Math.max(t.y,i.y-e),i.y+e)}}(p,o.position,a),x=n(p,o.position));var k=p.x-o.position.x,P=p.y-o.position.y;o.frontPosition={x:k,y:P},i.dataOnly||h(o.ui.front,o.frontPosition);var E={identifier:o.identifier,position:p,force:w,pressure:t.force||t.pressure||t.webkitForce||0,distance:x,angle:{radian:_,degree:O},vector:{x:k/a,y:-P/a},raw:T,instance:o,lockX:i.lockX,lockY:i.lockY};(E=o.computeDirection(E)).angle={radian:s(180-O),degree:180-O},o.trigger(\"move\",E),this.trigger(\"move \"+o.id+\":move\",E)}else this.processOnEnd(t)},k.prototype.processOnEnd=function(t){var i=this,e=i.options,o=i.manager.getIdentifier(t),n=i.nipples.get(o),s=i.manager.removeIdentifier(n.identifier);n&&(e.dataOnly||n.hide(function(){\"dynamic\"===e.mode&&(n.trigger(\"removed\",n),i.trigger(\"removed \"+n.id+\":removed\",n),i.manager.trigger(\"removed \"+n.id+\":removed\",n),n.destroy())}),clearInterval(i.pressureIntervals[n.identifier]),n.resetDirection(),n.trigger(\"end\",n),i.trigger(\"end \"+n.id+\":end\",n),i.ids.indexOf(n.identifier)>=0&&i.ids.splice(i.ids.indexOf(n.identifier),1),i.actives.indexOf(n)>=0&&i.actives.splice(i.actives.indexOf(n),1),/(semi|static)/.test(e.mode)?i.idles.push(n):i.nipples.indexOf(n)>=0&&i.nipples.splice(i.nipples.indexOf(n),1),i.manager.unbindDocument(),/(semi|static)/.test(e.mode)&&(i.manager.ids[s.id]=s.identifier))},k.prototype.onDestroyed=function(t,i){this.nipples.indexOf(i)>=0&&this.nipples.splice(this.nipples.indexOf(i),1),this.actives.indexOf(i)>=0&&this.actives.splice(this.actives.indexOf(i),1),this.idles.indexOf(i)>=0&&this.idles.splice(this.idles.indexOf(i),1),this.ids.indexOf(i.identifier)>=0&&this.ids.splice(this.ids.indexOf(i.identifier),1),this.manager.removeIdentifier(i.identifier),this.manager.unbindDocument()},k.prototype.destroy=function(){for(var t in this.unbindEvt(this.options.zone,\"start\"),this.nipples.forEach(function(t){t.destroy()}),this.pressureIntervals)this.pressureIntervals.hasOwnProperty(t)&&clearInterval(this.pressureIntervals[t]);this.trigger(\"destroyed\",this.nipples),this.manager.unbindDocument(),this.off()};var P=k;function E(t){var i,e=this;return e.ids={},e.index=0,e.collections=[],e.config(t),e.prepareCollections(),d(window,\"resize\",function(t){clearTimeout(i),i=setTimeout(function(){var t,i=c();e.collections.forEach(function(e){e.forEach(function(e){t=e.el.getBoundingClientRect(),e.position={x:i.x+t.left,y:i.y+t.top}})})},100)}),e.collections}E.prototype=new _,E.constructor=E,E.prototype.prepareCollections=function(){var t=this;t.collections.create=t.create.bind(t),t.collections.on=t.on.bind(t),t.collections.off=t.off.bind(t),t.collections.destroy=t.destroy.bind(t),t.collections.get=function(i){var e;return t.collections.every(function(t){return!(e=t.get(i))}),e}},E.prototype.create=function(t){return this.createCollection(t)},E.prototype.createCollection=function(t){var i=new P(this,t);return this.bindCollection(i),this.collections.push(i),i},E.prototype.bindCollection=function(t){var i,e=this,o=function(t,o){i=t.type+\" \"+o.id+\":\"+t.type,e.trigger(i,o)};t.on(\"destroyed\",e.onDestroyed.bind(e)),t.on(\"shown hidden rested dir plain\",o),t.on(\"dir:up dir:right dir:down dir:left\",o),t.on(\"plain:up plain:right plain:down plain:left\",o)},E.prototype.bindDocument=function(){this.binded||(this.bindEvt(document,\"move\").bindEvt(document,\"end\"),this.binded=!0)},E.prototype.unbindDocument=function(t){Object.keys(this.ids).length&&!0!==t||(this.unbindEvt(document,\"move\").unbindEvt(document,\"end\"),this.binded=!1)},E.prototype.getIdentifier=function(t){var i;return t?void 0===(i=void 0===t.identifier?t.pointerId:t.identifier)&&(i=this.latest||0):i=this.index,void 0===this.ids[i]&&(this.ids[i]=this.index,this.index+=1),this.latest=i,this.ids[i]},E.prototype.removeIdentifier=function(t){var i={};for(var e in this.ids)if(this.ids[e]===t){i.id=e,i.identifier=this.ids[e],delete this.ids[e];break}return i},E.prototype.onmove=function(t){return this.onAny(\"move\",t),!1},E.prototype.onend=function(t){return this.onAny(\"end\",t),!1},E.prototype.oncancel=function(t){return this.onAny(\"end\",t),!1},E.prototype.onAny=function(t,i){var e,o=this,n=\"processOn\"+t.charAt(0).toUpperCase()+t.slice(1);i=p(i);return y(i,function(t){e=o.getIdentifier(t),y(o.collections,function(t,i,e){e.ids.indexOf(i)>=0&&(e[n](t),t._found_=!0)}.bind(null,t,e)),t._found_||o.removeIdentifier(e)}),!1},E.prototype.destroy=function(){this.unbindDocument(!0),this.ids={},this.index=0,this.collections.forEach(function(t){t.destroy()}),this.off()},E.prototype.onDestroyed=function(t,i){if(this.collections.indexOf(i)<0)return!1;this.collections.splice(this.collections.indexOf(i),1)};var I=new E;i.default={create:function(t){return I.create(t)},factory:I}}]).default});","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { ServiceHelper } from \"../service-helper\";\n\n/**\n * @hidden\n */\nexport enum DfuCharacteristic {\n dfuControl = \"e95d93b1-251d-470a-a062-fa1922dfa9a8\"\n}\n\n/**\n * @hidden\n */\nexport class DfuControlService {\n\n /**\n * @hidden\n */\n public static uuid = \"e95d93b0-251d-470a-a062-fa1922dfa9a8\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<DfuControlService> {\n return new DfuControlService(service);\n }\n\n /**\n * @hidden\n */\n public helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n this.helper = new ServiceHelper(service);\n }\n\n /**\n * Request device switches to DFU mode\n */\n public requestDfu(): Promise<void> {\n return this.helper.setCharacteristicValue(DfuCharacteristic.dfuControl, new Uint8Array([1]));\n }\n\n /**\n * Request flash code\n */\n public requestFlashCode(): Promise<void> {\n return this.helper.setCharacteristicValue(DfuCharacteristic.dfuControl, new Uint8Array([2]));\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\n/**\n * @hidden\n */\ninterface QueuedPromise {\n fn: () => Promise<any>;\n resolve: (value?: any | PromiseLike<any> | undefined) => void;\n reject: (reason?: any) => void;\n}\n\n/**\n * @hidden\n */\nexport class PromiseQueue {\n\n private queue: QueuedPromise[] = [];\n private running = 0;\n\n constructor(private concurrent = 1) {\n }\n\n private async pump(): Promise<void> {\n if (this.running >= this.concurrent) {\n return;\n }\n\n const promise = this.queue.shift();\n\n if (!promise) {\n return;\n }\n\n this.running ++;\n\n try {\n const result = await promise.fn();\n promise.resolve(result);\n } catch (error) {\n promise.reject(error);\n }\n\n this.running --;\n return this.pump();\n }\n\n public add<T>(fn: () => Promise<T>): Promise<T> {\n return new Promise((resolve, reject) => {\n this.queue.push({\n fn,\n resolve,\n reject\n });\n\n return this.pump();\n });\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { ServiceHelper } from \"../service-helper\";\n\n/**\n * @hidden\n */\nexport enum DeviceInformationCharacteristic {\n modelNumber = \"00002a24-0000-1000-8000-00805f9b34fb\",\n serialNumber = \"00002a25-0000-1000-8000-00805f9b34fb\",\n firmwareRevision = \"00002a26-0000-1000-8000-00805f9b34fb\",\n hardwareRevision = \"00002a27-0000-1000-8000-00805f9b34fb\",\n manufacturer = \"00002a29-0000-1000-8000-00805f9b34fb\"\n}\n\n/**\n * Device information structure\n */\nexport interface DeviceInformation {\n /**\n * Model Number\n */\n modelNumber?: string;\n /**\n * Serial Number\n */\n serialNumber?: string;\n /**\n * Firmware Revision\n */\n firmwareRevision?: string;\n /**\n * Hardware Revision\n */\n hardwareRevision?: string;\n /**\n * Manufacturer Name\n */\n manufacturer?: string;\n}\n\n/**\n * Device Information Service\n */\nexport class DeviceInformationService {\n\n /**\n * @hidden\n */\n public static uuid = \"0000180a-0000-1000-8000-00805f9b34fb\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<DeviceInformationService> {\n return new DeviceInformationService(service);\n }\n\n private helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n this.helper = new ServiceHelper(service);\n }\n\n /**\n * Read device information\n */\n public async readDeviceInformation(): Promise<DeviceInformation> {\n const info: DeviceInformation = {};\n\n const modelNumber = await this.readStringCharacteristic(DeviceInformationCharacteristic.modelNumber);\n if (modelNumber) info.modelNumber = modelNumber;\n\n const serialNumber = await this.readStringCharacteristic(DeviceInformationCharacteristic.serialNumber);\n if (serialNumber) info.serialNumber = serialNumber;\n\n const firmwareRevision = await this.readStringCharacteristic(DeviceInformationCharacteristic.firmwareRevision);\n if (firmwareRevision) info.firmwareRevision = firmwareRevision;\n\n const hardwareRevision = await this.readStringCharacteristic(DeviceInformationCharacteristic.hardwareRevision);\n if (hardwareRevision) info.hardwareRevision = hardwareRevision;\n\n const manufacturer = await this.readStringCharacteristic(DeviceInformationCharacteristic.manufacturer);\n if (manufacturer) info.manufacturer = manufacturer;\n\n return info;\n }\n\n private async readStringCharacteristic(uuid: BluetoothCharacteristicUUID): Promise<string | undefined> {\n try {\n const view = await this.helper.getCharacteristicValue(uuid);\n const buffer = view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);\n return String.fromCharCode.apply(null, Array.from(new Uint8Array(buffer)));\n } catch (_e) {\n return undefined;\n }\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { EventEmitter } from \"events\";\nimport { PromiseQueue } from \"./promise-queue\";\n\n/**\n * @hidden\n */\nexport interface ServiceEventHandler {\n characteristic: BluetoothCharacteristicUUID;\n handler: (event: Event) => void;\n}\n\n/**\n * @hidden\n */\nexport class ServiceHelper {\n\n private static queue = new PromiseQueue();\n\n private characteristics?: BluetoothRemoteGATTCharacteristic[];\n\n constructor(private service: BluetoothRemoteGATTService, private emitter?: EventEmitter) {\n }\n\n private async getCharacteristic(uuid: BluetoothCharacteristicUUID): Promise<BluetoothRemoteGATTCharacteristic | undefined> {\n if (!this.characteristics) {\n this.characteristics = await this.service.getCharacteristics();\n }\n\n return this.characteristics.find(characteristic => characteristic.uuid === uuid);\n }\n\n public async getCharacteristicValue(uuid: BluetoothCharacteristicUUID): Promise<DataView> {\n const characteristic = await this.getCharacteristic(uuid);\n\n if (!characteristic) {\n throw new Error(\"Unable to locate characteristic\");\n }\n\n return await ServiceHelper.queue.add(async () => characteristic.readValue());\n }\n\n public async setCharacteristicValue(uuid: BluetoothCharacteristicUUID, value: BufferSource): Promise<void> {\n const characteristic = await this.getCharacteristic(uuid);\n\n if (!characteristic) {\n throw new Error(\"Unable to locate characteristic\");\n }\n\n await ServiceHelper.queue.add(async () => characteristic.writeValue(value));\n }\n\n public async handleListener(event: string, uuid: BluetoothCharacteristicUUID, handler: (event: Event) => void) {\n const characteristic = await this.getCharacteristic(uuid);\n\n if (!characteristic) {\n return;\n }\n\n await ServiceHelper.queue.add(async () => characteristic.startNotifications());\n\n this.emitter!.on(\"newListener\", (emitterEvent: string) => {\n if (emitterEvent !== event || this.emitter!.listenerCount(event) > 0) {\n return;\n }\n\n return ServiceHelper.queue.add(async () => characteristic.addEventListener(\"characteristicvaluechanged\", handler));\n });\n\n this.emitter!.on(\"removeListener\", (emitterEvent: string) => {\n if (emitterEvent !== event || this.emitter!.listenerCount(event) > 0) {\n return;\n }\n\n return ServiceHelper.queue.add(async () => characteristic.removeEventListener(\"characteristicvaluechanged\", handler));\n });\n }\n}\n","'use strict';\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nexport default EventEmitter;\nexport {EventEmitter};\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active && !(this instanceof domain.Domain)) {\n this.domain = domain.active;\n }\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var needDomainExit = false;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n if (needDomainExit)\n domain.exit();\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { EventEmitter } from \"events\";\n\n/**\n * @hidden\n */\nexport interface TypedDispatcher<T> {\n addEventListener<K extends keyof T>(type: K, listener: (event: CustomEvent<T[K]>) => void): void;\n removeEventListener<K extends keyof T>(type: K, callback: (event: CustomEvent<T[K]>) => void): void;\n dispatchEvent(event: CustomEvent<T>): boolean;\n dispatchEvent<K extends keyof T>(type: K, detail: T[K]): boolean;\n addListener<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;\n on<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;\n once<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;\n prependListener<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;\n prependOnceListener<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;\n removeListener<K extends keyof T>(event: K, listener: (data: T[K]) => void): this;\n removeAllListeners<K extends keyof T>(event?: K): this;\n // tslint:disable-next-line:ban-types\n listeners<K extends keyof T>(event: K): Function[];\n emit<K extends keyof T>(event: K, data: T[K]): boolean;\n // tslint:disable-next-line:array-type\n eventNames<K extends keyof T>(): Array<K>;\n listenerCount<K extends keyof T>(type: K): number;\n setMaxListeners(n: number): this;\n getMaxListeners(): number;\n}\n\n/**\n * @hidden\n */\nexport class EventDispatcher extends EventEmitter implements EventTarget {\n\n private isEventListenerObject = (listener: EventListenerOrEventListenerObject): listener is EventListenerObject => (listener as EventListenerObject).handleEvent !== undefined;\n\n public addEventListener(type: string, listener: EventListenerOrEventListenerObject | null) {\n if (listener) {\n const handler = this.isEventListenerObject(listener) ? listener.handleEvent : listener;\n super.addListener(type, handler);\n }\n }\n\n public removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null) {\n if (callback) {\n const handler = this.isEventListenerObject(callback) ? callback.handleEvent : callback;\n super.removeListener(type, handler);\n }\n }\n\n public dispatchEvent(event: Event): boolean;\n public dispatchEvent<T>(type: string, detail: T): boolean;\n public dispatchEvent<T>(eventOrType: Event | string, detail?: T): boolean {\n let event: Event;\n if (typeof eventOrType === \"string\") {\n event = new CustomEvent(eventOrType, {\n detail\n });\n } else {\n event = eventOrType;\n }\n\n return super.emit(event.type, event);\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { EventDispatcher, TypedDispatcher } from \"../event-dispatcher\";\nimport { ServiceHelper } from \"../service-helper\";\n\n/**\n * @hidden\n */\nexport enum ButtonCharacteristic {\n buttonAState = \"e95dda90-251d-470a-a062-fa1922dfa9a8\",\n buttonBState = \"e95dda91-251d-470a-a062-fa1922dfa9a8\"\n}\n\n/**\n * Button state enum\n */\nexport enum ButtonState {\n /**\n * Button released\n */\n Release = 0,\n /**\n * Button pressed - short\n */\n ShortPress = 1,\n /**\n * Button pressed - long\n */\n LongPress = 2\n}\n\n/**\n * Events raised by the button service\n */\nexport interface ButtonEvents {\n /**\n * @hidden\n */\n newListener: keyof ButtonEvents;\n /**\n * @hidden\n */\n removeListener: keyof ButtonEvents;\n /**\n * Button A state changed event\n */\n buttonastatechanged: ButtonState;\n /**\n * Button B state changed event\n */\n buttonbstatechanged: ButtonState;\n}\n\n/**\n * Button Service\n */\nexport class ButtonService extends (EventDispatcher as new() => TypedDispatcher<ButtonEvents>) {\n\n /**\n * @hidden\n */\n public static uuid = \"e95d9882-251d-470a-a062-fa1922dfa9a8\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<ButtonService> {\n const bluetoothService = new ButtonService(service);\n await bluetoothService.init();\n return bluetoothService;\n }\n\n private helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n super();\n this.helper = new ServiceHelper(service, this);\n }\n\n private async init() {\n await this.helper.handleListener(\"buttonastatechanged\", ButtonCharacteristic.buttonAState, this.buttonAStateChangedHandler.bind(this));\n await this.helper.handleListener(\"buttonbstatechanged\", ButtonCharacteristic.buttonBState, this.buttonBStateChangedHandler.bind(this));\n }\n\n /**\n * Read state of button A\n */\n public async readButtonAState(): Promise<ButtonState> {\n const view = await this.helper.getCharacteristicValue(ButtonCharacteristic.buttonAState);\n return view.getUint8(0);\n }\n\n /**\n * Read state of button B\n */\n public async readButtonBState(): Promise<ButtonState> {\n const view = await this.helper.getCharacteristicValue(ButtonCharacteristic.buttonBState);\n return view.getUint8(0);\n }\n\n private buttonAStateChangedHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n this.dispatchEvent(\"buttonastatechanged\", view.getUint8(0));\n }\n\n private buttonBStateChangedHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n this.dispatchEvent(\"buttonbstatechanged\", view.getUint8(0));\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { ServiceHelper } from \"../service-helper\";\n\n/**\n * @hidden\n */\nexport enum LedCharacteristic {\n ledMatrixState = \"e95d7b77-251d-470a-a062-fa1922dfa9a8\",\n ledText = \"e95d93ee-251d-470a-a062-fa1922dfa9a8\",\n scrollingDelay = \"e95d0d2d-251d-470a-a062-fa1922dfa9a8\"\n}\n\n/**\n * LED matrix structure\n */\nexport type LedMatrix = [\n [boolean, boolean, boolean, boolean, boolean],\n [boolean, boolean, boolean, boolean, boolean],\n [boolean, boolean, boolean, boolean, boolean],\n [boolean, boolean, boolean, boolean, boolean],\n [boolean, boolean, boolean, boolean, boolean]\n];\n\n/**\n * LED Service\n */\nexport class LedService {\n\n /**\n * @hidden\n */\n public static uuid = \"e95dd91d-251d-470a-a062-fa1922dfa9a8\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<LedService> {\n return new LedService(service);\n }\n\n private helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n this.helper = new ServiceHelper(service);\n }\n\n /**\n * Write text to the LED matrix\n * @param text Te text to display\n */\n public async writeText(text: string): Promise<void> {\n const encoded = this.encodeString(text);\n return this.helper.setCharacteristicValue(LedCharacteristic.ledText, encoded);\n }\n\n /**\n * Read matrix state\n */\n public async readMatrixState(): Promise<LedMatrix> {\n const view = await this.helper.getCharacteristicValue(LedCharacteristic.ledMatrixState);\n return this.viewToLedMatrix(view);\n }\n\n /**\n * Write matrix state\n * @param state The matrix data to set\n */\n public async writeMatrixState(state: LedMatrix): Promise<void> {\n const view = this.ledMatrixToView(state);\n return this.helper.setCharacteristicValue(LedCharacteristic.ledMatrixState, view);\n }\n\n /**\n * Get scrolling delay\n */\n public async getScrollingDelay(): Promise<number> {\n const view = await this.helper.getCharacteristicValue(LedCharacteristic.scrollingDelay);\n return view.getUint16(0, true);\n }\n\n /**\n * Set scrolling delay\n * @param delay The delay to set (milliseconds)\n */\n public async setScrollingDelay(delay: number): Promise<void> {\n const view = new DataView(new ArrayBuffer(2));\n view.setUint16(0, delay, true);\n return this.helper.setCharacteristicValue(LedCharacteristic.scrollingDelay, view);\n }\n\n private encodeString(text: string): ArrayBuffer {\n const buffer = new ArrayBuffer(text.length);\n const view = new Uint8Array(buffer);\n for (let i = 0; i < text.length; i++) {\n view[i] = text.charCodeAt(i);\n }\n return buffer;\n }\n\n private viewToLedMatrix(view: DataView): LedMatrix {\n const matrix: boolean[][] = [];\n for (let i = 0; i < 5; i ++) {\n matrix[i] = this.byteToBoolArray(view.getUint8(i));\n }\n return matrix as LedMatrix;\n }\n\n private byteToBoolArray(byte: number): boolean[] {\n const bools = [false, false, false, false, false];\n for (let i = 0; i < bools.length; i++) {\n bools[i] = (byte & 1) === 1;\n byte >>= 1;\n }\n return bools.reverse();\n }\n\n private ledMatrixToView(matrix: LedMatrix): DataView {\n const view = new DataView(new ArrayBuffer(5));\n for (let i = 0; i < 5; i ++) {\n view.setUint8(i, this.boolArrayToByte(matrix[i]));\n }\n return view;\n }\n\n private boolArrayToByte(bools: boolean[]): number {\n return bools.reduce((byte, bool) => byte << 1 | (bool ? 1 : 0), 0);\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { TypedDispatcher, EventDispatcher } from \"../event-dispatcher\";\nimport { ServiceHelper } from \"../service-helper\";\n\n/**\n * @hidden\n */\nexport enum TemperatureCharacteristic {\n temperature = \"e95d9250-251d-470a-a062-fa1922dfa9a8\",\n temperaturePeriod = \"e95d1b25-251d-470a-a062-fa1922dfa9a8\"\n}\n\n/**\n * Events raised by the temperature service\n */\nexport interface TemperatureEvents {\n /**\n * @hidden\n */\n newListener: keyof TemperatureEvents;\n /**\n * @hidden\n */\n removeListener: keyof TemperatureEvents;\n /**\n * Temperature changed event\n */\n temperaturechanged: number;\n}\n\n/**\n * Temperature Service\n */\nexport class TemperatureService extends (EventDispatcher as new() => TypedDispatcher<TemperatureEvents>) {\n\n /**\n * @hidden\n */\n public static uuid = \"e95d6100-251d-470a-a062-fa1922dfa9a8\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<TemperatureService> {\n const bluetoothService = new TemperatureService(service);\n await bluetoothService.init();\n return bluetoothService;\n }\n\n private helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n super();\n this.helper = new ServiceHelper(service, this);\n }\n\n private async init() {\n await this.helper.handleListener(\"temperaturechanged\", TemperatureCharacteristic.temperature, this.temperatureChangedHandler.bind(this));\n }\n\n /**\n * Read temperature\n */\n public async readTemperature(): Promise<number> {\n const view = await this.helper.getCharacteristicValue(TemperatureCharacteristic.temperature);\n return view.getInt8(0);\n }\n\n /**\n * Get temperature sample period\n */\n public async getTemperaturePeriod(): Promise<number> {\n const view = await this.helper.getCharacteristicValue(TemperatureCharacteristic.temperaturePeriod);\n return view.getUint16(0, true);\n }\n\n /**\n * Set temperature sample period\n * @param frequency The frequency to use (milliseconds)\n */\n public async setTemperaturePeriod(frequency: number): Promise<void> {\n const view = new DataView(new ArrayBuffer(2));\n view.setUint16(0, frequency, true);\n return await this.helper.setCharacteristicValue(TemperatureCharacteristic.temperaturePeriod, view);\n }\n\n private temperatureChangedHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n this.dispatchEvent(\"temperaturechanged\", view.getInt8(0));\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { EventDispatcher, TypedDispatcher } from \"../event-dispatcher\";\nimport { ServiceHelper } from \"../service-helper\";\n\n/**\n * @hidden\n */\nexport enum AccelerometerCharacteristic {\n accelerometerData = \"e95dca4b-251d-470a-a062-fa1922dfa9a8\",\n accelerometerPeriod = \"e95dfb24-251d-470a-a062-fa1922dfa9a8\"\n}\n\n/**\n * Data received from the accelerometer\n */\nexport interface AccelerometerData {\n /**\n * Force in direction X\n */\n x: number;\n /**\n * Force in direction Y\n */\n y: number;\n /**\n * Force in direction Z\n */\n z: number;\n}\n\n/**\n * The sample period to read accelerometer data (milliseconds)\n */\nexport type AccelerometerPeriod = 1 | 2 | 5 | 10 | 20 | 80 | 160 | 640;\n\n/**\n * Events raised by the accelerometer service\n */\nexport interface AccelerometerEvents {\n /**\n * @hidden\n */\n newListener: keyof AccelerometerEvents;\n /**\n * @hidden\n */\n removeListener: keyof AccelerometerEvents;\n /**\n * Accelerometer data changed event\n */\n accelerometerdatachanged: AccelerometerData;\n}\n\n/**\n * Accelerometer Service\n */\nexport class AccelerometerService extends (EventDispatcher as new() => TypedDispatcher<AccelerometerEvents>) {\n\n /**\n * @hidden\n */\n public static uuid = \"e95d0753-251d-470a-a062-fa1922dfa9a8\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<AccelerometerService> {\n const bluetoothService = new AccelerometerService(service);\n await bluetoothService.init();\n return bluetoothService;\n }\n\n private helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n super();\n this.helper = new ServiceHelper(service, this);\n }\n\n private async init() {\n await this.helper.handleListener(\"accelerometerdatachanged\", AccelerometerCharacteristic.accelerometerData, this.accelerometerDataChangedHandler.bind(this));\n }\n\n /**\n * Read acceleromter data\n */\n public async readAccelerometerData(): Promise<AccelerometerData> {\n const view = await this.helper.getCharacteristicValue(AccelerometerCharacteristic.accelerometerData);\n return this.dataViewToAccelerometerData(view);\n }\n\n /**\n * Get accelerometer sample period\n */\n public async getAccelerometerPeriod(): Promise<AccelerometerPeriod> {\n const view = await this.helper.getCharacteristicValue(AccelerometerCharacteristic.accelerometerPeriod);\n return view.getUint16(0, true) as AccelerometerPeriod;\n }\n\n /**\n * Set accelerometer sample period\n * @param frequency The frequency interval to use\n */\n public async setAccelerometerPeriod(frequency: AccelerometerPeriod): Promise<void> {\n const view = new DataView(new ArrayBuffer(2));\n view.setUint16(0, frequency, true);\n return this.helper.setCharacteristicValue(AccelerometerCharacteristic.accelerometerPeriod, view);\n }\n\n private accelerometerDataChangedHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n const value = this.dataViewToAccelerometerData(view);\n this.dispatchEvent(\"accelerometerdatachanged\", value);\n }\n\n private dataViewToAccelerometerData(view: DataView): AccelerometerData {\n return {\n x: view.getInt16(0, true) / 1000.0,\n y: view.getInt16(2, true) / 1000.0,\n z: view.getInt16(4, true) / 1000.0\n };\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { EventDispatcher, TypedDispatcher } from \"../event-dispatcher\";\nimport { ServiceHelper } from \"../service-helper\";\n\n/**\n * @hidden\n */\nexport enum MagnetometerCharacteristic {\n magnetometerData = \"e95dfb11-251d-470a-a062-fa1922dfa9a8\",\n magnetometerPeriod = \"e95d386c-251d-470a-a062-fa1922dfa9a8\",\n magnetometerBearing = \"e95d9715-251d-470a-a062-fa1922dfa9a8\",\n magnetometerCalibration = \"e95db358-251d-470a-a062-fa1922dfa9a8\"\n}\n\n/**\n * Data received from the magnetometer\n */\nexport interface MagnetometerData {\n /**\n * Force in direction X\n */\n x: number;\n /**\n * Force in direction Y\n */\n y: number;\n /**\n * Force in direction Z\n */\n z: number;\n}\n\n/**\n * Magnetometer calibation state\n */\nexport enum MagnetometerCalibration {\n /**\n * Unknown state\n */\n unknown = 0,\n /**\n * Calibration has been requestes\n */\n requested = 1,\n /**\n * Calibration completed\n */\n completed = 2,\n /**\n * Calibration had an error\n */\n errored = 3\n}\n\n/**\n * The sample period to read magnetometer data (milliseconds)\n */\nexport type MagnetometerPeriod = 1 | 2 | 5 | 10 | 20 | 80 | 160 | 640;\n\n/**\n * Events raised by the magnetometer service\n */\nexport interface MagnetometerEvents {\n /**\n * @hidden\n */\n newListener: keyof MagnetometerEvents;\n /**\n * @hidden\n */\n removeListener: keyof MagnetometerEvents;\n /**\n * Magnetometer data changed event\n */\n magnetometerdatachanged: MagnetometerData;\n /**\n * Magnetometer bearing changed event\n */\n magnetometerbearingchanged: number;\n /**\n * Magnetometer calibration changed event\n */\n magnetometercalibrationchanged: MagnetometerCalibration;\n}\n\n/**\n * Magnetometer Service\n */\nexport class MagnetometerService extends (EventDispatcher as new() => TypedDispatcher<MagnetometerEvents>) {\n\n /**\n * @hidden\n */\n public static uuid = \"e95df2d8-251d-470a-a062-fa1922dfa9a8\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<MagnetometerService> {\n const bluetoothService = new MagnetometerService(service);\n await bluetoothService.init();\n return bluetoothService;\n }\n\n private helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n super();\n this.helper = new ServiceHelper(service, this);\n }\n\n private async init() {\n await this.helper.handleListener(\"magnetometerdatachanged\", MagnetometerCharacteristic.magnetometerData, this.magnetometerDataChangedHandler.bind(this));\n await this.helper.handleListener(\"magnetometerbearingchanged\", MagnetometerCharacteristic.magnetometerBearing, this.magnetometerBearingChangedHandler.bind(this));\n await this.helper.handleListener(\"magnetometercalibrationchanged\", MagnetometerCharacteristic.magnetometerCalibration, this.magnetometerCalibrationChangedHandler.bind(this));\n }\n\n /**\n * Request magnetometer calibration\n */\n public async calibrate() {\n return this.helper.setCharacteristicValue(MagnetometerCharacteristic.magnetometerCalibration, new Uint8Array([1]));\n }\n\n /**\n * Read magnetometer data\n */\n public async readMagnetometerData(): Promise<MagnetometerData> {\n const view = await this.helper.getCharacteristicValue(MagnetometerCharacteristic.magnetometerData);\n return this.dataViewToMagnetometerData(view);\n }\n\n /**\n * Read magnetometer bearing\n */\n public async readMagnetometerBearing(): Promise<number | undefined> {\n const view = await this.helper.getCharacteristicValue(MagnetometerCharacteristic.magnetometerBearing);\n if (view.byteLength === 2) {\n return view.getUint16(0, true);\n }\n return undefined;\n }\n\n /**\n * Get magnetometer sample period\n */\n public async getMagnetometerPeriod(): Promise<MagnetometerPeriod> {\n const view = await this.helper.getCharacteristicValue(MagnetometerCharacteristic.magnetometerPeriod);\n return view.getUint16(0, true) as MagnetometerPeriod;\n }\n\n /**\n * Set magnetometer sample period\n * @param frequency The frequency interval to use\n */\n public async setMagnetometerPeriod(frequency: MagnetometerPeriod): Promise<void> {\n const view = new DataView(new ArrayBuffer(2));\n view.setUint16(0, frequency, true);\n return this.helper.setCharacteristicValue(MagnetometerCharacteristic.magnetometerPeriod, view);\n }\n\n private magnetometerDataChangedHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n const value = this.dataViewToMagnetometerData(view);\n this.dispatchEvent(\"magnetometerdatachanged\", value);\n }\n\n private magnetometerBearingChangedHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n if (view.byteLength === 2) {\n this.dispatchEvent(\"magnetometerbearingchanged\", view.getUint16(0, true));\n }\n }\n\n private magnetometerCalibrationChangedHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n if (view.byteLength === 1) {\n this.dispatchEvent(\"magnetometercalibrationchanged\", view.getUint8(0) as MagnetometerCalibration);\n }\n }\n\n private dataViewToMagnetometerData(view: DataView): MagnetometerData {\n return {\n x: view.getInt16(0, true),\n y: view.getInt16(1, true),\n z: view.getInt16(2, true)\n };\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { ServiceHelper } from \"../service-helper\";\nimport { EventDispatcher, TypedDispatcher } from \"../event-dispatcher\";\n\n/**\n * @hidden\n */\nexport enum IoPinCharacteristic {\n pinData = \"e95d8d00-251d-470a-a062-fa1922dfa9a8\",\n pinAdConfiguration = \"e95d5899-251d-470a-a062-fa1922dfa9a8\",\n pinIoConfiguration = \"e95db9fe-251d-470a-a062-fa1922dfa9a8\",\n pwmControl = \"e95dd822-251d-470a-a062-fa1922dfa9a8\"\n}\n\nconst littleEndian = true;\n\n/**\n * Pin data\n */\nexport interface PinData {\n /**\n * Pin number\n */\n pin: number;\n /**\n * Pin value\n */\n value: number;\n}\n\n/**\n * PWM control data\n */\nexport interface PwmControlData {\n /**\n * Pin number\n */\n pin: number;\n /**\n * Pin value\n */\n value: number;\n /**\n * Period (in microseconds)\n */\n period: number;\n}\n\n/**\n * Analogue/Digital Enum\n */\nexport enum AD {\n Digital = 0,\n Analogue = 1\n}\n\n/**\n * Input/Output Enum\n */\nexport enum IO {\n Output = 0,\n Input = 1\n}\n\n/**\n * Events raised by the magnetometer service\n */\nexport interface IoPinEvents {\n /**\n * @hidden\n */\n newListener: keyof IoPinEvents;\n /**\n * @hidden\n */\n removeListener: keyof IoPinEvents;\n /**\n * Pin data changed event\n */\n pindatachanged: PinData[];\n}\n\n/**\n * @hidden\n */\nexport class IoPinService extends (EventDispatcher as new() => TypedDispatcher<IoPinEvents>) {\n\n /**\n * @hidden\n */\n public static uuid = \"e95d127b-251d-470a-a062-fa1922dfa9a8\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<IoPinService> {\n const bluetoothService = new IoPinService(service);\n await bluetoothService.init();\n return bluetoothService;\n }\n\n /**\n * @hidden\n */\n public helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n super();\n this.helper = new ServiceHelper(service, this);\n }\n\n private async init() {\n await this.helper.handleListener(\"pindatachanged\", IoPinCharacteristic.pinData, this.pinDataChangedHandler.bind(this));\n }\n\n /**\n * Read pin data\n */\n public async readPinData(): Promise<PinData[]> {\n const view = await this.helper.getCharacteristicValue(IoPinCharacteristic.pinData);\n return this.dataViewToPinData(view);\n }\n\n /**\n * Write pin data\n * @param data The pin data to write\n */\n public async writePinData(data: PinData[]): Promise<void> {\n const view = this.pinDataToDataView(data);\n return this.helper.setCharacteristicValue(IoPinCharacteristic.pinData, view);\n }\n\n /**\n * Get pin analogue/digital configuration\n */\n public async getAdConfiguration(): Promise<AD[]> {\n const view = await this.helper.getCharacteristicValue(IoPinCharacteristic.pinAdConfiguration);\n return this.dataViewToConfig(view);\n }\n\n /**\n * Set pin analogue/digital configuration\n * @param config The analogue/digital configuration to set\n */\n public async setAdConfiguration(config: AD[]): Promise<void> {\n const view = this.configToDataView(config);\n return this.helper.setCharacteristicValue(IoPinCharacteristic.pinAdConfiguration, view);\n }\n\n /**\n * Get pin input/output configuration\n */\n public async getIoConfiguration(): Promise<IO[]> {\n const view = await this.helper.getCharacteristicValue(IoPinCharacteristic.pinIoConfiguration);\n return this.dataViewToConfig(view);\n }\n\n /**\n * Set pin input/output configuration\n * @param config The input/output configuration to set\n */\n public async setIoConfiguration(config: IO[]): Promise<void> {\n const view = this.configToDataView(config);\n return this.helper.setCharacteristicValue(IoPinCharacteristic.pinIoConfiguration, view);\n }\n\n /**\n * Set pin PWM control\n * @param data The PWM control data to set\n */\n public async setPwmControl(data: PwmControlData): Promise<void> {\n const view = this.pwmControlDataToDataView(data);\n return this.helper.setCharacteristicValue(IoPinCharacteristic.pwmControl, view);\n }\n\n private pinDataChangedHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n const value = this.dataViewToPinData(view);\n this.dispatchEvent(\"pindatachanged\", value);\n }\n\n private dataViewToPinData(view: DataView): PinData[] {\n const data = [];\n for (let i = 0; i < view.byteLength; i += 2) {\n data.push({\n pin: view.getUint8(i),\n value: view.getUint8(i + 1)\n });\n }\n return data;\n }\n\n private pinDataToDataView(data: PinData[]): DataView {\n const view = new DataView(new ArrayBuffer(data.length * 2));\n data.forEach((pinData, index) => {\n view.setUint8(index * 2, pinData.pin);\n view.setUint8(index * 2 + 1, pinData.value);\n });\n return view;\n }\n\n private dataViewToConfig(view: DataView): number[] {\n const result: number[] = [];\n const value = (view.getUint16(0) << 8) + view.getUint8(2);\n\n for (let i = 0; i < 24; i++) {\n result.push(value >> i);\n }\n\n return result;\n }\n\n private configToDataView(config: number[]): DataView {\n const view = new DataView(new ArrayBuffer(3));\n let value = 0;\n\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < config.length; i++) {\n value &= 1 << config[i];\n }\n\n view.setUint16(0, value >> 8, littleEndian);\n view.setUint8(2, value & 0xff);\n return view;\n }\n\n private pwmControlDataToDataView(data: PwmControlData): DataView {\n const view = new DataView(new ArrayBuffer(7));\n view.setUint8(0, data.pin);\n view.setUint16(1, data.value, littleEndian);\n view.setUint32(3, data.period, littleEndian);\n return view;\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { EventDispatcher, TypedDispatcher } from \"../event-dispatcher\";\nimport { ServiceHelper } from \"../service-helper\";\n\n/**\n * @hidden\n */\nexport enum UartCharacteristic {\n tx = \"6e400002-b5a3-f393-e0a9-e50e24dcca9e\",\n rx = \"6e400003-b5a3-f393-e0a9-e50e24dcca9e\"\n}\n\n/**\n * Events raised by the UART service\n */\nexport interface UartEvents {\n /**\n * @hidden\n */\n newListener: keyof UartEvents;\n /**\n * @hidden\n */\n removeListener: keyof UartEvents;\n /**\n * Serial data received event\n */\n receive: Uint8Array;\n /**\n * Serial received text event\n */\n receiveText: string;\n}\n\n/**\n * UART Service\n */\nexport class UartService extends (EventDispatcher as new() => TypedDispatcher<UartEvents>) {\n\n /**\n * @hidden\n */\n public static uuid = \"6e400001-b5a3-f393-e0a9-e50e24dcca9e\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<UartService> {\n const bluetoothService = new UartService(service);\n await bluetoothService.init();\n return bluetoothService;\n }\n\n private helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n super();\n this.helper = new ServiceHelper(service, this);\n }\n\n private async init() {\n await this.helper.handleListener(\"receive\", UartCharacteristic.tx, this.receiveHandler.bind(this));\n await this.helper.handleListener(\"receiveText\", UartCharacteristic.tx, this.receiveTextHandler.bind(this));\n }\n\n /**\n * Send serial data\n * @param value The buffer to send\n */\n public async send(value: BufferSource): Promise<void> {\n return this.helper.setCharacteristicValue(UartCharacteristic.rx, value);\n }\n\n /**\n * Send serial text\n * @param value The text to send\n */\n public async sendText(value: string): Promise<void> {\n const arrayData = value.split(\"\").map((e: string) => e.charCodeAt(0));\n return this.helper.setCharacteristicValue(UartCharacteristic.rx, new Uint8Array(arrayData).buffer);\n }\n\n private receiveHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n const value = new Uint8Array(view.buffer);\n this.dispatchEvent(\"receive\", value);\n }\n\n private receiveTextHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n const numberArray = Array.prototype.slice.call(new Uint8Array(view.buffer));\n const value = String.fromCharCode.apply(null, numberArray);\n this.dispatchEvent(\"receiveText\", value);\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { EventDispatcher, TypedDispatcher } from \"../event-dispatcher\";\nimport { ServiceHelper } from \"../service-helper\";\n\n/**\n * @hidden\n */\nexport enum EventCharacteristic {\n microBitRequirements = \"e95db84c-251d-470a-a062-fa1922dfa9a8\",\n microBitEvent = \"e95d9775-251d-470a-a062-fa1922dfa9a8\",\n clientRequirements = \"e95d23c4-251d-470a-a062-fa1922dfa9a8\",\n clientEvent = \"e95d5404-251d-470a-a062-fa1922dfa9a8\"\n}\n\n/**\n * micro:bit event\n */\nexport interface MicrobitEvent {\n /**\n * The type of event\n */\n type: number;\n /**\n * The value for the event\n */\n value: number;\n}\n\n/**\n * Events raised by the event service\n */\nexport interface MicrobitEvents {\n /**\n * @hidden\n */\n newListener: keyof MicrobitEvents;\n /**\n * @hidden\n */\n removeListener: keyof MicrobitEvents;\n /**\n * micro:bit requirements changed event\n */\n microbitrequirementschanged: MicrobitEvent;\n /**\n * micro:bit event event\n */\n microbitevent: MicrobitEvent;\n}\n\n/**\n * Event Service\n */\nexport class EventService extends (EventDispatcher as new() => TypedDispatcher<MicrobitEvents>) {\n\n /**\n * @hidden\n */\n public static uuid = \"e95d93af-251d-470a-a062-fa1922dfa9a8\";\n\n /**\n * @hidden\n */\n public static async create(service: BluetoothRemoteGATTService): Promise<EventService> {\n const bluetoothService = new EventService(service);\n await bluetoothService.init();\n return bluetoothService;\n }\n\n private helper: ServiceHelper;\n\n /**\n * @hidden\n */\n constructor(service: BluetoothRemoteGATTService) {\n super();\n this.helper = new ServiceHelper(service, this);\n }\n\n private async init() {\n await this.helper.handleListener(\"microbitevent\", EventCharacteristic.microBitEvent, this.eventHandler.bind(this));\n await this.helper.handleListener(\"microbitrequirementschanged\", EventCharacteristic.microBitRequirements, this.microbitRequirementsChangedHandler.bind(this));\n }\n\n /**\n * Get micro:bit event requirements\n */\n public async getMicrobitRequirements(): Promise<MicrobitEvent> {\n const view = await this.helper.getCharacteristicValue(EventCharacteristic.microBitRequirements);\n return this.viewToMicrobitEvent(view);\n }\n\n /**\n * Set client event requirements\n * @param type The type of event to set\n * @param value The value to set\n */\n public async setClientRequirements(type: number, value: number): Promise<void> {\n const view = new DataView(new ArrayBuffer(4));\n view.setUint16(0, type, true);\n view.setUint16(1, value, true);\n return await this.helper.setCharacteristicValue(EventCharacteristic.clientRequirements, view);\n }\n\n /**\n * Read micro:bit event\n */\n public async readMicrobitEvent(): Promise<MicrobitEvent> {\n const view = await this.helper.getCharacteristicValue(EventCharacteristic.microBitEvent);\n return this.viewToMicrobitEvent(view);\n }\n\n /**\n * Write client event\n * @param type The event type\n * @param value The event value\n */\n public async writeClientEvent(type: number, value: number): Promise<void> {\n const view = new DataView(new ArrayBuffer(4));\n view.setUint16(0, type, true);\n view.setUint16(1, value, true);\n return await this.helper.setCharacteristicValue(EventCharacteristic.clientEvent, view);\n }\n\n private microbitRequirementsChangedHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n const microbitEvent = this.viewToMicrobitEvent(view);\n this.dispatchEvent(\"microbitrequirementschanged\", microbitEvent);\n }\n\n private eventHandler(event: Event) {\n const view = (event.target as BluetoothRemoteGATTCharacteristic).value!;\n const microbitEvent = this.viewToMicrobitEvent(view);\n this.dispatchEvent(\"microbitevent\", microbitEvent);\n }\n\n private viewToMicrobitEvent(view: DataView): MicrobitEvent {\n const type = view.getUint16(0, true);\n const value = view.getUint16(1, true);\n return {\n type,\n value\n };\n }\n}\n","/*\n* micro:bit Web Bluetooth\n* Copyright (c) 2019 Rob Moran\n*\n* The MIT License (MIT)\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in all\n* copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n* SOFTWARE.\n*/\n\nimport { DeviceInformationService } from \"./services/device-information\";\nimport { ButtonService } from \"./services/button\";\nimport { LedService } from \"./services/led\";\nimport { TemperatureService } from \"./services/temperature\";\nimport { AccelerometerService } from \"./services/accelerometer\";\nimport { MagnetometerService } from \"./services/magnetometer\";\nimport { IoPinService } from \"./services/io-pin\";\nimport { UartService } from \"./services/uart\";\nimport { EventService } from \"./services/event\";\nimport { DfuControlService } from \"./services/dfu-control\";\n\nexport interface Services {\n deviceInformationService?: DeviceInformationService;\n buttonService?: ButtonService;\n ledService?: LedService;\n temperatureService?: TemperatureService;\n accelerometerService?: AccelerometerService;\n magnetometerService?: MagnetometerService;\n uartService?: UartService;\n eventService?: EventService;\n dfuControlService?: DfuControlService;\n ioPinService?: IoPinService;\n}\n\n/**\n * @hidden\n */\ninterface Service {\n uuid: BluetoothCharacteristicUUID;\n create(service: BluetoothRemoteGATTService): Promise<any>;\n}\n\n/**\n * @hidden\n */\nclass ServiceBuilder {\n\n constructor(private services: BluetoothRemoteGATTService[]) {\n }\n\n public async createService<T>(serviceClass: (new (service: BluetoothRemoteGATTService) => T) & Service): Promise<T | undefined> {\n const found = this.services.find(service => service.uuid === serviceClass.uuid);\n\n if (!found) {\n return undefined;\n }\n\n return await serviceClass.create(found);\n }\n}\n\nexport const requestMicrobit = async (bluetooth: Bluetooth): Promise<BluetoothDevice | undefined> => {\n const device = await bluetooth.requestDevice({\n filters: [\n {\n namePrefix: \"BBC micro:bit\"\n }\n ],\n optionalServices: [\n DeviceInformationService.uuid,\n ButtonService.uuid,\n LedService.uuid,\n TemperatureService.uuid,\n AccelerometerService.uuid,\n MagnetometerService.uuid,\n IoPinService.uuid,\n UartService.uuid,\n EventService.uuid,\n DfuControlService.uuid\n ]\n });\n\n return device;\n};\n\nexport const getServices = async (device: BluetoothDevice): Promise<Services> => {\n if (!device || !device.gatt) {\n return {};\n }\n\n if (!device.gatt.connected) {\n await device.gatt.connect();\n }\n\n const services = await device.gatt.getPrimaryServices();\n const builder = new ServiceBuilder(services);\n\n const deviceInformationService = await builder.createService(DeviceInformationService);\n const buttonService = await builder.createService(ButtonService);\n const ledService = await builder.createService(LedService);\n const temperatureService = await builder.createService(TemperatureService);\n const accelerometerService = await builder.createService(AccelerometerService);\n const magnetometerService = await builder.createService(MagnetometerService);\n const uartService = await builder.createService(UartService);\n const eventService = await builder.createService(EventService);\n const dfuControlService = await builder.createService(DfuControlService);\n const ioPinService = await builder.createService(IoPinService);\n\n return {\n deviceInformationService,\n buttonService,\n ledService,\n temperatureService,\n accelerometerService,\n magnetometerService,\n uartService,\n eventService,\n dfuControlService,\n ioPinService\n };\n};\n","let waiting_timer = undefined;\nlet notif_queue = [];\n\nfunction notif(notif_c) {\n let notification_area = document.querySelector(\".statusline .notification-area\");\n\n if ((notification_area.querySelector(\".notification\") === null) && (waiting_timer === undefined)) {\n // This is just so no notifications will be played and disappears while the full screen landscape warning is in the way.\n if( (screen.availHeight > screen.availWidth) && (!document.body.classList.contains(\"ignore-landscape-warning\"))){\n waiting_timer = setInterval(() => {\n if( (screen.availHeight < screen.availWidth) || (document.body.classList.contains(\"ignore-landscape-warning\"))){\n clearInterval(waiting_timer);\n waiting_timer = undefined;\n notif(notif_queue.pop());\n }\n }, 1000);\n notif_queue.push(notif_c);\n return;\n }\n\n let notif_elem = document.createElement(\"div\");\n notif_elem.className = \"notification\";\n notif_elem.appendChild(notif_c[0]);\n notif_elem.appendChild(notif_c[1]);\n\n notification_area.appendChild(notif_elem);\n\n setTimeout(() => {\n notification_area.removeChild(notif_elem);\n if (notif_queue.length > 0) {\n notif(notif_queue.pop());\n }\n }, 5000);\n } else {\n notif_queue.push(notif_c);\n }\n}\n\nexport function notif_alert(alert_str) {\n let div = document.createElement(\"div\");\n div.className = \"notification-content\";\n\n let text = document.createElement(\"p\");\n text.innerHTML = alert_str;\n div.appendChild(text);\n\n let icon = document.createElement(\"i\");\n icon.className = \"alert fas fa-exclamation-triangle\";\n div.appendChild(icon);\n\n notif([icon, div]);\n}\n\nexport function notif_warn(alert_str) {\n let div = document.createElement(\"div\");\n div.className = \"notification-content\";\n\n let text = document.createElement(\"p\");\n text.innerHTML = alert_str;\n div.appendChild(text);\n\n let icon = document.createElement(\"i\");\n icon.className = \"warning fas fa-exclamation-triangle\";\n div.appendChild(icon);\n\n notif([icon, div]);\n}\n\nexport function notif_info(info_str) {\n let div = document.createElement(\"div\");\n div.className = \"notification-content\";\n\n let text = document.createElement(\"p\");\n text.innerHTML = info_str;\n div.appendChild(text);\n\n let icon = document.createElement(\"i\");\n icon.className = \"info fas fa-info-circle\";\n div.appendChild(icon);\n\n notif([icon, div]);\n}\n\nexport function notif_success(success_str) {\n let div = document.createElement(\"div\");\n div.className = \"notification-content\";\n\n let text = document.createElement(\"p\");\n text.innerHTML = success_str;\n div.appendChild(text);\n\n let icon = document.createElement(\"i\");\n icon.className = \"success fas fa-check-circle\";\n div.appendChild(icon);\n\n notif([icon, div]);\n}\n","import { notif_alert, notif_warn, notif_info, notif_success } from './notification';\n\nexport default class hoverControlModule {\n #throttle = 0;\n #throttleAcc = 0;\n #rudder = 0;\n #rudderAcc = 0;\n #arm = 0;\n #armAcc = 0;\n\n constructor() {}\n\n acc(accString) {\n accString.match(/[A-Z][-,0-9]+/g).forEach((item, i) => {\n switch (item.substring(0, 1)) {\n case \"T\":\n this.#throttleAcc = parseInt(item.substring(1, item.length));\n break;\n case \"R\":\n this.#rudderAcc = parseInt(item.substring(1, item.length));\n break;\n case \"A\":\n this.#armAcc = parseInt(item.substring(1, item.length)) == 1;\n if (this.#armAcc) {\n document.body.classList.add(\"armed\");\n } else {\n document.body.classList.remove(\"armed\");\n }\n break;\n case \"S\":\n break;\n default:\n console.log(`Unkown acc: ${item}`);\n }\n });\n document.querySelector(\".acc-string pre\").innerHTML = `T: ${this.#throttleAcc}, R: ${this.#rudderAcc}`;\n }\n\n reset() {\n this.setArm(0);\n this.setThrottle(0);\n this.setRudder(0);\n }\n\n setThrottle(throttle) {\n if (!this.#armAcc) { return; }\n if (throttle > 100) { throttle = 100; }\n if (throttle < 0) { throttle = 0; }\n this.#throttle = throttle;\n }\n getThrottle() {\n return this.#throttle;\n }\n\n setRudder(rudder) {\n if (!this.#armAcc) { return; }\n if (rudder > 90) { rudder = 90; }\n if (rudder < -90) { rudder = -90; }\n this.#rudder = rudder;\n }\n getRudder() {\n return this.#rudder;\n }\n\n setArm(arm) {\n this.#arm = arm;\n if (!this.#arm) {\n this.#throttle = 0;\n this.#rudder = 0;\n }\n }\n getArm() {\n return this.#arm;\n }\n}\n","import nipplejs from 'nipplejs';\nimport { requestMicrobit, getServices } from 'microbit-web-bluetooth';\nimport hoverControlModule from './hoverControlModule';\nimport { notif_alert, notif_warn, notif_info, notif_success } from './notification';\n\nlet sw = \"service-worker.js\";\nif (navigator.serviceWorker) {\n navigator.serviceWorker.register(\n sw, {scope: '/hoverbit-ble/'}\n ).then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) { return; }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n notif_info(\"New content is available, relaunch the app to install it.\");\n } else {\n notif_success(\"Content is cached for offline use.\");\n }\n }\n };\n };\n registration.update();\n }).catch(error => {\n notif_alert(\"Could not install service worker...\");\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\ndocument.getElementById(\"btn_ignore_landscape_warning\").addEventListener(\"click\", () => {\n document.body.classList.add(\"ignore-landscape-warning\");\n});\n\n/* Define and initialize things */\nlet hoverControl = new hoverControlModule();\nlet bluetoothDevice;\nlet bluetoothDeviceServices;\n\nlet joystickLeft = nipplejs.create({\n zone: document.querySelector(\".joystick-left\"),\n size: 200,\n position: {left: '50%', bottom: '50%'},\n mode: \"static\",\n lockX: true\n});\nlet joystickRight = nipplejs.create({\n zone: document.querySelector(\".joystick-right\"),\n size: 200,\n position: {left: '50%', bottom: '50%'},\n mode: \"static\",\n lockY: true\n});\n\n/* Setup event_listeners */\njoystickLeft.on(\"move\", (evt, data) => {\n let rudder = ((data.distance * 90) / 100);\n if (data.angle.degree > 90) { rudder = rudder * -1; }\n hoverControl.setRudder(rudder);\n});\njoystickLeft.on(\"end\", (evt, data) => {\n hoverControl.setRudder(0);\n});\n\njoystickRight.on(\"move\", (evt, data) => {\n let throttle = data.distance;\n\n if (data.angle.degree > 90) {\n throttle = 0;\n if (data.distance >= 100) {\n hoverControl.reset();\n if (hoverControl.getArm()) {\n notif_alert(\"Detected panicy reducing of throttle, dearming...\");\n }\n }\n }\n hoverControl.setThrottle(throttle);\n});\njoystickRight.on(\"end\", (evt, data) => {\n hoverControl.setThrottle(0);\n});\n\ndocument.getElementById(\"btn_arm\").addEventListener(\"click\", () => {\n hoverControl.setArm(true);\n});\n\ndocument.getElementById(\"btn_disarm\").addEventListener(\"click\", () => {\n hoverControl.setArm(false);\n});\n\ndocument.querySelector(\"#btn_disconnect\").addEventListener(\"click\", () => {\n hoverControl.reset();\n bluetoothDevice.gatt.disconnect();\n});\n\nlet intervalConnectionChecker = setInterval(() => {\n if (bluetoothDevice !== undefined && bluetoothDevice) {\n if (bluetoothDevice.gatt.connected) {\n document.body.classList.add(\"connected\");\n } else {\n document.body.classList.remove(\"connected\");\n document.body.classList.remove(\"armed\");\n }\n } else if (bluetoothDevice !== undefined) {\n bluetoothDevice.gatt.reconnect();\n }\n}, 500);\n\nlet intervalSendCommands = setInterval(async() => {\n if (bluetoothDevice !== undefined && bluetoothDevice) {\n if (bluetoothDevice.gatt.connected && bluetoothDeviceServices.uartService) {\n let command =\n \"T\" + hoverControl.getThrottle().toString() +\n \"R\" + hoverControl.getRudder().toString() +\n \"A\" + (hoverControl.getArm() ? \"1\" : \"0\") +\n \"S0\" +\n \":\";\n await bluetoothDeviceServices.uartService.sendText(command);\n }\n }\n}, 70);\n\nfunction receiveText(event) {\n /* Just make the ping symbol reappear. */\n var elm = document.querySelector(\".ping i\");\n var newone = elm.cloneNode(true);\n elm.parentNode.replaceChild(newone, elm);\n\n /* Actually handle received text. */\n if ((event.detail).indexOf(\":\") != -1) {\n let parts = (event.detail).split(\":\");\n\n if (parts[0] == \"B\") {\n document.querySelector(\".battery-status\").innerHTML = parts[1] + \"mV\";\n } else if (parts[0] == \"ACC\") {\n hoverControl.acc(parts[1]);\n } else {\n console.log(parts);\n }\n } else {\n notif_warn(\"Received weird data from MICRO:BIT...\");\n console.log(`Received unknown: ${event.detail}`);\n }\n}\n\ndocument.getElementById(\"btn_connect\").onclick = async () => {\n if (bluetoothDevice !== undefined && bluetoothDevice.gatt.connected) {\n bluetoothDevice.disconnect();\n }\n\n const device = await requestMicrobit(window.navigator.bluetooth);\n bluetoothDevice = device;\n\n if (device) {\n hoverControl.reset();\n const services = await getServices(device);\n bluetoothDeviceServices = services;\n\n if (bluetoothDeviceServices.deviceInformationService) {\n // logJson(await services.deviceInformationService.readDeviceInformation());\n }\n\n if (services.uartService) {\n services.uartService.addEventListener(\"receiveText\", receiveText);\n }\n }\n}\n"]} \ No newline at end of file
diff --git a/main.ea7a67f6.js b/main.ea7a67f6.js
new file mode 100644
index 0000000..20f7c67
--- /dev/null
+++ b/main.ea7a67f6.js
@@ -0,0 +1,13 @@
+parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"thIN":[function(require,module,exports) {
+var define;
+var t;!function(i,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof t&&t.amd?t("nipplejs",[],e):"object"==typeof exports?exports.nipplejs=e():i.nipplejs=e()}(window,function(){return function(t){var i={};function e(o){if(i[o])return i[o].exports;var n=i[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,e),n.l=!0,n.exports}return e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:o})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,i){if(1&i&&(t=e(t)),8&i)return t;if(4&i&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(e.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&i&&"string"!=typeof t)for(var n in t)e.d(o,n,function(i){return t[i]}.bind(null,n));return o},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},e.p="",e(e.s=0)}([function(t,i,e){"use strict";e.r(i);var o,n=function(t,i){var e=i.x-t.x,o=i.y-t.y;return Math.sqrt(e*e+o*o)},s=function(t){return t*(Math.PI/180)},r=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.addEventListener?t.addEventListener(o,e,!1):t.attachEvent&&t.attachEvent(o,e)},d=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.removeEventListener?t.removeEventListener(o,e):t.detachEvent&&t.detachEvent(o,e)},a=function(t){return t.preventDefault(),t.type.match(/^touch/)?t.changedTouches:t},p=function(){return{x:void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,y:void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop}},c=function(t,i){i.top||i.right||i.bottom||i.left?(t.style.top=i.top,t.style.right=i.right,t.style.bottom=i.bottom,t.style.left=i.left):(t.style.left=i.x+"px",t.style.top=i.y+"px")},h=function(t,i,e){var o=l(t);for(var n in o)if(o.hasOwnProperty(n))if("string"==typeof i)o[n]=i+" "+e;else{for(var s="",r=0,d=i.length;r<d;r+=1)s+=i[r]+" "+e+", ";o[n]=s.slice(0,-2)}return o},l=function(t){var i={};return i[t]="",["webkit","Moz","o"].forEach(function(e){i[e+t.charAt(0).toUpperCase()+t.slice(1)]=""}),i},u=function(t,i){for(var e in i)i.hasOwnProperty(e)&&(t[e]=i[e]);return t},f=function(t,i){if(t.length)for(var e=0,o=t.length;e<o;e+=1)i(t[e]);else i(t)},y=!!("ontouchstart"in window),m=!!window.PointerEvent,v=!!window.MSPointerEvent,g={start:"mousedown",move:"mousemove",end:"mouseup"},b={};function x(){}m?o={start:"pointerdown",move:"pointermove",end:"pointerup, pointercancel"}:v?o={start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:y?(o={start:"touchstart",move:"touchmove",end:"touchend, touchcancel"},b=g):o=g,x.prototype.on=function(t,i){var e,o=t.split(/[ ,]+/g);this._handlers_=this._handlers_||{};for(var n=0;n<o.length;n+=1)e=o[n],this._handlers_[e]=this._handlers_[e]||[],this._handlers_[e].push(i);return this},x.prototype.off=function(t,i){return this._handlers_=this._handlers_||{},void 0===t?this._handlers_={}:void 0===i?this._handlers_[t]=null:this._handlers_[t]&&this._handlers_[t].indexOf(i)>=0&&this._handlers_[t].splice(this._handlers_[t].indexOf(i),1),this},x.prototype.trigger=function(t,i){var e,o=this,n=t.split(/[ ,]+/g);o._handlers_=o._handlers_||{};for(var s=0;s<n.length;s+=1)e=n[s],o._handlers_[e]&&o._handlers_[e].length&&o._handlers_[e].forEach(function(t){t.call(o,{type:e,target:o},i)})},x.prototype.config=function(t){this.options=this.defaults||{},t&&(this.options=function(t,i){var e={};for(var o in t)t.hasOwnProperty(o)&&i.hasOwnProperty(o)?e[o]=i[o]:t.hasOwnProperty(o)&&(e[o]=t[o]);return e}(this.options,t))},x.prototype.bindEvt=function(t,i){var e=this;return e._domHandlers_=e._domHandlers_||{},e._domHandlers_[i]=function(){"function"==typeof e["on"+i]?e["on"+i].apply(e,arguments):console.warn('[WARNING] : Missing "on'+i+'" handler.')},r(t,o[i],e._domHandlers_[i]),b[i]&&r(t,b[i],e._domHandlers_[i]),e},x.prototype.unbindEvt=function(t,i){return this._domHandlers_=this._domHandlers_||{},d(t,o[i],this._domHandlers_[i]),b[i]&&d(t,b[i],this._domHandlers_[i]),delete this._domHandlers_[i],this};var O=x;function _(t,i){return this.identifier=i.identifier,this.position=i.position,this.frontPosition=i.frontPosition,this.collection=t,this.defaults={size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,mode:"dynamic",zone:document.body,lockX:!1,lockY:!1,shape:"circle"},this.config(i),"dynamic"===this.options.mode&&(this.options.restOpacity=0),this.id=_.id,_.id+=1,this.buildEl().stylize(),this.instance={el:this.ui.el,on:this.on.bind(this),off:this.off.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),add:this.addToDom.bind(this),remove:this.removeFromDom.bind(this),destroy:this.destroy.bind(this),setPosition:this.setPosition.bind(this),resetDirection:this.resetDirection.bind(this),computeDirection:this.computeDirection.bind(this),trigger:this.trigger.bind(this),position:this.position,frontPosition:this.frontPosition,ui:this.ui,identifier:this.identifier,id:this.id,options:this.options},this.instance}_.prototype=new O,_.constructor=_,_.id=0,_.prototype.buildEl=function(t){return this.ui={},this.options.dataOnly?this:(this.ui.el=document.createElement("div"),this.ui.back=document.createElement("div"),this.ui.front=document.createElement("div"),this.ui.el.className="nipple collection_"+this.collection.id,this.ui.back.className="back",this.ui.front.className="front",this.ui.el.setAttribute("id","nipple_"+this.collection.id+"_"+this.id),this.ui.el.appendChild(this.ui.back),this.ui.el.appendChild(this.ui.front),this)},_.prototype.stylize=function(){if(this.options.dataOnly)return this;var t=this.options.fadeTime+"ms",i=function(t,i){var e=l("borderRadius");for(var o in e)e.hasOwnProperty(o)&&(e[o]="50%");return e}(),e=h("transition","opacity",t),o={};return o.el={position:"absolute",opacity:this.options.restOpacity,display:"block",zIndex:999},o.back={position:"absolute",display:"block",width:this.options.size+"px",height:this.options.size+"px",marginLeft:-this.options.size/2+"px",marginTop:-this.options.size/2+"px",background:this.options.color,opacity:".5"},o.front={width:this.options.size/2+"px",height:this.options.size/2+"px",position:"absolute",display:"block",marginLeft:-this.options.size/4+"px",marginTop:-this.options.size/4+"px",background:this.options.color,opacity:".5"},u(o.el,e),"circle"===this.options.shape&&u(o.back,i),u(o.front,i),this.applyStyles(o),this},_.prototype.applyStyles=function(t){for(var i in this.ui)if(this.ui.hasOwnProperty(i))for(var e in t[i])this.ui[i].style[e]=t[i][e];return this},_.prototype.addToDom=function(){return this.options.dataOnly||document.body.contains(this.ui.el)?this:(this.options.zone.appendChild(this.ui.el),this)},_.prototype.removeFromDom=function(){return this.options.dataOnly||!document.body.contains(this.ui.el)?this:(this.options.zone.removeChild(this.ui.el),this)},_.prototype.destroy=function(){clearTimeout(this.removeTimeout),clearTimeout(this.showTimeout),clearTimeout(this.restTimeout),this.trigger("destroyed",this.instance),this.removeFromDom(),this.off()},_.prototype.show=function(t){var i=this;return i.options.dataOnly?i:(clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.addToDom(),i.restCallback(),setTimeout(function(){i.ui.el.style.opacity=1},0),i.showTimeout=setTimeout(function(){i.trigger("shown",i.instance),"function"==typeof t&&t.call(this)},i.options.fadeTime),i)},_.prototype.hide=function(t){var i=this;return i.options.dataOnly?i:(i.ui.el.style.opacity=i.options.restOpacity,clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.removeTimeout=setTimeout(function(){var e="dynamic"===i.options.mode?"none":"block";i.ui.el.style.display=e,"function"==typeof t&&t.call(i),i.trigger("hidden",i.instance)},i.options.fadeTime),i.options.restJoystick&&i.setPosition(t,{x:0,y:0}),i)},_.prototype.setPosition=function(t,i){var e=this;e.frontPosition={x:i.x,y:i.y};var o=e.options.fadeTime+"ms",n={};n.front=h("transition",["top","left"],o);var s={front:{}};s.front={left:e.frontPosition.x+"px",top:e.frontPosition.y+"px"},e.applyStyles(n),e.applyStyles(s),e.restTimeout=setTimeout(function(){"function"==typeof t&&t.call(e),e.restCallback()},e.options.fadeTime)},_.prototype.restCallback=function(){var t={};t.front=h("transition","none",""),this.applyStyles(t),this.trigger("rested",this.instance)},_.prototype.resetDirection=function(){this.direction={x:!1,y:!1,angle:!1}},_.prototype.computeDirection=function(t){var i,e,o,n=t.angle.radian,s=Math.PI/4,r=Math.PI/2;if(n>s&&n<3*s&&!t.lockX?i="up":n>-s&&n<=s&&!t.lockY?i="left":n>3*-s&&n<=-s&&!t.lockX?i="down":t.lockY||(i="right"),t.lockY||(e=n>-r&&n<r?"left":"right"),t.lockX||(o=n>0?"up":"down"),t.force>this.options.threshold){var d,a={};for(d in this.direction)this.direction.hasOwnProperty(d)&&(a[d]=this.direction[d]);var p={};for(d in this.direction={x:e,y:o,angle:i},t.direction=this.direction,a)a[d]===this.direction[d]&&(p[d]=!0);if(p.x&&p.y&&p.angle)return t;p.x&&p.y||this.trigger("plain",t),p.x||this.trigger("plain:"+e,t),p.y||this.trigger("plain:"+o,t),p.angle||this.trigger("dir dir:"+i,t)}else this.resetDirection();return t};var w=_;function T(t,i){return this.nipples=[],this.idles=[],this.actives=[],this.ids=[],this.pressureIntervals={},this.manager=t,this.id=T.id,T.id+=1,this.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:"dynamic",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,lockX:!1,lockY:!1,shape:"circle",dynamicPage:!1},this.config(i),"static"!==this.options.mode&&"semi"!==this.options.mode||(this.options.multitouch=!1),this.options.multitouch||(this.options.maxNumberOfNipples=1),this.updateBox(),this.prepareNipples(),this.bindings(),this.begin(),this.nipples}T.prototype=new O,T.constructor=T,T.id=0,T.prototype.prepareNipples=function(){var t=this.nipples;t.on=this.on.bind(this),t.off=this.off.bind(this),t.options=this.options,t.destroy=this.destroy.bind(this),t.ids=this.ids,t.id=this.id,t.processOnMove=this.processOnMove.bind(this),t.processOnEnd=this.processOnEnd.bind(this),t.get=function(i){if(void 0===i)return t[0];for(var e=0,o=t.length;e<o;e+=1)if(t[e].identifier===i)return t[e];return!1}},T.prototype.bindings=function(){this.bindEvt(this.options.zone,"start"),this.options.zone.style.touchAction="none",this.options.zone.style.msTouchAction="none"},T.prototype.begin=function(){var t=this.options;if("static"===t.mode){var i=this.createNipple(t.position,this.manager.getIdentifier());i.add(),this.idles.push(i)}},T.prototype.createNipple=function(t,i){var e=p(),o={},n=this.options;if(t.x&&t.y)o={x:t.x-(e.x+this.box.left),y:t.y-(e.y+this.box.top)};else if(t.top||t.right||t.bottom||t.left){var s=document.createElement("DIV");s.style.display="hidden",s.style.top=t.top,s.style.right=t.right,s.style.bottom=t.bottom,s.style.left=t.left,s.style.position="absolute",n.zone.appendChild(s);var r=s.getBoundingClientRect();n.zone.removeChild(s),o=t,t={x:r.left+e.x,y:r.top+e.y}}var d=new w(this,{color:n.color,size:n.size,threshold:n.threshold,fadeTime:n.fadeTime,dataOnly:n.dataOnly,restJoystick:n.restJoystick,restOpacity:n.restOpacity,mode:n.mode,identifier:i,position:t,zone:n.zone,frontPosition:{x:0,y:0},shape:n.shape});return n.dataOnly||(c(d.ui.el,o),c(d.ui.front,d.frontPosition)),this.nipples.push(d),this.trigger("added "+d.identifier+":added",d),this.manager.trigger("added "+d.identifier+":added",d),this.bindNipple(d),d},T.prototype.updateBox=function(){this.box=this.options.zone.getBoundingClientRect()},T.prototype.bindNipple=function(t){var i,e=this,o=function(t,o){i=t.type+" "+o.id+":"+t.type,e.trigger(i,o)};t.on("destroyed",e.onDestroyed.bind(e)),t.on("shown hidden rested dir plain",o),t.on("dir:up dir:right dir:down dir:left",o),t.on("plain:up plain:right plain:down plain:left",o)},T.prototype.pressureFn=function(t,i,e){var o=this,n=0;clearInterval(o.pressureIntervals[e]),o.pressureIntervals[e]=setInterval(function(){var e=t.force||t.pressure||t.webkitForce||0;e!==n&&(i.trigger("pressure",e),o.trigger("pressure "+i.identifier+":pressure",e),n=e)}.bind(o),100)},T.prototype.onstart=function(t){var i=this,e=i.options,o=t;return t=a(t),i.updateBox(),f(t,function(n){i.actives.length<e.maxNumberOfNipples?i.processOnStart(n):o.type.match(/^touch/)&&(Object.keys(i.manager.ids).forEach(function(e){if(Object.values(o.touches).findIndex(function(t){return t.identifier===e})<0){var n=[t[0]];n.identifier=e,i.processOnEnd(n)}}),i.actives.length<e.maxNumberOfNipples&&i.processOnStart(n))}),i.manager.bindDocument(),!1},T.prototype.processOnStart=function(t){var i,e=this,o=e.options,s=e.manager.getIdentifier(t),r=t.force||t.pressure||t.webkitForce||0,d={x:t.pageX,y:t.pageY},a=e.getOrCreate(s,d);a.identifier!==s&&e.manager.removeIdentifier(a.identifier),a.identifier=s;var p=function(i){i.trigger("start",i),e.trigger("start "+i.id+":start",i),i.show(),r>0&&e.pressureFn(t,i,i.identifier),e.processOnMove(t)};if((i=e.idles.indexOf(a))>=0&&e.idles.splice(i,1),e.actives.push(a),e.ids.push(a.identifier),"semi"!==o.mode)p(a);else{if(!(n(d,a.position)<=o.catchDistance))return a.destroy(),void e.processOnStart(t);p(a)}return a},T.prototype.getOrCreate=function(t,i){var e,o=this.options;return/(semi|static)/.test(o.mode)?(e=this.idles[0])?(this.idles.splice(0,1),e):"semi"===o.mode?this.createNipple(i,t):(console.warn("Coudln't find the needed nipple."),!1):e=this.createNipple(i,t)},T.prototype.processOnMove=function(t){var i=this.options,e=this.manager.getIdentifier(t),o=this.nipples.get(e);if(function(t){return isNaN(t.buttons)?0!==t.pressure:0!==t.buttons}(t)){if(!o)return console.error("Found zombie joystick with ID "+e),void this.manager.removeIdentifier(e);if(i.dynamicPage){var r=p();a=o.el.getBoundingClientRect(),o.position={x:r.x+a.left,y:r.y+a.top}}o.identifier=e;var d=o.options.size/2,a={x:t.pageX,y:t.pageY};i.lockX&&(a.y=o.position.y),i.lockY&&(a.x=o.position.x);var h,l,u,f,y,m,v,g,b=n(a,o.position),x=(h=a,u=(l=o.position).x-h.x,f=l.y-h.y,function(t){return t*(180/Math.PI)}(Math.atan2(f,u))),O=s(x),_=b/d,w={distance:b,position:a};"circle"===o.options.shape?(b=Math.min(b,d),y=o.position,m=b,g={x:0,y:0},v=s(v=x),g.x=y.x-m*Math.cos(v),g.y=y.y-m*Math.sin(v),a=g):(a=function(t,i,e){return{x:Math.min(Math.max(t.x,i.x-e),i.x+e),y:Math.min(Math.max(t.y,i.y-e),i.y+e)}}(a,o.position,d),b=n(a,o.position));var T=a.x-o.position.x,k=a.y-o.position.y;o.frontPosition={x:T,y:k},i.dataOnly||c(o.ui.front,o.frontPosition);var P={identifier:o.identifier,position:a,force:_,pressure:t.force||t.pressure||t.webkitForce||0,distance:b,angle:{radian:O,degree:x},vector:{x:T/d,y:-k/d},raw:w,instance:o,lockX:i.lockX,lockY:i.lockY};(P=o.computeDirection(P)).angle={radian:s(180-x),degree:180-x},o.trigger("move",P),this.trigger("move "+o.id+":move",P)}else this.processOnEnd(t)},T.prototype.processOnEnd=function(t){var i=this,e=i.options,o=i.manager.getIdentifier(t),n=i.nipples.get(o),s=i.manager.removeIdentifier(n.identifier);n&&(e.dataOnly||n.hide(function(){"dynamic"===e.mode&&(n.trigger("removed",n),i.trigger("removed "+n.id+":removed",n),i.manager.trigger("removed "+n.id+":removed",n),n.destroy())}),clearInterval(i.pressureIntervals[n.identifier]),n.resetDirection(),n.trigger("end",n),i.trigger("end "+n.id+":end",n),i.ids.indexOf(n.identifier)>=0&&i.ids.splice(i.ids.indexOf(n.identifier),1),i.actives.indexOf(n)>=0&&i.actives.splice(i.actives.indexOf(n),1),/(semi|static)/.test(e.mode)?i.idles.push(n):i.nipples.indexOf(n)>=0&&i.nipples.splice(i.nipples.indexOf(n),1),i.manager.unbindDocument(),/(semi|static)/.test(e.mode)&&(i.manager.ids[s.id]=s.identifier))},T.prototype.onDestroyed=function(t,i){this.nipples.indexOf(i)>=0&&this.nipples.splice(this.nipples.indexOf(i),1),this.actives.indexOf(i)>=0&&this.actives.splice(this.actives.indexOf(i),1),this.idles.indexOf(i)>=0&&this.idles.splice(this.idles.indexOf(i),1),this.ids.indexOf(i.identifier)>=0&&this.ids.splice(this.ids.indexOf(i.identifier),1),this.manager.removeIdentifier(i.identifier),this.manager.unbindDocument()},T.prototype.destroy=function(){for(var t in this.unbindEvt(this.options.zone,"start"),this.nipples.forEach(function(t){t.destroy()}),this.pressureIntervals)this.pressureIntervals.hasOwnProperty(t)&&clearInterval(this.pressureIntervals[t]);this.trigger("destroyed",this.nipples),this.manager.unbindDocument(),this.off()};var k=T;function P(t){var i,e=this;return e.ids={},e.index=0,e.collections=[],e.config(t),e.prepareCollections(),r(window,"resize",function(t){clearTimeout(i),i=setTimeout(function(){var t,i=p();e.collections.forEach(function(e){e.forEach(function(e){t=e.el.getBoundingClientRect(),e.position={x:i.x+t.left,y:i.y+t.top}})})},100)}),e.collections}P.prototype=new O,P.constructor=P,P.prototype.prepareCollections=function(){var t=this;t.collections.create=t.create.bind(t),t.collections.on=t.on.bind(t),t.collections.off=t.off.bind(t),t.collections.destroy=t.destroy.bind(t),t.collections.get=function(i){var e;return t.collections.every(function(t){return!(e=t.get(i))}),e}},P.prototype.create=function(t){return this.createCollection(t)},P.prototype.createCollection=function(t){var i=new k(this,t);return this.bindCollection(i),this.collections.push(i),i},P.prototype.bindCollection=function(t){var i,e=this,o=function(t,o){i=t.type+" "+o.id+":"+t.type,e.trigger(i,o)};t.on("destroyed",e.onDestroyed.bind(e)),t.on("shown hidden rested dir plain",o),t.on("dir:up dir:right dir:down dir:left",o),t.on("plain:up plain:right plain:down plain:left",o)},P.prototype.bindDocument=function(){this.binded||(this.bindEvt(document,"move").bindEvt(document,"end"),this.binded=!0)},P.prototype.unbindDocument=function(t){Object.keys(this.ids).length&&!0!==t||(this.unbindEvt(document,"move").unbindEvt(document,"end"),this.binded=!1)},P.prototype.getIdentifier=function(t){var i;return t?void 0===(i=void 0===t.identifier?t.pointerId:t.identifier)&&(i=this.latest||0):i=this.index,void 0===this.ids[i]&&(this.ids[i]=this.index,this.index+=1),this.latest=i,this.ids[i]},P.prototype.removeIdentifier=function(t){var i={};for(var e in this.ids)if(this.ids[e]===t){i.id=e,i.identifier=this.ids[e],delete this.ids[e];break}return i},P.prototype.onmove=function(t){return this.onAny("move",t),!1},P.prototype.onend=function(t){return this.onAny("end",t),!1},P.prototype.oncancel=function(t){return this.onAny("end",t),!1},P.prototype.onAny=function(t,i){var e,o=this,n="processOn"+t.charAt(0).toUpperCase()+t.slice(1);return i=a(i),f(i,function(t){e=o.getIdentifier(t),f(o.collections,function(t,i,e){e.ids.indexOf(i)>=0&&(e[n](t),t._found_=!0)}.bind(null,t,e)),t._found_||o.removeIdentifier(e)}),!1},P.prototype.destroy=function(){this.unbindDocument(!0),this.ids={},this.index=0,this.collections.forEach(function(t){t.destroy()}),this.off()},P.prototype.onDestroyed=function(t,i){if(this.collections.indexOf(i)<0)return!1;this.collections.splice(this.collections.indexOf(i),1)};var E=new P;i.default={create:function(t){return E.create(t)},factory:E}}]).default});
+},{}],"SiMs":[function(require,module,exports) {
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.notif_alert=a,exports.notif_warn=i,exports.notif_info=c,exports.notif_success=l;let e=void 0,t=[];function n(a){let i=document.querySelector(".statusline .notification-area");if(null===i.querySelector(".notification")&&void 0===e){if(screen.availHeight>screen.availWidth&&!document.body.classList.contains("ignore-landscape-warning"))return e=setInterval(()=>{(screen.availHeight<screen.availWidth||document.body.classList.contains("ignore-landscape-warning"))&&(clearInterval(e),e=void 0,n(t.pop()))},1e3),void t.push(a);let c=document.createElement("div");c.className="notification",c.appendChild(a[0]),c.appendChild(a[1]),i.appendChild(c),setTimeout(()=>{i.removeChild(c),t.length>0&&n(t.pop())},5e3)}else t.push(a)}function a(e){let t=document.createElement("div");t.className="notification-content";let a=document.createElement("p");a.innerHTML=e,t.appendChild(a);let i=document.createElement("i");i.className="alert fas fa-exclamation-triangle",t.appendChild(i),n([i,t])}function i(e){let t=document.createElement("div");t.className="notification-content";let a=document.createElement("p");a.innerHTML=e,t.appendChild(a);let i=document.createElement("i");i.className="warning fas fa-exclamation-triangle",t.appendChild(i),n([i,t])}function c(e){let t=document.createElement("div");t.className="notification-content";let a=document.createElement("p");a.innerHTML=e,t.appendChild(a);let i=document.createElement("i");i.className="info fas fa-info-circle",t.appendChild(i),n([i,t])}function l(e){let t=document.createElement("div");t.className="notification-content";let a=document.createElement("p");a.innerHTML=e,t.appendChild(a);let i=document.createElement("i");i.className="success fas fa-check-circle",t.appendChild(i),n([i,t])}
+},{}],"CLny":[function(require,module,exports) {
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=require("./notification");function t(e,t){var s=t.get(e);if(!s)throw new TypeError("attempted to get private field on non-instance");return s.get?s.get.call(e):s.value}function s(e,t,s){var r=t.get(e);if(!r)throw new TypeError("attempted to set private field on non-instance");if(r.set)r.set.call(e,s);else{if(!r.writable)throw new TypeError("attempted to set read only private field");r.value=s}return s}let r=0;var a=new WeakMap,i=new WeakMap,n=new WeakMap,l=new WeakMap,o=new WeakMap,h=new WeakMap;class u{constructor(){a.set(this,{writable:!0,value:0}),i.set(this,{writable:!0,value:0}),n.set(this,{writable:!0,value:0}),l.set(this,{writable:!0,value:0}),o.set(this,{writable:!0,value:0}),h.set(this,{writable:!0,value:0})}acc(e){e.match(/[A-Z][-,0-9]+/g).forEach((e,r)=>{switch(e.substring(0,1)){case"T":s(this,i,parseInt(e.substring(1,e.length)));break;case"R":s(this,l,parseInt(e.substring(1,e.length)));break;case"A":s(this,h,1==parseInt(e.substring(1,e.length))),t(this,h)?document.body.classList.add("armed"):document.body.classList.remove("armed");break;case"S":break;default:console.log(`Unkown acc: ${e}`)}}),document.querySelector(".acc-string pre").innerHTML=`T: ${t(this,i)}, R: ${t(this,l)}, ${r}`,r++}reset(){this.setArm(0),this.setThrottle(0),this.setRudder(0)}setThrottle(e){t(this,h)&&(e>100&&(e=100),e<0&&(e=0),s(this,a,e))}getThrottle(){return t(this,a)}setRudder(e){t(this,h)&&(e>90&&(e=90),e<-90&&(e=-90),s(this,n,e))}getRudder(){return t(this,n)}setArm(e){s(this,o,e),t(this,o)||(s(this,a,0),s(this,n,0))}getArm(){return t(this,o)}}exports.default=u;
+},{"./notification":"SiMs"}],"COPm":[function(require,module,exports) {
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;const e="6e400001-b5a3-f393-e0a9-e50e24dcca9e",t="6e400002-b5a3-f393-e0a9-e50e24dcca9e",c="6e400003-b5a3-f393-e0a9-e50e24dcca9e";class i{constructor(){this.onConnectCallback=function(){},this.onDisconnectCallback=function(){},this.onUartTxCallback=function(){},this.characteristic={UART_RX:{},UART_TX:{}}}onConnect(e){this.onConnectCallback=e}onDisconnect(e){this.onDisconnectCallback=e}onUartTx(e){this.onUartTxCallback=e}sendUart(e){if(this.isConnected()&&this.characteristic.UART_RX){let t=new TextEncoder;this.characteristic.UART_RX.writeValue(t.encode(e)).catch(e=>{console.log(e)})}}isConnected(){return!!this.device&&this.device.gatt.connected}disconnect(){this.isConnected()&&this.device.gatt.disconnect()}searchDevice(){navigator.bluetooth.requestDevice({filters:[{namePrefix:"BBC micro:bit"}],optionalServices:[e]}).then(e=>(console.log("> Name: "+e.name),console.log("> Id: "+e.id),this.device=e,e.addEventListener("gattserverdisconnected",this.onDisconnectCallback),e.gatt.connect())).then(e=>(this.onConnectCallback(),console.log("Getting Services..."),e.getPrimaryServices())).then(e=>{console.log("Getting Characteristics...");let i=Promise.resolve();return e.forEach(e=>{i=i.then(i=>e.getCharacteristics().then(i=>{console.log("> Service: "+e.uuid),i.forEach(e=>{switch(console.log(">> Characteristic: "+e.uuid+" "+n(e)),e.uuid){case c:this.characteristic.UART_RX=e;break;case t:this.characteristic.UART_TX=e,this.characteristic.UART_TX.startNotifications(),this.characteristic.UART_TX.addEventListener("characteristicvaluechanged",e=>{this.onUartTxCallback(a(e))})}})}))}),i}).catch(e=>{console.log("Argh! "+e)})}}function n(e){let t=[];for(const c in e.properties)!0===e.properties[c]&&t.push(c.toUpperCase());return"["+t.join(", ")+"]"}function a(e){let t=[];for(var c=0;c<e.target.value.byteLength;c++)t[c]=e.target.value.getUint8(c);return String.fromCharCode.apply(null,t)}exports.default=i;
+},{}],"d6sW":[function(require,module,exports) {
+"use strict";var e=r(require("nipplejs")),t=r(require("./hoverControlModule")),n=r(require("./uBit")),o=require("./notification");function r(e){return e&&e.__esModule?e:{default:e}}let i="service-worker.js";navigator.serviceWorker&&navigator.serviceWorker.register(i,{scope:"/hoverbit-ble/"}).then(e=>{e.onupdatefound=(()=>{const t=e.installing;null!=t&&(t.onstatechange=(()=>{"installed"===t.state&&(navigator.serviceWorker.controller?(0,o.notif_info)("New content is available, relaunch the app to install it."):(0,o.notif_success)("Content is cached for offline use."))}))}),e.update()}).catch(e=>{(0,o.notif_alert)("Could not install service worker..."),console.error("Error during service worker registration:",e)}),document.getElementById("btn_ignore_landscape_warning").addEventListener("click",()=>{document.body.classList.add("ignore-landscape-warning")}),navigator.bluetooth||alert("Bluetooth not enabled in your browser, this won't work...");let c=new n.default,d=new t.default,a=e.default.create({zone:document.querySelector(".joystick-left"),size:200,position:{left:"50%",bottom:"50%"},mode:"static",lockX:!0}),s=e.default.create({zone:document.querySelector(".joystick-right"),size:200,position:{left:"50%",bottom:"50%"},mode:"static",lockY:!0});a.on("move",(e,t)=>{let n=90*t.distance/100;t.angle.degree>90&&(n*=-1),d.setRudder(Math.round(n))}),a.on("end",(e,t)=>{d.setRudder(0)}),s.on("move",(e,t)=>{let n=t.distance;t.angle.degree>90&&(n=0,t.distance>=100&&(d.reset(),d.getArm()&&(0,o.notif_alert)("Detected panicy reducing of throttle, dearming..."))),d.setThrottle(Math.round(n))}),s.on("end",(e,t)=>{d.setThrottle(0)}),document.getElementById("btn_arm").addEventListener("click",()=>{d.setArm(!0)}),document.getElementById("btn_disarm").addEventListener("click",()=>{d.setArm(!1)}),document.querySelector("#btn_disconnect").addEventListener("click",()=>{d.reset(),c.disconnect()}),document.getElementById("btn_connect").addEventListener("click",()=>{c.searchDevice()}),c.onConnect(()=>{document.body.classList.add("connected")}),c.onDisconnect(()=>{document.body.classList.remove("connected"),document.body.classList.remove("armed")}),c.onUartTx(e=>{var t=document.querySelector(".ping i"),n=t.cloneNode(!0);if(t.parentNode.replaceChild(n,t),-1!=e.indexOf(":")){let t=e.split(":");"B"==t[0]?document.querySelector(".battery-status").innerHTML=t[1]+"mV":"ACC"==t[0]?d.acc(t[1]):console.log(t)}else(0,o.notif_warn)("Received weird data from MICRO:BIT..."),console.log(`Received unknown: ${e}`)});let l=setInterval(async()=>{if(c.isConnected()){let e="T"+d.getThrottle().toString()+"R"+d.getRudder().toString()+"A"+(d.getArm()?"1":"0")+"S0:";await c.sendUart(e)}},100);
+},{"nipplejs":"thIN","./hoverControlModule":"CLny","./uBit":"COPm","./notification":"SiMs"}]},{},["d6sW"], null)
+//# sourceMappingURL=/hoverbit-ble/main.ea7a67f6.js.map \ No newline at end of file
diff --git a/main.ea7a67f6.js.map b/main.ea7a67f6.js.map
new file mode 100644
index 0000000..9d67662
--- /dev/null
+++ b/main.ea7a67f6.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../node_modules/nipplejs/dist/nipplejs.js","js/notification.js","js/hoverControlModule.js","js/uBit.js","js/main.js"],"names":["waiting_timer","undefined","notif_queue","notif","notif_c","notification_area","document","querySelector","screen","availHeight","availWidth","body","classList","contains","setInterval","clearInterval","pop","push","notif_elem","createElement","className","appendChild","setTimeout","removeChild","length","notif_alert","alert_str","div","text","innerHTML","icon","notif_warn","notif_info","info_str","notif_success","success_str","n","hoverControlModule","constructor","acc","accString","match","forEach","item","i","substring","parseInt","add","remove","console","log","reset","setArm","setThrottle","setRudder","throttle","getThrottle","rudder","getRudder","arm","getArm","UART_SERVICE_UUID","UART_TX_CHARACTERISTIC_UUID","UART_RX_CHARACTERISTIC_UUID","uBitBLE","onConnectCallback","onDisconnectCallback","onUartTxCallback","characteristic","UART_RX","UART_TX","onConnect","callbackFunction","onDisconnect","onUartTx","sendUart","string","isConnected","encoder","TextEncoder","writeValue","encode","catch","error","device","gatt","connected","disconnect","searchDevice","navigator","bluetooth","requestDevice","filters","namePrefix","optionalServices","then","name","id","addEventListener","connect","server","getPrimaryServices","services","queue","Promise","resolve","service","_","getCharacteristics","characteristics","uuid","getSupportedProperties","startNotifications","event","eventByteArrayToString","supportedProperties","p","properties","toUpperCase","join","receivedData","target","value","byteLength","getUint8","String","fromCharCode","apply","sw","serviceWorker","register","scope","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","update","getElementById","alert","ubit","hoverControl","joystickLeft","nipplejs","create","zone","size","position","left","bottom","mode","lockX","joystickRight","lockY","on","evt","data","distance","angle","degree","Math","round","elm","newone","cloneNode","parentNode","replaceChild","indexOf","parts","split","intervalSendCommands","command","toString"],"mappings":"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","file":"main.ea7a67f6.js","sourceRoot":"../src","sourcesContent":["!function(t,i){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(\"nipplejs\",[],i):\"object\"==typeof exports?exports.nipplejs=i():t.nipplejs=i()}(window,function(){return function(t){var i={};function e(o){if(i[o])return i[o].exports;var n=i[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,e),n.l=!0,n.exports}return e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:o})},e.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},e.t=function(t,i){if(1&i&&(t=e(t)),8&i)return t;if(4&i&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(e.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&i&&\"string\"!=typeof t)for(var n in t)e.d(o,n,function(i){return t[i]}.bind(null,n));return o},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,\"a\",i),i},e.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},e.p=\"\",e(e.s=0)}([function(t,i,e){\"use strict\";e.r(i);var o,n=function(t,i){var e=i.x-t.x,o=i.y-t.y;return Math.sqrt(e*e+o*o)},s=function(t){return t*(Math.PI/180)},r=function(t){return t*(180/Math.PI)},d=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.addEventListener?t.addEventListener(o,e,!1):t.attachEvent&&t.attachEvent(o,e)},a=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.removeEventListener?t.removeEventListener(o,e):t.detachEvent&&t.detachEvent(o,e)},p=function(t){return t.preventDefault(),t.type.match(/^touch/)?t.changedTouches:t},c=function(){return{x:void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,y:void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop}},h=function(t,i){i.top||i.right||i.bottom||i.left?(t.style.top=i.top,t.style.right=i.right,t.style.bottom=i.bottom,t.style.left=i.left):(t.style.left=i.x+\"px\",t.style.top=i.y+\"px\")},l=function(t,i,e){var o=u(t);for(var n in o)if(o.hasOwnProperty(n))if(\"string\"==typeof i)o[n]=i+\" \"+e;else{for(var s=\"\",r=0,d=i.length;r<d;r+=1)s+=i[r]+\" \"+e+\", \";o[n]=s.slice(0,-2)}return o},u=function(t){var i={};i[t]=\"\";return[\"webkit\",\"Moz\",\"o\"].forEach(function(e){i[e+t.charAt(0).toUpperCase()+t.slice(1)]=\"\"}),i},f=function(t,i){for(var e in i)i.hasOwnProperty(e)&&(t[e]=i[e]);return t},y=function(t,i){if(t.length)for(var e=0,o=t.length;e<o;e+=1)i(t[e]);else i(t)},m=!!(\"ontouchstart\"in window),v=!!window.PointerEvent,g=!!window.MSPointerEvent,b={start:\"mousedown\",move:\"mousemove\",end:\"mouseup\"},x={};function O(){}v?o={start:\"pointerdown\",move:\"pointermove\",end:\"pointerup, pointercancel\"}:g?o={start:\"MSPointerDown\",move:\"MSPointerMove\",end:\"MSPointerUp\"}:m?(o={start:\"touchstart\",move:\"touchmove\",end:\"touchend, touchcancel\"},x=b):o=b,O.prototype.on=function(t,i){var e,o=t.split(/[ ,]+/g);this._handlers_=this._handlers_||{};for(var n=0;n<o.length;n+=1)e=o[n],this._handlers_[e]=this._handlers_[e]||[],this._handlers_[e].push(i);return this},O.prototype.off=function(t,i){return this._handlers_=this._handlers_||{},void 0===t?this._handlers_={}:void 0===i?this._handlers_[t]=null:this._handlers_[t]&&this._handlers_[t].indexOf(i)>=0&&this._handlers_[t].splice(this._handlers_[t].indexOf(i),1),this},O.prototype.trigger=function(t,i){var e,o=this,n=t.split(/[ ,]+/g);o._handlers_=o._handlers_||{};for(var s=0;s<n.length;s+=1)e=n[s],o._handlers_[e]&&o._handlers_[e].length&&o._handlers_[e].forEach(function(t){t.call(o,{type:e,target:o},i)})},O.prototype.config=function(t){this.options=this.defaults||{},t&&(this.options=function(t,i){var e={};for(var o in t)t.hasOwnProperty(o)&&i.hasOwnProperty(o)?e[o]=i[o]:t.hasOwnProperty(o)&&(e[o]=t[o]);return e}(this.options,t))},O.prototype.bindEvt=function(t,i){var e=this;return e._domHandlers_=e._domHandlers_||{},e._domHandlers_[i]=function(){\"function\"==typeof e[\"on\"+i]?e[\"on\"+i].apply(e,arguments):console.warn('[WARNING] : Missing \"on'+i+'\" handler.')},d(t,o[i],e._domHandlers_[i]),x[i]&&d(t,x[i],e._domHandlers_[i]),e},O.prototype.unbindEvt=function(t,i){return this._domHandlers_=this._domHandlers_||{},a(t,o[i],this._domHandlers_[i]),x[i]&&a(t,x[i],this._domHandlers_[i]),delete this._domHandlers_[i],this};var _=O;function w(t,i){return this.identifier=i.identifier,this.position=i.position,this.frontPosition=i.frontPosition,this.collection=t,this.defaults={size:100,threshold:.1,color:\"white\",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,mode:\"dynamic\",zone:document.body,lockX:!1,lockY:!1,shape:\"circle\"},this.config(i),\"dynamic\"===this.options.mode&&(this.options.restOpacity=0),this.id=w.id,w.id+=1,this.buildEl().stylize(),this.instance={el:this.ui.el,on:this.on.bind(this),off:this.off.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),add:this.addToDom.bind(this),remove:this.removeFromDom.bind(this),destroy:this.destroy.bind(this),setPosition:this.setPosition.bind(this),resetDirection:this.resetDirection.bind(this),computeDirection:this.computeDirection.bind(this),trigger:this.trigger.bind(this),position:this.position,frontPosition:this.frontPosition,ui:this.ui,identifier:this.identifier,id:this.id,options:this.options},this.instance}w.prototype=new _,w.constructor=w,w.id=0,w.prototype.buildEl=function(t){return this.ui={},this.options.dataOnly?this:(this.ui.el=document.createElement(\"div\"),this.ui.back=document.createElement(\"div\"),this.ui.front=document.createElement(\"div\"),this.ui.el.className=\"nipple collection_\"+this.collection.id,this.ui.back.className=\"back\",this.ui.front.className=\"front\",this.ui.el.setAttribute(\"id\",\"nipple_\"+this.collection.id+\"_\"+this.id),this.ui.el.appendChild(this.ui.back),this.ui.el.appendChild(this.ui.front),this)},w.prototype.stylize=function(){if(this.options.dataOnly)return this;var t=this.options.fadeTime+\"ms\",i=function(t,i){var e=u(t);for(var o in e)e.hasOwnProperty(o)&&(e[o]=i);return e}(\"borderRadius\",\"50%\"),e=l(\"transition\",\"opacity\",t),o={};return o.el={position:\"absolute\",opacity:this.options.restOpacity,display:\"block\",zIndex:999},o.back={position:\"absolute\",display:\"block\",width:this.options.size+\"px\",height:this.options.size+\"px\",marginLeft:-this.options.size/2+\"px\",marginTop:-this.options.size/2+\"px\",background:this.options.color,opacity:\".5\"},o.front={width:this.options.size/2+\"px\",height:this.options.size/2+\"px\",position:\"absolute\",display:\"block\",marginLeft:-this.options.size/4+\"px\",marginTop:-this.options.size/4+\"px\",background:this.options.color,opacity:\".5\"},f(o.el,e),\"circle\"===this.options.shape&&f(o.back,i),f(o.front,i),this.applyStyles(o),this},w.prototype.applyStyles=function(t){for(var i in this.ui)if(this.ui.hasOwnProperty(i))for(var e in t[i])this.ui[i].style[e]=t[i][e];return this},w.prototype.addToDom=function(){return this.options.dataOnly||document.body.contains(this.ui.el)?this:(this.options.zone.appendChild(this.ui.el),this)},w.prototype.removeFromDom=function(){return this.options.dataOnly||!document.body.contains(this.ui.el)?this:(this.options.zone.removeChild(this.ui.el),this)},w.prototype.destroy=function(){clearTimeout(this.removeTimeout),clearTimeout(this.showTimeout),clearTimeout(this.restTimeout),this.trigger(\"destroyed\",this.instance),this.removeFromDom(),this.off()},w.prototype.show=function(t){var i=this;return i.options.dataOnly?i:(clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.addToDom(),i.restCallback(),setTimeout(function(){i.ui.el.style.opacity=1},0),i.showTimeout=setTimeout(function(){i.trigger(\"shown\",i.instance),\"function\"==typeof t&&t.call(this)},i.options.fadeTime),i)},w.prototype.hide=function(t){var i=this;return i.options.dataOnly?i:(i.ui.el.style.opacity=i.options.restOpacity,clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.removeTimeout=setTimeout(function(){var e=\"dynamic\"===i.options.mode?\"none\":\"block\";i.ui.el.style.display=e,\"function\"==typeof t&&t.call(i),i.trigger(\"hidden\",i.instance)},i.options.fadeTime),i.options.restJoystick&&i.setPosition(t,{x:0,y:0}),i)},w.prototype.setPosition=function(t,i){var e=this;e.frontPosition={x:i.x,y:i.y};var o=e.options.fadeTime+\"ms\",n={};n.front=l(\"transition\",[\"top\",\"left\"],o);var s={front:{}};s.front={left:e.frontPosition.x+\"px\",top:e.frontPosition.y+\"px\"},e.applyStyles(n),e.applyStyles(s),e.restTimeout=setTimeout(function(){\"function\"==typeof t&&t.call(e),e.restCallback()},e.options.fadeTime)},w.prototype.restCallback=function(){var t={};t.front=l(\"transition\",\"none\",\"\"),this.applyStyles(t),this.trigger(\"rested\",this.instance)},w.prototype.resetDirection=function(){this.direction={x:!1,y:!1,angle:!1}},w.prototype.computeDirection=function(t){var i,e,o,n=t.angle.radian,s=Math.PI/4,r=Math.PI/2;if(n>s&&n<3*s&&!t.lockX?i=\"up\":n>-s&&n<=s&&!t.lockY?i=\"left\":n>3*-s&&n<=-s&&!t.lockX?i=\"down\":t.lockY||(i=\"right\"),t.lockY||(e=n>-r&&n<r?\"left\":\"right\"),t.lockX||(o=n>0?\"up\":\"down\"),t.force>this.options.threshold){var d,a={};for(d in this.direction)this.direction.hasOwnProperty(d)&&(a[d]=this.direction[d]);var p={};for(d in this.direction={x:e,y:o,angle:i},t.direction=this.direction,a)a[d]===this.direction[d]&&(p[d]=!0);if(p.x&&p.y&&p.angle)return t;p.x&&p.y||this.trigger(\"plain\",t),p.x||this.trigger(\"plain:\"+e,t),p.y||this.trigger(\"plain:\"+o,t),p.angle||this.trigger(\"dir dir:\"+i,t)}else this.resetDirection();return t};var T=w;function k(t,i){return this.nipples=[],this.idles=[],this.actives=[],this.ids=[],this.pressureIntervals={},this.manager=t,this.id=k.id,k.id+=1,this.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:\"dynamic\",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:\"white\",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,lockX:!1,lockY:!1,shape:\"circle\",dynamicPage:!1},this.config(i),\"static\"!==this.options.mode&&\"semi\"!==this.options.mode||(this.options.multitouch=!1),this.options.multitouch||(this.options.maxNumberOfNipples=1),this.updateBox(),this.prepareNipples(),this.bindings(),this.begin(),this.nipples}k.prototype=new _,k.constructor=k,k.id=0,k.prototype.prepareNipples=function(){var t=this.nipples;t.on=this.on.bind(this),t.off=this.off.bind(this),t.options=this.options,t.destroy=this.destroy.bind(this),t.ids=this.ids,t.id=this.id,t.processOnMove=this.processOnMove.bind(this),t.processOnEnd=this.processOnEnd.bind(this),t.get=function(i){if(void 0===i)return t[0];for(var e=0,o=t.length;e<o;e+=1)if(t[e].identifier===i)return t[e];return!1}},k.prototype.bindings=function(){this.bindEvt(this.options.zone,\"start\"),this.options.zone.style.touchAction=\"none\",this.options.zone.style.msTouchAction=\"none\"},k.prototype.begin=function(){var t=this.options;if(\"static\"===t.mode){var i=this.createNipple(t.position,this.manager.getIdentifier());i.add(),this.idles.push(i)}},k.prototype.createNipple=function(t,i){var e=c(),o={},n=this.options;if(t.x&&t.y)o={x:t.x-(e.x+this.box.left),y:t.y-(e.y+this.box.top)};else if(t.top||t.right||t.bottom||t.left){var s=document.createElement(\"DIV\");s.style.display=\"hidden\",s.style.top=t.top,s.style.right=t.right,s.style.bottom=t.bottom,s.style.left=t.left,s.style.position=\"absolute\",n.zone.appendChild(s);var r=s.getBoundingClientRect();n.zone.removeChild(s),o=t,t={x:r.left+e.x,y:r.top+e.y}}var d=new T(this,{color:n.color,size:n.size,threshold:n.threshold,fadeTime:n.fadeTime,dataOnly:n.dataOnly,restJoystick:n.restJoystick,restOpacity:n.restOpacity,mode:n.mode,identifier:i,position:t,zone:n.zone,frontPosition:{x:0,y:0},shape:n.shape});return n.dataOnly||(h(d.ui.el,o),h(d.ui.front,d.frontPosition)),this.nipples.push(d),this.trigger(\"added \"+d.identifier+\":added\",d),this.manager.trigger(\"added \"+d.identifier+\":added\",d),this.bindNipple(d),d},k.prototype.updateBox=function(){this.box=this.options.zone.getBoundingClientRect()},k.prototype.bindNipple=function(t){var i,e=this,o=function(t,o){i=t.type+\" \"+o.id+\":\"+t.type,e.trigger(i,o)};t.on(\"destroyed\",e.onDestroyed.bind(e)),t.on(\"shown hidden rested dir plain\",o),t.on(\"dir:up dir:right dir:down dir:left\",o),t.on(\"plain:up plain:right plain:down plain:left\",o)},k.prototype.pressureFn=function(t,i,e){var o=this,n=0;clearInterval(o.pressureIntervals[e]),o.pressureIntervals[e]=setInterval(function(){var e=t.force||t.pressure||t.webkitForce||0;e!==n&&(i.trigger(\"pressure\",e),o.trigger(\"pressure \"+i.identifier+\":pressure\",e),n=e)}.bind(o),100)},k.prototype.onstart=function(t){var i=this,e=i.options,o=t;t=p(t),i.updateBox();return y(t,function(n){i.actives.length<e.maxNumberOfNipples?i.processOnStart(n):o.type.match(/^touch/)&&(Object.keys(i.manager.ids).forEach(function(e){if(Object.values(o.touches).findIndex(function(t){return t.identifier===e})<0){var n=[t[0]];n.identifier=e,i.processOnEnd(n)}}),i.actives.length<e.maxNumberOfNipples&&i.processOnStart(n))}),i.manager.bindDocument(),!1},k.prototype.processOnStart=function(t){var i,e=this,o=e.options,s=e.manager.getIdentifier(t),r=t.force||t.pressure||t.webkitForce||0,d={x:t.pageX,y:t.pageY},a=e.getOrCreate(s,d);a.identifier!==s&&e.manager.removeIdentifier(a.identifier),a.identifier=s;var p=function(i){i.trigger(\"start\",i),e.trigger(\"start \"+i.id+\":start\",i),i.show(),r>0&&e.pressureFn(t,i,i.identifier),e.processOnMove(t)};if((i=e.idles.indexOf(a))>=0&&e.idles.splice(i,1),e.actives.push(a),e.ids.push(a.identifier),\"semi\"!==o.mode)p(a);else{if(!(n(d,a.position)<=o.catchDistance))return a.destroy(),void e.processOnStart(t);p(a)}return a},k.prototype.getOrCreate=function(t,i){var e,o=this.options;return/(semi|static)/.test(o.mode)?(e=this.idles[0])?(this.idles.splice(0,1),e):\"semi\"===o.mode?this.createNipple(i,t):(console.warn(\"Coudln't find the needed nipple.\"),!1):e=this.createNipple(i,t)},k.prototype.processOnMove=function(t){var i=this.options,e=this.manager.getIdentifier(t),o=this.nipples.get(e);if(function(t){return isNaN(t.buttons)?0!==t.pressure:0!==t.buttons}(t)){if(!o)return console.error(\"Found zombie joystick with ID \"+e),void this.manager.removeIdentifier(e);if(i.dynamicPage){var d=c();p=o.el.getBoundingClientRect(),o.position={x:d.x+p.left,y:d.y+p.top}}o.identifier=e;var a=o.options.size/2,p={x:t.pageX,y:t.pageY};i.lockX&&(p.y=o.position.y),i.lockY&&(p.x=o.position.x);var l,u,f,y,m,v,g,b,x=n(p,o.position),O=(l=p,u=o.position,f=u.x-l.x,y=u.y-l.y,r(Math.atan2(y,f))),_=s(O),w=x/a,T={distance:x,position:p};\"circle\"===o.options.shape?(x=Math.min(x,a),m=o.position,v=x,b={x:0,y:0},g=s(g=O),b.x=m.x-v*Math.cos(g),b.y=m.y-v*Math.sin(g),p=b):(p=function(t,i,e){return{x:Math.min(Math.max(t.x,i.x-e),i.x+e),y:Math.min(Math.max(t.y,i.y-e),i.y+e)}}(p,o.position,a),x=n(p,o.position));var k=p.x-o.position.x,P=p.y-o.position.y;o.frontPosition={x:k,y:P},i.dataOnly||h(o.ui.front,o.frontPosition);var E={identifier:o.identifier,position:p,force:w,pressure:t.force||t.pressure||t.webkitForce||0,distance:x,angle:{radian:_,degree:O},vector:{x:k/a,y:-P/a},raw:T,instance:o,lockX:i.lockX,lockY:i.lockY};(E=o.computeDirection(E)).angle={radian:s(180-O),degree:180-O},o.trigger(\"move\",E),this.trigger(\"move \"+o.id+\":move\",E)}else this.processOnEnd(t)},k.prototype.processOnEnd=function(t){var i=this,e=i.options,o=i.manager.getIdentifier(t),n=i.nipples.get(o),s=i.manager.removeIdentifier(n.identifier);n&&(e.dataOnly||n.hide(function(){\"dynamic\"===e.mode&&(n.trigger(\"removed\",n),i.trigger(\"removed \"+n.id+\":removed\",n),i.manager.trigger(\"removed \"+n.id+\":removed\",n),n.destroy())}),clearInterval(i.pressureIntervals[n.identifier]),n.resetDirection(),n.trigger(\"end\",n),i.trigger(\"end \"+n.id+\":end\",n),i.ids.indexOf(n.identifier)>=0&&i.ids.splice(i.ids.indexOf(n.identifier),1),i.actives.indexOf(n)>=0&&i.actives.splice(i.actives.indexOf(n),1),/(semi|static)/.test(e.mode)?i.idles.push(n):i.nipples.indexOf(n)>=0&&i.nipples.splice(i.nipples.indexOf(n),1),i.manager.unbindDocument(),/(semi|static)/.test(e.mode)&&(i.manager.ids[s.id]=s.identifier))},k.prototype.onDestroyed=function(t,i){this.nipples.indexOf(i)>=0&&this.nipples.splice(this.nipples.indexOf(i),1),this.actives.indexOf(i)>=0&&this.actives.splice(this.actives.indexOf(i),1),this.idles.indexOf(i)>=0&&this.idles.splice(this.idles.indexOf(i),1),this.ids.indexOf(i.identifier)>=0&&this.ids.splice(this.ids.indexOf(i.identifier),1),this.manager.removeIdentifier(i.identifier),this.manager.unbindDocument()},k.prototype.destroy=function(){for(var t in this.unbindEvt(this.options.zone,\"start\"),this.nipples.forEach(function(t){t.destroy()}),this.pressureIntervals)this.pressureIntervals.hasOwnProperty(t)&&clearInterval(this.pressureIntervals[t]);this.trigger(\"destroyed\",this.nipples),this.manager.unbindDocument(),this.off()};var P=k;function E(t){var i,e=this;return e.ids={},e.index=0,e.collections=[],e.config(t),e.prepareCollections(),d(window,\"resize\",function(t){clearTimeout(i),i=setTimeout(function(){var t,i=c();e.collections.forEach(function(e){e.forEach(function(e){t=e.el.getBoundingClientRect(),e.position={x:i.x+t.left,y:i.y+t.top}})})},100)}),e.collections}E.prototype=new _,E.constructor=E,E.prototype.prepareCollections=function(){var t=this;t.collections.create=t.create.bind(t),t.collections.on=t.on.bind(t),t.collections.off=t.off.bind(t),t.collections.destroy=t.destroy.bind(t),t.collections.get=function(i){var e;return t.collections.every(function(t){return!(e=t.get(i))}),e}},E.prototype.create=function(t){return this.createCollection(t)},E.prototype.createCollection=function(t){var i=new P(this,t);return this.bindCollection(i),this.collections.push(i),i},E.prototype.bindCollection=function(t){var i,e=this,o=function(t,o){i=t.type+\" \"+o.id+\":\"+t.type,e.trigger(i,o)};t.on(\"destroyed\",e.onDestroyed.bind(e)),t.on(\"shown hidden rested dir plain\",o),t.on(\"dir:up dir:right dir:down dir:left\",o),t.on(\"plain:up plain:right plain:down plain:left\",o)},E.prototype.bindDocument=function(){this.binded||(this.bindEvt(document,\"move\").bindEvt(document,\"end\"),this.binded=!0)},E.prototype.unbindDocument=function(t){Object.keys(this.ids).length&&!0!==t||(this.unbindEvt(document,\"move\").unbindEvt(document,\"end\"),this.binded=!1)},E.prototype.getIdentifier=function(t){var i;return t?void 0===(i=void 0===t.identifier?t.pointerId:t.identifier)&&(i=this.latest||0):i=this.index,void 0===this.ids[i]&&(this.ids[i]=this.index,this.index+=1),this.latest=i,this.ids[i]},E.prototype.removeIdentifier=function(t){var i={};for(var e in this.ids)if(this.ids[e]===t){i.id=e,i.identifier=this.ids[e],delete this.ids[e];break}return i},E.prototype.onmove=function(t){return this.onAny(\"move\",t),!1},E.prototype.onend=function(t){return this.onAny(\"end\",t),!1},E.prototype.oncancel=function(t){return this.onAny(\"end\",t),!1},E.prototype.onAny=function(t,i){var e,o=this,n=\"processOn\"+t.charAt(0).toUpperCase()+t.slice(1);i=p(i);return y(i,function(t){e=o.getIdentifier(t),y(o.collections,function(t,i,e){e.ids.indexOf(i)>=0&&(e[n](t),t._found_=!0)}.bind(null,t,e)),t._found_||o.removeIdentifier(e)}),!1},E.prototype.destroy=function(){this.unbindDocument(!0),this.ids={},this.index=0,this.collections.forEach(function(t){t.destroy()}),this.off()},E.prototype.onDestroyed=function(t,i){if(this.collections.indexOf(i)<0)return!1;this.collections.splice(this.collections.indexOf(i),1)};var I=new E;i.default={create:function(t){return I.create(t)},factory:I}}]).default});","let waiting_timer = undefined;\nlet notif_queue = [];\n\nfunction notif(notif_c) {\n let notification_area = document.querySelector(\".statusline .notification-area\");\n\n if ((notification_area.querySelector(\".notification\") === null) && (waiting_timer === undefined)) {\n // This is just so no notifications will be played and disappears while the full screen landscape warning is in the way.\n if( (screen.availHeight > screen.availWidth) && (!document.body.classList.contains(\"ignore-landscape-warning\"))){\n waiting_timer = setInterval(() => {\n if( (screen.availHeight < screen.availWidth) || (document.body.classList.contains(\"ignore-landscape-warning\"))){\n clearInterval(waiting_timer);\n waiting_timer = undefined;\n notif(notif_queue.pop());\n }\n }, 1000);\n notif_queue.push(notif_c);\n return;\n }\n\n let notif_elem = document.createElement(\"div\");\n notif_elem.className = \"notification\";\n notif_elem.appendChild(notif_c[0]);\n notif_elem.appendChild(notif_c[1]);\n\n notification_area.appendChild(notif_elem);\n\n setTimeout(() => {\n notification_area.removeChild(notif_elem);\n if (notif_queue.length > 0) {\n notif(notif_queue.pop());\n }\n }, 5000);\n } else {\n notif_queue.push(notif_c);\n }\n}\n\nexport function notif_alert(alert_str) {\n let div = document.createElement(\"div\");\n div.className = \"notification-content\";\n\n let text = document.createElement(\"p\");\n text.innerHTML = alert_str;\n div.appendChild(text);\n\n let icon = document.createElement(\"i\");\n icon.className = \"alert fas fa-exclamation-triangle\";\n div.appendChild(icon);\n\n notif([icon, div]);\n}\n\nexport function notif_warn(alert_str) {\n let div = document.createElement(\"div\");\n div.className = \"notification-content\";\n\n let text = document.createElement(\"p\");\n text.innerHTML = alert_str;\n div.appendChild(text);\n\n let icon = document.createElement(\"i\");\n icon.className = \"warning fas fa-exclamation-triangle\";\n div.appendChild(icon);\n\n notif([icon, div]);\n}\n\nexport function notif_info(info_str) {\n let div = document.createElement(\"div\");\n div.className = \"notification-content\";\n\n let text = document.createElement(\"p\");\n text.innerHTML = info_str;\n div.appendChild(text);\n\n let icon = document.createElement(\"i\");\n icon.className = \"info fas fa-info-circle\";\n div.appendChild(icon);\n\n notif([icon, div]);\n}\n\nexport function notif_success(success_str) {\n let div = document.createElement(\"div\");\n div.className = \"notification-content\";\n\n let text = document.createElement(\"p\");\n text.innerHTML = success_str;\n div.appendChild(text);\n\n let icon = document.createElement(\"i\");\n icon.className = \"success fas fa-check-circle\";\n div.appendChild(icon);\n\n notif([icon, div]);\n}\n","import { notif_alert, notif_warn, notif_info, notif_success } from './notification';\n\nlet n = 0;\n\nexport default class hoverControlModule {\n #throttle = 0;\n #throttleAcc = 0;\n #rudder = 0;\n #rudderAcc = 0;\n #arm = 0;\n #armAcc = 0;\n\n constructor() {}\n\n acc(accString) {\n accString.match(/[A-Z][-,0-9]+/g).forEach((item, i) => {\n switch (item.substring(0, 1)) {\n case \"T\":\n this.#throttleAcc = parseInt(item.substring(1, item.length));\n break;\n case \"R\":\n this.#rudderAcc = parseInt(item.substring(1, item.length));\n break;\n case \"A\":\n this.#armAcc = parseInt(item.substring(1, item.length)) == 1;\n if (this.#armAcc) {\n document.body.classList.add(\"armed\");\n } else {\n document.body.classList.remove(\"armed\");\n }\n break;\n case \"S\":\n break;\n default:\n console.log(`Unkown acc: ${item}`);\n }\n });\n document.querySelector(\".acc-string pre\").innerHTML = `T: ${this.#throttleAcc}, R: ${this.#rudderAcc}, ${n}`;\n n++;\n }\n\n reset() {\n this.setArm(0);\n this.setThrottle(0);\n this.setRudder(0);\n }\n\n setThrottle(throttle) {\n if (!this.#armAcc) { return; }\n if (throttle > 100) { throttle = 100; }\n if (throttle < 0) { throttle = 0; }\n this.#throttle = throttle;\n }\n getThrottle() {\n return this.#throttle;\n }\n\n setRudder(rudder) {\n if (!this.#armAcc) { return; }\n if (rudder > 90) { rudder = 90; }\n if (rudder < -90) { rudder = -90; }\n this.#rudder = rudder;\n }\n getRudder() {\n return this.#rudder;\n }\n\n setArm(arm) {\n this.#arm = arm;\n if (!this.#arm) {\n this.#throttle = 0;\n this.#rudder = 0;\n }\n }\n getArm() {\n return this.#arm;\n }\n}\n","/*\n * This code is written with a lot of help from these resources:\n * https://github.com/antefact/microBit.js/blob/master/src/microBit.js\n * https://gist.github.com/kotobuki/7c67f8b9361e08930da1a5cfcfb0653f\n * https://lancaster-university.github.io/microbit-docs/resources/bluetooth/bluetooth_profile.html\n */\nconst UART_SERVICE_UUID = \"6e400001-b5a3-f393-e0a9-e50e24dcca9e\";\nconst UART_TX_CHARACTERISTIC_UUID = \"6e400002-b5a3-f393-e0a9-e50e24dcca9e\";\nconst UART_RX_CHARACTERISTIC_UUID = \"6e400003-b5a3-f393-e0a9-e50e24dcca9e\";\n\nexport default class uBitBLE {\n\n constructor() {\n let device;\n\n this.onConnectCallback = function() {};\n this.onDisconnectCallback = function() {};\n this.onUartTxCallback = function() {};\n\n this.characteristic = {\n UART_RX: {},\n UART_TX: {}\n }\n }\n\n onConnect(callbackFunction) {\n this.onConnectCallback = callbackFunction;\n }\n\n onDisconnect(callbackFunction) {\n this.onDisconnectCallback = callbackFunction;\n }\n\n onUartTx(callbackFunction) {\n this.onUartTxCallback = callbackFunction;\n }\n\n sendUart(string) {\n if (this.isConnected() && this.characteristic.UART_RX) {\n let encoder = new TextEncoder();\n this.characteristic.UART_RX.writeValue(\n encoder.encode(string)\n ).catch(error => {\n console.log(error);\n });\n }\n }\n\n isConnected() {\n if (this.device) {\n return this.device.gatt.connected;\n } else {\n return false;\n }\n }\n\n disconnect() {\n if (this.isConnected()) {\n this.device.gatt.disconnect();\n }\n }\n\n searchDevice() {\n navigator.bluetooth.requestDevice({\n filters: [{namePrefix: \"BBC micro:bit\"}],\n optionalServices: [UART_SERVICE_UUID]\n })\n .then(device => {\n console.log('> Name: ' + device.name);\n console.log('> Id: ' + device.id);\n this.device = device;\n\n device.addEventListener('gattserverdisconnected', this.onDisconnectCallback);\n\n // Attempts to connect to remote GATT Server.\n return device.gatt.connect();\n })\n .then(server => {\n // Note that we could also get all services that match a specific UUID by\n // passing it to getPrimaryServices().\n this.onConnectCallback();\n console.log('Getting Services...');\n return server.getPrimaryServices();\n })\n .then(services => {\n console.log('Getting Characteristics...');\n let queue = Promise.resolve();\n services.forEach(service => {\n queue = queue.then(_ => service.getCharacteristics().then(characteristics => {\n console.log('> Service: ' + service.uuid);\n characteristics.forEach(characteristic => {\n console.log('>> Characteristic: ' + characteristic.uuid + ' ' +\n getSupportedProperties(characteristic));\n switch (characteristic.uuid) {\n case UART_RX_CHARACTERISTIC_UUID:\n this.characteristic.UART_RX = characteristic;\n break;\n \n case UART_TX_CHARACTERISTIC_UUID:\n this.characteristic.UART_TX = characteristic;\n this.characteristic.UART_TX.startNotifications();\n this.characteristic.UART_TX.addEventListener(\n \"characteristicvaluechanged\",\n (event) => { this.onUartTxCallback(eventByteArrayToString(event)) }\n );\n break;\n\n default:\n }\n });\n }));\n });\n return queue;\n })\n .catch(error => {\n console.log('Argh! ' + error);\n });\n }\n\n}\n\nfunction getSupportedProperties(characteristic) {\n let supportedProperties = [];\n for (const p in characteristic.properties) {\n if (characteristic.properties[p] === true) {\n supportedProperties.push(p.toUpperCase());\n }\n }\n return '[' + supportedProperties.join(', ') + ']';\n}\n\nfunction eventByteArrayToString(event) {\n let receivedData = [];\n for (var i = 0; i < event.target.value.byteLength; i++) {\n receivedData[i] = event.target.value.getUint8(i);\n }\n return String.fromCharCode.apply(null, receivedData);\n}\n","import nipplejs from 'nipplejs';\nimport hoverControlModule from './hoverControlModule';\nimport uBitBLE from \"./uBit\";\nimport { notif_alert, notif_warn, notif_info, notif_success } from './notification';\n\nlet sw = \"service-worker.js\";\nif (navigator.serviceWorker) {\n navigator.serviceWorker.register(\n sw, {scope: '/hoverbit-ble/'}\n ).then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) { return; }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n notif_info(\"New content is available, relaunch the app to install it.\");\n } else {\n notif_success(\"Content is cached for offline use.\");\n }\n }\n };\n };\n registration.update();\n }).catch(error => {\n notif_alert(\"Could not install service worker...\");\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\ndocument.getElementById(\"btn_ignore_landscape_warning\").addEventListener(\"click\", () => {\n document.body.classList.add(\"ignore-landscape-warning\");\n});\n\nif (!navigator.bluetooth) {\n alert(\"Bluetooth not enabled in your browser, this won't work...\");\n}\n\n/* Define and initialize things */\nlet ubit = new uBitBLE();\nlet hoverControl = new hoverControlModule();\n\nlet joystickLeft = nipplejs.create({\n zone: document.querySelector(\".joystick-left\"),\n size: 200,\n position: {left: '50%', bottom: '50%'},\n mode: \"static\",\n lockX: true\n});\nlet joystickRight = nipplejs.create({\n zone: document.querySelector(\".joystick-right\"),\n size: 200,\n position: {left: '50%', bottom: '50%'},\n mode: \"static\",\n lockY: true\n});\n\n/* Setup event_listeners */\njoystickLeft.on(\"move\", (evt, data) => {\n let rudder = ((data.distance * 90) / 100);\n if (data.angle.degree > 90) { rudder = rudder * -1; }\n hoverControl.setRudder(Math.round(rudder));\n});\njoystickLeft.on(\"end\", (evt, data) => {\n hoverControl.setRudder(0);\n});\n\njoystickRight.on(\"move\", (evt, data) => {\n let throttle = data.distance;\n\n if (data.angle.degree > 90) {\n throttle = 0;\n if (data.distance >= 100) {\n hoverControl.reset();\n if (hoverControl.getArm()) {\n notif_alert(\"Detected panicy reducing of throttle, dearming...\");\n }\n }\n }\n hoverControl.setThrottle(Math.round(throttle));\n});\njoystickRight.on(\"end\", (evt, data) => {\n hoverControl.setThrottle(0);\n});\n\ndocument.getElementById(\"btn_arm\").addEventListener(\"click\", () => {\n hoverControl.setArm(true);\n});\n\ndocument.getElementById(\"btn_disarm\").addEventListener(\"click\", () => {\n hoverControl.setArm(false);\n});\n\ndocument.querySelector(\"#btn_disconnect\").addEventListener(\"click\", () => {\n hoverControl.reset();\n ubit.disconnect();\n});\n\ndocument.getElementById(\"btn_connect\").addEventListener(\"click\", () => {\n ubit.searchDevice();\n});\n\nubit.onConnect(() => {\n document.body.classList.add(\"connected\");\n});\n\nubit.onDisconnect(() => {\n document.body.classList.remove(\"connected\");\n document.body.classList.remove(\"armed\");\n});\n\nubit.onUartTx((text) => {\n /* Just make the ping symbol reappear. */\n var elm = document.querySelector(\".ping i\");\n var newone = elm.cloneNode(true);\n elm.parentNode.replaceChild(newone, elm);\n\n /* Actually handle received text. */\n if ((text).indexOf(\":\") != -1) {\n let parts = (text).split(\":\");\n\n if (parts[0] == \"B\") {\n document.querySelector(\".battery-status\").innerHTML = parts[1] + \"mV\";\n } else if (parts[0] == \"ACC\") {\n hoverControl.acc(parts[1]);\n } else {\n console.log(parts);\n }\n } else {\n notif_warn(\"Received weird data from MICRO:BIT...\");\n console.log(`Received unknown: ${text}`);\n }\n});\n\nlet intervalSendCommands = setInterval(async() => {\n if (ubit.isConnected()) {\n let command =\n \"T\" + hoverControl.getThrottle().toString() +\n \"R\" + hoverControl.getRudder().toString() +\n \"A\" + (hoverControl.getArm() ? \"1\" : \"0\") +\n \"S0\" +\n \":\";\n await ubit.sendUart(command);\n }\n}, 100);\n\n"]} \ No newline at end of file
diff --git a/service-worker.js b/service-worker.js
index 9a99f5d..e38ee78 100644
--- a/service-worker.js
+++ b/service-worker.js
@@ -1,7 +1,7 @@
var APP_PREFIX = 'hoverbitcontroller' // Identifier for this app (this needs to be consistent across every cache update)
-var VERSION = '1.0.8-alpha.4' // Version of the off-line cache (change this value everytime you want to update cache)
+var VERSION = '1.1.1' // Version of the off-line cache (change this value everytime you want to update cache)
var CACHE_NAME = APP_PREFIX + VERSION
-var URLS = ['/hoverbit-ble/','/hoverbit-ble/fa-brands-400.0a2f2d3f.woff2','/hoverbit-ble/fa-brands-400.529a9178.svg','/hoverbit-ble/fa-brands-400.61a02662.eot','/hoverbit-ble/fa-brands-400.a43d027d.ttf','/hoverbit-ble/fa-brands-400.abaa6551.woff','/hoverbit-ble/fa-regular-400.12e902ff.woff2','/hoverbit-ble/fa-regular-400.4fc407aa.svg','/hoverbit-ble/fa-regular-400.779979e6.woff','/hoverbit-ble/fa-regular-400.b26d94f4.eot','/hoverbit-ble/fa-regular-400.d59f1e49.ttf','/hoverbit-ble/fa-solid-900.26506ae2.svg','/hoverbit-ble/fa-solid-900.50887a69.woff','/hoverbit-ble/fa-solid-900.6c3fc37b.eot','/hoverbit-ble/fa-solid-900.be8a4f74.woff2','/hoverbit-ble/fa-solid-900.f6ec8168.ttf','/hoverbit-ble/index.html','/hoverbit-ble/main.a4da0525.js','/hoverbit-ble/main.a4da0525.js.map','/hoverbit-ble/maskable_icon_x128.ae1e74f9.png','/hoverbit-ble/maskable_icon_x144.fc14e37c.png','/hoverbit-ble/maskable_icon_x152.ce6c1441.png','/hoverbit-ble/maskable_icon_x384.1af8edb2.png','/hoverbit-ble/maskable_icon_x512.a9ac38fa.png','/hoverbit-ble/maskable_icon_x72.b43d35ec.png','/hoverbit-ble/maskable_icon_x96.e03bc2e8.png','/hoverbit-ble/pwa-192x192.b3dbd8bb.png','/hoverbit-ble/pwa-512x512.b27071b7.png','/hoverbit-ble/service-worker.js','/hoverbit-ble/styles.27f55dac.css','/hoverbit-ble/styles.27f55dac.css.map'] // This will be replaced by the deploy-script
+var URLS = ['/hoverbit-ble/','/hoverbit-ble/fa-brands-400.0a2f2d3f.woff2','/hoverbit-ble/fa-brands-400.529a9178.svg','/hoverbit-ble/fa-brands-400.61a02662.eot','/hoverbit-ble/fa-brands-400.a43d027d.ttf','/hoverbit-ble/fa-brands-400.abaa6551.woff','/hoverbit-ble/fa-regular-400.12e902ff.woff2','/hoverbit-ble/fa-regular-400.4fc407aa.svg','/hoverbit-ble/fa-regular-400.779979e6.woff','/hoverbit-ble/fa-regular-400.b26d94f4.eot','/hoverbit-ble/fa-regular-400.d59f1e49.ttf','/hoverbit-ble/fa-solid-900.26506ae2.svg','/hoverbit-ble/fa-solid-900.50887a69.woff','/hoverbit-ble/fa-solid-900.6c3fc37b.eot','/hoverbit-ble/fa-solid-900.be8a4f74.woff2','/hoverbit-ble/fa-solid-900.f6ec8168.ttf','/hoverbit-ble/index.html','/hoverbit-ble/main.ea7a67f6.js','/hoverbit-ble/main.ea7a67f6.js.map','/hoverbit-ble/maskable_icon_x128.ae1e74f9.png','/hoverbit-ble/maskable_icon_x144.fc14e37c.png','/hoverbit-ble/maskable_icon_x152.ce6c1441.png','/hoverbit-ble/maskable_icon_x384.1af8edb2.png','/hoverbit-ble/maskable_icon_x512.a9ac38fa.png','/hoverbit-ble/maskable_icon_x72.b43d35ec.png','/hoverbit-ble/maskable_icon_x96.e03bc2e8.png','/hoverbit-ble/pwa-192x192.b3dbd8bb.png','/hoverbit-ble/pwa-512x512.b27071b7.png','/hoverbit-ble/service-worker.js','/hoverbit-ble/styles.6ffd6063.css','/hoverbit-ble/styles.6ffd6063.css.map'] // This will be replaced by the deploy-script
// Respond with cached resources
self.addEventListener('fetch', function (e) {
diff --git a/styles.27f55dac.css.map b/styles.27f55dac.css.map
deleted file mode 100644
index 2922f2b..0000000
--- a/styles.27f55dac.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["all.css","scss/styles.scss"],"names":[],"mappings":"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","file":"styles.27f55dac.css","sourceRoot":"../src","sourcesContent":["/*!\n * Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fad,\n.fab {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n text-rendering: auto;\n line-height: 1; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: middle;\n width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%; }\n\n.fa-stack-1x {\n line-height: inherit; }\n\n.fa-stack-2x {\n font-size: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n content: \"\\f368\"; }\n\n.fa-accusoft:before {\n content: \"\\f369\"; }\n\n.fa-acquisitions-incorporated:before {\n content: \"\\f6af\"; }\n\n.fa-ad:before {\n content: \"\\f641\"; }\n\n.fa-address-book:before {\n content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n content: \"\\f042\"; }\n\n.fa-adn:before {\n content: \"\\f170\"; }\n\n.fa-adversal:before {\n content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n content: \"\\f36b\"; }\n\n.fa-air-freshener:before {\n content: \"\\f5d0\"; }\n\n.fa-airbnb:before {\n content: \"\\f834\"; }\n\n.fa-algolia:before {\n content: \"\\f36c\"; }\n\n.fa-align-center:before {\n content: \"\\f037\"; }\n\n.fa-align-justify:before {\n content: \"\\f039\"; }\n\n.fa-align-left:before {\n content: \"\\f036\"; }\n\n.fa-align-right:before {\n content: \"\\f038\"; }\n\n.fa-alipay:before {\n content: \"\\f642\"; }\n\n.fa-allergies:before {\n content: \"\\f461\"; }\n\n.fa-amazon:before {\n content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n content: \"\\f36d\"; }\n\n.fa-anchor:before {\n content: \"\\f13d\"; }\n\n.fa-android:before {\n content: \"\\f17b\"; }\n\n.fa-angellist:before {\n content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n content: \"\\f102\"; }\n\n.fa-angle-down:before {\n content: \"\\f107\"; }\n\n.fa-angle-left:before {\n content: \"\\f104\"; }\n\n.fa-angle-right:before {\n content: \"\\f105\"; }\n\n.fa-angle-up:before {\n content: \"\\f106\"; }\n\n.fa-angry:before {\n content: \"\\f556\"; }\n\n.fa-angrycreative:before {\n content: \"\\f36e\"; }\n\n.fa-angular:before {\n content: \"\\f420\"; }\n\n.fa-ankh:before {\n content: \"\\f644\"; }\n\n.fa-app-store:before {\n content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n content: \"\\f370\"; }\n\n.fa-apper:before {\n content: \"\\f371\"; }\n\n.fa-apple:before {\n content: \"\\f179\"; }\n\n.fa-apple-alt:before {\n content: \"\\f5d1\"; }\n\n.fa-apple-pay:before {\n content: \"\\f415\"; }\n\n.fa-archive:before {\n content: \"\\f187\"; }\n\n.fa-archway:before {\n content: \"\\f557\"; }\n\n.fa-arrow-alt-circle-down:before {\n content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n content: \"\\f338\"; }\n\n.fa-artstation:before {\n content: \"\\f77a\"; }\n\n.fa-assistive-listening-systems:before {\n content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n content: \"\\f372\"; }\n\n.fa-at:before {\n content: \"\\f1fa\"; }\n\n.fa-atlas:before {\n content: \"\\f558\"; }\n\n.fa-atlassian:before {\n content: \"\\f77b\"; }\n\n.fa-atom:before {\n content: \"\\f5d2\"; }\n\n.fa-audible:before {\n content: \"\\f373\"; }\n\n.fa-audio-description:before {\n content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n content: \"\\f41c\"; }\n\n.fa-avianex:before {\n content: \"\\f374\"; }\n\n.fa-aviato:before {\n content: \"\\f421\"; }\n\n.fa-award:before {\n content: \"\\f559\"; }\n\n.fa-aws:before {\n content: \"\\f375\"; }\n\n.fa-baby:before {\n content: \"\\f77c\"; }\n\n.fa-baby-carriage:before {\n content: \"\\f77d\"; }\n\n.fa-backspace:before {\n content: \"\\f55a\"; }\n\n.fa-backward:before {\n content: \"\\f04a\"; }\n\n.fa-bacon:before {\n content: \"\\f7e5\"; }\n\n.fa-bacteria:before {\n content: \"\\e059\"; }\n\n.fa-bacterium:before {\n content: \"\\e05a\"; }\n\n.fa-bahai:before {\n content: \"\\f666\"; }\n\n.fa-balance-scale:before {\n content: \"\\f24e\"; }\n\n.fa-balance-scale-left:before {\n content: \"\\f515\"; }\n\n.fa-balance-scale-right:before {\n content: \"\\f516\"; }\n\n.fa-ban:before {\n content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n content: \"\\f02a\"; }\n\n.fa-bars:before {\n content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n content: \"\\f434\"; }\n\n.fa-bath:before {\n content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n content: \"\\f244\"; }\n\n.fa-battery-full:before {\n content: \"\\f240\"; }\n\n.fa-battery-half:before {\n content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n content: \"\\f241\"; }\n\n.fa-battle-net:before {\n content: \"\\f835\"; }\n\n.fa-bed:before {\n content: \"\\f236\"; }\n\n.fa-beer:before {\n content: \"\\f0fc\"; }\n\n.fa-behance:before {\n content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n content: \"\\f1b5\"; }\n\n.fa-bell:before {\n content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n content: \"\\f1f6\"; }\n\n.fa-bezier-curve:before {\n content: \"\\f55b\"; }\n\n.fa-bible:before {\n content: \"\\f647\"; }\n\n.fa-bicycle:before {\n content: \"\\f206\"; }\n\n.fa-biking:before {\n content: \"\\f84a\"; }\n\n.fa-bimobject:before {\n content: \"\\f378\"; }\n\n.fa-binoculars:before {\n content: \"\\f1e5\"; }\n\n.fa-biohazard:before {\n content: \"\\f780\"; }\n\n.fa-birthday-cake:before {\n content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n content: \"\\f379\"; }\n\n.fa-bity:before {\n content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n content: \"\\f37b\"; }\n\n.fa-blender:before {\n content: \"\\f517\"; }\n\n.fa-blender-phone:before {\n content: \"\\f6b6\"; }\n\n.fa-blind:before {\n content: \"\\f29d\"; }\n\n.fa-blog:before {\n content: \"\\f781\"; }\n\n.fa-blogger:before {\n content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n content: \"\\f294\"; }\n\n.fa-bold:before {\n content: \"\\f032\"; }\n\n.fa-bolt:before {\n content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n content: \"\\f1e2\"; }\n\n.fa-bone:before {\n content: \"\\f5d7\"; }\n\n.fa-bong:before {\n content: \"\\f55c\"; }\n\n.fa-book:before {\n content: \"\\f02d\"; }\n\n.fa-book-dead:before {\n content: \"\\f6b7\"; }\n\n.fa-book-medical:before {\n content: \"\\f7e6\"; }\n\n.fa-book-open:before {\n content: \"\\f518\"; }\n\n.fa-book-reader:before {\n content: \"\\f5da\"; }\n\n.fa-bookmark:before {\n content: \"\\f02e\"; }\n\n.fa-bootstrap:before {\n content: \"\\f836\"; }\n\n.fa-border-all:before {\n content: \"\\f84c\"; }\n\n.fa-border-none:before {\n content: \"\\f850\"; }\n\n.fa-border-style:before {\n content: \"\\f853\"; }\n\n.fa-bowling-ball:before {\n content: \"\\f436\"; }\n\n.fa-box:before {\n content: \"\\f466\"; }\n\n.fa-box-open:before {\n content: \"\\f49e\"; }\n\n.fa-box-tissue:before {\n content: \"\\e05b\"; }\n\n.fa-boxes:before {\n content: \"\\f468\"; }\n\n.fa-braille:before {\n content: \"\\f2a1\"; }\n\n.fa-brain:before {\n content: \"\\f5dc\"; }\n\n.fa-bread-slice:before {\n content: \"\\f7ec\"; }\n\n.fa-briefcase:before {\n content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n content: \"\\f469\"; }\n\n.fa-broadcast-tower:before {\n content: \"\\f519\"; }\n\n.fa-broom:before {\n content: \"\\f51a\"; }\n\n.fa-brush:before {\n content: \"\\f55d\"; }\n\n.fa-btc:before {\n content: \"\\f15a\"; }\n\n.fa-buffer:before {\n content: \"\\f837\"; }\n\n.fa-bug:before {\n content: \"\\f188\"; }\n\n.fa-building:before {\n content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n content: \"\\f140\"; }\n\n.fa-burn:before {\n content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n content: \"\\f37f\"; }\n\n.fa-bus:before {\n content: \"\\f207\"; }\n\n.fa-bus-alt:before {\n content: \"\\f55e\"; }\n\n.fa-business-time:before {\n content: \"\\f64a\"; }\n\n.fa-buy-n-large:before {\n content: \"\\f8a6\"; }\n\n.fa-buysellads:before {\n content: \"\\f20d\"; }\n\n.fa-calculator:before {\n content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n content: \"\\f274\"; }\n\n.fa-calendar-day:before {\n content: \"\\f783\"; }\n\n.fa-calendar-minus:before {\n content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n content: \"\\f273\"; }\n\n.fa-calendar-week:before {\n content: \"\\f784\"; }\n\n.fa-camera:before {\n content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n content: \"\\f083\"; }\n\n.fa-campground:before {\n content: \"\\f6bb\"; }\n\n.fa-canadian-maple-leaf:before {\n content: \"\\f785\"; }\n\n.fa-candy-cane:before {\n content: \"\\f786\"; }\n\n.fa-cannabis:before {\n content: \"\\f55f\"; }\n\n.fa-capsules:before {\n content: \"\\f46b\"; }\n\n.fa-car:before {\n content: \"\\f1b9\"; }\n\n.fa-car-alt:before {\n content: \"\\f5de\"; }\n\n.fa-car-battery:before {\n content: \"\\f5df\"; }\n\n.fa-car-crash:before {\n content: \"\\f5e1\"; }\n\n.fa-car-side:before {\n content: \"\\f5e4\"; }\n\n.fa-caravan:before {\n content: \"\\f8ff\"; }\n\n.fa-caret-down:before {\n content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n content: \"\\f151\"; }\n\n.fa-caret-up:before {\n content: \"\\f0d8\"; }\n\n.fa-carrot:before {\n content: \"\\f787\"; }\n\n.fa-cart-arrow-down:before {\n content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n content: \"\\f217\"; }\n\n.fa-cash-register:before {\n content: \"\\f788\"; }\n\n.fa-cat:before {\n content: \"\\f6be\"; }\n\n.fa-cc-amazon-pay:before {\n content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n content: \"\\f380\"; }\n\n.fa-centos:before {\n content: \"\\f789\"; }\n\n.fa-certificate:before {\n content: \"\\f0a3\"; }\n\n.fa-chair:before {\n content: \"\\f6c0\"; }\n\n.fa-chalkboard:before {\n content: \"\\f51b\"; }\n\n.fa-chalkboard-teacher:before {\n content: \"\\f51c\"; }\n\n.fa-charging-station:before {\n content: \"\\f5e7\"; }\n\n.fa-chart-area:before {\n content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n content: \"\\f080\"; }\n\n.fa-chart-line:before {\n content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n content: \"\\f200\"; }\n\n.fa-check:before {\n content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n content: \"\\f058\"; }\n\n.fa-check-double:before {\n content: \"\\f560\"; }\n\n.fa-check-square:before {\n content: \"\\f14a\"; }\n\n.fa-cheese:before {\n content: \"\\f7ef\"; }\n\n.fa-chess:before {\n content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n content: \"\\f077\"; }\n\n.fa-child:before {\n content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n content: \"\\f268\"; }\n\n.fa-chromecast:before {\n content: \"\\f838\"; }\n\n.fa-church:before {\n content: \"\\f51d\"; }\n\n.fa-circle:before {\n content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n content: \"\\f1ce\"; }\n\n.fa-city:before {\n content: \"\\f64f\"; }\n\n.fa-clinic-medical:before {\n content: \"\\f7f2\"; }\n\n.fa-clipboard:before {\n content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n content: \"\\f46d\"; }\n\n.fa-clock:before {\n content: \"\\f017\"; }\n\n.fa-clone:before {\n content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n content: \"\\f20a\"; }\n\n.fa-cloud:before {\n content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n content: \"\\f381\"; }\n\n.fa-cloud-meatball:before {\n content: \"\\f73b\"; }\n\n.fa-cloud-moon:before {\n content: \"\\f6c3\"; }\n\n.fa-cloud-moon-rain:before {\n content: \"\\f73c\"; }\n\n.fa-cloud-rain:before {\n content: \"\\f73d\"; }\n\n.fa-cloud-showers-heavy:before {\n content: \"\\f740\"; }\n\n.fa-cloud-sun:before {\n content: \"\\f6c4\"; }\n\n.fa-cloud-sun-rain:before {\n content: \"\\f743\"; }\n\n.fa-cloud-upload-alt:before {\n content: \"\\f382\"; }\n\n.fa-cloudflare:before {\n content: \"\\e07d\"; }\n\n.fa-cloudscale:before {\n content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n content: \"\\f385\"; }\n\n.fa-cocktail:before {\n content: \"\\f561\"; }\n\n.fa-code:before {\n content: \"\\f121\"; }\n\n.fa-code-branch:before {\n content: \"\\f126\"; }\n\n.fa-codepen:before {\n content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n content: \"\\f284\"; }\n\n.fa-coffee:before {\n content: \"\\f0f4\"; }\n\n.fa-cog:before {\n content: \"\\f013\"; }\n\n.fa-cogs:before {\n content: \"\\f085\"; }\n\n.fa-coins:before {\n content: \"\\f51e\"; }\n\n.fa-columns:before {\n content: \"\\f0db\"; }\n\n.fa-comment:before {\n content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n content: \"\\f27a\"; }\n\n.fa-comment-dollar:before {\n content: \"\\f651\"; }\n\n.fa-comment-dots:before {\n content: \"\\f4ad\"; }\n\n.fa-comment-medical:before {\n content: \"\\f7f5\"; }\n\n.fa-comment-slash:before {\n content: \"\\f4b3\"; }\n\n.fa-comments:before {\n content: \"\\f086\"; }\n\n.fa-comments-dollar:before {\n content: \"\\f653\"; }\n\n.fa-compact-disc:before {\n content: \"\\f51f\"; }\n\n.fa-compass:before {\n content: \"\\f14e\"; }\n\n.fa-compress:before {\n content: \"\\f066\"; }\n\n.fa-compress-alt:before {\n content: \"\\f422\"; }\n\n.fa-compress-arrows-alt:before {\n content: \"\\f78c\"; }\n\n.fa-concierge-bell:before {\n content: \"\\f562\"; }\n\n.fa-confluence:before {\n content: \"\\f78d\"; }\n\n.fa-connectdevelop:before {\n content: \"\\f20e\"; }\n\n.fa-contao:before {\n content: \"\\f26d\"; }\n\n.fa-cookie:before {\n content: \"\\f563\"; }\n\n.fa-cookie-bite:before {\n content: \"\\f564\"; }\n\n.fa-copy:before {\n content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n content: \"\\f1f9\"; }\n\n.fa-cotton-bureau:before {\n content: \"\\f89e\"; }\n\n.fa-couch:before {\n content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n content: \"\\f25e\"; }\n\n.fa-creative-commons-by:before {\n content: \"\\f4e7\"; }\n\n.fa-creative-commons-nc:before {\n content: \"\\f4e8\"; }\n\n.fa-creative-commons-nc-eu:before {\n content: \"\\f4e9\"; }\n\n.fa-creative-commons-nc-jp:before {\n content: \"\\f4ea\"; }\n\n.fa-creative-commons-nd:before {\n content: \"\\f4eb\"; }\n\n.fa-creative-commons-pd:before {\n content: \"\\f4ec\"; }\n\n.fa-creative-commons-pd-alt:before {\n content: \"\\f4ed\"; }\n\n.fa-creative-commons-remix:before {\n content: \"\\f4ee\"; }\n\n.fa-creative-commons-sa:before {\n content: \"\\f4ef\"; }\n\n.fa-creative-commons-sampling:before {\n content: \"\\f4f0\"; }\n\n.fa-creative-commons-sampling-plus:before {\n content: \"\\f4f1\"; }\n\n.fa-creative-commons-share:before {\n content: \"\\f4f2\"; }\n\n.fa-creative-commons-zero:before {\n content: \"\\f4f3\"; }\n\n.fa-credit-card:before {\n content: \"\\f09d\"; }\n\n.fa-critical-role:before {\n content: \"\\f6c9\"; }\n\n.fa-crop:before {\n content: \"\\f125\"; }\n\n.fa-crop-alt:before {\n content: \"\\f565\"; }\n\n.fa-cross:before {\n content: \"\\f654\"; }\n\n.fa-crosshairs:before {\n content: \"\\f05b\"; }\n\n.fa-crow:before {\n content: \"\\f520\"; }\n\n.fa-crown:before {\n content: \"\\f521\"; }\n\n.fa-crutch:before {\n content: \"\\f7f7\"; }\n\n.fa-css3:before {\n content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n content: \"\\f38b\"; }\n\n.fa-cube:before {\n content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n content: \"\\f1b3\"; }\n\n.fa-cut:before {\n content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n content: \"\\f38d\"; }\n\n.fa-d-and-d-beyond:before {\n content: \"\\f6ca\"; }\n\n.fa-dailymotion:before {\n content: \"\\e052\"; }\n\n.fa-dashcube:before {\n content: \"\\f210\"; }\n\n.fa-database:before {\n content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n content: \"\\f2a4\"; }\n\n.fa-deezer:before {\n content: \"\\e077\"; }\n\n.fa-delicious:before {\n content: \"\\f1a5\"; }\n\n.fa-democrat:before {\n content: \"\\f747\"; }\n\n.fa-deploydog:before {\n content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n content: \"\\f38f\"; }\n\n.fa-desktop:before {\n content: \"\\f108\"; }\n\n.fa-dev:before {\n content: \"\\f6cc\"; }\n\n.fa-deviantart:before {\n content: \"\\f1bd\"; }\n\n.fa-dharmachakra:before {\n content: \"\\f655\"; }\n\n.fa-dhl:before {\n content: \"\\f790\"; }\n\n.fa-diagnoses:before {\n content: \"\\f470\"; }\n\n.fa-diaspora:before {\n content: \"\\f791\"; }\n\n.fa-dice:before {\n content: \"\\f522\"; }\n\n.fa-dice-d20:before {\n content: \"\\f6cf\"; }\n\n.fa-dice-d6:before {\n content: \"\\f6d1\"; }\n\n.fa-dice-five:before {\n content: \"\\f523\"; }\n\n.fa-dice-four:before {\n content: \"\\f524\"; }\n\n.fa-dice-one:before {\n content: \"\\f525\"; }\n\n.fa-dice-six:before {\n content: \"\\f526\"; }\n\n.fa-dice-three:before {\n content: \"\\f527\"; }\n\n.fa-dice-two:before {\n content: \"\\f528\"; }\n\n.fa-digg:before {\n content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n content: \"\\f391\"; }\n\n.fa-digital-tachograph:before {\n content: \"\\f566\"; }\n\n.fa-directions:before {\n content: \"\\f5eb\"; }\n\n.fa-discord:before {\n content: \"\\f392\"; }\n\n.fa-discourse:before {\n content: \"\\f393\"; }\n\n.fa-disease:before {\n content: \"\\f7fa\"; }\n\n.fa-divide:before {\n content: \"\\f529\"; }\n\n.fa-dizzy:before {\n content: \"\\f567\"; }\n\n.fa-dna:before {\n content: \"\\f471\"; }\n\n.fa-dochub:before {\n content: \"\\f394\"; }\n\n.fa-docker:before {\n content: \"\\f395\"; }\n\n.fa-dog:before {\n content: \"\\f6d3\"; }\n\n.fa-dollar-sign:before {\n content: \"\\f155\"; }\n\n.fa-dolly:before {\n content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n content: \"\\f474\"; }\n\n.fa-donate:before {\n content: \"\\f4b9\"; }\n\n.fa-door-closed:before {\n content: \"\\f52a\"; }\n\n.fa-door-open:before {\n content: \"\\f52b\"; }\n\n.fa-dot-circle:before {\n content: \"\\f192\"; }\n\n.fa-dove:before {\n content: \"\\f4ba\"; }\n\n.fa-download:before {\n content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n content: \"\\f396\"; }\n\n.fa-drafting-compass:before {\n content: \"\\f568\"; }\n\n.fa-dragon:before {\n content: \"\\f6d5\"; }\n\n.fa-draw-polygon:before {\n content: \"\\f5ee\"; }\n\n.fa-dribbble:before {\n content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n content: \"\\f397\"; }\n\n.fa-dropbox:before {\n content: \"\\f16b\"; }\n\n.fa-drum:before {\n content: \"\\f569\"; }\n\n.fa-drum-steelpan:before {\n content: \"\\f56a\"; }\n\n.fa-drumstick-bite:before {\n content: \"\\f6d7\"; }\n\n.fa-drupal:before {\n content: \"\\f1a9\"; }\n\n.fa-dumbbell:before {\n content: \"\\f44b\"; }\n\n.fa-dumpster:before {\n content: \"\\f793\"; }\n\n.fa-dumpster-fire:before {\n content: \"\\f794\"; }\n\n.fa-dungeon:before {\n content: \"\\f6d9\"; }\n\n.fa-dyalog:before {\n content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n content: \"\\f39a\"; }\n\n.fa-ebay:before {\n content: \"\\f4f4\"; }\n\n.fa-edge:before {\n content: \"\\f282\"; }\n\n.fa-edge-legacy:before {\n content: \"\\e078\"; }\n\n.fa-edit:before {\n content: \"\\f044\"; }\n\n.fa-egg:before {\n content: \"\\f7fb\"; }\n\n.fa-eject:before {\n content: \"\\f052\"; }\n\n.fa-elementor:before {\n content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n content: \"\\f142\"; }\n\n.fa-ello:before {\n content: \"\\f5f1\"; }\n\n.fa-ember:before {\n content: \"\\f423\"; }\n\n.fa-empire:before {\n content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n content: \"\\f2b6\"; }\n\n.fa-envelope-open-text:before {\n content: \"\\f658\"; }\n\n.fa-envelope-square:before {\n content: \"\\f199\"; }\n\n.fa-envira:before {\n content: \"\\f299\"; }\n\n.fa-equals:before {\n content: \"\\f52c\"; }\n\n.fa-eraser:before {\n content: \"\\f12d\"; }\n\n.fa-erlang:before {\n content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n content: \"\\f42e\"; }\n\n.fa-ethernet:before {\n content: \"\\f796\"; }\n\n.fa-etsy:before {\n content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n content: \"\\f153\"; }\n\n.fa-evernote:before {\n content: \"\\f839\"; }\n\n.fa-exchange-alt:before {\n content: \"\\f362\"; }\n\n.fa-exclamation:before {\n content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n content: \"\\f071\"; }\n\n.fa-expand:before {\n content: \"\\f065\"; }\n\n.fa-expand-alt:before {\n content: \"\\f424\"; }\n\n.fa-expand-arrows-alt:before {\n content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n content: \"\\f360\"; }\n\n.fa-eye:before {\n content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n content: \"\\f070\"; }\n\n.fa-facebook:before {\n content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n content: \"\\f082\"; }\n\n.fa-fan:before {\n content: \"\\f863\"; }\n\n.fa-fantasy-flight-games:before {\n content: \"\\f6dc\"; }\n\n.fa-fast-backward:before {\n content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n content: \"\\f050\"; }\n\n.fa-faucet:before {\n content: \"\\e005\"; }\n\n.fa-fax:before {\n content: \"\\f1ac\"; }\n\n.fa-feather:before {\n content: \"\\f52d\"; }\n\n.fa-feather-alt:before {\n content: \"\\f56b\"; }\n\n.fa-fedex:before {\n content: \"\\f797\"; }\n\n.fa-fedora:before {\n content: \"\\f798\"; }\n\n.fa-female:before {\n content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n content: \"\\f0fb\"; }\n\n.fa-figma:before {\n content: \"\\f799\"; }\n\n.fa-file:before {\n content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n content: \"\\f1c9\"; }\n\n.fa-file-contract:before {\n content: \"\\f56c\"; }\n\n.fa-file-csv:before {\n content: \"\\f6dd\"; }\n\n.fa-file-download:before {\n content: \"\\f56d\"; }\n\n.fa-file-excel:before {\n content: \"\\f1c3\"; }\n\n.fa-file-export:before {\n content: \"\\f56e\"; }\n\n.fa-file-image:before {\n content: \"\\f1c5\"; }\n\n.fa-file-import:before {\n content: \"\\f56f\"; }\n\n.fa-file-invoice:before {\n content: \"\\f570\"; }\n\n.fa-file-invoice-dollar:before {\n content: \"\\f571\"; }\n\n.fa-file-medical:before {\n content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n content: \"\\f1c4\"; }\n\n.fa-file-prescription:before {\n content: \"\\f572\"; }\n\n.fa-file-signature:before {\n content: \"\\f573\"; }\n\n.fa-file-upload:before {\n content: \"\\f574\"; }\n\n.fa-file-video:before {\n content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n content: \"\\f1c2\"; }\n\n.fa-fill:before {\n content: \"\\f575\"; }\n\n.fa-fill-drip:before {\n content: \"\\f576\"; }\n\n.fa-film:before {\n content: \"\\f008\"; }\n\n.fa-filter:before {\n content: \"\\f0b0\"; }\n\n.fa-fingerprint:before {\n content: \"\\f577\"; }\n\n.fa-fire:before {\n content: \"\\f06d\"; }\n\n.fa-fire-alt:before {\n content: \"\\f7e4\"; }\n\n.fa-fire-extinguisher:before {\n content: \"\\f134\"; }\n\n.fa-firefox:before {\n content: \"\\f269\"; }\n\n.fa-firefox-browser:before {\n content: \"\\e007\"; }\n\n.fa-first-aid:before {\n content: \"\\f479\"; }\n\n.fa-first-order:before {\n content: \"\\f2b0\"; }\n\n.fa-first-order-alt:before {\n content: \"\\f50a\"; }\n\n.fa-firstdraft:before {\n content: \"\\f3a1\"; }\n\n.fa-fish:before {\n content: \"\\f578\"; }\n\n.fa-fist-raised:before {\n content: \"\\f6de\"; }\n\n.fa-flag:before {\n content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n content: \"\\f11e\"; }\n\n.fa-flag-usa:before {\n content: \"\\f74d\"; }\n\n.fa-flask:before {\n content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n content: \"\\f44d\"; }\n\n.fa-flushed:before {\n content: \"\\f579\"; }\n\n.fa-fly:before {\n content: \"\\f417\"; }\n\n.fa-folder:before {\n content: \"\\f07b\"; }\n\n.fa-folder-minus:before {\n content: \"\\f65d\"; }\n\n.fa-folder-open:before {\n content: \"\\f07c\"; }\n\n.fa-folder-plus:before {\n content: \"\\f65e\"; }\n\n.fa-font:before {\n content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n content: \"\\f425\"; }\n\n.fa-font-awesome-logo-full:before {\n content: \"\\f4e6\"; }\n\n.fa-fonticons:before {\n content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n content: \"\\f211\"; }\n\n.fa-forward:before {\n content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n content: \"\\f3a4\"; }\n\n.fa-frog:before {\n content: \"\\f52e\"; }\n\n.fa-frown:before {\n content: \"\\f119\"; }\n\n.fa-frown-open:before {\n content: \"\\f57a\"; }\n\n.fa-fulcrum:before {\n content: \"\\f50b\"; }\n\n.fa-funnel-dollar:before {\n content: \"\\f662\"; }\n\n.fa-futbol:before {\n content: \"\\f1e3\"; }\n\n.fa-galactic-republic:before {\n content: \"\\f50c\"; }\n\n.fa-galactic-senate:before {\n content: \"\\f50d\"; }\n\n.fa-gamepad:before {\n content: \"\\f11b\"; }\n\n.fa-gas-pump:before {\n content: \"\\f52f\"; }\n\n.fa-gavel:before {\n content: \"\\f0e3\"; }\n\n.fa-gem:before {\n content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n content: \"\\f265\"; }\n\n.fa-gg:before {\n content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n content: \"\\f261\"; }\n\n.fa-ghost:before {\n content: \"\\f6e2\"; }\n\n.fa-gift:before {\n content: \"\\f06b\"; }\n\n.fa-gifts:before {\n content: \"\\f79c\"; }\n\n.fa-git:before {\n content: \"\\f1d3\"; }\n\n.fa-git-alt:before {\n content: \"\\f841\"; }\n\n.fa-git-square:before {\n content: \"\\f1d2\"; }\n\n.fa-github:before {\n content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n content: \"\\f113\"; }\n\n.fa-github-square:before {\n content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n content: \"\\f296\"; }\n\n.fa-gitter:before {\n content: \"\\f426\"; }\n\n.fa-glass-cheers:before {\n content: \"\\f79f\"; }\n\n.fa-glass-martini:before {\n content: \"\\f000\"; }\n\n.fa-glass-martini-alt:before {\n content: \"\\f57b\"; }\n\n.fa-glass-whiskey:before {\n content: \"\\f7a0\"; }\n\n.fa-glasses:before {\n content: \"\\f530\"; }\n\n.fa-glide:before {\n content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n content: \"\\f2a6\"; }\n\n.fa-globe:before {\n content: \"\\f0ac\"; }\n\n.fa-globe-africa:before {\n content: \"\\f57c\"; }\n\n.fa-globe-americas:before {\n content: \"\\f57d\"; }\n\n.fa-globe-asia:before {\n content: \"\\f57e\"; }\n\n.fa-globe-europe:before {\n content: \"\\f7a2\"; }\n\n.fa-gofore:before {\n content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n content: \"\\f450\"; }\n\n.fa-goodreads:before {\n content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n content: \"\\f3a9\"; }\n\n.fa-google:before {\n content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n content: \"\\f3aa\"; }\n\n.fa-google-pay:before {\n content: \"\\e079\"; }\n\n.fa-google-play:before {\n content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n content: \"\\f1ee\"; }\n\n.fa-gopuram:before {\n content: \"\\f664\"; }\n\n.fa-graduation-cap:before {\n content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n content: \"\\f184\"; }\n\n.fa-grav:before {\n content: \"\\f2d6\"; }\n\n.fa-greater-than:before {\n content: \"\\f531\"; }\n\n.fa-greater-than-equal:before {\n content: \"\\f532\"; }\n\n.fa-grimace:before {\n content: \"\\f57f\"; }\n\n.fa-grin:before {\n content: \"\\f580\"; }\n\n.fa-grin-alt:before {\n content: \"\\f581\"; }\n\n.fa-grin-beam:before {\n content: \"\\f582\"; }\n\n.fa-grin-beam-sweat:before {\n content: \"\\f583\"; }\n\n.fa-grin-hearts:before {\n content: \"\\f584\"; }\n\n.fa-grin-squint:before {\n content: \"\\f585\"; }\n\n.fa-grin-squint-tears:before {\n content: \"\\f586\"; }\n\n.fa-grin-stars:before {\n content: \"\\f587\"; }\n\n.fa-grin-tears:before {\n content: \"\\f588\"; }\n\n.fa-grin-tongue:before {\n content: \"\\f589\"; }\n\n.fa-grin-tongue-squint:before {\n content: \"\\f58a\"; }\n\n.fa-grin-tongue-wink:before {\n content: \"\\f58b\"; }\n\n.fa-grin-wink:before {\n content: \"\\f58c\"; }\n\n.fa-grip-horizontal:before {\n content: \"\\f58d\"; }\n\n.fa-grip-lines:before {\n content: \"\\f7a4\"; }\n\n.fa-grip-lines-vertical:before {\n content: \"\\f7a5\"; }\n\n.fa-grip-vertical:before {\n content: \"\\f58e\"; }\n\n.fa-gripfire:before {\n content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n content: \"\\f3ad\"; }\n\n.fa-guilded:before {\n content: \"\\e07e\"; }\n\n.fa-guitar:before {\n content: \"\\f7a6\"; }\n\n.fa-gulp:before {\n content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n content: \"\\f3af\"; }\n\n.fa-hackerrank:before {\n content: \"\\f5f7\"; }\n\n.fa-hamburger:before {\n content: \"\\f805\"; }\n\n.fa-hammer:before {\n content: \"\\f6e3\"; }\n\n.fa-hamsa:before {\n content: \"\\f665\"; }\n\n.fa-hand-holding:before {\n content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n content: \"\\f4be\"; }\n\n.fa-hand-holding-medical:before {\n content: \"\\e05c\"; }\n\n.fa-hand-holding-usd:before {\n content: \"\\f4c0\"; }\n\n.fa-hand-holding-water:before {\n content: \"\\f4c1\"; }\n\n.fa-hand-lizard:before {\n content: \"\\f258\"; }\n\n.fa-hand-middle-finger:before {\n content: \"\\f806\"; }\n\n.fa-hand-paper:before {\n content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n content: \"\\f257\"; }\n\n.fa-hand-sparkles:before {\n content: \"\\e05d\"; }\n\n.fa-hand-spock:before {\n content: \"\\f259\"; }\n\n.fa-hands:before {\n content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n content: \"\\f4c4\"; }\n\n.fa-hands-wash:before {\n content: \"\\e05e\"; }\n\n.fa-handshake:before {\n content: \"\\f2b5\"; }\n\n.fa-handshake-alt-slash:before {\n content: \"\\e05f\"; }\n\n.fa-handshake-slash:before {\n content: \"\\e060\"; }\n\n.fa-hanukiah:before {\n content: \"\\f6e6\"; }\n\n.fa-hard-hat:before {\n content: \"\\f807\"; }\n\n.fa-hashtag:before {\n content: \"\\f292\"; }\n\n.fa-hat-cowboy:before {\n content: \"\\f8c0\"; }\n\n.fa-hat-cowboy-side:before {\n content: \"\\f8c1\"; }\n\n.fa-hat-wizard:before {\n content: \"\\f6e8\"; }\n\n.fa-hdd:before {\n content: \"\\f0a0\"; }\n\n.fa-head-side-cough:before {\n content: \"\\e061\"; }\n\n.fa-head-side-cough-slash:before {\n content: \"\\e062\"; }\n\n.fa-head-side-mask:before {\n content: \"\\e063\"; }\n\n.fa-head-side-virus:before {\n content: \"\\e064\"; }\n\n.fa-heading:before {\n content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n content: \"\\f025\"; }\n\n.fa-headphones-alt:before {\n content: \"\\f58f\"; }\n\n.fa-headset:before {\n content: \"\\f590\"; }\n\n.fa-heart:before {\n content: \"\\f004\"; }\n\n.fa-heart-broken:before {\n content: \"\\f7a9\"; }\n\n.fa-heartbeat:before {\n content: \"\\f21e\"; }\n\n.fa-helicopter:before {\n content: \"\\f533\"; }\n\n.fa-highlighter:before {\n content: \"\\f591\"; }\n\n.fa-hiking:before {\n content: \"\\f6ec\"; }\n\n.fa-hippo:before {\n content: \"\\f6ed\"; }\n\n.fa-hips:before {\n content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n content: \"\\f3b0\"; }\n\n.fa-history:before {\n content: \"\\f1da\"; }\n\n.fa-hive:before {\n content: \"\\e07f\"; }\n\n.fa-hockey-puck:before {\n content: \"\\f453\"; }\n\n.fa-holly-berry:before {\n content: \"\\f7aa\"; }\n\n.fa-home:before {\n content: \"\\f015\"; }\n\n.fa-hooli:before {\n content: \"\\f427\"; }\n\n.fa-hornbill:before {\n content: \"\\f592\"; }\n\n.fa-horse:before {\n content: \"\\f6f0\"; }\n\n.fa-horse-head:before {\n content: \"\\f7ab\"; }\n\n.fa-hospital:before {\n content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n content: \"\\f47e\"; }\n\n.fa-hospital-user:before {\n content: \"\\f80d\"; }\n\n.fa-hot-tub:before {\n content: \"\\f593\"; }\n\n.fa-hotdog:before {\n content: \"\\f80f\"; }\n\n.fa-hotel:before {\n content: \"\\f594\"; }\n\n.fa-hotjar:before {\n content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n content: \"\\f251\"; }\n\n.fa-house-damage:before {\n content: \"\\f6f1\"; }\n\n.fa-house-user:before {\n content: \"\\e065\"; }\n\n.fa-houzz:before {\n content: \"\\f27c\"; }\n\n.fa-hryvnia:before {\n content: \"\\f6f2\"; }\n\n.fa-html5:before {\n content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n content: \"\\f246\"; }\n\n.fa-ice-cream:before {\n content: \"\\f810\"; }\n\n.fa-icicles:before {\n content: \"\\f7ad\"; }\n\n.fa-icons:before {\n content: \"\\f86d\"; }\n\n.fa-id-badge:before {\n content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n content: \"\\f47f\"; }\n\n.fa-ideal:before {\n content: \"\\e013\"; }\n\n.fa-igloo:before {\n content: \"\\f7ae\"; }\n\n.fa-image:before {\n content: \"\\f03e\"; }\n\n.fa-images:before {\n content: \"\\f302\"; }\n\n.fa-imdb:before {\n content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n content: \"\\f01c\"; }\n\n.fa-indent:before {\n content: \"\\f03c\"; }\n\n.fa-industry:before {\n content: \"\\f275\"; }\n\n.fa-infinity:before {\n content: \"\\f534\"; }\n\n.fa-info:before {\n content: \"\\f129\"; }\n\n.fa-info-circle:before {\n content: \"\\f05a\"; }\n\n.fa-innosoft:before {\n content: \"\\e080\"; }\n\n.fa-instagram:before {\n content: \"\\f16d\"; }\n\n.fa-instagram-square:before {\n content: \"\\e055\"; }\n\n.fa-instalod:before {\n content: \"\\e081\"; }\n\n.fa-intercom:before {\n content: \"\\f7af\"; }\n\n.fa-internet-explorer:before {\n content: \"\\f26b\"; }\n\n.fa-invision:before {\n content: \"\\f7b0\"; }\n\n.fa-ioxhost:before {\n content: \"\\f208\"; }\n\n.fa-italic:before {\n content: \"\\f033\"; }\n\n.fa-itch-io:before {\n content: \"\\f83a\"; }\n\n.fa-itunes:before {\n content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n content: \"\\f3b5\"; }\n\n.fa-java:before {\n content: \"\\f4e4\"; }\n\n.fa-jedi:before {\n content: \"\\f669\"; }\n\n.fa-jedi-order:before {\n content: \"\\f50e\"; }\n\n.fa-jenkins:before {\n content: \"\\f3b6\"; }\n\n.fa-jira:before {\n content: \"\\f7b1\"; }\n\n.fa-joget:before {\n content: \"\\f3b7\"; }\n\n.fa-joint:before {\n content: \"\\f595\"; }\n\n.fa-joomla:before {\n content: \"\\f1aa\"; }\n\n.fa-journal-whills:before {\n content: \"\\f66a\"; }\n\n.fa-js:before {\n content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n content: \"\\f1cc\"; }\n\n.fa-kaaba:before {\n content: \"\\f66b\"; }\n\n.fa-kaggle:before {\n content: \"\\f5fa\"; }\n\n.fa-key:before {\n content: \"\\f084\"; }\n\n.fa-keybase:before {\n content: \"\\f4f5\"; }\n\n.fa-keyboard:before {\n content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n content: \"\\f3ba\"; }\n\n.fa-khanda:before {\n content: \"\\f66d\"; }\n\n.fa-kickstarter:before {\n content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n content: \"\\f3bc\"; }\n\n.fa-kiss:before {\n content: \"\\f596\"; }\n\n.fa-kiss-beam:before {\n content: \"\\f597\"; }\n\n.fa-kiss-wink-heart:before {\n content: \"\\f598\"; }\n\n.fa-kiwi-bird:before {\n content: \"\\f535\"; }\n\n.fa-korvue:before {\n content: \"\\f42f\"; }\n\n.fa-landmark:before {\n content: \"\\f66f\"; }\n\n.fa-language:before {\n content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n content: \"\\f109\"; }\n\n.fa-laptop-code:before {\n content: \"\\f5fc\"; }\n\n.fa-laptop-house:before {\n content: \"\\e066\"; }\n\n.fa-laptop-medical:before {\n content: \"\\f812\"; }\n\n.fa-laravel:before {\n content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n content: \"\\f203\"; }\n\n.fa-laugh:before {\n content: \"\\f599\"; }\n\n.fa-laugh-beam:before {\n content: \"\\f59a\"; }\n\n.fa-laugh-squint:before {\n content: \"\\f59b\"; }\n\n.fa-laugh-wink:before {\n content: \"\\f59c\"; }\n\n.fa-layer-group:before {\n content: \"\\f5fd\"; }\n\n.fa-leaf:before {\n content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n content: \"\\f212\"; }\n\n.fa-lemon:before {\n content: \"\\f094\"; }\n\n.fa-less:before {\n content: \"\\f41d\"; }\n\n.fa-less-than:before {\n content: \"\\f536\"; }\n\n.fa-less-than-equal:before {\n content: \"\\f537\"; }\n\n.fa-level-down-alt:before {\n content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n content: \"\\f0eb\"; }\n\n.fa-line:before {\n content: \"\\f3c0\"; }\n\n.fa-link:before {\n content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n content: \"\\f0e1\"; }\n\n.fa-linode:before {\n content: \"\\f2b8\"; }\n\n.fa-linux:before {\n content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n content: \"\\f195\"; }\n\n.fa-list:before {\n content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n content: \"\\f022\"; }\n\n.fa-list-ol:before {\n content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n content: \"\\f124\"; }\n\n.fa-lock:before {\n content: \"\\f023\"; }\n\n.fa-lock-open:before {\n content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n content: \"\\f2a8\"; }\n\n.fa-luggage-cart:before {\n content: \"\\f59d\"; }\n\n.fa-lungs:before {\n content: \"\\f604\"; }\n\n.fa-lungs-virus:before {\n content: \"\\e067\"; }\n\n.fa-lyft:before {\n content: \"\\f3c3\"; }\n\n.fa-magento:before {\n content: \"\\f3c4\"; }\n\n.fa-magic:before {\n content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n content: \"\\f076\"; }\n\n.fa-mail-bulk:before {\n content: \"\\f674\"; }\n\n.fa-mailchimp:before {\n content: \"\\f59e\"; }\n\n.fa-male:before {\n content: \"\\f183\"; }\n\n.fa-mandalorian:before {\n content: \"\\f50f\"; }\n\n.fa-map:before {\n content: \"\\f279\"; }\n\n.fa-map-marked:before {\n content: \"\\f59f\"; }\n\n.fa-map-marked-alt:before {\n content: \"\\f5a0\"; }\n\n.fa-map-marker:before {\n content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n content: \"\\f276\"; }\n\n.fa-map-signs:before {\n content: \"\\f277\"; }\n\n.fa-markdown:before {\n content: \"\\f60f\"; }\n\n.fa-marker:before {\n content: \"\\f5a1\"; }\n\n.fa-mars:before {\n content: \"\\f222\"; }\n\n.fa-mars-double:before {\n content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n content: \"\\f22a\"; }\n\n.fa-mask:before {\n content: \"\\f6fa\"; }\n\n.fa-mastodon:before {\n content: \"\\f4f6\"; }\n\n.fa-maxcdn:before {\n content: \"\\f136\"; }\n\n.fa-mdb:before {\n content: \"\\f8ca\"; }\n\n.fa-medal:before {\n content: \"\\f5a2\"; }\n\n.fa-medapps:before {\n content: \"\\f3c6\"; }\n\n.fa-medium:before {\n content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n content: \"\\f2e0\"; }\n\n.fa-megaport:before {\n content: \"\\f5a3\"; }\n\n.fa-meh:before {\n content: \"\\f11a\"; }\n\n.fa-meh-blank:before {\n content: \"\\f5a4\"; }\n\n.fa-meh-rolling-eyes:before {\n content: \"\\f5a5\"; }\n\n.fa-memory:before {\n content: \"\\f538\"; }\n\n.fa-mendeley:before {\n content: \"\\f7b3\"; }\n\n.fa-menorah:before {\n content: \"\\f676\"; }\n\n.fa-mercury:before {\n content: \"\\f223\"; }\n\n.fa-meteor:before {\n content: \"\\f753\"; }\n\n.fa-microblog:before {\n content: \"\\e01a\"; }\n\n.fa-microchip:before {\n content: \"\\f2db\"; }\n\n.fa-microphone:before {\n content: \"\\f130\"; }\n\n.fa-microphone-alt:before {\n content: \"\\f3c9\"; }\n\n.fa-microphone-alt-slash:before {\n content: \"\\f539\"; }\n\n.fa-microphone-slash:before {\n content: \"\\f131\"; }\n\n.fa-microscope:before {\n content: \"\\f610\"; }\n\n.fa-microsoft:before {\n content: \"\\f3ca\"; }\n\n.fa-minus:before {\n content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n content: \"\\f056\"; }\n\n.fa-minus-square:before {\n content: \"\\f146\"; }\n\n.fa-mitten:before {\n content: \"\\f7b5\"; }\n\n.fa-mix:before {\n content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n content: \"\\f289\"; }\n\n.fa-mixer:before {\n content: \"\\e056\"; }\n\n.fa-mizuni:before {\n content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n content: \"\\f3cd\"; }\n\n.fa-modx:before {\n content: \"\\f285\"; }\n\n.fa-monero:before {\n content: \"\\f3d0\"; }\n\n.fa-money-bill:before {\n content: \"\\f0d6\"; }\n\n.fa-money-bill-alt:before {\n content: \"\\f3d1\"; }\n\n.fa-money-bill-wave:before {\n content: \"\\f53a\"; }\n\n.fa-money-bill-wave-alt:before {\n content: \"\\f53b\"; }\n\n.fa-money-check:before {\n content: \"\\f53c\"; }\n\n.fa-money-check-alt:before {\n content: \"\\f53d\"; }\n\n.fa-monument:before {\n content: \"\\f5a6\"; }\n\n.fa-moon:before {\n content: \"\\f186\"; }\n\n.fa-mortar-pestle:before {\n content: \"\\f5a7\"; }\n\n.fa-mosque:before {\n content: \"\\f678\"; }\n\n.fa-motorcycle:before {\n content: \"\\f21c\"; }\n\n.fa-mountain:before {\n content: \"\\f6fc\"; }\n\n.fa-mouse:before {\n content: \"\\f8cc\"; }\n\n.fa-mouse-pointer:before {\n content: \"\\f245\"; }\n\n.fa-mug-hot:before {\n content: \"\\f7b6\"; }\n\n.fa-music:before {\n content: \"\\f001\"; }\n\n.fa-napster:before {\n content: \"\\f3d2\"; }\n\n.fa-neos:before {\n content: \"\\f612\"; }\n\n.fa-network-wired:before {\n content: \"\\f6ff\"; }\n\n.fa-neuter:before {\n content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n content: \"\\f1ea\"; }\n\n.fa-nimblr:before {\n content: \"\\f5a8\"; }\n\n.fa-node:before {\n content: \"\\f419\"; }\n\n.fa-node-js:before {\n content: \"\\f3d3\"; }\n\n.fa-not-equal:before {\n content: \"\\f53e\"; }\n\n.fa-notes-medical:before {\n content: \"\\f481\"; }\n\n.fa-npm:before {\n content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n content: \"\\f248\"; }\n\n.fa-octopus-deploy:before {\n content: \"\\e082\"; }\n\n.fa-odnoklassniki:before {\n content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n content: \"\\f264\"; }\n\n.fa-oil-can:before {\n content: \"\\f613\"; }\n\n.fa-old-republic:before {\n content: \"\\f510\"; }\n\n.fa-om:before {\n content: \"\\f679\"; }\n\n.fa-opencart:before {\n content: \"\\f23d\"; }\n\n.fa-openid:before {\n content: \"\\f19b\"; }\n\n.fa-opera:before {\n content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n content: \"\\f23c\"; }\n\n.fa-orcid:before {\n content: \"\\f8d2\"; }\n\n.fa-osi:before {\n content: \"\\f41a\"; }\n\n.fa-otter:before {\n content: \"\\f700\"; }\n\n.fa-outdent:before {\n content: \"\\f03b\"; }\n\n.fa-page4:before {\n content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n content: \"\\f18c\"; }\n\n.fa-pager:before {\n content: \"\\f815\"; }\n\n.fa-paint-brush:before {\n content: \"\\f1fc\"; }\n\n.fa-paint-roller:before {\n content: \"\\f5aa\"; }\n\n.fa-palette:before {\n content: \"\\f53f\"; }\n\n.fa-palfed:before {\n content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n content: \"\\f1dd\"; }\n\n.fa-parking:before {\n content: \"\\f540\"; }\n\n.fa-passport:before {\n content: \"\\f5ab\"; }\n\n.fa-pastafarianism:before {\n content: \"\\f67b\"; }\n\n.fa-paste:before {\n content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n content: \"\\f3d9\"; }\n\n.fa-pause:before {\n content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n content: \"\\f28b\"; }\n\n.fa-paw:before {\n content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n content: \"\\f1ed\"; }\n\n.fa-peace:before {\n content: \"\\f67c\"; }\n\n.fa-pen:before {\n content: \"\\f304\"; }\n\n.fa-pen-alt:before {\n content: \"\\f305\"; }\n\n.fa-pen-fancy:before {\n content: \"\\f5ac\"; }\n\n.fa-pen-nib:before {\n content: \"\\f5ad\"; }\n\n.fa-pen-square:before {\n content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n content: \"\\f303\"; }\n\n.fa-pencil-ruler:before {\n content: \"\\f5ae\"; }\n\n.fa-penny-arcade:before {\n content: \"\\f704\"; }\n\n.fa-people-arrows:before {\n content: \"\\e068\"; }\n\n.fa-people-carry:before {\n content: \"\\f4ce\"; }\n\n.fa-pepper-hot:before {\n content: \"\\f816\"; }\n\n.fa-perbyte:before {\n content: \"\\e083\"; }\n\n.fa-percent:before {\n content: \"\\f295\"; }\n\n.fa-percentage:before {\n content: \"\\f541\"; }\n\n.fa-periscope:before {\n content: \"\\f3da\"; }\n\n.fa-person-booth:before {\n content: \"\\f756\"; }\n\n.fa-phabricator:before {\n content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n content: \"\\f3dc\"; }\n\n.fa-phoenix-squadron:before {\n content: \"\\f511\"; }\n\n.fa-phone:before {\n content: \"\\f095\"; }\n\n.fa-phone-alt:before {\n content: \"\\f879\"; }\n\n.fa-phone-slash:before {\n content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n content: \"\\f098\"; }\n\n.fa-phone-square-alt:before {\n content: \"\\f87b\"; }\n\n.fa-phone-volume:before {\n content: \"\\f2a0\"; }\n\n.fa-photo-video:before {\n content: \"\\f87c\"; }\n\n.fa-php:before {\n content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\"; }\n\n.fa-pied-piper-hat:before {\n content: \"\\f4e5\"; }\n\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\"; }\n\n.fa-pied-piper-square:before {\n content: \"\\e01e\"; }\n\n.fa-piggy-bank:before {\n content: \"\\f4d3\"; }\n\n.fa-pills:before {\n content: \"\\f484\"; }\n\n.fa-pinterest:before {\n content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n content: \"\\f0d3\"; }\n\n.fa-pizza-slice:before {\n content: \"\\f818\"; }\n\n.fa-place-of-worship:before {\n content: \"\\f67f\"; }\n\n.fa-plane:before {\n content: \"\\f072\"; }\n\n.fa-plane-arrival:before {\n content: \"\\f5af\"; }\n\n.fa-plane-departure:before {\n content: \"\\f5b0\"; }\n\n.fa-plane-slash:before {\n content: \"\\e069\"; }\n\n.fa-play:before {\n content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n content: \"\\f144\"; }\n\n.fa-playstation:before {\n content: \"\\f3df\"; }\n\n.fa-plug:before {\n content: \"\\f1e6\"; }\n\n.fa-plus:before {\n content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n content: \"\\f055\"; }\n\n.fa-plus-square:before {\n content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n content: \"\\f2ce\"; }\n\n.fa-poll:before {\n content: \"\\f681\"; }\n\n.fa-poll-h:before {\n content: \"\\f682\"; }\n\n.fa-poo:before {\n content: \"\\f2fe\"; }\n\n.fa-poo-storm:before {\n content: \"\\f75a\"; }\n\n.fa-poop:before {\n content: \"\\f619\"; }\n\n.fa-portrait:before {\n content: \"\\f3e0\"; }\n\n.fa-pound-sign:before {\n content: \"\\f154\"; }\n\n.fa-power-off:before {\n content: \"\\f011\"; }\n\n.fa-pray:before {\n content: \"\\f683\"; }\n\n.fa-praying-hands:before {\n content: \"\\f684\"; }\n\n.fa-prescription:before {\n content: \"\\f5b1\"; }\n\n.fa-prescription-bottle:before {\n content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n content: \"\\f486\"; }\n\n.fa-print:before {\n content: \"\\f02f\"; }\n\n.fa-procedures:before {\n content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n content: \"\\f288\"; }\n\n.fa-project-diagram:before {\n content: \"\\f542\"; }\n\n.fa-pump-medical:before {\n content: \"\\e06a\"; }\n\n.fa-pump-soap:before {\n content: \"\\e06b\"; }\n\n.fa-pushed:before {\n content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n content: \"\\f12e\"; }\n\n.fa-python:before {\n content: \"\\f3e2\"; }\n\n.fa-qq:before {\n content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n content: \"\\f029\"; }\n\n.fa-question:before {\n content: \"\\f128\"; }\n\n.fa-question-circle:before {\n content: \"\\f059\"; }\n\n.fa-quidditch:before {\n content: \"\\f458\"; }\n\n.fa-quinscape:before {\n content: \"\\f459\"; }\n\n.fa-quora:before {\n content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n content: \"\\f10e\"; }\n\n.fa-quran:before {\n content: \"\\f687\"; }\n\n.fa-r-project:before {\n content: \"\\f4f7\"; }\n\n.fa-radiation:before {\n content: \"\\f7b9\"; }\n\n.fa-radiation-alt:before {\n content: \"\\f7ba\"; }\n\n.fa-rainbow:before {\n content: \"\\f75b\"; }\n\n.fa-random:before {\n content: \"\\f074\"; }\n\n.fa-raspberry-pi:before {\n content: \"\\f7bb\"; }\n\n.fa-ravelry:before {\n content: \"\\f2d9\"; }\n\n.fa-react:before {\n content: \"\\f41b\"; }\n\n.fa-reacteurope:before {\n content: \"\\f75d\"; }\n\n.fa-readme:before {\n content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n content: \"\\f1d0\"; }\n\n.fa-receipt:before {\n content: \"\\f543\"; }\n\n.fa-record-vinyl:before {\n content: \"\\f8d9\"; }\n\n.fa-recycle:before {\n content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n content: \"\\f1a2\"; }\n\n.fa-redhat:before {\n content: \"\\f7bc\"; }\n\n.fa-redo:before {\n content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n content: \"\\f2f9\"; }\n\n.fa-registered:before {\n content: \"\\f25d\"; }\n\n.fa-remove-format:before {\n content: \"\\f87d\"; }\n\n.fa-renren:before {\n content: \"\\f18b\"; }\n\n.fa-reply:before {\n content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n content: \"\\f122\"; }\n\n.fa-replyd:before {\n content: \"\\f3e6\"; }\n\n.fa-republican:before {\n content: \"\\f75e\"; }\n\n.fa-researchgate:before {\n content: \"\\f4f8\"; }\n\n.fa-resolving:before {\n content: \"\\f3e7\"; }\n\n.fa-restroom:before {\n content: \"\\f7bd\"; }\n\n.fa-retweet:before {\n content: \"\\f079\"; }\n\n.fa-rev:before {\n content: \"\\f5b2\"; }\n\n.fa-ribbon:before {\n content: \"\\f4d6\"; }\n\n.fa-ring:before {\n content: \"\\f70b\"; }\n\n.fa-road:before {\n content: \"\\f018\"; }\n\n.fa-robot:before {\n content: \"\\f544\"; }\n\n.fa-rocket:before {\n content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n content: \"\\f3e9\"; }\n\n.fa-route:before {\n content: \"\\f4d7\"; }\n\n.fa-rss:before {\n content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n content: \"\\f158\"; }\n\n.fa-ruler:before {\n content: \"\\f545\"; }\n\n.fa-ruler-combined:before {\n content: \"\\f546\"; }\n\n.fa-ruler-horizontal:before {\n content: \"\\f547\"; }\n\n.fa-ruler-vertical:before {\n content: \"\\f548\"; }\n\n.fa-running:before {\n content: \"\\f70c\"; }\n\n.fa-rupee-sign:before {\n content: \"\\f156\"; }\n\n.fa-rust:before {\n content: \"\\e07a\"; }\n\n.fa-sad-cry:before {\n content: \"\\f5b3\"; }\n\n.fa-sad-tear:before {\n content: \"\\f5b4\"; }\n\n.fa-safari:before {\n content: \"\\f267\"; }\n\n.fa-salesforce:before {\n content: \"\\f83b\"; }\n\n.fa-sass:before {\n content: \"\\f41e\"; }\n\n.fa-satellite:before {\n content: \"\\f7bf\"; }\n\n.fa-satellite-dish:before {\n content: \"\\f7c0\"; }\n\n.fa-save:before {\n content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n content: \"\\f3ea\"; }\n\n.fa-school:before {\n content: \"\\f549\"; }\n\n.fa-screwdriver:before {\n content: \"\\f54a\"; }\n\n.fa-scribd:before {\n content: \"\\f28a\"; }\n\n.fa-scroll:before {\n content: \"\\f70e\"; }\n\n.fa-sd-card:before {\n content: \"\\f7c2\"; }\n\n.fa-search:before {\n content: \"\\f002\"; }\n\n.fa-search-dollar:before {\n content: \"\\f688\"; }\n\n.fa-search-location:before {\n content: \"\\f689\"; }\n\n.fa-search-minus:before {\n content: \"\\f010\"; }\n\n.fa-search-plus:before {\n content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n content: \"\\f213\"; }\n\n.fa-server:before {\n content: \"\\f233\"; }\n\n.fa-servicestack:before {\n content: \"\\f3ec\"; }\n\n.fa-shapes:before {\n content: \"\\f61f\"; }\n\n.fa-share:before {\n content: \"\\f064\"; }\n\n.fa-share-alt:before {\n content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n content: \"\\f3ed\"; }\n\n.fa-shield-virus:before {\n content: \"\\e06c\"; }\n\n.fa-ship:before {\n content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n content: \"\\f214\"; }\n\n.fa-shoe-prints:before {\n content: \"\\f54b\"; }\n\n.fa-shopify:before {\n content: \"\\e057\"; }\n\n.fa-shopping-bag:before {\n content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n content: \"\\f07a\"; }\n\n.fa-shopware:before {\n content: \"\\f5b5\"; }\n\n.fa-shower:before {\n content: \"\\f2cc\"; }\n\n.fa-shuttle-van:before {\n content: \"\\f5b6\"; }\n\n.fa-sign:before {\n content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n content: \"\\f2f5\"; }\n\n.fa-signal:before {\n content: \"\\f012\"; }\n\n.fa-signature:before {\n content: \"\\f5b7\"; }\n\n.fa-sim-card:before {\n content: \"\\f7c4\"; }\n\n.fa-simplybuilt:before {\n content: \"\\f215\"; }\n\n.fa-sink:before {\n content: \"\\e06d\"; }\n\n.fa-sistrix:before {\n content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n content: \"\\f0e8\"; }\n\n.fa-sith:before {\n content: \"\\f512\"; }\n\n.fa-skating:before {\n content: \"\\f7c5\"; }\n\n.fa-sketch:before {\n content: \"\\f7c6\"; }\n\n.fa-skiing:before {\n content: \"\\f7c9\"; }\n\n.fa-skiing-nordic:before {\n content: \"\\f7ca\"; }\n\n.fa-skull:before {\n content: \"\\f54c\"; }\n\n.fa-skull-crossbones:before {\n content: \"\\f714\"; }\n\n.fa-skyatlas:before {\n content: \"\\f216\"; }\n\n.fa-skype:before {\n content: \"\\f17e\"; }\n\n.fa-slack:before {\n content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n content: \"\\f3ef\"; }\n\n.fa-slash:before {\n content: \"\\f715\"; }\n\n.fa-sleigh:before {\n content: \"\\f7cc\"; }\n\n.fa-sliders-h:before {\n content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n content: \"\\f1e7\"; }\n\n.fa-smile:before {\n content: \"\\f118\"; }\n\n.fa-smile-beam:before {\n content: \"\\f5b8\"; }\n\n.fa-smile-wink:before {\n content: \"\\f4da\"; }\n\n.fa-smog:before {\n content: \"\\f75f\"; }\n\n.fa-smoking:before {\n content: \"\\f48d\"; }\n\n.fa-smoking-ban:before {\n content: \"\\f54d\"; }\n\n.fa-sms:before {\n content: \"\\f7cd\"; }\n\n.fa-snapchat:before {\n content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n content: \"\\f2ad\"; }\n\n.fa-snowboarding:before {\n content: \"\\f7ce\"; }\n\n.fa-snowflake:before {\n content: \"\\f2dc\"; }\n\n.fa-snowman:before {\n content: \"\\f7d0\"; }\n\n.fa-snowplow:before {\n content: \"\\f7d2\"; }\n\n.fa-soap:before {\n content: \"\\e06e\"; }\n\n.fa-socks:before {\n content: \"\\f696\"; }\n\n.fa-solar-panel:before {\n content: \"\\f5ba\"; }\n\n.fa-sort:before {\n content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n content: \"\\f15d\"; }\n\n.fa-sort-alpha-down-alt:before {\n content: \"\\f881\"; }\n\n.fa-sort-alpha-up:before {\n content: \"\\f15e\"; }\n\n.fa-sort-alpha-up-alt:before {\n content: \"\\f882\"; }\n\n.fa-sort-amount-down:before {\n content: \"\\f160\"; }\n\n.fa-sort-amount-down-alt:before {\n content: \"\\f884\"; }\n\n.fa-sort-amount-up:before {\n content: \"\\f161\"; }\n\n.fa-sort-amount-up-alt:before {\n content: \"\\f885\"; }\n\n.fa-sort-down:before {\n content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n content: \"\\f162\"; }\n\n.fa-sort-numeric-down-alt:before {\n content: \"\\f886\"; }\n\n.fa-sort-numeric-up:before {\n content: \"\\f163\"; }\n\n.fa-sort-numeric-up-alt:before {\n content: \"\\f887\"; }\n\n.fa-sort-up:before {\n content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n content: \"\\f1be\"; }\n\n.fa-sourcetree:before {\n content: \"\\f7d3\"; }\n\n.fa-spa:before {\n content: \"\\f5bb\"; }\n\n.fa-space-shuttle:before {\n content: \"\\f197\"; }\n\n.fa-speakap:before {\n content: \"\\f3f3\"; }\n\n.fa-speaker-deck:before {\n content: \"\\f83c\"; }\n\n.fa-spell-check:before {\n content: \"\\f891\"; }\n\n.fa-spider:before {\n content: \"\\f717\"; }\n\n.fa-spinner:before {\n content: \"\\f110\"; }\n\n.fa-splotch:before {\n content: \"\\f5bc\"; }\n\n.fa-spotify:before {\n content: \"\\f1bc\"; }\n\n.fa-spray-can:before {\n content: \"\\f5bd\"; }\n\n.fa-square:before {\n content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n content: \"\\f45c\"; }\n\n.fa-square-root-alt:before {\n content: \"\\f698\"; }\n\n.fa-squarespace:before {\n content: \"\\f5be\"; }\n\n.fa-stack-exchange:before {\n content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n content: \"\\f16c\"; }\n\n.fa-stackpath:before {\n content: \"\\f842\"; }\n\n.fa-stamp:before {\n content: \"\\f5bf\"; }\n\n.fa-star:before {\n content: \"\\f005\"; }\n\n.fa-star-and-crescent:before {\n content: \"\\f699\"; }\n\n.fa-star-half:before {\n content: \"\\f089\"; }\n\n.fa-star-half-alt:before {\n content: \"\\f5c0\"; }\n\n.fa-star-of-david:before {\n content: \"\\f69a\"; }\n\n.fa-star-of-life:before {\n content: \"\\f621\"; }\n\n.fa-staylinked:before {\n content: \"\\f3f5\"; }\n\n.fa-steam:before {\n content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n content: \"\\f048\"; }\n\n.fa-step-forward:before {\n content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n content: \"\\f249\"; }\n\n.fa-stop:before {\n content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n content: \"\\f2f2\"; }\n\n.fa-stopwatch-20:before {\n content: \"\\e06f\"; }\n\n.fa-store:before {\n content: \"\\f54e\"; }\n\n.fa-store-alt:before {\n content: \"\\f54f\"; }\n\n.fa-store-alt-slash:before {\n content: \"\\e070\"; }\n\n.fa-store-slash:before {\n content: \"\\e071\"; }\n\n.fa-strava:before {\n content: \"\\f428\"; }\n\n.fa-stream:before {\n content: \"\\f550\"; }\n\n.fa-street-view:before {\n content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n content: \"\\f42a\"; }\n\n.fa-stroopwafel:before {\n content: \"\\f551\"; }\n\n.fa-studiovinari:before {\n content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n content: \"\\f12c\"; }\n\n.fa-subway:before {\n content: \"\\f239\"; }\n\n.fa-suitcase:before {\n content: \"\\f0f2\"; }\n\n.fa-suitcase-rolling:before {\n content: \"\\f5c1\"; }\n\n.fa-sun:before {\n content: \"\\f185\"; }\n\n.fa-superpowers:before {\n content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n content: \"\\f12b\"; }\n\n.fa-supple:before {\n content: \"\\f3f9\"; }\n\n.fa-surprise:before {\n content: \"\\f5c2\"; }\n\n.fa-suse:before {\n content: \"\\f7d6\"; }\n\n.fa-swatchbook:before {\n content: \"\\f5c3\"; }\n\n.fa-swift:before {\n content: \"\\f8e1\"; }\n\n.fa-swimmer:before {\n content: \"\\f5c4\"; }\n\n.fa-swimming-pool:before {\n content: \"\\f5c5\"; }\n\n.fa-symfony:before {\n content: \"\\f83d\"; }\n\n.fa-synagogue:before {\n content: \"\\f69b\"; }\n\n.fa-sync:before {\n content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n content: \"\\f48e\"; }\n\n.fa-table:before {\n content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n content: \"\\f45d\"; }\n\n.fa-tablet:before {\n content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n content: \"\\f3fd\"; }\n\n.fa-tag:before {\n content: \"\\f02b\"; }\n\n.fa-tags:before {\n content: \"\\f02c\"; }\n\n.fa-tape:before {\n content: \"\\f4db\"; }\n\n.fa-tasks:before {\n content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n content: \"\\f1ba\"; }\n\n.fa-teamspeak:before {\n content: \"\\f4f9\"; }\n\n.fa-teeth:before {\n content: \"\\f62e\"; }\n\n.fa-teeth-open:before {\n content: \"\\f62f\"; }\n\n.fa-telegram:before {\n content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n content: \"\\f3fe\"; }\n\n.fa-temperature-high:before {\n content: \"\\f769\"; }\n\n.fa-temperature-low:before {\n content: \"\\f76b\"; }\n\n.fa-tencent-weibo:before {\n content: \"\\f1d5\"; }\n\n.fa-tenge:before {\n content: \"\\f7d7\"; }\n\n.fa-terminal:before {\n content: \"\\f120\"; }\n\n.fa-text-height:before {\n content: \"\\f034\"; }\n\n.fa-text-width:before {\n content: \"\\f035\"; }\n\n.fa-th:before {\n content: \"\\f00a\"; }\n\n.fa-th-large:before {\n content: \"\\f009\"; }\n\n.fa-th-list:before {\n content: \"\\f00b\"; }\n\n.fa-the-red-yeti:before {\n content: \"\\f69d\"; }\n\n.fa-theater-masks:before {\n content: \"\\f630\"; }\n\n.fa-themeco:before {\n content: \"\\f5c6\"; }\n\n.fa-themeisle:before {\n content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n content: \"\\f2c8\"; }\n\n.fa-think-peaks:before {\n content: \"\\f731\"; }\n\n.fa-thumbs-down:before {\n content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n content: \"\\f3ff\"; }\n\n.fa-tiktok:before {\n content: \"\\e07b\"; }\n\n.fa-times:before {\n content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n content: \"\\f057\"; }\n\n.fa-tint:before {\n content: \"\\f043\"; }\n\n.fa-tint-slash:before {\n content: \"\\f5c7\"; }\n\n.fa-tired:before {\n content: \"\\f5c8\"; }\n\n.fa-toggle-off:before {\n content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n content: \"\\f205\"; }\n\n.fa-toilet:before {\n content: \"\\f7d8\"; }\n\n.fa-toilet-paper:before {\n content: \"\\f71e\"; }\n\n.fa-toilet-paper-slash:before {\n content: \"\\e072\"; }\n\n.fa-toolbox:before {\n content: \"\\f552\"; }\n\n.fa-tools:before {\n content: \"\\f7d9\"; }\n\n.fa-tooth:before {\n content: \"\\f5c9\"; }\n\n.fa-torah:before {\n content: \"\\f6a0\"; }\n\n.fa-torii-gate:before {\n content: \"\\f6a1\"; }\n\n.fa-tractor:before {\n content: \"\\f722\"; }\n\n.fa-trade-federation:before {\n content: \"\\f513\"; }\n\n.fa-trademark:before {\n content: \"\\f25c\"; }\n\n.fa-traffic-light:before {\n content: \"\\f637\"; }\n\n.fa-trailer:before {\n content: \"\\e041\"; }\n\n.fa-train:before {\n content: \"\\f238\"; }\n\n.fa-tram:before {\n content: \"\\f7da\"; }\n\n.fa-transgender:before {\n content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n content: \"\\f225\"; }\n\n.fa-trash:before {\n content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n content: \"\\f2ed\"; }\n\n.fa-trash-restore:before {\n content: \"\\f829\"; }\n\n.fa-trash-restore-alt:before {\n content: \"\\f82a\"; }\n\n.fa-tree:before {\n content: \"\\f1bb\"; }\n\n.fa-trello:before {\n content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n content: \"\\f262\"; }\n\n.fa-trophy:before {\n content: \"\\f091\"; }\n\n.fa-truck:before {\n content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n content: \"\\f4de\"; }\n\n.fa-truck-monster:before {\n content: \"\\f63b\"; }\n\n.fa-truck-moving:before {\n content: \"\\f4df\"; }\n\n.fa-truck-pickup:before {\n content: \"\\f63c\"; }\n\n.fa-tshirt:before {\n content: \"\\f553\"; }\n\n.fa-tty:before {\n content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n content: \"\\f174\"; }\n\n.fa-tv:before {\n content: \"\\f26c\"; }\n\n.fa-twitch:before {\n content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n content: \"\\f081\"; }\n\n.fa-typo3:before {\n content: \"\\f42b\"; }\n\n.fa-uber:before {\n content: \"\\f402\"; }\n\n.fa-ubuntu:before {\n content: \"\\f7df\"; }\n\n.fa-uikit:before {\n content: \"\\f403\"; }\n\n.fa-umbraco:before {\n content: \"\\f8e8\"; }\n\n.fa-umbrella:before {\n content: \"\\f0e9\"; }\n\n.fa-umbrella-beach:before {\n content: \"\\f5ca\"; }\n\n.fa-uncharted:before {\n content: \"\\e084\"; }\n\n.fa-underline:before {\n content: \"\\f0cd\"; }\n\n.fa-undo:before {\n content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n content: \"\\f404\"; }\n\n.fa-unity:before {\n content: \"\\e049\"; }\n\n.fa-universal-access:before {\n content: \"\\f29a\"; }\n\n.fa-university:before {\n content: \"\\f19c\"; }\n\n.fa-unlink:before {\n content: \"\\f127\"; }\n\n.fa-unlock:before {\n content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n content: \"\\f13e\"; }\n\n.fa-unsplash:before {\n content: \"\\e07c\"; }\n\n.fa-untappd:before {\n content: \"\\f405\"; }\n\n.fa-upload:before {\n content: \"\\f093\"; }\n\n.fa-ups:before {\n content: \"\\f7e0\"; }\n\n.fa-usb:before {\n content: \"\\f287\"; }\n\n.fa-user:before {\n content: \"\\f007\"; }\n\n.fa-user-alt:before {\n content: \"\\f406\"; }\n\n.fa-user-alt-slash:before {\n content: \"\\f4fa\"; }\n\n.fa-user-astronaut:before {\n content: \"\\f4fb\"; }\n\n.fa-user-check:before {\n content: \"\\f4fc\"; }\n\n.fa-user-circle:before {\n content: \"\\f2bd\"; }\n\n.fa-user-clock:before {\n content: \"\\f4fd\"; }\n\n.fa-user-cog:before {\n content: \"\\f4fe\"; }\n\n.fa-user-edit:before {\n content: \"\\f4ff\"; }\n\n.fa-user-friends:before {\n content: \"\\f500\"; }\n\n.fa-user-graduate:before {\n content: \"\\f501\"; }\n\n.fa-user-injured:before {\n content: \"\\f728\"; }\n\n.fa-user-lock:before {\n content: \"\\f502\"; }\n\n.fa-user-md:before {\n content: \"\\f0f0\"; }\n\n.fa-user-minus:before {\n content: \"\\f503\"; }\n\n.fa-user-ninja:before {\n content: \"\\f504\"; }\n\n.fa-user-nurse:before {\n content: \"\\f82f\"; }\n\n.fa-user-plus:before {\n content: \"\\f234\"; }\n\n.fa-user-secret:before {\n content: \"\\f21b\"; }\n\n.fa-user-shield:before {\n content: \"\\f505\"; }\n\n.fa-user-slash:before {\n content: \"\\f506\"; }\n\n.fa-user-tag:before {\n content: \"\\f507\"; }\n\n.fa-user-tie:before {\n content: \"\\f508\"; }\n\n.fa-user-times:before {\n content: \"\\f235\"; }\n\n.fa-users:before {\n content: \"\\f0c0\"; }\n\n.fa-users-cog:before {\n content: \"\\f509\"; }\n\n.fa-users-slash:before {\n content: \"\\e073\"; }\n\n.fa-usps:before {\n content: \"\\f7e1\"; }\n\n.fa-ussunnah:before {\n content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n content: \"\\f408\"; }\n\n.fa-vector-square:before {\n content: \"\\f5cb\"; }\n\n.fa-venus:before {\n content: \"\\f221\"; }\n\n.fa-venus-double:before {\n content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n content: \"\\f228\"; }\n\n.fa-vest:before {\n content: \"\\e085\"; }\n\n.fa-vest-patches:before {\n content: \"\\e086\"; }\n\n.fa-viacoin:before {\n content: \"\\f237\"; }\n\n.fa-viadeo:before {\n content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n content: \"\\f2aa\"; }\n\n.fa-vial:before {\n content: \"\\f492\"; }\n\n.fa-vials:before {\n content: \"\\f493\"; }\n\n.fa-viber:before {\n content: \"\\f409\"; }\n\n.fa-video:before {\n content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n content: \"\\f4e2\"; }\n\n.fa-vihara:before {\n content: \"\\f6a7\"; }\n\n.fa-vimeo:before {\n content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n content: \"\\f27d\"; }\n\n.fa-vine:before {\n content: \"\\f1ca\"; }\n\n.fa-virus:before {\n content: \"\\e074\"; }\n\n.fa-virus-slash:before {\n content: \"\\e075\"; }\n\n.fa-viruses:before {\n content: \"\\e076\"; }\n\n.fa-vk:before {\n content: \"\\f189\"; }\n\n.fa-vnv:before {\n content: \"\\f40b\"; }\n\n.fa-voicemail:before {\n content: \"\\f897\"; }\n\n.fa-volleyball-ball:before {\n content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n content: \"\\f027\"; }\n\n.fa-volume-mute:before {\n content: \"\\f6a9\"; }\n\n.fa-volume-off:before {\n content: \"\\f026\"; }\n\n.fa-volume-up:before {\n content: \"\\f028\"; }\n\n.fa-vote-yea:before {\n content: \"\\f772\"; }\n\n.fa-vr-cardboard:before {\n content: \"\\f729\"; }\n\n.fa-vuejs:before {\n content: \"\\f41f\"; }\n\n.fa-walking:before {\n content: \"\\f554\"; }\n\n.fa-wallet:before {\n content: \"\\f555\"; }\n\n.fa-warehouse:before {\n content: \"\\f494\"; }\n\n.fa-watchman-monitoring:before {\n content: \"\\e087\"; }\n\n.fa-water:before {\n content: \"\\f773\"; }\n\n.fa-wave-square:before {\n content: \"\\f83e\"; }\n\n.fa-waze:before {\n content: \"\\f83f\"; }\n\n.fa-weebly:before {\n content: \"\\f5cc\"; }\n\n.fa-weibo:before {\n content: \"\\f18a\"; }\n\n.fa-weight:before {\n content: \"\\f496\"; }\n\n.fa-weight-hanging:before {\n content: \"\\f5cd\"; }\n\n.fa-weixin:before {\n content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n content: \"\\f193\"; }\n\n.fa-whmcs:before {\n content: \"\\f40d\"; }\n\n.fa-wifi:before {\n content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n content: \"\\f266\"; }\n\n.fa-wind:before {\n content: \"\\f72e\"; }\n\n.fa-window-close:before {\n content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n content: \"\\f2d2\"; }\n\n.fa-windows:before {\n content: \"\\f17a\"; }\n\n.fa-wine-bottle:before {\n content: \"\\f72f\"; }\n\n.fa-wine-glass:before {\n content: \"\\f4e3\"; }\n\n.fa-wine-glass-alt:before {\n content: \"\\f5ce\"; }\n\n.fa-wix:before {\n content: \"\\f5cf\"; }\n\n.fa-wizards-of-the-coast:before {\n content: \"\\f730\"; }\n\n.fa-wodu:before {\n content: \"\\e088\"; }\n\n.fa-wolf-pack-battalion:before {\n content: \"\\f514\"; }\n\n.fa-won-sign:before {\n content: \"\\f159\"; }\n\n.fa-wordpress:before {\n content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n content: \"\\f298\"; }\n\n.fa-wpressr:before {\n content: \"\\f3e4\"; }\n\n.fa-wrench:before {\n content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n content: \"\\f497\"; }\n\n.fa-xbox:before {\n content: \"\\f412\"; }\n\n.fa-xing:before {\n content: \"\\f168\"; }\n\n.fa-xing-square:before {\n content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n content: \"\\f19e\"; }\n\n.fa-yammer:before {\n content: \"\\f840\"; }\n\n.fa-yandex:before {\n content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n content: \"\\f414\"; }\n\n.fa-yarn:before {\n content: \"\\f7e3\"; }\n\n.fa-yelp:before {\n content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n content: \"\\f157\"; }\n\n.fa-yin-yang:before {\n content: \"\\f6ad\"; }\n\n.fa-yoast:before {\n content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n content: \"\\f431\"; }\n\n.fa-zhihu:before {\n content: \"\\f63f\"; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n@font-face {\n font-family: 'Font Awesome 5 Brands';\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"../webfonts/fa-brands-400.eot\");\n src: url(\"../webfonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-brands-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-brands-400.woff\") format(\"woff\"), url(\"../webfonts/fa-brands-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n font-family: 'Font Awesome 5 Brands';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"../webfonts/fa-regular-400.eot\");\n src: url(\"../webfonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-regular-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-regular-400.woff\") format(\"woff\"), url(\"../webfonts/fa-regular-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n font-family: 'Font Awesome 5 Free';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 900;\n font-display: block;\n src: url(\"../webfonts/fa-solid-900.eot\");\n src: url(\"../webfonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-solid-900.woff2\") format(\"woff2\"), url(\"../webfonts/fa-solid-900.woff\") format(\"woff\"), url(\"../webfonts/fa-solid-900.ttf\") format(\"truetype\"), url(\"../webfonts/fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n font-family: 'Font Awesome 5 Free';\n font-weight: 900; }\n","@import '@fortawesome/fontawesome-free/css/all.css';\n\n$background-base: #454545;\n$foreground-base: #9c9c9c;\n$background-z1: #333333;\n$foreground-z1: #b5b5b5;\n$background-z2: #252525;\n$foreground-z2: #b5b5b5;\n\n$color-danger: #c32222;\n$color-info: #0374a8;\n$color-success: #008000;\n$color-warning: #d99b0b;\n\nhtml, body {\n margin: 0;\n padding: 0;\n /* width: 100%;\n height: 100%; */\n font-family: monospace;\n overflow: hidden;\n font-family: 'Kufam', 'Courier new', 'monospace';\n}\n\nbody {\n // margin: 10px;\n background-color: $background-base;\n color: $foreground-base;\n}\n\n.app-info {\n position: absolute;\n top: 15px;\n left: 10px;\n left: max(env(safe-area-inset-left, 10px), 10px);\n\n h1 {\n font-size: 14px;\n margin: 0;\n color: $foreground-base;\n }\n .version {\n display: block;\n font-size: 9px;\n }\n}\n\n.statusline {\n position: absolute;\n display: flex;\n bottom: 0;\n left: 0;\n height: 40px;\n /* padding-left: 5px; */\n width: calc(100%);\n font-size: 12px;\n margin: 0;\n align-items: center;\n\n background-color: $background-z1;\n i {\n font-size: 14px;\n margin-right: 5px;\n }\n\n &-item {\n display: none;\n align-items: flex-start;\n margin-left: 5px;\n margin-right: 5px;\n font-size: 13px;\n\n color: $foreground-z1;\n\n .connected & { display: flex; }\n }\n\n &-item:first-child {\n margin-left: 10px;\n margin-left: calc(env(safe-area-inset-left) + 10px);\n }\n\n &-item:last-child {\n margin-right: 10px;\n margin-right: calc(env(safe-area-inset-right) + 10px);\n }\n}\n\n.connection {\n display: flex;\n color: $color-danger;\n\n &:after {\n display: block;\n content: \"DISCONNECTED\";\n }\n\n .connected & { color: $color-success; }\n .connected &:after {\n display: block;\n content: \"CONNECTED\";\n }\n}\n\n.arm {\n color: $color-danger;\n\n &:after {\n content: 'DISARMED';\n display: block;\n }\n\n .armed & {color: $color-success; }\n .armed &:after {\n content: 'ARMED';\n display: block;\n }\n}\n\n.ping {\n margin-left: auto;\n\n i {\n -webkit-animation: ping-fade-out 2s forwards; /* Safari 4+ */\n -moz-animation: ping-fade-out 2s forwards; /* Fx 2+ */\n -o-animation: ping-fade-out 2s forwards; /* Opera 12+ */\n animation: ping-fade-out 2s forwards; /* IE 10+, Fx 29+ */\n }\n\n @-webkit-keyframes ping-fade-out {\n 0% { opacity: 1; }\n 100% { opacity: 0; }\n }\n}\n\n.acc-string {\n display: none;\n position: absolute;\n top: 60px;\n left: calc(50% - 50px - 10px);\n width: 100px;\n text-align: center;\n background-color: #272727;\n padding: 0 10px;\n border-radius: 10px;\n font-size: 9px;\n\n .connected & { display: block; }\n}\n\n.button-center {\n position: absolute;\n display: none;\n margin-top: 5px;\n border: none;\n background-color: $background-z1;\n color: $foreground-z1;\n padding: 10px;\n width: 140px;\n height: 40px;\n left: calc(50% - 70px);\n font-weight: 400;\n font-size: 15px;\n\n .armed & { display: block; }\n &-top { top: 10px; }\n &-bottom { bottom: 50px; }\n}\n\n#btn_connect { display: block; }\n.connected #btn_connect { display: none; }\n.connected #btn_disconnect { display: block; }\n.connected #btn_arm { display: block; }\n.armed #btn_arm { display: none; }\n\n#btn_connect, #btn_disconnect {\n text-shadow: 0 0 5px #c3c3c3, 0 0 10px #636363;\n}\n#btn_arm, #btn_disarm {\n color: red;\n text-shadow: 0 0 5px #c53f3f, 0 0 10px #c53f3f;\n}\n#btn_disarm{\n color: #00ff15;\n text-shadow: 0 0 5px #11b91f, 0 0 10px #297b30;\n}\n\n.joystick {\n position: absolute;\n width: 200px;\n height: 200px;\n top: calc(50% - 100px - 10px); /* 50% - half height - statusline height */\n /* border: 1px solid pink; */\n\n &-left { left: calc(25% - 100px); }\n &-right { left: calc(75% - 100px); }\n}\n\n\n.landscape-warning {\n display: none;\n position: absolute;\n z-index: 9999999;\n width: 100%;\n height: 100%;\n padding-top: 50%;\n background-color: $background-base;\n text-align: center;\n\n &-content {\n position: relative;\n top: -50px;\n }\n i { font-size: 5em; }\n h1 {\n font-size: 1em;\n margin: 10px;\n }\n button {\n border: none;\n background-color: $background-z1;\n color: $foreground-z1;\n padding: 10px;\n width: 140px;\n height: 40px;\n }\n\n .ignore-landscape-warning & { display: none !important; }\n}\n\n@media screen and (orientation:portrait) {\n .landscape-warning {\n display: block;\n }\n}\n\n.notification {\n background-color: $background-z2;\n color: $foreground-z2;\n overflow: hidden;\n display: flex;\n align-items: baseline;\n\n &-area {\n height: 100%;\n width: 100%;\n overflow: hidden;\n margin-left: 5px;\n margin-right: 5px;\n\n -webkit-animation: fade-in 0.5s linear; /* Safari 4+ */\n -moz-animation: fade-in 0.5s linear; /* Fx 2+ */\n -o-animation: fade-in 0.5s linear; /* Opera 12+ */\n animation: fade-in 0.5s linear; /* IE 10+, Fx 29+ */\n }\n\n &-content {\n margin-left: 5px;\n margin-right: 5px;\n width: 100%;\n overflow: hidden;\n }\n\n i {\n margin-left: 5px;\n margin-right: 5px;\n }\n\n i.alert { color: $color-danger; }\n i.info { color: $color-info; }\n i.success { color: $color-success; }\n i.warning { color: $color-warning; }\n\n p {\n width: max-content;\n -webkit-animation: scroll-text 5s linear; /* Safari 4+ */\n -moz-animation: scroll-text 5s linear; /* Fx 2+ */\n -o-animation: scroll-text 5s linear; /* Opera 12+ */\n animation: scroll-text 5s linear; /* IE 10+, Fx 29+ */\n }\n\n @-webkit-keyframes scroll-text {\n 0% { margin-left: 100%; }\n 100% { margin-left: -100%; }\n }\n\n @-webkit-keyframes fade-in {\n 0% { opacity: 1; }\n 100% { opacity: 0; }\n }\n}\n"]} \ No newline at end of file
diff --git a/styles.27f55dac.css b/styles.6ffd6063.css
index d521634..f16db64 100644
--- a/styles.27f55dac.css
+++ b/styles.6ffd6063.css
@@ -2,5 +2,5 @@
* Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:block;src:url(/hoverbit-ble/fa-brands-400.61a02662.eot);src:url(/hoverbit-ble/fa-brands-400.61a02662.eot?#iefix) format("embedded-opentype"),url(/hoverbit-ble/fa-brands-400.0a2f2d3f.woff2) format("woff2"),url(/hoverbit-ble/fa-brands-400.abaa6551.woff) format("woff"),url(/hoverbit-ble/fa-brands-400.a43d027d.ttf) format("truetype"),url(/hoverbit-ble/fa-brands-400.529a9178.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:block;src:url(/hoverbit-ble/fa-regular-400.b26d94f4.eot);src:url(/hoverbit-ble/fa-regular-400.b26d94f4.eot?#iefix) format("embedded-opentype"),url(/hoverbit-ble/fa-regular-400.12e902ff.woff2) format("woff2"),url(/hoverbit-ble/fa-regular-400.779979e6.woff) format("woff"),url(/hoverbit-ble/fa-regular-400.d59f1e49.ttf) format("truetype"),url(/hoverbit-ble/fa-regular-400.4fc407aa.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:block;src:url(/hoverbit-ble/fa-solid-900.6c3fc37b.eot);src:url(/hoverbit-ble/fa-solid-900.6c3fc37b.eot?#iefix) format("embedded-opentype"),url(/hoverbit-ble/fa-solid-900.be8a4f74.woff2) format("woff2"),url(/hoverbit-ble/fa-solid-900.50887a69.woff) format("woff"),url(/hoverbit-ble/fa-solid-900.f6ec8168.ttf) format("truetype"),url(/hoverbit-ble/fa-solid-900.26506ae2.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}
-body,html{margin:0;padding:0;font-family:monospace;overflow:hidden;font-family:Kufam,Courier new,"monospace"}body{background-color:#454545;color:#9c9c9c}.app-info{position:absolute;top:15px;left:10px;left:max(env(safe-area-inset-left,10px),10px)}.app-info h1{font-size:14px;margin:0;color:#9c9c9c}.app-info .version{display:block;font-size:9px}.statusline{position:absolute;display:flex;bottom:0;left:0;height:40px;width:100%;font-size:12px;margin:0;align-items:center;background-color:#333}.statusline i{font-size:14px;margin-right:5px}.statusline-item{display:none;align-items:flex-start;margin-left:5px;margin-right:5px;font-size:13px;color:#b5b5b5}.connected .statusline-item{display:flex}.statusline-item:first-child{margin-left:calc(env(safe-area-inset-left) + 10px)}.statusline-item:last-child{margin-right:calc(env(safe-area-inset-right) + 10px)}.connection{display:flex;color:#c32222}.connection:after{display:block;content:"DISCONNECTED"}.connected .connection{color:green}.connected .connection:after{display:block;content:"CONNECTED"}.arm{color:#c32222}.arm:after{content:"DISARMED";display:block}.armed .arm{color:green}.armed .arm:after{content:"ARMED";display:block}.ping{margin-left:auto}.ping i{-webkit-animation:ping-fade-out 2s forwards;-moz-animation:ping-fade-out 2s forwards;-o-animation:ping-fade-out 2s forwards;animation:ping-fade-out 2s forwards}@-webkit-keyframes ping-fade-out{0%{opacity:1}to{opacity:0}}.acc-string{display:none;position:absolute;top:60px;left:calc(50% - 60px);width:100px;text-align:center;background-color:#272727;padding:0 10px;border-radius:10px;font-size:9px}.connected .acc-string{display:block}.button-center{position:absolute;display:none;margin-top:5px;border:none;background-color:#333;color:#b5b5b5;padding:10px;width:140px;height:40px;left:calc(50% - 70px);font-weight:400;font-size:15px}.armed .button-center{display:block}.button-center-top{top:10px}.button-center-bottom{bottom:50px}#btn_connect{display:block}.connected #btn_connect{display:none}.connected #btn_arm,.connected #btn_disconnect{display:block}.armed #btn_arm{display:none}#btn_connect,#btn_disconnect{text-shadow:0 0 5px #c3c3c3,0 0 10px #636363}#btn_arm,#btn_disarm{color:red;text-shadow:0 0 5px #c53f3f,0 0 10px #c53f3f}#btn_disarm{color:#00ff15;text-shadow:0 0 5px #11b91f,0 0 10px #297b30}.joystick{position:absolute;width:200px;height:200px;top:calc(50% - 110px)}.joystick-left{left:calc(25% - 100px)}.joystick-right{left:calc(75% - 100px)}.landscape-warning{display:none;position:absolute;z-index:9999999;width:100%;height:100%;padding-top:50%;background-color:#454545;text-align:center}.landscape-warning-content{position:relative;top:-50px}.landscape-warning i{font-size:5em}.landscape-warning h1{font-size:1em;margin:10px}.landscape-warning button{border:none;background-color:#333;color:#b5b5b5;padding:10px;width:140px;height:40px}.ignore-landscape-warning .landscape-warning{display:none!important}@media screen and (orientation:portrait){.landscape-warning{display:block}}.notification{background-color:#252525;color:#b5b5b5;overflow:hidden;display:flex;align-items:baseline}.notification-area{height:100%;-webkit-animation:fade-in .5s linear;-moz-animation:fade-in .5s linear;-o-animation:fade-in .5s linear;animation:fade-in .5s linear}.notification-area,.notification-content{width:100%;overflow:hidden;margin-left:5px;margin-right:5px}.notification i{margin-left:5px;margin-right:5px}.notification i.alert{color:#c32222}.notification i.info{color:#0374a8}.notification i.success{color:green}.notification i.warning{color:#d99b0b}.notification p{width:max-content;-webkit-animation:scroll-text 5s linear;-moz-animation:scroll-text 5s linear;-o-animation:scroll-text 5s linear;animation:scroll-text 5s linear}@-webkit-keyframes scroll-text{0%{margin-left:100%}to{margin-left:-100%}}@-webkit-keyframes fade-in{0%{opacity:1}to{opacity:0}}
-/*# sourceMappingURL=/hoverbit-ble/styles.27f55dac.css.map */ \ No newline at end of file
+body,html{margin:0;padding:0;font-family:monospace;overflow:hidden;font-family:Kufam,Courier new,"monospace"}body{background-color:#454545;color:#9c9c9c}.app-info{position:absolute;top:15px;left:10px;left:max(env(safe-area-inset-left,10px),10px)}.app-info h1{font-size:14px;margin:0;color:#9c9c9c}.app-info .version{display:block;font-size:9px}.statusline{position:absolute;display:flex;bottom:0;left:0;height:40px;width:100%;font-size:12px;margin:0;align-items:center;background-color:#333}.statusline i{font-size:14px;margin-right:5px}.statusline-item{display:none;align-items:flex-start;margin-left:5px;margin-right:5px;font-size:13px;color:#b5b5b5}.connected .statusline-item{display:flex}.statusline-item:first-child{margin-left:calc(env(safe-area-inset-left) + 10px)}.statusline-item:last-child{margin-right:calc(env(safe-area-inset-right) + 10px)}.connection{display:flex;color:#c32222}.connection:after{display:block;content:"DISCONNECTED"}.connected .connection{color:green}.connected .connection:after{display:block;content:"CONNECTED"}.arm{color:#c32222}.arm:after{content:"DISARMED";display:block}.armed .arm{color:green}.armed .arm:after{content:"ARMED";display:block}.ping{margin-left:auto}.ping i{-webkit-animation:ping-fade-out 2s forwards;-moz-animation:ping-fade-out 2s forwards;-o-animation:ping-fade-out 2s forwards;animation:ping-fade-out 2s forwards}@-webkit-keyframes ping-fade-out{0%{opacity:1}to{opacity:0}}.acc-string{display:none;position:absolute;top:60px;left:calc(50% - 60px);width:100px;text-align:center;background-color:#272727;padding:0 10px;border-radius:10px;font-size:9px}.connected .acc-string{display:block}button:hover{filter:brightness(80%)}button:active{filter:brightness(70%)}.button-center{position:absolute;display:none;margin-top:5px;border:none;background-color:#333;color:#b5b5b5;padding:10px;width:140px;height:40px;left:calc(50% - 70px);font-weight:400;font-size:15px}.armed .button-center{display:block}.button-center-top{top:10px}.button-center-bottom{bottom:50px}#btn_connect{display:block}.connected #btn_connect{display:none}.connected #btn_arm,.connected #btn_disconnect{display:block}.armed #btn_arm{display:none}#btn_connect,#btn_disconnect{text-shadow:0 0 5px #c3c3c3,0 0 10px #636363}#btn_arm,#btn_disarm{color:red;text-shadow:0 0 5px #c53f3f,0 0 10px #c53f3f}#btn_disarm{color:#00ff15;text-shadow:0 0 5px #11b91f,0 0 10px #297b30}.joystick{position:absolute;width:200px;height:200px;top:calc(50% - 110px)}.joystick-left{left:calc(25% - 100px)}.joystick-right{left:calc(75% - 100px)}.landscape-warning{display:none;position:absolute;z-index:9999999;width:100%;height:100%;padding-top:50%;background-color:#454545;text-align:center}.landscape-warning-content{position:relative;top:-50px}.landscape-warning i{font-size:5em}.landscape-warning h1{font-size:1em;margin:10px}.landscape-warning button{border:none;background-color:#333;color:#b5b5b5;padding:10px;width:140px;height:40px}.ignore-landscape-warning .landscape-warning{display:none!important}@media screen and (orientation:portrait){.landscape-warning{display:block}}.notification{background-color:#252525;color:#b5b5b5;overflow:hidden;display:flex;align-items:baseline}.notification-area{height:100%;-webkit-animation:fade-in .5s linear;-moz-animation:fade-in .5s linear;-o-animation:fade-in .5s linear;animation:fade-in .5s linear}.notification-area,.notification-content{width:100%;overflow:hidden;margin-left:5px;margin-right:5px}.notification i{margin-left:5px;margin-right:5px}.notification i.alert{color:#c32222}.notification i.info{color:#0374a8}.notification i.success{color:green}.notification i.warning{color:#d99b0b}.notification p{width:max-content;-webkit-animation:scroll-text 5s linear;-moz-animation:scroll-text 5s linear;-o-animation:scroll-text 5s linear;animation:scroll-text 5s linear}@-webkit-keyframes scroll-text{0%{margin-left:100%}to{margin-left:-100%}}@-webkit-keyframes fade-in{0%{opacity:1}to{opacity:0}}
+/*# sourceMappingURL=/hoverbit-ble/styles.6ffd6063.css.map */ \ No newline at end of file
diff --git a/styles.6ffd6063.css.map b/styles.6ffd6063.css.map
new file mode 100644
index 0000000..849ba2b
--- /dev/null
+++ b/styles.6ffd6063.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["all.css","scss/styles.scss"],"names":[],"mappings":"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","file":"styles.6ffd6063.css","sourceRoot":"../src","sourcesContent":["/*!\n * Font Awesome Free 5.15.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\n.fa,\n.fas,\n.far,\n.fal,\n.fad,\n.fab {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n display: inline-block;\n font-style: normal;\n font-variant: normal;\n text-rendering: auto;\n line-height: 1; }\n\n.fa-lg {\n font-size: 1.33333em;\n line-height: 0.75em;\n vertical-align: -.0667em; }\n\n.fa-xs {\n font-size: .75em; }\n\n.fa-sm {\n font-size: .875em; }\n\n.fa-1x {\n font-size: 1em; }\n\n.fa-2x {\n font-size: 2em; }\n\n.fa-3x {\n font-size: 3em; }\n\n.fa-4x {\n font-size: 4em; }\n\n.fa-5x {\n font-size: 5em; }\n\n.fa-6x {\n font-size: 6em; }\n\n.fa-7x {\n font-size: 7em; }\n\n.fa-8x {\n font-size: 8em; }\n\n.fa-9x {\n font-size: 9em; }\n\n.fa-10x {\n font-size: 10em; }\n\n.fa-fw {\n text-align: center;\n width: 1.25em; }\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0; }\n .fa-ul > li {\n position: relative; }\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit; }\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: .1em;\n padding: .2em .25em .15em; }\n\n.fa-pull-left {\n float: left; }\n\n.fa-pull-right {\n float: right; }\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: .3em; }\n\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: .3em; }\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear; }\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8); }\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg); }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg); } }\n\n.fa-rotate-90 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg); }\n\n.fa-rotate-180 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg); }\n\n.fa-rotate-270 {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg); }\n\n.fa-flip-horizontal {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1); }\n\n.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1); }\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1); }\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none; }\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n line-height: 2em;\n position: relative;\n vertical-align: middle;\n width: 2.5em; }\n\n.fa-stack-1x,\n.fa-stack-2x {\n left: 0;\n position: absolute;\n text-align: center;\n width: 100%; }\n\n.fa-stack-1x {\n line-height: inherit; }\n\n.fa-stack-2x {\n font-size: 2em; }\n\n.fa-inverse {\n color: #fff; }\n\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\nreaders do not read off random characters that represent icons */\n.fa-500px:before {\n content: \"\\f26e\"; }\n\n.fa-accessible-icon:before {\n content: \"\\f368\"; }\n\n.fa-accusoft:before {\n content: \"\\f369\"; }\n\n.fa-acquisitions-incorporated:before {\n content: \"\\f6af\"; }\n\n.fa-ad:before {\n content: \"\\f641\"; }\n\n.fa-address-book:before {\n content: \"\\f2b9\"; }\n\n.fa-address-card:before {\n content: \"\\f2bb\"; }\n\n.fa-adjust:before {\n content: \"\\f042\"; }\n\n.fa-adn:before {\n content: \"\\f170\"; }\n\n.fa-adversal:before {\n content: \"\\f36a\"; }\n\n.fa-affiliatetheme:before {\n content: \"\\f36b\"; }\n\n.fa-air-freshener:before {\n content: \"\\f5d0\"; }\n\n.fa-airbnb:before {\n content: \"\\f834\"; }\n\n.fa-algolia:before {\n content: \"\\f36c\"; }\n\n.fa-align-center:before {\n content: \"\\f037\"; }\n\n.fa-align-justify:before {\n content: \"\\f039\"; }\n\n.fa-align-left:before {\n content: \"\\f036\"; }\n\n.fa-align-right:before {\n content: \"\\f038\"; }\n\n.fa-alipay:before {\n content: \"\\f642\"; }\n\n.fa-allergies:before {\n content: \"\\f461\"; }\n\n.fa-amazon:before {\n content: \"\\f270\"; }\n\n.fa-amazon-pay:before {\n content: \"\\f42c\"; }\n\n.fa-ambulance:before {\n content: \"\\f0f9\"; }\n\n.fa-american-sign-language-interpreting:before {\n content: \"\\f2a3\"; }\n\n.fa-amilia:before {\n content: \"\\f36d\"; }\n\n.fa-anchor:before {\n content: \"\\f13d\"; }\n\n.fa-android:before {\n content: \"\\f17b\"; }\n\n.fa-angellist:before {\n content: \"\\f209\"; }\n\n.fa-angle-double-down:before {\n content: \"\\f103\"; }\n\n.fa-angle-double-left:before {\n content: \"\\f100\"; }\n\n.fa-angle-double-right:before {\n content: \"\\f101\"; }\n\n.fa-angle-double-up:before {\n content: \"\\f102\"; }\n\n.fa-angle-down:before {\n content: \"\\f107\"; }\n\n.fa-angle-left:before {\n content: \"\\f104\"; }\n\n.fa-angle-right:before {\n content: \"\\f105\"; }\n\n.fa-angle-up:before {\n content: \"\\f106\"; }\n\n.fa-angry:before {\n content: \"\\f556\"; }\n\n.fa-angrycreative:before {\n content: \"\\f36e\"; }\n\n.fa-angular:before {\n content: \"\\f420\"; }\n\n.fa-ankh:before {\n content: \"\\f644\"; }\n\n.fa-app-store:before {\n content: \"\\f36f\"; }\n\n.fa-app-store-ios:before {\n content: \"\\f370\"; }\n\n.fa-apper:before {\n content: \"\\f371\"; }\n\n.fa-apple:before {\n content: \"\\f179\"; }\n\n.fa-apple-alt:before {\n content: \"\\f5d1\"; }\n\n.fa-apple-pay:before {\n content: \"\\f415\"; }\n\n.fa-archive:before {\n content: \"\\f187\"; }\n\n.fa-archway:before {\n content: \"\\f557\"; }\n\n.fa-arrow-alt-circle-down:before {\n content: \"\\f358\"; }\n\n.fa-arrow-alt-circle-left:before {\n content: \"\\f359\"; }\n\n.fa-arrow-alt-circle-right:before {\n content: \"\\f35a\"; }\n\n.fa-arrow-alt-circle-up:before {\n content: \"\\f35b\"; }\n\n.fa-arrow-circle-down:before {\n content: \"\\f0ab\"; }\n\n.fa-arrow-circle-left:before {\n content: \"\\f0a8\"; }\n\n.fa-arrow-circle-right:before {\n content: \"\\f0a9\"; }\n\n.fa-arrow-circle-up:before {\n content: \"\\f0aa\"; }\n\n.fa-arrow-down:before {\n content: \"\\f063\"; }\n\n.fa-arrow-left:before {\n content: \"\\f060\"; }\n\n.fa-arrow-right:before {\n content: \"\\f061\"; }\n\n.fa-arrow-up:before {\n content: \"\\f062\"; }\n\n.fa-arrows-alt:before {\n content: \"\\f0b2\"; }\n\n.fa-arrows-alt-h:before {\n content: \"\\f337\"; }\n\n.fa-arrows-alt-v:before {\n content: \"\\f338\"; }\n\n.fa-artstation:before {\n content: \"\\f77a\"; }\n\n.fa-assistive-listening-systems:before {\n content: \"\\f2a2\"; }\n\n.fa-asterisk:before {\n content: \"\\f069\"; }\n\n.fa-asymmetrik:before {\n content: \"\\f372\"; }\n\n.fa-at:before {\n content: \"\\f1fa\"; }\n\n.fa-atlas:before {\n content: \"\\f558\"; }\n\n.fa-atlassian:before {\n content: \"\\f77b\"; }\n\n.fa-atom:before {\n content: \"\\f5d2\"; }\n\n.fa-audible:before {\n content: \"\\f373\"; }\n\n.fa-audio-description:before {\n content: \"\\f29e\"; }\n\n.fa-autoprefixer:before {\n content: \"\\f41c\"; }\n\n.fa-avianex:before {\n content: \"\\f374\"; }\n\n.fa-aviato:before {\n content: \"\\f421\"; }\n\n.fa-award:before {\n content: \"\\f559\"; }\n\n.fa-aws:before {\n content: \"\\f375\"; }\n\n.fa-baby:before {\n content: \"\\f77c\"; }\n\n.fa-baby-carriage:before {\n content: \"\\f77d\"; }\n\n.fa-backspace:before {\n content: \"\\f55a\"; }\n\n.fa-backward:before {\n content: \"\\f04a\"; }\n\n.fa-bacon:before {\n content: \"\\f7e5\"; }\n\n.fa-bacteria:before {\n content: \"\\e059\"; }\n\n.fa-bacterium:before {\n content: \"\\e05a\"; }\n\n.fa-bahai:before {\n content: \"\\f666\"; }\n\n.fa-balance-scale:before {\n content: \"\\f24e\"; }\n\n.fa-balance-scale-left:before {\n content: \"\\f515\"; }\n\n.fa-balance-scale-right:before {\n content: \"\\f516\"; }\n\n.fa-ban:before {\n content: \"\\f05e\"; }\n\n.fa-band-aid:before {\n content: \"\\f462\"; }\n\n.fa-bandcamp:before {\n content: \"\\f2d5\"; }\n\n.fa-barcode:before {\n content: \"\\f02a\"; }\n\n.fa-bars:before {\n content: \"\\f0c9\"; }\n\n.fa-baseball-ball:before {\n content: \"\\f433\"; }\n\n.fa-basketball-ball:before {\n content: \"\\f434\"; }\n\n.fa-bath:before {\n content: \"\\f2cd\"; }\n\n.fa-battery-empty:before {\n content: \"\\f244\"; }\n\n.fa-battery-full:before {\n content: \"\\f240\"; }\n\n.fa-battery-half:before {\n content: \"\\f242\"; }\n\n.fa-battery-quarter:before {\n content: \"\\f243\"; }\n\n.fa-battery-three-quarters:before {\n content: \"\\f241\"; }\n\n.fa-battle-net:before {\n content: \"\\f835\"; }\n\n.fa-bed:before {\n content: \"\\f236\"; }\n\n.fa-beer:before {\n content: \"\\f0fc\"; }\n\n.fa-behance:before {\n content: \"\\f1b4\"; }\n\n.fa-behance-square:before {\n content: \"\\f1b5\"; }\n\n.fa-bell:before {\n content: \"\\f0f3\"; }\n\n.fa-bell-slash:before {\n content: \"\\f1f6\"; }\n\n.fa-bezier-curve:before {\n content: \"\\f55b\"; }\n\n.fa-bible:before {\n content: \"\\f647\"; }\n\n.fa-bicycle:before {\n content: \"\\f206\"; }\n\n.fa-biking:before {\n content: \"\\f84a\"; }\n\n.fa-bimobject:before {\n content: \"\\f378\"; }\n\n.fa-binoculars:before {\n content: \"\\f1e5\"; }\n\n.fa-biohazard:before {\n content: \"\\f780\"; }\n\n.fa-birthday-cake:before {\n content: \"\\f1fd\"; }\n\n.fa-bitbucket:before {\n content: \"\\f171\"; }\n\n.fa-bitcoin:before {\n content: \"\\f379\"; }\n\n.fa-bity:before {\n content: \"\\f37a\"; }\n\n.fa-black-tie:before {\n content: \"\\f27e\"; }\n\n.fa-blackberry:before {\n content: \"\\f37b\"; }\n\n.fa-blender:before {\n content: \"\\f517\"; }\n\n.fa-blender-phone:before {\n content: \"\\f6b6\"; }\n\n.fa-blind:before {\n content: \"\\f29d\"; }\n\n.fa-blog:before {\n content: \"\\f781\"; }\n\n.fa-blogger:before {\n content: \"\\f37c\"; }\n\n.fa-blogger-b:before {\n content: \"\\f37d\"; }\n\n.fa-bluetooth:before {\n content: \"\\f293\"; }\n\n.fa-bluetooth-b:before {\n content: \"\\f294\"; }\n\n.fa-bold:before {\n content: \"\\f032\"; }\n\n.fa-bolt:before {\n content: \"\\f0e7\"; }\n\n.fa-bomb:before {\n content: \"\\f1e2\"; }\n\n.fa-bone:before {\n content: \"\\f5d7\"; }\n\n.fa-bong:before {\n content: \"\\f55c\"; }\n\n.fa-book:before {\n content: \"\\f02d\"; }\n\n.fa-book-dead:before {\n content: \"\\f6b7\"; }\n\n.fa-book-medical:before {\n content: \"\\f7e6\"; }\n\n.fa-book-open:before {\n content: \"\\f518\"; }\n\n.fa-book-reader:before {\n content: \"\\f5da\"; }\n\n.fa-bookmark:before {\n content: \"\\f02e\"; }\n\n.fa-bootstrap:before {\n content: \"\\f836\"; }\n\n.fa-border-all:before {\n content: \"\\f84c\"; }\n\n.fa-border-none:before {\n content: \"\\f850\"; }\n\n.fa-border-style:before {\n content: \"\\f853\"; }\n\n.fa-bowling-ball:before {\n content: \"\\f436\"; }\n\n.fa-box:before {\n content: \"\\f466\"; }\n\n.fa-box-open:before {\n content: \"\\f49e\"; }\n\n.fa-box-tissue:before {\n content: \"\\e05b\"; }\n\n.fa-boxes:before {\n content: \"\\f468\"; }\n\n.fa-braille:before {\n content: \"\\f2a1\"; }\n\n.fa-brain:before {\n content: \"\\f5dc\"; }\n\n.fa-bread-slice:before {\n content: \"\\f7ec\"; }\n\n.fa-briefcase:before {\n content: \"\\f0b1\"; }\n\n.fa-briefcase-medical:before {\n content: \"\\f469\"; }\n\n.fa-broadcast-tower:before {\n content: \"\\f519\"; }\n\n.fa-broom:before {\n content: \"\\f51a\"; }\n\n.fa-brush:before {\n content: \"\\f55d\"; }\n\n.fa-btc:before {\n content: \"\\f15a\"; }\n\n.fa-buffer:before {\n content: \"\\f837\"; }\n\n.fa-bug:before {\n content: \"\\f188\"; }\n\n.fa-building:before {\n content: \"\\f1ad\"; }\n\n.fa-bullhorn:before {\n content: \"\\f0a1\"; }\n\n.fa-bullseye:before {\n content: \"\\f140\"; }\n\n.fa-burn:before {\n content: \"\\f46a\"; }\n\n.fa-buromobelexperte:before {\n content: \"\\f37f\"; }\n\n.fa-bus:before {\n content: \"\\f207\"; }\n\n.fa-bus-alt:before {\n content: \"\\f55e\"; }\n\n.fa-business-time:before {\n content: \"\\f64a\"; }\n\n.fa-buy-n-large:before {\n content: \"\\f8a6\"; }\n\n.fa-buysellads:before {\n content: \"\\f20d\"; }\n\n.fa-calculator:before {\n content: \"\\f1ec\"; }\n\n.fa-calendar:before {\n content: \"\\f133\"; }\n\n.fa-calendar-alt:before {\n content: \"\\f073\"; }\n\n.fa-calendar-check:before {\n content: \"\\f274\"; }\n\n.fa-calendar-day:before {\n content: \"\\f783\"; }\n\n.fa-calendar-minus:before {\n content: \"\\f272\"; }\n\n.fa-calendar-plus:before {\n content: \"\\f271\"; }\n\n.fa-calendar-times:before {\n content: \"\\f273\"; }\n\n.fa-calendar-week:before {\n content: \"\\f784\"; }\n\n.fa-camera:before {\n content: \"\\f030\"; }\n\n.fa-camera-retro:before {\n content: \"\\f083\"; }\n\n.fa-campground:before {\n content: \"\\f6bb\"; }\n\n.fa-canadian-maple-leaf:before {\n content: \"\\f785\"; }\n\n.fa-candy-cane:before {\n content: \"\\f786\"; }\n\n.fa-cannabis:before {\n content: \"\\f55f\"; }\n\n.fa-capsules:before {\n content: \"\\f46b\"; }\n\n.fa-car:before {\n content: \"\\f1b9\"; }\n\n.fa-car-alt:before {\n content: \"\\f5de\"; }\n\n.fa-car-battery:before {\n content: \"\\f5df\"; }\n\n.fa-car-crash:before {\n content: \"\\f5e1\"; }\n\n.fa-car-side:before {\n content: \"\\f5e4\"; }\n\n.fa-caravan:before {\n content: \"\\f8ff\"; }\n\n.fa-caret-down:before {\n content: \"\\f0d7\"; }\n\n.fa-caret-left:before {\n content: \"\\f0d9\"; }\n\n.fa-caret-right:before {\n content: \"\\f0da\"; }\n\n.fa-caret-square-down:before {\n content: \"\\f150\"; }\n\n.fa-caret-square-left:before {\n content: \"\\f191\"; }\n\n.fa-caret-square-right:before {\n content: \"\\f152\"; }\n\n.fa-caret-square-up:before {\n content: \"\\f151\"; }\n\n.fa-caret-up:before {\n content: \"\\f0d8\"; }\n\n.fa-carrot:before {\n content: \"\\f787\"; }\n\n.fa-cart-arrow-down:before {\n content: \"\\f218\"; }\n\n.fa-cart-plus:before {\n content: \"\\f217\"; }\n\n.fa-cash-register:before {\n content: \"\\f788\"; }\n\n.fa-cat:before {\n content: \"\\f6be\"; }\n\n.fa-cc-amazon-pay:before {\n content: \"\\f42d\"; }\n\n.fa-cc-amex:before {\n content: \"\\f1f3\"; }\n\n.fa-cc-apple-pay:before {\n content: \"\\f416\"; }\n\n.fa-cc-diners-club:before {\n content: \"\\f24c\"; }\n\n.fa-cc-discover:before {\n content: \"\\f1f2\"; }\n\n.fa-cc-jcb:before {\n content: \"\\f24b\"; }\n\n.fa-cc-mastercard:before {\n content: \"\\f1f1\"; }\n\n.fa-cc-paypal:before {\n content: \"\\f1f4\"; }\n\n.fa-cc-stripe:before {\n content: \"\\f1f5\"; }\n\n.fa-cc-visa:before {\n content: \"\\f1f0\"; }\n\n.fa-centercode:before {\n content: \"\\f380\"; }\n\n.fa-centos:before {\n content: \"\\f789\"; }\n\n.fa-certificate:before {\n content: \"\\f0a3\"; }\n\n.fa-chair:before {\n content: \"\\f6c0\"; }\n\n.fa-chalkboard:before {\n content: \"\\f51b\"; }\n\n.fa-chalkboard-teacher:before {\n content: \"\\f51c\"; }\n\n.fa-charging-station:before {\n content: \"\\f5e7\"; }\n\n.fa-chart-area:before {\n content: \"\\f1fe\"; }\n\n.fa-chart-bar:before {\n content: \"\\f080\"; }\n\n.fa-chart-line:before {\n content: \"\\f201\"; }\n\n.fa-chart-pie:before {\n content: \"\\f200\"; }\n\n.fa-check:before {\n content: \"\\f00c\"; }\n\n.fa-check-circle:before {\n content: \"\\f058\"; }\n\n.fa-check-double:before {\n content: \"\\f560\"; }\n\n.fa-check-square:before {\n content: \"\\f14a\"; }\n\n.fa-cheese:before {\n content: \"\\f7ef\"; }\n\n.fa-chess:before {\n content: \"\\f439\"; }\n\n.fa-chess-bishop:before {\n content: \"\\f43a\"; }\n\n.fa-chess-board:before {\n content: \"\\f43c\"; }\n\n.fa-chess-king:before {\n content: \"\\f43f\"; }\n\n.fa-chess-knight:before {\n content: \"\\f441\"; }\n\n.fa-chess-pawn:before {\n content: \"\\f443\"; }\n\n.fa-chess-queen:before {\n content: \"\\f445\"; }\n\n.fa-chess-rook:before {\n content: \"\\f447\"; }\n\n.fa-chevron-circle-down:before {\n content: \"\\f13a\"; }\n\n.fa-chevron-circle-left:before {\n content: \"\\f137\"; }\n\n.fa-chevron-circle-right:before {\n content: \"\\f138\"; }\n\n.fa-chevron-circle-up:before {\n content: \"\\f139\"; }\n\n.fa-chevron-down:before {\n content: \"\\f078\"; }\n\n.fa-chevron-left:before {\n content: \"\\f053\"; }\n\n.fa-chevron-right:before {\n content: \"\\f054\"; }\n\n.fa-chevron-up:before {\n content: \"\\f077\"; }\n\n.fa-child:before {\n content: \"\\f1ae\"; }\n\n.fa-chrome:before {\n content: \"\\f268\"; }\n\n.fa-chromecast:before {\n content: \"\\f838\"; }\n\n.fa-church:before {\n content: \"\\f51d\"; }\n\n.fa-circle:before {\n content: \"\\f111\"; }\n\n.fa-circle-notch:before {\n content: \"\\f1ce\"; }\n\n.fa-city:before {\n content: \"\\f64f\"; }\n\n.fa-clinic-medical:before {\n content: \"\\f7f2\"; }\n\n.fa-clipboard:before {\n content: \"\\f328\"; }\n\n.fa-clipboard-check:before {\n content: \"\\f46c\"; }\n\n.fa-clipboard-list:before {\n content: \"\\f46d\"; }\n\n.fa-clock:before {\n content: \"\\f017\"; }\n\n.fa-clone:before {\n content: \"\\f24d\"; }\n\n.fa-closed-captioning:before {\n content: \"\\f20a\"; }\n\n.fa-cloud:before {\n content: \"\\f0c2\"; }\n\n.fa-cloud-download-alt:before {\n content: \"\\f381\"; }\n\n.fa-cloud-meatball:before {\n content: \"\\f73b\"; }\n\n.fa-cloud-moon:before {\n content: \"\\f6c3\"; }\n\n.fa-cloud-moon-rain:before {\n content: \"\\f73c\"; }\n\n.fa-cloud-rain:before {\n content: \"\\f73d\"; }\n\n.fa-cloud-showers-heavy:before {\n content: \"\\f740\"; }\n\n.fa-cloud-sun:before {\n content: \"\\f6c4\"; }\n\n.fa-cloud-sun-rain:before {\n content: \"\\f743\"; }\n\n.fa-cloud-upload-alt:before {\n content: \"\\f382\"; }\n\n.fa-cloudflare:before {\n content: \"\\e07d\"; }\n\n.fa-cloudscale:before {\n content: \"\\f383\"; }\n\n.fa-cloudsmith:before {\n content: \"\\f384\"; }\n\n.fa-cloudversify:before {\n content: \"\\f385\"; }\n\n.fa-cocktail:before {\n content: \"\\f561\"; }\n\n.fa-code:before {\n content: \"\\f121\"; }\n\n.fa-code-branch:before {\n content: \"\\f126\"; }\n\n.fa-codepen:before {\n content: \"\\f1cb\"; }\n\n.fa-codiepie:before {\n content: \"\\f284\"; }\n\n.fa-coffee:before {\n content: \"\\f0f4\"; }\n\n.fa-cog:before {\n content: \"\\f013\"; }\n\n.fa-cogs:before {\n content: \"\\f085\"; }\n\n.fa-coins:before {\n content: \"\\f51e\"; }\n\n.fa-columns:before {\n content: \"\\f0db\"; }\n\n.fa-comment:before {\n content: \"\\f075\"; }\n\n.fa-comment-alt:before {\n content: \"\\f27a\"; }\n\n.fa-comment-dollar:before {\n content: \"\\f651\"; }\n\n.fa-comment-dots:before {\n content: \"\\f4ad\"; }\n\n.fa-comment-medical:before {\n content: \"\\f7f5\"; }\n\n.fa-comment-slash:before {\n content: \"\\f4b3\"; }\n\n.fa-comments:before {\n content: \"\\f086\"; }\n\n.fa-comments-dollar:before {\n content: \"\\f653\"; }\n\n.fa-compact-disc:before {\n content: \"\\f51f\"; }\n\n.fa-compass:before {\n content: \"\\f14e\"; }\n\n.fa-compress:before {\n content: \"\\f066\"; }\n\n.fa-compress-alt:before {\n content: \"\\f422\"; }\n\n.fa-compress-arrows-alt:before {\n content: \"\\f78c\"; }\n\n.fa-concierge-bell:before {\n content: \"\\f562\"; }\n\n.fa-confluence:before {\n content: \"\\f78d\"; }\n\n.fa-connectdevelop:before {\n content: \"\\f20e\"; }\n\n.fa-contao:before {\n content: \"\\f26d\"; }\n\n.fa-cookie:before {\n content: \"\\f563\"; }\n\n.fa-cookie-bite:before {\n content: \"\\f564\"; }\n\n.fa-copy:before {\n content: \"\\f0c5\"; }\n\n.fa-copyright:before {\n content: \"\\f1f9\"; }\n\n.fa-cotton-bureau:before {\n content: \"\\f89e\"; }\n\n.fa-couch:before {\n content: \"\\f4b8\"; }\n\n.fa-cpanel:before {\n content: \"\\f388\"; }\n\n.fa-creative-commons:before {\n content: \"\\f25e\"; }\n\n.fa-creative-commons-by:before {\n content: \"\\f4e7\"; }\n\n.fa-creative-commons-nc:before {\n content: \"\\f4e8\"; }\n\n.fa-creative-commons-nc-eu:before {\n content: \"\\f4e9\"; }\n\n.fa-creative-commons-nc-jp:before {\n content: \"\\f4ea\"; }\n\n.fa-creative-commons-nd:before {\n content: \"\\f4eb\"; }\n\n.fa-creative-commons-pd:before {\n content: \"\\f4ec\"; }\n\n.fa-creative-commons-pd-alt:before {\n content: \"\\f4ed\"; }\n\n.fa-creative-commons-remix:before {\n content: \"\\f4ee\"; }\n\n.fa-creative-commons-sa:before {\n content: \"\\f4ef\"; }\n\n.fa-creative-commons-sampling:before {\n content: \"\\f4f0\"; }\n\n.fa-creative-commons-sampling-plus:before {\n content: \"\\f4f1\"; }\n\n.fa-creative-commons-share:before {\n content: \"\\f4f2\"; }\n\n.fa-creative-commons-zero:before {\n content: \"\\f4f3\"; }\n\n.fa-credit-card:before {\n content: \"\\f09d\"; }\n\n.fa-critical-role:before {\n content: \"\\f6c9\"; }\n\n.fa-crop:before {\n content: \"\\f125\"; }\n\n.fa-crop-alt:before {\n content: \"\\f565\"; }\n\n.fa-cross:before {\n content: \"\\f654\"; }\n\n.fa-crosshairs:before {\n content: \"\\f05b\"; }\n\n.fa-crow:before {\n content: \"\\f520\"; }\n\n.fa-crown:before {\n content: \"\\f521\"; }\n\n.fa-crutch:before {\n content: \"\\f7f7\"; }\n\n.fa-css3:before {\n content: \"\\f13c\"; }\n\n.fa-css3-alt:before {\n content: \"\\f38b\"; }\n\n.fa-cube:before {\n content: \"\\f1b2\"; }\n\n.fa-cubes:before {\n content: \"\\f1b3\"; }\n\n.fa-cut:before {\n content: \"\\f0c4\"; }\n\n.fa-cuttlefish:before {\n content: \"\\f38c\"; }\n\n.fa-d-and-d:before {\n content: \"\\f38d\"; }\n\n.fa-d-and-d-beyond:before {\n content: \"\\f6ca\"; }\n\n.fa-dailymotion:before {\n content: \"\\e052\"; }\n\n.fa-dashcube:before {\n content: \"\\f210\"; }\n\n.fa-database:before {\n content: \"\\f1c0\"; }\n\n.fa-deaf:before {\n content: \"\\f2a4\"; }\n\n.fa-deezer:before {\n content: \"\\e077\"; }\n\n.fa-delicious:before {\n content: \"\\f1a5\"; }\n\n.fa-democrat:before {\n content: \"\\f747\"; }\n\n.fa-deploydog:before {\n content: \"\\f38e\"; }\n\n.fa-deskpro:before {\n content: \"\\f38f\"; }\n\n.fa-desktop:before {\n content: \"\\f108\"; }\n\n.fa-dev:before {\n content: \"\\f6cc\"; }\n\n.fa-deviantart:before {\n content: \"\\f1bd\"; }\n\n.fa-dharmachakra:before {\n content: \"\\f655\"; }\n\n.fa-dhl:before {\n content: \"\\f790\"; }\n\n.fa-diagnoses:before {\n content: \"\\f470\"; }\n\n.fa-diaspora:before {\n content: \"\\f791\"; }\n\n.fa-dice:before {\n content: \"\\f522\"; }\n\n.fa-dice-d20:before {\n content: \"\\f6cf\"; }\n\n.fa-dice-d6:before {\n content: \"\\f6d1\"; }\n\n.fa-dice-five:before {\n content: \"\\f523\"; }\n\n.fa-dice-four:before {\n content: \"\\f524\"; }\n\n.fa-dice-one:before {\n content: \"\\f525\"; }\n\n.fa-dice-six:before {\n content: \"\\f526\"; }\n\n.fa-dice-three:before {\n content: \"\\f527\"; }\n\n.fa-dice-two:before {\n content: \"\\f528\"; }\n\n.fa-digg:before {\n content: \"\\f1a6\"; }\n\n.fa-digital-ocean:before {\n content: \"\\f391\"; }\n\n.fa-digital-tachograph:before {\n content: \"\\f566\"; }\n\n.fa-directions:before {\n content: \"\\f5eb\"; }\n\n.fa-discord:before {\n content: \"\\f392\"; }\n\n.fa-discourse:before {\n content: \"\\f393\"; }\n\n.fa-disease:before {\n content: \"\\f7fa\"; }\n\n.fa-divide:before {\n content: \"\\f529\"; }\n\n.fa-dizzy:before {\n content: \"\\f567\"; }\n\n.fa-dna:before {\n content: \"\\f471\"; }\n\n.fa-dochub:before {\n content: \"\\f394\"; }\n\n.fa-docker:before {\n content: \"\\f395\"; }\n\n.fa-dog:before {\n content: \"\\f6d3\"; }\n\n.fa-dollar-sign:before {\n content: \"\\f155\"; }\n\n.fa-dolly:before {\n content: \"\\f472\"; }\n\n.fa-dolly-flatbed:before {\n content: \"\\f474\"; }\n\n.fa-donate:before {\n content: \"\\f4b9\"; }\n\n.fa-door-closed:before {\n content: \"\\f52a\"; }\n\n.fa-door-open:before {\n content: \"\\f52b\"; }\n\n.fa-dot-circle:before {\n content: \"\\f192\"; }\n\n.fa-dove:before {\n content: \"\\f4ba\"; }\n\n.fa-download:before {\n content: \"\\f019\"; }\n\n.fa-draft2digital:before {\n content: \"\\f396\"; }\n\n.fa-drafting-compass:before {\n content: \"\\f568\"; }\n\n.fa-dragon:before {\n content: \"\\f6d5\"; }\n\n.fa-draw-polygon:before {\n content: \"\\f5ee\"; }\n\n.fa-dribbble:before {\n content: \"\\f17d\"; }\n\n.fa-dribbble-square:before {\n content: \"\\f397\"; }\n\n.fa-dropbox:before {\n content: \"\\f16b\"; }\n\n.fa-drum:before {\n content: \"\\f569\"; }\n\n.fa-drum-steelpan:before {\n content: \"\\f56a\"; }\n\n.fa-drumstick-bite:before {\n content: \"\\f6d7\"; }\n\n.fa-drupal:before {\n content: \"\\f1a9\"; }\n\n.fa-dumbbell:before {\n content: \"\\f44b\"; }\n\n.fa-dumpster:before {\n content: \"\\f793\"; }\n\n.fa-dumpster-fire:before {\n content: \"\\f794\"; }\n\n.fa-dungeon:before {\n content: \"\\f6d9\"; }\n\n.fa-dyalog:before {\n content: \"\\f399\"; }\n\n.fa-earlybirds:before {\n content: \"\\f39a\"; }\n\n.fa-ebay:before {\n content: \"\\f4f4\"; }\n\n.fa-edge:before {\n content: \"\\f282\"; }\n\n.fa-edge-legacy:before {\n content: \"\\e078\"; }\n\n.fa-edit:before {\n content: \"\\f044\"; }\n\n.fa-egg:before {\n content: \"\\f7fb\"; }\n\n.fa-eject:before {\n content: \"\\f052\"; }\n\n.fa-elementor:before {\n content: \"\\f430\"; }\n\n.fa-ellipsis-h:before {\n content: \"\\f141\"; }\n\n.fa-ellipsis-v:before {\n content: \"\\f142\"; }\n\n.fa-ello:before {\n content: \"\\f5f1\"; }\n\n.fa-ember:before {\n content: \"\\f423\"; }\n\n.fa-empire:before {\n content: \"\\f1d1\"; }\n\n.fa-envelope:before {\n content: \"\\f0e0\"; }\n\n.fa-envelope-open:before {\n content: \"\\f2b6\"; }\n\n.fa-envelope-open-text:before {\n content: \"\\f658\"; }\n\n.fa-envelope-square:before {\n content: \"\\f199\"; }\n\n.fa-envira:before {\n content: \"\\f299\"; }\n\n.fa-equals:before {\n content: \"\\f52c\"; }\n\n.fa-eraser:before {\n content: \"\\f12d\"; }\n\n.fa-erlang:before {\n content: \"\\f39d\"; }\n\n.fa-ethereum:before {\n content: \"\\f42e\"; }\n\n.fa-ethernet:before {\n content: \"\\f796\"; }\n\n.fa-etsy:before {\n content: \"\\f2d7\"; }\n\n.fa-euro-sign:before {\n content: \"\\f153\"; }\n\n.fa-evernote:before {\n content: \"\\f839\"; }\n\n.fa-exchange-alt:before {\n content: \"\\f362\"; }\n\n.fa-exclamation:before {\n content: \"\\f12a\"; }\n\n.fa-exclamation-circle:before {\n content: \"\\f06a\"; }\n\n.fa-exclamation-triangle:before {\n content: \"\\f071\"; }\n\n.fa-expand:before {\n content: \"\\f065\"; }\n\n.fa-expand-alt:before {\n content: \"\\f424\"; }\n\n.fa-expand-arrows-alt:before {\n content: \"\\f31e\"; }\n\n.fa-expeditedssl:before {\n content: \"\\f23e\"; }\n\n.fa-external-link-alt:before {\n content: \"\\f35d\"; }\n\n.fa-external-link-square-alt:before {\n content: \"\\f360\"; }\n\n.fa-eye:before {\n content: \"\\f06e\"; }\n\n.fa-eye-dropper:before {\n content: \"\\f1fb\"; }\n\n.fa-eye-slash:before {\n content: \"\\f070\"; }\n\n.fa-facebook:before {\n content: \"\\f09a\"; }\n\n.fa-facebook-f:before {\n content: \"\\f39e\"; }\n\n.fa-facebook-messenger:before {\n content: \"\\f39f\"; }\n\n.fa-facebook-square:before {\n content: \"\\f082\"; }\n\n.fa-fan:before {\n content: \"\\f863\"; }\n\n.fa-fantasy-flight-games:before {\n content: \"\\f6dc\"; }\n\n.fa-fast-backward:before {\n content: \"\\f049\"; }\n\n.fa-fast-forward:before {\n content: \"\\f050\"; }\n\n.fa-faucet:before {\n content: \"\\e005\"; }\n\n.fa-fax:before {\n content: \"\\f1ac\"; }\n\n.fa-feather:before {\n content: \"\\f52d\"; }\n\n.fa-feather-alt:before {\n content: \"\\f56b\"; }\n\n.fa-fedex:before {\n content: \"\\f797\"; }\n\n.fa-fedora:before {\n content: \"\\f798\"; }\n\n.fa-female:before {\n content: \"\\f182\"; }\n\n.fa-fighter-jet:before {\n content: \"\\f0fb\"; }\n\n.fa-figma:before {\n content: \"\\f799\"; }\n\n.fa-file:before {\n content: \"\\f15b\"; }\n\n.fa-file-alt:before {\n content: \"\\f15c\"; }\n\n.fa-file-archive:before {\n content: \"\\f1c6\"; }\n\n.fa-file-audio:before {\n content: \"\\f1c7\"; }\n\n.fa-file-code:before {\n content: \"\\f1c9\"; }\n\n.fa-file-contract:before {\n content: \"\\f56c\"; }\n\n.fa-file-csv:before {\n content: \"\\f6dd\"; }\n\n.fa-file-download:before {\n content: \"\\f56d\"; }\n\n.fa-file-excel:before {\n content: \"\\f1c3\"; }\n\n.fa-file-export:before {\n content: \"\\f56e\"; }\n\n.fa-file-image:before {\n content: \"\\f1c5\"; }\n\n.fa-file-import:before {\n content: \"\\f56f\"; }\n\n.fa-file-invoice:before {\n content: \"\\f570\"; }\n\n.fa-file-invoice-dollar:before {\n content: \"\\f571\"; }\n\n.fa-file-medical:before {\n content: \"\\f477\"; }\n\n.fa-file-medical-alt:before {\n content: \"\\f478\"; }\n\n.fa-file-pdf:before {\n content: \"\\f1c1\"; }\n\n.fa-file-powerpoint:before {\n content: \"\\f1c4\"; }\n\n.fa-file-prescription:before {\n content: \"\\f572\"; }\n\n.fa-file-signature:before {\n content: \"\\f573\"; }\n\n.fa-file-upload:before {\n content: \"\\f574\"; }\n\n.fa-file-video:before {\n content: \"\\f1c8\"; }\n\n.fa-file-word:before {\n content: \"\\f1c2\"; }\n\n.fa-fill:before {\n content: \"\\f575\"; }\n\n.fa-fill-drip:before {\n content: \"\\f576\"; }\n\n.fa-film:before {\n content: \"\\f008\"; }\n\n.fa-filter:before {\n content: \"\\f0b0\"; }\n\n.fa-fingerprint:before {\n content: \"\\f577\"; }\n\n.fa-fire:before {\n content: \"\\f06d\"; }\n\n.fa-fire-alt:before {\n content: \"\\f7e4\"; }\n\n.fa-fire-extinguisher:before {\n content: \"\\f134\"; }\n\n.fa-firefox:before {\n content: \"\\f269\"; }\n\n.fa-firefox-browser:before {\n content: \"\\e007\"; }\n\n.fa-first-aid:before {\n content: \"\\f479\"; }\n\n.fa-first-order:before {\n content: \"\\f2b0\"; }\n\n.fa-first-order-alt:before {\n content: \"\\f50a\"; }\n\n.fa-firstdraft:before {\n content: \"\\f3a1\"; }\n\n.fa-fish:before {\n content: \"\\f578\"; }\n\n.fa-fist-raised:before {\n content: \"\\f6de\"; }\n\n.fa-flag:before {\n content: \"\\f024\"; }\n\n.fa-flag-checkered:before {\n content: \"\\f11e\"; }\n\n.fa-flag-usa:before {\n content: \"\\f74d\"; }\n\n.fa-flask:before {\n content: \"\\f0c3\"; }\n\n.fa-flickr:before {\n content: \"\\f16e\"; }\n\n.fa-flipboard:before {\n content: \"\\f44d\"; }\n\n.fa-flushed:before {\n content: \"\\f579\"; }\n\n.fa-fly:before {\n content: \"\\f417\"; }\n\n.fa-folder:before {\n content: \"\\f07b\"; }\n\n.fa-folder-minus:before {\n content: \"\\f65d\"; }\n\n.fa-folder-open:before {\n content: \"\\f07c\"; }\n\n.fa-folder-plus:before {\n content: \"\\f65e\"; }\n\n.fa-font:before {\n content: \"\\f031\"; }\n\n.fa-font-awesome:before {\n content: \"\\f2b4\"; }\n\n.fa-font-awesome-alt:before {\n content: \"\\f35c\"; }\n\n.fa-font-awesome-flag:before {\n content: \"\\f425\"; }\n\n.fa-font-awesome-logo-full:before {\n content: \"\\f4e6\"; }\n\n.fa-fonticons:before {\n content: \"\\f280\"; }\n\n.fa-fonticons-fi:before {\n content: \"\\f3a2\"; }\n\n.fa-football-ball:before {\n content: \"\\f44e\"; }\n\n.fa-fort-awesome:before {\n content: \"\\f286\"; }\n\n.fa-fort-awesome-alt:before {\n content: \"\\f3a3\"; }\n\n.fa-forumbee:before {\n content: \"\\f211\"; }\n\n.fa-forward:before {\n content: \"\\f04e\"; }\n\n.fa-foursquare:before {\n content: \"\\f180\"; }\n\n.fa-free-code-camp:before {\n content: \"\\f2c5\"; }\n\n.fa-freebsd:before {\n content: \"\\f3a4\"; }\n\n.fa-frog:before {\n content: \"\\f52e\"; }\n\n.fa-frown:before {\n content: \"\\f119\"; }\n\n.fa-frown-open:before {\n content: \"\\f57a\"; }\n\n.fa-fulcrum:before {\n content: \"\\f50b\"; }\n\n.fa-funnel-dollar:before {\n content: \"\\f662\"; }\n\n.fa-futbol:before {\n content: \"\\f1e3\"; }\n\n.fa-galactic-republic:before {\n content: \"\\f50c\"; }\n\n.fa-galactic-senate:before {\n content: \"\\f50d\"; }\n\n.fa-gamepad:before {\n content: \"\\f11b\"; }\n\n.fa-gas-pump:before {\n content: \"\\f52f\"; }\n\n.fa-gavel:before {\n content: \"\\f0e3\"; }\n\n.fa-gem:before {\n content: \"\\f3a5\"; }\n\n.fa-genderless:before {\n content: \"\\f22d\"; }\n\n.fa-get-pocket:before {\n content: \"\\f265\"; }\n\n.fa-gg:before {\n content: \"\\f260\"; }\n\n.fa-gg-circle:before {\n content: \"\\f261\"; }\n\n.fa-ghost:before {\n content: \"\\f6e2\"; }\n\n.fa-gift:before {\n content: \"\\f06b\"; }\n\n.fa-gifts:before {\n content: \"\\f79c\"; }\n\n.fa-git:before {\n content: \"\\f1d3\"; }\n\n.fa-git-alt:before {\n content: \"\\f841\"; }\n\n.fa-git-square:before {\n content: \"\\f1d2\"; }\n\n.fa-github:before {\n content: \"\\f09b\"; }\n\n.fa-github-alt:before {\n content: \"\\f113\"; }\n\n.fa-github-square:before {\n content: \"\\f092\"; }\n\n.fa-gitkraken:before {\n content: \"\\f3a6\"; }\n\n.fa-gitlab:before {\n content: \"\\f296\"; }\n\n.fa-gitter:before {\n content: \"\\f426\"; }\n\n.fa-glass-cheers:before {\n content: \"\\f79f\"; }\n\n.fa-glass-martini:before {\n content: \"\\f000\"; }\n\n.fa-glass-martini-alt:before {\n content: \"\\f57b\"; }\n\n.fa-glass-whiskey:before {\n content: \"\\f7a0\"; }\n\n.fa-glasses:before {\n content: \"\\f530\"; }\n\n.fa-glide:before {\n content: \"\\f2a5\"; }\n\n.fa-glide-g:before {\n content: \"\\f2a6\"; }\n\n.fa-globe:before {\n content: \"\\f0ac\"; }\n\n.fa-globe-africa:before {\n content: \"\\f57c\"; }\n\n.fa-globe-americas:before {\n content: \"\\f57d\"; }\n\n.fa-globe-asia:before {\n content: \"\\f57e\"; }\n\n.fa-globe-europe:before {\n content: \"\\f7a2\"; }\n\n.fa-gofore:before {\n content: \"\\f3a7\"; }\n\n.fa-golf-ball:before {\n content: \"\\f450\"; }\n\n.fa-goodreads:before {\n content: \"\\f3a8\"; }\n\n.fa-goodreads-g:before {\n content: \"\\f3a9\"; }\n\n.fa-google:before {\n content: \"\\f1a0\"; }\n\n.fa-google-drive:before {\n content: \"\\f3aa\"; }\n\n.fa-google-pay:before {\n content: \"\\e079\"; }\n\n.fa-google-play:before {\n content: \"\\f3ab\"; }\n\n.fa-google-plus:before {\n content: \"\\f2b3\"; }\n\n.fa-google-plus-g:before {\n content: \"\\f0d5\"; }\n\n.fa-google-plus-square:before {\n content: \"\\f0d4\"; }\n\n.fa-google-wallet:before {\n content: \"\\f1ee\"; }\n\n.fa-gopuram:before {\n content: \"\\f664\"; }\n\n.fa-graduation-cap:before {\n content: \"\\f19d\"; }\n\n.fa-gratipay:before {\n content: \"\\f184\"; }\n\n.fa-grav:before {\n content: \"\\f2d6\"; }\n\n.fa-greater-than:before {\n content: \"\\f531\"; }\n\n.fa-greater-than-equal:before {\n content: \"\\f532\"; }\n\n.fa-grimace:before {\n content: \"\\f57f\"; }\n\n.fa-grin:before {\n content: \"\\f580\"; }\n\n.fa-grin-alt:before {\n content: \"\\f581\"; }\n\n.fa-grin-beam:before {\n content: \"\\f582\"; }\n\n.fa-grin-beam-sweat:before {\n content: \"\\f583\"; }\n\n.fa-grin-hearts:before {\n content: \"\\f584\"; }\n\n.fa-grin-squint:before {\n content: \"\\f585\"; }\n\n.fa-grin-squint-tears:before {\n content: \"\\f586\"; }\n\n.fa-grin-stars:before {\n content: \"\\f587\"; }\n\n.fa-grin-tears:before {\n content: \"\\f588\"; }\n\n.fa-grin-tongue:before {\n content: \"\\f589\"; }\n\n.fa-grin-tongue-squint:before {\n content: \"\\f58a\"; }\n\n.fa-grin-tongue-wink:before {\n content: \"\\f58b\"; }\n\n.fa-grin-wink:before {\n content: \"\\f58c\"; }\n\n.fa-grip-horizontal:before {\n content: \"\\f58d\"; }\n\n.fa-grip-lines:before {\n content: \"\\f7a4\"; }\n\n.fa-grip-lines-vertical:before {\n content: \"\\f7a5\"; }\n\n.fa-grip-vertical:before {\n content: \"\\f58e\"; }\n\n.fa-gripfire:before {\n content: \"\\f3ac\"; }\n\n.fa-grunt:before {\n content: \"\\f3ad\"; }\n\n.fa-guilded:before {\n content: \"\\e07e\"; }\n\n.fa-guitar:before {\n content: \"\\f7a6\"; }\n\n.fa-gulp:before {\n content: \"\\f3ae\"; }\n\n.fa-h-square:before {\n content: \"\\f0fd\"; }\n\n.fa-hacker-news:before {\n content: \"\\f1d4\"; }\n\n.fa-hacker-news-square:before {\n content: \"\\f3af\"; }\n\n.fa-hackerrank:before {\n content: \"\\f5f7\"; }\n\n.fa-hamburger:before {\n content: \"\\f805\"; }\n\n.fa-hammer:before {\n content: \"\\f6e3\"; }\n\n.fa-hamsa:before {\n content: \"\\f665\"; }\n\n.fa-hand-holding:before {\n content: \"\\f4bd\"; }\n\n.fa-hand-holding-heart:before {\n content: \"\\f4be\"; }\n\n.fa-hand-holding-medical:before {\n content: \"\\e05c\"; }\n\n.fa-hand-holding-usd:before {\n content: \"\\f4c0\"; }\n\n.fa-hand-holding-water:before {\n content: \"\\f4c1\"; }\n\n.fa-hand-lizard:before {\n content: \"\\f258\"; }\n\n.fa-hand-middle-finger:before {\n content: \"\\f806\"; }\n\n.fa-hand-paper:before {\n content: \"\\f256\"; }\n\n.fa-hand-peace:before {\n content: \"\\f25b\"; }\n\n.fa-hand-point-down:before {\n content: \"\\f0a7\"; }\n\n.fa-hand-point-left:before {\n content: \"\\f0a5\"; }\n\n.fa-hand-point-right:before {\n content: \"\\f0a4\"; }\n\n.fa-hand-point-up:before {\n content: \"\\f0a6\"; }\n\n.fa-hand-pointer:before {\n content: \"\\f25a\"; }\n\n.fa-hand-rock:before {\n content: \"\\f255\"; }\n\n.fa-hand-scissors:before {\n content: \"\\f257\"; }\n\n.fa-hand-sparkles:before {\n content: \"\\e05d\"; }\n\n.fa-hand-spock:before {\n content: \"\\f259\"; }\n\n.fa-hands:before {\n content: \"\\f4c2\"; }\n\n.fa-hands-helping:before {\n content: \"\\f4c4\"; }\n\n.fa-hands-wash:before {\n content: \"\\e05e\"; }\n\n.fa-handshake:before {\n content: \"\\f2b5\"; }\n\n.fa-handshake-alt-slash:before {\n content: \"\\e05f\"; }\n\n.fa-handshake-slash:before {\n content: \"\\e060\"; }\n\n.fa-hanukiah:before {\n content: \"\\f6e6\"; }\n\n.fa-hard-hat:before {\n content: \"\\f807\"; }\n\n.fa-hashtag:before {\n content: \"\\f292\"; }\n\n.fa-hat-cowboy:before {\n content: \"\\f8c0\"; }\n\n.fa-hat-cowboy-side:before {\n content: \"\\f8c1\"; }\n\n.fa-hat-wizard:before {\n content: \"\\f6e8\"; }\n\n.fa-hdd:before {\n content: \"\\f0a0\"; }\n\n.fa-head-side-cough:before {\n content: \"\\e061\"; }\n\n.fa-head-side-cough-slash:before {\n content: \"\\e062\"; }\n\n.fa-head-side-mask:before {\n content: \"\\e063\"; }\n\n.fa-head-side-virus:before {\n content: \"\\e064\"; }\n\n.fa-heading:before {\n content: \"\\f1dc\"; }\n\n.fa-headphones:before {\n content: \"\\f025\"; }\n\n.fa-headphones-alt:before {\n content: \"\\f58f\"; }\n\n.fa-headset:before {\n content: \"\\f590\"; }\n\n.fa-heart:before {\n content: \"\\f004\"; }\n\n.fa-heart-broken:before {\n content: \"\\f7a9\"; }\n\n.fa-heartbeat:before {\n content: \"\\f21e\"; }\n\n.fa-helicopter:before {\n content: \"\\f533\"; }\n\n.fa-highlighter:before {\n content: \"\\f591\"; }\n\n.fa-hiking:before {\n content: \"\\f6ec\"; }\n\n.fa-hippo:before {\n content: \"\\f6ed\"; }\n\n.fa-hips:before {\n content: \"\\f452\"; }\n\n.fa-hire-a-helper:before {\n content: \"\\f3b0\"; }\n\n.fa-history:before {\n content: \"\\f1da\"; }\n\n.fa-hive:before {\n content: \"\\e07f\"; }\n\n.fa-hockey-puck:before {\n content: \"\\f453\"; }\n\n.fa-holly-berry:before {\n content: \"\\f7aa\"; }\n\n.fa-home:before {\n content: \"\\f015\"; }\n\n.fa-hooli:before {\n content: \"\\f427\"; }\n\n.fa-hornbill:before {\n content: \"\\f592\"; }\n\n.fa-horse:before {\n content: \"\\f6f0\"; }\n\n.fa-horse-head:before {\n content: \"\\f7ab\"; }\n\n.fa-hospital:before {\n content: \"\\f0f8\"; }\n\n.fa-hospital-alt:before {\n content: \"\\f47d\"; }\n\n.fa-hospital-symbol:before {\n content: \"\\f47e\"; }\n\n.fa-hospital-user:before {\n content: \"\\f80d\"; }\n\n.fa-hot-tub:before {\n content: \"\\f593\"; }\n\n.fa-hotdog:before {\n content: \"\\f80f\"; }\n\n.fa-hotel:before {\n content: \"\\f594\"; }\n\n.fa-hotjar:before {\n content: \"\\f3b1\"; }\n\n.fa-hourglass:before {\n content: \"\\f254\"; }\n\n.fa-hourglass-end:before {\n content: \"\\f253\"; }\n\n.fa-hourglass-half:before {\n content: \"\\f252\"; }\n\n.fa-hourglass-start:before {\n content: \"\\f251\"; }\n\n.fa-house-damage:before {\n content: \"\\f6f1\"; }\n\n.fa-house-user:before {\n content: \"\\e065\"; }\n\n.fa-houzz:before {\n content: \"\\f27c\"; }\n\n.fa-hryvnia:before {\n content: \"\\f6f2\"; }\n\n.fa-html5:before {\n content: \"\\f13b\"; }\n\n.fa-hubspot:before {\n content: \"\\f3b2\"; }\n\n.fa-i-cursor:before {\n content: \"\\f246\"; }\n\n.fa-ice-cream:before {\n content: \"\\f810\"; }\n\n.fa-icicles:before {\n content: \"\\f7ad\"; }\n\n.fa-icons:before {\n content: \"\\f86d\"; }\n\n.fa-id-badge:before {\n content: \"\\f2c1\"; }\n\n.fa-id-card:before {\n content: \"\\f2c2\"; }\n\n.fa-id-card-alt:before {\n content: \"\\f47f\"; }\n\n.fa-ideal:before {\n content: \"\\e013\"; }\n\n.fa-igloo:before {\n content: \"\\f7ae\"; }\n\n.fa-image:before {\n content: \"\\f03e\"; }\n\n.fa-images:before {\n content: \"\\f302\"; }\n\n.fa-imdb:before {\n content: \"\\f2d8\"; }\n\n.fa-inbox:before {\n content: \"\\f01c\"; }\n\n.fa-indent:before {\n content: \"\\f03c\"; }\n\n.fa-industry:before {\n content: \"\\f275\"; }\n\n.fa-infinity:before {\n content: \"\\f534\"; }\n\n.fa-info:before {\n content: \"\\f129\"; }\n\n.fa-info-circle:before {\n content: \"\\f05a\"; }\n\n.fa-innosoft:before {\n content: \"\\e080\"; }\n\n.fa-instagram:before {\n content: \"\\f16d\"; }\n\n.fa-instagram-square:before {\n content: \"\\e055\"; }\n\n.fa-instalod:before {\n content: \"\\e081\"; }\n\n.fa-intercom:before {\n content: \"\\f7af\"; }\n\n.fa-internet-explorer:before {\n content: \"\\f26b\"; }\n\n.fa-invision:before {\n content: \"\\f7b0\"; }\n\n.fa-ioxhost:before {\n content: \"\\f208\"; }\n\n.fa-italic:before {\n content: \"\\f033\"; }\n\n.fa-itch-io:before {\n content: \"\\f83a\"; }\n\n.fa-itunes:before {\n content: \"\\f3b4\"; }\n\n.fa-itunes-note:before {\n content: \"\\f3b5\"; }\n\n.fa-java:before {\n content: \"\\f4e4\"; }\n\n.fa-jedi:before {\n content: \"\\f669\"; }\n\n.fa-jedi-order:before {\n content: \"\\f50e\"; }\n\n.fa-jenkins:before {\n content: \"\\f3b6\"; }\n\n.fa-jira:before {\n content: \"\\f7b1\"; }\n\n.fa-joget:before {\n content: \"\\f3b7\"; }\n\n.fa-joint:before {\n content: \"\\f595\"; }\n\n.fa-joomla:before {\n content: \"\\f1aa\"; }\n\n.fa-journal-whills:before {\n content: \"\\f66a\"; }\n\n.fa-js:before {\n content: \"\\f3b8\"; }\n\n.fa-js-square:before {\n content: \"\\f3b9\"; }\n\n.fa-jsfiddle:before {\n content: \"\\f1cc\"; }\n\n.fa-kaaba:before {\n content: \"\\f66b\"; }\n\n.fa-kaggle:before {\n content: \"\\f5fa\"; }\n\n.fa-key:before {\n content: \"\\f084\"; }\n\n.fa-keybase:before {\n content: \"\\f4f5\"; }\n\n.fa-keyboard:before {\n content: \"\\f11c\"; }\n\n.fa-keycdn:before {\n content: \"\\f3ba\"; }\n\n.fa-khanda:before {\n content: \"\\f66d\"; }\n\n.fa-kickstarter:before {\n content: \"\\f3bb\"; }\n\n.fa-kickstarter-k:before {\n content: \"\\f3bc\"; }\n\n.fa-kiss:before {\n content: \"\\f596\"; }\n\n.fa-kiss-beam:before {\n content: \"\\f597\"; }\n\n.fa-kiss-wink-heart:before {\n content: \"\\f598\"; }\n\n.fa-kiwi-bird:before {\n content: \"\\f535\"; }\n\n.fa-korvue:before {\n content: \"\\f42f\"; }\n\n.fa-landmark:before {\n content: \"\\f66f\"; }\n\n.fa-language:before {\n content: \"\\f1ab\"; }\n\n.fa-laptop:before {\n content: \"\\f109\"; }\n\n.fa-laptop-code:before {\n content: \"\\f5fc\"; }\n\n.fa-laptop-house:before {\n content: \"\\e066\"; }\n\n.fa-laptop-medical:before {\n content: \"\\f812\"; }\n\n.fa-laravel:before {\n content: \"\\f3bd\"; }\n\n.fa-lastfm:before {\n content: \"\\f202\"; }\n\n.fa-lastfm-square:before {\n content: \"\\f203\"; }\n\n.fa-laugh:before {\n content: \"\\f599\"; }\n\n.fa-laugh-beam:before {\n content: \"\\f59a\"; }\n\n.fa-laugh-squint:before {\n content: \"\\f59b\"; }\n\n.fa-laugh-wink:before {\n content: \"\\f59c\"; }\n\n.fa-layer-group:before {\n content: \"\\f5fd\"; }\n\n.fa-leaf:before {\n content: \"\\f06c\"; }\n\n.fa-leanpub:before {\n content: \"\\f212\"; }\n\n.fa-lemon:before {\n content: \"\\f094\"; }\n\n.fa-less:before {\n content: \"\\f41d\"; }\n\n.fa-less-than:before {\n content: \"\\f536\"; }\n\n.fa-less-than-equal:before {\n content: \"\\f537\"; }\n\n.fa-level-down-alt:before {\n content: \"\\f3be\"; }\n\n.fa-level-up-alt:before {\n content: \"\\f3bf\"; }\n\n.fa-life-ring:before {\n content: \"\\f1cd\"; }\n\n.fa-lightbulb:before {\n content: \"\\f0eb\"; }\n\n.fa-line:before {\n content: \"\\f3c0\"; }\n\n.fa-link:before {\n content: \"\\f0c1\"; }\n\n.fa-linkedin:before {\n content: \"\\f08c\"; }\n\n.fa-linkedin-in:before {\n content: \"\\f0e1\"; }\n\n.fa-linode:before {\n content: \"\\f2b8\"; }\n\n.fa-linux:before {\n content: \"\\f17c\"; }\n\n.fa-lira-sign:before {\n content: \"\\f195\"; }\n\n.fa-list:before {\n content: \"\\f03a\"; }\n\n.fa-list-alt:before {\n content: \"\\f022\"; }\n\n.fa-list-ol:before {\n content: \"\\f0cb\"; }\n\n.fa-list-ul:before {\n content: \"\\f0ca\"; }\n\n.fa-location-arrow:before {\n content: \"\\f124\"; }\n\n.fa-lock:before {\n content: \"\\f023\"; }\n\n.fa-lock-open:before {\n content: \"\\f3c1\"; }\n\n.fa-long-arrow-alt-down:before {\n content: \"\\f309\"; }\n\n.fa-long-arrow-alt-left:before {\n content: \"\\f30a\"; }\n\n.fa-long-arrow-alt-right:before {\n content: \"\\f30b\"; }\n\n.fa-long-arrow-alt-up:before {\n content: \"\\f30c\"; }\n\n.fa-low-vision:before {\n content: \"\\f2a8\"; }\n\n.fa-luggage-cart:before {\n content: \"\\f59d\"; }\n\n.fa-lungs:before {\n content: \"\\f604\"; }\n\n.fa-lungs-virus:before {\n content: \"\\e067\"; }\n\n.fa-lyft:before {\n content: \"\\f3c3\"; }\n\n.fa-magento:before {\n content: \"\\f3c4\"; }\n\n.fa-magic:before {\n content: \"\\f0d0\"; }\n\n.fa-magnet:before {\n content: \"\\f076\"; }\n\n.fa-mail-bulk:before {\n content: \"\\f674\"; }\n\n.fa-mailchimp:before {\n content: \"\\f59e\"; }\n\n.fa-male:before {\n content: \"\\f183\"; }\n\n.fa-mandalorian:before {\n content: \"\\f50f\"; }\n\n.fa-map:before {\n content: \"\\f279\"; }\n\n.fa-map-marked:before {\n content: \"\\f59f\"; }\n\n.fa-map-marked-alt:before {\n content: \"\\f5a0\"; }\n\n.fa-map-marker:before {\n content: \"\\f041\"; }\n\n.fa-map-marker-alt:before {\n content: \"\\f3c5\"; }\n\n.fa-map-pin:before {\n content: \"\\f276\"; }\n\n.fa-map-signs:before {\n content: \"\\f277\"; }\n\n.fa-markdown:before {\n content: \"\\f60f\"; }\n\n.fa-marker:before {\n content: \"\\f5a1\"; }\n\n.fa-mars:before {\n content: \"\\f222\"; }\n\n.fa-mars-double:before {\n content: \"\\f227\"; }\n\n.fa-mars-stroke:before {\n content: \"\\f229\"; }\n\n.fa-mars-stroke-h:before {\n content: \"\\f22b\"; }\n\n.fa-mars-stroke-v:before {\n content: \"\\f22a\"; }\n\n.fa-mask:before {\n content: \"\\f6fa\"; }\n\n.fa-mastodon:before {\n content: \"\\f4f6\"; }\n\n.fa-maxcdn:before {\n content: \"\\f136\"; }\n\n.fa-mdb:before {\n content: \"\\f8ca\"; }\n\n.fa-medal:before {\n content: \"\\f5a2\"; }\n\n.fa-medapps:before {\n content: \"\\f3c6\"; }\n\n.fa-medium:before {\n content: \"\\f23a\"; }\n\n.fa-medium-m:before {\n content: \"\\f3c7\"; }\n\n.fa-medkit:before {\n content: \"\\f0fa\"; }\n\n.fa-medrt:before {\n content: \"\\f3c8\"; }\n\n.fa-meetup:before {\n content: \"\\f2e0\"; }\n\n.fa-megaport:before {\n content: \"\\f5a3\"; }\n\n.fa-meh:before {\n content: \"\\f11a\"; }\n\n.fa-meh-blank:before {\n content: \"\\f5a4\"; }\n\n.fa-meh-rolling-eyes:before {\n content: \"\\f5a5\"; }\n\n.fa-memory:before {\n content: \"\\f538\"; }\n\n.fa-mendeley:before {\n content: \"\\f7b3\"; }\n\n.fa-menorah:before {\n content: \"\\f676\"; }\n\n.fa-mercury:before {\n content: \"\\f223\"; }\n\n.fa-meteor:before {\n content: \"\\f753\"; }\n\n.fa-microblog:before {\n content: \"\\e01a\"; }\n\n.fa-microchip:before {\n content: \"\\f2db\"; }\n\n.fa-microphone:before {\n content: \"\\f130\"; }\n\n.fa-microphone-alt:before {\n content: \"\\f3c9\"; }\n\n.fa-microphone-alt-slash:before {\n content: \"\\f539\"; }\n\n.fa-microphone-slash:before {\n content: \"\\f131\"; }\n\n.fa-microscope:before {\n content: \"\\f610\"; }\n\n.fa-microsoft:before {\n content: \"\\f3ca\"; }\n\n.fa-minus:before {\n content: \"\\f068\"; }\n\n.fa-minus-circle:before {\n content: \"\\f056\"; }\n\n.fa-minus-square:before {\n content: \"\\f146\"; }\n\n.fa-mitten:before {\n content: \"\\f7b5\"; }\n\n.fa-mix:before {\n content: \"\\f3cb\"; }\n\n.fa-mixcloud:before {\n content: \"\\f289\"; }\n\n.fa-mixer:before {\n content: \"\\e056\"; }\n\n.fa-mizuni:before {\n content: \"\\f3cc\"; }\n\n.fa-mobile:before {\n content: \"\\f10b\"; }\n\n.fa-mobile-alt:before {\n content: \"\\f3cd\"; }\n\n.fa-modx:before {\n content: \"\\f285\"; }\n\n.fa-monero:before {\n content: \"\\f3d0\"; }\n\n.fa-money-bill:before {\n content: \"\\f0d6\"; }\n\n.fa-money-bill-alt:before {\n content: \"\\f3d1\"; }\n\n.fa-money-bill-wave:before {\n content: \"\\f53a\"; }\n\n.fa-money-bill-wave-alt:before {\n content: \"\\f53b\"; }\n\n.fa-money-check:before {\n content: \"\\f53c\"; }\n\n.fa-money-check-alt:before {\n content: \"\\f53d\"; }\n\n.fa-monument:before {\n content: \"\\f5a6\"; }\n\n.fa-moon:before {\n content: \"\\f186\"; }\n\n.fa-mortar-pestle:before {\n content: \"\\f5a7\"; }\n\n.fa-mosque:before {\n content: \"\\f678\"; }\n\n.fa-motorcycle:before {\n content: \"\\f21c\"; }\n\n.fa-mountain:before {\n content: \"\\f6fc\"; }\n\n.fa-mouse:before {\n content: \"\\f8cc\"; }\n\n.fa-mouse-pointer:before {\n content: \"\\f245\"; }\n\n.fa-mug-hot:before {\n content: \"\\f7b6\"; }\n\n.fa-music:before {\n content: \"\\f001\"; }\n\n.fa-napster:before {\n content: \"\\f3d2\"; }\n\n.fa-neos:before {\n content: \"\\f612\"; }\n\n.fa-network-wired:before {\n content: \"\\f6ff\"; }\n\n.fa-neuter:before {\n content: \"\\f22c\"; }\n\n.fa-newspaper:before {\n content: \"\\f1ea\"; }\n\n.fa-nimblr:before {\n content: \"\\f5a8\"; }\n\n.fa-node:before {\n content: \"\\f419\"; }\n\n.fa-node-js:before {\n content: \"\\f3d3\"; }\n\n.fa-not-equal:before {\n content: \"\\f53e\"; }\n\n.fa-notes-medical:before {\n content: \"\\f481\"; }\n\n.fa-npm:before {\n content: \"\\f3d4\"; }\n\n.fa-ns8:before {\n content: \"\\f3d5\"; }\n\n.fa-nutritionix:before {\n content: \"\\f3d6\"; }\n\n.fa-object-group:before {\n content: \"\\f247\"; }\n\n.fa-object-ungroup:before {\n content: \"\\f248\"; }\n\n.fa-octopus-deploy:before {\n content: \"\\e082\"; }\n\n.fa-odnoklassniki:before {\n content: \"\\f263\"; }\n\n.fa-odnoklassniki-square:before {\n content: \"\\f264\"; }\n\n.fa-oil-can:before {\n content: \"\\f613\"; }\n\n.fa-old-republic:before {\n content: \"\\f510\"; }\n\n.fa-om:before {\n content: \"\\f679\"; }\n\n.fa-opencart:before {\n content: \"\\f23d\"; }\n\n.fa-openid:before {\n content: \"\\f19b\"; }\n\n.fa-opera:before {\n content: \"\\f26a\"; }\n\n.fa-optin-monster:before {\n content: \"\\f23c\"; }\n\n.fa-orcid:before {\n content: \"\\f8d2\"; }\n\n.fa-osi:before {\n content: \"\\f41a\"; }\n\n.fa-otter:before {\n content: \"\\f700\"; }\n\n.fa-outdent:before {\n content: \"\\f03b\"; }\n\n.fa-page4:before {\n content: \"\\f3d7\"; }\n\n.fa-pagelines:before {\n content: \"\\f18c\"; }\n\n.fa-pager:before {\n content: \"\\f815\"; }\n\n.fa-paint-brush:before {\n content: \"\\f1fc\"; }\n\n.fa-paint-roller:before {\n content: \"\\f5aa\"; }\n\n.fa-palette:before {\n content: \"\\f53f\"; }\n\n.fa-palfed:before {\n content: \"\\f3d8\"; }\n\n.fa-pallet:before {\n content: \"\\f482\"; }\n\n.fa-paper-plane:before {\n content: \"\\f1d8\"; }\n\n.fa-paperclip:before {\n content: \"\\f0c6\"; }\n\n.fa-parachute-box:before {\n content: \"\\f4cd\"; }\n\n.fa-paragraph:before {\n content: \"\\f1dd\"; }\n\n.fa-parking:before {\n content: \"\\f540\"; }\n\n.fa-passport:before {\n content: \"\\f5ab\"; }\n\n.fa-pastafarianism:before {\n content: \"\\f67b\"; }\n\n.fa-paste:before {\n content: \"\\f0ea\"; }\n\n.fa-patreon:before {\n content: \"\\f3d9\"; }\n\n.fa-pause:before {\n content: \"\\f04c\"; }\n\n.fa-pause-circle:before {\n content: \"\\f28b\"; }\n\n.fa-paw:before {\n content: \"\\f1b0\"; }\n\n.fa-paypal:before {\n content: \"\\f1ed\"; }\n\n.fa-peace:before {\n content: \"\\f67c\"; }\n\n.fa-pen:before {\n content: \"\\f304\"; }\n\n.fa-pen-alt:before {\n content: \"\\f305\"; }\n\n.fa-pen-fancy:before {\n content: \"\\f5ac\"; }\n\n.fa-pen-nib:before {\n content: \"\\f5ad\"; }\n\n.fa-pen-square:before {\n content: \"\\f14b\"; }\n\n.fa-pencil-alt:before {\n content: \"\\f303\"; }\n\n.fa-pencil-ruler:before {\n content: \"\\f5ae\"; }\n\n.fa-penny-arcade:before {\n content: \"\\f704\"; }\n\n.fa-people-arrows:before {\n content: \"\\e068\"; }\n\n.fa-people-carry:before {\n content: \"\\f4ce\"; }\n\n.fa-pepper-hot:before {\n content: \"\\f816\"; }\n\n.fa-perbyte:before {\n content: \"\\e083\"; }\n\n.fa-percent:before {\n content: \"\\f295\"; }\n\n.fa-percentage:before {\n content: \"\\f541\"; }\n\n.fa-periscope:before {\n content: \"\\f3da\"; }\n\n.fa-person-booth:before {\n content: \"\\f756\"; }\n\n.fa-phabricator:before {\n content: \"\\f3db\"; }\n\n.fa-phoenix-framework:before {\n content: \"\\f3dc\"; }\n\n.fa-phoenix-squadron:before {\n content: \"\\f511\"; }\n\n.fa-phone:before {\n content: \"\\f095\"; }\n\n.fa-phone-alt:before {\n content: \"\\f879\"; }\n\n.fa-phone-slash:before {\n content: \"\\f3dd\"; }\n\n.fa-phone-square:before {\n content: \"\\f098\"; }\n\n.fa-phone-square-alt:before {\n content: \"\\f87b\"; }\n\n.fa-phone-volume:before {\n content: \"\\f2a0\"; }\n\n.fa-photo-video:before {\n content: \"\\f87c\"; }\n\n.fa-php:before {\n content: \"\\f457\"; }\n\n.fa-pied-piper:before {\n content: \"\\f2ae\"; }\n\n.fa-pied-piper-alt:before {\n content: \"\\f1a8\"; }\n\n.fa-pied-piper-hat:before {\n content: \"\\f4e5\"; }\n\n.fa-pied-piper-pp:before {\n content: \"\\f1a7\"; }\n\n.fa-pied-piper-square:before {\n content: \"\\e01e\"; }\n\n.fa-piggy-bank:before {\n content: \"\\f4d3\"; }\n\n.fa-pills:before {\n content: \"\\f484\"; }\n\n.fa-pinterest:before {\n content: \"\\f0d2\"; }\n\n.fa-pinterest-p:before {\n content: \"\\f231\"; }\n\n.fa-pinterest-square:before {\n content: \"\\f0d3\"; }\n\n.fa-pizza-slice:before {\n content: \"\\f818\"; }\n\n.fa-place-of-worship:before {\n content: \"\\f67f\"; }\n\n.fa-plane:before {\n content: \"\\f072\"; }\n\n.fa-plane-arrival:before {\n content: \"\\f5af\"; }\n\n.fa-plane-departure:before {\n content: \"\\f5b0\"; }\n\n.fa-plane-slash:before {\n content: \"\\e069\"; }\n\n.fa-play:before {\n content: \"\\f04b\"; }\n\n.fa-play-circle:before {\n content: \"\\f144\"; }\n\n.fa-playstation:before {\n content: \"\\f3df\"; }\n\n.fa-plug:before {\n content: \"\\f1e6\"; }\n\n.fa-plus:before {\n content: \"\\f067\"; }\n\n.fa-plus-circle:before {\n content: \"\\f055\"; }\n\n.fa-plus-square:before {\n content: \"\\f0fe\"; }\n\n.fa-podcast:before {\n content: \"\\f2ce\"; }\n\n.fa-poll:before {\n content: \"\\f681\"; }\n\n.fa-poll-h:before {\n content: \"\\f682\"; }\n\n.fa-poo:before {\n content: \"\\f2fe\"; }\n\n.fa-poo-storm:before {\n content: \"\\f75a\"; }\n\n.fa-poop:before {\n content: \"\\f619\"; }\n\n.fa-portrait:before {\n content: \"\\f3e0\"; }\n\n.fa-pound-sign:before {\n content: \"\\f154\"; }\n\n.fa-power-off:before {\n content: \"\\f011\"; }\n\n.fa-pray:before {\n content: \"\\f683\"; }\n\n.fa-praying-hands:before {\n content: \"\\f684\"; }\n\n.fa-prescription:before {\n content: \"\\f5b1\"; }\n\n.fa-prescription-bottle:before {\n content: \"\\f485\"; }\n\n.fa-prescription-bottle-alt:before {\n content: \"\\f486\"; }\n\n.fa-print:before {\n content: \"\\f02f\"; }\n\n.fa-procedures:before {\n content: \"\\f487\"; }\n\n.fa-product-hunt:before {\n content: \"\\f288\"; }\n\n.fa-project-diagram:before {\n content: \"\\f542\"; }\n\n.fa-pump-medical:before {\n content: \"\\e06a\"; }\n\n.fa-pump-soap:before {\n content: \"\\e06b\"; }\n\n.fa-pushed:before {\n content: \"\\f3e1\"; }\n\n.fa-puzzle-piece:before {\n content: \"\\f12e\"; }\n\n.fa-python:before {\n content: \"\\f3e2\"; }\n\n.fa-qq:before {\n content: \"\\f1d6\"; }\n\n.fa-qrcode:before {\n content: \"\\f029\"; }\n\n.fa-question:before {\n content: \"\\f128\"; }\n\n.fa-question-circle:before {\n content: \"\\f059\"; }\n\n.fa-quidditch:before {\n content: \"\\f458\"; }\n\n.fa-quinscape:before {\n content: \"\\f459\"; }\n\n.fa-quora:before {\n content: \"\\f2c4\"; }\n\n.fa-quote-left:before {\n content: \"\\f10d\"; }\n\n.fa-quote-right:before {\n content: \"\\f10e\"; }\n\n.fa-quran:before {\n content: \"\\f687\"; }\n\n.fa-r-project:before {\n content: \"\\f4f7\"; }\n\n.fa-radiation:before {\n content: \"\\f7b9\"; }\n\n.fa-radiation-alt:before {\n content: \"\\f7ba\"; }\n\n.fa-rainbow:before {\n content: \"\\f75b\"; }\n\n.fa-random:before {\n content: \"\\f074\"; }\n\n.fa-raspberry-pi:before {\n content: \"\\f7bb\"; }\n\n.fa-ravelry:before {\n content: \"\\f2d9\"; }\n\n.fa-react:before {\n content: \"\\f41b\"; }\n\n.fa-reacteurope:before {\n content: \"\\f75d\"; }\n\n.fa-readme:before {\n content: \"\\f4d5\"; }\n\n.fa-rebel:before {\n content: \"\\f1d0\"; }\n\n.fa-receipt:before {\n content: \"\\f543\"; }\n\n.fa-record-vinyl:before {\n content: \"\\f8d9\"; }\n\n.fa-recycle:before {\n content: \"\\f1b8\"; }\n\n.fa-red-river:before {\n content: \"\\f3e3\"; }\n\n.fa-reddit:before {\n content: \"\\f1a1\"; }\n\n.fa-reddit-alien:before {\n content: \"\\f281\"; }\n\n.fa-reddit-square:before {\n content: \"\\f1a2\"; }\n\n.fa-redhat:before {\n content: \"\\f7bc\"; }\n\n.fa-redo:before {\n content: \"\\f01e\"; }\n\n.fa-redo-alt:before {\n content: \"\\f2f9\"; }\n\n.fa-registered:before {\n content: \"\\f25d\"; }\n\n.fa-remove-format:before {\n content: \"\\f87d\"; }\n\n.fa-renren:before {\n content: \"\\f18b\"; }\n\n.fa-reply:before {\n content: \"\\f3e5\"; }\n\n.fa-reply-all:before {\n content: \"\\f122\"; }\n\n.fa-replyd:before {\n content: \"\\f3e6\"; }\n\n.fa-republican:before {\n content: \"\\f75e\"; }\n\n.fa-researchgate:before {\n content: \"\\f4f8\"; }\n\n.fa-resolving:before {\n content: \"\\f3e7\"; }\n\n.fa-restroom:before {\n content: \"\\f7bd\"; }\n\n.fa-retweet:before {\n content: \"\\f079\"; }\n\n.fa-rev:before {\n content: \"\\f5b2\"; }\n\n.fa-ribbon:before {\n content: \"\\f4d6\"; }\n\n.fa-ring:before {\n content: \"\\f70b\"; }\n\n.fa-road:before {\n content: \"\\f018\"; }\n\n.fa-robot:before {\n content: \"\\f544\"; }\n\n.fa-rocket:before {\n content: \"\\f135\"; }\n\n.fa-rocketchat:before {\n content: \"\\f3e8\"; }\n\n.fa-rockrms:before {\n content: \"\\f3e9\"; }\n\n.fa-route:before {\n content: \"\\f4d7\"; }\n\n.fa-rss:before {\n content: \"\\f09e\"; }\n\n.fa-rss-square:before {\n content: \"\\f143\"; }\n\n.fa-ruble-sign:before {\n content: \"\\f158\"; }\n\n.fa-ruler:before {\n content: \"\\f545\"; }\n\n.fa-ruler-combined:before {\n content: \"\\f546\"; }\n\n.fa-ruler-horizontal:before {\n content: \"\\f547\"; }\n\n.fa-ruler-vertical:before {\n content: \"\\f548\"; }\n\n.fa-running:before {\n content: \"\\f70c\"; }\n\n.fa-rupee-sign:before {\n content: \"\\f156\"; }\n\n.fa-rust:before {\n content: \"\\e07a\"; }\n\n.fa-sad-cry:before {\n content: \"\\f5b3\"; }\n\n.fa-sad-tear:before {\n content: \"\\f5b4\"; }\n\n.fa-safari:before {\n content: \"\\f267\"; }\n\n.fa-salesforce:before {\n content: \"\\f83b\"; }\n\n.fa-sass:before {\n content: \"\\f41e\"; }\n\n.fa-satellite:before {\n content: \"\\f7bf\"; }\n\n.fa-satellite-dish:before {\n content: \"\\f7c0\"; }\n\n.fa-save:before {\n content: \"\\f0c7\"; }\n\n.fa-schlix:before {\n content: \"\\f3ea\"; }\n\n.fa-school:before {\n content: \"\\f549\"; }\n\n.fa-screwdriver:before {\n content: \"\\f54a\"; }\n\n.fa-scribd:before {\n content: \"\\f28a\"; }\n\n.fa-scroll:before {\n content: \"\\f70e\"; }\n\n.fa-sd-card:before {\n content: \"\\f7c2\"; }\n\n.fa-search:before {\n content: \"\\f002\"; }\n\n.fa-search-dollar:before {\n content: \"\\f688\"; }\n\n.fa-search-location:before {\n content: \"\\f689\"; }\n\n.fa-search-minus:before {\n content: \"\\f010\"; }\n\n.fa-search-plus:before {\n content: \"\\f00e\"; }\n\n.fa-searchengin:before {\n content: \"\\f3eb\"; }\n\n.fa-seedling:before {\n content: \"\\f4d8\"; }\n\n.fa-sellcast:before {\n content: \"\\f2da\"; }\n\n.fa-sellsy:before {\n content: \"\\f213\"; }\n\n.fa-server:before {\n content: \"\\f233\"; }\n\n.fa-servicestack:before {\n content: \"\\f3ec\"; }\n\n.fa-shapes:before {\n content: \"\\f61f\"; }\n\n.fa-share:before {\n content: \"\\f064\"; }\n\n.fa-share-alt:before {\n content: \"\\f1e0\"; }\n\n.fa-share-alt-square:before {\n content: \"\\f1e1\"; }\n\n.fa-share-square:before {\n content: \"\\f14d\"; }\n\n.fa-shekel-sign:before {\n content: \"\\f20b\"; }\n\n.fa-shield-alt:before {\n content: \"\\f3ed\"; }\n\n.fa-shield-virus:before {\n content: \"\\e06c\"; }\n\n.fa-ship:before {\n content: \"\\f21a\"; }\n\n.fa-shipping-fast:before {\n content: \"\\f48b\"; }\n\n.fa-shirtsinbulk:before {\n content: \"\\f214\"; }\n\n.fa-shoe-prints:before {\n content: \"\\f54b\"; }\n\n.fa-shopify:before {\n content: \"\\e057\"; }\n\n.fa-shopping-bag:before {\n content: \"\\f290\"; }\n\n.fa-shopping-basket:before {\n content: \"\\f291\"; }\n\n.fa-shopping-cart:before {\n content: \"\\f07a\"; }\n\n.fa-shopware:before {\n content: \"\\f5b5\"; }\n\n.fa-shower:before {\n content: \"\\f2cc\"; }\n\n.fa-shuttle-van:before {\n content: \"\\f5b6\"; }\n\n.fa-sign:before {\n content: \"\\f4d9\"; }\n\n.fa-sign-in-alt:before {\n content: \"\\f2f6\"; }\n\n.fa-sign-language:before {\n content: \"\\f2a7\"; }\n\n.fa-sign-out-alt:before {\n content: \"\\f2f5\"; }\n\n.fa-signal:before {\n content: \"\\f012\"; }\n\n.fa-signature:before {\n content: \"\\f5b7\"; }\n\n.fa-sim-card:before {\n content: \"\\f7c4\"; }\n\n.fa-simplybuilt:before {\n content: \"\\f215\"; }\n\n.fa-sink:before {\n content: \"\\e06d\"; }\n\n.fa-sistrix:before {\n content: \"\\f3ee\"; }\n\n.fa-sitemap:before {\n content: \"\\f0e8\"; }\n\n.fa-sith:before {\n content: \"\\f512\"; }\n\n.fa-skating:before {\n content: \"\\f7c5\"; }\n\n.fa-sketch:before {\n content: \"\\f7c6\"; }\n\n.fa-skiing:before {\n content: \"\\f7c9\"; }\n\n.fa-skiing-nordic:before {\n content: \"\\f7ca\"; }\n\n.fa-skull:before {\n content: \"\\f54c\"; }\n\n.fa-skull-crossbones:before {\n content: \"\\f714\"; }\n\n.fa-skyatlas:before {\n content: \"\\f216\"; }\n\n.fa-skype:before {\n content: \"\\f17e\"; }\n\n.fa-slack:before {\n content: \"\\f198\"; }\n\n.fa-slack-hash:before {\n content: \"\\f3ef\"; }\n\n.fa-slash:before {\n content: \"\\f715\"; }\n\n.fa-sleigh:before {\n content: \"\\f7cc\"; }\n\n.fa-sliders-h:before {\n content: \"\\f1de\"; }\n\n.fa-slideshare:before {\n content: \"\\f1e7\"; }\n\n.fa-smile:before {\n content: \"\\f118\"; }\n\n.fa-smile-beam:before {\n content: \"\\f5b8\"; }\n\n.fa-smile-wink:before {\n content: \"\\f4da\"; }\n\n.fa-smog:before {\n content: \"\\f75f\"; }\n\n.fa-smoking:before {\n content: \"\\f48d\"; }\n\n.fa-smoking-ban:before {\n content: \"\\f54d\"; }\n\n.fa-sms:before {\n content: \"\\f7cd\"; }\n\n.fa-snapchat:before {\n content: \"\\f2ab\"; }\n\n.fa-snapchat-ghost:before {\n content: \"\\f2ac\"; }\n\n.fa-snapchat-square:before {\n content: \"\\f2ad\"; }\n\n.fa-snowboarding:before {\n content: \"\\f7ce\"; }\n\n.fa-snowflake:before {\n content: \"\\f2dc\"; }\n\n.fa-snowman:before {\n content: \"\\f7d0\"; }\n\n.fa-snowplow:before {\n content: \"\\f7d2\"; }\n\n.fa-soap:before {\n content: \"\\e06e\"; }\n\n.fa-socks:before {\n content: \"\\f696\"; }\n\n.fa-solar-panel:before {\n content: \"\\f5ba\"; }\n\n.fa-sort:before {\n content: \"\\f0dc\"; }\n\n.fa-sort-alpha-down:before {\n content: \"\\f15d\"; }\n\n.fa-sort-alpha-down-alt:before {\n content: \"\\f881\"; }\n\n.fa-sort-alpha-up:before {\n content: \"\\f15e\"; }\n\n.fa-sort-alpha-up-alt:before {\n content: \"\\f882\"; }\n\n.fa-sort-amount-down:before {\n content: \"\\f160\"; }\n\n.fa-sort-amount-down-alt:before {\n content: \"\\f884\"; }\n\n.fa-sort-amount-up:before {\n content: \"\\f161\"; }\n\n.fa-sort-amount-up-alt:before {\n content: \"\\f885\"; }\n\n.fa-sort-down:before {\n content: \"\\f0dd\"; }\n\n.fa-sort-numeric-down:before {\n content: \"\\f162\"; }\n\n.fa-sort-numeric-down-alt:before {\n content: \"\\f886\"; }\n\n.fa-sort-numeric-up:before {\n content: \"\\f163\"; }\n\n.fa-sort-numeric-up-alt:before {\n content: \"\\f887\"; }\n\n.fa-sort-up:before {\n content: \"\\f0de\"; }\n\n.fa-soundcloud:before {\n content: \"\\f1be\"; }\n\n.fa-sourcetree:before {\n content: \"\\f7d3\"; }\n\n.fa-spa:before {\n content: \"\\f5bb\"; }\n\n.fa-space-shuttle:before {\n content: \"\\f197\"; }\n\n.fa-speakap:before {\n content: \"\\f3f3\"; }\n\n.fa-speaker-deck:before {\n content: \"\\f83c\"; }\n\n.fa-spell-check:before {\n content: \"\\f891\"; }\n\n.fa-spider:before {\n content: \"\\f717\"; }\n\n.fa-spinner:before {\n content: \"\\f110\"; }\n\n.fa-splotch:before {\n content: \"\\f5bc\"; }\n\n.fa-spotify:before {\n content: \"\\f1bc\"; }\n\n.fa-spray-can:before {\n content: \"\\f5bd\"; }\n\n.fa-square:before {\n content: \"\\f0c8\"; }\n\n.fa-square-full:before {\n content: \"\\f45c\"; }\n\n.fa-square-root-alt:before {\n content: \"\\f698\"; }\n\n.fa-squarespace:before {\n content: \"\\f5be\"; }\n\n.fa-stack-exchange:before {\n content: \"\\f18d\"; }\n\n.fa-stack-overflow:before {\n content: \"\\f16c\"; }\n\n.fa-stackpath:before {\n content: \"\\f842\"; }\n\n.fa-stamp:before {\n content: \"\\f5bf\"; }\n\n.fa-star:before {\n content: \"\\f005\"; }\n\n.fa-star-and-crescent:before {\n content: \"\\f699\"; }\n\n.fa-star-half:before {\n content: \"\\f089\"; }\n\n.fa-star-half-alt:before {\n content: \"\\f5c0\"; }\n\n.fa-star-of-david:before {\n content: \"\\f69a\"; }\n\n.fa-star-of-life:before {\n content: \"\\f621\"; }\n\n.fa-staylinked:before {\n content: \"\\f3f5\"; }\n\n.fa-steam:before {\n content: \"\\f1b6\"; }\n\n.fa-steam-square:before {\n content: \"\\f1b7\"; }\n\n.fa-steam-symbol:before {\n content: \"\\f3f6\"; }\n\n.fa-step-backward:before {\n content: \"\\f048\"; }\n\n.fa-step-forward:before {\n content: \"\\f051\"; }\n\n.fa-stethoscope:before {\n content: \"\\f0f1\"; }\n\n.fa-sticker-mule:before {\n content: \"\\f3f7\"; }\n\n.fa-sticky-note:before {\n content: \"\\f249\"; }\n\n.fa-stop:before {\n content: \"\\f04d\"; }\n\n.fa-stop-circle:before {\n content: \"\\f28d\"; }\n\n.fa-stopwatch:before {\n content: \"\\f2f2\"; }\n\n.fa-stopwatch-20:before {\n content: \"\\e06f\"; }\n\n.fa-store:before {\n content: \"\\f54e\"; }\n\n.fa-store-alt:before {\n content: \"\\f54f\"; }\n\n.fa-store-alt-slash:before {\n content: \"\\e070\"; }\n\n.fa-store-slash:before {\n content: \"\\e071\"; }\n\n.fa-strava:before {\n content: \"\\f428\"; }\n\n.fa-stream:before {\n content: \"\\f550\"; }\n\n.fa-street-view:before {\n content: \"\\f21d\"; }\n\n.fa-strikethrough:before {\n content: \"\\f0cc\"; }\n\n.fa-stripe:before {\n content: \"\\f429\"; }\n\n.fa-stripe-s:before {\n content: \"\\f42a\"; }\n\n.fa-stroopwafel:before {\n content: \"\\f551\"; }\n\n.fa-studiovinari:before {\n content: \"\\f3f8\"; }\n\n.fa-stumbleupon:before {\n content: \"\\f1a4\"; }\n\n.fa-stumbleupon-circle:before {\n content: \"\\f1a3\"; }\n\n.fa-subscript:before {\n content: \"\\f12c\"; }\n\n.fa-subway:before {\n content: \"\\f239\"; }\n\n.fa-suitcase:before {\n content: \"\\f0f2\"; }\n\n.fa-suitcase-rolling:before {\n content: \"\\f5c1\"; }\n\n.fa-sun:before {\n content: \"\\f185\"; }\n\n.fa-superpowers:before {\n content: \"\\f2dd\"; }\n\n.fa-superscript:before {\n content: \"\\f12b\"; }\n\n.fa-supple:before {\n content: \"\\f3f9\"; }\n\n.fa-surprise:before {\n content: \"\\f5c2\"; }\n\n.fa-suse:before {\n content: \"\\f7d6\"; }\n\n.fa-swatchbook:before {\n content: \"\\f5c3\"; }\n\n.fa-swift:before {\n content: \"\\f8e1\"; }\n\n.fa-swimmer:before {\n content: \"\\f5c4\"; }\n\n.fa-swimming-pool:before {\n content: \"\\f5c5\"; }\n\n.fa-symfony:before {\n content: \"\\f83d\"; }\n\n.fa-synagogue:before {\n content: \"\\f69b\"; }\n\n.fa-sync:before {\n content: \"\\f021\"; }\n\n.fa-sync-alt:before {\n content: \"\\f2f1\"; }\n\n.fa-syringe:before {\n content: \"\\f48e\"; }\n\n.fa-table:before {\n content: \"\\f0ce\"; }\n\n.fa-table-tennis:before {\n content: \"\\f45d\"; }\n\n.fa-tablet:before {\n content: \"\\f10a\"; }\n\n.fa-tablet-alt:before {\n content: \"\\f3fa\"; }\n\n.fa-tablets:before {\n content: \"\\f490\"; }\n\n.fa-tachometer-alt:before {\n content: \"\\f3fd\"; }\n\n.fa-tag:before {\n content: \"\\f02b\"; }\n\n.fa-tags:before {\n content: \"\\f02c\"; }\n\n.fa-tape:before {\n content: \"\\f4db\"; }\n\n.fa-tasks:before {\n content: \"\\f0ae\"; }\n\n.fa-taxi:before {\n content: \"\\f1ba\"; }\n\n.fa-teamspeak:before {\n content: \"\\f4f9\"; }\n\n.fa-teeth:before {\n content: \"\\f62e\"; }\n\n.fa-teeth-open:before {\n content: \"\\f62f\"; }\n\n.fa-telegram:before {\n content: \"\\f2c6\"; }\n\n.fa-telegram-plane:before {\n content: \"\\f3fe\"; }\n\n.fa-temperature-high:before {\n content: \"\\f769\"; }\n\n.fa-temperature-low:before {\n content: \"\\f76b\"; }\n\n.fa-tencent-weibo:before {\n content: \"\\f1d5\"; }\n\n.fa-tenge:before {\n content: \"\\f7d7\"; }\n\n.fa-terminal:before {\n content: \"\\f120\"; }\n\n.fa-text-height:before {\n content: \"\\f034\"; }\n\n.fa-text-width:before {\n content: \"\\f035\"; }\n\n.fa-th:before {\n content: \"\\f00a\"; }\n\n.fa-th-large:before {\n content: \"\\f009\"; }\n\n.fa-th-list:before {\n content: \"\\f00b\"; }\n\n.fa-the-red-yeti:before {\n content: \"\\f69d\"; }\n\n.fa-theater-masks:before {\n content: \"\\f630\"; }\n\n.fa-themeco:before {\n content: \"\\f5c6\"; }\n\n.fa-themeisle:before {\n content: \"\\f2b2\"; }\n\n.fa-thermometer:before {\n content: \"\\f491\"; }\n\n.fa-thermometer-empty:before {\n content: \"\\f2cb\"; }\n\n.fa-thermometer-full:before {\n content: \"\\f2c7\"; }\n\n.fa-thermometer-half:before {\n content: \"\\f2c9\"; }\n\n.fa-thermometer-quarter:before {\n content: \"\\f2ca\"; }\n\n.fa-thermometer-three-quarters:before {\n content: \"\\f2c8\"; }\n\n.fa-think-peaks:before {\n content: \"\\f731\"; }\n\n.fa-thumbs-down:before {\n content: \"\\f165\"; }\n\n.fa-thumbs-up:before {\n content: \"\\f164\"; }\n\n.fa-thumbtack:before {\n content: \"\\f08d\"; }\n\n.fa-ticket-alt:before {\n content: \"\\f3ff\"; }\n\n.fa-tiktok:before {\n content: \"\\e07b\"; }\n\n.fa-times:before {\n content: \"\\f00d\"; }\n\n.fa-times-circle:before {\n content: \"\\f057\"; }\n\n.fa-tint:before {\n content: \"\\f043\"; }\n\n.fa-tint-slash:before {\n content: \"\\f5c7\"; }\n\n.fa-tired:before {\n content: \"\\f5c8\"; }\n\n.fa-toggle-off:before {\n content: \"\\f204\"; }\n\n.fa-toggle-on:before {\n content: \"\\f205\"; }\n\n.fa-toilet:before {\n content: \"\\f7d8\"; }\n\n.fa-toilet-paper:before {\n content: \"\\f71e\"; }\n\n.fa-toilet-paper-slash:before {\n content: \"\\e072\"; }\n\n.fa-toolbox:before {\n content: \"\\f552\"; }\n\n.fa-tools:before {\n content: \"\\f7d9\"; }\n\n.fa-tooth:before {\n content: \"\\f5c9\"; }\n\n.fa-torah:before {\n content: \"\\f6a0\"; }\n\n.fa-torii-gate:before {\n content: \"\\f6a1\"; }\n\n.fa-tractor:before {\n content: \"\\f722\"; }\n\n.fa-trade-federation:before {\n content: \"\\f513\"; }\n\n.fa-trademark:before {\n content: \"\\f25c\"; }\n\n.fa-traffic-light:before {\n content: \"\\f637\"; }\n\n.fa-trailer:before {\n content: \"\\e041\"; }\n\n.fa-train:before {\n content: \"\\f238\"; }\n\n.fa-tram:before {\n content: \"\\f7da\"; }\n\n.fa-transgender:before {\n content: \"\\f224\"; }\n\n.fa-transgender-alt:before {\n content: \"\\f225\"; }\n\n.fa-trash:before {\n content: \"\\f1f8\"; }\n\n.fa-trash-alt:before {\n content: \"\\f2ed\"; }\n\n.fa-trash-restore:before {\n content: \"\\f829\"; }\n\n.fa-trash-restore-alt:before {\n content: \"\\f82a\"; }\n\n.fa-tree:before {\n content: \"\\f1bb\"; }\n\n.fa-trello:before {\n content: \"\\f181\"; }\n\n.fa-tripadvisor:before {\n content: \"\\f262\"; }\n\n.fa-trophy:before {\n content: \"\\f091\"; }\n\n.fa-truck:before {\n content: \"\\f0d1\"; }\n\n.fa-truck-loading:before {\n content: \"\\f4de\"; }\n\n.fa-truck-monster:before {\n content: \"\\f63b\"; }\n\n.fa-truck-moving:before {\n content: \"\\f4df\"; }\n\n.fa-truck-pickup:before {\n content: \"\\f63c\"; }\n\n.fa-tshirt:before {\n content: \"\\f553\"; }\n\n.fa-tty:before {\n content: \"\\f1e4\"; }\n\n.fa-tumblr:before {\n content: \"\\f173\"; }\n\n.fa-tumblr-square:before {\n content: \"\\f174\"; }\n\n.fa-tv:before {\n content: \"\\f26c\"; }\n\n.fa-twitch:before {\n content: \"\\f1e8\"; }\n\n.fa-twitter:before {\n content: \"\\f099\"; }\n\n.fa-twitter-square:before {\n content: \"\\f081\"; }\n\n.fa-typo3:before {\n content: \"\\f42b\"; }\n\n.fa-uber:before {\n content: \"\\f402\"; }\n\n.fa-ubuntu:before {\n content: \"\\f7df\"; }\n\n.fa-uikit:before {\n content: \"\\f403\"; }\n\n.fa-umbraco:before {\n content: \"\\f8e8\"; }\n\n.fa-umbrella:before {\n content: \"\\f0e9\"; }\n\n.fa-umbrella-beach:before {\n content: \"\\f5ca\"; }\n\n.fa-uncharted:before {\n content: \"\\e084\"; }\n\n.fa-underline:before {\n content: \"\\f0cd\"; }\n\n.fa-undo:before {\n content: \"\\f0e2\"; }\n\n.fa-undo-alt:before {\n content: \"\\f2ea\"; }\n\n.fa-uniregistry:before {\n content: \"\\f404\"; }\n\n.fa-unity:before {\n content: \"\\e049\"; }\n\n.fa-universal-access:before {\n content: \"\\f29a\"; }\n\n.fa-university:before {\n content: \"\\f19c\"; }\n\n.fa-unlink:before {\n content: \"\\f127\"; }\n\n.fa-unlock:before {\n content: \"\\f09c\"; }\n\n.fa-unlock-alt:before {\n content: \"\\f13e\"; }\n\n.fa-unsplash:before {\n content: \"\\e07c\"; }\n\n.fa-untappd:before {\n content: \"\\f405\"; }\n\n.fa-upload:before {\n content: \"\\f093\"; }\n\n.fa-ups:before {\n content: \"\\f7e0\"; }\n\n.fa-usb:before {\n content: \"\\f287\"; }\n\n.fa-user:before {\n content: \"\\f007\"; }\n\n.fa-user-alt:before {\n content: \"\\f406\"; }\n\n.fa-user-alt-slash:before {\n content: \"\\f4fa\"; }\n\n.fa-user-astronaut:before {\n content: \"\\f4fb\"; }\n\n.fa-user-check:before {\n content: \"\\f4fc\"; }\n\n.fa-user-circle:before {\n content: \"\\f2bd\"; }\n\n.fa-user-clock:before {\n content: \"\\f4fd\"; }\n\n.fa-user-cog:before {\n content: \"\\f4fe\"; }\n\n.fa-user-edit:before {\n content: \"\\f4ff\"; }\n\n.fa-user-friends:before {\n content: \"\\f500\"; }\n\n.fa-user-graduate:before {\n content: \"\\f501\"; }\n\n.fa-user-injured:before {\n content: \"\\f728\"; }\n\n.fa-user-lock:before {\n content: \"\\f502\"; }\n\n.fa-user-md:before {\n content: \"\\f0f0\"; }\n\n.fa-user-minus:before {\n content: \"\\f503\"; }\n\n.fa-user-ninja:before {\n content: \"\\f504\"; }\n\n.fa-user-nurse:before {\n content: \"\\f82f\"; }\n\n.fa-user-plus:before {\n content: \"\\f234\"; }\n\n.fa-user-secret:before {\n content: \"\\f21b\"; }\n\n.fa-user-shield:before {\n content: \"\\f505\"; }\n\n.fa-user-slash:before {\n content: \"\\f506\"; }\n\n.fa-user-tag:before {\n content: \"\\f507\"; }\n\n.fa-user-tie:before {\n content: \"\\f508\"; }\n\n.fa-user-times:before {\n content: \"\\f235\"; }\n\n.fa-users:before {\n content: \"\\f0c0\"; }\n\n.fa-users-cog:before {\n content: \"\\f509\"; }\n\n.fa-users-slash:before {\n content: \"\\e073\"; }\n\n.fa-usps:before {\n content: \"\\f7e1\"; }\n\n.fa-ussunnah:before {\n content: \"\\f407\"; }\n\n.fa-utensil-spoon:before {\n content: \"\\f2e5\"; }\n\n.fa-utensils:before {\n content: \"\\f2e7\"; }\n\n.fa-vaadin:before {\n content: \"\\f408\"; }\n\n.fa-vector-square:before {\n content: \"\\f5cb\"; }\n\n.fa-venus:before {\n content: \"\\f221\"; }\n\n.fa-venus-double:before {\n content: \"\\f226\"; }\n\n.fa-venus-mars:before {\n content: \"\\f228\"; }\n\n.fa-vest:before {\n content: \"\\e085\"; }\n\n.fa-vest-patches:before {\n content: \"\\e086\"; }\n\n.fa-viacoin:before {\n content: \"\\f237\"; }\n\n.fa-viadeo:before {\n content: \"\\f2a9\"; }\n\n.fa-viadeo-square:before {\n content: \"\\f2aa\"; }\n\n.fa-vial:before {\n content: \"\\f492\"; }\n\n.fa-vials:before {\n content: \"\\f493\"; }\n\n.fa-viber:before {\n content: \"\\f409\"; }\n\n.fa-video:before {\n content: \"\\f03d\"; }\n\n.fa-video-slash:before {\n content: \"\\f4e2\"; }\n\n.fa-vihara:before {\n content: \"\\f6a7\"; }\n\n.fa-vimeo:before {\n content: \"\\f40a\"; }\n\n.fa-vimeo-square:before {\n content: \"\\f194\"; }\n\n.fa-vimeo-v:before {\n content: \"\\f27d\"; }\n\n.fa-vine:before {\n content: \"\\f1ca\"; }\n\n.fa-virus:before {\n content: \"\\e074\"; }\n\n.fa-virus-slash:before {\n content: \"\\e075\"; }\n\n.fa-viruses:before {\n content: \"\\e076\"; }\n\n.fa-vk:before {\n content: \"\\f189\"; }\n\n.fa-vnv:before {\n content: \"\\f40b\"; }\n\n.fa-voicemail:before {\n content: \"\\f897\"; }\n\n.fa-volleyball-ball:before {\n content: \"\\f45f\"; }\n\n.fa-volume-down:before {\n content: \"\\f027\"; }\n\n.fa-volume-mute:before {\n content: \"\\f6a9\"; }\n\n.fa-volume-off:before {\n content: \"\\f026\"; }\n\n.fa-volume-up:before {\n content: \"\\f028\"; }\n\n.fa-vote-yea:before {\n content: \"\\f772\"; }\n\n.fa-vr-cardboard:before {\n content: \"\\f729\"; }\n\n.fa-vuejs:before {\n content: \"\\f41f\"; }\n\n.fa-walking:before {\n content: \"\\f554\"; }\n\n.fa-wallet:before {\n content: \"\\f555\"; }\n\n.fa-warehouse:before {\n content: \"\\f494\"; }\n\n.fa-watchman-monitoring:before {\n content: \"\\e087\"; }\n\n.fa-water:before {\n content: \"\\f773\"; }\n\n.fa-wave-square:before {\n content: \"\\f83e\"; }\n\n.fa-waze:before {\n content: \"\\f83f\"; }\n\n.fa-weebly:before {\n content: \"\\f5cc\"; }\n\n.fa-weibo:before {\n content: \"\\f18a\"; }\n\n.fa-weight:before {\n content: \"\\f496\"; }\n\n.fa-weight-hanging:before {\n content: \"\\f5cd\"; }\n\n.fa-weixin:before {\n content: \"\\f1d7\"; }\n\n.fa-whatsapp:before {\n content: \"\\f232\"; }\n\n.fa-whatsapp-square:before {\n content: \"\\f40c\"; }\n\n.fa-wheelchair:before {\n content: \"\\f193\"; }\n\n.fa-whmcs:before {\n content: \"\\f40d\"; }\n\n.fa-wifi:before {\n content: \"\\f1eb\"; }\n\n.fa-wikipedia-w:before {\n content: \"\\f266\"; }\n\n.fa-wind:before {\n content: \"\\f72e\"; }\n\n.fa-window-close:before {\n content: \"\\f410\"; }\n\n.fa-window-maximize:before {\n content: \"\\f2d0\"; }\n\n.fa-window-minimize:before {\n content: \"\\f2d1\"; }\n\n.fa-window-restore:before {\n content: \"\\f2d2\"; }\n\n.fa-windows:before {\n content: \"\\f17a\"; }\n\n.fa-wine-bottle:before {\n content: \"\\f72f\"; }\n\n.fa-wine-glass:before {\n content: \"\\f4e3\"; }\n\n.fa-wine-glass-alt:before {\n content: \"\\f5ce\"; }\n\n.fa-wix:before {\n content: \"\\f5cf\"; }\n\n.fa-wizards-of-the-coast:before {\n content: \"\\f730\"; }\n\n.fa-wodu:before {\n content: \"\\e088\"; }\n\n.fa-wolf-pack-battalion:before {\n content: \"\\f514\"; }\n\n.fa-won-sign:before {\n content: \"\\f159\"; }\n\n.fa-wordpress:before {\n content: \"\\f19a\"; }\n\n.fa-wordpress-simple:before {\n content: \"\\f411\"; }\n\n.fa-wpbeginner:before {\n content: \"\\f297\"; }\n\n.fa-wpexplorer:before {\n content: \"\\f2de\"; }\n\n.fa-wpforms:before {\n content: \"\\f298\"; }\n\n.fa-wpressr:before {\n content: \"\\f3e4\"; }\n\n.fa-wrench:before {\n content: \"\\f0ad\"; }\n\n.fa-x-ray:before {\n content: \"\\f497\"; }\n\n.fa-xbox:before {\n content: \"\\f412\"; }\n\n.fa-xing:before {\n content: \"\\f168\"; }\n\n.fa-xing-square:before {\n content: \"\\f169\"; }\n\n.fa-y-combinator:before {\n content: \"\\f23b\"; }\n\n.fa-yahoo:before {\n content: \"\\f19e\"; }\n\n.fa-yammer:before {\n content: \"\\f840\"; }\n\n.fa-yandex:before {\n content: \"\\f413\"; }\n\n.fa-yandex-international:before {\n content: \"\\f414\"; }\n\n.fa-yarn:before {\n content: \"\\f7e3\"; }\n\n.fa-yelp:before {\n content: \"\\f1e9\"; }\n\n.fa-yen-sign:before {\n content: \"\\f157\"; }\n\n.fa-yin-yang:before {\n content: \"\\f6ad\"; }\n\n.fa-yoast:before {\n content: \"\\f2b1\"; }\n\n.fa-youtube:before {\n content: \"\\f167\"; }\n\n.fa-youtube-square:before {\n content: \"\\f431\"; }\n\n.fa-zhihu:before {\n content: \"\\f63f\"; }\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px; }\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto; }\n@font-face {\n font-family: 'Font Awesome 5 Brands';\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"../webfonts/fa-brands-400.eot\");\n src: url(\"../webfonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-brands-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-brands-400.woff\") format(\"woff\"), url(\"../webfonts/fa-brands-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-brands-400.svg#fontawesome\") format(\"svg\"); }\n\n.fab {\n font-family: 'Font Awesome 5 Brands';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 400;\n font-display: block;\n src: url(\"../webfonts/fa-regular-400.eot\");\n src: url(\"../webfonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-regular-400.woff2\") format(\"woff2\"), url(\"../webfonts/fa-regular-400.woff\") format(\"woff\"), url(\"../webfonts/fa-regular-400.ttf\") format(\"truetype\"), url(\"../webfonts/fa-regular-400.svg#fontawesome\") format(\"svg\"); }\n\n.far {\n font-family: 'Font Awesome 5 Free';\n font-weight: 400; }\n@font-face {\n font-family: 'Font Awesome 5 Free';\n font-style: normal;\n font-weight: 900;\n font-display: block;\n src: url(\"../webfonts/fa-solid-900.eot\");\n src: url(\"../webfonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url(\"../webfonts/fa-solid-900.woff2\") format(\"woff2\"), url(\"../webfonts/fa-solid-900.woff\") format(\"woff\"), url(\"../webfonts/fa-solid-900.ttf\") format(\"truetype\"), url(\"../webfonts/fa-solid-900.svg#fontawesome\") format(\"svg\"); }\n\n.fa,\n.fas {\n font-family: 'Font Awesome 5 Free';\n font-weight: 900; }\n","@import '@fortawesome/fontawesome-free/css/all.css';\n\n$background-base: #454545;\n$foreground-base: #9c9c9c;\n$background-z1: #333333;\n$foreground-z1: #b5b5b5;\n$background-z2: #252525;\n$foreground-z2: #b5b5b5;\n\n$color-danger: #c32222;\n$color-info: #0374a8;\n$color-success: #008000;\n$color-warning: #d99b0b;\n\nhtml, body {\n margin: 0;\n padding: 0;\n /* width: 100%;\n height: 100%; */\n font-family: monospace;\n overflow: hidden;\n font-family: 'Kufam', 'Courier new', 'monospace';\n}\n\nbody {\n // margin: 10px;\n background-color: $background-base;\n color: $foreground-base;\n}\n\n.app-info {\n position: absolute;\n top: 15px;\n left: 10px;\n left: max(env(safe-area-inset-left, 10px), 10px);\n\n h1 {\n font-size: 14px;\n margin: 0;\n color: $foreground-base;\n }\n .version {\n display: block;\n font-size: 9px;\n }\n}\n\n.statusline {\n position: absolute;\n display: flex;\n bottom: 0;\n left: 0;\n height: 40px;\n /* padding-left: 5px; */\n width: calc(100%);\n font-size: 12px;\n margin: 0;\n align-items: center;\n\n background-color: $background-z1;\n i {\n font-size: 14px;\n margin-right: 5px;\n }\n\n &-item {\n display: none;\n align-items: flex-start;\n margin-left: 5px;\n margin-right: 5px;\n font-size: 13px;\n\n color: $foreground-z1;\n\n .connected & { display: flex; }\n }\n\n &-item:first-child {\n margin-left: 10px;\n margin-left: calc(env(safe-area-inset-left) + 10px);\n }\n\n &-item:last-child {\n margin-right: 10px;\n margin-right: calc(env(safe-area-inset-right) + 10px);\n }\n}\n\n.connection {\n display: flex;\n color: $color-danger;\n\n &:after {\n display: block;\n content: \"DISCONNECTED\";\n }\n\n .connected & { color: $color-success; }\n .connected &:after {\n display: block;\n content: \"CONNECTED\";\n }\n}\n\n.arm {\n color: $color-danger;\n\n &:after {\n content: 'DISARMED';\n display: block;\n }\n\n .armed & {color: $color-success; }\n .armed &:after {\n content: 'ARMED';\n display: block;\n }\n}\n\n.ping {\n margin-left: auto;\n\n i {\n -webkit-animation: ping-fade-out 2s forwards; /* Safari 4+ */\n -moz-animation: ping-fade-out 2s forwards; /* Fx 2+ */\n -o-animation: ping-fade-out 2s forwards; /* Opera 12+ */\n animation: ping-fade-out 2s forwards; /* IE 10+, Fx 29+ */\n }\n\n @-webkit-keyframes ping-fade-out {\n 0% { opacity: 1; }\n 100% { opacity: 0; }\n }\n}\n\n.acc-string {\n display: none;\n position: absolute;\n top: 60px;\n left: calc(50% - 50px - 10px);\n width: 100px;\n text-align: center;\n background-color: #272727;\n padding: 0 10px;\n border-radius: 10px;\n font-size: 9px;\n\n .connected & { display: block; }\n}\n\nbutton:hover {\n filter: brightness(80%);\n}\nbutton:active {\n filter: brightness(70%);\n}\n\n.button-center {\n position: absolute;\n display: none;\n margin-top: 5px;\n border: none;\n background-color: $background-z1;\n color: $foreground-z1;\n padding: 10px;\n width: 140px;\n height: 40px;\n left: calc(50% - 70px);\n font-weight: 400;\n font-size: 15px;\n\n .armed & { display: block; }\n &-top { top: 10px; }\n &-bottom { bottom: 50px; }\n}\n\n#btn_connect { display: block; }\n.connected #btn_connect { display: none; }\n.connected #btn_disconnect { display: block; }\n.connected #btn_arm { display: block; }\n.armed #btn_arm { display: none; }\n\n#btn_connect, #btn_disconnect {\n text-shadow: 0 0 5px #c3c3c3, 0 0 10px #636363;\n}\n#btn_arm, #btn_disarm {\n color: red;\n text-shadow: 0 0 5px #c53f3f, 0 0 10px #c53f3f;\n}\n#btn_disarm{\n color: #00ff15;\n text-shadow: 0 0 5px #11b91f, 0 0 10px #297b30;\n}\n\n.joystick {\n position: absolute;\n width: 200px;\n height: 200px;\n top: calc(50% - 100px - 10px); /* 50% - half height - statusline height */\n /* border: 1px solid pink; */\n\n &-left { left: calc(25% - 100px); }\n &-right { left: calc(75% - 100px); }\n}\n\n\n.landscape-warning {\n display: none;\n position: absolute;\n z-index: 9999999;\n width: 100%;\n height: 100%;\n padding-top: 50%;\n background-color: $background-base;\n text-align: center;\n\n &-content {\n position: relative;\n top: -50px;\n }\n i { font-size: 5em; }\n h1 {\n font-size: 1em;\n margin: 10px;\n }\n button {\n border: none;\n background-color: $background-z1;\n color: $foreground-z1;\n padding: 10px;\n width: 140px;\n height: 40px;\n }\n\n .ignore-landscape-warning & { display: none !important; }\n}\n\n@media screen and (orientation:portrait) {\n .landscape-warning {\n display: block;\n }\n}\n\n.notification {\n background-color: $background-z2;\n color: $foreground-z2;\n overflow: hidden;\n display: flex;\n align-items: baseline;\n\n &-area {\n height: 100%;\n width: 100%;\n overflow: hidden;\n margin-left: 5px;\n margin-right: 5px;\n\n -webkit-animation: fade-in 0.5s linear; /* Safari 4+ */\n -moz-animation: fade-in 0.5s linear; /* Fx 2+ */\n -o-animation: fade-in 0.5s linear; /* Opera 12+ */\n animation: fade-in 0.5s linear; /* IE 10+, Fx 29+ */\n }\n\n &-content {\n margin-left: 5px;\n margin-right: 5px;\n width: 100%;\n overflow: hidden;\n }\n\n i {\n margin-left: 5px;\n margin-right: 5px;\n }\n\n i.alert { color: $color-danger; }\n i.info { color: $color-info; }\n i.success { color: $color-success; }\n i.warning { color: $color-warning; }\n\n p {\n width: max-content;\n -webkit-animation: scroll-text 5s linear; /* Safari 4+ */\n -moz-animation: scroll-text 5s linear; /* Fx 2+ */\n -o-animation: scroll-text 5s linear; /* Opera 12+ */\n animation: scroll-text 5s linear; /* IE 10+, Fx 29+ */\n }\n\n @-webkit-keyframes scroll-text {\n 0% { margin-left: 100%; }\n 100% { margin-left: -100%; }\n }\n\n @-webkit-keyframes fade-in {\n 0% { opacity: 1; }\n 100% { opacity: 0; }\n }\n}\n"]} \ No newline at end of file