diff --git a/README.md b/README.md
index 53c8950..622d926 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,11 @@ To install the latest version from
 [npm](https://www.npmjs.com)
 locally and save it in your `package.json` file:
 ```bash
-npm install --save phaser-ui-comps 
+npm install --save phaser-ui-comps
+```
+or if you are using [yarn](https://yarnpkg.com)
+```bash
+yarn add phaser-ui-comps
 ```
 
 Or you can download minified version from 
@@ -49,7 +53,7 @@ Or you can download minified version from
 
 Or use [jsdelivr cdn](https://www.jsdelivr.com/) version
 ```html
-<script src="https://cdn.jsdelivr.net/npm/phaser-ui-comps@0.1.2/dist/phaser-ui-comps-with-underscore.min.js"></script>
+<script src="https://cdn.jsdelivr.net/npm/phaser-ui-comps@1.0.6/dist/phaser-ui-comps-with-underscore.min.js"></script>
 ``` 
 
 *Note!*
diff --git a/dist/phaser-ui-comps-with-underscore.min.js b/dist/phaser-ui-comps-with-underscore.min.js
deleted file mode 100644
index 4becce4..0000000
--- a/dist/phaser-ui-comps-with-underscore.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("phaser")):"function"==typeof define&&define.amd?define(["phaser"],e):"object"==typeof exports?exports.PhaserComps=e(require("phaser")):t.PhaserComps=e(t.Phaser)}(window,function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=9)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(1),u=(r=o)&&r.__esModule?r:{default:r};var a="event_state",s=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r._parent=t,r._key=n,r._clip=null,r._texts={},n&&t&&t.on(a,r._onEventState,r),r._clipUpdate(),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,u.default.Events.EventEmitter),i(e,null,[{key:"EVENT_STATE",get:function(){return a}}]),i(e,[{key:"appendClip",value:function(t){this._clip!==t&&(null!==this._clip&&this.removeClip(),this._clip=t,this._clip&&this.onClipAppend(this._clip),this._clipProcess())}},{key:"onClipAppend",value:function(t){}},{key:"removeClip",value:function(){this.onClipRemove(this._clip),this._clip=null}},{key:"onClipRemove",value:function(t){}},{key:"doState",value:function(){var t=this.getStateId();this._setupState(t)}},{key:"getText",value:function(t){return this._texts[t]}},{key:"setText",value:function(t,e){if(this._texts[t]!==e&&(this._texts[t]=e,this._clip)){var n=this._clip.getChildText(t);n&&(n.text=e)}}},{key:"getStateId",value:function(){return"default"}},{key:"destroy",value:function(){this._parent&&this._parent.removeListener(a,this._onEventState),this._clip&&this._clip.destroy()}},{key:"_clipUpdate",value:function(){if(this._key)if(this._parent._clip){var t=this._parent._clip.getChildClip(this._key);this.appendClip(t)}else this.appendClip(null);else;}},{key:"_clipProcess",value:function(){this._clip&&(this.doState(),this.onClipProcess())}},{key:"onClipProcess",value:function(){}},{key:"_setupState",value:function(t){if(this._clip)for(var e in this._clip.setState(t),this._texts){var n=this._clip.getChildText(e);n&&(n.text=this._texts[e])}this.emit(a)}},{key:"_onEventState",value:function(){this._clipUpdate()}}]),e}();e.default=s},function(e,n){e.exports=t},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(0),u=(r=o)&&r.__esModule?r:{default:r};var a=function(t){function e(t,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return i._enable=!0,i._isPressed=!1,i._isOver=!1,r&&(i.label=r),i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,u.default),i(e,null,[{key:"EVENT_CLICK",get:function(){return"event_click"}}]),i(e,[{key:"onClipAppend",value:function(t){this._updateInteractive()}},{key:"onClipRemove",value:function(t){var e=t.getChildClip("HIT_ZONE");e&&this._removeInteractive(e)}},{key:"_setupInteractive",value:function(t){t.setInteractive({useHandCursor:!0}),t.on("pointerdown",this._onPointerDown,this),t.on("pointerup",this._onPointerUp,this),t.on("pointerover",this._onPointerOver,this),t.on("pointerout",this._onPointerOut,this)}},{key:"_removeInteractive",value:function(t){t.disableInteractive(),t.removeListener("pointerdown",this._onPointerDown,this),t.removeListener("pointerup",this._onPointerUp,this),t.removeListener("pointerover",this._onPointerOver,this),t.removeListener("pointerout",this._onPointerOut,this)}},{key:"_updateInteractive",value:function(){if(this._clip){var t=this._clip.getChildClip("HIT_ZONE");t&&(this.enable?this._setupInteractive(t):this._removeInteractive(t))}}},{key:"getStateId",value:function(){return this.enable?this._isPressed?this.STATE_DOWN:this._isOver?this.STATE_OVER:this.STATE_UP:this.STATE_DISABLE}},{key:"_onClick",value:function(){this.emit("event_click")}},{key:"_onPointerOut",value:function(){this._isOver=!1,this._isPressed=!1,this.doState()}},{key:"_onPointerOver",value:function(){this._isOver=!0,this.doState()}},{key:"_onPointerDown",value:function(){this._isPressed=!0,this.doState()}},{key:"_onPointerUp",value:function(){var t=this._isPressed&&this._isOver;this._isPressed=!1,this.doState(),t&&this._onClick()}},{key:"destroy",value:function(){if(this._clip){var t=this._clip.getChildClip("HIT_ZONE");t&&this._removeInteractive(t)}(function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var u=i.get;return void 0!==u?u.call(r):void 0})(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this)}},{key:"label",get:function(){return this.getText("label")},set:function(t){this.setText("label",t)}},{key:"enable",get:function(){return this._enable},set:function(t){this._enable!==t&&(this._enable=t,this._updateInteractive(),this.doState())}},{key:"STATE_UP",get:function(){return"up"}},{key:"STATE_DOWN",get:function(){return"down"}},{key:"STATE_OVER",get:function(){return"over"}},{key:"STATE_DISABLE",get:function(){return"disable"}}]),e}();e.default=a},function(t,e,n){(function(t,n){var r;!function(){var i="object"==typeof self&&self.self===self&&self||"object"==typeof t&&t.global===t&&t||this||{},o=i._,u=Array.prototype,a=Object.prototype,s="undefined"!=typeof Symbol?Symbol.prototype:null,l=u.push,c=u.slice,f=a.toString,p=a.hasOwnProperty,h=Array.isArray,_=Object.keys,v=Object.create,y=function(){},d=function(t){return t instanceof d?t:this instanceof d?void(this._wrapped=t):new d(t)};e.nodeType?i._=d:(!n.nodeType&&n.exports&&(e=n.exports=d),e._=d),d.VERSION="1.9.1";var g,b=function(t,e,n){if(void 0===e)return t;switch(null==n?3:n){case 1:return function(n){return t.call(e,n)};case 3:return function(n,r,i){return t.call(e,n,r,i)};case 4:return function(n,r,i,o){return t.call(e,n,r,i,o)}}return function(){return t.apply(e,arguments)}},m=function(t,e,n){return d.iteratee!==g?d.iteratee(t,e):null==t?d.identity:d.isFunction(t)?b(t,e,n):d.isObject(t)&&!d.isArray(t)?d.matcher(t):d.property(t)};d.iteratee=g=function(t,e){return m(t,e,1/0)};var O=function(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i<n;i++)r[i]=arguments[i+e];switch(e){case 0:return t.call(this,r);case 1:return t.call(this,arguments[0],r);case 2:return t.call(this,arguments[0],arguments[1],r)}var o=Array(e+1);for(i=0;i<e;i++)o[i]=arguments[i];return o[e]=r,t.apply(this,o)}},C=function(t){if(!d.isObject(t))return{};if(v)return v(t);y.prototype=t;var e=new y;return y.prototype=null,e},k=function(t){return function(e){return null==e?void 0:e[t]}},w=function(t,e){return null!=t&&p.call(t,e)},P=function(t,e){for(var n=e.length,r=0;r<n;r++){if(null==t)return;t=t[e[r]]}return n?t:void 0},j=Math.pow(2,53)-1,S=k("length"),x=function(t){var e=S(t);return"number"==typeof e&&e>=0&&e<=j};d.each=d.forEach=function(t,e,n){var r,i;if(e=b(e,n),x(t))for(r=0,i=t.length;r<i;r++)e(t[r],r,t);else{var o=d.keys(t);for(r=0,i=o.length;r<i;r++)e(t[o[r]],o[r],t)}return t},d.map=d.collect=function(t,e,n){e=m(e,n);for(var r=!x(t)&&d.keys(t),i=(r||t).length,o=Array(i),u=0;u<i;u++){var a=r?r[u]:u;o[u]=e(t[a],a,t)}return o};var I=function(t){return function(e,n,r,i){var o=arguments.length>=3;return function(e,n,r,i){var o=!x(e)&&d.keys(e),u=(o||e).length,a=t>0?0:u-1;for(i||(r=e[o?o[a]:a],a+=t);a>=0&&a<u;a+=t){var s=o?o[a]:a;r=n(r,e[s],s,e)}return r}(e,b(n,i,4),r,o)}};d.reduce=d.foldl=d.inject=I(1),d.reduceRight=d.foldr=I(-1),d.find=d.detect=function(t,e,n){var r=(x(t)?d.findIndex:d.findKey)(t,e,n);if(void 0!==r&&-1!==r)return t[r]},d.filter=d.select=function(t,e,n){var r=[];return e=m(e,n),d.each(t,function(t,n,i){e(t,n,i)&&r.push(t)}),r},d.reject=function(t,e,n){return d.filter(t,d.negate(m(e)),n)},d.every=d.all=function(t,e,n){e=m(e,n);for(var r=!x(t)&&d.keys(t),i=(r||t).length,o=0;o<i;o++){var u=r?r[o]:o;if(!e(t[u],u,t))return!1}return!0},d.some=d.any=function(t,e,n){e=m(e,n);for(var r=!x(t)&&d.keys(t),i=(r||t).length,o=0;o<i;o++){var u=r?r[o]:o;if(e(t[u],u,t))return!0}return!1},d.contains=d.includes=d.include=function(t,e,n,r){return x(t)||(t=d.values(t)),("number"!=typeof n||r)&&(n=0),d.indexOf(t,e,n)>=0},d.invoke=O(function(t,e,n){var r,i;return d.isFunction(e)?i=e:d.isArray(e)&&(r=e.slice(0,-1),e=e[e.length-1]),d.map(t,function(t){var o=i;if(!o){if(r&&r.length&&(t=P(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)})}),d.pluck=function(t,e){return d.map(t,d.property(e))},d.where=function(t,e){return d.filter(t,d.matcher(e))},d.findWhere=function(t,e){return d.find(t,d.matcher(e))},d.max=function(t,e,n){var r,i,o=-1/0,u=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,s=(t=x(t)?t:d.values(t)).length;a<s;a++)null!=(r=t[a])&&r>o&&(o=r);else e=m(e,n),d.each(t,function(t,n,r){((i=e(t,n,r))>u||i===-1/0&&o===-1/0)&&(o=t,u=i)});return o},d.min=function(t,e,n){var r,i,o=1/0,u=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,s=(t=x(t)?t:d.values(t)).length;a<s;a++)null!=(r=t[a])&&r<o&&(o=r);else e=m(e,n),d.each(t,function(t,n,r){((i=e(t,n,r))<u||i===1/0&&o===1/0)&&(o=t,u=i)});return o},d.shuffle=function(t){return d.sample(t,1/0)},d.sample=function(t,e,n){if(null==e||n)return x(t)||(t=d.values(t)),t[d.random(t.length-1)];var r=x(t)?d.clone(t):d.values(t),i=S(r);e=Math.max(Math.min(e,i),0);for(var o=i-1,u=0;u<e;u++){var a=d.random(u,o),s=r[u];r[u]=r[a],r[a]=s}return r.slice(0,e)},d.sortBy=function(t,e,n){var r=0;return e=m(e,n),d.pluck(d.map(t,function(t,n,i){return{value:t,index:r++,criteria:e(t,n,i)}}).sort(function(t,e){var n=t.criteria,r=e.criteria;if(n!==r){if(n>r||void 0===n)return 1;if(n<r||void 0===r)return-1}return t.index-e.index}),"value")};var E=function(t,e){return function(n,r,i){var o=e?[[],[]]:{};return r=m(r,i),d.each(n,function(e,i){var u=r(e,i,n);t(o,e,u)}),o}};d.groupBy=E(function(t,e,n){w(t,n)?t[n].push(e):t[n]=[e]}),d.indexBy=E(function(t,e,n){t[n]=e}),d.countBy=E(function(t,e,n){w(t,n)?t[n]++:t[n]=1});var T=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;d.toArray=function(t){return t?d.isArray(t)?c.call(t):d.isString(t)?t.match(T):x(t)?d.map(t,d.identity):d.values(t):[]},d.size=function(t){return null==t?0:x(t)?t.length:d.keys(t).length},d.partition=E(function(t,e,n){t[n?0:1].push(e)},!0),d.first=d.head=d.take=function(t,e,n){return null==t||t.length<1?null==e?void 0:[]:null==e||n?t[0]:d.initial(t,t.length-e)},d.initial=function(t,e,n){return c.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))},d.last=function(t,e,n){return null==t||t.length<1?null==e?void 0:[]:null==e||n?t[t.length-1]:d.rest(t,Math.max(0,t.length-e))},d.rest=d.tail=d.drop=function(t,e,n){return c.call(t,null==e||n?1:e)},d.compact=function(t){return d.filter(t,Boolean)};var A=function(t,e,n,r){for(var i=(r=r||[]).length,o=0,u=S(t);o<u;o++){var a=t[o];if(x(a)&&(d.isArray(a)||d.isArguments(a)))if(e)for(var s=0,l=a.length;s<l;)r[i++]=a[s++];else A(a,e,n,r),i=r.length;else n||(r[i++]=a)}return r};d.flatten=function(t,e){return A(t,e,!1)},d.without=O(function(t,e){return d.difference(t,e)}),d.uniq=d.unique=function(t,e,n,r){d.isBoolean(e)||(r=n,n=e,e=!1),null!=n&&(n=m(n,r));for(var i=[],o=[],u=0,a=S(t);u<a;u++){var s=t[u],l=n?n(s,u,t):s;e&&!n?(u&&o===l||i.push(s),o=l):n?d.contains(o,l)||(o.push(l),i.push(s)):d.contains(i,s)||i.push(s)}return i},d.union=O(function(t){return d.uniq(A(t,!0,!0))}),d.intersection=function(t){for(var e=[],n=arguments.length,r=0,i=S(t);r<i;r++){var o=t[r];if(!d.contains(e,o)){var u;for(u=1;u<n&&d.contains(arguments[u],o);u++);u===n&&e.push(o)}}return e},d.difference=O(function(t,e){return e=A(e,!0,!0),d.filter(t,function(t){return!d.contains(e,t)})}),d.unzip=function(t){for(var e=t&&d.max(t,S).length||0,n=Array(e),r=0;r<e;r++)n[r]=d.pluck(t,r);return n},d.zip=O(d.unzip),d.object=function(t,e){for(var n={},r=0,i=S(t);r<i;r++)e?n[t[r]]=e[r]:n[t[r][0]]=t[r][1];return n};var M=function(t){return function(e,n,r){n=m(n,r);for(var i=S(e),o=t>0?0:i-1;o>=0&&o<i;o+=t)if(n(e[o],o,e))return o;return-1}};d.findIndex=M(1),d.findLastIndex=M(-1),d.sortedIndex=function(t,e,n,r){for(var i=(n=m(n,r,1))(e),o=0,u=S(t);o<u;){var a=Math.floor((o+u)/2);n(t[a])<i?o=a+1:u=a}return o};var B=function(t,e,n){return function(r,i,o){var u=0,a=S(r);if("number"==typeof o)t>0?u=o>=0?o:Math.max(o+a,u):a=o>=0?Math.min(o+1,a):o+a+1;else if(n&&o&&a)return r[o=n(r,i)]===i?o:-1;if(i!=i)return(o=e(c.call(r,u,a),d.isNaN))>=0?o+u:-1;for(o=t>0?u:a-1;o>=0&&o<a;o+=t)if(r[o]===i)return o;return-1}};d.indexOf=B(1,d.findIndex,d.sortedIndex),d.lastIndexOf=B(-1,d.findLastIndex),d.range=function(t,e,n){null==e&&(e=t||0,t=0),n||(n=e<t?-1:1);for(var r=Math.max(Math.ceil((e-t)/n),0),i=Array(r),o=0;o<r;o++,t+=n)i[o]=t;return i},d.chunk=function(t,e){if(null==e||e<1)return[];for(var n=[],r=0,i=t.length;r<i;)n.push(c.call(t,r,r+=e));return n};var F=function(t,e,n,r,i){if(!(r instanceof e))return t.apply(n,i);var o=C(t.prototype),u=t.apply(o,i);return d.isObject(u)?u:o};d.bind=O(function(t,e,n){if(!d.isFunction(t))throw new TypeError("Bind must be called on a function");var r=O(function(i){return F(t,r,e,this,n.concat(i))});return r}),d.partial=O(function(t,e){var n=d.partial.placeholder,r=function(){for(var i=0,o=e.length,u=Array(o),a=0;a<o;a++)u[a]=e[a]===n?arguments[i++]:e[a];for(;i<arguments.length;)u.push(arguments[i++]);return F(t,r,this,this,u)};return r}),d.partial.placeholder=d,d.bindAll=O(function(t,e){var n=(e=A(e,!1,!1)).length;if(n<1)throw new Error("bindAll must be passed function names");for(;n--;){var r=e[n];t[r]=d.bind(t[r],t)}}),d.memoize=function(t,e){var n=function(r){var i=n.cache,o=""+(e?e.apply(this,arguments):r);return w(i,o)||(i[o]=t.apply(this,arguments)),i[o]};return n.cache={},n},d.delay=O(function(t,e,n){return setTimeout(function(){return t.apply(null,n)},e)}),d.defer=d.partial(d.delay,d,1),d.throttle=function(t,e,n){var r,i,o,u,a=0;n||(n={});var s=function(){a=!1===n.leading?0:d.now(),r=null,u=t.apply(i,o),r||(i=o=null)},l=function(){var l=d.now();a||!1!==n.leading||(a=l);var c=e-(l-a);return i=this,o=arguments,c<=0||c>e?(r&&(clearTimeout(r),r=null),a=l,u=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(s,c)),u};return l.cancel=function(){clearTimeout(r),a=0,r=i=o=null},l},d.debounce=function(t,e,n){var r,i,o=function(e,n){r=null,n&&(i=t.apply(e,n))},u=O(function(u){if(r&&clearTimeout(r),n){var a=!r;r=setTimeout(o,e),a&&(i=t.apply(this,u))}else r=d.delay(o,e,this,u);return i});return u.cancel=function(){clearTimeout(r),r=null},u},d.wrap=function(t,e){return d.partial(e,t)},d.negate=function(t){return function(){return!t.apply(this,arguments)}},d.compose=function(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}},d.after=function(t,e){return function(){if(--t<1)return e.apply(this,arguments)}},d.before=function(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}},d.once=d.partial(d.before,2),d.restArguments=O;var V=!{toString:null}.propertyIsEnumerable("toString"),D=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],N=function(t,e){var n=D.length,r=t.constructor,i=d.isFunction(r)&&r.prototype||a,o="constructor";for(w(t,o)&&!d.contains(e,o)&&e.push(o);n--;)(o=D[n])in t&&t[o]!==i[o]&&!d.contains(e,o)&&e.push(o)};d.keys=function(t){if(!d.isObject(t))return[];if(_)return _(t);var e=[];for(var n in t)w(t,n)&&e.push(n);return V&&N(t,e),e},d.allKeys=function(t){if(!d.isObject(t))return[];var e=[];for(var n in t)e.push(n);return V&&N(t,e),e},d.values=function(t){for(var e=d.keys(t),n=e.length,r=Array(n),i=0;i<n;i++)r[i]=t[e[i]];return r},d.mapObject=function(t,e,n){e=m(e,n);for(var r=d.keys(t),i=r.length,o={},u=0;u<i;u++){var a=r[u];o[a]=e(t[a],a,t)}return o},d.pairs=function(t){for(var e=d.keys(t),n=e.length,r=Array(n),i=0;i<n;i++)r[i]=[e[i],t[e[i]]];return r},d.invert=function(t){for(var e={},n=d.keys(t),r=0,i=n.length;r<i;r++)e[t[n[r]]]=n[r];return e},d.functions=d.methods=function(t){var e=[];for(var n in t)d.isFunction(t[n])&&e.push(n);return e.sort()};var X=function(t,e){return function(n){var r=arguments.length;if(e&&(n=Object(n)),r<2||null==n)return n;for(var i=1;i<r;i++)for(var o=arguments[i],u=t(o),a=u.length,s=0;s<a;s++){var l=u[s];e&&void 0!==n[l]||(n[l]=o[l])}return n}};d.extend=X(d.allKeys),d.extendOwn=d.assign=X(d.keys),d.findKey=function(t,e,n){e=m(e,n);for(var r,i=d.keys(t),o=0,u=i.length;o<u;o++)if(e(t[r=i[o]],r,t))return r};var Y,L,U=function(t,e,n){return e in n};d.pick=O(function(t,e){var n={},r=e[0];if(null==t)return n;d.isFunction(r)?(e.length>1&&(r=b(r,e[1])),e=d.allKeys(t)):(r=U,e=A(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i<o;i++){var u=e[i],a=t[u];r(a,u,t)&&(n[u]=a)}return n}),d.omit=O(function(t,e){var n,r=e[0];return d.isFunction(r)?(r=d.negate(r),e.length>1&&(n=e[1])):(e=d.map(A(e,!1,!1),String),r=function(t,n){return!d.contains(e,n)}),d.pick(t,r,n)}),d.defaults=X(d.allKeys,!0),d.create=function(t,e){var n=C(t);return e&&d.extendOwn(n,e),n},d.clone=function(t){return d.isObject(t)?d.isArray(t)?t.slice():d.extend({},t):t},d.tap=function(t,e){return e(t),t},d.isMatch=function(t,e){var n=d.keys(e),r=n.length;if(null==t)return!r;for(var i=Object(t),o=0;o<r;o++){var u=n[o];if(e[u]!==i[u]||!(u in i))return!1}return!0},Y=function(t,e,n,r){if(t===e)return 0!==t||1/t==1/e;if(null==t||null==e)return!1;if(t!=t)return e!=e;var i=typeof t;return("function"===i||"object"===i||"object"==typeof e)&&L(t,e,n,r)},L=function(t,e,n,r){t instanceof d&&(t=t._wrapped),e instanceof d&&(e=e._wrapped);var i=f.call(t);if(i!==f.call(e))return!1;switch(i){case"[object RegExp]":case"[object String]":return""+t==""+e;case"[object Number]":return+t!=+t?+e!=+e:0==+t?1/+t==1/e:+t==+e;case"[object Date]":case"[object Boolean]":return+t==+e;case"[object Symbol]":return s.valueOf.call(t)===s.valueOf.call(e)}var o="[object Array]"===i;if(!o){if("object"!=typeof t||"object"!=typeof e)return!1;var u=t.constructor,a=e.constructor;if(u!==a&&!(d.isFunction(u)&&u instanceof u&&d.isFunction(a)&&a instanceof a)&&"constructor"in t&&"constructor"in e)return!1}r=r||[];for(var l=(n=n||[]).length;l--;)if(n[l]===t)return r[l]===e;if(n.push(t),r.push(e),o){if((l=t.length)!==e.length)return!1;for(;l--;)if(!Y(t[l],e[l],n,r))return!1}else{var c,p=d.keys(t);if(l=p.length,d.keys(e).length!==l)return!1;for(;l--;)if(c=p[l],!w(e,c)||!Y(t[c],e[c],n,r))return!1}return n.pop(),r.pop(),!0},d.isEqual=function(t,e){return Y(t,e)},d.isEmpty=function(t){return null==t||(x(t)&&(d.isArray(t)||d.isString(t)||d.isArguments(t))?0===t.length:0===d.keys(t).length)},d.isElement=function(t){return!(!t||1!==t.nodeType)},d.isArray=h||function(t){return"[object Array]"===f.call(t)},d.isObject=function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},d.each(["Arguments","Function","String","Number","Date","RegExp","Error","Symbol","Map","WeakMap","Set","WeakSet"],function(t){d["is"+t]=function(e){return f.call(e)==="[object "+t+"]"}}),d.isArguments(arguments)||(d.isArguments=function(t){return w(t,"callee")});var R=i.document&&i.document.childNodes;"object"!=typeof Int8Array&&"function"!=typeof R&&(d.isFunction=function(t){return"function"==typeof t||!1}),d.isFinite=function(t){return!d.isSymbol(t)&&isFinite(t)&&!isNaN(parseFloat(t))},d.isNaN=function(t){return d.isNumber(t)&&isNaN(t)},d.isBoolean=function(t){return!0===t||!1===t||"[object Boolean]"===f.call(t)},d.isNull=function(t){return null===t},d.isUndefined=function(t){return void 0===t},d.has=function(t,e){if(!d.isArray(e))return w(t,e);for(var n=e.length,r=0;r<n;r++){var i=e[r];if(null==t||!p.call(t,i))return!1;t=t[i]}return!!n},d.noConflict=function(){return i._=o,this},d.identity=function(t){return t},d.constant=function(t){return function(){return t}},d.noop=function(){},d.property=function(t){return d.isArray(t)?function(e){return P(e,t)}:k(t)},d.propertyOf=function(t){return null==t?function(){}:function(e){return d.isArray(e)?P(t,e):t[e]}},d.matcher=d.matches=function(t){return t=d.extendOwn({},t),function(e){return d.isMatch(e,t)}},d.times=function(t,e,n){var r=Array(Math.max(0,t));e=b(e,n,1);for(var i=0;i<t;i++)r[i]=e(i);return r},d.random=function(t,e){return null==e&&(e=t,t=0),t+Math.floor(Math.random()*(e-t+1))},d.now=Date.now||function(){return(new Date).getTime()};var K={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Z=d.invert(K),q=function(t){var e=function(e){return t[e]},n="(?:"+d.keys(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(t){return t=null==t?"":""+t,r.test(t)?t.replace(i,e):t}};d.escape=q(K),d.unescape=q(Z),d.result=function(t,e,n){d.isArray(e)||(e=[e]);var r=e.length;if(!r)return d.isFunction(n)?n.call(t):n;for(var i=0;i<r;i++){var o=null==t?void 0:t[e[i]];void 0===o&&(o=n,i=r),t=d.isFunction(o)?o.call(t):o}return t};var H=0;d.uniqueId=function(t){var e=++H+"";return t?t+e:e},d.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var z=/(.)^/,G={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},W=/\\|'|\r|\n|\u2028|\u2029/g,$=function(t){return"\\"+G[t]};d.template=function(t,e,n){!e&&n&&(e=n),e=d.defaults({},e,d.templateSettings);var r,i=RegExp([(e.escape||z).source,(e.interpolate||z).source,(e.evaluate||z).source].join("|")+"|$","g"),o=0,u="__p+='";t.replace(i,function(e,n,r,i,a){return u+=t.slice(o,a).replace(W,$),o=a+e.length,n?u+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?u+="'+\n((__t=("+r+"))==null?'':__t)+\n'":i&&(u+="';\n"+i+"\n__p+='"),e}),u+="';\n",e.variable||(u="with(obj||{}){\n"+u+"}\n"),u="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+u+"return __p;\n";try{r=new Function(e.variable||"obj","_",u)}catch(t){throw t.source=u,t}var a=function(t){return r.call(this,t,d)},s=e.variable||"obj";return a.source="function("+s+"){\n"+u+"}",a},d.chain=function(t){var e=d(t);return e._chain=!0,e};var J=function(t,e){return t._chain?d(e).chain():e};d.mixin=function(t){return d.each(d.functions(t),function(e){var n=d[e]=t[e];d.prototype[e]=function(){var t=[this._wrapped];return l.apply(t,arguments),J(this,n.apply(d,t))}}),d},d.mixin(d),d.each(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var e=u[t];d.prototype[t]=function(){var n=this._wrapped;return e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0],J(this,n)}}),d.each(["concat","join","slice"],function(t){var e=u[t];d.prototype[t]=function(){return J(this,e.apply(this._wrapped,arguments))}}),d.prototype.value=function(){return this._wrapped},d.prototype.valueOf=d.prototype.toJSON=d.prototype.value,d.prototype.toString=function(){return String(this._wrapped)},void 0===(r=function(){return d}.apply(e,[]))||(n.exports=r)}()}).call(this,n(4),n(11)(t))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=u(n(1)),o=u(n(3));function u(t){return t&&t.__esModule?t:{default:t}}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var s=function(){function t(e,n,r,i){a(this,t),this.scene=e,this.childrenList=[],this._groupConfig={x:0,y:0,scaleX:1,scaleY:1,angle:0,alpha:1,visible:!0},this._x=0,this._y=0,this._scaleX=1,this._scaleY=1,this._angle=0,this._angle=0,this._alpha=1,this._visible=!0,this._isChildComponent=i||!1,this._isChildComponent&&(this._container=e.add.container(0,0),this.childrenList.push(this._container)),this._config=n,this._key=n.key,this._textures=r,this.imageFramesMap={},this._stateManager=new c(this,n),this._childrenById={},this._createImagesMap(r),this._parseConfig()}return r(t,[{key:"setMask",value:function(t){o.default.each(this.childrenList,function(e){e.setMask(t)},this)}},{key:"getStateConfig",value:function(t){return this._stateManager.getStateConfigById(t)}},{key:"getStateIds",value:function(){return this._stateManager.stateIds}},{key:"setState",value:function(t,e){this._stateManager.setState(t,e)}},{key:"applyChildParams",value:function(e,n){this._childrenById.hasOwnProperty(e)&&t._setupCommonParams(this._childrenById[e],n,this._groupConfig)}},{key:"getChildClip",value:function(t){return this._stateManager.getActiveComponentByKey(t)}},{key:"getChildText",value:function(t){return this._stateManager.getActiveComponentByKey(t)}},{key:"destroy",value:function(){o.default.each(this.childrenList,function(t){t.destroy()},this)}},{key:"_createImagesMap",value:function(t){var e=this;o.default.each(t,function(t){var n=e.scene.textures.get(t);if(n){var r=n.getFrameNames();o.default.each(r,function(n){e.imageFramesMap[n]=t},e)}},this)}},{key:"_parseConfig",value:function(){var t=this;this._config.hasOwnProperty("children")&&o.default.each(this._config.children,function(e){t._createChildFromConfig(e)},this)}},{key:"_createChildFromConfig",value:function(e){var n=this,r=null,i=null,u=e.childId,a=e.key;if("image"===e.type?r=this._createImageFromConfig(e):"text"===e.type?r=this._createTextFromConfig(e):"tileSprite"===e.type?r=this._createTileSpriteFromConfig(e):"component"===e.type?(r=new t(this.scene,e,this._textures,!0),t._setupCommonParams(r,e),i=r._container):"zone"===e.type?r=this._createHitZoneFromConfig(e):"polygon"===e.type&&(r=this._createPolygonFromConfig(e)),null!==r){if(null===i&&(i=r),this._childrenById[u]=r,e.hasOwnProperty("masking")){var s=r.createGeometryMask();o.default.each(e.masking,function(t){n._childrenById[t].setMask(s)},this)}this._isChildComponent?this._container.add(i):this.childrenList.push(r),this._stateManager.addComponent(r,u,a)}}},{key:"_createPolygonFromConfig",value:function(e){var n=this.scene.make.graphics();n.fillStyle(e.color,e.hasOwnProperty("alpha")?e.alpha:1),n.beginPath();for(var r=e.vertices,i=r.length,o=0;o<i;o+=2)n.lineTo(r[o],r[o+1]);return n.closePath(),n.fillPath(),t._setupCommonParams(n,e),e.hasOwnProperty("masking")||this.scene.add.existing(n),n}},{key:"_createTileSpriteFromConfig",value:function(e){var n=this.scene.add.tileSprite(0,0,e.width,e.height,this.imageFramesMap[e.image],e.image);return n.setOrigin(.5,.5),t._setupCommonParams(n,e),n}},{key:"_createImageFromConfig",value:function(e){var n=this.scene.add.image(0,0,this.imageFramesMap[e.image],e.image);return n.setOrigin(0),t._setupCommonParams(n,e),n}},{key:"_createTextFromConfig",value:function(e){var n=this.scene.add.text(0,0,e.text,e.textStyle);return"center"===e.textStyle.align?n.setOrigin(.5,0):"right"===e.textStyle.align?n.setOrigin(1,0):n.setOrigin(0),t._setupCommonParams(n,e),n}},{key:"_createHitZoneFromConfig",value:function(t){return this.scene.add.zone(t.x||0,t.y||0,t.width,t.height).setOrigin(0)}},{key:"groupX",get:function(){return this._groupConfig.x},set:function(t){if(this._groupConfig.x!==t){var e=t-this._groupConfig.x;this._groupConfig.x=t,this.x+=e}}},{key:"groupY",get:function(){return this._groupConfig.y},set:function(t){if(this._groupConfig.y!==t){var e=t-this._groupConfig.y;this._groupConfig.y=t,this.y+=e}}},{key:"groupScaleX",get:function(){return this._groupConfig.scaleX},set:function(t){if(this._groupConfig.scaleX!==t){var e=t/this._groupConfig.scaleX;this._groupConfig.scaleX=t,this.scaleX*=e}}},{key:"groupScaleY",get:function(){return this._groupConfig.scaleY},set:function(t){if(this._groupConfig.scaleY!==t){var e=t/this._groupConfig.scaleY;this._groupConfig.scaleY=t,this.scaleY*=e}}},{key:"groupAlpha",get:function(){return this._groupConfig.alpha},set:function(t){if(this._groupConfig.alpha!==t){var e=t/this._groupConfig.alpha;this._groupConfig.alpha=t,this.alpha*=e}}},{key:"groupVisible",get:function(){return this._groupConfig.visible},set:function(t){this._groupConfig.visible!==t&&(this._groupConfig.visible=t,this._stateManager.setupState())}},{key:"x",get:function(){return this._x},set:function(t){var e=t-this.x;i.default.Actions.IncX(this.childrenList,e),this._x=t}},{key:"y",get:function(){return this._y},set:function(t){var e=t-this.y;i.default.Actions.IncY(this.childrenList,e),this._y=t}},{key:"visible",get:function(){return this._visible},set:function(t){this._visible!==t&&(this._visible=t,i.default.Actions.SetVisible(this.childrenList,t))}},{key:"alpha",get:function(){return this._alpha},set:function(t){this._alpha!==t&&(this._alpha=t,i.default.Actions.SetAlpha(this.childrenList,t))}},{key:"scaleX",get:function(){return this._scaleX},set:function(t){this._scaleX!==t&&(this._scaleX=t,i.default.Actions.SetScaleX(this.childrenList,t))}},{key:"scaleY",get:function(){return this._scaleY},set:function(t){this._scaleY!==t&&(this._scaleY=t,i.default.Actions.SetScaleY(this.childrenList,t))}},{key:"angle",get:function(){return this._angle},set:function(t){this._angle!==t&&i.default.Actions.PropertyValueSet(this.childrenList,"angle",t)}}],[{key:"_setupCommonParams",value:function(t,e,n){var r=e.x||0,i=e.y||0,o=e.scaleX||1,u=e.scaleY||1,a=e.angle||0,s=e.hasOwnProperty("alpha")?e.alpha:1;n&&(r+=n.x,i+=n.y,o*=n.scaleX,u*=n.scaleY,a+=n.angle,s*=n.alpha),t.x=r,t.y=i,t.scaleX=o,t.scaleY=u,t.angle=a,t.alpha=s}}]),t}();e.default=s;var l=function t(e){a(this,t),this.config=e,this.componentIds=[],this.componentIds=Object.keys(e)},c=function(){function t(e,n){a(this,t),this._clip=e,this._dynamicChildrenIds=[],this._states={},this.stateIds=[],this._components={},this._currentState=null,this._currentStateId=null,this._componentKeys={},this._residentComponentsByKey={};var r=[];for(var i in n.states){this.stateIds.push(i);var u=new l(n.states[i]);this._states[i]=u,r.push(u.componentIds)}this._dynamicChildrenIds=o.default.uniq(o.default.flatten(r))}return r(t,[{key:"getStateConfigById",value:function(t){return this._states.hasOwnProperty(t)?this._states[t].config:null}},{key:"addComponent",value:function(t,e,n){-1===o.default.indexOf(this._dynamicChildrenIds,e)?void 0!==n&&(this._residentComponentsByKey[n]=t):(this._components[e]=t,void 0!==n&&(this._componentKeys[e]=n))}},{key:"setState",value:function(t,e){(this._currentStateId!==t||e)&&this._states.hasOwnProperty(t)&&(this._currentStateId=t,this._currentState=this._states[t],this.setupState())}},{key:"getActiveComponentByKey",value:function(t){if(this._residentComponentsByKey.hasOwnProperty(t))return this._residentComponentsByKey[t];if(null===this._currentState)return null;for(var e in this._currentState.componentIds){var n=this._currentState.componentIds[e];if(this._componentKeys[n]===t)return this._components[n]}return null}},{key:"setupState",value:function(){var t=this,e=this._currentState.componentIds,n=o.default.difference(this._dynamicChildrenIds,e);o.default.each(n,function(e){t._components[e].visible=!1},this),o.default.each(e,function(e){var n=t._components[e];n.visible=t._clip._groupConfig.visible,s._setupCommonParams(n,t._currentState.config[e],t._clip._groupConfig)},this)}}]),t}()},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var u=i.get;return void 0!==u?u.call(r):void 0},u=n(2),a=(r=u)&&r.__esModule?r:{default:r};var s=function(t){function e(t,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n,r));return i._select=!1,i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,a.default),i(e,[{key:"getStateId",value:function(){return o(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"getStateId",this).call(this)+(this._select?"_select":"")}},{key:"_onClick",value:function(){this._select=!this._select,this.doState(),o(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_onClick",this).call(this)}},{key:"select",get:function(){return this._select},set:function(t){this._select!==t&&(this._select=t,this.doState())}}]),e}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var u=i.get;return void 0!==u?u.call(r):void 0},o=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),u=n(2),a=(r=u)&&r.__esModule?r:{default:r};var s=function(t){function e(t,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n,r));return i._dragBounds={minX:0,maxX:0,minY:0,maxY:0},i._startDragX=0,i._startDragY=0,i._dragZone=null,i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,a.default),o(e,null,[{key:"EVENT_DRAG",get:function(){return"event_drag"}}]),o(e,[{key:"setDragBounds",value:function(t,e,n,r){this._dragBounds.minX=t,this._dragBounds.maxX=n,this._dragBounds.minY=e,this._dragBounds.maxY=r}},{key:"_onDragStart",value:function(t,e){this._dragZone&&this._dragZone===e&&this._clip&&(this._startDragX=this._clip.x-e.input.dragStartX,this._startDragY=this._clip.y-e.input.dragStartY)}},{key:"_onDrag",value:function(t,e,n,r){if(this._dragZone&&this._dragZone===e&&!this.clip){var i=this._startDragX+n,o=this._startDragY+r;i<this._dragBounds.minX?i=this._dragBounds.minX:i>this._dragBounds.maxX&&(i=this._dragBounds.maxX),o<this._dragBounds.minY?o=this._dragBounds.minY:o>this._dragBounds.maxY&&(o=this._dragBounds.maxY),this.emit("event_drag",i,o)}}},{key:"_setupInteractive",value:function(t){i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_setupInteractive",this).call(this,t),this._dragZone=t,t.scene.input.setDraggable(t,!0),t.scene.input.on("dragstart",this._onDragStart,this),t.scene.input.on("drag",this._onDrag,this)}},{key:"_removeInteractive",value:function(t){i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_removeInteractive",this).call(this,t),this._dragZone=null,t.scene.input.setDraggable(t,!1),t.scene.input.removeListener("dragstart",this._onDragStart),t.scene.input.removeListener("drag",this._onDrag)}}]),e}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var u=i.get;return void 0!==u?u.call(r):void 0},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=s(n(0)),u=s(n(2)),a=s(n(7));function s(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function e(t,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return i._vertical=r||!1,i._value=0,i._minValue=0,i._maxValue=1,i._valueStep=0,i._buttonStep=.1,i.btnPrev=new u.default(i,"btn_up"),i.btnPrev.on(u.default.EVENT_CLICK,i.onPrevClick,i),i.btnNext=new u.default(i,"btn_down"),i.btnNext.on(u.default.EVENT_CLICK,i.onNextClick,i),i.thumb=new a.default(i,"thumb"),i.thumb.on(a.default.EVENT_DRAG,i._onThumbDrag,i),i._trackStart=0,i._trackLength=100,i._thumbClip=null,i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,o.default),i(e,null,[{key:"EVENT_CHANGE",get:function(){return"event_change"}}]),i(e,[{key:"setValueBounds",value:function(t,e,n){this._minValue=t,this._maxValue=e,void 0!==n?(this._valueStep=n,this._buttonStep<n&&(this._buttonStep=n)):this._valueStep=0}},{key:"setButtonStep",value:function(t){this._buttonStep=t}},{key:"onClipAppend",value:function(t){r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipAppend",this).call(this,t),this._updateClips()}},{key:"_updateClips",value:function(){if(this._clip){this._thumbClip=this.thumb._clip;var t=this._clip.getChildClip("DIMENSIONS");t&&(this._trackStart=this._vertical?t.y:t.x,this._trackLength=this._vertical?t.height:t.width,this._thumbClip&&this.thumb.setDragBounds(this._vertical?this._thumbClip.x:t.x,this._vertical?t.y:this._thumbClip.y,this._vertical?this._thumbClip.x:t.x+t.width,this._vertical?t.y+t.height:this._thumbClip.y));var e=this._clip.getChildClip("HIT_ZONE");e&&e.on("pointerdown",this._onZoneDown,this),this._updateThumbFromValue()}}},{key:"onClipProcess",value:function(){r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipProcess",this).call(this),this.thumb&&this._updateClips()}},{key:"onPrevClick",value:function(){this.value-=this._buttonStep}},{key:"onNextClick",value:function(){this.value+=this._buttonStep}},{key:"_updateThumbFromValue",value:function(){if(this._thumbClip){var t=Math.round(this._trackStart+this._trackLength*this._value);this._vertical?this._thumbClip.y=t:this._thumbClip.x=t,this.emit("event_change",this.value)}}},{key:"_onThumbDrag",value:function(t,e){if(0!==this._trackLength){var n=((this._vertical?e:t)-this._trackStart)/this._trackLength*(this._maxValue-this._minValue);0!==this._valueStep&&(n=Math.round(n/this._valueStep)*this._valueStep),this.value=n+this._minValue}}},{key:"_onZoneDown",value:function(){}},{key:"value",get:function(){var t=this._value*(this._maxValue-this._minValue);return 0===this._valueStep?t+this._minValue:(t=Math.round(t/this._valueStep)*this._valueStep)+this._minValue},set:function(t){var e=(t-this._minValue)/(this._maxValue-this._minValue);e<0&&(e=0),e>1&&(e=1),e!==this._value&&(this._value=e,this._updateThumbFromValue())}}]),e}();e.default=l},function(t,e,n){t.exports=n(10)},function(t,e,n){"use strict";(function(e){var r=u(n(5)),i=u(n(12)),o=u(n(17));function u(t){return t&&t.__esModule?t:{default:t}}var a={ComponentClip:r.default,UIComponents:i.default,Plugin:o.default};t.exports=a,e.PhaserComps=a}).call(this,n(4))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=p(n(2)),i=p(n(13)),o=p(n(0)),u=p(n(6)),a=p(n(7)),s=p(n(8)),l=p(n(14)),c=p(n(15)),f=p(n(16));function p(t){return t&&t.__esModule?t:{default:t}}var h={UIComponentPrototype:o.default,UIButton:r.default,UIButtonSelect:u.default,UIButtonRadio:i.default,UIButtonDraggable:a.default,UIScrollBar:s.default,UIScrollPanel:l.default,UIProgressBar:c.default,UIContainer:f.default};e.default=h},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(6),u=(r=o)&&r.__esModule?r:{default:r};var a=function(t){function e(t,n,r,i,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var u=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n,r));return u._sibling=u,u._value=i,void 0!==o&&u.appendToRadio(o),u}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,u.default),i(e,null,[{key:"EVENT_SELECT",get:function(){return"event_select"}}]),i(e,[{key:"appendToRadio",value:function(t){this._sibling!==this&&this.removeFromSibling(),this._sibling=t._sibling,t._sibling=this}},{key:"removeFromSibling",value:function(){}},{key:"_onClick",value:function(){this.select=!0}},{key:"_broadcastSelect",value:function(){this.emit("event_select",this.value);for(var t=this._sibling;t!==this;)t.emit("event_select",this._value),t=t._sibling}},{key:"select",get:function(){return function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var u=i.get;return void 0!==u?u.call(r):void 0}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"select",this)},set:function(t){if(this._select!==t&&(function t(e,n,r,i){var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var u=Object.getPrototypeOf(e);null!==u&&t(u,n,r,i)}else if("value"in o&&o.writable)o.value=r;else{var a=o.set;void 0!==a&&a.call(i,r)}return r}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"select",t,this),t)){for(var n=this._sibling;n!==this;)n.select=!1,n=n._sibling;this._broadcastSelect()}}},{key:"value",get:function(){return this._value},set:function(t){this._value=t}},{key:"valueSelected",get:function(){if(this.select)return this.value;for(var t=this._sibling;t!==this;){if(t.select)return t.value;t=t._sibling}return null},set:function(t){if(this.value!==t){for(var e=this._sibling;e!==this;)if(e.value===t)return void(e.select=!0)}else this.select=!0}}]),e}();e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=u(n(0)),o=u(n(8));function u(t){return t&&t.__esModule?t:{default:t}}var a=function(){function t(e,n,r,u,a){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._container=e,e.on(i.default.EVENT_STATE,this._onContainerUpdate,this),this._panelKey=n,this._dimensionsKey=u,this._scrollBar=new o.default(e,r,a),this._scrollBar.on(o.default.EVENT_CHANGE,this._onScrollBar,this),this._vertical=a||!1}return r(t,[{key:"_onContainerUpdate",value:function(){var t=this._container._clip;if(t){this._panel=t.getChildClip(this._panelKey);var e=t.getChildClip(this._dimensionsKey);this._panel&&e&&(this._scrollBounds={x:e.x,y:e.y,len:this._vertical?this._panel.height-e.height:this._panel.width-e.width},this._onScrollBar(this._onScrollBar.value))}}},{key:"_onScrollBar",value:function(t){this._panel&&this._scrollBounds&&(this._vertical?this._panel.y=this._scrollBounds.y-this._scrollBounds.len*t:this._panel.x=this._scrollBounds.x-this._scrollBounds.len*t)}}]),t}();e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(0),u=(r=o)&&r.__esModule?r:{default:r},a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(3));var s=/progress_(\d+)$/,l=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r._value=0,r._steps=[],r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,u.default),i(e,[{key:"onClipAppend",value:function(t){(function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var u=i.get;return void 0!==u?u.call(r):void 0})(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipAppend",this).call(this,t),this._makeSteps(t),this._applyValue()}},{key:"_applyValue",value:function(){if(this._clip){var t=void 0,e=void 0,n=void 0,r=void 0,i=void 0,o=void 0,u=this._steps.length;for(t=0;t<u-1;t++){var a=this._steps[t],s=this._steps[t+1];if(a.stepValue===this._value){i=a.config;break}if(s.stepValue===this._value){i=s.config;break}if(this._value>a.stepValue&&this._value<s.stepValue){e=a.config,n=s.config,r=(this._value-a.stepValue)/(s.stepValue-a.stepValue);break}}if(!i)for(o in i={},e)if(n.hasOwnProperty(o)){var l=e[o],c=n[o];i[o]={x:l.x+(c.x-l.x)*r,y:l.y+(c.y-l.y)*r,scaleX:l.scaleX+(c.scaleX-l.scaleX)*r,scaleY:l.scaleY+(c.scaleY-l.scaleY)*r,angle:l.angle+(c.angle-l.angle)*r,alpha:l.alpha+(c.alpha-l.alpha)*r}}for(o in i)this._clip.applyChildParams(o,i[o])}}},{key:"_makeSteps",value:function(t){var n=this,r=t.getStateIds();this._steps=[],a.each(r,function(r){if(s.test(r)){var i={},o={stepValue:parseInt(s.exec(r)[1])/100,config:i},u=t.getStateConfig(r);for(var a in u)i[a]=e._makeFullConfig(u[a]);n._steps.push(o)}},this),a.sortBy(this._steps,"stepValue")}},{key:"value",get:function(){return this._value},set:function(t){this._value=t,this._applyValue()}}],[{key:"_makeFullConfig",value:function(t){return{x:t.hasOwnProperty("x")?t.x:0,y:t.hasOwnProperty("y")?t.y:0,scaleX:t.hasOwnProperty("scaleX")?t.scaleX:1,scaleY:t.hasOwnProperty("scaleY")?t.scaleY:1,angle:t.hasOwnProperty("angle")?t.angle:0,alpha:t.hasOwnProperty("alpha")?t.alpha:1}}}]),e}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var u=i.get;return void 0!==u?u.call(r):void 0},o=a(n(0)),u=(a(n(1)),a(n(3)));function a(t){return t&&t.__esModule?t:{default:t}}var s=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r._children=[],r._containerClip=null,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,o.default),r(e,[{key:"addChild",value:function(t){return-1!==this._children.indexOf(t)?t:(this._children.push(t),this._containerClip?this._addUIComponentToContainerClip(t):t._clip.groupVisible=!1,t)}},{key:"removeChild",value:function(t){var e=this._children.indexOf(t);return-1===e?t:(this._children.splice(e,1),this._containerClip&&this._removeUIComponentFromContainerClip(t),t)}},{key:"_addUIComponentToContainerClip",value:function(t){var e=this;u.default.each(t._clip.childrenList,function(t){e._containerClip.add(t)},this),t._clip.groupVisible=!0}},{key:"_removeUIComponentFromContainerClip",value:function(t,e){var n=this;u.default.each(t._clip.childrenList,function(t){n._containerClip.remove(t,e)},this),t._clip.groupVisible=!1}},{key:"onClipAppend",value:function(t){var n=this;i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipAppend",this).call(this,t),this._containerClip=t._container,this._containerClip&&u.default.each(this._children,function(t){n._addUIComponentToContainerClip(t)},this)}},{key:"onClipRemove",value:function(t){var n=this;i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipRemove",this).call(this,t),this._containerClip&&u.default.each(this._children,function(t){n._removeUIComponentFromContainerClip(t)},this)}},{key:"destroy",value:function(){var t=this;u.default.each(this._children,function(e){t._containerClip&&t._removeUIComponentFromContainerClip(e),e.destroy()},this),this._children.length=0,i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this)}}]),e}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=u(n(1)),o=u(n(5));function u(t){return t&&t.__esModule?t:{default:t}}var a=function(t){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return t.registerGameObject("ui_component",n.addComponent,n.addComponent),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,i.default.Plugins.BasePlugin),r(e,[{key:"addComponent",value:function(t,e){return new o.default(this.scene,t,e)}}]),e}();e.default=a;var s={key:"UIComponents",plugin:a,start:!0};a.DefaultCfg=s}])});
\ No newline at end of file
diff --git a/dist/phaser-ui-comps.min.js b/dist/phaser-ui-comps.min.js
index 2abd2fe..894b580 100644
--- a/dist/phaser-ui-comps.min.js
+++ b/dist/phaser-ui-comps.min.js
@@ -1 +1,2 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("phaser"),require("underscore")):"function"==typeof define&&define.amd?define(["phaser","underscore"],e):"object"==typeof exports?exports.PhaserComps=e(require("phaser"),require("underscore")):t.PhaserComps=e(t.Phaser,t._)}(window,function(t,e){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=8)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=n(1),a=(i=o)&&i.__esModule?i:{default:i};var s="event_state",u=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return i._parent=t,i._key=n,i._clip=null,i._texts={},n&&t&&t.on(s,i._onEventState,i),i._clipUpdate(),i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,a.default.Events.EventEmitter),r(e,null,[{key:"EVENT_STATE",get:function(){return s}}]),r(e,[{key:"appendClip",value:function(t){this._clip!==t&&(null!==this._clip&&this.removeClip(),this._clip=t,this._clip&&this.onClipAppend(this._clip),this._clipProcess())}},{key:"onClipAppend",value:function(t){}},{key:"removeClip",value:function(){this.onClipRemove(this._clip),this._clip=null}},{key:"onClipRemove",value:function(t){}},{key:"doState",value:function(){var t=this.getStateId();this._setupState(t)}},{key:"getText",value:function(t){return this._texts[t]}},{key:"setText",value:function(t,e){if(this._texts[t]!==e&&(this._texts[t]=e,this._clip)){var n=this._clip.getChildText(t);n&&(n.text=e)}}},{key:"getStateId",value:function(){return"default"}},{key:"destroy",value:function(){this._parent&&this._parent.removeListener(s,this._onEventState),this._clip&&this._clip.destroy()}},{key:"_clipUpdate",value:function(){if(this._key)if(this._parent._clip){var t=this._parent._clip.getChildClip(this._key);this.appendClip(t)}else this.appendClip(null);else;}},{key:"_clipProcess",value:function(){this._clip&&(this.doState(),this.onClipProcess())}},{key:"onClipProcess",value:function(){}},{key:"_setupState",value:function(t){if(this._clip)for(var e in this._clip.setState(t),this._texts){var n=this._clip.getChildText(e);n&&(n.text=this._texts[e])}this.emit(s)}},{key:"_onEventState",value:function(){this._clipUpdate()}}]),e}();e.default=u},function(e,n){e.exports=t},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=n(0),a=(i=o)&&i.__esModule?i:{default:i};var s=function(t){function e(t,n,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r._enable=!0,r._isPressed=!1,r._isOver=!1,i&&(r.label=i),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,a.default),r(e,null,[{key:"EVENT_CLICK",get:function(){return"event_click"}}]),r(e,[{key:"onClipAppend",value:function(t){this._updateInteractive()}},{key:"onClipRemove",value:function(t){var e=t.getChildClip("HIT_ZONE");e&&this._removeInteractive(e)}},{key:"_setupInteractive",value:function(t){t.setInteractive({useHandCursor:!0}),t.on("pointerdown",this._onPointerDown,this),t.on("pointerup",this._onPointerUp,this),t.on("pointerover",this._onPointerOver,this),t.on("pointerout",this._onPointerOut,this)}},{key:"_removeInteractive",value:function(t){t.disableInteractive(),t.removeListener("pointerdown",this._onPointerDown,this),t.removeListener("pointerup",this._onPointerUp,this),t.removeListener("pointerover",this._onPointerOver,this),t.removeListener("pointerout",this._onPointerOut,this)}},{key:"_updateInteractive",value:function(){if(this._clip){var t=this._clip.getChildClip("HIT_ZONE");t&&(this.enable?this._setupInteractive(t):this._removeInteractive(t))}}},{key:"getStateId",value:function(){return this.enable?this._isPressed?this.STATE_DOWN:this._isOver?this.STATE_OVER:this.STATE_UP:this.STATE_DISABLE}},{key:"_onClick",value:function(){this.emit("event_click")}},{key:"_onPointerOut",value:function(){this._isOver=!1,this._isPressed=!1,this.doState()}},{key:"_onPointerOver",value:function(){this._isOver=!0,this.doState()}},{key:"_onPointerDown",value:function(){this._isPressed=!0,this.doState()}},{key:"_onPointerUp",value:function(){var t=this._isPressed&&this._isOver;this._isPressed=!1,this.doState(),t&&this._onClick()}},{key:"destroy",value:function(){if(this._clip){var t=this._clip.getChildClip("HIT_ZONE");t&&this._removeInteractive(t)}(function t(e,n,i){null===e&&(e=Function.prototype);var r=Object.getOwnPropertyDescriptor(e,n);if(void 0===r){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,i)}if("value"in r)return r.value;var a=r.get;return void 0!==a?a.call(i):void 0})(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this)}},{key:"label",get:function(){return this.getText("label")},set:function(t){this.setText("label",t)}},{key:"enable",get:function(){return this._enable},set:function(t){this._enable!==t&&(this._enable=t,this._updateInteractive(),this.doState())}},{key:"STATE_UP",get:function(){return"up"}},{key:"STATE_DOWN",get:function(){return"down"}},{key:"STATE_OVER",get:function(){return"over"}},{key:"STATE_DISABLE",get:function(){return"disable"}}]),e}();e.default=s},function(t,n){t.exports=e},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=a(n(1)),o=a(n(3));function a(t){return t&&t.__esModule?t:{default:t}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var u=function(){function t(e,n,i,r){s(this,t),this.scene=e,this.childrenList=[],this._groupConfig={x:0,y:0,scaleX:1,scaleY:1,angle:0,alpha:1,visible:!0},this._x=0,this._y=0,this._scaleX=1,this._scaleY=1,this._angle=0,this._angle=0,this._alpha=1,this._visible=!0,this._isChildComponent=r||!1,this._isChildComponent&&(this._container=e.add.container(0,0),this.childrenList.push(this._container)),this._config=n,this._key=n.key,this._textures=i,this.imageFramesMap={},this._stateManager=new c(this,n),this._childrenById={},this._createImagesMap(i),this._parseConfig()}return i(t,[{key:"setMask",value:function(t){o.default.each(this.childrenList,function(e){e.setMask(t)},this)}},{key:"getStateConfig",value:function(t){return this._stateManager.getStateConfigById(t)}},{key:"getStateIds",value:function(){return this._stateManager.stateIds}},{key:"setState",value:function(t,e){this._stateManager.setState(t,e)}},{key:"applyChildParams",value:function(e,n){this._childrenById.hasOwnProperty(e)&&t._setupCommonParams(this._childrenById[e],n,this._groupConfig)}},{key:"getChildClip",value:function(t){return this._stateManager.getActiveComponentByKey(t)}},{key:"getChildText",value:function(t){return this._stateManager.getActiveComponentByKey(t)}},{key:"destroy",value:function(){o.default.each(this.childrenList,function(t){t.destroy()},this)}},{key:"_createImagesMap",value:function(t){var e=this;o.default.each(t,function(t){var n=e.scene.textures.get(t);if(n){var i=n.getFrameNames();o.default.each(i,function(n){e.imageFramesMap[n]=t},e)}},this)}},{key:"_parseConfig",value:function(){var t=this;this._config.hasOwnProperty("children")&&o.default.each(this._config.children,function(e){t._createChildFromConfig(e)},this)}},{key:"_createChildFromConfig",value:function(e){var n=this,i=null,r=null,a=e.childId,s=e.key;if("image"===e.type?i=this._createImageFromConfig(e):"text"===e.type?i=this._createTextFromConfig(e):"tileSprite"===e.type?i=this._createTileSpriteFromConfig(e):"component"===e.type?(i=new t(this.scene,e,this._textures,!0),t._setupCommonParams(i,e),r=i._container):"zone"===e.type?i=this._createHitZoneFromConfig(e):"polygon"===e.type&&(i=this._createPolygonFromConfig(e)),null!==i){if(null===r&&(r=i),this._childrenById[a]=i,e.hasOwnProperty("masking")){var u=i.createGeometryMask();o.default.each(e.masking,function(t){n._childrenById[t].setMask(u)},this)}this._isChildComponent?this._container.add(r):this.childrenList.push(i),this._stateManager.addComponent(i,a,s)}}},{key:"_createPolygonFromConfig",value:function(e){var n=this.scene.make.graphics();n.fillStyle(e.color,e.hasOwnProperty("alpha")?e.alpha:1),n.beginPath();for(var i=e.vertices,r=i.length,o=0;o<r;o+=2)n.lineTo(i[o],i[o+1]);return n.closePath(),n.fillPath(),t._setupCommonParams(n,e),e.hasOwnProperty("masking")||this.scene.add.existing(n),n}},{key:"_createTileSpriteFromConfig",value:function(e){var n=this.scene.add.tileSprite(0,0,e.width,e.height,this.imageFramesMap[e.image],e.image);return n.setOrigin(.5,.5),t._setupCommonParams(n,e),n}},{key:"_createImageFromConfig",value:function(e){var n=this.scene.add.image(0,0,this.imageFramesMap[e.image],e.image);return n.setOrigin(0),t._setupCommonParams(n,e),n}},{key:"_createTextFromConfig",value:function(e){var n=this.scene.add.text(0,0,e.text,e.textStyle);return"center"===e.textStyle.align?n.setOrigin(.5,0):"right"===e.textStyle.align?n.setOrigin(1,0):n.setOrigin(0),t._setupCommonParams(n,e),n}},{key:"_createHitZoneFromConfig",value:function(t){return this.scene.add.zone(t.x||0,t.y||0,t.width,t.height).setOrigin(0)}},{key:"groupX",get:function(){return this._groupConfig.x},set:function(t){if(this._groupConfig.x!==t){var e=t-this._groupConfig.x;this._groupConfig.x=t,this.x+=e}}},{key:"groupY",get:function(){return this._groupConfig.y},set:function(t){if(this._groupConfig.y!==t){var e=t-this._groupConfig.y;this._groupConfig.y=t,this.y+=e}}},{key:"groupScaleX",get:function(){return this._groupConfig.scaleX},set:function(t){if(this._groupConfig.scaleX!==t){var e=t/this._groupConfig.scaleX;this._groupConfig.scaleX=t,this.scaleX*=e}}},{key:"groupScaleY",get:function(){return this._groupConfig.scaleY},set:function(t){if(this._groupConfig.scaleY!==t){var e=t/this._groupConfig.scaleY;this._groupConfig.scaleY=t,this.scaleY*=e}}},{key:"groupAlpha",get:function(){return this._groupConfig.alpha},set:function(t){if(this._groupConfig.alpha!==t){var e=t/this._groupConfig.alpha;this._groupConfig.alpha=t,this.alpha*=e}}},{key:"groupVisible",get:function(){return this._groupConfig.visible},set:function(t){this._groupConfig.visible!==t&&(this._groupConfig.visible=t,this._stateManager.setupState())}},{key:"x",get:function(){return this._x},set:function(t){var e=t-this.x;r.default.Actions.IncX(this.childrenList,e),this._x=t}},{key:"y",get:function(){return this._y},set:function(t){var e=t-this.y;r.default.Actions.IncY(this.childrenList,e),this._y=t}},{key:"visible",get:function(){return this._visible},set:function(t){this._visible!==t&&(this._visible=t,r.default.Actions.SetVisible(this.childrenList,t))}},{key:"alpha",get:function(){return this._alpha},set:function(t){this._alpha!==t&&(this._alpha=t,r.default.Actions.SetAlpha(this.childrenList,t))}},{key:"scaleX",get:function(){return this._scaleX},set:function(t){this._scaleX!==t&&(this._scaleX=t,r.default.Actions.SetScaleX(this.childrenList,t))}},{key:"scaleY",get:function(){return this._scaleY},set:function(t){this._scaleY!==t&&(this._scaleY=t,r.default.Actions.SetScaleY(this.childrenList,t))}},{key:"angle",get:function(){return this._angle},set:function(t){this._angle!==t&&r.default.Actions.PropertyValueSet(this.childrenList,"angle",t)}}],[{key:"_setupCommonParams",value:function(t,e,n){var i=e.x||0,r=e.y||0,o=e.scaleX||1,a=e.scaleY||1,s=e.angle||0,u=e.hasOwnProperty("alpha")?e.alpha:1;n&&(i+=n.x,r+=n.y,o*=n.scaleX,a*=n.scaleY,s+=n.angle,u*=n.alpha),t.x=i,t.y=r,t.scaleX=o,t.scaleY=a,t.angle=s,t.alpha=u}}]),t}();e.default=u;var l=function t(e){s(this,t),this.config=e,this.componentIds=[],this.componentIds=Object.keys(e)},c=function(){function t(e,n){s(this,t),this._clip=e,this._dynamicChildrenIds=[],this._states={},this.stateIds=[],this._components={},this._currentState=null,this._currentStateId=null,this._componentKeys={},this._residentComponentsByKey={};var i=[];for(var r in n.states){this.stateIds.push(r);var a=new l(n.states[r]);this._states[r]=a,i.push(a.componentIds)}this._dynamicChildrenIds=o.default.uniq(o.default.flatten(i))}return i(t,[{key:"getStateConfigById",value:function(t){return this._states.hasOwnProperty(t)?this._states[t].config:null}},{key:"addComponent",value:function(t,e,n){-1===o.default.indexOf(this._dynamicChildrenIds,e)?void 0!==n&&(this._residentComponentsByKey[n]=t):(this._components[e]=t,void 0!==n&&(this._componentKeys[e]=n))}},{key:"setState",value:function(t,e){(this._currentStateId!==t||e)&&this._states.hasOwnProperty(t)&&(this._currentStateId=t,this._currentState=this._states[t],this.setupState())}},{key:"getActiveComponentByKey",value:function(t){if(this._residentComponentsByKey.hasOwnProperty(t))return this._residentComponentsByKey[t];if(null===this._currentState)return null;for(var e in this._currentState.componentIds){var n=this._currentState.componentIds[e];if(this._componentKeys[n]===t)return this._components[n]}return null}},{key:"setupState",value:function(){var t=this,e=this._currentState.componentIds,n=o.default.difference(this._dynamicChildrenIds,e);o.default.each(n,function(e){t._components[e].visible=!1},this),o.default.each(e,function(e){var n=t._components[e];n.visible=t._clip._groupConfig.visible,u._setupCommonParams(n,t._currentState.config[e],t._clip._groupConfig)},this)}}]),t}()},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=function t(e,n,i){null===e&&(e=Function.prototype);var r=Object.getOwnPropertyDescriptor(e,n);if(void 0===r){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,i)}if("value"in r)return r.value;var a=r.get;return void 0!==a?a.call(i):void 0},a=n(2),s=(i=a)&&i.__esModule?i:{default:i};var u=function(t){function e(t,n,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n,i));return r._select=!1,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,s.default),r(e,[{key:"getStateId",value:function(){return o(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"getStateId",this).call(this)+(this._select?"_select":"")}},{key:"_onClick",value:function(){this._select=!this._select,this.doState(),o(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_onClick",this).call(this)}},{key:"select",get:function(){return this._select},set:function(t){this._select!==t&&(this._select=t,this.doState())}}]),e}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function t(e,n,i){null===e&&(e=Function.prototype);var r=Object.getOwnPropertyDescriptor(e,n);if(void 0===r){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,i)}if("value"in r)return r.value;var a=r.get;return void 0!==a?a.call(i):void 0},o=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),a=n(2),s=(i=a)&&i.__esModule?i:{default:i};var u=function(t){function e(t,n,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n,i));return r._dragBounds={minX:0,maxX:0,minY:0,maxY:0},r._startDragX=0,r._startDragY=0,r._dragZone=null,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,s.default),o(e,null,[{key:"EVENT_DRAG",get:function(){return"event_drag"}}]),o(e,[{key:"setDragBounds",value:function(t,e,n,i){this._dragBounds.minX=t,this._dragBounds.maxX=n,this._dragBounds.minY=e,this._dragBounds.maxY=i}},{key:"_onDragStart",value:function(t,e){this._dragZone&&this._dragZone===e&&this._clip&&(this._startDragX=this._clip.x-e.input.dragStartX,this._startDragY=this._clip.y-e.input.dragStartY)}},{key:"_onDrag",value:function(t,e,n,i){if(this._dragZone&&this._dragZone===e&&!this.clip){var r=this._startDragX+n,o=this._startDragY+i;r<this._dragBounds.minX?r=this._dragBounds.minX:r>this._dragBounds.maxX&&(r=this._dragBounds.maxX),o<this._dragBounds.minY?o=this._dragBounds.minY:o>this._dragBounds.maxY&&(o=this._dragBounds.maxY),this.emit("event_drag",r,o)}}},{key:"_setupInteractive",value:function(t){r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_setupInteractive",this).call(this,t),this._dragZone=t,t.scene.input.setDraggable(t,!0),t.scene.input.on("dragstart",this._onDragStart,this),t.scene.input.on("drag",this._onDrag,this)}},{key:"_removeInteractive",value:function(t){r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_removeInteractive",this).call(this,t),this._dragZone=null,t.scene.input.setDraggable(t,!1),t.scene.input.removeListener("dragstart",this._onDragStart),t.scene.input.removeListener("drag",this._onDrag)}}]),e}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function t(e,n,i){null===e&&(e=Function.prototype);var r=Object.getOwnPropertyDescriptor(e,n);if(void 0===r){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,i)}if("value"in r)return r.value;var a=r.get;return void 0!==a?a.call(i):void 0},r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=u(n(0)),a=u(n(2)),s=u(n(6));function u(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function e(t,n,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r._vertical=i||!1,r._value=0,r._minValue=0,r._maxValue=1,r._valueStep=0,r._buttonStep=.1,r.btnPrev=new a.default(r,"btn_up"),r.btnPrev.on(a.default.EVENT_CLICK,r.onPrevClick,r),r.btnNext=new a.default(r,"btn_down"),r.btnNext.on(a.default.EVENT_CLICK,r.onNextClick,r),r.thumb=new s.default(r,"thumb"),r.thumb.on(s.default.EVENT_DRAG,r._onThumbDrag,r),r._trackStart=0,r._trackLength=100,r._thumbClip=null,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,o.default),r(e,null,[{key:"EVENT_CHANGE",get:function(){return"event_change"}}]),r(e,[{key:"setValueBounds",value:function(t,e,n){this._minValue=t,this._maxValue=e,void 0!==n?(this._valueStep=n,this._buttonStep<n&&(this._buttonStep=n)):this._valueStep=0}},{key:"setButtonStep",value:function(t){this._buttonStep=t}},{key:"onClipAppend",value:function(t){i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipAppend",this).call(this,t),this._updateClips()}},{key:"_updateClips",value:function(){if(this._clip){this._thumbClip=this.thumb._clip;var t=this._clip.getChildClip("DIMENSIONS");t&&(this._trackStart=this._vertical?t.y:t.x,this._trackLength=this._vertical?t.height:t.width,this._thumbClip&&this.thumb.setDragBounds(this._vertical?this._thumbClip.x:t.x,this._vertical?t.y:this._thumbClip.y,this._vertical?this._thumbClip.x:t.x+t.width,this._vertical?t.y+t.height:this._thumbClip.y));var e=this._clip.getChildClip("HIT_ZONE");e&&e.on("pointerdown",this._onZoneDown,this),this._updateThumbFromValue()}}},{key:"onClipProcess",value:function(){i(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipProcess",this).call(this),this.thumb&&this._updateClips()}},{key:"onPrevClick",value:function(){this.value-=this._buttonStep}},{key:"onNextClick",value:function(){this.value+=this._buttonStep}},{key:"_updateThumbFromValue",value:function(){if(this._thumbClip){var t=Math.round(this._trackStart+this._trackLength*this._value);this._vertical?this._thumbClip.y=t:this._thumbClip.x=t,this.emit("event_change",this.value)}}},{key:"_onThumbDrag",value:function(t,e){if(0!==this._trackLength){var n=((this._vertical?e:t)-this._trackStart)/this._trackLength*(this._maxValue-this._minValue);0!==this._valueStep&&(n=Math.round(n/this._valueStep)*this._valueStep),this.value=n+this._minValue}}},{key:"_onZoneDown",value:function(){}},{key:"value",get:function(){var t=this._value*(this._maxValue-this._minValue);return 0===this._valueStep?t+this._minValue:(t=Math.round(t/this._valueStep)*this._valueStep)+this._minValue},set:function(t){var e=(t-this._minValue)/(this._maxValue-this._minValue);e<0&&(e=0),e>1&&(e=1),e!==this._value&&(this._value=e,this._updateThumbFromValue())}}]),e}();e.default=l},function(t,e,n){t.exports=n(9)},function(t,e,n){"use strict";(function(e){var i=a(n(4)),r=a(n(11)),o=a(n(16));function a(t){return t&&t.__esModule?t:{default:t}}var s={ComponentClip:i.default,UIComponents:r.default,Plugin:o.default};t.exports=s,e.PhaserComps=s}).call(this,n(10))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=p(n(2)),r=p(n(12)),o=p(n(0)),a=p(n(5)),s=p(n(6)),u=p(n(7)),l=p(n(13)),c=p(n(14)),h=p(n(15));function p(t){return t&&t.__esModule?t:{default:t}}var f={UIComponentPrototype:o.default,UIButton:i.default,UIButtonSelect:a.default,UIButtonRadio:r.default,UIButtonDraggable:s.default,UIScrollBar:u.default,UIScrollPanel:l.default,UIProgressBar:c.default,UIContainer:h.default};e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=n(5),a=(i=o)&&i.__esModule?i:{default:i};var s=function(t){function e(t,n,i,r,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var a=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n,i));return a._sibling=a,a._value=r,void 0!==o&&a.appendToRadio(o),a}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,a.default),r(e,null,[{key:"EVENT_SELECT",get:function(){return"event_select"}}]),r(e,[{key:"appendToRadio",value:function(t){this._sibling!==this&&this.removeFromSibling(),this._sibling=t._sibling,t._sibling=this}},{key:"removeFromSibling",value:function(){}},{key:"_onClick",value:function(){this.select=!0}},{key:"_broadcastSelect",value:function(){this.emit("event_select",this.value);for(var t=this._sibling;t!==this;)t.emit("event_select",this._value),t=t._sibling}},{key:"select",get:function(){return function t(e,n,i){null===e&&(e=Function.prototype);var r=Object.getOwnPropertyDescriptor(e,n);if(void 0===r){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,i)}if("value"in r)return r.value;var a=r.get;return void 0!==a?a.call(i):void 0}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"select",this)},set:function(t){if(this._select!==t&&(function t(e,n,i,r){var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var a=Object.getPrototypeOf(e);null!==a&&t(a,n,i,r)}else if("value"in o&&o.writable)o.value=i;else{var s=o.set;void 0!==s&&s.call(r,i)}return i}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"select",t,this),t)){for(var n=this._sibling;n!==this;)n.select=!1,n=n._sibling;this._broadcastSelect()}}},{key:"value",get:function(){return this._value},set:function(t){this._value=t}},{key:"valueSelected",get:function(){if(this.select)return this.value;for(var t=this._sibling;t!==this;){if(t.select)return t.value;t=t._sibling}return null},set:function(t){if(this.value!==t){for(var e=this._sibling;e!==this;)if(e.value===t)return void(e.select=!0)}else this.select=!0}}]),e}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=a(n(0)),o=a(n(7));function a(t){return t&&t.__esModule?t:{default:t}}var s=function(){function t(e,n,i,a,s){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._container=e,e.on(r.default.EVENT_STATE,this._onContainerUpdate,this),this._panelKey=n,this._dimensionsKey=a,this._scrollBar=new o.default(e,i,s),this._scrollBar.on(o.default.EVENT_CHANGE,this._onScrollBar,this),this._vertical=s||!1}return i(t,[{key:"_onContainerUpdate",value:function(){var t=this._container._clip;if(t){this._panel=t.getChildClip(this._panelKey);var e=t.getChildClip(this._dimensionsKey);this._panel&&e&&(this._scrollBounds={x:e.x,y:e.y,len:this._vertical?this._panel.height-e.height:this._panel.width-e.width},this._onScrollBar(this._onScrollBar.value))}}},{key:"_onScrollBar",value:function(t){this._panel&&this._scrollBounds&&(this._vertical?this._panel.y=this._scrollBounds.y-this._scrollBounds.len*t:this._panel.x=this._scrollBounds.x-this._scrollBounds.len*t)}}]),t}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=n(0),a=(i=o)&&i.__esModule?i:{default:i},s=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(3));var u=/progress_(\d+)$/,l=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return i._value=0,i._steps=[],i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,a.default),r(e,[{key:"onClipAppend",value:function(t){(function t(e,n,i){null===e&&(e=Function.prototype);var r=Object.getOwnPropertyDescriptor(e,n);if(void 0===r){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,i)}if("value"in r)return r.value;var a=r.get;return void 0!==a?a.call(i):void 0})(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipAppend",this).call(this,t),this._makeSteps(t),this._applyValue()}},{key:"_applyValue",value:function(){if(this._clip){var t=void 0,e=void 0,n=void 0,i=void 0,r=void 0,o=void 0,a=this._steps.length;for(t=0;t<a-1;t++){var s=this._steps[t],u=this._steps[t+1];if(s.stepValue===this._value){r=s.config;break}if(u.stepValue===this._value){r=u.config;break}if(this._value>s.stepValue&&this._value<u.stepValue){e=s.config,n=u.config,i=(this._value-s.stepValue)/(u.stepValue-s.stepValue);break}}if(!r)for(o in r={},e)if(n.hasOwnProperty(o)){var l=e[o],c=n[o];r[o]={x:l.x+(c.x-l.x)*i,y:l.y+(c.y-l.y)*i,scaleX:l.scaleX+(c.scaleX-l.scaleX)*i,scaleY:l.scaleY+(c.scaleY-l.scaleY)*i,angle:l.angle+(c.angle-l.angle)*i,alpha:l.alpha+(c.alpha-l.alpha)*i}}for(o in r)this._clip.applyChildParams(o,r[o])}}},{key:"_makeSteps",value:function(t){var n=this,i=t.getStateIds();this._steps=[],s.each(i,function(i){if(u.test(i)){var r={},o={stepValue:parseInt(u.exec(i)[1])/100,config:r},a=t.getStateConfig(i);for(var s in a)r[s]=e._makeFullConfig(a[s]);n._steps.push(o)}},this),s.sortBy(this._steps,"stepValue")}},{key:"value",get:function(){return this._value},set:function(t){this._value=t,this._applyValue()}}],[{key:"_makeFullConfig",value:function(t){return{x:t.hasOwnProperty("x")?t.x:0,y:t.hasOwnProperty("y")?t.y:0,scaleX:t.hasOwnProperty("scaleX")?t.scaleX:1,scaleY:t.hasOwnProperty("scaleY")?t.scaleY:1,angle:t.hasOwnProperty("angle")?t.angle:0,alpha:t.hasOwnProperty("alpha")?t.alpha:1}}}]),e}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=function t(e,n,i){null===e&&(e=Function.prototype);var r=Object.getOwnPropertyDescriptor(e,n);if(void 0===r){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,i)}if("value"in r)return r.value;var a=r.get;return void 0!==a?a.call(i):void 0},o=s(n(0)),a=(s(n(1)),s(n(3)));function s(t){return t&&t.__esModule?t:{default:t}}var u=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return i._children=[],i._containerClip=null,i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,o.default),i(e,[{key:"addChild",value:function(t){return-1!==this._children.indexOf(t)?t:(this._children.push(t),this._containerClip?this._addUIComponentToContainerClip(t):t._clip.groupVisible=!1,t)}},{key:"removeChild",value:function(t){var e=this._children.indexOf(t);return-1===e?t:(this._children.splice(e,1),this._containerClip&&this._removeUIComponentFromContainerClip(t),t)}},{key:"_addUIComponentToContainerClip",value:function(t){var e=this;a.default.each(t._clip.childrenList,function(t){e._containerClip.add(t)},this),t._clip.groupVisible=!0}},{key:"_removeUIComponentFromContainerClip",value:function(t,e){var n=this;a.default.each(t._clip.childrenList,function(t){n._containerClip.remove(t,e)},this),t._clip.groupVisible=!1}},{key:"onClipAppend",value:function(t){var n=this;r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipAppend",this).call(this,t),this._containerClip=t._container,this._containerClip&&a.default.each(this._children,function(t){n._addUIComponentToContainerClip(t)},this)}},{key:"onClipRemove",value:function(t){var n=this;r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipRemove",this).call(this,t),this._containerClip&&a.default.each(this._children,function(t){n._removeUIComponentFromContainerClip(t)},this)}},{key:"destroy",value:function(){var t=this;a.default.each(this._children,function(e){t._containerClip&&t._removeUIComponentFromContainerClip(e),e.destroy()},this),this._children.length=0,r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this)}}]),e}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=a(n(1)),o=a(n(4));function a(t){return t&&t.__esModule?t:{default:t}}var s=function(t){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return t.registerGameObject("ui_component",n.addComponent,n.addComponent),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,r.default.Plugins.BasePlugin),i(e,[{key:"addComponent",value:function(t,e){return new o.default(this.scene,t,e)}}]),e}();e.default=s;var u={key:"UIComponents",plugin:s,start:!0};s.DefaultCfg=u}])});
\ No newline at end of file
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("phaser")):"function"==typeof define&&define.amd?define(["phaser"],e):"object"==typeof exports?exports.PhaserComps=e(require("phaser")):t.PhaserComps=e(t.Phaser)}(window,(function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=10)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=a(n(1)),o=a(n(4));function a(t){return t&&t.__esModule?t:{default:t}}var u=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return r._lockId=null,r._parent=t,r._key=n,r._clip=null,r._texts={},n&&t&&t.on("event_state",r._onEventState,r),r._clipUpdate(),r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,null,[{key:"EVENT_STATE",get:function(){return"event_state"}}]),r(e,[{key:"appendClip",value:function(t){this._clip!==t&&(null!==this._clip&&this.removeClip(),this._clip=t,this._clip&&this.onClipAppend(this._clip),this._clipProcess())}},{key:"onClipAppend",value:function(t){}},{key:"removeClip",value:function(){this.onClipRemove(this._clip),this._clip=null}},{key:"onClipRemove",value:function(t){}},{key:"doState",value:function(){var t=this.getStateId();this._setupState(t)}},{key:"getText",value:function(t){return this._texts[t]}},{key:"setText",value:function(t,e){if(this._texts[t]!==e&&(this._texts[t]=e,this._clip)){var n=this._clip.getChildText(t);n&&(n.text=e)}}},{key:"getStateId",value:function(){return"default"}},{key:"destroy",value:function(t){this._parent&&this._parent.removeListener("event_state",this._onEventState),this._clip&&this._clip.destroy(t),function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this)}},{key:"_clipUpdate",value:function(){if(this._key)if(this._parent._clip){var t=this._parent._clip.getChildClip(this._key);this.appendClip(t)}else this.appendClip(null);else;}},{key:"_clipProcess",value:function(){this._clip&&(this.doState(),this.onClipProcess())}},{key:"onClipProcess",value:function(){}},{key:"_setupState",value:function(t){if(this._clip)for(var e in this._clip.setState(t),this._texts){var n=this._clip.getChildText(e);n&&(n.text=this._texts[e])}this.emit("event_state")}},{key:"_onEventState",value:function(){this._clipUpdate()}},{key:"lockId",get:function(){return this._lockId},set:function(t){this._lockId!==t&&(this._lockId&&o.default.UIManager.unregister(this),this._lockId=t,this._lockId&&o.default.UIManager.register(this))}},{key:"lockClipBounds",get:function(){return null}},{key:"lockClip",get:function(){return null}}]),e}(i.default.Events.EventEmitter);e.default=u},function(e,n){e.exports=t},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=u(n(0)),o=u(n(3)),a=u(n(1));function u(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function e(t,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return i._enable=!0,i._isPressed=!1,i._isOver=!1,i._hitZone=null,r&&(i.label=r),i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,null,[{key:"EVENT_CLICK",get:function(){return"event_click"}}]),r(e,[{key:"onClipAppend",value:function(t){this._updateInteractive()}},{key:"onClipRemove",value:function(t){var e=t.getChildClip("HIT_ZONE");e&&this._removeInteractive(e)}},{key:"_setupInteractive",value:function(t){t.setInteractive({useHandCursor:!0}),t.on("pointerdown",this._onPointerDown,this),t.on("pointerup",this._onPointerUp,this),t.on("pointerover",this._onPointerOver,this),t.on("pointerout",this._onPointerOut,this),this._hitZone=t}},{key:"_removeInteractive",value:function(t){t.disableInteractive(),t.removeListener(a.default.Input.Events.GAMEOBJECT_POINTER_DOWN,this._onPointerDown,this),t.removeListener(a.default.Input.Events.GAMEOBJECT_POINTER_UP,this._onPointerUp,this),t.removeListener(a.default.Input.Events.GAMEOBJECT_POINTER_OVER,this._onPointerOver,this),t.removeListener(a.default.Input.Events.GAMEOBJECT_POINTER_OUT,this._onPointerOut,this),this._hitZone=null}},{key:"_updateInteractive",value:function(){if(this._clip){var t=this._clip.getChildClip("HIT_ZONE");t&&(this.enable?this._setupInteractive(t):this._removeInteractive(t))}}},{key:"getStateId",value:function(){return this.enable?this._isPressed?this.STATE_DOWN:this._isOver?this.STATE_OVER:this.STATE_UP:this.STATE_DISABLE}},{key:"_onClick",value:function(){this.emit("event_click")}},{key:"_onPointerOut",value:function(){this._isOver=!1,this._isPressed=!1,this.doState()}},{key:"_onPointerOver",value:function(){this._isOver=!0,this.doState()}},{key:"_onPointerDown",value:function(t,e,n,r){this._isPressed=!0,this.doState(),r.stopPropagation()}},{key:"_onPointerUp",value:function(t,e,n,r){var i=this._isPressed&&this._isOver;this._isPressed=!1,this.doState(),i&&(r.stopPropagation(),o.default.check(this.lockId)&&this._onClick())}},{key:"destroy",value:function(t){if(this._clip){var n=this._clip.getChildClip("HIT_ZONE");n&&this._removeInteractive(n)}(function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0})(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this,t)}},{key:"label",get:function(){return this.getText("label")},set:function(t){this.setText("label",t)}},{key:"enable",get:function(){return this._enable},set:function(t){this._enable!==t&&(this._enable=t,this._updateInteractive(),this.doState())}},{key:"lockClipBounds",get:function(){return this._hitZone?this._hitZone.getBounds():null}},{key:"lockClip",get:function(){return this._hitZone}},{key:"STATE_UP",get:function(){return"up"}},{key:"STATE_DOWN",get:function(){return"down"}},{key:"STATE_OVER",get:function(){return"over"}},{key:"STATE_DISABLE",get:function(){return"disable"}}]),e}(i.default);e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();var i=!1,o=[],a={},u=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return r(t,null,[{key:"lock",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e&&this.unlock(),"string"==typeof t?o.push(t):t.forEach((function(t){return o.push(t)})),i=!0}},{key:"unlock",value:function(){o.length=0,i=!1}},{key:"register",value:function(t){a[t.lockId]=t}},{key:"unregister",value:function(t){a[t.lockId]&&(a[t.lockId]=null,delete a[t.lockId])}},{key:"check",value:function(t){return!i||-1!==o.indexOf(t)}},{key:"getById",value:function(t){return a[t]}},{key:"getBoundsById",value:function(t){var e=this.getById(t);return e?e.lockClipBounds:null}},{key:"getClipById",value:function(t){var e=this.getById(t);return e?e.lockClip:null}}]),t}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=u(n(5)),i=u(n(11)),o=u(n(17)),a=u(n(3));function u(t){return t&&t.__esModule?t:{default:t}}var l={ComponentClip:r.default,UIComponents:i.default,Plugin:o.default,UIManager:a.default};e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(1),a=(r=o)&&r.__esModule?r:{default:r};function u(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}function l(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var s=function(t){function e(t,n,r){l(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,0,0));return i.childComponentClips=[],i._config=n,i._key=n.key,i._textures=Array.isArray(r)?r:[r],i.imageFramesMap={},i._stateManager=new f(i,n),i._childrenById={},i._createImagesMap(r),i._parseConfig(),i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,[{key:"getStateConfig",value:function(t){return this._stateManager.getStateConfigById(t)}},{key:"getStateIds",value:function(){return this._stateManager.stateIds}},{key:"setState",value:function(t,e){this._stateManager.setState(t,e)}},{key:"applyChildParams",value:function(t,n){this._childrenById.hasOwnProperty(t)&&e._setupCommonParams(this._childrenById[t],n)}},{key:"getChildClip",value:function(t){return this._stateManager.getActiveComponentByKey(t)}},{key:"getChildText",value:function(t){return this._stateManager.getActiveComponentByKey(t)}},{key:"destroy",value:function(t){var n=!0,r=!1,i=void 0;try{for(var o,a=this.childComponentClips[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){o.value.destroy(t)}}catch(t){r=!0,i=t}finally{try{!n&&a.return&&a.return()}finally{if(r)throw i}}(function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0})(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this,t)}},{key:"_createImagesMap",value:function(t){var e=!0,n=!1,r=void 0;try{for(var i,o=t[Symbol.iterator]();!(e=(i=o.next()).done);e=!0){var a=i.value,u=this.scene.textures.get(a);if(!u)return;var l=u.getFrameNames(),s=!0,c=!1,f=void 0;try{for(var p,h=l[Symbol.iterator]();!(s=(p=h.next()).done);s=!0){var _=p.value;this.imageFramesMap[_]=a}}catch(t){c=!0,f=t}finally{try{!s&&h.return&&h.return()}finally{if(c)throw f}}}}catch(t){n=!0,r=t}finally{try{!e&&o.return&&o.return()}finally{if(n)throw r}}}},{key:"_parseConfig",value:function(){if(this._config.hasOwnProperty("children")){var t=!0,e=!1,n=void 0;try{for(var r,i=this._config.children[Symbol.iterator]();!(t=(r=i.next()).done);t=!0){var o=r.value;this._createChildFromConfig(o)}}catch(t){e=!0,n=t}finally{try{!t&&i.return&&i.return()}finally{if(e)throw n}}}}},{key:"_createChildFromConfig",value:function(t){var n=null,r=t.childId,i=t.key,o=!0;if("image"===t.type)n=this._createImageFromConfig(t);else if("text"===t.type)n=this._createTextFromConfig(t);else if("tileSprite"===t.type)n=this._createTileSpriteFromConfig(t);else if("component"===t.type)n=new e(this.scene,t,this._textures),e._setupCommonParams(n,t);else if("zone"===t.type)n=this._createHitZoneFromConfig(t);else if("polygon"===t.type&&(n=this._createPolygonFromConfig(t),t.hasOwnProperty("masking"))){var a=n.createGeometryMask(),u=!0,l=!1,s=void 0;try{for(var c,f=t.masking[Symbol.iterator]();!(u=(c=f.next()).done);u=!0){var p=c.value;this._childrenById[p].setMask(a)}}catch(t){l=!0,s=t}finally{try{!u&&f.return&&f.return()}finally{if(l)throw s}}o=!1}null!==n&&(this._childrenById[r]=n,this.childComponentClips.push(n),o&&this.add(n),this._stateManager.addComponent(n,r,i))}},{key:"_createPolygonFromConfig",value:function(t){var n=this.scene.make.graphics();n.fillStyle(t.color,t.hasOwnProperty("alpha")?t.alpha:1),n.beginPath();for(var r=t.vertices,i=r.length,o=0;o<i;o+=2)n.lineTo(r[o],r[o+1]);return n.closePath(),n.fillPath(),e._setupCommonParams(n,t),t.hasOwnProperty("masking")||this.scene.add.existing(n),n}},{key:"_createTileSpriteFromConfig",value:function(t){var n=this.scene.add.tileSprite(0,0,t.width,t.height,this.imageFramesMap[t.image],t.image);return n.setOrigin(.5,.5),e._setupCommonParams(n,t),n}},{key:"_createImageFromConfig",value:function(t){var n=this.scene.add.image(0,0,this.imageFramesMap[t.image],t.image);return n.setOrigin(0),e._setupCommonParams(n,t),n}},{key:"_createTextFromConfig",value:function(t){var n=this.scene.add.text(0,0,t.text,t.textStyle);return"center"===t.textStyle.align?n.setOrigin(.5,0):"right"===t.textStyle.align?n.setOrigin(1,0):n.setOrigin(0),e._setupCommonParams(n,t),n}},{key:"_createHitZoneFromConfig",value:function(t){return this.scene.add.zone(t.x||0,t.y||0,t.width,t.height).setOrigin(0)}}],[{key:"_setupCommonParams",value:function(t,e){var n=e.x||0,r=e.y||0,i=e.scaleX||1,o=e.scaleY||1,a=e.angle||0,u=e.hasOwnProperty("alpha")?e.alpha:1;t.x=n,t.y=r,t.scaleX=i,t.scaleY=o,t.angle=a,t.alpha=u}}]),e}(a.default.GameObjects.Container);e.default=s;var c=function t(e){l(this,t),this.config=e,this.componentIds=[],this.componentIds=Object.keys(e)},f=function(){function t(e,n){l(this,t),this._clip=e,this._dynamicChildrenIds=[],this._states={},this.stateIds=[],this._components={},this._currentState=null,this._currentStateId=null,this._componentKeys={},this._residentComponentsByKey={};var r=[];for(var i in n.states){this.stateIds.push(i);var o=new c(n.states[i]);this._states[i]=o,r.push.apply(r,u(o.componentIds))}var a=[],s=!0,f=!1,p=void 0;try{for(var h,_=r[Symbol.iterator]();!(s=(h=_.next()).done);s=!0){var y=h.value;a.includes(y)||a.push(y)}}catch(t){f=!0,p=t}finally{try{!s&&_.return&&_.return()}finally{if(f)throw p}}this._dynamicChildrenIds=a}return i(t,[{key:"getStateConfigById",value:function(t){return this._states.hasOwnProperty(t)?this._states[t].config:null}},{key:"addComponent",value:function(t,e,n){this._dynamicChildrenIds.includes(e)?(this._components[e]=t,void 0!==n&&(this._componentKeys[e]=n)):void 0!==n&&(this._residentComponentsByKey[n]=t)}},{key:"setState",value:function(t,e){(this._currentStateId!==t||e)&&this._states.hasOwnProperty(t)&&(this._currentStateId=t,this._currentState=this._states[t],this.setupState())}},{key:"getActiveComponentByKey",value:function(t){if(this._residentComponentsByKey.hasOwnProperty(t))return this._residentComponentsByKey[t];if(null===this._currentState)return null;for(var e in this._currentState.componentIds){var n=this._currentState.componentIds[e];if(this._componentKeys[n]===t)return this._components[n]}return null}},{key:"setupState",value:function(){var t=this._currentState.componentIds,e=!0,n=!1,r=void 0;try{for(var i,o=this._dynamicChildrenIds[Symbol.iterator]();!(e=(i=o.next()).done);e=!0){var a=i.value,u=this._components[a];t.includes(a)?(u.visible=!0,s._setupCommonParams(u,this._currentState.config[a])):u.visible=!1}}catch(t){n=!0,r=t}finally{try{!e&&o.return&&o.return()}finally{if(n)throw r}}}}]),t}()},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0},a=n(2);var u=function(t){function e(t,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n,r));return i._select=!1,i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,[{key:"getStateId",value:function(){return o(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"getStateId",this).call(this)+(this._select?"_select":"")}},{key:"_onClick",value:function(){this._select=!this._select,this.doState(),o(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_onClick",this).call(this)}},{key:"select",get:function(){return this._select},set:function(t){this._select!==t&&(this._select=t,this.doState())}}]),e}(((r=a)&&r.__esModule?r:{default:r}).default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=u(n(2)),a=u(n(3));function u(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function e(t,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n,r));return i._dragBounds={minX:0,maxX:0,minY:0,maxY:0},i._startDragX=0,i._startDragY=0,i._dragZone=null,i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,null,[{key:"EVENT_DRAG",get:function(){return"event_drag"}}]),i(e,[{key:"setDragBounds",value:function(t,e,n,r){this._dragBounds.minX=t,this._dragBounds.maxX=n,this._dragBounds.minY=e,this._dragBounds.maxY=r}},{key:"_onDragStart",value:function(t,e){this._dragZone&&this._dragZone===e&&this._clip&&(this._startDragX=this._clip.x-e.input.dragStartX,this._startDragY=this._clip.y-e.input.dragStartY)}},{key:"_onDrag",value:function(t,e,n,r){if(a.default.check(this.lockId)&&this._dragZone&&this._dragZone===e&&!this.clip){var i=this._startDragX+n,o=this._startDragY+r;i<this._dragBounds.minX?i=this._dragBounds.minX:i>this._dragBounds.maxX&&(i=this._dragBounds.maxX),o<this._dragBounds.minY?o=this._dragBounds.minY:o>this._dragBounds.maxY&&(o=this._dragBounds.maxY),this.emit("event_drag",i,o)}}},{key:"_setupInteractive",value:function(t){r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_setupInteractive",this).call(this,t),this._dragZone=t,t.scene.input.setDraggable(t,!0),t.scene.input.on("dragstart",this._onDragStart,this),t.scene.input.on("drag",this._onDrag,this)}},{key:"_removeInteractive",value:function(t){r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"_removeInteractive",this).call(this,t),this._dragZone=null,t.scene.input.setDraggable(t,!1),t.scene.input.removeListener("dragstart",this._onDragStart),t.scene.input.removeListener("drag",this._onDrag)}}]),e}(o.default);e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=s(n(0)),a=s(n(2)),u=s(n(7)),l=s(n(3));function s(t){return t&&t.__esModule?t:{default:t}}var c=function(t){function e(t,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return i._vertical=r||!1,i._value=0,i._minValue=0,i._maxValue=1,i._valueStep=0,i._buttonStep=.1,i.btnPrev=new a.default(i,"btn_up"),i.btnPrev.on(a.default.EVENT_CLICK,i.onPrevClick,i),i.btnNext=new a.default(i,"btn_down"),i.btnNext.on(a.default.EVENT_CLICK,i.onNextClick,i),i.thumb=new u.default(i,"thumb"),i.thumb.on(u.default.EVENT_DRAG,i._onThumbDrag,i),i._trackStart=0,i._trackLength=100,i._thumbClip=null,i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,null,[{key:"EVENT_CHANGE",get:function(){return"event_change"}}]),i(e,[{key:"setValueBounds",value:function(t,e,n){this._minValue=t,this._maxValue=e,void 0!==n?(this._valueStep=n,this._buttonStep<n&&(this._buttonStep=n)):this._valueStep=0}},{key:"setButtonStep",value:function(t){this._buttonStep=t}},{key:"onClipAppend",value:function(t){r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipAppend",this).call(this,t),this._updateClips()}},{key:"_updateClips",value:function(){if(this._clip){this._thumbClip=this.thumb._clip;var t=this._clip.getChildClip("DIMENSIONS");t&&(this._trackStart=this._vertical?t.y:t.x,this._trackLength=this._vertical?t.height:t.width,this._thumbClip&&this.thumb.setDragBounds(this._vertical?this._thumbClip.x:t.x,this._vertical?t.y:this._thumbClip.y,this._vertical?this._thumbClip.x:t.x+t.width,this._vertical?t.y+t.height:this._thumbClip.y));var e=this._clip.getChildClip("HIT_ZONE");e&&e.on("pointerdown",this._onZoneDown,this),this._updateThumbFromValue()}}},{key:"onClipProcess",value:function(){r(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipProcess",this).call(this),this.thumb&&this._updateClips()}},{key:"onPrevClick",value:function(){l.default.check(this.lockId)&&(this.value-=this._buttonStep)}},{key:"onNextClick",value:function(){l.default.check(this.lockId)&&(this.value+=this._buttonStep)}},{key:"_updateThumbFromValue",value:function(){if(this._thumbClip){var t=Math.round(this._trackStart+this._trackLength*this._value);this._vertical?this._thumbClip.y=t:this._thumbClip.x=t,this.emit("event_change",this.value)}}},{key:"_onThumbDrag",value:function(t,e){if(0!==this._trackLength&&l.default.check(this.lockId)){var n=((this._vertical?e:t)-this._trackStart)/this._trackLength*(this._maxValue-this._minValue);0!==this._valueStep&&(n=Math.round(n/this._valueStep)*this._valueStep),this.value=n+this._minValue}}},{key:"_onZoneDown",value:function(){}},{key:"value",get:function(){var t=this._value*(this._maxValue-this._minValue);return 0===this._valueStep?t+this._minValue:(t=Math.round(t/this._valueStep)*this._valueStep)+this._minValue},set:function(t){var e=(t-this._minValue)/(this._maxValue-this._minValue);e<0&&(e=0),e>1&&(e=1),e!==this._value&&(this._value=e,this._updateThumbFromValue())}}]),e}(o.default);e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(0),a=(r=o)&&r.__esModule?r:{default:r};var u=function(t){function e(t,n,r){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var i=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return i._rendererClass=r,i._items=[],i}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,null,[{key:"EVENT_ITEM_CHANGE",get:function(){return"event_change"}}]),i(e,[{key:"clean",value:function(){for(;0!==this._items.length;){this._items.pop().destroy(!0)}}},{key:"_updateData",value:function(){for(var t=this._data.length,e=0;e<t;e++){var n=this._data[e];this._getRenderer(e).data=n}this.doState()}},{key:"_getRenderer",value:function(t){if(this._items.length-1<t){var n=new this._rendererClass(this,"item_"+t);this._items[t]=n,n.on(e.EVENT_ITEM_CHANGE,this.onItemChange,this)}return this._items[t]}},{key:"getStateId",value:function(){return"count_"+(this._data?this._data.length:"0")}},{key:"destroy",value:function(t){this.clean(),function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this,t)}},{key:"onItemChange",value:function(t){this.emit(e.EVENT_ITEM_CHANGE,t)}},{key:"data",get:function(){return this._data},set:function(t){this._data=t,this._updateData()}}]),e}(a.default);e.default=u},function(t,e,n){t.exports=n(4)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=_(n(2)),i=_(n(12)),o=_(n(0)),a=_(n(6)),u=_(n(7)),l=_(n(8)),s=_(n(13)),c=_(n(14)),f=_(n(15)),p=_(n(9)),h=_(n(16));function _(t){return t&&t.__esModule?t:{default:t}}var y={UIComponentPrototype:o.default,UIButton:r.default,UIButtonSelect:a.default,UIButtonRadio:i.default,UIButtonDraggable:u.default,UIScrollBar:l.default,UIScrollPanel:s.default,UIProgressBar:c.default,UIContainer:f.default,UIList:p.default,UIListBaseItem:h.default};e.default=y},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(6),a=(r=o)&&r.__esModule?r:{default:r};var u=function(t){function e(t,n,r,i,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var a=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n,r));return a._sibling=a,a._value=i,void 0!==o&&a.appendToRadio(o),a}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,null,[{key:"EVENT_SELECT",get:function(){return"event_select"}}]),i(e,[{key:"appendToRadio",value:function(t){this._sibling!==this&&this.removeFromSibling(),this._sibling=t._sibling,t._sibling=this}},{key:"removeFromSibling",value:function(){}},{key:"_onClick",value:function(){this.select=!0}},{key:"_broadcastSelect",value:function(){this.emit("event_select",this.value);for(var t=this._sibling;t!==this;)t.emit("event_select",this._value),t=t._sibling}},{key:"select",get:function(){return function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"select",this)},set:function(t){if(this._select!==t&&(function t(e,n,r,i){var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var a=Object.getPrototypeOf(e);null!==a&&t(a,n,r,i)}else if("value"in o&&o.writable)o.value=r;else{var u=o.set;void 0!==u&&u.call(i,r)}return r}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"select",t,this),t)){for(var n=this._sibling;n!==this;)n.select=!1,n=n._sibling;this._broadcastSelect()}}},{key:"value",get:function(){return this._value},set:function(t){this._value=t}},{key:"valueSelected",get:function(){if(this.select)return this.value;for(var t=this._sibling;t!==this;){if(t.select)return t.value;t=t._sibling}return null},set:function(t){if(this.value!==t){for(var e=this._sibling;e!==this;)if(e.value===t)return void(e.select=!0)}else this.select=!0}}]),e}(a.default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=a(n(0)),o=a(n(8));function a(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e,n,r,a,u){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._container=e,e.on(i.default.EVENT_STATE,this._onContainerUpdate,this),this._panelKey=n,this._dimensionsKey=a,this._scrollBar=new o.default(e,r,u),this._scrollBar.on(o.default.EVENT_CHANGE,this._onScrollBar,this),this._vertical=u||!1}return r(t,[{key:"_onContainerUpdate",value:function(){var t=this._container._clip;if(t){this._panel=t.getChildClip(this._panelKey);var e=t.getChildClip(this._dimensionsKey);this._panel&&e&&(this._scrollBounds={x:e.x,y:e.y,len:this._vertical?this._panel.height-e.height:this._panel.width-e.width},this._onScrollBar(this._onScrollBar.value))}}},{key:"_onScrollBar",value:function(t){this._panel&&this._scrollBounds&&(this._vertical?this._panel.y=this._scrollBounds.y-this._scrollBounds.len*t:this._panel.x=this._scrollBounds.x-this._scrollBounds.len*t)}}]),t}();e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=n(0),a=(r=o)&&r.__esModule?r:{default:r};var u=/progress_(\d+)$/,l=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r._value=0,r._steps=[],r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,[{key:"onClipAppend",value:function(t){(function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0})(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipAppend",this).call(this,t),this._makeSteps(t),this._applyValue()}},{key:"_applyValue",value:function(){if(this._clip){var t=void 0,e=void 0,n=void 0,r=void 0,i=void 0,o=void 0,a=this._steps.length;for(t=0;t<a-1;t++){var u=this._steps[t],l=this._steps[t+1];if(u.stepValue===this._value){i=u.config;break}if(l.stepValue===this._value){i=l.config;break}if(this._value>u.stepValue&&this._value<l.stepValue){e=u.config,n=l.config,r=(this._value-u.stepValue)/(l.stepValue-u.stepValue);break}}if(!i)for(o in i={},e)if(n.hasOwnProperty(o)){var s=e[o],c=n[o];i[o]={x:s.x+(c.x-s.x)*r,y:s.y+(c.y-s.y)*r,scaleX:s.scaleX+(c.scaleX-s.scaleX)*r,scaleY:s.scaleY+(c.scaleY-s.scaleY)*r,angle:s.angle+(c.angle-s.angle)*r,alpha:s.alpha+(c.alpha-s.alpha)*r}}for(o in i)this._clip.applyChildParams(o,i[o])}}},{key:"_makeSteps",value:function(t){var n=t.getStateIds();this._steps=[];var r=!0,i=!1,o=void 0;try{for(var a,l=n[Symbol.iterator]();!(r=(a=l.next()).done);r=!0){var s=a.value;if(u.test(s)){var c={},f={stepValue:parseInt(u.exec(s)[1])/100,config:c},p=t.getStateConfig(s);for(var h in p)c[h]=e._makeFullConfig(p[h]);this._steps.push(f)}}}catch(t){i=!0,o=t}finally{try{!r&&l.return&&l.return()}finally{if(i)throw o}}this._steps.sort((function(t,e){return t.stepValue-e.stepValue}))}},{key:"value",get:function(){return this._value},set:function(t){this._value=t,this._applyValue()}}],[{key:"_makeFullConfig",value:function(t){return{x:t.hasOwnProperty("x")?t.x:0,y:t.hasOwnProperty("y")?t.y:0,scaleX:t.hasOwnProperty("scaleX")?t.scaleX:1,scaleY:t.hasOwnProperty("scaleY")?t.scaleY:1,angle:t.hasOwnProperty("angle")?t.angle:0,alpha:t.hasOwnProperty("alpha")?t.alpha:1}}}]),e}(a.default);e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),o=function t(e,n,r){null===e&&(e=Function.prototype);var i=Object.getOwnPropertyDescriptor(e,n);if(void 0===i){var o=Object.getPrototypeOf(e);return null===o?void 0:t(o,n,r)}if("value"in i)return i.value;var a=i.get;return void 0!==a?a.call(r):void 0},a=n(0);var u=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r._children=[],r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,[{key:"addChild",value:function(t){return-1!==this._children.indexOf(t)||(this._children.push(t),this._clip?(t._clip.visible=!0,this._addUIComponentToContainerClip(t)):t._clip.visible=!1),t}},{key:"removeChild",value:function(t){var e=this._children.indexOf(t);return-1===e||(this._children.splice(e,1),this._clip&&this._removeUIComponentFromContainerClip(t)),t}},{key:"_addUIComponentToContainerClip",value:function(t){this._clip.add(t._clip),t._clip.visible=!0}},{key:"_removeUIComponentFromContainerClip",value:function(t,e){this._clip.remove(t._clip,e),t._clip.visible=!1}},{key:"onClipAppend",value:function(t){if(o(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipAppend",this).call(this,t),t){var n=!0,r=!1,i=void 0;try{for(var a,u=this._children[Symbol.iterator]();!(n=(a=u.next()).done);n=!0){var l=a.value;this._addUIComponentToContainerClip(l)}}catch(t){r=!0,i=t}finally{try{!n&&u.return&&u.return()}finally{if(r)throw i}}}}},{key:"onClipRemove",value:function(t){if(o(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"onClipRemove",this).call(this,t),t){var n=!0,r=!1,i=void 0;try{for(var a,u=this._children[Symbol.iterator]();!(n=(a=u.next()).done);n=!0){var l=a.value;this._removeUIComponentFromContainerClip(l)}}catch(t){r=!0,i=t}finally{try{!n&&u.return&&u.return()}finally{if(r)throw i}}}}},{key:"destroy",value:function(){var t=!0,n=!1,r=void 0;try{for(var i,a=this._children[Symbol.iterator]();!(t=(i=a.next()).done);t=!0){var u=i.value;this._clip&&this._removeUIComponentFromContainerClip(u),u.destroy()}}catch(t){n=!0,r=t}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}this._children.length=0,o(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"destroy",this).call(this)}}]),e}(((r=a)&&r.__esModule?r:{default:r}).default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=a(n(0)),o=a(n(9));function a(t){return t&&t.__esModule?t:{default:t}}var u=function(t){function e(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return r._data=null,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"notifyChange",value:function(){this.emit(o.default.EVENT_ITEM_CHANGE,this)}},{key:"_commitData",value:function(){}},{key:"data",get:function(){return this._data},set:function(t){this._data=t,this._commitData()}}]),e}(i.default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),i=a(n(1)),o=a(n(5));function a(t){return t&&t.__esModule?t:{default:t}}var u=function(t){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);var n=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return t.registerGameObject("ui_component",n.addComponent,n.makeComponent),n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"addComponent",value:function(t,e){var n=new o.default(this.scene,t,e);return this.scene.add.existing(n),n}},{key:"makeComponent",value:function(t,e){return new o.default(this.scene,t,e)}}]),e}(i.default.Plugins.BasePlugin);e.default=u;var l={key:"UIComponents",plugin:u,start:!0};u.DefaultCfg=l}])}));
+//# sourceMappingURL=phaser-ui-comps.min.js.map
\ No newline at end of file
diff --git a/dist/phaser-ui-comps.min.js.map b/dist/phaser-ui-comps.min.js.map
new file mode 100644
index 0000000..c46465f
--- /dev/null
+++ b/dist/phaser-ui-comps.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://PhaserComps/webpack/universalModuleDefinition","webpack://PhaserComps/webpack/bootstrap","webpack://PhaserComps/./src/components/UIComponentPrototype.js","webpack://PhaserComps/external {\"umd\":\"phaser\",\"commonjs2\":\"phaser\",\"commonjs\":\"phaser\",\"amd\":\"phaser\",\"root\":\"Phaser\"}","webpack://PhaserComps/./src/components/UIButton.js","webpack://PhaserComps/./src/manager/UIManager.js","webpack://PhaserComps/./src/phasercomps.js","webpack://PhaserComps/./src/clip/ComponentClip.js","webpack://PhaserComps/./src/components/UIButtonSelect.js","webpack://PhaserComps/./src/components/UIButtonDraggable.js","webpack://PhaserComps/./src/components/UIScrollBar.js","webpack://PhaserComps/./src/components/UIList.js","webpack://PhaserComps/./src/components/UIComponents.js","webpack://PhaserComps/./src/components/UIButtonRadio.js","webpack://PhaserComps/./src/components/UIScrollPanel.js","webpack://PhaserComps/./src/components/UIProgressBar.js","webpack://PhaserComps/./src/components/UIContainer.js","webpack://PhaserComps/./src/components/UIListBaseItem.js","webpack://PhaserComps/./src/plugin/Plugin.js"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__1__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","UIComponentPrototype","parent","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","getPrototypeOf","_lockId","_parent","_key","_clip","_texts","on","_onEventState","_clipUpdate","clip","removeClip","onClipAppend","_clipProcess","onClipRemove","stateId","getStateId","_setupState","text","textField","getChildText","fromScene","removeListener","destroy","_get","getChildClip","appendClip","doState","onClipProcess","textKey","setState","emit","PhaserComps","UIManager","unregister","register","Phaser","Events","EventEmitter","UIButton","labelText","_enable","_isPressed","_isOver","_hitZone","label","_updateInteractive","zone","_removeInteractive","setInteractive","useHandCursor","_onPointerDown","_onPointerUp","_onPointerOver","_onPointerOut","disableInteractive","Input","GAMEOBJECT_POINTER_DOWN","GAMEOBJECT_POINTER_UP","GAMEOBJECT_POINTER_OVER","GAMEOBJECT_POINTER_OUT","enable","_setupInteractive","STATE_DOWN","STATE_OVER","STATE_UP","STATE_DISABLE","pointer","localX","localY","event","stopPropagation","isClicked","check","lockId","_onClick","getText","setText","getBounds","isLock","enabledIds","registeredComps","id","rewrite","arguments","length","undefined","unlock","push","forEach","proto","indexOf","getById","lockClipBounds","lockClip","ComponentClip","UIComponents","Plugin","_phaser","scene","config","textures","childComponentClips","_config","_textures","Array","isArray","imageFramesMap","_stateManager","StateManager","_childrenById","_createImagesMap","_parseConfig","getStateConfigById","stateIds","force","childId","params","_setupCommonParams","getActiveComponentByKey","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","iterator","next","done","err","return","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","textureName","texture","frames","getFrameNames","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","frameName","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","children","childConfig","_createChildFromConfig","child","childKey","addAsChild","type","_createImageFromConfig","_createTextFromConfig","_createTileSpriteFromConfig","_createHitZoneFromConfig","_createPolygonFromConfig","mask","createGeometryMask","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","masking","maskedChildId","setMask","add","addComponent","shape","make","graphics","fillStyle","color","alpha","beginPath","vertices","verticesLength","lineTo","closePath","fillPath","existing","sprite","tileSprite","width","height","image","setOrigin","textStyle","align","x","y","component","scaleX","scaleY","angle","GameObjects","Container","State","componentIds","keys","_dynamicChildrenIds","_states","_components","_currentState","_currentStateId","_componentKeys","_residentComponentsByKey","idsArray","states","state","apply","_toConsumableArray","uniq","_iteratorNormalCompletion6","_didIteratorError6","_iteratorError6","_step6","_iterator6","includes","setupState","idsToShow","_iteratorNormalCompletion7","_didIteratorError7","_iteratorError7","_step7","_iterator7","visible","_UIButton2","UIButtonSelect","_select","UIButtonDraggable","_dragBounds","minX","maxX","minY","maxY","_startDragX","_startDragY","_dragZone","gameObject","input","dragStartX","dragStartY","dragX","dragY","newX","newY","setDraggable","_onDragStart","_onDrag","UIScrollBar","vertical","_vertical","_value","_minValue","_maxValue","_valueStep","_buttonStep","btnPrev","EVENT_CLICK","onPrevClick","btnNext","onNextClick","thumb","EVENT_DRAG","_onThumbDrag","_trackStart","_trackLength","_thumbClip","minValue","maxValue","valueStep","val","_updateClips","trackClip","setDragBounds","hitZone","_onZoneDown","_updateThumbFromValue","barPosition","Math","round","positionX","positionY","v","_UIComponentPrototype2","UIList","rendererClass","_rendererClass","_items","pop","len","_data","index","dataItem","_getRenderer","data","renderer","EVENT_ITEM_CHANGE","onItemChange","clean","item","_updateData","UIButtonRadio","UIScrollPanel","UIProgressBar","UIContainer","UIListBaseItem","_UIButtonSelect2","appendTo","_sibling","appendToRadio","radio","removeFromSibling","select","_set","_broadcastSelect","container","panelKey","scrollBarKey","dimensionsKey","_container","EVENT_STATE","_onContainerUpdate","_panelKey","_dimensionsKey","_scrollBar","EVENT_CHANGE","_onScrollBar","_panel","dims","_scrollBounds","PROGRESS_STATE_REGEX","_steps","_makeSteps","_applyValue","lowConfig","highConfig","interpolation","resultConfig","stepsCount","low","high","stepValue","lowChildConfig","highChildConfig","applyChildParams","getStateIds","test","stepConfig","stepObject","parseInt","exec","stateConfig","getStateConfig","_makeFullConfig","sort","a","b","_children","_addUIComponentToContainerClip","splice","_removeUIComponentFromContainerClip","destroyChild","remove","_commitData","mgr","registerGameObject","makeComponent","Plugins","BasePlugin","DefaultCfg","plugin","start"],"mappings":"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","file":"phaser-ui-comps.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"phaser\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"phaser\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PhaserComps\"] = factory(require(\"phaser\"));\n\telse\n\t\troot[\"PhaserComps\"] = factory(root[\"Phaser\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","import Phaser from \"phaser\";\r\nimport PhaserComps from \"../phasercomps\";\r\n\r\nconst _EVENT_STATE = \"event_state\";\r\n\r\n/**\r\n * @memberOf PhaserComps.UIComponents\r\n * @class UIComponentPrototype\r\n * @classdesc Base ComponentView controller class. Used to setup component state and texts.\r\n * Once root instance is created, you must append a [ComponentClip]{@link PhaserComps.ComponentClip}\r\n * instance to it.\r\n *\r\n * Child clips will be appended automatically on every state change, their clips will be found by keys.\r\n * On state change notifies all child components to update their states.\r\n *\r\n * *One of the main ideas of this framework is if there is no clip for UIComponentPrototype\r\n * at current state or at all, nothing bad happens.*\r\n * @inheritDoc\r\n * @extends Phaser.Events.EventEmitter\r\n * @property {String} lockId Used by UIManager, see {@link PhaserComps.UIManager}\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside\r\n * @param {String} [key] key to find clip inside parent\r\n */\r\nexport default class UIComponentPrototype extends Phaser.Events.EventEmitter {\r\n\r\n\tstatic get EVENT_STATE() { return _EVENT_STATE; }\r\n\r\n\t/**\r\n\t * @param {PhaserComps.UIComponents.UIComponentPrototype} parent\r\n\t * @param {String} key\r\n\t */\r\n\tconstructor(parent, key) {\r\n\t\tsuper();\r\n\r\n\t\t/**\r\n\t\t * @type {String}\r\n\t\t */\r\n\t\tthis._lockId = null;\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {UIComponentPrototype}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._parent = parent;\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {String}\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._key = key;\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {PhaserComps.ComponentClip}\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._clip = null;\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {Object<String>}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._texts = {};\r\n\r\n\t\tif (key && parent) {\r\n\t\t\t// sign on parents state update\r\n\t\t\tparent.on(_EVENT_STATE, this._onEventState, this);\r\n\t\t}\r\n\t\tthis._clipUpdate();\r\n\t}\r\n\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#appendClip\r\n\t * @description\r\n\t * Append a instance to this to control it. State setup will be processed immediately.<br>\r\n\t * Use only for root instance, child instances will be appended automatically depending on state of this.\r\n\t * @param {PhaserComps.ComponentClip} clip ComponentView instance to append\r\n\t */\r\n\tappendClip(clip) {\r\n\t\tif (this._clip === clip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this._clip !== null) {\r\n\t\t\tthis.removeClip();\r\n\t\t}\r\n\t\tthis._clip = clip;\r\n\t\tif (this._clip) {\r\n\t\t\tthis.onClipAppend(this._clip);\r\n\t\t}\r\n\t\tthis._clipProcess();\r\n\t}\r\n\r\n\t/** @return {String} */\r\n\tget lockId() {\r\n\t\treturn this._lockId;\r\n\t}\r\n\r\n\t/**\r\n\t * @return {Phaser.Geom.Rectangle}\r\n\t */\r\n\tget lockClipBounds() { return null; } // override\r\n\r\n\t/** @return {Phaser.GameObjects.GameObject|*} */\r\n\tget lockClip() { return null; } // override\r\n\r\n\t/** @param {string} value */\r\n\tset lockId(value) {\r\n\t\tif (this._lockId === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this._lockId) {\r\n\t\t\tPhaserComps.UIManager.unregister(this);\r\n\t\t}\r\n\t\tthis._lockId = value;\r\n\t\tif (this._lockId) {\r\n\t\t\tPhaserComps.UIManager.register(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Override this, if you want to do something, when new clip removed,\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#onClipAppend\r\n\t * @protected\r\n\t * @param {PhaserComps.ComponentClip} clip\r\n\t */\r\n\tonClipAppend(clip) {\r\n\t\t// override me\r\n\t}\r\n\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#removeClip\r\n\t * @protected\r\n\t */\r\n\tremoveClip() {\r\n\t\tthis.onClipRemove(this._clip);\r\n\t\tthis._clip = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Override this, if you want to do something, when new clip removed,\r\n\t * like remove clip events listeners.\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#onClipRemove\r\n\t * @protected\r\n\t * @param clip\r\n\t */\r\n\tonClipRemove(clip) {\r\n\t\t// override me\r\n\t}\r\n\r\n\t/**\r\n\t * Call doState to setup new state, id is provided by [getStateId]{@link PhaserComps.UIComponents.UIComponentPrototype#getStateId}\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#doState\r\n\t * @protected\r\n\t * @see #getStateId\r\n\t */\r\n\tdoState() {\r\n\t\tlet stateId = this.getStateId();\r\n\t\tthis._setupState(stateId);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns saved text by key, if it was set previously\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#getText\r\n\t * @param {String} key\r\n\t * @returns {String|Array<String>} text value\r\n\t */\r\n\tgetText(key) {\r\n\t\treturn this._texts[key];\r\n\t}\r\n\r\n\t/**\r\n\t * Set text value to the textfield with provided key.\r\n\t * Text value is saved in the component's instance dictionary and will be set to the textField on every state change\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#setText\r\n\t * @param {String} key TextField key\r\n\t * @param {String|Array<String>} text text string\r\n\t */\r\n\tsetText(key, text) {\r\n\t\tif (this._texts[key] === text) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._texts[key] = text;\r\n\t\tif (this._clip) {\r\n\t\t\tlet textField = this._clip.getChildText(key);\r\n\t\t\tif (textField) {\r\n\t\t\t\ttextField.text = text;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#getStateId\r\n\t * @description\r\n\t * Current state id, used by [doState]{@link PhaserComps.UIComponents.UIComponentPrototype#doState} method\r\n\t * @returns {String}\r\n\t * @protected\r\n\t */\r\n\tgetStateId() {\r\n\t\treturn \"default\";\r\n\t}\r\n\r\n\t/**\r\n\t * Destroy ComponentPrototype and clip, if exists\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#destroy\r\n\t * @protected\r\n\t * @param {Boolean} [fromScene=false]\r\n\t */\r\n\tdestroy(fromScene) {\r\n\t\tif (this._parent){\r\n\t\t\tthis._parent.removeListener(_EVENT_STATE, this._onEventState);\r\n\t\t}\r\n\t\tif (this._clip) {\r\n\t\t\tthis._clip.destroy(fromScene);\r\n\t\t}\r\n\t\tsuper.destroy();\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#_clipUpdate\r\n\t * @private\r\n\t */\r\n\t_clipUpdate() {\r\n\t\tif (!this._key) {\r\n\t\t\t// parent is clip itself\r\n\t\t} else {\r\n\t\t\tif (this._parent._clip) {\r\n\t\t\t\tlet clip = this._parent._clip.getChildClip(this._key);\r\n\t\t\t\tthis.appendClip(clip);\r\n\t\t\t} else {\r\n\t\t\t\tthis.appendClip(null);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#_clipProcess\r\n\t * @private\r\n\t */\r\n\t_clipProcess() {\r\n\t\tif (!this._clip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.doState();\r\n\t\tthis.onClipProcess();\r\n\t}\r\n\r\n\t/**\r\n\t * Override this, if you want to do something, when state or clip changes.\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#onClipProcess\r\n\t * @protected\r\n\t * @override\r\n\t */\r\n\tonClipProcess() {\r\n\t\t// override me\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#_setupState\r\n\t * @param {String} stateId state id to setup\r\n\t * @private\r\n\t */\r\n\t_setupState(stateId) {\r\n\t\tif (this._clip) {\r\n\t\t\tthis._clip.setState(stateId);\r\n\r\n\t\t\t// update textfields\r\n\t\t\tfor (let textKey in this._texts) {\r\n\t\t\t\tlet textField = this._clip.getChildText(textKey);\r\n\t\t\t\tif (textField) {\r\n\t\t\t\t\ttextField.text = this._texts[textKey];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.emit(_EVENT_STATE);\r\n\t}\r\n\r\n\t/**\r\n\t * Parent state change listener\r\n\t * @method PhaserComps.UIComponents.UIComponentPrototype#_onEventState\r\n\t * @private\r\n\t */\r\n\t_onEventState() {\r\n\t\tthis._clipUpdate();\r\n\t}\r\n}","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","import UIComponentPrototype from \"./UIComponentPrototype\";\r\nimport UIManager from \"../manager/UIManager\";\r\nimport Phaser from \"phaser\";\r\n\r\nconst HIT_ZONE = \"HIT_ZONE\";\r\nconst LABEL = \"label\";\r\n\r\nconst _STATE_UP = \"up\";\r\nconst _STATE_DOWN = \"down\";\r\nconst _STATE_OVER = \"over\";\r\nconst _STATE_DISABLE = \"disable\";\r\n\r\nconst _EVENT_CLICK = \"event_click\";\r\n\r\n/**\r\n * @class UIButton\r\n * @memberOf PhaserComps.UIComponents\r\n * @classdesc\r\n * Button component prototype, has states `up`, `over`, `down`, `disable`\r\n * Emits EVENT_CLICK on click.\r\n * When disabled, doesn't interact to mouse events and move to state `disable`\r\n * @extends PhaserComps.UIComponents.UIComponentPrototype\r\n * @emits PhaserComps.UIComponents.UIButton.EVENT_CLICK\r\n *\r\n * @property {Boolean} enable activate/deactivate button interaction. if false, button state is set to `disable`\r\n * @property {String} label get/set button label text\r\n *\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside\r\n * @param {String} [key] key to find clip inside parent\r\n * @param {String} [labelText] text to set for a 'label' key\r\n */\r\nexport default class UIButton extends UIComponentPrototype {\r\n\r\n\t/**\r\n\t * @event PhaserComps.UIComponents.UIButton.EVENT_CLICK\r\n\t * @memberOf PhaserComps.UIComponents.UIButton\r\n\t * @description\r\n\t * Emitted on click\r\n\t */\r\n\tstatic get EVENT_CLICK() { return _EVENT_CLICK; }\r\n\r\n\tconstructor(parent, key, labelText) {\r\n\t\tsuper(parent, key);\r\n\t\tthis._enable = true;\r\n\t\tthis._isPressed = false;\r\n\t\tthis._isOver = false;\r\n\t\t/**\r\n\t\t * @type {Phaser.GameObjects.Zone}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._hitZone = null;\r\n\t\tif (labelText) {\r\n\t\t\tthis.label = labelText;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButton#onClipAppend\r\n\t * @inheritDoc\r\n\t */\r\n\tonClipAppend(clip) {\r\n\t\tthis._updateInteractive();\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButton#onClipRemove\r\n\t * @inheritDoc\r\n\t */\r\n\tonClipRemove(clip) {\r\n\t\tlet zone = clip.getChildClip(HIT_ZONE);\r\n\t\tif (!zone) {\r\n\t\t\t//console.warn(\"no hit zone for\", this._key);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._removeInteractive(zone);\r\n\t}\r\n\r\n\tget label() { return this.getText(LABEL); }\r\n\tset label(value) {\r\n\t\tthis.setText(LABEL, value);\r\n\t}\r\n\r\n\tget enable() { return this._enable; }\r\n\tset enable(value) {\r\n\t\tif (this._enable === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._enable = value;\r\n\t\tthis._updateInteractive();\r\n\t\tthis.doState();\r\n\t}\r\n\r\n\t/**\r\n\t * @method UIButton#_setupInteractive\r\n\t * @param {Phaser.GameObjects.Zone} zone\r\n\t * @private\r\n\t */\r\n\t_setupInteractive(zone) {\r\n\t\tzone.setInteractive({ useHandCursor: true });\r\n\t\tzone.on(\"pointerdown\", this._onPointerDown, this);\r\n\t\tzone.on(\"pointerup\", this._onPointerUp, this);\r\n\t\tzone.on(\"pointerover\", this._onPointerOver, this);\r\n\t\tzone.on(\"pointerout\", this._onPointerOut, this);\r\n\t\tthis._hitZone = zone;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButton#_removeInteractive\r\n\t * @param {Phaser.GameObjects.Zone} zone\r\n\t * @private\r\n\t */\r\n\t_removeInteractive(zone) {\r\n\t\tzone.disableInteractive();\r\n\t\tzone.removeListener(Phaser.Input.Events.GAMEOBJECT_POINTER_DOWN, this._onPointerDown, this);\r\n\t\tzone.removeListener(Phaser.Input.Events.GAMEOBJECT_POINTER_UP, this._onPointerUp, this);\r\n\t\tzone.removeListener(Phaser.Input.Events.GAMEOBJECT_POINTER_OVER, this._onPointerOver, this);\r\n\t\tzone.removeListener(Phaser.Input.Events.GAMEOBJECT_POINTER_OUT, this._onPointerOut, this);\r\n\t\tthis._hitZone = null;\r\n\t}\r\n\r\n\tget lockClipBounds() {\r\n\t\treturn this._hitZone ? this._hitZone.getBounds() : null;\r\n\t}\r\n\r\n\tget lockClip() {\r\n\t\treturn this._hitZone;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButton#_updateInteractive\r\n\t * @private\r\n\t */\r\n\t_updateInteractive() {\r\n\t\tif (!this._clip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet zone = this._clip.getChildClip(HIT_ZONE);\r\n\t\tif (!zone) {\r\n\t\t\t//console.warn(\"no hit zone for\", this._key);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.enable) {\r\n\t\t\tthis._setupInteractive(zone);\r\n\t\t} else {\r\n\t\t\tthis._removeInteractive(zone);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButton#getStateId\r\n\t * @inheritDoc\r\n\t * @returns {String}\r\n\t */\r\n\tgetStateId() {\r\n\t\tif (!this.enable) {\r\n\t\t\treturn this.STATE_DISABLE;\r\n\t\t}\r\n\t\tif (this._isPressed) {\r\n\t\t\treturn this.STATE_DOWN;\r\n\t\t}\r\n\t\tif (this._isOver) {\r\n\t\t\treturn this.STATE_OVER;\r\n\t\t}\r\n\t\treturn this.STATE_UP;\r\n\t}\r\n\r\n\t/**\r\n\t * @protected\r\n\t * @method PhaserComps.UIComponents.UIButton#_onClick\r\n\t * @description\r\n\t * called when button hit zone clicked, emits EVENT_CLICK\r\n\t */\r\n\t_onClick() {\r\n\t\tthis.emit(_EVENT_CLICK);\r\n\t}\r\n\r\n\tget STATE_UP() { return _STATE_UP; }\r\n\tget STATE_DOWN() { return _STATE_DOWN; }\r\n\tget STATE_OVER() { return _STATE_OVER; }\r\n\tget STATE_DISABLE() { return _STATE_DISABLE; }\r\n\r\n\t/**\r\n\t * @method UIButton#_onPointerOut\r\n\t * @protected\r\n\t */\r\n\t_onPointerOut() {\r\n\t\tthis._isOver = false;\r\n\t\tthis._isPressed = false;\r\n\t\tthis.doState();\r\n\t}\r\n\r\n\t/**\r\n\t * @method UIButton#_onPointerOver\r\n\t * @protected\r\n\t */\r\n\t_onPointerOver() {\r\n\t\tthis._isOver = true;\r\n\t\tthis.doState();\r\n\t}\r\n\r\n\t/**\r\n\t * @method UIButton#_onPointerDown\r\n\t * @protected\r\n\t */\r\n\t_onPointerDown(pointer, localX, localY, event) {\r\n\t\tthis._isPressed = true;\r\n\t\tthis.doState();\r\n\t\tevent.stopPropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * @method UIButton#_onPointerUp\r\n\t * @protected\r\n\t */\r\n\t_onPointerUp(pointer, localX, localY, event) {\r\n\t\tlet isClicked = this._isPressed && this._isOver;\r\n\t\tthis._isPressed = false;\r\n\t\tthis.doState();\r\n\t\tif (isClicked) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tif (UIManager.check(this.lockId)) {\r\n\t\t\t\tthis._onClick();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @method UIButton#destroy\r\n\t * @protected\r\n\t * @inheritDoc\r\n\t */\r\n\tdestroy(fromScene) {\r\n\t\tif (this._clip) {\r\n\t\t\tlet zone = this._clip.getChildClip(HIT_ZONE);\r\n\t\t\tif (zone) {\r\n\t\t\t\tthis._removeInteractive(zone);\r\n\t\t\t}\r\n\t\t}\r\n\t\tsuper.destroy(fromScene);\r\n\t}\r\n}","let isLock = false;\r\nconst enabledIds = [];\r\nconst registeredComps = {};\r\n\r\n/**\r\n * @namespace PhaserComps.UIManager\r\n * @memberOf PhaserComps\r\n * @classdesc Allows to lock all ui, except for provided lock ids.\r\n * For this, you must set `lockId` property to UIComponentPrototype instances you want to enable,\r\n * and then switch theirs availability by UIManager's\r\n * {@link lock} and {@link unlock} methods\r\n *\r\n * For example, locked UIButton will still interact to mouse events, but will not emit click event.\r\n *\r\n * This can be useful in game tutorials.\r\n */\r\nexport default class UIManager {\r\n\r\n\t/**\r\n\t * @memberOf PhaserComps.UIManager\r\n\t * @description Makes only components with provided ids list (or one id string) to emit UI events\r\n\t *\r\n\t * @param {String | Array<String>} id component's lock id, or Array of lock ids to be only enabled\r\n\t * @param {boolean} [rewrite=true] rewrite current list if true, otherwise add to list\r\n\t */\r\n\tstatic lock(id, rewrite = true) {\r\n\t\tif (rewrite) {\r\n\t\t\tthis.unlock();\r\n\t\t}\r\n\t\tif (typeof id === \"string\") {\r\n\t\t\tenabledIds.push(id);\r\n\t\t} else {\r\n\t\t\tid.forEach(value => enabledIds.push(value));\r\n\t\t}\r\n\t\tisLock = true;\r\n\t}\r\n\r\n\t/**\r\n\t * @memberOf PhaserComps.UIManager\r\n\t * @description Releases all components\r\n\t */\r\n\tstatic unlock() {\r\n\t\tenabledIds.length = 0;\r\n\t\tisLock = false;\r\n\t}\r\n\r\n\t/** @param {UIComponentPrototype} proto */\r\n\tstatic register(proto) {\r\n\t\tregisteredComps[proto.lockId] = proto;\r\n\t}\r\n\r\n\t/** @param {UIComponentPrototype} proto */\r\n\tstatic unregister(proto) {\r\n\t\tif (registeredComps[proto.lockId]) {\r\n\t\t\tregisteredComps[proto.lockId] = null;\r\n\t\t\tdelete registeredComps[proto.lockId];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @memberOf PhaserComps.UIManager\r\n\t * @description called from component to check, if it's allowed to emit UI event.\r\n\t * @param {String} id\r\n\t */\r\n\tstatic check(id) {\r\n\t\tif (!isLock) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn enabledIds.indexOf(id) !== -1;\r\n\t}\r\n\r\n\t/**\r\n\t * @param {string} id\r\n\t * @return {PhaserComps.UIComponents.UIComponentPrototype}\r\n\t */\r\n\tstatic getById(id) {\r\n\t\treturn registeredComps[id];\r\n\t}\r\n\r\n\t/**\r\n\t * @param {string} id\r\n\t * @returns {Phaser.Geom.Rectangle}\r\n\t */\r\n\tstatic getBoundsById(id) {\r\n\t\tconst proto = this.getById(id);\r\n\t\treturn proto ? proto.lockClipBounds : null;\r\n\t}\r\n\r\n\t/**\r\n\t * @param {string} id\r\n\t * @returns {Phaser.GameObjects.GameObject|*}\r\n\t */\r\n\tstatic getClipById(id) {\r\n\t\tconst proto = this.getById(id);\r\n\t\treturn proto ? proto.lockClip : null;\r\n\t}\r\n\r\n}","/**\r\n * @namespace PhaserComps\r\n */\r\n\r\nimport ComponentClip from \"./clip/ComponentClip\";\r\nimport UIComponents from \"./components/UIComponents\";\r\nimport Plugin from \"./plugin/Plugin\";\r\nimport UIManager from \"./manager/UIManager\";\r\n\r\nconst PhaserComps = {\r\n\tComponentClip: ComponentClip,\r\n\tUIComponents: UIComponents,\r\n\tPlugin: Plugin,\r\n\tUIManager: UIManager\r\n};\r\n\r\nexport default PhaserComps;","import Phaser from \"phaser\";\r\n\r\nconst TYPE_IMAGE = \"image\";\r\nconst TYPE_COMPONENT = \"component\";\r\nconst TYPE_TEXT = \"text\";\r\nconst TYPE_TILE_SPRITE = \"tileSprite\";\r\nconst TYPE_POLYGON = \"polygon\";\r\nconst TYPE_ZONE = \"zone\";\r\n\r\n\r\n/**\r\n * @typedef {Object} PhaserComps.ComponentClip.StateConfig\r\n * Component state config object, generated by jsfl exporter\r\n * @memberOf PhaserComps.ComponentClip\r\n * @property {number} [x=0] x coordinate of component\r\n * @property {number} [y=0] y coordinate of component\r\n * @property {number} [scaleX=1] x scale of component\r\n * @property {number} [scaleY=1] y scale of component\r\n * @property {number} [angle=0] angle of component\r\n * @property {Number} [alpha=1] Opacity of component (`0` to `1`).\r\n */\r\n\r\n/**\r\n * @typedef {Object} PhaserComps.ComponentClip.ComponentConfig\r\n * @description\r\n * Component Config object, generated by jsfl exporter\r\n * @memberOf PhaserComps.ComponentClip\r\n * @property {String} type supported types are\r\n * `image`, `component`, `text`, `tileSprite`, `polygon`, `zone`\r\n * @property {Array<PhaserComps.ComponentClip.ComponentConfig>} [children] component children list\r\n * @property {String} [childId] unique component id, used by {@link StateManager}\r\n * @property {String} [key] key of component to find it with {@link UIComponentPrototype}.\r\n * Must be unique inside one state\r\n * @property {String} [image] Texture frame name. Only for component types `image` and `tileSprite`\r\n * @property {Phaser.GameObjects.TextStyle} [style] text style object, used only for `text` type\r\n * @property {Object<String, PhaserComps.ComponentClip.StateConfig>} [states] object keys are component ids to be enabled\r\n * at the specified state, and the StateConfig is position and scale params to setup for component\r\n * @property {Array<String>} masking List of component ids, that will be masked by this component.\r\n * Currently only polygon masks available.\r\n * @property {Number} [x=0] x coordinate of component\r\n * @property {Number} [y=0] y coordinate of component\r\n * @property {Number} [scaleX=1] x scale of component\r\n * @property {Number} [scaleY=1] y scale of component\r\n * @property {Number} [angle=0] angle of component in degrees\r\n * @property {Number} [alpha=1] Opacity of component (`0` to `1`).\r\n * @property {Number} [width] Component width.\r\n * only for `zone` type\r\n * @property {Number} [height] Component height.\r\n * only for `zone` type\r\n * @property {Array.<Number>} [vertices] Array of polygon vertices coords, `x` and `y` interleaving.\r\n * Only for `polygon` type\r\n * @property {int} [color] polygon color.\r\n * Only for `polygon` type\r\n */\r\n\r\n/**\r\n * @class ComponentClip\r\n * @memberOf PhaserComps\r\n * @classdesc\r\n * @extends Phaser.GameObjects.Container\r\n * Component clip is Phaser Container instance.\r\n * Builds itself with provided jsfl-generated config object.\r\n *\r\n * Clip supports state switching. Best if controlled by\r\n * [UIComponentPrototype]{@link PhaserComps.UIComponents.UIComponentPrototype} instance\r\n *\r\n * @see PhaserComps.UIComponents.UIComponentPrototype\r\n *\r\n * @param {Phaser.Scene} scene Phaser scene to create component at\r\n * @param {ComponentConfig} config jsfl-generated config object\r\n * @param {Array<String>|String} textures texure name or Array of texture names, where component should find its texture frames\r\n */\r\nexport default class ComponentClip extends Phaser.GameObjects.Container {\r\n\tconstructor(scene, config, textures) {\r\n\t\tsuper(scene, 0, 0);\r\n\t\tthis.childComponentClips = [];\r\n\r\n\t\t/**\r\n\t\t * component config object\r\n\t\t * @type {Object}\r\n\t\t * */\r\n\t\tthis._config = config;\r\n\r\n\t\t/**\r\n\t\t * component key\r\n\t\t * @type {String}\r\n\t\t */\r\n\t\tthis._key = config.key;\r\n\r\n\t\t/**\r\n\t\t * list of texture names to use in this component\r\n\t\t * @type {Array<String>}\r\n\t\t * */\r\n\t\tthis._textures = Array.isArray(textures) ? textures : [textures];\r\n\r\n\t\t/**\r\n\t\t * Texture frames to texture names map\r\n\t\t * @type {Object<String>}\r\n\t\t */\r\n\t\tthis.imageFramesMap = {};\r\n\r\n\t\t/**\r\n\t\t * Component's state manager instance. Helps to switch states and find active children by key\r\n\t\t * @type {StateManager}\r\n\t\t * */\r\n\t\tthis._stateManager = new StateManager(this, config);\r\n\r\n\t\tthis._childrenById = {};\r\n\r\n\t\tthis._createImagesMap(textures);\r\n\t\tthis._parseConfig();\r\n\t}\r\n\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.ComponentClip#getStateConfig\r\n\t * @description\r\n\t * Get raw state config object by state id, if exists\r\n\t * @param {String} stateId state id\r\n\t */\r\n\tgetStateConfig(stateId) {\r\n\t\treturn this._stateManager.getStateConfigById(stateId);\r\n\t}\r\n\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.ComponentClip#getStateIds\r\n\t * @description\r\n\t * Component state ids list.\r\n\t * @returns {Array<String>}\r\n\t */\r\n\tgetStateIds() {\r\n\t\treturn this._stateManager.stateIds;\r\n\t}\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.ComponentClip#setState\r\n\t * @description\r\n\t * Switch component view to specified stateId, if such stateId exists.\r\n\t * Do not use it manually, if you are using UIComponentPrototype to control the view\r\n\t *\r\n\t * @param {String} stateId state id to switch to\r\n\t * @param {Boolean} [force=false] if true, state will be setup again even if stateId was not changed\r\n\t */\r\n\tsetState(stateId, force) {\r\n\t\tthis._stateManager.setState(stateId, force);\r\n\t}\r\n\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.ComponentClip#applyChildParams\r\n\t * @description\r\n\t * Apply child params\r\n\t * @param {String} childId\r\n\t * @param {StateConfig} params\r\n\t */\r\n\tapplyChildParams(childId, params) {\r\n\t\tif (!this._childrenById.hasOwnProperty(childId)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tComponentClip._setupCommonParams(this._childrenById[childId], params);\r\n\t}\r\n\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.ComponentClip#getChildClip\r\n\t * @description returns current active component child view instance\r\n\t * @param {String} key child key\r\n\t * @returns {PhaserComps.ComponentClip|Phaser.GameObjects.GameObject}\r\n\t */\r\n\tgetChildClip(key) {\r\n\t\treturn this._stateManager.getActiveComponentByKey(key);\r\n\t}\r\n\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.ComponentClip#getChildText\r\n\t * @description returns current active component child text instance\r\n\t * @param {String} key child text field key\r\n\t * @returns {Phaser.GameObjects.Text}\r\n\t */\r\n\tgetChildText(key) {\r\n\t\t// TODO separate getter\r\n\t\treturn this._stateManager.getActiveComponentByKey(key);\r\n\t}\r\n\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.ComponentClip#destroy\r\n\t * @description destroy all child GameObjects and child clips recursively\r\n\t * @param {Boolean} [fromScene=false]\r\n\t */\r\n\tdestroy(fromScene) {\r\n\t\tfor (let child of this.childComponentClips) {\r\n\t\t\tchild.destroy(fromScene);\r\n\t\t}\r\n\t\tsuper.destroy(fromScene)\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.ComponentClip#_createImagesMap\r\n\t * @description\r\n\t * Fill the imageFramesMap object from provided textures.\r\n\t * imageFramesMap used to\r\n\t * @param {Array<String>} textures\r\n\t * @private\r\n\t * @ignore\r\n\t */\r\n\t_createImagesMap(textures) {\r\n\t\tfor (let textureName of textures) {\r\n\t\t\tconst texture = this.scene.textures.get(textureName);\r\n\t\t\tif (!texture) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tconst frames = texture.getFrameNames();\r\n\t\t\tfor (let frameName of frames) {\r\n\t\t\t\tthis.imageFramesMap[frameName] = textureName;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.ComponentClip#_parseConfig\r\n\t * @description\r\n\t * Builds component from config\r\n\t * @private\r\n\t * @ignore\r\n\t */\r\n\t_parseConfig() {\r\n\t\t//ComponentView._setupCommonParams(this, this._config);\r\n\t\tif (this._config.hasOwnProperty(\"children\")) {\r\n\t\t\tfor (let childConfig of this._config.children) {\r\n\t\t\t\tthis._createChildFromConfig(childConfig);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.ComponentClip#_createChildFromConfig\r\n\t * @description creates child instance, depending on its type, add it to state manager\r\n\t * @param {ComponentConfig} config child component config object\r\n\t * @private\r\n\t * @ignore\r\n\t */\r\n\t_createChildFromConfig(config) {\r\n\t\tlet child = null;\r\n\t\tlet childId = config.childId;\r\n\t\tlet childKey = config.key;\r\n\t\tlet addAsChild = true;\r\n\t\tif (config.type === TYPE_IMAGE) {\r\n\t\t\tchild = this._createImageFromConfig(config);\r\n\t\t} else if (config.type === TYPE_TEXT) {\r\n\t\t\tchild = this._createTextFromConfig(config);\r\n\t\t} else if (config.type === TYPE_TILE_SPRITE) {\r\n\t\t\tchild = this._createTileSpriteFromConfig(config);\r\n\t\t} else if (config.type === TYPE_COMPONENT) {\r\n\t\t\tchild = new ComponentClip(this.scene, config, this._textures);\r\n\t\t\tComponentClip._setupCommonParams(child, config);\r\n\t\t} else if (config.type === TYPE_ZONE) {\r\n\t\t\tchild = this._createHitZoneFromConfig(config);\r\n\t\t} else if (config.type === TYPE_POLYGON) {\r\n\t\t\tchild = this._createPolygonFromConfig(config);\r\n\t\t\tif (config.hasOwnProperty(\"masking\")) {\r\n\t\t\t\tlet mask = child.createGeometryMask();\r\n\t\t\t\tfor (let maskedChildId of config.masking) {\r\n\t\t\t\t\tlet maskedChild = this._childrenById[maskedChildId];\r\n\t\t\t\t\tmaskedChild.setMask(mask);\r\n\t\t\t\t}\r\n\t\t\t\taddAsChild = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (child === null) {\r\n\t\t\t//console.warn(\"unknown component type\", config.type, config);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t//ComponentView._setupCommonParams(child, config);\r\n\t\tthis._childrenById[childId] = child;\r\n\t\tthis.childComponentClips.push(child);\r\n\t\tif (addAsChild) {\r\n\t\t\tthis.add(child);\r\n\t\t}\r\n\t\tthis._stateManager.addComponent(child, childId, childKey);\r\n\t}\r\n\r\n\t/**\r\n\t * @description Create simple polygon with provided vertices from config\r\n\t * @method PhaserComps.ComponentClip#_createPolygonFromConfig\r\n\t * @param {PhaserComps.ComponentClip.ComponentConfig} config\r\n\t * @returns {Phaser.GameObjects.Graphics}\r\n\t * @private\r\n\t * @ignore\r\n\t */\r\n\t_createPolygonFromConfig(config) {\r\n\t\tconst shape = this.scene.make.graphics();\r\n\t\tshape.fillStyle(config.color, config.hasOwnProperty(\"alpha\") ? config.alpha : 1);\r\n\t\tshape.beginPath();\r\n\t\tlet vertices = config.vertices;\r\n\t\tlet verticesLength = vertices.length;\r\n\t\tfor (let i = 0; i < verticesLength; i += 2) {\r\n\t\t\tshape.lineTo(vertices[i], vertices[i + 1]);\r\n\t\t}\r\n\t\tshape.closePath();\r\n\t\tshape.fillPath();\r\n\t\tComponentClip._setupCommonParams(shape, config);\r\n\t\tif (!config.hasOwnProperty(\"masking\")) {\r\n\t\t\tthis.scene.add.existing(shape);\r\n\t\t}\r\n\t\treturn shape;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.ComponentClip#_createTileSpriteFromConfig\r\n\t * @description creates Phaser.GameObjects.TileSprite by jsfl-generated config and returns it\r\n\t * @param {Object} config jsfl-generated TileSprite config object\r\n\t * @returns {Phaser.GameObjects.TileSprite}\r\n\t * @private\r\n\t * @ignore\r\n\t */\r\n\t_createTileSpriteFromConfig(config) {\r\n\t\tconst sprite = this.scene.add.tileSprite(\r\n\t\t\t0, 0,\r\n\t\t\tconfig.width, config.height,\r\n\t\t\tthis.imageFramesMap[config.image],\r\n\t\t\tconfig.image\r\n\t\t);\r\n\t\tsprite.setOrigin(0.5, 0.5); // Animate places shape coords to center\r\n\t\tComponentClip._setupCommonParams(sprite, config);\r\n\t\treturn sprite;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.ComponentClip#_createImageFromConfig\r\n\t * @description creates Phaser.GameObjects.Image instance by jsfl-generated config and returns it\r\n\t * @param {Object} config jsfl-generated Image config object\r\n\t * @returns {Phaser.GameObjects.Image}\r\n\t * @private\r\n\t * @ignore\r\n\t */\r\n\t_createImageFromConfig(config) {\r\n\t\tconst image = this.scene.add.image(\r\n\t\t\t0, 0,\r\n\t\t\tthis.imageFramesMap[config.image],\r\n\t\t\tconfig.image\r\n\t\t);\r\n\t\timage.setOrigin(0);\r\n\t\tComponentClip._setupCommonParams(image, config);\r\n\t\treturn image;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.ComponentClip#_createTextFromConfig\r\n\t * @description creates Phaser.GameObjects.Text instance by jsfl-generated config and returns it\r\n\t * @param {Object} config jsfl-generated Text config object\r\n\t * @returns {Phaser.GameObjects.Text}\r\n\t * @private\r\n\t * @ignore\r\n\t */\r\n\t_createTextFromConfig(config) {\r\n\t\tconst text = this.scene.add.text(0, 0, config.text, config.textStyle);\r\n\t\tif (config.textStyle.align === \"center\") {\r\n\t\t\ttext.setOrigin(0.5, 0);\r\n\t\t} else if (config.textStyle.align === \"right\") {\r\n\t\t\ttext.setOrigin(1, 0);\r\n\t\t} else {\r\n\t\t\ttext.setOrigin(0);\r\n\t\t}\r\n\t\tComponentClip._setupCommonParams(text, config);\r\n\t\treturn text;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.ComponentClip#_createHitZoneFromConfig\r\n\t * @description creates Phaser.GameObjects.Zone instance by jsfl-generated config and returns it\r\n\t * @param {Object} config jsfl-generated Zone config object\r\n\t * @return {Phaser.GameObjects.Zone}\r\n\t * @private\r\n\t * @ignore\r\n\t */\r\n\t_createHitZoneFromConfig(config) {\r\n\t\treturn this.scene.add.zone(\r\n\t\t\tconfig.x || 0,\r\n\t\t\tconfig.y || 0,\r\n\t\t\tconfig.width,\r\n\t\t\tconfig.height\r\n\t\t).setOrigin(0);\r\n\t}\r\n\r\n\t/**\r\n\t * @memberOf ComponentClip\r\n\t * @description setup common game object params from jsfl-generated config\r\n\t * @param {*} component\r\n\t * @param {Object} config\r\n\t * @ignore\r\n\t */\r\n\tstatic _setupCommonParams(component, config) {\r\n\t\tlet x = config.x || 0;\r\n\t\tlet y = config.y || 0;\r\n\t\tlet scaleX = config.scaleX || 1;\r\n\t\tlet scaleY = config.scaleY || 1;\r\n\t\tlet angle = config.angle || 0;\r\n\t\tlet alpha = config.hasOwnProperty(\"alpha\") ? config.alpha : 1;\r\n\t\tcomponent.x = x;\r\n\t\tcomponent.y = y;\r\n\t\tcomponent.scaleX = scaleX;\r\n\t\tcomponent.scaleY = scaleY;\r\n\t\tcomponent.angle = angle;\r\n\t\tcomponent.alpha = alpha;\r\n\t}\r\n}\r\n\r\nclass State {\r\n\t/**\r\n\t * @class State\r\n\t * @classdesc State config decorator, for\r\n\t * [StateManager]{@link PhaserComps.ComponentClip.StateManager} internal use only\r\n\t * @param {PhaserComps.ComponentClip.StateConfig} config\r\n\t * @memberOf PhaserComps.ComponentClip\r\n\t */\r\n\tconstructor(config) {\r\n\t\t/**\r\n\t\t * State config object\r\n\t\t * @type {PhaserComps.ComponentClip.StateConfig}\r\n\t\t */\r\n\t\tthis.config = config;\r\n\t\t/**\r\n\t\t * Component ids, that are only active in this state\r\n\t\t * @type {Array<String>}\r\n\t\t */\r\n\t\tthis.componentIds = [];\r\n\t\tthis.componentIds = Object.keys(config);\r\n\t\t/*for (let componentId in config) {\r\n\t\t\tthis.componentIds.push(componentId);\r\n\t\t}*/\r\n\t}\r\n}\r\n\r\nclass StateManager {\r\n\t/**\r\n\t * @class StateManager\r\n\t * @memberOf PhaserComps.ComponentClip\r\n\t * @classdesc\r\n\t * For [ComponentClip]{@link PhaserComps.ComponentClip}\r\n\t * internal use only\r\n\t *\r\n\t * Shows or hides component view instances depending on which state is active.\r\n\t * Helps to get current active components by keys.\r\n\t *\r\n\t * @param {PhaserComps.ComponentClip} clip state manager creator clip instance\r\n\t * @param {Object} config Main component states config object\r\n\t *\r\n\t */\r\n\tconstructor(clip, config) {\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {PhaserComps.ComponentClip}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._clip = clip;\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {Array<String>}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._dynamicChildrenIds = [];\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {Object<State>}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._states = {};\r\n\r\n\t\t/**\r\n\t\t * State ids array\r\n\t\t * @type {Array<String>}\r\n\t\t */\r\n\t\tthis.stateIds = [];\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {Object}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._components = {};\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {State}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._currentState = null;\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {String}\r\n\t\t * @private\r\n\t\t */\r\n\r\n\t\tthis._currentStateId = null;\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {Object<String>}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._componentKeys = {};\r\n\r\n\t\tthis._residentComponentsByKey = {};\r\n\t\tlet idsArray = [];\r\n\t\tfor (let stateId in config.states) {\r\n\t\t\tthis.stateIds.push(stateId);\r\n\t\t\tlet state = new State(config.states[stateId]);\r\n\t\t\tthis._states[stateId] = state;\r\n\t\t\tidsArray.push(...state.componentIds);\r\n\t\t}\r\n\t\tconst uniq = []\r\n\t\tfor (let id of idsArray) {\r\n\t\t\tif (!uniq.includes(id)) {\r\n\t\t\t\tuniq.push(id);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._dynamicChildrenIds = uniq;\r\n\t}\r\n\r\n\t/**\r\n\t * @public\r\n\t * @method PhaserComps.ComponentClip.StateManager#getStateConfigById\r\n\t * @description\r\n\t * Get raw state config object by state id\r\n\t * @param {String} stateId state id\r\n\t */\r\n\tgetStateConfigById(stateId) {\r\n\t\tif (!this._states.hasOwnProperty(stateId)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn this._states[stateId].config;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.ComponentClip.StateManager#addComponent\r\n\t * @param {PhaserComps.ComponentClip|Phaser.GameObjects.GameObject} component\r\n\t * component view instance, it may be text, image, sprite, or ComponentView instance\r\n\t * @param {String} childId unique child id from component config\r\n\t * @param {String} [childKey] child key from component config\r\n\t */\r\n\taddComponent(component, childId, childKey) {\r\n\r\n\t\tif (!this._dynamicChildrenIds.includes(childId)) {\r\n\t\t\tif (typeof childKey !== \"undefined\") {\r\n\t\t\t\tthis._residentComponentsByKey[childKey] = component;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._components[childId] = component;\r\n\t\t\tif (typeof childKey !== \"undefined\") {\r\n\t\t\t\tthis._componentKeys[childId] = childKey;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Setup state with provided stateId, if exists\r\n\t * @method PhaserComps.ComponentClip.StateManager#setState\r\n\t * @param {String} stateId state id to setup\r\n\t * @param {Boolean} force if true, update state even if stateId was not changed\r\n\t */\r\n\tsetState(stateId, force) {\r\n\t\tif (this._currentStateId === stateId && !force) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this._states.hasOwnProperty(stateId)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._currentStateId = stateId;\r\n\t\tthis._currentState = this._states[stateId];\r\n\t\tthis.setupState();\r\n\t}\r\n\r\n\t/**\r\n\t * Get component with provided key, if exists and is present in current state\r\n\t * @method PhaserComps.ComponentClip.StateManager#getActiveComponentByKey\r\n\t * @param {String} key Component key to get\r\n\t * @returns {ComponentClip|Phaser.GameObjects.Image|Phaser.GameObjects.TileSprite|Phaser.GameObjects.Text|null}\r\n\t */\r\n\tgetActiveComponentByKey(key) {\r\n\t\tif (this._residentComponentsByKey.hasOwnProperty(key)) {\r\n\t\t\treturn this._residentComponentsByKey[key];\r\n\t\t}\r\n\t\tif (this._currentState === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tfor (let i in this._currentState.componentIds) {\r\n\t\t\tlet id = this._currentState.componentIds[i];\r\n\t\t\tif (this._componentKeys[id] === key) {\r\n\t\t\t\treturn this._components[id];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/**\r\n\t * Show state components, apply its' state positions, and hide non-state components\r\n\t * @method PhaserComps.ComponentClip.tateManager#setupState\r\n\t * @protected\r\n\t */\r\n\tsetupState() {\r\n\t\tlet idsToShow = this._currentState.componentIds;\r\n\t\tfor (let id of this._dynamicChildrenIds) {\r\n\t\t\tlet component = this._components[id];\r\n\t\t\tif (idsToShow.includes(id)) {\r\n\t\t\t\tcomponent.visible = true;\r\n\t\t\t\tComponentClip._setupCommonParams(component, this._currentState.config[id]);\r\n\t\t\t} else {\r\n\t\t\t\tcomponent.visible = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import UIButton from \"./UIButton\";\r\n\r\n/**\r\n * @class UIButtonSelect\r\n * @memberOf PhaserComps.UIComponents\r\n * @classdesc\r\n * Checkbox-like button component prototype.\r\n * Has states `up`, `over`, `down`, `disable`, `up_select`, `over_select`, `down_select`, `disable_select`,\r\n * Emits EVENT_CLICK on click.\r\n * When disabled, doesn't interact to mouse events and move to state `disable`\r\n * @extends PhaserComps.UIComponents.UIButton\r\n * @emits PhaserComps.UIComponents.UIButton.EVENT_CLICK\r\n *\r\n * @property {Boolean} enable activate/deactivate button interaction. if false, button state is set to `disable`\r\n * @property {String} label get/set button label text\r\n * @property {Boolean} select get/set switch\r\n *\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside\r\n * @param {String} [key] key to find clip inside parent\r\n * @param {String} [labelText] text to set for a 'label' key\r\n */\r\nexport default class UIButtonSelect extends UIButton {\r\n\r\n\tconstructor(parent, key, labelText){\r\n\t\tsuper(parent, key, labelText);\r\n\r\n\t\t/**\r\n\t\t * button as selected or not\r\n\t\t * @type {Boolean}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._select = false;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButtonSelect#getStateId\r\n\t * @inheritDoc\r\n\t * @returns {String}\r\n\t */\r\n\tgetStateId() {\r\n\t\treturn super.getStateId() + (this._select ? \"_select\" : \"\");\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButtonSelect#_onClick\r\n\t * @inheritDoc\r\n\t */\r\n\t_onClick() {\r\n\t\tthis._select = !this._select;\r\n\t\tthis.doState();\r\n\t\tsuper._onClick();\r\n\t}\r\n\r\n\tget select() { return this._select; }\r\n\tset select(value) {\r\n\t\tif (this._select === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._select = value;\r\n\t\tthis.doState();\r\n\t}\r\n}","import UIButton from \"./UIButton\";\r\nimport UIManager from \"../manager/UIManager\";\r\nconst _EVENT_DRAG = \"event_drag\";\r\n\r\n/**\r\n * @typedef DragBounds\r\n * @memberOf PhaserComps.UIComponents.UIButtonDraggable\r\n * @property {Number} minX left drag bound\r\n * @property {Number} minY top drag bound\r\n * @property {Number} maxX right drag bound\r\n * @property {Number} maxY bottom drag bound\r\n */\r\n\r\n/**\r\n * @class UIButtonDraggable\r\n * @memberOf PhaserComps.UIComponents\r\n * @classdesc\r\n * Same as {@link UIComponents.UIButton}, but also emits EVENT_DRAG with two arguments, horizontal and vertical movement delta\r\n *\r\n * @extends UIComponents.UIButton\r\n * @emits EVENT_CLICK,\r\n * @emits EVENT_DRAG,\r\n *\r\n * @property {Boolean} enable activate/deactivate button interaction. if false, button state is set to `disable`\r\n * @property {String} label get/set button label text\r\n *\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside\r\n * @param {String} [key] key to find clip inside parent\r\n * @param {String} [labelText] text to set for a 'label' key\r\n */\r\n\r\nexport default class UIButtonDraggable extends UIButton {\r\n\r\n\t/**\r\n\t * @event PhaserComps.UIComponents.UIButtonDraggable.EVENT_DRAG\r\n\t * @memberOf PhaserComps.UIComponents.UIButtonDraggable\r\n\t * @description\r\n\t * Emitted on drag move.\r\n\t * @param {Number} x horizontal drag movement (from drag start)\r\n\t * @param {Number} y vertical drag movement (from drag start)\r\n\t */\r\n\tstatic get EVENT_DRAG() { return _EVENT_DRAG; }\r\n\r\n\tconstructor(parent, key, labelText) {\r\n\t\tsuper(parent, key, labelText);\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type DragBounds\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._dragBounds = {\r\n\t\t\tminX: 0,\r\n\t\t\tmaxX: 0,\r\n\t\t\tminY: 0,\r\n\t\t\tmaxY: 0\r\n\t\t};\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._startDragX = 0;\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._startDragY = 0;\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {Phaser.GameObjects.Zone}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._dragZone = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Set clip drag bounds\r\n\t * @method PhaserComps.UIComponents.UIButtonDraggable#setDragBounds\r\n\t * @param {Number} minX left drag bound\r\n\t * @param {Number} minY top drag bound\r\n\t * @param {Number} maxX right drag bound\r\n\t * @param {Number} maxY bottom drag bound\r\n\t */\r\n\tsetDragBounds(minX, minY, maxX, maxY) {\r\n\t\tthis._dragBounds.minX = minX;\r\n\t\tthis._dragBounds.maxX = maxX;\r\n\t\tthis._dragBounds.minY = minY;\r\n\t\tthis._dragBounds.maxY = maxY;\r\n\t}\r\n\r\n\t/**\r\n\t * _dragZone `dragstart` event callback\r\n\t * @method PhaserComps.UIComponents.UIButtonDraggable#_onDragStart\r\n\t * @param pointer\r\n\t * @param {Phaser.GameObjects.GameObject} gameObject\r\n\t * @protected\r\n\t */\r\n\t_onDragStart(pointer, gameObject) {\r\n\t\tif (!this._dragZone || this._dragZone !== gameObject) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this._clip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._startDragX = this._clip.x - gameObject.input.dragStartX;\r\n\t\tthis._startDragY = this._clip.y - gameObject.input.dragStartY;\r\n\t}\r\n\r\n\t/**\r\n\t * _dragZone `drag` event callback\r\n\t * @method PhaserComps.UIComponents.UIButtonDraggable#_onDrag\r\n\t * @param pointer\r\n\t * @param {Phaser.GameObjects.GameObject} gameObject\r\n\t * @param {Number} dragX\r\n\t * @param {Number} dragY\r\n\t * @protected\r\n\t */\r\n\t_onDrag(pointer, gameObject, dragX, dragY) {\r\n\t\tif (!UIManager.check(this.lockId)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!this._dragZone\t|| this._dragZone !== gameObject || this.clip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet newX = this._startDragX + dragX;\r\n\t\tlet newY = this._startDragY + dragY;\r\n\t\tif (newX < this._dragBounds.minX) {\r\n\t\t\tnewX = this._dragBounds.minX;\r\n\t\t} else if (newX > this._dragBounds.maxX) {\r\n\t\t\tnewX = this._dragBounds.maxX;\r\n\t\t}\r\n\r\n\t\tif (newY < this._dragBounds.minY) {\r\n\t\t\tnewY = this._dragBounds.minY;\r\n\t\t} else if (newY > this._dragBounds.maxY) {\r\n\t\t\tnewY = this._dragBounds.maxY;\r\n\t\t}\r\n\t\tthis.emit(_EVENT_DRAG, newX, newY);\r\n\t}\r\n\r\n\t_setupInteractive(zone) {\r\n\t\tsuper._setupInteractive(zone);\r\n\t\tthis._dragZone = zone;\r\n\t\t//zone.scene.input.dragDistanceThreshold = 3;\r\n\t\tzone.scene.input.setDraggable(zone, true);\r\n\t\tzone.scene.input.on(\"dragstart\", this._onDragStart, this);\r\n\t\tzone.scene.input.on(\"drag\", this._onDrag, this);\r\n\t}\r\n\r\n\t_removeInteractive(zone) {\r\n\t\tsuper._removeInteractive(zone);\r\n\t\tthis._dragZone = null;\r\n\t\tzone.scene.input.setDraggable(zone, false);\r\n\t\tzone.scene.input.removeListener(\"dragstart\", this._onDragStart);\r\n\t\tzone.scene.input.removeListener(\"drag\", this._onDrag);\r\n\t}\r\n\r\n}","import UIComponentPrototype from \"./UIComponentPrototype\";\r\nimport UIButton from \"./UIButton\";\r\nimport UIButtonDraggable from \"./UIButtonDraggable\";\r\nimport UIManager from \"../manager/UIManager\";\r\n\r\nconst _EVENT_CHANGE = \"event_change\";\r\n\r\n/**\r\n * @class UIScrollBar\r\n * @memberOf PhaserComps.UIComponents\r\n * @classdesc\r\n * Scroll bar component. can be vertical or horizontal <br>\r\n * It have up and down buttons inside, draggable thumb button. <br>\r\n * `DIMENSIONS` zone defines thumb drag bounds.\r\n *\r\n * default value range is 0 to 1, You can change it by setting\r\n * min and max value. Also you can set value step, so value will always\r\n * be stepped by it\r\n *\r\n * @emits PhaserComps.UIComponents.UIScrollBar.EVENT_CHANGE\r\n * @property {Number} value current bar value, from min value to max, default is from 0 to 1\r\n *\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside\r\n * @param {String} [key] key to find clip inside parent\r\n * @param {Boolean} [vertical=false] scroll bar behave like vertical or horizontal\r\n */\r\n\r\nexport default class UIScrollBar extends UIComponentPrototype {\r\n\r\n\t/**\r\n\t * @event PhaserComps.UIComponents.UIScrollBar.EVENT_CHANGE\r\n\t * @memberOf PhaserComps.UIComponents.UIScrollBar\r\n\t * @description\r\n\t * Emitted on scroll bar value change.\r\n\t * @param {Number} value current scrollbar value\r\n\t */\r\n\tstatic get EVENT_CHANGE() { return _EVENT_CHANGE; }\r\n\r\n\tconstructor(parent, key, vertical) {\r\n\t\tsuper(parent, key);\r\n\t\tthis._vertical = vertical || false;\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._value = 0;\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._minValue = 0;\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._maxValue = 1;\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._valueStep = 0;\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._buttonStep = 0.1;\r\n\r\n\t\t/**\r\n\t\t * scroll up/left button\r\n\t\t * @type {PhaserComps.UIComponents.UIButton}\r\n\t\t */\r\n\t\tthis.btnPrev = new UIButton(this, \"btn_up\");\r\n\t\tthis.btnPrev.on(UIButton.EVENT_CLICK, this.onPrevClick, this);\r\n\t\t/**\r\n\t\t * scroll down/right button\r\n\t\t * @type {PhaserComps.UIComponents.UIButton}\r\n\t\t */\r\n\t\tthis.btnNext = new UIButton(this, \"btn_down\");\r\n\t\tthis.btnNext.on(UIButton.EVENT_CLICK, this.onNextClick, this);\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {PhaserComps.UIComponents.UIButtonDraggable}\r\n\t\t */\r\n\t\tthis.thumb = new UIButtonDraggable(this, \"thumb\");\r\n\t\tthis.thumb.on(UIButtonDraggable.EVENT_DRAG, this._onThumbDrag, this);\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._trackStart = 0;\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._trackLength = 100;\r\n\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {PhaserComps.ComponentClip}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._thumbClip = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Setup scroll bar value bounds and value step\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#setValueBounds\r\n\t * @param {Number} minValue minimum value\r\n\t * @param {Number} maxValue maximum value\r\n\t * @param {Number} [valueStep=0] value change step\r\n\t */\r\n\tsetValueBounds(minValue, maxValue, valueStep) {\r\n\t\tthis._minValue = minValue;\r\n\t\tthis._maxValue = maxValue;\r\n\t\tif (typeof valueStep !== \"undefined\") {\r\n\t\t\tthis._valueStep = valueStep;\r\n\t\t\tif (this._buttonStep < valueStep) {\r\n\t\t\t\tthis._buttonStep = valueStep;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._valueStep = 0;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#setButtonStep\r\n\t * @param {Number} val\r\n\t */\r\n\tsetButtonStep(val) {\r\n\t\tthis._buttonStep = val;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#onClipAppend\r\n\t * @inheritDoc\r\n\t */\r\n\tonClipAppend(clip) {\r\n\t\tsuper.onClipAppend(clip);\r\n\t\tthis._updateClips();\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#_updateClips\r\n\t * @private\r\n\t */\r\n\t_updateClips() {\r\n\t\tif (!this._clip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._thumbClip = this.thumb._clip;\r\n\t\tlet trackClip = this._clip.getChildClip(\"DIMENSIONS\");\r\n\t\tif (trackClip) {\r\n\t\t\tthis._trackStart = this._vertical ? trackClip.y : trackClip.x;\r\n\t\t\tthis._trackLength = this._vertical ? trackClip.height : trackClip.width;\r\n\r\n\t\t\tif (this._thumbClip) {\r\n\t\t\t\tthis.thumb.setDragBounds(\r\n\t\t\t\t\tthis._vertical ? this._thumbClip.x : trackClip.x,\r\n\t\t\t\t\tthis._vertical ? trackClip.y : this._thumbClip.y,\r\n\t\t\t\t\tthis._vertical ? this._thumbClip.x : trackClip.x + trackClip.width,\r\n\t\t\t\t\tthis._vertical ? trackClip.y + trackClip.height : this._thumbClip.y\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet hitZone = this._clip.getChildClip(\"HIT_ZONE\");\r\n\t\tif (hitZone) {\r\n\t\t\thitZone.on(\"pointerdown\", this._onZoneDown, this);\r\n\t\t\t//hitZone.on(\"pointerup\", this.onZoneUp, this);\r\n\t\t}\r\n\t\tthis._updateThumbFromValue();\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#onClipProcess\r\n\t * @inheritDoc\r\n\t */\r\n\tonClipProcess() {\r\n\t\tsuper.onClipProcess();\r\n\t\tif (!this.thumb) {// call from super constructor\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._updateClips();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#onPrevClick\r\n\t * @protected\r\n\t */\r\n\tonPrevClick() {\r\n\t\tif (!UIManager.check(this.lockId)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.value -= this._buttonStep;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#onNextClick\r\n\t * @protected\r\n\t */\r\n\tonNextClick() {\r\n\t\tif (!UIManager.check(this.lockId)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.value += this._buttonStep;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#_updateThumbFromValue\r\n\t * @private\r\n\t */\r\n\t_updateThumbFromValue() {\r\n\t\tif (!this._thumbClip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet barPosition = Math.round(this._trackStart + this._trackLength * this._value);\r\n\t\tif (this._vertical) {\r\n\t\t\tthis._thumbClip.y = barPosition;\r\n\t\t} else {\r\n\t\t\tthis._thumbClip.x = barPosition;\r\n\t\t}\r\n\t\tthis.emit(_EVENT_CHANGE, this.value);\r\n\t}\r\n\r\n\tget value() {\r\n\t\tlet v = this._value * (this._maxValue - this._minValue);\r\n\t\tif (this._valueStep === 0) {\r\n\t\t\treturn v + this._minValue;\r\n\t\t}\r\n\t\tv = Math.round(v / this._valueStep) * this._valueStep;\r\n\t\treturn v + this._minValue;\r\n\t}\r\n\r\n\tset value(val) {\r\n\t\tlet v = (val - this._minValue) / (this._maxValue - this._minValue);\r\n\t\tif (v < 0) v = 0;\r\n\t\tif (v > 1) v = 1;\r\n\t\tif (v === this._value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._value = v;\r\n\t\tthis._updateThumbFromValue();\r\n\t}\r\n\r\n\t/**\r\n\t * Thumb button drag move handler\r\n\t * @param {Number} positionX\r\n\t * @param {Number} positionY\r\n\t * @private\r\n\t */\r\n\t_onThumbDrag(positionX, positionY) {\r\n\t\tif (this._trackLength === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!UIManager.check(this.lockId)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet barPosition = this._vertical ? positionY : positionX;\r\n\t\tlet newValue = (barPosition - this._trackStart) / this._trackLength;\r\n\t\tlet v = newValue * (this._maxValue - this._minValue);\r\n\t\tif (this._valueStep !== 0) {\r\n\t\t\tv = Math.round(v / this._valueStep) * this._valueStep;\r\n\t\t}\r\n\t\t// minValue added only after step normalization\r\n\t\tthis.value = v + this._minValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Zone around scrollbar thumb click handler\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#_onZoneDown\r\n\t */\r\n\t_onZoneDown() {\r\n\t\t// TODO\r\n\t}\r\n}","import UIComponentPrototype from \"./UIComponentPrototype\";\r\n\r\nconst EVENT_ITEM_CHANGE = \"event_change\";\r\n\r\n/**\r\n * @class UIList\r\n * @memberOf PhaserComps.UIComponents\r\n * @classdesc\r\n *\r\n * List component. Item clip instances are supposed to exist as it's children, with keys `item_0`, `item_1` and so on.\r\n *\r\n * When data array applied, every array item is applied to its' view instance\r\n *\r\n * Useful for short lists, and for lists with custom items layout.\r\n *\r\n * @emits PhaserComps.UIComponents.UIList.EVENT_ITEM_CHANGE\r\n * @property {Array<*>} data any data array to apply to list items\r\n *\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside\r\n * @param {String} [key] key to find clip inside parent\r\n * @param {Class} rendererClass class for items, best if extending `UIListBaseItem`\r\n */\r\n\r\n\r\nexport default class UIList extends UIComponentPrototype {\r\n\r\n\t/**\r\n\t * @event PhaserComps.UIComponents.UIList.EVENT_ITEM_CHANGE\r\n\t * @memberOf PhaserComps.UIComponents.UIList\r\n\t * @description\r\n\t * Emitted when any item emits such even.\r\n\t * @param {PhaserComps.UIComponents.UIListBaseItem} item item instance, that emitted change event\r\n\t */\r\n\tstatic get EVENT_ITEM_CHANGE() { return EVENT_ITEM_CHANGE; }\r\n\r\n\tconstructor(parent, key, rendererClass) {\r\n\t\tsuper(parent, key);\r\n\t\tthis._rendererClass = rendererClass;\r\n\t\tthis._items = [];\r\n\t}\r\n\r\n\t/**@return {*[]}*/\r\n\tget data() {\r\n\t\treturn this._data;\r\n\t}\r\n\r\n\t/** @param {*[]} value */\r\n\tset data(value) {\r\n\t\tthis._data = value;\r\n\t\tthis._updateData();\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIList#clean\r\n\t * @desc Destroy all items renderer instances\r\n\t */\r\n\tclean() {\r\n\t\twhile(this._items.length !== 0) {\r\n\t\t\tlet item = this._items.pop();\r\n\t\t\titem.destroy(true);\r\n\t\t}\r\n\t}\r\n\r\n\t_updateData() {\r\n\t\tconst len = this._data.length;\r\n\t\tfor (let index = 0; index < len; index++) {\r\n\t\t\tlet dataItem = this._data[index];\r\n\t\t\tlet item = this._getRenderer(index);\r\n\t\t\titem.data = dataItem;\r\n\t\t}\r\n\t\tthis.doState();\r\n\t}\r\n\r\n\t_getRenderer(index) {\r\n\t\tif (this._items.length - 1 < index) {\r\n\t\t\tlet renderer = new this._rendererClass(this, \"item_\" + index);\r\n\t\t\tthis._items[index] = renderer;\r\n\t\t\trenderer.on(UIList.EVENT_ITEM_CHANGE, this.onItemChange, this);\r\n \t\t}\r\n\t\treturn this._items[index];\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIList#getStateId\r\n\t * @inheritDoc\r\n\t * @returns {String}\r\n\t */\r\n\tgetStateId() {\r\n\t\treturn \"count_\" + (this._data ? this._data.length : \"0\");\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIList#destroy\r\n\t * @protected\r\n\t * @inheritDoc\r\n\t */\r\n\tdestroy(fromScene) {\r\n\t\tthis.clean();\r\n\t\tsuper.destroy(fromScene);\r\n\t}\r\n\r\n\tonItemChange(item) {\r\n\t\tthis.emit(UIList.EVENT_ITEM_CHANGE, item);\r\n\t}\r\n}","import UIButton from \"./UIButton\";\r\nimport UIButtonRadio from \"./UIButtonRadio\";\r\nimport UIComponentPrototype from \"./UIComponentPrototype\";\r\nimport UIButtonSelect from \"./UIButtonSelect\";\r\nimport UIButtonDraggable from \"./UIButtonDraggable\";\r\nimport UIScrollBar from \"./UIScrollBar\";\r\nimport UIScrollPanel from \"./UIScrollPanel\";\r\nimport UIProgressBar from \"./UIProgressBar\";\r\nimport UIContainer from \"./UIContainer\";\r\nimport UIList from \"./UIList\";\r\nimport UIListBaseItem from \"./UIListBaseItem\";\r\n\r\n/**\r\n * @namespace PhaserComps.UIComponents\r\n */\r\n\r\nconst UIComponents = {\r\n\tUIComponentPrototype: UIComponentPrototype,\r\n\tUIButton: UIButton,\r\n\tUIButtonSelect: UIButtonSelect,\r\n\tUIButtonRadio: UIButtonRadio,\r\n\tUIButtonDraggable: UIButtonDraggable,\r\n\tUIScrollBar: UIScrollBar,\r\n\tUIScrollPanel: UIScrollPanel,\r\n\tUIProgressBar: UIProgressBar,\r\n\tUIContainer: UIContainer,\r\n\tUIList: UIList,\r\n\tUIListBaseItem: UIListBaseItem\r\n};\r\n\r\nexport default UIComponents;","import UIButtonSelect from \"./UIButtonSelect\";\r\n\r\nconst _EVENT_SELECT = \"event_select\";\r\n\r\n/**\r\n * @class UIButtonRadio\r\n * @memberOf PhaserComps.UIComponents\r\n * @extends PhaserComps.UIComponents.UIButtonSelect\r\n * @classdesc\r\n * Radio button.\r\n * Several radio buttons can be grouped by appending them to the first button in the group,\r\n * You can do it via passing first button to `appendTo` constructor argument of other instances,шаг\r\n * or use [appendToRadio]{@link PhaserComps.UIComponents.UIButtonRadio#appendToRadio} method.\r\n *\r\n * @property {Boolean} select set or get, if current instance selected\r\n * @property {*} value get or set current instance value\r\n * @property {*} valueSelected If read, returns value of currently selected radio instance in the group.\r\n * If assigned, selects radio which has provided value.\r\n *\r\n * @extends PhaserComps.UIComponents.UIButtonSelect\r\n * @emits PhaserComps.UIComponents.UIButton.EVENT_SELECT\r\n *\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside\r\n * @param {String} [key] key to find clip inside parent\r\n * @param {String} [labelText] text to set for a 'label' key\r\n * @param {*} [value] Any value, applied to current radio button instance.\r\n * Use it to find out, what is the current selected value in the group,\r\n * or select radio by provided value\r\n * @param {UIButtonRadio} [appendTo] If specified, this instance will be appended\r\n * to provided radio group immediately\r\n */\r\n\r\nexport default class UIButtonRadio extends UIButtonSelect {\r\n\r\n\t/**\r\n\t *\r\n\t * @event PhaserComps.UIComponents.UIButtonRadio.EVENT_SELECT\r\n\t * @memberOf PhaserComps.UIComponents.UIButtonRadio\r\n\t * @description\r\n\t * Fired when some radio button of the group is selected\r\n\t */\r\n\tstatic get EVENT_SELECT() { return _EVENT_SELECT; }\r\n\r\n\tconstructor(parent, key, labelText, value, appendTo) {\r\n\t\tsuper(parent, key, labelText);\r\n\t\tthis._sibling = this;\r\n\t\tthis._value = value;\r\n\t\tif (typeof appendTo !== \"undefined\") {\r\n\t\t\tthis.appendToRadio(appendTo);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButtonRadio#appendToRadio\r\n\t * @description\r\n\t * Append this radio instance to provided radio sibling ring\r\n\t * @param {UIButtonRadio} radio radio button to append to sibling ring\r\n\t */\r\n\tappendToRadio(radio) {\r\n\t\tif (this._sibling !== this) {\r\n\t\t\tthis.removeFromSibling();\r\n\t\t}\r\n\t\tthis._sibling = radio._sibling;\r\n\t\tradio._sibling = this;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButtonRadio#removeFromSibling\r\n\t * @description\r\n\t * Remove this radio button from sibling ring\r\n\t */\r\n\tremoveFromSibling() {\r\n\t\t// TODO\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButtonRadio#_onClick\r\n\t * @inheritDoc\r\n\t * @protected\r\n\t */\r\n\t_onClick() {\r\n\t\tthis.select = true;\r\n\t}\r\n\r\n\tget select() { return super.select; }\r\n\tset select(val) {\r\n\t\tif (this._select === val) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsuper.select = val;\r\n\t\tif (val) {\r\n\t\t\tlet radio = this._sibling;\r\n\t\t\twhile (radio !== this) {\r\n\t\t\t\tradio.select = false;\r\n\t\t\t\tradio = radio._sibling;\r\n\t\t\t}\r\n\t\t\tthis._broadcastSelect();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIButtonRadio#_broadcastSelect\r\n\t * @description\r\n\t * Broadcast select event from all siblings\r\n\t * @private\r\n\t * @ignore\r\n\t */\r\n\t_broadcastSelect() {\r\n\t\tthis.emit(_EVENT_SELECT, this.value);\r\n\t\tlet radio = this._sibling;\r\n\t\twhile (radio !== this) {\r\n\t\t\tradio.emit(_EVENT_SELECT, this._value);\r\n\t\t\tradio = radio._sibling;\r\n\t\t}\r\n\t}\r\n\r\n\tget value() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tset value(val) {\r\n\t\tthis._value = val;\r\n\t}\r\n\r\n\tget valueSelected() {\r\n\t\tif (this.select) {\r\n\t\t\treturn this.value;\r\n\t\t}\r\n\t\tlet radio = this._sibling;\r\n\t\twhile (radio !== this) {\r\n\t\t\tif (radio.select) {\r\n\t\t\t\treturn radio.value;\r\n\t\t\t}\r\n\t\t\tradio = radio._sibling;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tset valueSelected(val) {\r\n\t\tif (this.value === val) {\r\n\t\t\tthis.select = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet radio = this._sibling;\r\n\t\twhile (radio !== this) {\r\n\t\t\tif (radio.value === val) {\r\n\t\t\t\tradio.select = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import UIComponentPrototype from \"./UIComponentPrototype\";\r\nimport UIScrollBar from \"./UIScrollBar\";\r\n\r\n/**\r\n * @typedef ScrollBoundsObject\r\n * @description\r\n * Object is generated automatically on container's clip update, by the `dimensions` clip\r\n * @memberOf PhaserComps.UIComponents.UIScrollPanel\r\n * @property {Number} x Start x position of the container. Used, if panel is horizontal\r\n * @property {Number} y Start x position of the container. Used, if panel is vertical\r\n * @property {Number} len Scroll distance of the container. On scroll down/right,\r\n * x or y position will be subtracted by `len` multiplied by scrollbar value\r\n */\r\n\r\n\r\n/**\r\n * @class UIScrollPanel\r\n * @memberOf PhaserComps.UIComponents\r\n * @classdesc\r\n * Scrolling panel with scrollbar applied to it.\r\n * First parameter is container, where this should find the panel, scroll bar and dimensions instances\r\n * UIScrollBar instance created inside with a provided `scrollBarKey` <br><br>\r\n *\r\n * **Warning! This component doesn't extend UIComponent.ComponentPrototype**\r\n *\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} container\r\n * @param {String} panelKey\r\n * @param {String} scrollBarKey\r\n * @param {String} dimensionsKey\r\n * @param {Boolean} [vertical=false]\r\n */\r\n\r\nexport default class UIScrollPanel {\r\n\r\n\tconstructor(container, panelKey, scrollBarKey, dimensionsKey, vertical) {\r\n\t\t/** @type PhaserComps.UIComponents.UIComponentPrototype */\r\n\t\tthis._container = container;\r\n\t\tcontainer.on(UIComponentPrototype.EVENT_STATE, this._onContainerUpdate, this);\r\n\r\n\t\t/** @type String */\r\n\t\tthis._panelKey = panelKey;\r\n\t\t/** @type String */\r\n\t\tthis._dimensionsKey = dimensionsKey;\r\n\r\n\t\t/** @type PhaserComps.UIComponents.UIScrollBar */\r\n\t\tthis._scrollBar = new UIScrollBar(container, scrollBarKey, vertical);\r\n\t\tthis._scrollBar.on(UIScrollBar.EVENT_CHANGE, this._onScrollBar, this);\r\n\r\n\t\t/** @type Boolean */\r\n\t\tthis._vertical = vertical || false;\r\n\t}\r\n\r\n\t/**\r\n\t * update clip instances on container update\r\n\t * @method PhaserComps.UIComponents.UIScrollPanel#_onContainerUpdate\r\n\t * @private\r\n\t */\r\n\t_onContainerUpdate() {\r\n\t\t/** @type PhaserComps.ComponentClip */\r\n\t\tlet clip = this._container._clip;\r\n\t\tif (!clip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t/** @type PhaserComps.ComponentClip */\r\n\t\tthis._panel = clip.getChildClip(this._panelKey);\r\n\t\tlet dims = clip.getChildClip(this._dimensionsKey);\r\n\t\tif (!this._panel || !dims) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type ScrollBoundsObject\r\n\t\t */\r\n\t\tthis._scrollBounds = {\r\n\t\t\tx: dims.x,\r\n\t\t\ty: dims.y,\r\n\t\t\tlen: this._vertical ? this._panel.height - dims.height : this._panel.width - dims.width\r\n\t\t};\r\n\r\n\t\t// update current panel position\r\n\t\tthis._onScrollBar(this._onScrollBar.value);\r\n\t}\r\n\r\n\t/**\r\n\t * Update panel position on scrollbar change\r\n\t * @method PhaserComps.UIComponents.UIScrollPanel#_onScrollBar\r\n\t * @private\r\n\t */\r\n\t_onScrollBar(value) {\r\n\t\tif (!this._panel || !this._scrollBounds) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this._vertical) {\r\n\t\t\tthis._panel.y = this._scrollBounds.y - this._scrollBounds.len * value;\r\n\t\t} else {\r\n\t\t\tthis._panel.x = this._scrollBounds.x - this._scrollBounds.len * value;\r\n\t\t}\r\n\t}\r\n}","import UIComponentPrototype from \"./UIComponentPrototype\";\r\n\r\nconst PROGRESS_STATE_REGEX = /progress_(\\d+)$/;\r\n\r\n/**\r\n * @typedef StepConfig\r\n * @memberOf PhaserComps.UIComponents.UIScrollBar\r\n * @extends Object\r\n *\r\n * @property {Number} stepValue max value of this step\r\n * @property {PhaserComps.ComponentClip.StateConfig} config\r\n */\r\n\r\n/**\r\n * @memberOf PhaserComps.UIComponents\r\n * @class UIProgressBar\r\n * @classdesc\r\n * Progress bar.\r\n *\r\n * Setup states `progress_0` and `progress_100` in Animate,\r\n * and all differences between them will be interpolated to the current progress value.\r\n * Also you can create intermediate states, if you want to control intermediate interpolation behaviour.\r\n\r\n * For example, if you want an indicator to rotate a full circle, you need to create additional\r\n * intermediate states `progress_30` and `progress_70` with 30% and 70$ of rotation,\r\n * to be sure, that indicator will rotate in the needed direction.\r\n *\r\n * Also you can use intermediate states to make interpolation not linear for all progress range.\r\n *\r\n * Available properties for interpolating are\r\n * `x`, `y`, `scaleX`, `scaleY`, `angle`, `alpha`\r\n *\r\n * @property {Number} value current progress value, between 0 and 1\r\n *\r\n * @extends PhaserComps.UIComponents.UIComponentPrototype\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside\r\n * @param {String} [key] key to find clip inside parent\r\n */\r\nexport default class UIProgressBar extends UIComponentPrototype {\r\n\tconstructor(parent, key) {\r\n\t\tsuper(parent, key);\r\n\r\n\t\t/**\r\n\t\t * current progress value\r\n\t\t * @type {Number}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._value = 0;\r\n\t\t/**\r\n\t\t *\r\n\t\t * @type {Array<StepConfig>}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._steps = [];\r\n\t}\r\n\r\n\tget value() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tset value(v) {\r\n\t\tthis._value = v;\r\n\t\tthis._applyValue();\r\n\t}\r\n\r\n\r\n\tonClipAppend(clip) {\r\n\t\tsuper.onClipAppend(clip);\r\n\t\tthis._makeSteps(clip);\r\n\t\tthis._applyValue();\r\n\t}\r\n\r\n\t/**\r\n\t * Apply current value to setup elements positions\r\n\t * @method PhaserComps.UIComponents.UIScrollBar#_applyValue\r\n\t * @private\r\n\t */\r\n\t_applyValue() {\r\n\t\tif (!this._clip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet i, lowConfig, highConfig, interpolation, resultConfig, childId;\r\n\t\tlet stepsCount = this._steps.length;\r\n\t\tfor (i = 0; i < stepsCount - 1; i++) {\r\n\t\t\tlet low = this._steps[i];\r\n\t\t\tlet high = this._steps[i + 1];\r\n\t\t\tif (low.stepValue === this._value) {\r\n\t\t\t\tresultConfig = low.config;\r\n\t\t\t\tbreak;\r\n\t\t\t} else if (high.stepValue === this._value) {\r\n\t\t\t\tresultConfig = high.config;\r\n\t\t\t\tbreak;\r\n\t\t\t} else if (this._value > low.stepValue && this._value < high.stepValue) {\r\n\t\t\t\tlowConfig = low.config;\r\n\t\t\t\thighConfig = high.config;\r\n\t\t\t\tinterpolation = (this._value - low.stepValue) / (high.stepValue - low.stepValue);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\t// make interpolated children configs\r\n\t\tif (!resultConfig) {\r\n\t\t\tresultConfig = {};\r\n\t\t\tfor (childId in lowConfig) {\r\n\t\t\t\tif (!highConfig.hasOwnProperty(childId)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tlet lowChildConfig = lowConfig[childId];\r\n\t\t\t\tlet highChildConfig = highConfig[childId];\r\n\t\t\t\tresultConfig[childId] = {\r\n\t\t\t\t\tx: lowChildConfig.x + (highChildConfig.x - lowChildConfig.x) * interpolation,\r\n\t\t\t\t\ty: lowChildConfig.y + (highChildConfig.y - lowChildConfig.y) * interpolation,\r\n\t\t\t\t\tscaleX: lowChildConfig.scaleX + (highChildConfig.scaleX - lowChildConfig.scaleX) * interpolation,\r\n\t\t\t\t\tscaleY: lowChildConfig.scaleY + (highChildConfig.scaleY - lowChildConfig.scaleY) * interpolation,\r\n\t\t\t\t\tangle: lowChildConfig.angle + (highChildConfig.angle - lowChildConfig.angle) * interpolation,\r\n\t\t\t\t\talpha: lowChildConfig.alpha + (highChildConfig.alpha - lowChildConfig.alpha) * interpolation\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// apply children configs\r\n\t\tfor (childId in resultConfig) {\r\n\t\t\tthis._clip.applyChildParams(childId, resultConfig[childId]);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Retreive all progress states and setup all progress steps, that will be used to control\r\n\t * @param {PhaserComps.ComponentClip} clip\r\n\t * @private\r\n\t */\r\n\t_makeSteps(clip) {\r\n\t\tlet stateIds = clip.getStateIds();\r\n\t\t/**\r\n\t\t * @type {{stepValue: number, config: {}}[]}\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._steps = [];\r\n\t\tfor (let stateId of stateIds) {\r\n\t\t\tif (!PROGRESS_STATE_REGEX.test(stateId)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet stepConfig = {};\r\n\t\t\tlet stepObject = {\r\n\t\t\t\tstepValue: parseInt(PROGRESS_STATE_REGEX.exec(stateId)[1]) / 100,\r\n\t\t\t\tconfig: stepConfig\r\n\t\t\t};\r\n\t\t\tlet stateConfig = clip.getStateConfig(stateId);\r\n\t\t\tfor (let childId in stateConfig) {\r\n\t\t\t\tstepConfig[childId] = UIProgressBar._makeFullConfig(stateConfig[childId]);\r\n\t\t\t}\r\n\t\t\tthis._steps.push(stepObject);\r\n\t\t}\r\n\t\tthis._steps.sort((a, b) => a.stepValue - b.stepValue);\r\n\t}\r\n\r\n\t/**\r\n\t * Obviously create all state properties, even if they have default values\r\n\t *\r\n\t * @param config\r\n\t * @returns {{\r\n\t * \tscaleX: number,\r\n\t * \tscaleY: number,\r\n\t * \talpha: number,\r\n\t * \tx: number,\r\n\t * \ty: number,\r\n\t * \tangle: number\r\n\t * }}\r\n\t * @private\r\n\t */\r\n\tstatic _makeFullConfig(config) {\r\n\t\treturn {\r\n\t\t\tx: config.hasOwnProperty(\"x\") ? config.x : 0,\r\n\t\t\ty: config.hasOwnProperty(\"y\") ? config.y : 0,\r\n\t\t\tscaleX: config.hasOwnProperty(\"scaleX\") ? config.scaleX : 1,\r\n\t\t\tscaleY: config.hasOwnProperty(\"scaleY\") ? config.scaleY : 1,\r\n\t\t\tangle: config.hasOwnProperty(\"angle\") ? config.angle : 0,\r\n\t\t\talpha: config.hasOwnProperty(\"alpha\") ? config.alpha : 1\r\n\t\t}\r\n\t}\r\n}","import UIComponentPrototype from \"./UIComponentPrototype\";\r\n\r\n/**\r\n * @memberOf PhaserComps.UIComponents\r\n * @class UIContainer\r\n * @classdesc\r\n * Base container component. Allows to add dynamically created UIComponents inside other components.\r\n *\r\n * Child components clips must be root components only, not any clip's children.\r\n *\r\n * Note, that UIContainer can be only a child component of another UIComponentPrototype instance.\r\n *\r\n * @extends PhaserComps.UIComponents.UIComponentPrototype\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} parent UIComponentPrototype instance to find clip inside\r\n * @param {String} key key to find clip inside parent\r\n */\r\n\r\nexport default class UIContainer extends UIComponentPrototype {\r\n\r\n\tconstructor(parent, key) {\r\n\t\tsuper(parent, key);\r\n\r\n\t\t/**\r\n\t\t * List of children UIComponentPrototypes added\r\n\t\t * @type {Array<PhaserComps.UIComponents.UIComponentPrototype>}\r\n\t\t * @private\r\n\t\t */\r\n\t\tthis._children = [];\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIContainer#addChild\r\n\t * @description\r\n\t * Adds child to children list, and adds it to Phaser container instance, if one exists\r\n\t *\r\n\t * @param {PhaserComps.UIComponents.UIComponentPrototype} child child component to add\r\n\t * @return {PhaserComps.UIComponents.UIComponentPrototype} child\r\n\t */\r\n\taddChild(child) {\r\n\t\tif (this._children.indexOf(child) !== -1) {\r\n\t\t\treturn child; // TODO move to top?\r\n\t\t}\r\n\t\tthis._children.push(child);\r\n\r\n\t\t// add to container instance, or hide\r\n\t\tif (this._clip) {\r\n\t\t\tchild._clip.visible = true;\r\n\t\t\tthis._addUIComponentToContainerClip(child);\r\n\t\t} else {\r\n\t\t\tchild._clip.visible = false;\r\n\t\t}\r\n\t\treturn child;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIContainer#removeChild\r\n\t * @description\r\n\t * Removes child from children list, and removes it from Phaser container instance, if one exists\r\n\t *\r\n\t * @param {PhaserComps.UIComponents.UIComponentPrototype} child child component to remove\r\n\t * @return {PhaserComps.UIComponents.UIComponentPrototype} returns child param\r\n\t */\r\n\tremoveChild(child) {\r\n\t\tlet index = this._children.indexOf(child);\r\n\t\tif (index === -1) {\r\n\t\t\treturn child;\r\n\t\t}\r\n\t\tthis._children.splice(index, 1);\r\n\r\n\t\tif (this._clip) {\r\n\t\t\tthis._removeUIComponentFromContainerClip(child);\r\n\t\t}\r\n\t\treturn child;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {PhaserComps.UIComponents.UIComponentPrototype} child\r\n\t * @private\r\n\t */\r\n\t_addUIComponentToContainerClip(child) {\r\n\t\tthis._clip.add(child._clip);\r\n\t\tchild._clip.visible = true;\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @param {PhaserComps.UIComponents.UIComponentPrototype} child\r\n\t * @param {Boolean} [destroyChild=false]\r\n\t * @private\r\n\t */\r\n\t_removeUIComponentFromContainerClip(child, destroyChild) {\r\n\t\tthis._clip.remove(child._clip, destroyChild);\r\n\t\tchild._clip.visible = false;\r\n\t}\r\n\r\n\tonClipAppend(clip) {\r\n\t\tsuper.onClipAppend(clip);\r\n\t\tif (clip) {\r\n\t\t\tfor (let child of this._children) {\r\n\t\t\t\tthis._addUIComponentToContainerClip(child);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tonClipRemove(clip) {\r\n\t\tsuper.onClipRemove(clip);\r\n\t\t// hide and remove children from current container\r\n\t\tif (clip) {\r\n\t\t\tfor (let child of this._children) {\r\n\t\t\t\tthis._removeUIComponentFromContainerClip(child);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdestroy() {\r\n\t\t// remove and destroy children\r\n\t\tfor (let child of this._children) {\r\n\t\t\tif (this._clip) { // TODO check if needed\r\n\t\t\t\tthis._removeUIComponentFromContainerClip(child);\r\n\t\t\t}\r\n\t\t\tchild.destroy();\r\n\t\t}\r\n\t\tthis._children.length = 0;\r\n\t\tsuper.destroy();\r\n\t}\r\n}","import UIComponentPrototype from \"./UIComponentPrototype\";\r\nimport UIList from \"./UIList\";\r\n\r\n\r\n/**\r\n * @class UIListBaseItem\r\n * @memberOf PhaserComps.UIComponents\r\n * @classdesc\r\n *\r\n * Base class for UIList component renderer. Extend it to create custom list items renderers.\r\n *\r\n * @emits PhaserComps.UIComponents.UIList.EVENT_ITEM_CHANGE\r\n * @property {*} data any data from UIList data list\r\n *\r\n * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside\r\n * @param {String} [key] key to find clip inside parent\r\n * @param {Class} rendererClass class for items, best if extending `UIListBaseItem`\r\n */\r\n\r\nexport default class UIListBaseItem extends UIComponentPrototype {\r\n\tconstructor(parent, key) {\r\n\t\tsuper(parent, key);\r\n\t\tthis._data = null;\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIListBaseItem#notifyChange\r\n\t * @desc Emits change event to containing UIList instance\r\n\t */\r\n\tnotifyChange() {\r\n\t\tthis.emit(UIList.EVENT_ITEM_CHANGE, this);\r\n\t}\r\n\r\n\t/**\r\n\t * @method PhaserComps.UIComponents.UIListBaseItem#_commitData\r\n\t * @protected\r\n\t * @desc apply data from setter, override it\r\n\t */\r\n\t_commitData() {\r\n\t\t// override\r\n\t}\r\n\r\n\tget data() {\r\n\t\treturn this._data;\r\n\t}\r\n\r\n\tset data(value) {\r\n\t\tthis._data = value;\r\n\t\tthis._commitData();\r\n\t}\r\n}","import Phaser from \"phaser\";\r\nimport ComponentClip from \"../clip/ComponentClip\";\r\n\r\n/**\r\n * @class Plugin\r\n * @memberOf PhaserComps\r\n * @classdesc\r\n * Phaser 3 plugin, adds `ui_component` method to scene GameObjectFactory and GameObjectCreator,\r\n * that creates a {@link PhaserComps.ComponentClip} instance\r\n *\r\n * *Note. Factory method (`scene.make.ui_component()`) also adds clip instance to scene*\r\n *\r\n * Implementation example:\r\n * ```javascript\r\n * import \"phaser-ui-comps\"\r\n *\r\n * var config = {\r\n *     type: Phaser.AUTO,\r\n *     parent: \"example\",\r\n *     width: 800,\r\n *     height: 600,\r\n *     scene: {\r\n *  \t   create: create\r\n *     },\r\n *     plugins: {\r\n *  \t   global: [\r\n *  \t\t   PhaserComps.Plugin.DefaultCfg\r\n *  \t   ]\r\n *     }\r\n * var game = new Phaser.Game(config);\r\n *\r\n * create() {\r\n *     let configObject = {}; // here must be real jsfl-generated config object\r\n *     let texture_name = \"your_texture_name\";\r\n *     this.add.ui_component(configObject, [texture_name]);\r\n * }\r\n * ```\r\n * @see PhaserComps.ComponentClip\r\n *\r\n */\r\nexport default class Plugin extends Phaser.Plugins.BasePlugin {\r\n    constructor(mgr) {\r\n        super(mgr);\r\n        mgr.registerGameObject(\"ui_component\", this.addComponent, this.makeComponent);\r\n    }\r\n\r\n    addComponent(config, textures) {\r\n        let clip = new ComponentClip(this.scene, config, textures);\r\n        this.scene.add.existing(clip);\r\n        return clip;\r\n    }\r\n\r\n    makeComponent(config, textures) {\r\n        return new ComponentClip(this.scene, config, textures);\r\n    }\r\n}\r\n\r\nconst DefaultCfg = {\r\n    key: \"UIComponents\",\r\n    plugin: Plugin,\r\n    start: true\r\n};\r\n\r\n/**\r\n * Default plugin config\r\n *\r\n * @const PhaserComps.Plugin.DefaultCfg\r\n * @memberOf PhaserComps.Plugin\r\n * @type PluginObjectItem\r\n */\r\nPlugin.DefaultCfg = DefaultCfg;"],"sourceRoot":""}
\ No newline at end of file
diff --git a/jsfl/ExportToPhaser.jsfl b/jsfl/ExportToPhaser.jsfl
index 87bbe9f..feff303 100644
--- a/jsfl/ExportToPhaser.jsfl
+++ b/jsfl/ExportToPhaser.jsfl
@@ -98,6 +98,7 @@ var ZONE_ELEMENT_NAMES = [
 	'HIT_ZONE',
 	'DIMENSIONS'
 ];
+var ZONE_ELEMENT_PREFIX = 'DIMENSIONS_';
 var STATE_IDS_LAYER_NAME = 'STATE_IDS';
 
 
@@ -249,7 +250,7 @@ PhaserExporter.prototype.collectExtendedElementParams = function(element, target
 				if (element.name) {
 					target.key = element.name;
 				}
-				if (ZONE_ELEMENT_NAMES.indexOf(element.name) !== -1) {
+				if (ZONE_ELEMENT_NAMES.indexOf(element.name) !== -1 || element.name.indexOf(ZONE_ELEMENT_PREFIX) === 0) {
 					this.collectHitZoneParams(element, target, forState);
 				} else {
 					var childExporter = new PhaserExporter(libItem, target);
@@ -373,7 +374,7 @@ PhaserExporter.prototype.collectCommonElementParams = function(element, target)
 	}
 	if (roundToFract4(element.y) !== 0) {
 		target.y = target.y || 0;
-		target.y = roundToFract4(element.y);
+		target.y += roundToFract4(element.y);
 	}
 	if (roundToFract4(element.scaleX) !== 1) target.scaleX = roundToFract4(element.scaleX);
 	if (roundToFract4(element.scaleY) !== 1) target.scaleY = roundToFract4(element.scaleY);
@@ -420,15 +421,24 @@ PhaserExporter.prototype.collectBitmapParams = function(element, target, forStat
 PhaserExporter.prototype.collectTextElementParams = function(element, target, forState) {
 	var attrs = element.textRuns[0].textAttrs;
 	var style = {};
+
+	target.y = target.y || 0;
+	// magical flash textfield offset
+	target.y += 2;
+
 	if (attrs.alignment === 'center') {
 		style.align = 'center';
 		target.x = target.x || 0;
 		target.x += element.width / 2;
 	} else if (attrs.alignment === 'right') {
 		style.align = 'right';
-		target.y = target.y || 0;
+		target.x = target.x || 0;
 		target.x += element.width;
-	} // TODO what about justify?
+	} else {
+		target.x = target.x || 0;
+		// magical flash textfield offset
+		target.x += 2;
+	}
 
 	if (forState)
 		return;
@@ -465,8 +475,12 @@ PhaserExporter.prototype.collectTextElementParams = function(element, target, fo
 	if (element.filters) {
 		for (var filterIndex in element.filters) {
 			var filter = element.filters[filterIndex];
-			if (filter.name === 'dropShadowFilter')
+			if (filter.name === 'dropShadowFilter') {
 				style.shadow = this.generateShadowObject(filter);
+			} else if (filter.name === 'glowFilter' && filter.enabled === true) {
+				style.stroke = filter.color;
+				style.strokeThickness = filter.blurX;
+			}
 		}
 	}
 };
diff --git a/package-lock.json b/package-lock.json
index b38df04..493dc4f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,182 +1,214 @@
 {
-  "name": "phaser-ui-jsfl",
-  "version": "1.0.0",
+  "name": "phaser-ui-comps",
+  "version": "1.0.14",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
+    "@types/color-name": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+      "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+      "dev": true
+    },
+    "@types/glob": {
+      "version": "7.1.3",
+      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
+      "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==",
+      "dev": true,
+      "requires": {
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/json-schema": {
+      "version": "7.0.5",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz",
+      "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ=="
+    },
+    "@types/minimatch": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "14.0.26",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.26.tgz",
+      "integrity": "sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA==",
+      "dev": true
+    },
     "@webassemblyjs/ast": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
-      "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+      "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/helper-module-context": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/wast-parser": "1.8.5"
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0"
       }
     },
     "@webassemblyjs/floating-point-hex-parser": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
-      "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
+      "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
       "dev": true
     },
     "@webassemblyjs/helper-api-error": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
-      "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
+      "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
       "dev": true
     },
     "@webassemblyjs/helper-buffer": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
-      "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
+      "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
       "dev": true
     },
     "@webassemblyjs/helper-code-frame": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
-      "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
+      "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/wast-printer": "1.8.5"
+        "@webassemblyjs/wast-printer": "1.9.0"
       }
     },
     "@webassemblyjs/helper-fsm": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
-      "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
+      "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
       "dev": true
     },
     "@webassemblyjs/helper-module-context": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
-      "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
+      "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "mamacro": "0.0.3"
+        "@webassemblyjs/ast": "1.9.0"
       }
     },
     "@webassemblyjs/helper-wasm-bytecode": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
-      "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
+      "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
       "dev": true
     },
     "@webassemblyjs/helper-wasm-section": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
-      "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
+      "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-buffer": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/wasm-gen": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0"
       }
     },
     "@webassemblyjs/ieee754": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
-      "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
+      "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
       "dev": true,
       "requires": {
-        "@xtuc/ieee754": "1.2.0"
+        "@xtuc/ieee754": "^1.2.0"
       }
     },
     "@webassemblyjs/leb128": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
-      "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
+      "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
       "dev": true,
       "requires": {
         "@xtuc/long": "4.2.2"
       }
     },
     "@webassemblyjs/utf8": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
-      "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
+      "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
       "dev": true
     },
     "@webassemblyjs/wasm-edit": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
-      "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
+      "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-buffer": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/helper-wasm-section": "1.8.5",
-        "@webassemblyjs/wasm-gen": "1.8.5",
-        "@webassemblyjs/wasm-opt": "1.8.5",
-        "@webassemblyjs/wasm-parser": "1.8.5",
-        "@webassemblyjs/wast-printer": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/helper-wasm-section": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-opt": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "@webassemblyjs/wast-printer": "1.9.0"
       }
     },
     "@webassemblyjs/wasm-gen": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
-      "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
+      "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/ieee754": "1.8.5",
-        "@webassemblyjs/leb128": "1.8.5",
-        "@webassemblyjs/utf8": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
       }
     },
     "@webassemblyjs/wasm-opt": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
-      "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
+      "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-buffer": "1.8.5",
-        "@webassemblyjs/wasm-gen": "1.8.5",
-        "@webassemblyjs/wasm-parser": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0"
       }
     },
     "@webassemblyjs/wasm-parser": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
-      "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
+      "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-api-error": "1.8.5",
-        "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
-        "@webassemblyjs/ieee754": "1.8.5",
-        "@webassemblyjs/leb128": "1.8.5",
-        "@webassemblyjs/utf8": "1.8.5"
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
       }
     },
     "@webassemblyjs/wast-parser": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
-      "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
+      "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/floating-point-hex-parser": "1.8.5",
-        "@webassemblyjs/helper-api-error": "1.8.5",
-        "@webassemblyjs/helper-code-frame": "1.8.5",
-        "@webassemblyjs/helper-fsm": "1.8.5",
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-code-frame": "1.9.0",
+        "@webassemblyjs/helper-fsm": "1.9.0",
         "@xtuc/long": "4.2.2"
       }
     },
     "@webassemblyjs/wast-printer": {
-      "version": "1.8.5",
-      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
-      "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
+      "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
       "dev": true,
       "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/wast-parser": "1.8.5",
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0",
         "@xtuc/long": "4.2.2"
       }
     },
@@ -193,37 +225,31 @@
       "dev": true
     },
     "accepts": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
-      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
       "dev": true,
       "requires": {
-        "mime-types": "2.1.22",
-        "negotiator": "0.6.1"
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
       }
     },
     "acorn": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz",
-      "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==",
-      "dev": true
-    },
-    "acorn-dynamic-import": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz",
-      "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==",
+      "version": "6.4.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
+      "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
       "dev": true
     },
     "ajv": {
-      "version": "6.10.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
-      "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
+      "version": "6.10.2",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+      "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
       "dev": true,
       "requires": {
-        "fast-deep-equal": "2.0.1",
-        "fast-json-stable-stringify": "2.0.0",
-        "json-schema-traverse": "0.4.1",
-        "uri-js": "4.2.2"
+        "fast-deep-equal": "^2.0.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
       }
     },
     "ajv-errors": {
@@ -233,10 +259,9 @@
       "dev": true
     },
     "ajv-keywords": {
-      "version": "3.4.0",
-      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz",
-      "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==",
-      "dev": true
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+      "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ=="
     },
     "ansi-colors": {
       "version": "3.2.4",
@@ -251,39 +276,30 @@
       "dev": true
     },
     "ansi-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-      "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+      "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
       "dev": true
     },
     "ansi-styles": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+      "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
       "dev": true,
       "requires": {
-        "color-convert": "1.9.3"
+        "@types/color-name": "^1.1.1",
+        "color-convert": "^2.0.1"
       }
     },
     "anymatch": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+      "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
       "dev": true,
+      "optional": true,
       "requires": {
-        "micromatch": "3.1.10",
-        "normalize-path": "2.1.1"
-      },
-      "dependencies": {
-        "normalize-path": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-          "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-          "dev": true,
-          "requires": {
-            "remove-trailing-separator": "1.1.0"
-          }
-        }
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
       }
     },
     "aproba": {
@@ -322,7 +338,7 @@
       "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
       "dev": true,
       "requires": {
-        "array-uniq": "1.0.3"
+        "array-uniq": "^1.0.1"
       }
     },
     "array-uniq": {
@@ -343,17 +359,26 @@
       "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.1"
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "assert": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
-      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
       "dev": true,
       "requires": {
+        "object-assign": "^4.1.1",
         "util": "0.10.3"
       },
       "dependencies": {
@@ -381,15 +406,21 @@
       "dev": true
     },
     "async": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
-      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+      "version": "0.9.2",
+      "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+      "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
       "dev": true
     },
     "async-each": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.2.tgz",
-      "integrity": "sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+      "dev": true
+    },
+    "async-limiter": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
       "dev": true
     },
     "atob": {
@@ -404,9 +435,9 @@
       "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
       "dev": true,
       "requires": {
-        "chalk": "1.1.3",
-        "esutils": "2.0.2",
-        "js-tokens": "3.0.2"
+        "chalk": "^1.1.3",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.2"
       },
       "dependencies": {
         "ansi-regex": {
@@ -427,11 +458,11 @@
           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
           "dev": true,
           "requires": {
-            "ansi-styles": "2.2.1",
-            "escape-string-regexp": "1.0.5",
-            "has-ansi": "2.0.0",
-            "strip-ansi": "3.0.1",
-            "supports-color": "2.0.0"
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
           }
         },
         "strip-ansi": {
@@ -440,7 +471,7 @@
           "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
           "dev": true,
           "requires": {
-            "ansi-regex": "2.1.1"
+            "ansi-regex": "^2.0.0"
           }
         },
         "supports-color": {
@@ -457,25 +488,25 @@
       "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
       "dev": true,
       "requires": {
-        "babel-code-frame": "6.26.0",
-        "babel-generator": "6.26.1",
-        "babel-helpers": "6.24.1",
-        "babel-messages": "6.23.0",
-        "babel-register": "6.26.0",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0",
-        "babylon": "6.18.0",
-        "convert-source-map": "1.6.0",
-        "debug": "2.6.9",
-        "json5": "0.5.1",
-        "lodash": "4.17.11",
-        "minimatch": "3.0.4",
-        "path-is-absolute": "1.0.1",
-        "private": "0.1.8",
-        "slash": "1.0.0",
-        "source-map": "0.5.7"
+        "babel-code-frame": "^6.26.0",
+        "babel-generator": "^6.26.0",
+        "babel-helpers": "^6.24.1",
+        "babel-messages": "^6.23.0",
+        "babel-register": "^6.26.0",
+        "babel-runtime": "^6.26.0",
+        "babel-template": "^6.26.0",
+        "babel-traverse": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "babylon": "^6.18.0",
+        "convert-source-map": "^1.5.1",
+        "debug": "^2.6.9",
+        "json5": "^0.5.1",
+        "lodash": "^4.17.4",
+        "minimatch": "^3.0.4",
+        "path-is-absolute": "^1.0.1",
+        "private": "^0.1.8",
+        "slash": "^1.0.0",
+        "source-map": "^0.5.7"
       },
       "dependencies": {
         "json5": {
@@ -498,14 +529,14 @@
       "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
       "dev": true,
       "requires": {
-        "babel-messages": "6.23.0",
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0",
-        "detect-indent": "4.0.0",
-        "jsesc": "1.3.0",
-        "lodash": "4.17.11",
-        "source-map": "0.5.7",
-        "trim-right": "1.0.1"
+        "babel-messages": "^6.23.0",
+        "babel-runtime": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "detect-indent": "^4.0.0",
+        "jsesc": "^1.3.0",
+        "lodash": "^4.17.4",
+        "source-map": "^0.5.7",
+        "trim-right": "^1.0.1"
       },
       "dependencies": {
         "source-map": {
@@ -522,9 +553,9 @@
       "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
       "dev": true,
       "requires": {
-        "babel-helper-explode-assignable-expression": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-helper-explode-assignable-expression": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-helper-call-delegate": {
@@ -533,10 +564,10 @@
       "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
       "dev": true,
       "requires": {
-        "babel-helper-hoist-variables": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-helper-hoist-variables": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-traverse": "^6.24.1",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-helper-define-map": {
@@ -545,10 +576,10 @@
       "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
       "dev": true,
       "requires": {
-        "babel-helper-function-name": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0",
-        "lodash": "4.17.11"
+        "babel-helper-function-name": "^6.24.1",
+        "babel-runtime": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "lodash": "^4.17.4"
       }
     },
     "babel-helper-explode-assignable-expression": {
@@ -557,9 +588,9 @@
       "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-runtime": "^6.22.0",
+        "babel-traverse": "^6.24.1",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-helper-function-name": {
@@ -568,11 +599,11 @@
       "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
       "dev": true,
       "requires": {
-        "babel-helper-get-function-arity": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-helper-get-function-arity": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1",
+        "babel-traverse": "^6.24.1",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-helper-get-function-arity": {
@@ -581,8 +612,8 @@
       "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-helper-hoist-variables": {
@@ -591,8 +622,8 @@
       "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-helper-optimise-call-expression": {
@@ -601,8 +632,8 @@
       "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-helper-regex": {
@@ -611,9 +642,9 @@
       "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0",
-        "lodash": "4.17.11"
+        "babel-runtime": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "lodash": "^4.17.4"
       }
     },
     "babel-helper-remap-async-to-generator": {
@@ -622,11 +653,11 @@
       "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
       "dev": true,
       "requires": {
-        "babel-helper-function-name": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-helper-function-name": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1",
+        "babel-traverse": "^6.24.1",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-helper-replace-supers": {
@@ -635,12 +666,12 @@
       "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
       "dev": true,
       "requires": {
-        "babel-helper-optimise-call-expression": "6.24.1",
-        "babel-messages": "6.23.0",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-helper-optimise-call-expression": "^6.24.1",
+        "babel-messages": "^6.23.0",
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1",
+        "babel-traverse": "^6.24.1",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-helpers": {
@@ -649,8 +680,8 @@
       "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0"
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1"
       }
     },
     "babel-loader": {
@@ -659,9 +690,9 @@
       "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==",
       "dev": true,
       "requires": {
-        "find-cache-dir": "1.0.0",
-        "loader-utils": "1.2.3",
-        "mkdirp": "0.5.1"
+        "find-cache-dir": "^1.0.0",
+        "loader-utils": "^1.0.2",
+        "mkdirp": "^0.5.1"
       },
       "dependencies": {
         "find-cache-dir": {
@@ -670,9 +701,9 @@
           "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
           "dev": true,
           "requires": {
-            "commondir": "1.0.1",
-            "make-dir": "1.3.0",
-            "pkg-dir": "2.0.0"
+            "commondir": "^1.0.1",
+            "make-dir": "^1.0.0",
+            "pkg-dir": "^2.0.0"
           }
         },
         "find-up": {
@@ -681,7 +712,7 @@
           "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
           "dev": true,
           "requires": {
-            "locate-path": "2.0.0"
+            "locate-path": "^2.0.0"
           }
         },
         "locate-path": {
@@ -690,8 +721,8 @@
           "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
           "dev": true,
           "requires": {
-            "p-locate": "2.0.0",
-            "path-exists": "3.0.0"
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
           }
         },
         "make-dir": {
@@ -700,7 +731,7 @@
           "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
           "dev": true,
           "requires": {
-            "pify": "3.0.0"
+            "pify": "^3.0.0"
           }
         },
         "p-limit": {
@@ -709,7 +740,7 @@
           "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
           "dev": true,
           "requires": {
-            "p-try": "1.0.0"
+            "p-try": "^1.0.0"
           }
         },
         "p-locate": {
@@ -718,7 +749,7 @@
           "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
           "dev": true,
           "requires": {
-            "p-limit": "1.3.0"
+            "p-limit": "^1.1.0"
           }
         },
         "p-try": {
@@ -739,7 +770,7 @@
           "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
           "dev": true,
           "requires": {
-            "find-up": "2.1.0"
+            "find-up": "^2.1.0"
           }
         }
       }
@@ -750,7 +781,7 @@
       "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-check-es2015-constants": {
@@ -759,7 +790,7 @@
       "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-syntax-async-functions": {
@@ -792,9 +823,9 @@
       "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
       "dev": true,
       "requires": {
-        "babel-helper-remap-async-to-generator": "6.24.1",
-        "babel-plugin-syntax-async-functions": "6.13.0",
-        "babel-runtime": "6.26.0"
+        "babel-helper-remap-async-to-generator": "^6.24.1",
+        "babel-plugin-syntax-async-functions": "^6.8.0",
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-arrow-functions": {
@@ -803,7 +834,7 @@
       "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-block-scoped-functions": {
@@ -812,7 +843,7 @@
       "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-block-scoping": {
@@ -821,11 +852,11 @@
       "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0",
-        "lodash": "4.17.11"
+        "babel-runtime": "^6.26.0",
+        "babel-template": "^6.26.0",
+        "babel-traverse": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "lodash": "^4.17.4"
       }
     },
     "babel-plugin-transform-es2015-classes": {
@@ -834,15 +865,15 @@
       "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
       "dev": true,
       "requires": {
-        "babel-helper-define-map": "6.26.0",
-        "babel-helper-function-name": "6.24.1",
-        "babel-helper-optimise-call-expression": "6.24.1",
-        "babel-helper-replace-supers": "6.24.1",
-        "babel-messages": "6.23.0",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-helper-define-map": "^6.24.1",
+        "babel-helper-function-name": "^6.24.1",
+        "babel-helper-optimise-call-expression": "^6.24.1",
+        "babel-helper-replace-supers": "^6.24.1",
+        "babel-messages": "^6.23.0",
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1",
+        "babel-traverse": "^6.24.1",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-computed-properties": {
@@ -851,8 +882,8 @@
       "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0"
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-destructuring": {
@@ -861,7 +892,7 @@
       "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-duplicate-keys": {
@@ -870,8 +901,8 @@
       "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-for-of": {
@@ -880,7 +911,7 @@
       "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-function-name": {
@@ -889,9 +920,9 @@
       "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
       "dev": true,
       "requires": {
-        "babel-helper-function-name": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-helper-function-name": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-literals": {
@@ -900,7 +931,7 @@
       "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-modules-amd": {
@@ -909,9 +940,9 @@
       "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
       "dev": true,
       "requires": {
-        "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0"
+        "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-modules-commonjs": {
@@ -920,10 +951,10 @@
       "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
       "dev": true,
       "requires": {
-        "babel-plugin-transform-strict-mode": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-plugin-transform-strict-mode": "^6.24.1",
+        "babel-runtime": "^6.26.0",
+        "babel-template": "^6.26.0",
+        "babel-types": "^6.26.0"
       }
     },
     "babel-plugin-transform-es2015-modules-systemjs": {
@@ -932,9 +963,9 @@
       "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
       "dev": true,
       "requires": {
-        "babel-helper-hoist-variables": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0"
+        "babel-helper-hoist-variables": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-modules-umd": {
@@ -943,9 +974,9 @@
       "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
       "dev": true,
       "requires": {
-        "babel-plugin-transform-es2015-modules-amd": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0"
+        "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-object-super": {
@@ -954,8 +985,8 @@
       "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
       "dev": true,
       "requires": {
-        "babel-helper-replace-supers": "6.24.1",
-        "babel-runtime": "6.26.0"
+        "babel-helper-replace-supers": "^6.24.1",
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-parameters": {
@@ -964,12 +995,12 @@
       "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
       "dev": true,
       "requires": {
-        "babel-helper-call-delegate": "6.24.1",
-        "babel-helper-get-function-arity": "6.24.1",
-        "babel-runtime": "6.26.0",
-        "babel-template": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-helper-call-delegate": "^6.24.1",
+        "babel-helper-get-function-arity": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-template": "^6.24.1",
+        "babel-traverse": "^6.24.1",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-shorthand-properties": {
@@ -978,8 +1009,8 @@
       "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-spread": {
@@ -988,7 +1019,7 @@
       "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-sticky-regex": {
@@ -997,9 +1028,9 @@
       "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
       "dev": true,
       "requires": {
-        "babel-helper-regex": "6.26.0",
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-helper-regex": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-plugin-transform-es2015-template-literals": {
@@ -1008,7 +1039,7 @@
       "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-typeof-symbol": {
@@ -1017,7 +1048,7 @@
       "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0"
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-es2015-unicode-regex": {
@@ -1026,9 +1057,9 @@
       "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
       "dev": true,
       "requires": {
-        "babel-helper-regex": "6.26.0",
-        "babel-runtime": "6.26.0",
-        "regexpu-core": "2.0.0"
+        "babel-helper-regex": "^6.24.1",
+        "babel-runtime": "^6.22.0",
+        "regexpu-core": "^2.0.0"
       }
     },
     "babel-plugin-transform-exponentiation-operator": {
@@ -1037,9 +1068,9 @@
       "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
       "dev": true,
       "requires": {
-        "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1",
-        "babel-plugin-syntax-exponentiation-operator": "6.13.0",
-        "babel-runtime": "6.26.0"
+        "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
+        "babel-plugin-syntax-exponentiation-operator": "^6.8.0",
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-flow-strip-types": {
@@ -1048,8 +1079,8 @@
       "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=",
       "dev": true,
       "requires": {
-        "babel-plugin-syntax-flow": "6.18.0",
-        "babel-runtime": "6.26.0"
+        "babel-plugin-syntax-flow": "^6.18.0",
+        "babel-runtime": "^6.22.0"
       }
     },
     "babel-plugin-transform-regenerator": {
@@ -1058,7 +1089,7 @@
       "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
       "dev": true,
       "requires": {
-        "regenerator-transform": "0.10.1"
+        "regenerator-transform": "^0.10.0"
       }
     },
     "babel-plugin-transform-strict-mode": {
@@ -1067,8 +1098,8 @@
       "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0"
+        "babel-runtime": "^6.22.0",
+        "babel-types": "^6.24.1"
       }
     },
     "babel-polyfill": {
@@ -1077,9 +1108,9 @@
       "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "core-js": "2.6.5",
-        "regenerator-runtime": "0.10.5"
+        "babel-runtime": "^6.26.0",
+        "core-js": "^2.5.0",
+        "regenerator-runtime": "^0.10.5"
       },
       "dependencies": {
         "regenerator-runtime": {
@@ -1096,36 +1127,36 @@
       "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==",
       "dev": true,
       "requires": {
-        "babel-plugin-check-es2015-constants": "6.22.0",
-        "babel-plugin-syntax-trailing-function-commas": "6.22.0",
-        "babel-plugin-transform-async-to-generator": "6.24.1",
-        "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
-        "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
-        "babel-plugin-transform-es2015-block-scoping": "6.26.0",
-        "babel-plugin-transform-es2015-classes": "6.24.1",
-        "babel-plugin-transform-es2015-computed-properties": "6.24.1",
-        "babel-plugin-transform-es2015-destructuring": "6.23.0",
-        "babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
-        "babel-plugin-transform-es2015-for-of": "6.23.0",
-        "babel-plugin-transform-es2015-function-name": "6.24.1",
-        "babel-plugin-transform-es2015-literals": "6.22.0",
-        "babel-plugin-transform-es2015-modules-amd": "6.24.1",
-        "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
-        "babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
-        "babel-plugin-transform-es2015-modules-umd": "6.24.1",
-        "babel-plugin-transform-es2015-object-super": "6.24.1",
-        "babel-plugin-transform-es2015-parameters": "6.24.1",
-        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
-        "babel-plugin-transform-es2015-spread": "6.22.0",
-        "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
-        "babel-plugin-transform-es2015-template-literals": "6.22.0",
-        "babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
-        "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
-        "babel-plugin-transform-exponentiation-operator": "6.24.1",
-        "babel-plugin-transform-regenerator": "6.26.0",
-        "browserslist": "3.2.8",
-        "invariant": "2.2.4",
-        "semver": "5.7.0"
+        "babel-plugin-check-es2015-constants": "^6.22.0",
+        "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
+        "babel-plugin-transform-async-to-generator": "^6.22.0",
+        "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
+        "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
+        "babel-plugin-transform-es2015-block-scoping": "^6.23.0",
+        "babel-plugin-transform-es2015-classes": "^6.23.0",
+        "babel-plugin-transform-es2015-computed-properties": "^6.22.0",
+        "babel-plugin-transform-es2015-destructuring": "^6.23.0",
+        "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0",
+        "babel-plugin-transform-es2015-for-of": "^6.23.0",
+        "babel-plugin-transform-es2015-function-name": "^6.22.0",
+        "babel-plugin-transform-es2015-literals": "^6.22.0",
+        "babel-plugin-transform-es2015-modules-amd": "^6.22.0",
+        "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0",
+        "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0",
+        "babel-plugin-transform-es2015-modules-umd": "^6.23.0",
+        "babel-plugin-transform-es2015-object-super": "^6.22.0",
+        "babel-plugin-transform-es2015-parameters": "^6.23.0",
+        "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0",
+        "babel-plugin-transform-es2015-spread": "^6.22.0",
+        "babel-plugin-transform-es2015-sticky-regex": "^6.22.0",
+        "babel-plugin-transform-es2015-template-literals": "^6.22.0",
+        "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0",
+        "babel-plugin-transform-es2015-unicode-regex": "^6.22.0",
+        "babel-plugin-transform-exponentiation-operator": "^6.22.0",
+        "babel-plugin-transform-regenerator": "^6.22.0",
+        "browserslist": "^3.2.6",
+        "invariant": "^2.2.2",
+        "semver": "^5.3.0"
       }
     },
     "babel-register": {
@@ -1134,13 +1165,13 @@
       "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
       "dev": true,
       "requires": {
-        "babel-core": "6.26.3",
-        "babel-runtime": "6.26.0",
-        "core-js": "2.6.5",
-        "home-or-tmp": "2.0.0",
-        "lodash": "4.17.11",
-        "mkdirp": "0.5.1",
-        "source-map-support": "0.4.18"
+        "babel-core": "^6.26.0",
+        "babel-runtime": "^6.26.0",
+        "core-js": "^2.5.0",
+        "home-or-tmp": "^2.0.0",
+        "lodash": "^4.17.4",
+        "mkdirp": "^0.5.1",
+        "source-map-support": "^0.4.15"
       },
       "dependencies": {
         "source-map": {
@@ -1155,7 +1186,7 @@
           "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
           "dev": true,
           "requires": {
-            "source-map": "0.5.7"
+            "source-map": "^0.5.6"
           }
         }
       }
@@ -1166,8 +1197,8 @@
       "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
       "dev": true,
       "requires": {
-        "core-js": "2.6.5",
-        "regenerator-runtime": "0.11.1"
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
       }
     },
     "babel-template": {
@@ -1176,11 +1207,11 @@
       "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-traverse": "6.26.0",
-        "babel-types": "6.26.0",
-        "babylon": "6.18.0",
-        "lodash": "4.17.11"
+        "babel-runtime": "^6.26.0",
+        "babel-traverse": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "babylon": "^6.18.0",
+        "lodash": "^4.17.4"
       }
     },
     "babel-traverse": {
@@ -1189,15 +1220,15 @@
       "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
       "dev": true,
       "requires": {
-        "babel-code-frame": "6.26.0",
-        "babel-messages": "6.23.0",
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0",
-        "babylon": "6.18.0",
-        "debug": "2.6.9",
-        "globals": "9.18.0",
-        "invariant": "2.2.4",
-        "lodash": "4.17.11"
+        "babel-code-frame": "^6.26.0",
+        "babel-messages": "^6.23.0",
+        "babel-runtime": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "babylon": "^6.18.0",
+        "debug": "^2.6.8",
+        "globals": "^9.18.0",
+        "invariant": "^2.2.2",
+        "lodash": "^4.17.4"
       }
     },
     "babel-types": {
@@ -1206,10 +1237,10 @@
       "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "esutils": "2.0.2",
-        "lodash": "4.17.11",
-        "to-fast-properties": "1.0.3"
+        "babel-runtime": "^6.26.0",
+        "esutils": "^2.0.2",
+        "lodash": "^4.17.4",
+        "to-fast-properties": "^1.0.3"
       }
     },
     "babylon": {
@@ -1230,13 +1261,13 @@
       "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
       "dev": true,
       "requires": {
-        "cache-base": "1.0.1",
-        "class-utils": "0.3.6",
-        "component-emitter": "1.2.1",
-        "define-property": "1.0.0",
-        "isobject": "3.0.1",
-        "mixin-deep": "1.3.1",
-        "pascalcase": "0.1.1"
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
       },
       "dependencies": {
         "define-property": {
@@ -1245,7 +1276,7 @@
           "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "1.0.2"
+            "is-descriptor": "^1.0.0"
           }
         },
         "is-accessor-descriptor": {
@@ -1254,7 +1285,7 @@
           "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-data-descriptor": {
@@ -1263,7 +1294,7 @@
           "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-descriptor": {
@@ -1272,17 +1303,17 @@
           "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
           "dev": true,
           "requires": {
-            "is-accessor-descriptor": "1.0.0",
-            "is-data-descriptor": "1.0.0",
-            "kind-of": "6.0.2"
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         }
       }
     },
     "base64-js": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
-      "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+      "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
       "dev": true
     },
     "batch": {
@@ -1297,39 +1328,48 @@
       "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
     },
     "binary-extensions": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-      "dev": true
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
+      "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
+      "dev": true,
+      "optional": true
     },
     "bluebird": {
-      "version": "3.5.3",
-      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
-      "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==",
+      "version": "3.7.2",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+      "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
       "dev": true
     },
     "bn.js": {
-      "version": "4.11.8",
-      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
-      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
+      "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==",
       "dev": true
     },
     "body-parser": {
-      "version": "1.18.3",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
-      "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
       "dev": true,
       "requires": {
-        "bytes": "3.0.0",
-        "content-type": "1.0.4",
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
         "debug": "2.6.9",
-        "depd": "1.1.2",
-        "http-errors": "1.6.3",
-        "iconv-lite": "0.4.23",
-        "on-finished": "2.3.0",
-        "qs": "6.5.2",
-        "raw-body": "2.3.3",
-        "type-is": "1.6.16"
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+          "dev": true
+        }
       }
     },
     "bonjour": {
@@ -1338,12 +1378,12 @@
       "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
       "dev": true,
       "requires": {
-        "array-flatten": "2.1.2",
-        "deep-equal": "1.0.1",
-        "dns-equal": "1.0.0",
-        "dns-txt": "2.0.2",
-        "multicast-dns": "6.2.3",
-        "multicast-dns-service-types": "1.1.0"
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
       }
     },
     "brace-expansion": {
@@ -1352,7 +1392,7 @@
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
       "dev": true,
       "requires": {
-        "balanced-match": "1.0.0",
+        "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
       }
     },
@@ -1362,16 +1402,16 @@
       "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
       "dev": true,
       "requires": {
-        "arr-flatten": "1.1.0",
-        "array-unique": "0.3.2",
-        "extend-shallow": "2.0.1",
-        "fill-range": "4.0.0",
-        "isobject": "3.0.1",
-        "repeat-element": "1.1.3",
-        "snapdragon": "0.8.2",
-        "snapdragon-node": "2.1.1",
-        "split-string": "3.1.0",
-        "to-regex": "3.0.2"
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
       },
       "dependencies": {
         "extend-shallow": {
@@ -1380,7 +1420,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         }
       }
@@ -1397,12 +1437,12 @@
       "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
       "dev": true,
       "requires": {
-        "buffer-xor": "1.0.3",
-        "cipher-base": "1.0.4",
-        "create-hash": "1.2.0",
-        "evp_bytestokey": "1.0.3",
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.2"
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
       }
     },
     "browserify-cipher": {
@@ -1411,9 +1451,9 @@
       "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
       "dev": true,
       "requires": {
-        "browserify-aes": "1.2.0",
-        "browserify-des": "1.0.2",
-        "evp_bytestokey": "1.0.3"
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
       }
     },
     "browserify-des": {
@@ -1422,10 +1462,10 @@
       "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
       "dev": true,
       "requires": {
-        "cipher-base": "1.0.4",
-        "des.js": "1.0.0",
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.2"
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
       }
     },
     "browserify-rsa": {
@@ -1434,23 +1474,58 @@
       "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "randombytes": "2.1.0"
+        "bn.js": "^4.1.0",
+        "randombytes": "^2.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "browserify-sign": {
-      "version": "4.0.4",
-      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
-      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "browserify-rsa": "4.0.1",
-        "create-hash": "1.2.0",
-        "create-hmac": "1.1.7",
-        "elliptic": "6.4.1",
-        "inherits": "2.0.3",
-        "parse-asn1": "5.1.4"
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz",
+      "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^5.1.1",
+        "browserify-rsa": "^4.0.1",
+        "create-hash": "^1.2.0",
+        "create-hmac": "^1.1.7",
+        "elliptic": "^6.5.2",
+        "inherits": "^2.0.4",
+        "parse-asn1": "^5.1.5",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        }
       }
     },
     "browserify-zlib": {
@@ -1459,7 +1534,7 @@
       "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
       "dev": true,
       "requires": {
-        "pako": "1.0.10"
+        "pako": "~1.0.5"
       }
     },
     "browserslist": {
@@ -1468,19 +1543,25 @@
       "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
       "dev": true,
       "requires": {
-        "caniuse-lite": "1.0.30000955",
-        "electron-to-chromium": "1.3.122"
+        "caniuse-lite": "^1.0.30000844",
+        "electron-to-chromium": "^1.3.47"
       }
     },
+    "btoa": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
+      "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
+      "dev": true
+    },
     "buffer": {
-      "version": "4.9.1",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
-      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+      "version": "4.9.2",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
+      "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
       "dev": true,
       "requires": {
-        "base64-js": "1.3.0",
-        "ieee754": "1.1.13",
-        "isarray": "1.0.0"
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
       }
     },
     "buffer-from": {
@@ -1514,25 +1595,26 @@
       "dev": true
     },
     "cacache": {
-      "version": "11.3.2",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz",
-      "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==",
-      "dev": true,
-      "requires": {
-        "bluebird": "3.5.3",
-        "chownr": "1.1.1",
-        "figgy-pudding": "3.5.1",
-        "glob": "7.1.3",
-        "graceful-fs": "4.1.15",
-        "lru-cache": "5.1.1",
-        "mississippi": "3.0.0",
-        "mkdirp": "0.5.1",
-        "move-concurrently": "1.0.1",
-        "promise-inflight": "1.0.1",
-        "rimraf": "2.6.3",
-        "ssri": "6.0.1",
-        "unique-filename": "1.1.1",
-        "y18n": "4.0.0"
+      "version": "12.0.4",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
+      "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.5",
+        "chownr": "^1.1.1",
+        "figgy-pudding": "^3.5.1",
+        "glob": "^7.1.4",
+        "graceful-fs": "^4.1.15",
+        "infer-owner": "^1.0.3",
+        "lru-cache": "^5.1.1",
+        "mississippi": "^3.0.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.3",
+        "ssri": "^6.0.1",
+        "unique-filename": "^1.1.1",
+        "y18n": "^4.0.0"
       }
     },
     "cache-base": {
@@ -1541,21 +1623,21 @@
       "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
       "dev": true,
       "requires": {
-        "collection-visit": "1.0.0",
-        "component-emitter": "1.2.1",
-        "get-value": "2.0.6",
-        "has-value": "1.0.0",
-        "isobject": "3.0.1",
-        "set-value": "2.0.0",
-        "to-object-path": "0.3.0",
-        "union-value": "1.0.0",
-        "unset-value": "1.0.0"
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
       }
     },
     "camelcase": {
-      "version": "5.3.0",
-      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.0.tgz",
-      "integrity": "sha512-Y05ICatFYPAfykDIB7VdwSJ0LUl1yq/BwO2OpyGGLjiRe1fgzTwVypPiWnzkGFOVFHXrCXUNBl86bpjBhZWSJg==",
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
       "dev": true
     },
     "caniuse-lite": {
@@ -1565,48 +1647,84 @@
       "dev": true
     },
     "chalk": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+      "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
       "dev": true,
       "requires": {
-        "ansi-styles": "3.2.1",
-        "escape-string-regexp": "1.0.5",
-        "supports-color": "5.5.0"
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
       }
     },
     "chokidar": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz",
-      "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==",
-      "dev": true,
-      "requires": {
-        "anymatch": "2.0.0",
-        "async-each": "1.0.2",
-        "braces": "2.3.2",
-        "glob-parent": "3.1.0",
-        "inherits": "2.0.3",
-        "is-binary-path": "1.0.1",
-        "is-glob": "4.0.1",
-        "normalize-path": "3.0.0",
-        "path-is-absolute": "1.0.1",
-        "readdirp": "2.2.1",
-        "upath": "1.1.2"
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz",
+      "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "anymatch": "~3.1.1",
+        "braces": "~3.0.2",
+        "fsevents": "~2.1.2",
+        "glob-parent": "~5.1.0",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.4.0"
+      },
+      "dependencies": {
+        "braces": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+          "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "fill-range": "^7.0.1"
+          }
+        },
+        "fill-range": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+          "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+          "dev": true,
+          "optional": true
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+          "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        }
       }
     },
     "chownr": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
-      "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
       "dev": true
     },
     "chrome-trace-event": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz",
-      "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==",
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
+      "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
       "dev": true,
       "requires": {
-        "tslib": "1.9.3"
+        "tslib": "^1.9.0"
       }
     },
     "cipher-base": {
@@ -1615,8 +1733,8 @@
       "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.2"
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
       }
     },
     "class-utils": {
@@ -1625,10 +1743,10 @@
       "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
       "dev": true,
       "requires": {
-        "arr-union": "3.1.0",
-        "define-property": "0.2.5",
-        "isobject": "3.0.1",
-        "static-extend": "0.1.2"
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
       },
       "dependencies": {
         "define-property": {
@@ -1637,57 +1755,51 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         }
       }
     },
     "cliui": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
-      "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
       "dev": true,
       "requires": {
-        "string-width": "2.1.1",
-        "strip-ansi": "4.0.0",
-        "wrap-ansi": "2.1.0"
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
       }
     },
-    "code-point-at": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
-      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
-      "dev": true
-    },
     "collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
       "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
       "dev": true,
       "requires": {
-        "map-visit": "1.0.0",
-        "object-visit": "1.0.1"
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
       }
     },
     "color-convert": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
       "dev": true,
       "requires": {
-        "color-name": "1.1.3"
+        "color-name": "~1.1.4"
       }
     },
     "color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
       "dev": true
     },
     "commander": {
-      "version": "2.19.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
-      "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+      "version": "2.20.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+      "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
       "dev": true
     },
     "commondir": {
@@ -1697,18 +1809,18 @@
       "dev": true
     },
     "component-emitter": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
-      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
       "dev": true
     },
     "compressible": {
-      "version": "2.0.16",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.16.tgz",
-      "integrity": "sha512-JQfEOdnI7dASwCuSPWIeVYwc/zMsu/+tRhoUvEfXz2gxOA2DNjmG5vhtFdBlhWPPGo+RdT9S3tgc/uH5qgDiiA==",
+      "version": "2.0.18",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
       "dev": true,
       "requires": {
-        "mime-db": "1.38.0"
+        "mime-db": ">= 1.43.0 < 2"
       }
     },
     "compression": {
@@ -1717,13 +1829,13 @@
       "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
       "dev": true,
       "requires": {
-        "accepts": "1.3.5",
+        "accepts": "~1.3.5",
         "bytes": "3.0.0",
-        "compressible": "2.0.16",
+        "compressible": "~2.0.16",
         "debug": "2.6.9",
-        "on-headers": "1.0.2",
+        "on-headers": "~1.0.2",
         "safe-buffer": "5.1.2",
-        "vary": "1.1.2"
+        "vary": "~1.1.2"
       }
     },
     "concat-map": {
@@ -1738,36 +1850,10 @@
       "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
       "dev": true,
       "requires": {
-        "buffer-from": "1.1.1",
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.6",
-        "typedarray": "0.0.6"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
       }
     },
     "connect-history-api-fallback": {
@@ -1777,13 +1863,10 @@
       "dev": true
     },
     "console-browserify": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
-      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
-      "dev": true,
-      "requires": {
-        "date-now": "0.1.4"
-      }
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+      "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+      "dev": true
     },
     "constants-browserify": {
       "version": "1.0.0",
@@ -1792,10 +1875,13 @@
       "dev": true
     },
     "content-disposition": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
-      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
-      "dev": true
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
     },
     "content-type": {
       "version": "1.0.4",
@@ -1809,13 +1895,13 @@
       "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
       "dev": true,
       "requires": {
-        "safe-buffer": "5.1.2"
+        "safe-buffer": "~5.1.1"
       }
     },
     "cookie": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
-      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
       "dev": true
     },
     "cookie-signature": {
@@ -1830,12 +1916,12 @@
       "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
       "dev": true,
       "requires": {
-        "aproba": "1.2.0",
-        "fs-write-stream-atomic": "1.0.10",
-        "iferr": "0.1.5",
-        "mkdirp": "0.5.1",
-        "rimraf": "2.6.3",
-        "run-queue": "1.0.3"
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
       }
     },
     "copy-descriptor": {
@@ -1862,8 +1948,16 @@
       "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "elliptic": "6.4.1"
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "create-hash": {
@@ -1872,11 +1966,11 @@
       "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
       "dev": true,
       "requires": {
-        "cipher-base": "1.0.4",
-        "inherits": "2.0.3",
-        "md5.js": "1.3.5",
-        "ripemd160": "2.0.2",
-        "sha.js": "2.4.11"
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
       }
     },
     "create-hmac": {
@@ -1885,12 +1979,12 @@
       "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
       "dev": true,
       "requires": {
-        "cipher-base": "1.0.4",
-        "create-hash": "1.2.0",
-        "inherits": "2.0.3",
-        "ripemd160": "2.0.2",
-        "safe-buffer": "5.1.2",
-        "sha.js": "2.4.11"
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
       }
     },
     "cross-spawn": {
@@ -1899,11 +1993,11 @@
       "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
       "dev": true,
       "requires": {
-        "nice-try": "1.0.5",
-        "path-key": "2.0.1",
-        "semver": "5.7.0",
-        "shebang-command": "1.2.0",
-        "which": "1.3.1"
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
       }
     },
     "crypto-browserify": {
@@ -1912,29 +2006,23 @@
       "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
       "dev": true,
       "requires": {
-        "browserify-cipher": "1.0.1",
-        "browserify-sign": "4.0.4",
-        "create-ecdh": "4.0.3",
-        "create-hash": "1.2.0",
-        "create-hmac": "1.1.7",
-        "diffie-hellman": "5.0.3",
-        "inherits": "2.0.3",
-        "pbkdf2": "3.0.17",
-        "public-encrypt": "4.0.3",
-        "randombytes": "2.1.0",
-        "randomfill": "1.0.4"
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
       }
     },
     "cyclist": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
-      "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
-      "dev": true
-    },
-    "date-now": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
-      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
+      "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
       "dev": true
     },
     "debug": {
@@ -1959,10 +2047,18 @@
       "dev": true
     },
     "deep-equal": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
-      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
-      "dev": true
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
+      "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+      "dev": true,
+      "requires": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      }
     },
     "default-gateway": {
       "version": "4.2.0",
@@ -1970,8 +2066,17 @@
       "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
       "dev": true,
       "requires": {
-        "execa": "1.0.0",
-        "ip-regex": "2.1.0"
+        "execa": "^1.0.0",
+        "ip-regex": "^2.1.0"
+      }
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "dev": true,
+      "requires": {
+        "object-keys": "^1.0.12"
       }
     },
     "define-property": {
@@ -1980,8 +2085,8 @@
       "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
       "dev": true,
       "requires": {
-        "is-descriptor": "1.0.2",
-        "isobject": "3.0.1"
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
       },
       "dependencies": {
         "is-accessor-descriptor": {
@@ -1990,7 +2095,7 @@
           "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-data-descriptor": {
@@ -1999,7 +2104,7 @@
           "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-descriptor": {
@@ -2008,33 +2113,26 @@
           "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
           "dev": true,
           "requires": {
-            "is-accessor-descriptor": "1.0.0",
-            "is-data-descriptor": "1.0.0",
-            "kind-of": "6.0.2"
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         }
       }
     },
     "del": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
-      "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
+      "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
       "dev": true,
       "requires": {
-        "globby": "6.1.0",
-        "is-path-cwd": "1.0.0",
-        "is-path-in-cwd": "1.0.1",
-        "p-map": "1.2.0",
-        "pify": "3.0.0",
-        "rimraf": "2.6.3"
-      },
-      "dependencies": {
-        "pify": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
-          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
-          "dev": true
-        }
+        "@types/glob": "^7.1.1",
+        "globby": "^6.1.0",
+        "is-path-cwd": "^2.0.0",
+        "is-path-in-cwd": "^2.0.0",
+        "p-map": "^2.0.0",
+        "pify": "^4.0.1",
+        "rimraf": "^2.6.3"
       }
     },
     "depd": {
@@ -2044,13 +2142,13 @@
       "dev": true
     },
     "des.js": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
-      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
+      "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.1"
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
       }
     },
     "destroy": {
@@ -2071,7 +2169,7 @@
       "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
       "dev": true,
       "requires": {
-        "repeating": "2.0.1"
+        "repeating": "^2.0.0"
       }
     },
     "detect-node": {
@@ -2086,9 +2184,17 @@
       "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "miller-rabin": "4.0.1",
-        "randombytes": "2.1.0"
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "dns-equal": {
@@ -2103,8 +2209,8 @@
       "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
       "dev": true,
       "requires": {
-        "ip": "1.1.5",
-        "safe-buffer": "5.1.2"
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
       }
     },
     "dns-txt": {
@@ -2113,17 +2219,7 @@
       "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
       "dev": true,
       "requires": {
-        "buffer-indexof": "1.1.1"
-      }
-    },
-    "dom-serializer": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
-      "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
-      "dev": true,
-      "requires": {
-        "domelementtype": "1.3.1",
-        "entities": "1.1.2"
+        "buffer-indexof": "^1.0.0"
       }
     },
     "domain-browser": {
@@ -2132,67 +2228,22 @@
       "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
       "dev": true
     },
-    "domelementtype": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
-      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+    "duplexer": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+      "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
       "dev": true
     },
-    "domhandler": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
-      "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
-      "dev": true,
-      "requires": {
-        "domelementtype": "1.3.1"
-      }
-    },
-    "domutils": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
-      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
-      "dev": true,
-      "requires": {
-        "dom-serializer": "0.1.1",
-        "domelementtype": "1.3.1"
-      }
-    },
     "duplexify": {
       "version": "3.7.1",
       "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
       "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
       "dev": true,
       "requires": {
-        "end-of-stream": "1.4.1",
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.6",
-        "stream-shift": "1.0.0"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
       }
     },
     "ee-first": {
@@ -2201,6 +2252,15 @@
       "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
       "dev": true
     },
+    "ejs": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.3.tgz",
+      "integrity": "sha512-wmtrUGyfSC23GC/B1SMv2ogAUgbQEtDmTIhfqielrG5ExIM9TP4UoYdi90jLF1aTcsWCJNEO0UrgKzP0y3nTSg==",
+      "dev": true,
+      "requires": {
+        "jake": "^10.6.1"
+      }
+    },
     "electron-to-chromium": {
       "version": "1.3.122",
       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.122.tgz",
@@ -2208,24 +2268,45 @@
       "dev": true
     },
     "elliptic": {
-      "version": "6.4.1",
-      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
-      "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
-      "dev": true,
-      "requires": {
-        "bn.js": "4.11.8",
-        "brorand": "1.1.0",
-        "hash.js": "1.1.7",
-        "hmac-drbg": "1.0.1",
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.1",
-        "minimalistic-crypto-utils": "1.0.1"
+      "version": "6.5.4",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        },
+        "inherits": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+          "dev": true
+        }
       }
     },
+    "emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "dev": true
+    },
     "emojis-list": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
-      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+      "dev": true
     },
     "encodeurl": {
       "version": "1.0.2",
@@ -2239,41 +2320,77 @@
       "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
       "dev": true,
       "requires": {
-        "once": "1.4.0"
+        "once": "^1.4.0"
       }
     },
     "enhanced-resolve": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
-      "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz",
+      "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==",
       "dev": true,
       "requires": {
-        "graceful-fs": "4.1.15",
-        "memory-fs": "0.4.1",
-        "tapable": "1.1.1"
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.5.0",
+        "tapable": "^1.0.0"
+      },
+      "dependencies": {
+        "memory-fs": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+          "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+          "dev": true,
+          "requires": {
+            "errno": "^0.1.3",
+            "readable-stream": "^2.0.1"
+          }
+        }
       }
     },
-    "entities": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
-      "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
-      "dev": true
-    },
     "errno": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
       "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
       "dev": true,
       "requires": {
-        "prr": "1.0.1"
+        "prr": "~1.0.1"
       }
     },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
-      "dev": true
-    },
+    "es-abstract": {
+      "version": "1.17.6",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
+      "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
+      "dev": true,
+      "requires": {
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1",
+        "is-callable": "^1.2.0",
+        "is-regex": "^1.1.0",
+        "object-inspect": "^1.7.0",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.0",
+        "string.prototype.trimend": "^1.0.1",
+        "string.prototype.trimstart": "^1.0.1"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+      "dev": true,
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
     "escape-string-regexp": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -2286,8 +2403,8 @@
       "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
       "dev": true,
       "requires": {
-        "esrecurse": "4.2.1",
-        "estraverse": "4.2.0"
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
       }
     },
     "esrecurse": {
@@ -2296,13 +2413,13 @@
       "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
       "dev": true,
       "requires": {
-        "estraverse": "4.2.0"
+        "estraverse": "^4.1.0"
       }
     },
     "estraverse": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
-      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
       "dev": true
     },
     "esutils": {
@@ -2318,14 +2435,15 @@
       "dev": true
     },
     "eventemitter3": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
-      "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA=="
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz",
+      "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==",
+      "dev": true
     },
     "events": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
-      "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
+      "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==",
       "dev": true
     },
     "eventsource": {
@@ -2334,7 +2452,7 @@
       "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
       "dev": true,
       "requires": {
-        "original": "1.0.2"
+        "original": "^1.0.0"
       }
     },
     "evp_bytestokey": {
@@ -2343,8 +2461,8 @@
       "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
       "dev": true,
       "requires": {
-        "md5.js": "1.3.5",
-        "safe-buffer": "5.1.2"
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
       }
     },
     "execa": {
@@ -2353,13 +2471,13 @@
       "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
       "dev": true,
       "requires": {
-        "cross-spawn": "6.0.5",
-        "get-stream": "4.1.0",
-        "is-stream": "1.1.0",
-        "npm-run-path": "2.0.2",
-        "p-finally": "1.0.0",
-        "signal-exit": "3.0.2",
-        "strip-eof": "1.0.0"
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
       }
     },
     "expand-brackets": {
@@ -2368,13 +2486,13 @@
       "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
       "dev": true,
       "requires": {
-        "debug": "2.6.9",
-        "define-property": "0.2.5",
-        "extend-shallow": "2.0.1",
-        "posix-character-classes": "0.1.1",
-        "regex-not": "1.0.2",
-        "snapdragon": "0.8.2",
-        "to-regex": "3.0.2"
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
       },
       "dependencies": {
         "define-property": {
@@ -2383,7 +2501,7 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         },
         "extend-shallow": {
@@ -2392,7 +2510,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         }
       }
@@ -2403,61 +2521,111 @@
       "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
       "dev": true,
       "requires": {
-        "homedir-polyfill": "1.0.3"
+        "homedir-polyfill": "^1.0.1"
       }
     },
     "exports-loader": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.7.0.tgz",
-      "integrity": "sha512-RKwCrO4A6IiKm0pG3c9V46JxIHcDplwwGJn6+JJ1RcVnh/WSGJa0xkmk5cRVtgOPzCAtTMGj2F7nluh9L0vpSA==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-1.1.0.tgz",
+      "integrity": "sha512-zGB2SujiAyO0Rwn4GQ17/HlT8cwmT8abcBeZpr2R3sItJ5sI5Y9BzNzus3H9tH1iWLAoJLi9N3TP54D2+j859Q==",
       "requires": {
-        "loader-utils": "1.2.3",
-        "source-map": "0.5.0"
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.7.0",
+        "source-map": "^0.6.1"
       },
       "dependencies": {
-        "source-map": {
-          "version": "0.5.0",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.0.tgz",
-          "integrity": "sha1-D+llA6yGpa213mP05BKuSHLNvoY="
+        "ajv": {
+          "version": "6.12.3",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
+          "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "emojis-list": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+          "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+        },
+        "json5": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+          "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "minimist": {
+          "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+        },
+        "schema-utils": {
+          "version": "2.7.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+          "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+          "requires": {
+            "@types/json-schema": "^7.0.4",
+            "ajv": "^6.12.2",
+            "ajv-keywords": "^3.4.1"
+          }
         }
       }
     },
     "express": {
-      "version": "4.16.4",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
-      "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
       "dev": true,
       "requires": {
-        "accepts": "1.3.5",
+        "accepts": "~1.3.7",
         "array-flatten": "1.1.1",
-        "body-parser": "1.18.3",
-        "content-disposition": "0.5.2",
-        "content-type": "1.0.4",
-        "cookie": "0.3.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
         "cookie-signature": "1.0.6",
         "debug": "2.6.9",
-        "depd": "1.1.2",
-        "encodeurl": "1.0.2",
-        "escape-html": "1.0.3",
-        "etag": "1.8.1",
-        "finalhandler": "1.1.1",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
         "fresh": "0.5.2",
         "merge-descriptors": "1.0.1",
-        "methods": "1.1.2",
-        "on-finished": "2.3.0",
-        "parseurl": "1.3.2",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
         "path-to-regexp": "0.1.7",
-        "proxy-addr": "2.0.4",
-        "qs": "6.5.2",
-        "range-parser": "1.2.0",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
         "safe-buffer": "5.1.2",
-        "send": "0.16.2",
-        "serve-static": "1.13.2",
-        "setprototypeof": "1.1.0",
-        "statuses": "1.4.0",
-        "type-is": "1.6.16",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
         "utils-merge": "1.0.1",
-        "vary": "1.1.2"
+        "vary": "~1.1.2"
       },
       "dependencies": {
         "array-flatten": {
@@ -2474,8 +2642,8 @@
       "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
       "dev": true,
       "requires": {
-        "assign-symbols": "1.0.0",
-        "is-extendable": "1.0.1"
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
       },
       "dependencies": {
         "is-extendable": {
@@ -2484,7 +2652,7 @@
           "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
           "dev": true,
           "requires": {
-            "is-plain-object": "2.0.4"
+            "is-plain-object": "^2.0.4"
           }
         }
       }
@@ -2495,14 +2663,14 @@
       "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
       "dev": true,
       "requires": {
-        "array-unique": "0.3.2",
-        "define-property": "1.0.0",
-        "expand-brackets": "2.1.4",
-        "extend-shallow": "2.0.1",
-        "fragment-cache": "0.2.1",
-        "regex-not": "1.0.2",
-        "snapdragon": "0.8.2",
-        "to-regex": "3.0.2"
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
       },
       "dependencies": {
         "define-property": {
@@ -2511,7 +2679,7 @@
           "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "1.0.2"
+            "is-descriptor": "^1.0.0"
           }
         },
         "extend-shallow": {
@@ -2520,7 +2688,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         },
         "is-accessor-descriptor": {
@@ -2529,7 +2697,7 @@
           "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-data-descriptor": {
@@ -2538,7 +2706,7 @@
           "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-descriptor": {
@@ -2547,9 +2715,9 @@
           "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
           "dev": true,
           "requires": {
-            "is-accessor-descriptor": "1.0.0",
-            "is-data-descriptor": "1.0.0",
-            "kind-of": "6.0.2"
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         }
       }
@@ -2563,8 +2731,7 @@
     "fast-json-stable-stringify": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
-      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
-      "dev": true
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
     },
     "faye-websocket": {
       "version": "0.10.0",
@@ -2572,25 +2739,34 @@
       "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
       "dev": true,
       "requires": {
-        "websocket-driver": "0.7.0"
+        "websocket-driver": ">=0.5.1"
       }
     },
     "figgy-pudding": {
-      "version": "3.5.1",
-      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
-      "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
+      "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
       "dev": true
     },
+    "filelist": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz",
+      "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==",
+      "dev": true,
+      "requires": {
+        "minimatch": "^3.0.4"
+      }
+    },
     "fill-range": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
       "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
       "dev": true,
       "requires": {
-        "extend-shallow": "2.0.1",
-        "is-number": "3.0.0",
-        "repeat-string": "1.6.1",
-        "to-regex-range": "2.1.1"
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
       },
       "dependencies": {
         "extend-shallow": {
@@ -2599,24 +2775,24 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         }
       }
     },
     "finalhandler": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
-      "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
       "dev": true,
       "requires": {
         "debug": "2.6.9",
-        "encodeurl": "1.0.2",
-        "escape-html": "1.0.3",
-        "on-finished": "2.3.0",
-        "parseurl": "1.3.2",
-        "statuses": "1.4.0",
-        "unpipe": "1.0.0"
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
       }
     },
     "find-cache-dir": {
@@ -2625,9 +2801,9 @@
       "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
       "dev": true,
       "requires": {
-        "commondir": "1.0.1",
-        "make-dir": "2.1.0",
-        "pkg-dir": "3.0.0"
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
       }
     },
     "find-up": {
@@ -2636,30 +2812,19 @@
       "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
       "dev": true,
       "requires": {
-        "locate-path": "3.0.0"
+        "locate-path": "^3.0.0"
       }
     },
     "findup-sync": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
-      "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
+      "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
       "dev": true,
       "requires": {
-        "detect-file": "1.0.0",
-        "is-glob": "3.1.0",
-        "micromatch": "3.1.10",
-        "resolve-dir": "1.0.1"
-      },
-      "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "2.1.1"
-          }
-        }
+        "detect-file": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "micromatch": "^3.0.4",
+        "resolve-dir": "^1.0.1"
       }
     },
     "flush-write-stream": {
@@ -2668,61 +2833,15 @@
       "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.6"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
       }
     },
     "follow-redirects": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
-      "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
-      "dev": true,
-      "requires": {
-        "debug": "3.2.6"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
-          "dev": true,
-          "requires": {
-            "ms": "2.1.1"
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
-          "dev": true
-        }
-      }
+      "version": "1.12.1",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz",
+      "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==",
+      "dev": true
     },
     "for-in": {
       "version": "1.0.2",
@@ -2742,7 +2861,7 @@
       "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
       "dev": true,
       "requires": {
-        "map-cache": "0.2.2"
+        "map-cache": "^0.2.2"
       }
     },
     "fresh": {
@@ -2757,34 +2876,8 @@
       "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.6"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
       }
     },
     "fs-write-stream-atomic": {
@@ -2793,36 +2886,10 @@
       "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
       "dev": true,
       "requires": {
-        "graceful-fs": "4.1.15",
-        "iferr": "0.1.5",
-        "imurmurhash": "0.1.4",
-        "readable-stream": "2.3.6"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
       }
     },
     "fs.realpath": {
@@ -2831,10 +2898,23 @@
       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
       "dev": true
     },
+    "fsevents": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+      "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+      "dev": true,
+      "optional": true
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
     "get-caller-file": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
-      "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
       "dev": true
     },
     "get-stream": {
@@ -2843,7 +2923,7 @@
       "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
       "dev": true,
       "requires": {
-        "pump": "3.0.0"
+        "pump": "^3.0.0"
       }
     },
     "get-value": {
@@ -2853,62 +2933,62 @@
       "dev": true
     },
     "glob": {
-      "version": "7.1.3",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
-      "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+      "version": "7.1.4",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+      "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
       "dev": true,
       "requires": {
-        "fs.realpath": "1.0.0",
-        "inflight": "1.0.6",
-        "inherits": "2.0.3",
-        "minimatch": "3.0.4",
-        "once": "1.4.0",
-        "path-is-absolute": "1.0.1"
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
       }
     },
     "glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+      "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "global-modules": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+      "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
       "dev": true,
       "requires": {
-        "is-glob": "3.1.0",
-        "path-dirname": "1.0.2"
+        "global-prefix": "^3.0.0"
       },
       "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+        "global-prefix": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+          "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
           "dev": true,
           "requires": {
-            "is-extglob": "2.1.1"
+            "ini": "^1.3.5",
+            "kind-of": "^6.0.2",
+            "which": "^1.3.1"
           }
         }
       }
     },
-    "global-modules": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
-      "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
-      "dev": true,
-      "requires": {
-        "global-prefix": "1.0.2",
-        "is-windows": "1.0.2",
-        "resolve-dir": "1.0.1"
-      }
-    },
     "global-prefix": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
       "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
       "dev": true,
       "requires": {
-        "expand-tilde": "2.0.2",
-        "homedir-polyfill": "1.0.3",
-        "ini": "1.3.5",
-        "is-windows": "1.0.2",
-        "which": "1.3.1"
+        "expand-tilde": "^2.0.2",
+        "homedir-polyfill": "^1.0.1",
+        "ini": "^1.3.4",
+        "is-windows": "^1.0.1",
+        "which": "^1.2.14"
       }
     },
     "globals": {
@@ -2923,11 +3003,11 @@
       "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
       "dev": true,
       "requires": {
-        "array-union": "1.0.2",
-        "glob": "7.1.3",
-        "object-assign": "4.1.1",
-        "pify": "2.3.0",
-        "pinkie-promise": "2.0.1"
+        "array-union": "^1.0.1",
+        "glob": "^7.0.3",
+        "object-assign": "^4.0.1",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
       },
       "dependencies": {
         "pify": {
@@ -2939,24 +3019,43 @@
       }
     },
     "graceful-fs": {
-      "version": "4.1.15",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
-      "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
+      "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
       "dev": true
     },
+    "gzip-size": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz",
+      "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==",
+      "dev": true,
+      "requires": {
+        "duplexer": "^0.1.1",
+        "pify": "^4.0.1"
+      }
+    },
     "handle-thing": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
-      "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
+      "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
       "dev": true
     },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
     "has-ansi": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
       "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
       "dev": true,
       "requires": {
-        "ansi-regex": "2.1.1"
+        "ansi-regex": "^2.0.0"
       },
       "dependencies": {
         "ansi-regex": {
@@ -2968,9 +3067,15 @@
       }
     },
     "has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "dev": true
+    },
+    "has-symbols": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+      "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
       "dev": true
     },
     "has-value": {
@@ -2979,9 +3084,9 @@
       "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
       "dev": true,
       "requires": {
-        "get-value": "2.0.6",
-        "has-values": "1.0.0",
-        "isobject": "3.0.1"
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
       }
     },
     "has-values": {
@@ -2990,8 +3095,8 @@
       "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
       "dev": true,
       "requires": {
-        "is-number": "3.0.0",
-        "kind-of": "4.0.0"
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
       },
       "dependencies": {
         "kind-of": {
@@ -3000,19 +3105,45 @@
           "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
     },
     "hash-base": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
-      "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+      "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.2"
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+          "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        }
       }
     },
     "hash.js": {
@@ -3021,8 +3152,8 @@
       "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "minimalistic-assert": "1.0.1"
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
       }
     },
     "hmac-drbg": {
@@ -3031,9 +3162,9 @@
       "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
       "dev": true,
       "requires": {
-        "hash.js": "1.1.7",
-        "minimalistic-assert": "1.0.1",
-        "minimalistic-crypto-utils": "1.0.1"
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
       }
     },
     "home-or-tmp": {
@@ -3042,8 +3173,8 @@
       "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
       "dev": true,
       "requires": {
-        "os-homedir": "1.0.2",
-        "os-tmpdir": "1.0.2"
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.1"
       }
     },
     "homedir-polyfill": {
@@ -3052,7 +3183,7 @@
       "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
       "dev": true,
       "requires": {
-        "parse-passwd": "1.0.0"
+        "parse-passwd": "^1.0.0"
       }
     },
     "hpack.js": {
@@ -3061,58 +3192,18 @@
       "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "obuf": "1.1.2",
-        "readable-stream": "2.3.6",
-        "wbuf": "1.7.3"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
       }
     },
     "html-entities": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
-      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz",
+      "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==",
       "dev": true
     },
-    "htmlparser2": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
-      "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
-      "dev": true,
-      "requires": {
-        "domelementtype": "1.3.1",
-        "domhandler": "2.4.2",
-        "domutils": "1.7.0",
-        "entities": "1.1.2",
-        "inherits": "2.0.3",
-        "readable-stream": "3.3.0"
-      }
-    },
     "http-deceiver": {
       "version": "1.2.7",
       "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
@@ -3120,32 +3211,27 @@
       "dev": true
     },
     "http-errors": {
-      "version": "1.6.3",
-      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
-      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
       "dev": true,
       "requires": {
-        "depd": "1.1.2",
+        "depd": "~1.1.2",
         "inherits": "2.0.3",
-        "setprototypeof": "1.1.0",
-        "statuses": "1.4.0"
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
       }
     },
-    "http-parser-js": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
-      "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==",
-      "dev": true
-    },
     "http-proxy": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
-      "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+      "version": "1.18.1",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
       "dev": true,
       "requires": {
-        "eventemitter3": "3.1.0",
-        "follow-redirects": "1.7.0",
-        "requires-port": "1.0.0"
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
       }
     },
     "http-proxy-middleware": {
@@ -3154,10 +3240,10 @@
       "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
       "dev": true,
       "requires": {
-        "http-proxy": "1.17.0",
-        "is-glob": "4.0.1",
-        "lodash": "4.17.11",
-        "micromatch": "3.1.10"
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
       }
     },
     "https-browserify": {
@@ -3167,12 +3253,12 @@
       "dev": true
     },
     "iconv-lite": {
-      "version": "0.4.23",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
-      "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
       "dev": true,
       "requires": {
-        "safer-buffer": "2.1.2"
+        "safer-buffer": ">= 2.1.2 < 3"
       }
     },
     "ieee754": {
@@ -3193,17 +3279,75 @@
       "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
       "dev": true,
       "requires": {
-        "pkg-dir": "3.0.0",
-        "resolve-cwd": "2.0.0"
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
       }
     },
     "imports-loader": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.8.0.tgz",
-      "integrity": "sha512-kXWL7Scp8KQ4552ZcdVTeaQCZSLW+e6nJfp3cwUMB673T7Hr98Xjx5JK+ql7ADlJUvj1JS5O01RLbKoutN5QDQ==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-1.1.0.tgz",
+      "integrity": "sha512-HcPM6rULdQ6EBLVq+5O+CF9xb7qiUjsRm6V28bTG/c3IU5sQkVZzUDwYY0r4jHvSAmVFdO9WA/vLAURR5WQSeQ==",
       "requires": {
-        "loader-utils": "1.2.3",
-        "source-map": "0.6.1"
+        "loader-utils": "^2.0.0",
+        "schema-utils": "^2.7.0",
+        "source-map": "^0.6.1",
+        "strip-comments": "^2.0.1"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.12.3",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
+          "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
+          "requires": {
+            "fast-deep-equal": "^3.1.1",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.4.1",
+            "uri-js": "^4.2.2"
+          }
+        },
+        "emojis-list": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+          "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
+        },
+        "fast-deep-equal": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+          "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+        },
+        "json5": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+          "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "minimist": {
+          "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+        },
+        "schema-utils": {
+          "version": "2.7.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
+          "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+          "requires": {
+            "@types/json-schema": "^7.0.4",
+            "ajv": "^6.12.2",
+            "ajv-keywords": "^3.4.1"
+          }
+        }
       }
     },
     "imurmurhash": {
@@ -3212,10 +3356,10 @@
       "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
       "dev": true
     },
-    "indexof": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
-      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+    "infer-owner": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
       "dev": true
     },
     "inflight": {
@@ -3224,54 +3368,35 @@
       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
       "dev": true,
       "requires": {
-        "once": "1.4.0",
-        "wrappy": "1.0.2"
+        "once": "^1.3.0",
+        "wrappy": "1"
       }
     },
     "inherits": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
-      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
-      "dev": true
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
     },
     "ini": {
-      "version": "1.3.5",
-      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
-      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
+      "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
       "dev": true
     },
-    "ink-docstrap": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/ink-docstrap/-/ink-docstrap-1.3.2.tgz",
-      "integrity": "sha512-STx5orGQU1gfrkoI/fMU7lX6CSP7LBGO10gXNgOZhwKhUqbtNjCkYSewJtNnLmWP1tAGN6oyEpG1HFPw5vpa5Q==",
-      "dev": true,
-      "requires": {
-        "moment": "2.24.0",
-        "sanitize-html": "1.20.0"
-      }
-    },
     "internal-ip": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.2.0.tgz",
-      "integrity": "sha512-ZY8Rk+hlvFeuMmG5uH1MXhhdeMntmIaxaInvAmzMq/SHV8rv4Kh+6GiQNNDQd0wZFrcO+FiTBo8lui/osKOyJw==",
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+      "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
       "dev": true,
       "requires": {
-        "default-gateway": "4.2.0",
-        "ipaddr.js": "1.9.0"
-      },
-      "dependencies": {
-        "ipaddr.js": {
-          "version": "1.9.0",
-          "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
-          "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==",
-          "dev": true
-        }
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
       }
     },
     "interpret": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
-      "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+      "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
       "dev": true
     },
     "invariant": {
@@ -3280,15 +3405,9 @@
       "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
       "dev": true,
       "requires": {
-        "loose-envify": "1.4.0"
+        "loose-envify": "^1.0.0"
       }
     },
-    "invert-kv": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
-      "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
-      "dev": true
-    },
     "ip": {
       "version": "1.1.5",
       "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@@ -3302,9 +3421,15 @@
       "dev": true
     },
     "ipaddr.js": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
-      "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=",
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "dev": true
+    },
+    "is-absolute-url": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+      "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
       "dev": true
     },
     "is-accessor-descriptor": {
@@ -3313,7 +3438,7 @@
       "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.0.2"
       },
       "dependencies": {
         "kind-of": {
@@ -3322,18 +3447,25 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
     },
-    "is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+    "is-arguments": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
+      "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
       "dev": true,
+      "optional": true,
       "requires": {
-        "binary-extensions": "1.13.1"
+        "binary-extensions": "^2.0.0"
       }
     },
     "is-buffer": {
@@ -3342,13 +3474,19 @@
       "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
       "dev": true
     },
+    "is-callable": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
+      "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
+      "dev": true
+    },
     "is-data-descriptor": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
       "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.0.2"
       },
       "dependencies": {
         "kind-of": {
@@ -3357,20 +3495,26 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
     },
+    "is-date-object": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
+      "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
+      "dev": true
+    },
     "is-descriptor": {
       "version": "0.1.6",
       "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
       "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
       "dev": true,
       "requires": {
-        "is-accessor-descriptor": "0.1.6",
-        "is-data-descriptor": "0.1.4",
-        "kind-of": "5.1.0"
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
       },
       "dependencies": {
         "kind-of": {
@@ -3381,6 +3525,12 @@
         }
       }
     },
+    "is-docker": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz",
+      "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==",
+      "dev": true
+    },
     "is-extendable": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@@ -3399,13 +3549,13 @@
       "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
       "dev": true,
       "requires": {
-        "number-is-nan": "1.0.1"
+        "number-is-nan": "^1.0.0"
       }
     },
     "is-fullwidth-code-point": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
       "dev": true
     },
     "is-glob": {
@@ -3414,7 +3564,7 @@
       "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
       "dev": true,
       "requires": {
-        "is-extglob": "2.1.1"
+        "is-extglob": "^2.1.1"
       }
     },
     "is-number": {
@@ -3423,7 +3573,7 @@
       "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.0.2"
       },
       "dependencies": {
         "kind-of": {
@@ -3432,33 +3582,33 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
     },
     "is-path-cwd": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
-      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
       "dev": true
     },
     "is-path-in-cwd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
-      "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+      "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
       "dev": true,
       "requires": {
-        "is-path-inside": "1.0.1"
+        "is-path-inside": "^2.1.0"
       }
     },
     "is-path-inside": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
-      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
+      "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
       "dev": true,
       "requires": {
-        "path-is-inside": "1.0.2"
+        "path-is-inside": "^1.0.2"
       }
     },
     "is-plain-object": {
@@ -3467,7 +3617,16 @@
       "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
       "dev": true,
       "requires": {
-        "isobject": "3.0.1"
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
+      "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
+      "dev": true,
+      "requires": {
+        "has-symbols": "^1.0.1"
       }
     },
     "is-stream": {
@@ -3476,6 +3635,15 @@
       "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
       "dev": true
     },
+    "is-symbol": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+      "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+      "dev": true,
+      "requires": {
+        "has-symbols": "^1.0.1"
+      }
+    },
     "is-windows": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -3506,6 +3674,70 @@
       "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
       "dev": true
     },
+    "jake": {
+      "version": "10.8.2",
+      "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
+      "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
+      "dev": true,
+      "requires": {
+        "async": "0.9.x",
+        "chalk": "^2.4.2",
+        "filelist": "^1.0.1",
+        "minimatch": "^3.0.4"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+          "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+          "dev": true,
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+          "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
     "js-tokens": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
@@ -3527,21 +3759,21 @@
     "json-schema-traverse": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
-      "dev": true
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
     },
     "json3": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
-      "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
+      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
       "dev": true
     },
     "json5": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
       "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+      "dev": true,
       "requires": {
-        "minimist": "1.2.0"
+        "minimist": "^1.2.0"
       }
     },
     "killable": {
@@ -3551,20 +3783,11 @@
       "dev": true
     },
     "kind-of": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
-      "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
       "dev": true
     },
-    "lcid": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
-      "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
-      "dev": true,
-      "requires": {
-        "invert-kv": "2.0.0"
-      }
-    },
     "loader-runner": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
@@ -3575,10 +3798,11 @@
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
       "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+      "dev": true,
       "requires": {
-        "big.js": "5.2.2",
-        "emojis-list": "2.1.0",
-        "json5": "1.0.1"
+        "big.js": "^5.2.2",
+        "emojis-list": "^2.0.0",
+        "json5": "^1.0.1"
       }
     },
     "locate-path": {
@@ -3587,50 +3811,20 @@
       "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
       "dev": true,
       "requires": {
-        "p-locate": "3.0.0",
-        "path-exists": "3.0.0"
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
       }
     },
     "lodash": {
-      "version": "4.17.11",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
-      "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
-      "dev": true
-    },
-    "lodash.clonedeep": {
-      "version": "4.5.0",
-      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
-      "dev": true
-    },
-    "lodash.escaperegexp": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
-      "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=",
-      "dev": true
-    },
-    "lodash.isplainobject": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
-      "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
-      "dev": true
-    },
-    "lodash.isstring": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
-      "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
-      "dev": true
-    },
-    "lodash.mergewith": {
-      "version": "4.6.1",
-      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
-      "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
+      "version": "4.17.19",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
+      "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
       "dev": true
     },
     "loglevel": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
-      "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=",
+      "version": "1.6.8",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz",
+      "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==",
       "dev": true
     },
     "loose-envify": {
@@ -3639,7 +3833,7 @@
       "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
       "dev": true,
       "requires": {
-        "js-tokens": "3.0.2"
+        "js-tokens": "^3.0.0 || ^4.0.0"
       }
     },
     "lru-cache": {
@@ -3648,7 +3842,7 @@
       "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
       "dev": true,
       "requires": {
-        "yallist": "3.0.3"
+        "yallist": "^3.0.2"
       }
     },
     "make-dir": {
@@ -3657,23 +3851,8 @@
       "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
       "dev": true,
       "requires": {
-        "pify": "4.0.1",
-        "semver": "5.7.0"
-      }
-    },
-    "mamacro": {
-      "version": "0.0.3",
-      "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
-      "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
-      "dev": true
-    },
-    "map-age-cleaner": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
-      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
-      "dev": true,
-      "requires": {
-        "p-defer": "1.0.0"
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
       }
     },
     "map-cache": {
@@ -3688,7 +3867,7 @@
       "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
       "dev": true,
       "requires": {
-        "object-visit": "1.0.1"
+        "object-visit": "^1.0.0"
       }
     },
     "md5.js": {
@@ -3697,9 +3876,9 @@
       "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
       "dev": true,
       "requires": {
-        "hash-base": "3.0.4",
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.2"
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
       }
     },
     "media-typer": {
@@ -3708,51 +3887,14 @@
       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
       "dev": true
     },
-    "mem": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
-      "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
-      "dev": true,
-      "requires": {
-        "map-age-cleaner": "0.1.3",
-        "mimic-fn": "2.1.0",
-        "p-is-promise": "2.0.0"
-      }
-    },
     "memory-fs": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
       "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
       "dev": true,
       "requires": {
-        "errno": "0.1.7",
-        "readable-stream": "2.3.6"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
       }
     },
     "merge-descriptors": {
@@ -3773,19 +3915,19 @@
       "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
       "dev": true,
       "requires": {
-        "arr-diff": "4.0.0",
-        "array-unique": "0.3.2",
-        "braces": "2.3.2",
-        "define-property": "2.0.2",
-        "extend-shallow": "3.0.2",
-        "extglob": "2.0.4",
-        "fragment-cache": "0.2.1",
-        "kind-of": "6.0.2",
-        "nanomatch": "1.2.13",
-        "object.pick": "1.3.0",
-        "regex-not": "1.0.2",
-        "snapdragon": "0.8.2",
-        "to-regex": "3.0.2"
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
       }
     },
     "miller-rabin": {
@@ -3794,37 +3936,39 @@
       "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "brorand": "1.1.0"
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "mime": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
-      "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
       "dev": true
     },
     "mime-db": {
-      "version": "1.38.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
-      "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==",
+      "version": "1.44.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
+      "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
       "dev": true
     },
     "mime-types": {
-      "version": "2.1.22",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
-      "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
+      "version": "2.1.27",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
+      "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
       "dev": true,
       "requires": {
-        "mime-db": "1.38.0"
+        "mime-db": "1.44.0"
       }
     },
-    "mimic-fn": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-      "dev": true
-    },
     "minimalistic-assert": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -3843,13 +3987,14 @@
       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
       "dev": true,
       "requires": {
-        "brace-expansion": "1.1.11"
+        "brace-expansion": "^1.1.7"
       }
     },
     "minimist": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
     },
     "mississippi": {
       "version": "3.0.0",
@@ -3857,26 +4002,26 @@
       "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
       "dev": true,
       "requires": {
-        "concat-stream": "1.6.2",
-        "duplexify": "3.7.1",
-        "end-of-stream": "1.4.1",
-        "flush-write-stream": "1.1.1",
-        "from2": "2.3.0",
-        "parallel-transform": "1.1.0",
-        "pump": "3.0.0",
-        "pumpify": "1.5.1",
-        "stream-each": "1.2.3",
-        "through2": "2.0.5"
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^3.0.0",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
       }
     },
     "mixin-deep": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
-      "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
       "dev": true,
       "requires": {
-        "for-in": "1.0.2",
-        "is-extendable": "1.0.1"
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
       },
       "dependencies": {
         "is-extendable": {
@@ -3885,46 +4030,32 @@
           "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
           "dev": true,
           "requires": {
-            "is-plain-object": "2.0.4"
+            "is-plain-object": "^2.0.4"
           }
         }
       }
     },
     "mkdirp": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
       "dev": true,
       "requires": {
-        "minimist": "0.0.8"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "0.0.8",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
-          "dev": true
-        }
+        "minimist": "^1.2.5"
       }
     },
-    "moment": {
-      "version": "2.24.0",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
-      "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==",
-      "dev": true
-    },
     "move-concurrently": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
       "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
       "dev": true,
       "requires": {
-        "aproba": "1.2.0",
-        "copy-concurrently": "1.0.5",
-        "fs-write-stream-atomic": "1.0.10",
-        "mkdirp": "0.5.1",
-        "rimraf": "2.6.3",
-        "run-queue": "1.0.3"
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
       }
     },
     "ms": {
@@ -3939,8 +4070,8 @@
       "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
       "dev": true,
       "requires": {
-        "dns-packet": "1.3.1",
-        "thunky": "1.0.3"
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
       }
     },
     "multicast-dns-service-types": {
@@ -3955,29 +4086,29 @@
       "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
       "dev": true,
       "requires": {
-        "arr-diff": "4.0.0",
-        "array-unique": "0.3.2",
-        "define-property": "2.0.2",
-        "extend-shallow": "3.0.2",
-        "fragment-cache": "0.2.1",
-        "is-windows": "1.0.2",
-        "kind-of": "6.0.2",
-        "object.pick": "1.3.0",
-        "regex-not": "1.0.2",
-        "snapdragon": "0.8.2",
-        "to-regex": "3.0.2"
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
       }
     },
     "negotiator": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
-      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
       "dev": true
     },
     "neo-async": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
-      "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
       "dev": true
     },
     "nice-try": {
@@ -3987,40 +4118,40 @@
       "dev": true
     },
     "node-forge": {
-      "version": "0.7.5",
-      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
-      "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz",
+      "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==",
       "dev": true
     },
     "node-libs-browser": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz",
-      "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==",
-      "dev": true,
-      "requires": {
-        "assert": "1.4.1",
-        "browserify-zlib": "0.2.0",
-        "buffer": "4.9.1",
-        "console-browserify": "1.1.0",
-        "constants-browserify": "1.0.0",
-        "crypto-browserify": "3.12.0",
-        "domain-browser": "1.2.0",
-        "events": "3.0.0",
-        "https-browserify": "1.0.0",
-        "os-browserify": "0.3.0",
-        "path-browserify": "0.0.0",
-        "process": "0.11.10",
-        "punycode": "1.4.1",
-        "querystring-es3": "0.2.1",
-        "readable-stream": "2.3.6",
-        "stream-browserify": "2.0.2",
-        "stream-http": "2.8.3",
-        "string_decoder": "1.2.0",
-        "timers-browserify": "2.0.10",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+      "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+      "dev": true,
+      "requires": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^3.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.1",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
         "tty-browserify": "0.0.0",
-        "url": "0.11.0",
-        "util": "0.11.1",
-        "vm-browserify": "0.0.4"
+        "url": "^0.11.0",
+        "util": "^0.11.0",
+        "vm-browserify": "^1.0.1"
       },
       "dependencies": {
         "punycode": {
@@ -4029,30 +4160,13 @@
           "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
           "dev": true
         },
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+        "util": {
+          "version": "0.11.1",
+          "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+          "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
           "dev": true,
           "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          },
-          "dependencies": {
-            "string_decoder": {
-              "version": "1.1.1",
-              "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-              "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-              "dev": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
+            "inherits": "2.0.3"
           }
         }
       }
@@ -4069,7 +4183,7 @@
       "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
       "dev": true,
       "requires": {
-        "path-key": "2.0.1"
+        "path-key": "^2.0.0"
       }
     },
     "number-is-nan": {
@@ -4090,9 +4204,9 @@
       "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
       "dev": true,
       "requires": {
-        "copy-descriptor": "0.1.1",
-        "define-property": "0.2.5",
-        "kind-of": "3.2.2"
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
       },
       "dependencies": {
         "define-property": {
@@ -4101,7 +4215,7 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         },
         "kind-of": {
@@ -4110,18 +4224,52 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
     },
+    "object-inspect": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
+      "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
+      "dev": true
+    },
+    "object-is": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
+      "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
+      }
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true
+    },
     "object-visit": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
       "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
       "dev": true,
       "requires": {
-        "isobject": "3.0.1"
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.assign": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+      "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "function-bind": "^1.1.1",
+        "has-symbols": "^1.0.0",
+        "object-keys": "^1.0.11"
       }
     },
     "object.pick": {
@@ -4130,7 +4278,7 @@
       "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
       "dev": true,
       "requires": {
-        "isobject": "3.0.1"
+        "isobject": "^3.0.1"
       }
     },
     "obuf": {
@@ -4160,7 +4308,28 @@
       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
       "dev": true,
       "requires": {
-        "wrappy": "1.0.2"
+        "wrappy": "1"
+      }
+    },
+    "open": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/open/-/open-7.1.0.tgz",
+      "integrity": "sha512-lLPI5KgOwEYCDKXf4np7y1PBEkj7HYIyP2DY8mVDRnx0VIIu6bNrRB0R66TuO7Mack6EnTNLm4uvcl1UoklTpA==",
+      "dev": true,
+      "requires": {
+        "is-docker": "^2.0.0",
+        "is-wsl": "^2.1.1"
+      },
+      "dependencies": {
+        "is-wsl": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+          "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+          "dev": true,
+          "requires": {
+            "is-docker": "^2.0.0"
+          }
+        }
       }
     },
     "opn": {
@@ -4169,7 +4338,7 @@
       "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
       "dev": true,
       "requires": {
-        "is-wsl": "1.1.0"
+        "is-wsl": "^1.1.0"
       }
     },
     "original": {
@@ -4178,7 +4347,7 @@
       "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
       "dev": true,
       "requires": {
-        "url-parse": "1.4.4"
+        "url-parse": "^1.4.3"
       }
     },
     "os-browserify": {
@@ -4193,48 +4362,25 @@
       "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
       "dev": true
     },
-    "os-locale": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
-      "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
-      "dev": true,
-      "requires": {
-        "execa": "1.0.0",
-        "lcid": "2.0.0",
-        "mem": "4.3.0"
-      }
-    },
     "os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
       "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
       "dev": true
     },
-    "p-defer": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
-      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
-      "dev": true
-    },
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
       "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
       "dev": true
     },
-    "p-is-promise": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz",
-      "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==",
-      "dev": true
-    },
     "p-limit": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
       "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
       "dev": true,
       "requires": {
-        "p-try": "2.2.0"
+        "p-try": "^2.0.0"
       }
     },
     "p-locate": {
@@ -4243,15 +4389,24 @@
       "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
       "dev": true,
       "requires": {
-        "p-limit": "2.2.0"
+        "p-limit": "^2.0.0"
       }
     },
     "p-map": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
-      "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
+      "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
       "dev": true
     },
+    "p-retry": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
+      "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+      "dev": true,
+      "requires": {
+        "retry": "^0.12.0"
+      }
+    },
     "p-try": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
@@ -4259,60 +4414,34 @@
       "dev": true
     },
     "pako": {
-      "version": "1.0.10",
-      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
-      "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
       "dev": true
     },
     "parallel-transform": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
-      "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
+      "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
       "dev": true,
       "requires": {
-        "cyclist": "0.2.2",
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.6"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "cyclist": "^1.0.1",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
       }
     },
     "parse-asn1": {
-      "version": "5.1.4",
-      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
-      "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
+      "version": "5.1.5",
+      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
+      "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
       "dev": true,
       "requires": {
-        "asn1.js": "4.10.1",
-        "browserify-aes": "1.2.0",
-        "create-hash": "1.2.0",
-        "evp_bytestokey": "1.0.3",
-        "pbkdf2": "3.0.17",
-        "safe-buffer": "5.1.2"
+        "asn1.js": "^4.0.0",
+        "browserify-aes": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
       }
     },
     "parse-passwd": {
@@ -4322,9 +4451,9 @@
       "dev": true
     },
     "parseurl": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
-      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
       "dev": true
     },
     "pascalcase": {
@@ -4333,10 +4462,19 @@
       "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
       "dev": true
     },
+    "path": {
+      "version": "0.12.7",
+      "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
+      "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
+      "requires": {
+        "process": "^0.11.1",
+        "util": "^0.10.3"
+      }
+    },
     "path-browserify": {
-      "version": "0.0.0",
-      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
-      "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+      "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
       "dev": true
     },
     "path-dirname": {
@@ -4376,28 +4514,43 @@
       "dev": true
     },
     "pbkdf2": {
-      "version": "3.0.17",
-      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
-      "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
+      "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
       "dev": true,
       "requires": {
-        "create-hash": "1.2.0",
-        "create-hmac": "1.1.7",
-        "ripemd160": "2.0.2",
-        "safe-buffer": "5.1.2",
-        "sha.js": "2.4.11"
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
       }
     },
     "phaser": {
-      "version": "3.16.2",
-      "resolved": "https://registry.npmjs.org/phaser/-/phaser-3.16.2.tgz",
-      "integrity": "sha512-r1SipuO4Lq17cmQOegZV6zBdqmQyJH2A6CZz/dNYPIPfGQl8Clay0hWqI/FluMi7uPrSFvaY63VeRpr1IP10iA==",
-      "requires": {
-        "eventemitter3": "3.1.0",
-        "exports-loader": "0.7.0",
-        "imports-loader": "0.8.0"
+      "version": "3.24.1",
+      "resolved": "https://registry.npmjs.org/phaser/-/phaser-3.24.1.tgz",
+      "integrity": "sha512-WbrRMkbpEzarkfrq83akeauc6b8xNxsOTpDygyW7wrU2G2ne6kOYu3hji4UAaGnZaOLrVuj8ycYPjX9P1LxcDw==",
+      "requires": {
+        "eventemitter3": "^4.0.4",
+        "exports-loader": "^1.1.0",
+        "imports-loader": "^1.1.0",
+        "path": "^0.12.7"
+      },
+      "dependencies": {
+        "eventemitter3": {
+          "version": "4.0.4",
+          "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz",
+          "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ=="
+        }
       }
     },
+    "picomatch": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
+      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+      "dev": true,
+      "optional": true
+    },
     "pify": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
@@ -4416,7 +4569,7 @@
       "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
       "dev": true,
       "requires": {
-        "pinkie": "2.0.4"
+        "pinkie": "^2.0.0"
       }
     },
     "pkg-dir": {
@@ -4425,48 +4578,52 @@
       "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
       "dev": true,
       "requires": {
-        "find-up": "3.0.0"
+        "find-up": "^3.0.0"
       }
     },
     "portfinder": {
-      "version": "1.0.20",
-      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz",
-      "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==",
-      "dev": true,
-      "requires": {
-        "async": "1.5.2",
-        "debug": "2.6.9",
-        "mkdirp": "0.5.1"
-      }
-    },
-    "posix-character-classes": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
-      "dev": true
-    },
-    "postcss": {
-      "version": "7.0.14",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz",
-      "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==",
+      "version": "1.0.27",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.27.tgz",
+      "integrity": "sha512-bJ3U3MThKnyJ9Dx1Idtm5pQmxXqw08+XOHhi/Lie8OF1OlhVaBFhsntAIhkZYjfDcCzszSr0w1yCbccThhzgxQ==",
       "dev": true,
       "requires": {
-        "chalk": "2.4.2",
-        "source-map": "0.6.1",
-        "supports-color": "6.1.0"
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.1"
       },
       "dependencies": {
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+        "async": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+          "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+          "dev": true,
+          "requires": {
+            "lodash": "^4.17.14"
+          }
+        },
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "ms": "^2.1.1"
           }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
         }
       }
     },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true
+    },
     "private": {
       "version": "0.1.8",
       "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
@@ -4476,13 +4633,12 @@
     "process": {
       "version": "0.11.10",
       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
-      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
-      "dev": true
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
     },
     "process-nextick-args": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
       "dev": true
     },
     "promise-inflight": {
@@ -4492,13 +4648,13 @@
       "dev": true
     },
     "proxy-addr": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
-      "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
+      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
       "dev": true,
       "requires": {
-        "forwarded": "0.1.2",
-        "ipaddr.js": "1.8.0"
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.9.1"
       }
     },
     "prr": {
@@ -4513,12 +4669,20 @@
       "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
       "dev": true,
       "requires": {
-        "bn.js": "4.11.8",
-        "browserify-rsa": "4.0.1",
-        "create-hash": "1.2.0",
-        "parse-asn1": "5.1.4",
-        "randombytes": "2.1.0",
-        "safe-buffer": "5.1.2"
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.11.9",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+          "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+          "dev": true
+        }
       }
     },
     "pump": {
@@ -4527,8 +4691,8 @@
       "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
       "dev": true,
       "requires": {
-        "end-of-stream": "1.4.1",
-        "once": "1.4.0"
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
       }
     },
     "pumpify": {
@@ -4537,9 +4701,9 @@
       "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
       "dev": true,
       "requires": {
-        "duplexify": "3.7.1",
-        "inherits": "2.0.3",
-        "pump": "2.0.1"
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
       },
       "dependencies": {
         "pump": {
@@ -4548,8 +4712,8 @@
           "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
           "dev": true,
           "requires": {
-            "end-of-stream": "1.4.1",
-            "once": "1.4.0"
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
           }
         }
       }
@@ -4557,13 +4721,12 @@
     "punycode": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "dev": true
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
     },
     "qs": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
-      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
       "dev": true
     },
     "querystring": {
@@ -4590,7 +4753,7 @@
       "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
       "dev": true,
       "requires": {
-        "safe-buffer": "5.1.2"
+        "safe-buffer": "^5.1.0"
       }
     },
     "randomfill": {
@@ -4599,74 +4762,59 @@
       "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
       "dev": true,
       "requires": {
-        "randombytes": "2.1.0",
-        "safe-buffer": "5.1.2"
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
       }
     },
     "range-parser": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
-      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
       "dev": true
     },
     "raw-body": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
-      "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
       "dev": true,
       "requires": {
-        "bytes": "3.0.0",
-        "http-errors": "1.6.3",
-        "iconv-lite": "0.4.23",
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
         "unpipe": "1.0.0"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+          "dev": true
+        }
       }
     },
     "readable-stream": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
-      "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "string_decoder": "1.2.0",
-        "util-deprecate": "1.0.2"
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
       }
     },
     "readdirp": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+      "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
       "dev": true,
+      "optional": true,
       "requires": {
-        "graceful-fs": "4.1.15",
-        "micromatch": "3.1.10",
-        "readable-stream": "2.3.6"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "picomatch": "^2.2.1"
       }
     },
     "regenerate": {
@@ -4687,9 +4835,9 @@
       "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
       "dev": true,
       "requires": {
-        "babel-runtime": "6.26.0",
-        "babel-types": "6.26.0",
-        "private": "0.1.8"
+        "babel-runtime": "^6.18.0",
+        "babel-types": "^6.19.0",
+        "private": "^0.1.6"
       }
     },
     "regex-not": {
@@ -4698,8 +4846,18 @@
       "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
       "dev": true,
       "requires": {
-        "extend-shallow": "3.0.2",
-        "safe-regex": "1.1.0"
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regexp.prototype.flags": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
+      "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.0-next.1"
       }
     },
     "regexpu-core": {
@@ -4708,9 +4866,9 @@
       "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
       "dev": true,
       "requires": {
-        "regenerate": "1.4.0",
-        "regjsgen": "0.2.0",
-        "regjsparser": "0.1.5"
+        "regenerate": "^1.2.1",
+        "regjsgen": "^0.2.0",
+        "regjsparser": "^0.1.4"
       }
     },
     "regjsgen": {
@@ -4725,7 +4883,7 @@
       "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
       "dev": true,
       "requires": {
-        "jsesc": "0.5.0"
+        "jsesc": "~0.5.0"
       },
       "dependencies": {
         "jsesc": {
@@ -4760,7 +4918,7 @@
       "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
       "dev": true,
       "requires": {
-        "is-finite": "1.0.2"
+        "is-finite": "^1.0.0"
       }
     },
     "require-directory": {
@@ -4770,9 +4928,9 @@
       "dev": true
     },
     "require-main-filename": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
-      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
       "dev": true
     },
     "requires-port": {
@@ -4787,7 +4945,7 @@
       "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
       "dev": true,
       "requires": {
-        "resolve-from": "3.0.0"
+        "resolve-from": "^3.0.0"
       }
     },
     "resolve-dir": {
@@ -4796,8 +4954,21 @@
       "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
       "dev": true,
       "requires": {
-        "expand-tilde": "2.0.2",
-        "global-modules": "1.0.0"
+        "expand-tilde": "^2.0.0",
+        "global-modules": "^1.0.0"
+      },
+      "dependencies": {
+        "global-modules": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+          "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+          "dev": true,
+          "requires": {
+            "global-prefix": "^1.0.1",
+            "is-windows": "^1.0.1",
+            "resolve-dir": "^1.0.0"
+          }
+        }
       }
     },
     "resolve-from": {
@@ -4818,13 +4989,19 @@
       "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
       "dev": true
     },
+    "retry": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+      "dev": true
+    },
     "rimraf": {
       "version": "2.6.3",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
       "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
       "dev": true,
       "requires": {
-        "glob": "7.1.3"
+        "glob": "^7.1.3"
       }
     },
     "ripemd160": {
@@ -4833,8 +5010,8 @@
       "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
       "dev": true,
       "requires": {
-        "hash-base": "3.0.4",
-        "inherits": "2.0.3"
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
       }
     },
     "run-queue": {
@@ -4843,7 +5020,7 @@
       "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
       "dev": true,
       "requires": {
-        "aproba": "1.2.0"
+        "aproba": "^1.1.1"
       }
     },
     "safe-buffer": {
@@ -4858,7 +5035,7 @@
       "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
       "dev": true,
       "requires": {
-        "ret": "0.1.15"
+        "ret": "~0.1.10"
       }
     },
     "safer-buffer": {
@@ -4867,33 +5044,15 @@
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
       "dev": true
     },
-    "sanitize-html": {
-      "version": "1.20.0",
-      "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.20.0.tgz",
-      "integrity": "sha512-BpxXkBoAG+uKCHjoXFmox6kCSYpnulABoGcZ/R3QyY9ndXbIM5S94eOr1IqnzTG8TnbmXaxWoDDzKC5eJv7fEQ==",
-      "dev": true,
-      "requires": {
-        "chalk": "2.4.2",
-        "htmlparser2": "3.10.1",
-        "lodash.clonedeep": "4.5.0",
-        "lodash.escaperegexp": "4.1.2",
-        "lodash.isplainobject": "4.0.6",
-        "lodash.isstring": "4.0.1",
-        "lodash.mergewith": "4.6.1",
-        "postcss": "7.0.14",
-        "srcset": "1.0.0",
-        "xtend": "4.0.1"
-      }
-    },
     "schema-utils": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
       "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
       "dev": true,
       "requires": {
-        "ajv": "6.10.0",
-        "ajv-errors": "1.0.1",
-        "ajv-keywords": "3.4.0"
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
       }
     },
     "select-hose": {
@@ -4903,12 +5062,12 @@
       "dev": true
     },
     "selfsigned": {
-      "version": "1.10.4",
-      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz",
-      "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==",
+      "version": "1.10.7",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
+      "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
       "dev": true,
       "requires": {
-        "node-forge": "0.7.5"
+        "node-forge": "0.9.0"
       }
     },
     "semver": {
@@ -4918,30 +5077,38 @@
       "dev": true
     },
     "send": {
-      "version": "0.16.2",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
-      "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
       "dev": true,
       "requires": {
         "debug": "2.6.9",
-        "depd": "1.1.2",
-        "destroy": "1.0.4",
-        "encodeurl": "1.0.2",
-        "escape-html": "1.0.3",
-        "etag": "1.8.1",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
         "fresh": "0.5.2",
-        "http-errors": "1.6.3",
-        "mime": "1.4.1",
-        "ms": "2.0.0",
-        "on-finished": "2.3.0",
-        "range-parser": "1.2.0",
-        "statuses": "1.4.0"
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "dev": true
+        }
       }
     },
     "serialize-javascript": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz",
-      "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==",
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
+      "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==",
       "dev": true
     },
     "serve-index": {
@@ -4950,25 +5117,45 @@
       "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
       "dev": true,
       "requires": {
-        "accepts": "1.3.5",
+        "accepts": "~1.3.4",
         "batch": "0.6.1",
         "debug": "2.6.9",
-        "escape-html": "1.0.3",
-        "http-errors": "1.6.3",
-        "mime-types": "2.1.22",
-        "parseurl": "1.3.2"
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
+      },
+      "dependencies": {
+        "http-errors": {
+          "version": "1.6.3",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+          "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+          "dev": true,
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.1.0",
+            "statuses": ">= 1.4.0 < 2"
+          }
+        },
+        "setprototypeof": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+          "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+          "dev": true
+        }
       }
     },
     "serve-static": {
-      "version": "1.13.2",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
-      "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
       "dev": true,
       "requires": {
-        "encodeurl": "1.0.2",
-        "escape-html": "1.0.3",
-        "parseurl": "1.3.2",
-        "send": "0.16.2"
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
       }
     },
     "set-blocking": {
@@ -4978,15 +5165,15 @@
       "dev": true
     },
     "set-value": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
-      "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
       "dev": true,
       "requires": {
-        "extend-shallow": "2.0.1",
-        "is-extendable": "0.1.1",
-        "is-plain-object": "2.0.4",
-        "split-string": "3.1.0"
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
       },
       "dependencies": {
         "extend-shallow": {
@@ -4995,7 +5182,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         }
       }
@@ -5007,9 +5194,9 @@
       "dev": true
     },
     "setprototypeof": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
-      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
       "dev": true
     },
     "sha.js": {
@@ -5018,8 +5205,8 @@
       "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "safe-buffer": "5.1.2"
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
       }
     },
     "shebang-command": {
@@ -5028,7 +5215,7 @@
       "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
       "dev": true,
       "requires": {
-        "shebang-regex": "1.0.0"
+        "shebang-regex": "^1.0.0"
       }
     },
     "shebang-regex": {
@@ -5038,9 +5225,9 @@
       "dev": true
     },
     "signal-exit": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
-      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
       "dev": true
     },
     "slash": {
@@ -5055,14 +5242,14 @@
       "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
       "dev": true,
       "requires": {
-        "base": "0.11.2",
-        "debug": "2.6.9",
-        "define-property": "0.2.5",
-        "extend-shallow": "2.0.1",
-        "map-cache": "0.2.2",
-        "source-map": "0.5.7",
-        "source-map-resolve": "0.5.2",
-        "use": "3.1.1"
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
       },
       "dependencies": {
         "define-property": {
@@ -5071,7 +5258,7 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         },
         "extend-shallow": {
@@ -5080,7 +5267,7 @@
           "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
           "dev": true,
           "requires": {
-            "is-extendable": "0.1.1"
+            "is-extendable": "^0.1.0"
           }
         },
         "source-map": {
@@ -5097,9 +5284,9 @@
       "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
       "dev": true,
       "requires": {
-        "define-property": "1.0.0",
-        "isobject": "3.0.1",
-        "snapdragon-util": "3.0.1"
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
       },
       "dependencies": {
         "define-property": {
@@ -5108,7 +5295,7 @@
           "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "1.0.2"
+            "is-descriptor": "^1.0.0"
           }
         },
         "is-accessor-descriptor": {
@@ -5117,7 +5304,7 @@
           "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-data-descriptor": {
@@ -5126,7 +5313,7 @@
           "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
           "dev": true,
           "requires": {
-            "kind-of": "6.0.2"
+            "kind-of": "^6.0.0"
           }
         },
         "is-descriptor": {
@@ -5135,9 +5322,9 @@
           "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
           "dev": true,
           "requires": {
-            "is-accessor-descriptor": "1.0.0",
-            "is-data-descriptor": "1.0.0",
-            "kind-of": "6.0.2"
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
           }
         }
       }
@@ -5148,7 +5335,7 @@
       "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.2.0"
       },
       "dependencies": {
         "kind-of": {
@@ -5157,33 +5344,34 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
     },
     "sockjs": {
-      "version": "0.3.19",
-      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
-      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+      "version": "0.3.20",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz",
+      "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==",
       "dev": true,
       "requires": {
-        "faye-websocket": "0.10.0",
-        "uuid": "3.3.2"
+        "faye-websocket": "^0.10.0",
+        "uuid": "^3.4.0",
+        "websocket-driver": "0.6.5"
       }
     },
     "sockjs-client": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz",
-      "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz",
+      "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==",
       "dev": true,
       "requires": {
-        "debug": "3.2.6",
-        "eventsource": "1.0.7",
-        "faye-websocket": "0.11.1",
-        "inherits": "2.0.3",
-        "json3": "3.3.2",
-        "url-parse": "1.4.4"
+        "debug": "^3.2.5",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "~0.11.1",
+        "inherits": "^2.0.3",
+        "json3": "^3.3.2",
+        "url-parse": "^1.4.3"
       },
       "dependencies": {
         "debug": {
@@ -5192,22 +5380,22 @@
           "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
           "dev": true,
           "requires": {
-            "ms": "2.1.1"
+            "ms": "^2.1.1"
           }
         },
         "faye-websocket": {
-          "version": "0.11.1",
-          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
-          "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
+          "version": "0.11.3",
+          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
+          "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
           "dev": true,
           "requires": {
-            "websocket-driver": "0.7.0"
+            "websocket-driver": ">=0.5.1"
           }
         },
         "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
           "dev": true
         }
       }
@@ -5223,27 +5411,78 @@
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
     },
+    "source-map-explorer": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/source-map-explorer/-/source-map-explorer-2.4.2.tgz",
+      "integrity": "sha512-3ECQLffCFV8QgrTqcmddLkWL4/aQs6ljYfgWCLselo5QtizOfOeUCKnS4rFn7MIrdeZLM6TZrseOtsrWZhWKoQ==",
+      "dev": true,
+      "requires": {
+        "btoa": "^1.2.1",
+        "chalk": "^3.0.0",
+        "convert-source-map": "^1.7.0",
+        "ejs": "^3.0.2",
+        "escape-html": "^1.0.3",
+        "glob": "^7.1.6",
+        "gzip-size": "^5.1.1",
+        "lodash": "^4.17.15",
+        "open": "^7.0.3",
+        "source-map": "^0.7.3",
+        "temp": "^0.9.1",
+        "yargs": "^15.3.1"
+      },
+      "dependencies": {
+        "convert-source-map": {
+          "version": "1.7.0",
+          "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
+          "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "~5.1.1"
+          }
+        },
+        "glob": {
+          "version": "7.1.6",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+          "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "source-map": {
+          "version": "0.7.3",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "dev": true
+        }
+      }
+    },
     "source-map-resolve": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
-      "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
       "dev": true,
       "requires": {
-        "atob": "2.1.2",
-        "decode-uri-component": "0.2.0",
-        "resolve-url": "0.2.1",
-        "source-map-url": "0.4.0",
-        "urix": "0.1.0"
+        "atob": "^2.1.2",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
       }
     },
     "source-map-support": {
-      "version": "0.5.11",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
-      "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
+      "version": "0.5.19",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
       "dev": true,
       "requires": {
-        "buffer-from": "1.1.1",
-        "source-map": "0.6.1"
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
       }
     },
     "source-map-url": {
@@ -5253,16 +5492,16 @@
       "dev": true
     },
     "spdy": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz",
-      "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
+      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
       "dev": true,
       "requires": {
-        "debug": "4.1.1",
-        "handle-thing": "2.0.0",
-        "http-deceiver": "1.2.7",
-        "select-hose": "2.0.0",
-        "spdy-transport": "3.0.0"
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
       },
       "dependencies": {
         "debug": {
@@ -5271,13 +5510,13 @@
           "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
           "dev": true,
           "requires": {
-            "ms": "2.1.1"
+            "ms": "^2.1.1"
           }
         },
         "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
           "dev": true
         }
       }
@@ -5288,12 +5527,12 @@
       "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
       "dev": true,
       "requires": {
-        "debug": "4.1.1",
-        "detect-node": "2.0.4",
-        "hpack.js": "2.1.6",
-        "obuf": "1.1.2",
-        "readable-stream": "3.3.0",
-        "wbuf": "1.7.3"
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
       },
       "dependencies": {
         "debug": {
@@ -5302,14 +5541,25 @@
           "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
           "dev": true,
           "requires": {
-            "ms": "2.1.1"
+            "ms": "^2.1.1"
           }
         },
         "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
           "dev": true
+        },
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
         }
       }
     },
@@ -5319,17 +5569,7 @@
       "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
       "dev": true,
       "requires": {
-        "extend-shallow": "3.0.2"
-      }
-    },
-    "srcset": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz",
-      "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=",
-      "dev": true,
-      "requires": {
-        "array-uniq": "1.0.3",
-        "number-is-nan": "1.0.1"
+        "extend-shallow": "^3.0.0"
       }
     },
     "ssri": {
@@ -5338,7 +5578,7 @@
       "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
       "dev": true,
       "requires": {
-        "figgy-pudding": "3.5.1"
+        "figgy-pudding": "^3.5.1"
       }
     },
     "static-extend": {
@@ -5347,8 +5587,8 @@
       "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
       "dev": true,
       "requires": {
-        "define-property": "0.2.5",
-        "object-copy": "0.1.0"
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
       },
       "dependencies": {
         "define-property": {
@@ -5357,15 +5597,15 @@
           "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
           "dev": true,
           "requires": {
-            "is-descriptor": "0.1.6"
+            "is-descriptor": "^0.1.0"
           }
         }
       }
     },
     "statuses": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
-      "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
       "dev": true
     },
     "stream-browserify": {
@@ -5374,34 +5614,8 @@
       "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.6"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
       }
     },
     "stream-each": {
@@ -5410,8 +5624,8 @@
       "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
       "dev": true,
       "requires": {
-        "end-of-stream": "1.4.1",
-        "stream-shift": "1.0.0"
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
       }
     },
     "stream-http": {
@@ -5420,73 +5634,73 @@
       "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
       "dev": true,
       "requires": {
-        "builtin-status-codes": "3.0.0",
-        "inherits": "2.0.3",
-        "readable-stream": "2.3.6",
-        "to-arraybuffer": "1.0.1",
-        "xtend": "4.0.1"
-      },
-      "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "dev": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
       }
     },
     "stream-shift": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
-      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+      "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
       "dev": true
     },
     "string-width": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+      "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+      "dev": true,
+      "requires": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.0"
+      }
+    },
+    "string.prototype.trimend": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
+      "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
+      }
+    },
+    "string.prototype.trimstart": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
+      "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
       "dev": true,
       "requires": {
-        "is-fullwidth-code-point": "2.0.0",
-        "strip-ansi": "4.0.0"
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
       }
     },
     "string_decoder": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
-      "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
       "dev": true,
       "requires": {
-        "safe-buffer": "5.1.2"
+        "safe-buffer": "~5.1.0"
       }
     },
     "strip-ansi": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-      "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+      "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
       "dev": true,
       "requires": {
-        "ansi-regex": "3.0.0"
+        "ansi-regex": "^5.0.0"
       }
     },
+    "strip-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
+      "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw=="
+    },
     "strip-eof": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
@@ -5494,96 +5708,91 @@
       "dev": true
     },
     "supports-color": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
+      "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
       "dev": true,
       "requires": {
-        "has-flag": "3.0.0"
+        "has-flag": "^4.0.0"
       }
     },
     "tapable": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz",
-      "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
       "dev": true
     },
-    "terser": {
-      "version": "3.17.0",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz",
-      "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==",
+    "temp": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.1.tgz",
+      "integrity": "sha512-WMuOgiua1xb5R56lE0eH6ivpVmg/lq2OHm4+LtT/xtEtPQ+sz6N3bBM6WZ5FvO1lO4IKIOb43qnhoc4qxP5OeA==",
       "dev": true,
       "requires": {
-        "commander": "2.19.0",
-        "source-map": "0.6.1",
-        "source-map-support": "0.5.11"
+        "rimraf": "~2.6.2"
       }
     },
-    "terser-webpack-plugin": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz",
-      "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==",
+    "terser": {
+      "version": "4.8.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+      "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
       "dev": true,
       "requires": {
-        "cacache": "11.3.2",
-        "find-cache-dir": "2.1.0",
-        "schema-utils": "1.0.0",
-        "serialize-javascript": "1.6.1",
-        "source-map": "0.6.1",
-        "terser": "3.17.0",
-        "webpack-sources": "1.3.0",
-        "worker-farm": "1.6.0"
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
       }
     },
-    "through2": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-      "dev": true,
-      "requires": {
-        "readable-stream": "2.3.6",
-        "xtend": "4.0.1"
+    "terser-webpack-plugin": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz",
+      "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==",
+      "dev": true,
+      "requires": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^3.1.0",
+        "source-map": "^0.6.1",
+        "terser": "^4.1.2",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
       },
       "dependencies": {
-        "readable-stream": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
-          "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-          "dev": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "2.0.0",
-            "safe-buffer": "5.1.2",
-            "string_decoder": "1.1.1",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+        "serialize-javascript": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
+          "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
           "dev": true,
           "requires": {
-            "safe-buffer": "5.1.2"
+            "randombytes": "^2.1.0"
           }
         }
       }
     },
+    "through2": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+      "dev": true,
+      "requires": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
     "thunky": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz",
-      "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
       "dev": true
     },
     "timers-browserify": {
-      "version": "2.0.10",
-      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
-      "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+      "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
+      "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
       "dev": true,
       "requires": {
-        "setimmediate": "1.0.5"
+        "setimmediate": "^1.0.4"
       }
     },
     "to-arraybuffer": {
@@ -5604,7 +5813,7 @@
       "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
       "dev": true,
       "requires": {
-        "kind-of": "3.2.2"
+        "kind-of": "^3.0.2"
       },
       "dependencies": {
         "kind-of": {
@@ -5613,7 +5822,7 @@
           "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
           "dev": true,
           "requires": {
-            "is-buffer": "1.1.6"
+            "is-buffer": "^1.1.5"
           }
         }
       }
@@ -5624,10 +5833,10 @@
       "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
       "dev": true,
       "requires": {
-        "define-property": "2.0.2",
-        "extend-shallow": "3.0.2",
-        "regex-not": "1.0.2",
-        "safe-regex": "1.1.0"
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
       }
     },
     "to-regex-range": {
@@ -5636,10 +5845,16 @@
       "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
       "dev": true,
       "requires": {
-        "is-number": "3.0.0",
-        "repeat-string": "1.6.1"
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
       }
     },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+      "dev": true
+    },
     "trim-right": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
@@ -5647,9 +5862,9 @@
       "dev": true
     },
     "tslib": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
-      "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
+      "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
       "dev": true
     },
     "tty-browserify": {
@@ -5659,13 +5874,13 @@
       "dev": true
     },
     "type-is": {
-      "version": "1.6.16",
-      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
-      "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
       "dev": true,
       "requires": {
         "media-typer": "0.3.0",
-        "mime-types": "2.1.22"
+        "mime-types": "~2.1.24"
       }
     },
     "typedarray": {
@@ -5675,69 +5890,58 @@
       "dev": true
     },
     "uglify-js": {
-      "version": "3.5.3",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.3.tgz",
-      "integrity": "sha512-rIQPT2UMDnk4jRX+w4WO84/pebU2jiLsjgIyrCktYgSvx28enOE3iYQMr+BD1rHiitWnDmpu0cY/LfIEpKcjcw==",
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
+      "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
       "dev": true,
       "requires": {
-        "commander": "2.19.0",
-        "source-map": "0.6.1"
+        "commander": "~2.20.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
     "uglifyjs-webpack-plugin": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.1.2.tgz",
-      "integrity": "sha512-G1fJx2uOAAfvdZ77SVCzmFo6mv8uKaHoZBL9Qq/ciC8r6p0ANOL1uY85fIUiyWXKw5RzAaJYZfNSL58Or2hQ0A==",
-      "dev": true,
-      "requires": {
-        "cacache": "11.3.2",
-        "find-cache-dir": "2.1.0",
-        "schema-utils": "1.0.0",
-        "serialize-javascript": "1.6.1",
-        "source-map": "0.6.1",
-        "uglify-js": "3.5.3",
-        "webpack-sources": "1.3.0",
-        "worker-farm": "1.6.0"
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz",
+      "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==",
+      "dev": true,
+      "requires": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^1.7.0",
+        "source-map": "^0.6.1",
+        "uglify-js": "^3.6.0",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
-    "underscore": {
-      "version": "1.9.1",
-      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
-      "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg=="
-    },
     "union-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
-      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
       "dev": true,
       "requires": {
-        "arr-union": "3.1.0",
-        "get-value": "2.0.6",
-        "is-extendable": "0.1.1",
-        "set-value": "0.4.3"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "0.1.1"
-          }
-        },
-        "set-value": {
-          "version": "0.4.3",
-          "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
-          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
-          "dev": true,
-          "requires": {
-            "extend-shallow": "2.0.1",
-            "is-extendable": "0.1.1",
-            "is-plain-object": "2.0.4",
-            "to-object-path": "0.3.0"
-          }
-        }
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
       }
     },
     "unique-filename": {
@@ -5746,16 +5950,16 @@
       "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
       "dev": true,
       "requires": {
-        "unique-slug": "2.0.1"
+        "unique-slug": "^2.0.0"
       }
     },
     "unique-slug": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz",
-      "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
       "dev": true,
       "requires": {
-        "imurmurhash": "0.1.4"
+        "imurmurhash": "^0.1.4"
       }
     },
     "unpipe": {
@@ -5770,8 +5974,8 @@
       "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
       "dev": true,
       "requires": {
-        "has-value": "0.3.1",
-        "isobject": "3.0.1"
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
       },
       "dependencies": {
         "has-value": {
@@ -5780,9 +5984,9 @@
           "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
           "dev": true,
           "requires": {
-            "get-value": "2.0.6",
-            "has-values": "0.1.4",
-            "isobject": "2.1.0"
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
           },
           "dependencies": {
             "isobject": {
@@ -5805,18 +6009,17 @@
       }
     },
     "upath": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
-      "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
       "dev": true
     },
     "uri-js": {
       "version": "4.2.2",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
       "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
-      "dev": true,
       "requires": {
-        "punycode": "2.1.1"
+        "punycode": "^2.1.0"
       }
     },
     "urix": {
@@ -5844,13 +6047,13 @@
       }
     },
     "url-parse": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz",
-      "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==",
+      "version": "1.4.7",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
+      "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
       "dev": true,
       "requires": {
-        "querystringify": "2.1.1",
-        "requires-port": "1.0.0"
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
       }
     },
     "use": {
@@ -5860,10 +6063,9 @@
       "dev": true
     },
     "util": {
-      "version": "0.11.1",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
-      "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
-      "dev": true,
+      "version": "0.10.4",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
       "requires": {
         "inherits": "2.0.3"
       }
@@ -5881,15 +6083,15 @@
       "dev": true
     },
     "uuid": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
-      "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+      "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
       "dev": true
     },
     "v8-compile-cache": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz",
-      "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
+      "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
       "dev": true
     },
     "vary": {
@@ -5899,23 +6101,136 @@
       "dev": true
     },
     "vm-browserify": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
-      "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+      "dev": true
+    },
+    "watchpack": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
+      "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==",
       "dev": true,
       "requires": {
-        "indexof": "0.0.1"
+        "chokidar": "^3.4.1",
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0",
+        "watchpack-chokidar2": "^2.0.0"
       }
     },
-    "watchpack": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
-      "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+    "watchpack-chokidar2": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz",
+      "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==",
       "dev": true,
+      "optional": true,
       "requires": {
-        "chokidar": "2.1.5",
-        "graceful-fs": "4.1.15",
-        "neo-async": "2.6.0"
+        "chokidar": "^2.1.8"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+          "dev": true,
+          "optional": true
+        },
+        "chokidar": {
+          "version": "2.1.8",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.1",
+            "braces": "^2.3.2",
+            "fsevents": "^1.2.7",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.3",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "normalize-path": "^3.0.0",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.2.1",
+            "upath": "^1.1.1"
+          }
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+          "dev": true,
+          "optional": true
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
+          }
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          }
+        }
       }
     },
     "wbuf": {
@@ -5924,116 +6239,287 @@
       "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
       "dev": true,
       "requires": {
-        "minimalistic-assert": "1.0.1"
+        "minimalistic-assert": "^1.0.0"
       }
     },
     "webpack": {
-      "version": "4.29.6",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz",
-      "integrity": "sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw==",
-      "dev": true,
-      "requires": {
-        "@webassemblyjs/ast": "1.8.5",
-        "@webassemblyjs/helper-module-context": "1.8.5",
-        "@webassemblyjs/wasm-edit": "1.8.5",
-        "@webassemblyjs/wasm-parser": "1.8.5",
-        "acorn": "6.1.1",
-        "acorn-dynamic-import": "4.0.0",
-        "ajv": "6.10.0",
-        "ajv-keywords": "3.4.0",
-        "chrome-trace-event": "1.0.0",
-        "enhanced-resolve": "4.1.0",
-        "eslint-scope": "4.0.3",
-        "json-parse-better-errors": "1.0.2",
-        "loader-runner": "2.4.0",
-        "loader-utils": "1.2.3",
-        "memory-fs": "0.4.1",
-        "micromatch": "3.1.10",
-        "mkdirp": "0.5.1",
-        "neo-async": "2.6.0",
-        "node-libs-browser": "2.2.0",
-        "schema-utils": "1.0.0",
-        "tapable": "1.1.1",
-        "terser-webpack-plugin": "1.2.3",
-        "watchpack": "1.6.0",
-        "webpack-sources": "1.3.0"
+      "version": "4.44.0",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.0.tgz",
+      "integrity": "sha512-wAuJxK123sqAw31SpkPiPW3iKHgFUiKvO7E7UZjtdExcsRe3fgav4mvoMM7vvpjLHVoJ6a0Mtp2fzkoA13e0Zw==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/wasm-edit": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "acorn": "^6.4.1",
+        "ajv": "^6.10.2",
+        "ajv-keywords": "^3.4.1",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^4.3.0",
+        "eslint-scope": "^4.0.3",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^2.4.0",
+        "loader-utils": "^1.2.3",
+        "memory-fs": "^0.4.1",
+        "micromatch": "^3.1.10",
+        "mkdirp": "^0.5.3",
+        "neo-async": "^2.6.1",
+        "node-libs-browser": "^2.2.1",
+        "schema-utils": "^1.0.0",
+        "tapable": "^1.1.3",
+        "terser-webpack-plugin": "^1.4.3",
+        "watchpack": "^1.7.4",
+        "webpack-sources": "^1.4.1"
       }
     },
     "webpack-cli": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.0.tgz",
-      "integrity": "sha512-t1M7G4z5FhHKJ92WRKwZ1rtvi7rHc0NZoZRbSkol0YKl4HvcC8+DsmGDmK7MmZxHSAetHagiOsjOB6MmzC2TUw==",
-      "dev": true,
-      "requires": {
-        "chalk": "2.4.2",
-        "cross-spawn": "6.0.5",
-        "enhanced-resolve": "4.1.0",
-        "findup-sync": "2.0.0",
-        "global-modules": "1.0.0",
-        "import-local": "2.0.0",
-        "interpret": "1.2.0",
-        "loader-utils": "1.2.3",
-        "supports-color": "5.5.0",
-        "v8-compile-cache": "2.0.2",
-        "yargs": "12.0.5"
+      "version": "3.3.12",
+      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz",
+      "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "cross-spawn": "^6.0.5",
+        "enhanced-resolve": "^4.1.1",
+        "findup-sync": "^3.0.0",
+        "global-modules": "^2.0.0",
+        "import-local": "^2.0.0",
+        "interpret": "^1.4.0",
+        "loader-utils": "^1.4.0",
+        "supports-color": "^6.1.0",
+        "v8-compile-cache": "^2.1.1",
+        "yargs": "^13.3.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "chalk": {
+          "version": "2.4.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "5.5.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+              "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+              "dev": true,
+              "requires": {
+                "has-flag": "^3.0.0"
+              }
+            }
+          }
+        },
+        "cliui": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+          "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+          "dev": true,
+          "requires": {
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+          "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+          "dev": true,
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+          "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+          "dev": true
+        },
+        "emoji-regex": {
+          "version": "7.0.3",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+          "dev": true
+        },
+        "emojis-list": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+          "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+          "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          }
+        },
+        "yargs": {
+          "version": "13.3.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+          "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "13.1.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
       }
     },
     "webpack-dev-middleware": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.6.1.tgz",
-      "integrity": "sha512-XQmemun8QJexMEvNFbD2BIg4eSKrmSIMrTfnl2nql2Sc6OGAYFyb8rwuYrCjl/IiEYYuyTEiimMscu7EXji/Dw==",
+      "version": "3.7.2",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz",
+      "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==",
       "dev": true,
       "requires": {
-        "memory-fs": "0.4.1",
-        "mime": "2.4.0",
-        "range-parser": "1.2.0",
-        "webpack-log": "2.0.0"
+        "memory-fs": "^0.4.1",
+        "mime": "^2.4.4",
+        "mkdirp": "^0.5.1",
+        "range-parser": "^1.2.1",
+        "webpack-log": "^2.0.0"
       },
       "dependencies": {
         "mime": {
-          "version": "2.4.0",
-          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
-          "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
+          "version": "2.4.6",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
+          "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
           "dev": true
         }
       }
     },
     "webpack-dev-server": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz",
-      "integrity": "sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw==",
+      "version": "3.11.0",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz",
+      "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==",
       "dev": true,
       "requires": {
         "ansi-html": "0.0.7",
-        "bonjour": "3.5.0",
-        "chokidar": "2.1.5",
-        "compression": "1.7.4",
-        "connect-history-api-fallback": "1.6.0",
-        "debug": "4.1.1",
-        "del": "3.0.0",
-        "express": "4.16.4",
-        "html-entities": "1.2.1",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.8",
+        "compression": "^1.7.4",
+        "connect-history-api-fallback": "^1.6.0",
+        "debug": "^4.1.1",
+        "del": "^4.1.1",
+        "express": "^4.17.1",
+        "html-entities": "^1.3.1",
         "http-proxy-middleware": "0.19.1",
-        "import-local": "2.0.0",
-        "internal-ip": "4.2.0",
-        "ip": "1.1.5",
-        "killable": "1.0.1",
-        "loglevel": "1.6.1",
-        "opn": "5.5.0",
-        "portfinder": "1.0.20",
-        "schema-utils": "1.0.0",
-        "selfsigned": "1.10.4",
-        "semver": "5.7.0",
-        "serve-index": "1.9.1",
-        "sockjs": "0.3.19",
-        "sockjs-client": "1.3.0",
-        "spdy": "4.0.0",
-        "strip-ansi": "3.0.1",
-        "supports-color": "6.1.0",
-        "url": "0.11.0",
-        "webpack-dev-middleware": "3.6.1",
-        "webpack-log": "2.0.0",
-        "yargs": "12.0.2"
+        "import-local": "^2.0.0",
+        "internal-ip": "^4.3.0",
+        "ip": "^1.1.5",
+        "is-absolute-url": "^3.0.3",
+        "killable": "^1.0.1",
+        "loglevel": "^1.6.8",
+        "opn": "^5.5.0",
+        "p-retry": "^3.0.1",
+        "portfinder": "^1.0.26",
+        "schema-utils": "^1.0.0",
+        "selfsigned": "^1.10.7",
+        "semver": "^6.3.0",
+        "serve-index": "^1.9.1",
+        "sockjs": "0.3.20",
+        "sockjs-client": "1.4.0",
+        "spdy": "^4.0.2",
+        "strip-ansi": "^3.0.1",
+        "supports-color": "^6.1.0",
+        "url": "^0.11.0",
+        "webpack-dev-middleware": "^3.7.2",
+        "webpack-log": "^2.0.0",
+        "ws": "^6.2.1",
+        "yargs": "^13.3.2"
       },
       "dependencies": {
         "ansi-regex": {
@@ -6042,10 +6528,103 @@
           "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
           "dev": true
         },
-        "camelcase": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
-          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^1.9.0"
+          }
+        },
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "dev": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "dev": true,
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+          "dev": true
+        },
+        "chokidar": {
+          "version": "2.1.8",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+          "dev": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.1",
+            "braces": "^2.3.2",
+            "fsevents": "^1.2.7",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.3",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "normalize-path": "^3.0.0",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.2.1",
+            "upath": "^1.1.1"
+          }
+        },
+        "cliui": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+          "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+          "dev": true,
+          "requires": {
+            "string-width": "^3.1.0",
+            "strip-ansi": "^5.2.0",
+            "wrap-ansi": "^5.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "color-convert": {
+          "version": "1.9.3",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+          "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+          "dev": true,
+          "requires": {
+            "color-name": "1.1.3"
+          }
+        },
+        "color-name": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+          "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
           "dev": true
         },
         "debug": {
@@ -6054,31 +6633,122 @@
           "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
           "dev": true,
           "requires": {
-            "ms": "2.1.1"
+            "ms": "^2.1.1"
           }
         },
-        "decamelize": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz",
-          "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==",
+        "emoji-regex": {
+          "version": "7.0.3",
+          "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+          "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+          "dev": true
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+          "dev": true,
+          "optional": true
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
           "dev": true,
           "requires": {
-            "xregexp": "4.0.0"
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "3.1.0",
+              "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+              "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+              "dev": true,
+              "requires": {
+                "is-extglob": "^2.1.0"
+              }
+            }
           }
         },
+        "has-flag": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+          "dev": true
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "dev": true,
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
         "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
           "dev": true
         },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
         "strip-ansi": {
           "version": "3.0.1",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
           "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
           "dev": true,
           "requires": {
-            "ansi-regex": "2.1.1"
+            "ansi-regex": "^2.0.0"
           }
         },
         "supports-color": {
@@ -6087,36 +6757,63 @@
           "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
           "dev": true,
           "requires": {
-            "has-flag": "3.0.0"
+            "has-flag": "^3.0.0"
+          }
+        },
+        "wrap-ansi": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+          "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "string-width": "^3.0.0",
+            "strip-ansi": "^5.0.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
           }
         },
         "yargs": {
-          "version": "12.0.2",
-          "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
-          "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==",
+          "version": "13.3.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+          "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
           "dev": true,
           "requires": {
-            "cliui": "4.1.0",
-            "decamelize": "2.0.0",
-            "find-up": "3.0.0",
-            "get-caller-file": "1.0.3",
-            "os-locale": "3.1.0",
-            "require-directory": "2.1.1",
-            "require-main-filename": "1.0.1",
-            "set-blocking": "2.0.0",
-            "string-width": "2.1.1",
-            "which-module": "2.0.0",
-            "y18n": "4.0.0",
-            "yargs-parser": "10.1.0"
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
           }
         },
         "yargs-parser": {
-          "version": "10.1.0",
-          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz",
-          "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==",
+          "version": "13.1.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
           "dev": true,
           "requires": {
-            "camelcase": "4.1.0"
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
           }
         }
       }
@@ -6127,34 +6824,41 @@
       "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
       "dev": true,
       "requires": {
-        "ansi-colors": "3.2.4",
-        "uuid": "3.3.2"
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
       }
     },
     "webpack-sources": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz",
-      "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==",
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.1.tgz",
+      "integrity": "sha512-XSz38193PTo/1csJabKaV4b53uRVotlMgqJXm3s3eje0Bu6gQTxYDqpD38CmQfDBA+gN+QqaGjasuC8I/7eW3Q==",
       "dev": true,
       "requires": {
-        "source-list-map": "2.0.1",
-        "source-map": "0.6.1"
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
       }
     },
     "websocket-driver": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
-      "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+      "version": "0.6.5",
+      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
+      "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
       "dev": true,
       "requires": {
-        "http-parser-js": "0.5.0",
-        "websocket-extensions": "0.1.3"
+        "websocket-extensions": ">=0.1.1"
       }
     },
     "websocket-extensions": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
-      "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
       "dev": true
     },
     "which": {
@@ -6163,7 +6867,7 @@
       "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
       "dev": true,
       "requires": {
-        "isexe": "2.0.0"
+        "isexe": "^2.0.0"
       }
     },
     "which-module": {
@@ -6173,59 +6877,23 @@
       "dev": true
     },
     "worker-farm": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
-      "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+      "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
       "dev": true,
       "requires": {
-        "errno": "0.1.7"
+        "errno": "~0.1.7"
       }
     },
     "wrap-ansi": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
-      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
       "dev": true,
       "requires": {
-        "string-width": "1.0.2",
-        "strip-ansi": "3.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
-          "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
-          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-          "dev": true,
-          "requires": {
-            "number-is-nan": "1.0.1"
-          }
-        },
-        "string-width": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
-          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-          "dev": true,
-          "requires": {
-            "code-point-at": "1.1.0",
-            "is-fullwidth-code-point": "1.0.0",
-            "strip-ansi": "3.0.1"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
-          "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "2.1.1"
-          }
-        }
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
       }
     },
     "wrappy": {
@@ -6234,58 +6902,96 @@
       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
       "dev": true
     },
-    "xregexp": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",
-      "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==",
-      "dev": true
+    "ws": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+      "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+      "dev": true,
+      "requires": {
+        "async-limiter": "~1.0.0"
+      }
     },
     "xtend": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
-      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
       "dev": true
     },
     "y18n": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
-      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
+      "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
       "dev": true
     },
     "yallist": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
-      "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
       "dev": true
     },
     "yargs": {
-      "version": "12.0.5",
-      "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
-      "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
-      "dev": true,
-      "requires": {
-        "cliui": "4.1.0",
-        "decamelize": "1.2.0",
-        "find-up": "3.0.0",
-        "get-caller-file": "1.0.3",
-        "os-locale": "3.1.0",
-        "require-directory": "2.1.1",
-        "require-main-filename": "1.0.1",
-        "set-blocking": "2.0.0",
-        "string-width": "2.1.1",
-        "which-module": "2.0.0",
-        "y18n": "4.0.0",
-        "yargs-parser": "11.1.1"
+      "version": "15.4.1",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "dev": true,
+      "requires": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+          "dev": true
+        }
       }
     },
     "yargs-parser": {
-      "version": "11.1.1",
-      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
-      "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
+      "version": "18.1.3",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
       "dev": true,
       "requires": {
-        "camelcase": "5.3.0",
-        "decamelize": "1.2.0"
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
       }
     }
   }
diff --git a/package.json b/package.json
index cf31fe1..f9035c4 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,11 @@
 {
   "name": "phaser-ui-comps",
-  "version": "0.1.2",
+  "version": "1.1.2",
   "description": "Phaser 3 UI Components Framework and JSFL builder for Adobe Animate",
   "main": "src/phasercomps.js",
   "scripts": {
-    "build": "webpack && webpack --config webpack-with-underscore.config.js"
+    "build": "webpack",
+    "analyze": "source-map-explorer 'dist/*.js'"
   },
   "repository": {
     "type": "git",
@@ -37,14 +38,13 @@
     "babel-plugin-transform-flow-strip-types": "^6.22.0",
     "babel-polyfill": "^6.26.0",
     "babel-preset-env": "^1.7.0",
-    "uglifyjs-webpack-plugin": "^2.1.2",
-    "webpack": "^4.29.6",
-    "webpack-cli": "^3.3.0",
-    "webpack-dev-server": "^3.2.1"
-  },
-  "dependencies": {
-    "phaser": "^3.16.2",
-    "underscore": "^1.9.1"
+    "source-map-explorer": "^2.4.2",
+    "uglifyjs-webpack-plugin": "^2.2.0",
+    "webpack": "^4.44.0",
+    "webpack-cli": "^3.3.12",
+    "webpack-dev-server": "^3.11.0",
+    "phaser": "^3.21.0"
   },
+  "dependencies": {},
   "deprecated": false
 }
diff --git a/src/clip/ComponentClip.js b/src/clip/ComponentClip.js
index 1bd26ad..ebc982a 100644
--- a/src/clip/ComponentClip.js
+++ b/src/clip/ComponentClip.js
@@ -1,5 +1,4 @@
 import Phaser from "phaser";
-import _ from "underscore";
 
 const TYPE_IMAGE = "image";
 const TYPE_COMPONENT = "component";
@@ -58,82 +57,24 @@ const TYPE_ZONE = "zone";
  * @class ComponentClip
  * @memberOf PhaserComps
  * @classdesc
- * Component clip is a group of Phaser GameObjects and child ComponentClips.
+ * @extends Phaser.GameObjects.Container
+ * Component clip is Phaser Container instance.
  * Builds itself with provided jsfl-generated config object.
  *
- * The root clip, built with provided config, keeps array of built components, images and other stuff inside.
- * In some cases it behaves like a group, but it's not really.
- * All child ComponentClips, created inside, are settled in Phaser Containers, but the root is not.
- * That was done firstly for the masks to work property. So if you need some masks in your component,
- * they should be only in the root, because containers don't support masking inside.
- * But the root mask can mask any child containers. Currently only shape masks are supported,
- * see docs for more info.
- *
  * Clip supports state switching. Best if controlled by
  * [UIComponentPrototype]{@link PhaserComps.UIComponents.UIComponentPrototype} instance
  *
- * *Note! do not change `x`, `y`, `scaleX`, `scaleY`, `angle`, `alpha`, `visible` properties of clip instance.*
- *
- * *If you need to move, scale, rotate, change alpha and visibility of the clip group, use*
- * *`groupX`, `groupY`, `groupScaleX`, `groupScaleY`, `groupAngle`, `groupAlpha`, `groupVisible` properties*
- *
- * @property {Number} [groupX=0] clip group position x
- * @property {Number} [groupY=0] clip group position x
- * @property {Number} [groupAlpha=1] clip group alpha
- * @property {Number} [groupScaleX=1] clip group scaleX
- * @property {Number} [groupScaleY=1] clip group scaleY
- * @property {Number} [groupAngle=0] clip group angle in degrees.
- * Note, that every group child will be rotated around its own origin
- * @property {Boolean} [groupVisible=true] clip group visibility flag
- *
- *
- * @property {Number} x **only for private usage**, if you want to move clip manually, use `groupX`
- * @property {Number} y **only for private usage**, if you want to move clip manually, use `groupY`
- * @property {Number} scaleX **only for private usage**, if you want to scale clip manually, use `groupScaleX`
- * @property {Number} scaleY **only for private usage**, if you want to scale clip manually, use `groupScaleY`
- * @property {Number} alpha **only for private usage**, if you want to change clip alpha manually, use `groupAlpha`.
- * @property {Number} angle **only for private usage**, if you want to rotate clip manually, use `groupAngle`.
- * @property {Boolean} visible **only for private usage**, if you want to switch clip visibility manually,
- * use `groupVisible`
-
  * @see PhaserComps.UIComponents.UIComponentPrototype
  *
  * @param {Phaser.Scene} scene Phaser scene to create component at
  * @param {ComponentConfig} config jsfl-generated config object
- * @param {Array<String>} textures Array of texture names, where component should find its texture frames
- * @param {Boolean} [isChildComponent = false] used internally to build child component clips recursively
+ * @param {Array<String>|String} textures texure name or Array of texture names, where component should find its texture frames
  */
-export default class ComponentClip {
-	constructor(scene, config, textures, isChildComponent) {
-		this.scene = scene;
-
-		this.childrenList = [];
-
-		this._groupConfig = {
-			x: 0,
-			y: 0,
-			scaleX: 1,
-			scaleY: 1,
-			angle: 0,
-			alpha: 1,
-			visible: true
-		};
-
-		this._x = 0;
-		this._y = 0;
-		this._scaleX = 1;
-		this._scaleY = 1;
-		this._angle = 0;
-		this._angle = 0;
-		this._alpha = 1;
-		this._visible = true;
-
-
-		this._isChildComponent = isChildComponent || false;
-		if (this._isChildComponent) {
-			this._container = scene.add.container(0, 0);
-			this.childrenList.push(this._container);
-		}
+export default class ComponentClip extends Phaser.GameObjects.Container {
+	constructor(scene, config, textures) {
+		super(scene, 0, 0);
+		this.childComponentClips = [];
+
 		/**
 		 * component config object
 		 * @type {Object}
@@ -150,7 +91,7 @@ export default class ComponentClip {
 		 * list of texture names to use in this component
 		 * @type {Array<String>}
 		 * */
-		this._textures = textures;
+		this._textures = Array.isArray(textures) ? textures : [textures];
 
 		/**
 		 * Texture frames to texture names map
@@ -170,169 +111,6 @@ export default class ComponentClip {
 		this._parseConfig();
 	}
 
-	get groupX() {
-		return this._groupConfig.x;
-	}
-
-	set groupX(val) {
-		if (this._groupConfig.x === val) {
-			return;
-		}
-		let delta = val - this._groupConfig.x;
-		this._groupConfig.x = val;
-		this.x += delta;
-	}
-
-	get groupY() {
-		return this._groupConfig.y;
-	}
-
-	set groupY(val) {
-		if (this._groupConfig.y === val) {
-			return;
-		}
-		let delta = val - this._groupConfig.y;
-		this._groupConfig.y = val;
-		this.y += delta;
-	}
-
-	get groupScaleX() {
-		return this._groupConfig.scaleX;
-	}
-
-	set groupScaleX(val) {
-		if (this._groupConfig.scaleX === val) {
-			return;
-		}
-		let delta = val / this._groupConfig.scaleX;
-		this._groupConfig.scaleX = val;
-		this.scaleX *= delta;
-	}
-
-	get groupScaleY() {
-		return this._groupConfig.scaleY;
-	}
-
-	set groupScaleY(val) {
-		if (this._groupConfig.scaleY === val) {
-			return;
-		}
-		let delta = val / this._groupConfig.scaleY;
-		this._groupConfig.scaleY = val;
-		this.scaleY *= delta;
-	}
-
-	get groupAlpha() {
-		return this._groupConfig.alpha;
-	}
-
-	set groupAlpha(val) {
-		if (this._groupConfig.alpha === val) {
-			return;
-		}
-		let delta = val / this._groupConfig.alpha;
-		this._groupConfig.alpha = val;
-		this.alpha *= delta;
-	}
-
-	get groupVisible() {
-		return this._groupConfig.visible;
-	}
-
-	set groupVisible(val) {
-		if (this._groupConfig.visible === val) {
-			return;
-		}
-		this._groupConfig.visible = val;
-		this._stateManager.setupState();
-	}
-
-
-	get x() {
-		return this._x;
-	}
-
-	set x(val) {
-		let delta = val - this.x;
-		Phaser.Actions.IncX(this.childrenList, delta);
-		this._x = val;
-	}
-
-	get y() {
-		return this._y;
-	}
-
-	set y(val) {
-		let delta = val - this.y;
-		Phaser.Actions.IncY(this.childrenList, delta);
-		this._y = val;
-	}
-
-	get visible() {
-		return this._visible;
-	}
-
-	set visible(val) {
-		if (this._visible === val) {
-			return;
-		}
-		this._visible = val;
-		Phaser.Actions.SetVisible(this.childrenList, val);
-	}
-
-	get alpha() {
-		return this._alpha;
-	}
-
-	set alpha(val) {
-		if (this._alpha === val) {
-			return;
-		}
-		this._alpha = val;
-		Phaser.Actions.SetAlpha(this.childrenList, val);
-	}
-
-	get scaleX() {
-		return this._scaleX;
-	}
-
-	set scaleX(val) {
-		if (this._scaleX === val) {
-			return;
-		}
-		this._scaleX = val;
-		Phaser.Actions.SetScaleX(this.childrenList, val);
-	}
-
-	get scaleY() {
-		return this._scaleY;
-	}
-
-	set scaleY(val) {
-		if (this._scaleY === val) {
-			return;
-		}
-		this._scaleY = val;
-		Phaser.Actions.SetScaleY(this.childrenList, val);
-	}
-
-	get angle() {
-		return this._angle;
-	}
-
-	set angle(val) {
-		if (this._angle === val) {
-			return;
-		}
-		Phaser.Actions.PropertyValueSet(this.childrenList, "angle", val);
-	}
-
-	setMask(mask) {
-		_.each(this.childrenList, (child) => {
-			child.setMask(mask);
-		}, this);
-	}
-
 	/**
 	 * @public
 	 * @method PhaserComps.ComponentClip#getStateConfig
@@ -370,7 +148,7 @@ export default class ComponentClip {
 
 	/**
 	 * @public
-	 * @method PhaserComps.ComponentClip#applyChildParamsapplyChildParams
+	 * @method PhaserComps.ComponentClip#applyChildParams
 	 * @description
 	 * Apply child params
 	 * @param {String} childId
@@ -380,7 +158,7 @@ export default class ComponentClip {
 		if (!this._childrenById.hasOwnProperty(childId)) {
 			return;
 		}
-		ComponentClip._setupCommonParams(this._childrenById[childId], params, this._groupConfig);
+		ComponentClip._setupCommonParams(this._childrenById[childId], params);
 	}
 
 	/**
@@ -410,11 +188,13 @@ export default class ComponentClip {
 	 * @public
 	 * @method PhaserComps.ComponentClip#destroy
 	 * @description destroy all child GameObjects and child clips recursively
+	 * @param {Boolean} [fromScene=false]
 	 */
-	destroy() {
-		_.each(this.childrenList, child => {
-			child.destroy();
-		}, this);
+	destroy(fromScene) {
+		for (let child of this.childComponentClips) {
+			child.destroy(fromScene);
+		}
+		super.destroy(fromScene)
 	}
 
 	/**
@@ -427,16 +207,16 @@ export default class ComponentClip {
 	 * @ignore
 	 */
 	_createImagesMap(textures) {
-		_.each(textures, (textureName) => {
+		for (let textureName of textures) {
 			const texture = this.scene.textures.get(textureName);
 			if (!texture) {
 				return;
 			}
 			const frames = texture.getFrameNames();
-			_.each(frames, (frameName) => {
+			for (let frameName of frames) {
 				this.imageFramesMap[frameName] = textureName;
-			}, this);
-		}, this);
+			}
+		}
 	}
 
 	/**
@@ -449,9 +229,9 @@ export default class ComponentClip {
 	_parseConfig() {
 		//ComponentView._setupCommonParams(this, this._config);
 		if (this._config.hasOwnProperty("children")) {
-			_.each(this._config.children, (childConfig) => {
+			for (let childConfig of this._config.children) {
 				this._createChildFromConfig(childConfig);
-			}, this);
+			}
 		}
 	}
 
@@ -464,9 +244,9 @@ export default class ComponentClip {
 	 */
 	_createChildFromConfig(config) {
 		let child = null;
-		let childView = null;
 		let childId = config.childId;
 		let childKey = config.key;
+		let addAsChild = true;
 		if (config.type === TYPE_IMAGE) {
 			child = this._createImageFromConfig(config);
 		} else if (config.type === TYPE_TEXT) {
@@ -474,35 +254,30 @@ export default class ComponentClip {
 		} else if (config.type === TYPE_TILE_SPRITE) {
 			child = this._createTileSpriteFromConfig(config);
 		} else if (config.type === TYPE_COMPONENT) {
-			child = new ComponentClip(this.scene, config, this._textures, true);
+			child = new ComponentClip(this.scene, config, this._textures);
 			ComponentClip._setupCommonParams(child, config);
-			childView = child._container;
 		} else if (config.type === TYPE_ZONE) {
 			child = this._createHitZoneFromConfig(config);
 		} else if (config.type === TYPE_POLYGON) {
 			child = this._createPolygonFromConfig(config);
+			if (config.hasOwnProperty("masking")) {
+				let mask = child.createGeometryMask();
+				for (let maskedChildId of config.masking) {
+					let maskedChild = this._childrenById[maskedChildId];
+					maskedChild.setMask(mask);
+				}
+				addAsChild = false;
+			}
 		}
 		if (child === null) {
 			//console.warn("unknown component type", config.type, config);
 			return;
 		}
-		if (childView === null) {
-			childView = child;
-		}
 		//ComponentView._setupCommonParams(child, config);
 		this._childrenById[childId] = child;
-		if (config.hasOwnProperty("masking")) {
-			// TODO check if the shape
-			let mask = child.createGeometryMask();
-			_.each(config.masking, (maskedChildId) => {
-				let maskedChild = this._childrenById[maskedChildId];
-				maskedChild.setMask(mask);
-			}, this);
-		}
-		if (this._isChildComponent) {
-			this._container.add(childView);
-		} else {
-			this.childrenList.push(child);
+		this.childComponentClips.push(child);
+		if (addAsChild) {
+			this.add(child);
 		}
 		this._stateManager.addComponent(child, childId, childKey);
 	}
@@ -615,24 +390,15 @@ export default class ComponentClip {
 	 * @description setup common game object params from jsfl-generated config
 	 * @param {*} component
 	 * @param {Object} config
-	 * @param {Object} [groupConfig]
 	 * @ignore
 	 */
-	static _setupCommonParams(component, config, groupConfig) {
+	static _setupCommonParams(component, config) {
 		let x = config.x || 0;
 		let y = config.y || 0;
 		let scaleX = config.scaleX || 1;
 		let scaleY = config.scaleY || 1;
 		let angle = config.angle || 0;
 		let alpha = config.hasOwnProperty("alpha") ? config.alpha : 1;
-		if (groupConfig) {
-			x += groupConfig.x;
-			y += groupConfig.y;
-			scaleX *= groupConfig.scaleX;
-			scaleY *= groupConfig.scaleY;
-			angle += groupConfig.angle;
-			alpha *= groupConfig.alpha;
-		}
 		component.x = x;
 		component.y = y;
 		component.scaleX = scaleX;
@@ -740,14 +506,20 @@ class StateManager {
 		this._componentKeys = {};
 
 		this._residentComponentsByKey = {};
-		let idsArrays = [];
+		let idsArray = [];
 		for (let stateId in config.states) {
 			this.stateIds.push(stateId);
 			let state = new State(config.states[stateId]);
 			this._states[stateId] = state;
-			idsArrays.push(state.componentIds);
+			idsArray.push(...state.componentIds);
+		}
+		const uniq = []
+		for (let id of idsArray) {
+			if (!uniq.includes(id)) {
+				uniq.push(id);
+			}
 		}
-		this._dynamicChildrenIds = _.uniq(_.flatten(idsArrays));
+		this._dynamicChildrenIds = uniq;
 	}
 
 	/**
@@ -772,7 +544,8 @@ class StateManager {
 	 * @param {String} [childKey] child key from component config
 	 */
 	addComponent(component, childId, childKey) {
-		if (_.indexOf(this._dynamicChildrenIds, childId) === -1) {
+
+		if (!this._dynamicChildrenIds.includes(childId)) {
 			if (typeof childKey !== "undefined") {
 				this._residentComponentsByKey[childKey] = component;
 			}
@@ -831,16 +604,14 @@ class StateManager {
 	 */
 	setupState() {
 		let idsToShow = this._currentState.componentIds;
-		let idsToHide = _.difference(this._dynamicChildrenIds, idsToShow);
-
-		_.each(idsToHide, (id) => {
-			this._components[id].visible = false;
-		}, this);
-
-		_.each(idsToShow, (id) => {
+		for (let id of this._dynamicChildrenIds) {
 			let component = this._components[id];
-			component.visible = this._clip._groupConfig.visible; // && true;
-			ComponentClip._setupCommonParams(component, this._currentState.config[id], this._clip._groupConfig);
-		}, this);
+			if (idsToShow.includes(id)) {
+				component.visible = true;
+				ComponentClip._setupCommonParams(component, this._currentState.config[id]);
+			} else {
+				component.visible = false;
+			}
+		}
 	}
 }
\ No newline at end of file
diff --git a/src/components/UIButton.js b/src/components/UIButton.js
index aaf899c..510fbb2 100644
--- a/src/components/UIButton.js
+++ b/src/components/UIButton.js
@@ -1,7 +1,8 @@
 import UIComponentPrototype from "./UIComponentPrototype";
+import UIManager from "../manager/UIManager";
+import Phaser from "phaser";
 
 const HIT_ZONE = "HIT_ZONE";
-
 const LABEL = "label";
 
 const _STATE_UP = "up";
@@ -43,6 +44,11 @@ export default class UIButton extends UIComponentPrototype {
 		this._enable = true;
 		this._isPressed = false;
 		this._isOver = false;
+		/**
+		 * @type {Phaser.GameObjects.Zone}
+		 * @private
+		 */
+		this._hitZone = null;
 		if (labelText) {
 			this.label = labelText;
 		}
@@ -95,6 +101,7 @@ export default class UIButton extends UIComponentPrototype {
 		zone.on("pointerup", this._onPointerUp, this);
 		zone.on("pointerover", this._onPointerOver, this);
 		zone.on("pointerout", this._onPointerOut, this);
+		this._hitZone = zone;
 	}
 
 	/**
@@ -104,10 +111,19 @@ export default class UIButton extends UIComponentPrototype {
 	 */
 	_removeInteractive(zone) {
 		zone.disableInteractive();
-		zone.removeListener("pointerdown", this._onPointerDown, this);
-		zone.removeListener("pointerup", this._onPointerUp, this);
-		zone.removeListener("pointerover", this._onPointerOver, this);
-		zone.removeListener("pointerout", this._onPointerOut, this);
+		zone.removeListener(Phaser.Input.Events.GAMEOBJECT_POINTER_DOWN, this._onPointerDown, this);
+		zone.removeListener(Phaser.Input.Events.GAMEOBJECT_POINTER_UP, this._onPointerUp, this);
+		zone.removeListener(Phaser.Input.Events.GAMEOBJECT_POINTER_OVER, this._onPointerOver, this);
+		zone.removeListener(Phaser.Input.Events.GAMEOBJECT_POINTER_OUT, this._onPointerOut, this);
+		this._hitZone = null;
+	}
+
+	get lockClipBounds() {
+		return this._hitZone ? this._hitZone.getBounds() : null;
+	}
+
+	get lockClip() {
+		return this._hitZone;
 	}
 
 	/**
@@ -186,21 +202,25 @@ export default class UIButton extends UIComponentPrototype {
 	 * @method UIButton#_onPointerDown
 	 * @protected
 	 */
-	_onPointerDown() {
+	_onPointerDown(pointer, localX, localY, event) {
 		this._isPressed = true;
 		this.doState();
+		event.stopPropagation();
 	}
 
 	/**
 	 * @method UIButton#_onPointerUp
 	 * @protected
 	 */
-	_onPointerUp() {
+	_onPointerUp(pointer, localX, localY, event) {
 		let isClicked = this._isPressed && this._isOver;
 		this._isPressed = false;
 		this.doState();
 		if (isClicked) {
-			this._onClick();
+			event.stopPropagation();
+			if (UIManager.check(this.lockId)) {
+				this._onClick();
+			}
 		}
 	}
 
@@ -209,13 +229,13 @@ export default class UIButton extends UIComponentPrototype {
 	 * @protected
 	 * @inheritDoc
 	 */
-	destroy() {
+	destroy(fromScene) {
 		if (this._clip) {
 			let zone = this._clip.getChildClip(HIT_ZONE);
 			if (zone) {
 				this._removeInteractive(zone);
 			}
 		}
-		super.destroy();
+		super.destroy(fromScene);
 	}
 }
\ No newline at end of file
diff --git a/src/components/UIButtonDraggable.js b/src/components/UIButtonDraggable.js
index 8cefad2..fa2a1a2 100644
--- a/src/components/UIButtonDraggable.js
+++ b/src/components/UIButtonDraggable.js
@@ -1,5 +1,5 @@
 import UIButton from "./UIButton";
-
+import UIManager from "../manager/UIManager";
 const _EVENT_DRAG = "event_drag";
 
 /**
@@ -117,6 +117,9 @@ export default class UIButtonDraggable extends UIButton {
 	 * @protected
 	 */
 	_onDrag(pointer, gameObject, dragX, dragY) {
+		if (!UIManager.check(this.lockId)){
+			return;
+		}
 		if (!this._dragZone	|| this._dragZone !== gameObject || this.clip) {
 			return;
 		}
diff --git a/src/components/UIComponentPrototype.js b/src/components/UIComponentPrototype.js
index 2df0004..126dff7 100644
--- a/src/components/UIComponentPrototype.js
+++ b/src/components/UIComponentPrototype.js
@@ -1,4 +1,5 @@
 import Phaser from "phaser";
+import PhaserComps from "../phasercomps";
 
 const _EVENT_STATE = "event_state";
 
@@ -16,6 +17,7 @@ const _EVENT_STATE = "event_state";
  * at current state or at all, nothing bad happens.*
  * @inheritDoc
  * @extends Phaser.Events.EventEmitter
+ * @property {String} lockId Used by UIManager, see {@link PhaserComps.UIManager}
  * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside
  * @param {String} [key] key to find clip inside parent
  */
@@ -23,9 +25,18 @@ export default class UIComponentPrototype extends Phaser.Events.EventEmitter {
 
 	static get EVENT_STATE() { return _EVENT_STATE; }
 
+	/**
+	 * @param {PhaserComps.UIComponents.UIComponentPrototype} parent
+	 * @param {String} key
+	 */
 	constructor(parent, key) {
 		super();
 
+		/**
+		 * @type {String}
+		 */
+		this._lockId = null;
+
 		/**
 		 *
 		 * @type {UIComponentPrototype}
@@ -83,6 +94,33 @@ export default class UIComponentPrototype extends Phaser.Events.EventEmitter {
 		this._clipProcess();
 	}
 
+	/** @return {String} */
+	get lockId() {
+		return this._lockId;
+	}
+
+	/**
+	 * @return {Phaser.Geom.Rectangle}
+	 */
+	get lockClipBounds() { return null; } // override
+
+	/** @return {Phaser.GameObjects.GameObject|*} */
+	get lockClip() { return null; } // override
+
+	/** @param {string} value */
+	set lockId(value) {
+		if (this._lockId === value) {
+			return;
+		}
+		if (this._lockId) {
+			PhaserComps.UIManager.unregister(this);
+		}
+		this._lockId = value;
+		if (this._lockId) {
+			PhaserComps.UIManager.register(this);
+		}
+	}
+
 	/**
 	 * Override this, if you want to do something, when new clip removed,
 	 * @method PhaserComps.UIComponents.UIComponentPrototype#onClipAppend
@@ -170,14 +208,16 @@ export default class UIComponentPrototype extends Phaser.Events.EventEmitter {
 	 * Destroy ComponentPrototype and clip, if exists
 	 * @method PhaserComps.UIComponents.UIComponentPrototype#destroy
 	 * @protected
+	 * @param {Boolean} [fromScene=false]
 	 */
-	destroy() {
+	destroy(fromScene) {
 		if (this._parent){
 			this._parent.removeListener(_EVENT_STATE, this._onEventState);
 		}
 		if (this._clip) {
-			this._clip.destroy();
+			this._clip.destroy(fromScene);
 		}
+		super.destroy();
 	}
 
 	/**
diff --git a/src/components/UIComponents.js b/src/components/UIComponents.js
index 37c3f12..208a2c8 100644
--- a/src/components/UIComponents.js
+++ b/src/components/UIComponents.js
@@ -7,6 +7,8 @@ import UIScrollBar from "./UIScrollBar";
 import UIScrollPanel from "./UIScrollPanel";
 import UIProgressBar from "./UIProgressBar";
 import UIContainer from "./UIContainer";
+import UIList from "./UIList";
+import UIListBaseItem from "./UIListBaseItem";
 
 /**
  * @namespace PhaserComps.UIComponents
@@ -21,7 +23,9 @@ const UIComponents = {
 	UIScrollBar: UIScrollBar,
 	UIScrollPanel: UIScrollPanel,
 	UIProgressBar: UIProgressBar,
-	UIContainer: UIContainer
+	UIContainer: UIContainer,
+	UIList: UIList,
+	UIListBaseItem: UIListBaseItem
 };
 
 export default UIComponents;
\ No newline at end of file
diff --git a/src/components/UIContainer.js b/src/components/UIContainer.js
index 8abedb0..a2bc4c6 100644
--- a/src/components/UIContainer.js
+++ b/src/components/UIContainer.js
@@ -1,6 +1,4 @@
 import UIComponentPrototype from "./UIComponentPrototype";
-import Phaser from 'phaser';
-import _ from 'underscore';
 
 /**
  * @memberOf PhaserComps.UIComponents
@@ -28,13 +26,6 @@ export default class UIContainer extends UIComponentPrototype {
 		 * @private
 		 */
 		this._children = [];
-
-		/**
-		 * Current active Phaser container instance
-		 * @type {Phaser.GameObjects.Container}
-		 * @private
-		 */
-		this._containerClip = null;
 	}
 
 	/**
@@ -52,10 +43,11 @@ export default class UIContainer extends UIComponentPrototype {
 		this._children.push(child);
 
 		// add to container instance, or hide
-		if (this._containerClip) {
+		if (this._clip) {
+			child._clip.visible = true;
 			this._addUIComponentToContainerClip(child);
 		} else {
-			child._clip.groupVisible = false;
+			child._clip.visible = false;
 		}
 		return child;
 	}
@@ -75,7 +67,7 @@ export default class UIContainer extends UIComponentPrototype {
 		}
 		this._children.splice(index, 1);
 
-		if (this._containerClip) {
+		if (this._clip) {
 			this._removeUIComponentFromContainerClip(child);
 		}
 		return child;
@@ -87,10 +79,8 @@ export default class UIContainer extends UIComponentPrototype {
 	 * @private
 	 */
 	_addUIComponentToContainerClip(child) {
-		_.each(child._clip.childrenList, clipChild => {
-			this._containerClip.add(clipChild);
-		}, this);
-		child._clip.groupVisible = true;
+		this._clip.add(child._clip);
+		child._clip.visible = true;
 	}
 
 	/**
@@ -100,40 +90,37 @@ export default class UIContainer extends UIComponentPrototype {
 	 * @private
 	 */
 	_removeUIComponentFromContainerClip(child, destroyChild) {
-		_.each(child._clip.childrenList, clipChild => {
-			this._containerClip.remove(clipChild, destroyChild);
-		}, this);
-		child._clip.groupVisible = false;
+		this._clip.remove(child._clip, destroyChild);
+		child._clip.visible = false;
 	}
 
 	onClipAppend(clip) {
 		super.onClipAppend(clip);
-		this._containerClip = clip._container;
-		if (this._containerClip) {
-			_.each(this._children, child => {
+		if (clip) {
+			for (let child of this._children) {
 				this._addUIComponentToContainerClip(child);
-			}, this);
+			}
 		}
 	}
 
 	onClipRemove(clip) {
 		super.onClipRemove(clip);
 		// hide and remove children from current container
-		if (this._containerClip) {
-			_.each(this._children, child => {
+		if (clip) {
+			for (let child of this._children) {
 				this._removeUIComponentFromContainerClip(child);
-			}, this);
+			}
 		}
 	}
 
 	destroy() {
 		// remove and destroy children
-		_.each(this._children, child => {
-			if (this._containerClip) { // TODO check if needed
+		for (let child of this._children) {
+			if (this._clip) { // TODO check if needed
 				this._removeUIComponentFromContainerClip(child);
 			}
 			child.destroy();
-		}, this);
+		}
 		this._children.length = 0;
 		super.destroy();
 	}
diff --git a/src/components/UIList.js b/src/components/UIList.js
new file mode 100644
index 0000000..c56456e
--- /dev/null
+++ b/src/components/UIList.js
@@ -0,0 +1,105 @@
+import UIComponentPrototype from "./UIComponentPrototype";
+
+const EVENT_ITEM_CHANGE = "event_change";
+
+/**
+ * @class UIList
+ * @memberOf PhaserComps.UIComponents
+ * @classdesc
+ *
+ * List component. Item clip instances are supposed to exist as it's children, with keys `item_0`, `item_1` and so on.
+ *
+ * When data array applied, every array item is applied to its' view instance
+ *
+ * Useful for short lists, and for lists with custom items layout.
+ *
+ * @emits PhaserComps.UIComponents.UIList.EVENT_ITEM_CHANGE
+ * @property {Array<*>} data any data array to apply to list items
+ *
+ * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside
+ * @param {String} [key] key to find clip inside parent
+ * @param {Class} rendererClass class for items, best if extending `UIListBaseItem`
+ */
+
+
+export default class UIList extends UIComponentPrototype {
+
+	/**
+	 * @event PhaserComps.UIComponents.UIList.EVENT_ITEM_CHANGE
+	 * @memberOf PhaserComps.UIComponents.UIList
+	 * @description
+	 * Emitted when any item emits such even.
+	 * @param {PhaserComps.UIComponents.UIListBaseItem} item item instance, that emitted change event
+	 */
+	static get EVENT_ITEM_CHANGE() { return EVENT_ITEM_CHANGE; }
+
+	constructor(parent, key, rendererClass) {
+		super(parent, key);
+		this._rendererClass = rendererClass;
+		this._items = [];
+	}
+
+	/**@return {*[]}*/
+	get data() {
+		return this._data;
+	}
+
+	/** @param {*[]} value */
+	set data(value) {
+		this._data = value;
+		this._updateData();
+	}
+
+	/**
+	 * @method PhaserComps.UIComponents.UIList#clean
+	 * @desc Destroy all items renderer instances
+	 */
+	clean() {
+		while(this._items.length !== 0) {
+			let item = this._items.pop();
+			item.destroy(true);
+		}
+	}
+
+	_updateData() {
+		const len = this._data.length;
+		for (let index = 0; index < len; index++) {
+			let dataItem = this._data[index];
+			let item = this._getRenderer(index);
+			item.data = dataItem;
+		}
+		this.doState();
+	}
+
+	_getRenderer(index) {
+		if (this._items.length - 1 < index) {
+			let renderer = new this._rendererClass(this, "item_" + index);
+			this._items[index] = renderer;
+			renderer.on(UIList.EVENT_ITEM_CHANGE, this.onItemChange, this);
+ 		}
+		return this._items[index];
+	}
+
+	/**
+	 * @method PhaserComps.UIComponents.UIList#getStateId
+	 * @inheritDoc
+	 * @returns {String}
+	 */
+	getStateId() {
+		return "count_" + (this._data ? this._data.length : "0");
+	}
+
+	/**
+	 * @method PhaserComps.UIComponents.UIList#destroy
+	 * @protected
+	 * @inheritDoc
+	 */
+	destroy(fromScene) {
+		this.clean();
+		super.destroy(fromScene);
+	}
+
+	onItemChange(item) {
+		this.emit(UIList.EVENT_ITEM_CHANGE, item);
+	}
+}
\ No newline at end of file
diff --git a/src/components/UIListBaseItem.js b/src/components/UIListBaseItem.js
new file mode 100644
index 0000000..bcf8f62
--- /dev/null
+++ b/src/components/UIListBaseItem.js
@@ -0,0 +1,51 @@
+import UIComponentPrototype from "./UIComponentPrototype";
+import UIList from "./UIList";
+
+
+/**
+ * @class UIListBaseItem
+ * @memberOf PhaserComps.UIComponents
+ * @classdesc
+ *
+ * Base class for UIList component renderer. Extend it to create custom list items renderers.
+ *
+ * @emits PhaserComps.UIComponents.UIList.EVENT_ITEM_CHANGE
+ * @property {*} data any data from UIList data list
+ *
+ * @param {PhaserComps.UIComponents.UIComponentPrototype} [parent] UIComponentPrototype instance to find clip inside
+ * @param {String} [key] key to find clip inside parent
+ * @param {Class} rendererClass class for items, best if extending `UIListBaseItem`
+ */
+
+export default class UIListBaseItem extends UIComponentPrototype {
+	constructor(parent, key) {
+		super(parent, key);
+		this._data = null;
+	}
+
+	/**
+	 * @method PhaserComps.UIComponents.UIListBaseItem#notifyChange
+	 * @desc Emits change event to containing UIList instance
+	 */
+	notifyChange() {
+		this.emit(UIList.EVENT_ITEM_CHANGE, this);
+	}
+
+	/**
+	 * @method PhaserComps.UIComponents.UIListBaseItem#_commitData
+	 * @protected
+	 * @desc apply data from setter, override it
+	 */
+	_commitData() {
+		// override
+	}
+
+	get data() {
+		return this._data;
+	}
+
+	set data(value) {
+		this._data = value;
+		this._commitData();
+	}
+}
\ No newline at end of file
diff --git a/src/components/UIProgressBar.js b/src/components/UIProgressBar.js
index c6c90b0..63edcc5 100644
--- a/src/components/UIProgressBar.js
+++ b/src/components/UIProgressBar.js
@@ -1,5 +1,4 @@
 import UIComponentPrototype from "./UIComponentPrototype";
-import * as _ from "underscore";
 
 const PROGRESS_STATE_REGEX = /progress_(\d+)$/;
 
@@ -130,10 +129,14 @@ export default class UIProgressBar extends UIComponentPrototype {
 	 */
 	_makeSteps(clip) {
 		let stateIds = clip.getStateIds();
+		/**
+		 * @type {{stepValue: number, config: {}}[]}
+		 * @protected
+		 */
 		this._steps = [];
-		_.each(stateIds, (stateId) => {
+		for (let stateId of stateIds) {
 			if (!PROGRESS_STATE_REGEX.test(stateId)) {
-				return;
+				continue;
 			}
 
 			let stepConfig = {};
@@ -146,8 +149,8 @@ export default class UIProgressBar extends UIComponentPrototype {
 				stepConfig[childId] = UIProgressBar._makeFullConfig(stateConfig[childId]);
 			}
 			this._steps.push(stepObject);
-		}, this);
-		_.sortBy(this._steps, "stepValue");
+		}
+		this._steps.sort((a, b) => a.stepValue - b.stepValue);
 	}
 
 	/**
diff --git a/src/components/UIScrollBar.js b/src/components/UIScrollBar.js
index 20cd66c..9309d44 100644
--- a/src/components/UIScrollBar.js
+++ b/src/components/UIScrollBar.js
@@ -1,6 +1,7 @@
 import UIComponentPrototype from "./UIComponentPrototype";
 import UIButton from "./UIButton";
 import UIButtonDraggable from "./UIButtonDraggable";
+import UIManager from "../manager/UIManager";
 
 const _EVENT_CHANGE = "event_change";
 
@@ -198,6 +199,9 @@ export default class UIScrollBar extends UIComponentPrototype {
 	 * @protected
 	 */
 	onPrevClick() {
+		if (!UIManager.check(this.lockId)) {
+			return;
+		}
 		this.value -= this._buttonStep;
 	}
 
@@ -206,6 +210,9 @@ export default class UIScrollBar extends UIComponentPrototype {
 	 * @protected
 	 */
 	onNextClick() {
+		if (!UIManager.check(this.lockId)) {
+			return;
+		}
 		this.value += this._buttonStep;
 	}
 
@@ -256,6 +263,9 @@ export default class UIScrollBar extends UIComponentPrototype {
 		if (this._trackLength === 0) {
 			return;
 		}
+		if (!UIManager.check(this.lockId)) {
+			return;
+		}
 		let barPosition = this._vertical ? positionY : positionX;
 		let newValue = (barPosition - this._trackStart) / this._trackLength;
 		let v = newValue * (this._maxValue - this._minValue);
diff --git a/src/manager/UIManager.js b/src/manager/UIManager.js
new file mode 100644
index 0000000..2849b84
--- /dev/null
+++ b/src/manager/UIManager.js
@@ -0,0 +1,98 @@
+let isLock = false;
+const enabledIds = [];
+const registeredComps = {};
+
+/**
+ * @namespace PhaserComps.UIManager
+ * @memberOf PhaserComps
+ * @classdesc Allows to lock all ui, except for provided lock ids.
+ * For this, you must set `lockId` property to UIComponentPrototype instances you want to enable,
+ * and then switch theirs availability by UIManager's
+ * {@link lock} and {@link unlock} methods
+ *
+ * For example, locked UIButton will still interact to mouse events, but will not emit click event.
+ *
+ * This can be useful in game tutorials.
+ */
+export default class UIManager {
+
+	/**
+	 * @memberOf PhaserComps.UIManager
+	 * @description Makes only components with provided ids list (or one id string) to emit UI events
+	 *
+	 * @param {String | Array<String>} id component's lock id, or Array of lock ids to be only enabled
+	 * @param {boolean} [rewrite=true] rewrite current list if true, otherwise add to list
+	 */
+	static lock(id, rewrite = true) {
+		if (rewrite) {
+			this.unlock();
+		}
+		if (typeof id === "string") {
+			enabledIds.push(id);
+		} else {
+			id.forEach(value => enabledIds.push(value));
+		}
+		isLock = true;
+	}
+
+	/**
+	 * @memberOf PhaserComps.UIManager
+	 * @description Releases all components
+	 */
+	static unlock() {
+		enabledIds.length = 0;
+		isLock = false;
+	}
+
+	/** @param {UIComponentPrototype} proto */
+	static register(proto) {
+		registeredComps[proto.lockId] = proto;
+	}
+
+	/** @param {UIComponentPrototype} proto */
+	static unregister(proto) {
+		if (registeredComps[proto.lockId]) {
+			registeredComps[proto.lockId] = null;
+			delete registeredComps[proto.lockId];
+		}
+	}
+
+	/**
+	 * @memberOf PhaserComps.UIManager
+	 * @description called from component to check, if it's allowed to emit UI event.
+	 * @param {String} id
+	 */
+	static check(id) {
+		if (!isLock) {
+			return true;
+		}
+		return enabledIds.indexOf(id) !== -1;
+	}
+
+	/**
+	 * @param {string} id
+	 * @return {PhaserComps.UIComponents.UIComponentPrototype}
+	 */
+	static getById(id) {
+		return registeredComps[id];
+	}
+
+	/**
+	 * @param {string} id
+	 * @returns {Phaser.Geom.Rectangle}
+	 */
+	static getBoundsById(id) {
+		const proto = this.getById(id);
+		return proto ? proto.lockClipBounds : null;
+	}
+
+	/**
+	 * @param {string} id
+	 * @returns {Phaser.GameObjects.GameObject|*}
+	 */
+	static getClipById(id) {
+		const proto = this.getById(id);
+		return proto ? proto.lockClip : null;
+	}
+
+}
\ No newline at end of file
diff --git a/src/phasercomps.js b/src/phasercomps.js
index 5631da8..924d9ff 100644
--- a/src/phasercomps.js
+++ b/src/phasercomps.js
@@ -5,13 +5,13 @@
 import ComponentClip from "./clip/ComponentClip";
 import UIComponents from "./components/UIComponents";
 import Plugin from "./plugin/Plugin";
+import UIManager from "./manager/UIManager";
 
-var PhaserComps = {
+const PhaserComps = {
 	ComponentClip: ComponentClip,
 	UIComponents: UIComponents,
-	Plugin: Plugin
+	Plugin: Plugin,
+	UIManager: UIManager
 };
 
-module.exports = PhaserComps;
-
-global.PhaserComps = PhaserComps;
\ No newline at end of file
+export default PhaserComps;
\ No newline at end of file
diff --git a/src/plugin/Plugin.js b/src/plugin/Plugin.js
index 1368b56..e2445ac 100644
--- a/src/plugin/Plugin.js
+++ b/src/plugin/Plugin.js
@@ -41,10 +41,16 @@ import ComponentClip from "../clip/ComponentClip";
 export default class Plugin extends Phaser.Plugins.BasePlugin {
     constructor(mgr) {
         super(mgr);
-        mgr.registerGameObject("ui_component", this.addComponent, this.addComponent);
+        mgr.registerGameObject("ui_component", this.addComponent, this.makeComponent);
     }
 
     addComponent(config, textures) {
+        let clip = new ComponentClip(this.scene, config, textures);
+        this.scene.add.existing(clip);
+        return clip;
+    }
+
+    makeComponent(config, textures) {
         return new ComponentClip(this.scene, config, textures);
     }
 }
diff --git a/webpack-with-underscore.config.js b/webpack-with-underscore.config.js
deleted file mode 100644
index 098a540..0000000
--- a/webpack-with-underscore.config.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const path = require("path");
-const main = "./src/phasercomps.js";
-const sourcePaths = [main];
-
-module.exports = {
-	entry: sourcePaths,
-
-	mode: "production",
-
-	output: {
-		path: path.resolve(__dirname, "dist"),
-		filename: "phaser-ui-comps-with-underscore.min.js",
-		libraryTarget: "umd",
-		library: "PhaserComps",
-	},
-
-	externals: {
-		phaser: {
-			umd: "phaser",
-			commonjs2: "phaser",
-			commonjs: "phaser",
-			amd: "phaser",
-			// indicates global variable should be used
-			root: "Phaser"
-		}
-	},
-
-	module: {
-		rules: [
-			{
-				test: /\.js$/,
-				loader: "babel-loader",
-				exclude: [
-					/node_modules/,
-				],
-			},
-		],
-	}
-};
diff --git a/webpack.config.js b/webpack.config.js
index 75a9748..dba56df 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -12,7 +12,8 @@ module.exports = {
 		path: path.resolve(__dirname, "dist"),
 		filename: "phaser-ui-comps.min.js",
 		libraryTarget: "umd",
-		library: "PhaserComps"
+		library: "PhaserComps",
+		sourceMapFilename: "phaser-ui-comps.min.js.map"
 	},
 
 	externals: {
@@ -23,14 +24,6 @@ module.exports = {
 			amd: "phaser",
 			// indicates global variable should be used
 			root: "Phaser"
-		},
-		underscore: {
-			umd: "underscore",
-			commonjs2: "underscore",
-			commonjs: "underscore",
-			amd: "underscore",
-			// indicates global variable should be used
-			root: "_"
 		}
 	},
 
@@ -45,5 +38,7 @@ module.exports = {
 				include: path.join(__dirname, 'src/')
 			},
 		],
-	}
+	},
+
+	devtool: "source-map"
 };