From a5f144cb7c3f090b97a2f9751ac6467bc89f1fa5 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Wed, 17 Aug 2016 22:34:12 -0700 Subject: [PATCH] HTML5 notify actions (#2855) * Add action and callback support to html5 (#2855). Remove registrations from the callback view since we always get the latest anyway. We dont put an audience in the claims so we will never hit this error. Bring tests back up to where they were before callbacks. Only import jwt where necessary Fix bracket spacing errors Fix JWT decode check for loop Remove stale comment. Add tests for the callback system. Shorten line Disable pylint broad-except and change e to jwt_decode_error. Verify expiration Remove duplicate jwt.exceptions.DecodeError Catch no keys matched and return False * Switch to using registrations for callbackview instead of json_path * Only check for URL and such if the data object actually exists * raise instead of return * cleanup decode_jwt * Clean up JWT errors * Correctly set status_code to 401 * Improve JWT by adding target to claims and attempting to check the given target for a decode match first, as well as pass the target through in the event payload. * Add tag support and fix formatting issues * Pass through any keys that dont apply to the payload into the notification.data dictionary * Remove stale print * Pass back the data dictionary if it exists * Actually put the default url even if a notify payload dictionary doesnt exist * pylint, flake8 * Add subscription validation * Add validation for the callback event payload and use constants where possible * Use HTTP_UNAUTHORIZED instead of 401 * Change callback dictionary to dict instead of cv.match_all * Fix up tests and make subscription required * Whoops, that test was supposed to fail * Use the result of CALLBACK_EVENT_PAYLOAD_SCHEMA as event_payload * Add a test for html5 callback decode_jwt where the device has been renamed since notification has been sent. * Remove the loop through logic, assume that target is always in JWT * Always return something instead of possibly None. * Update frontend --- homeassistant/components/frontend/version.py | 4 +- .../components/frontend/www_static/core.js | 8 +- .../components/frontend/www_static/core.js.gz | Bin 31500 -> 31529 bytes .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 123182 -> 123194 bytes .../www_static/home-assistant-polymer | 2 +- .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2012 -> 2285 bytes homeassistant/components/notify/html5.py | 220 +++++++++++++++--- requirements_all.txt | 3 + tests/components/notify/test_html5.py | 109 ++++++++- 11 files changed, 306 insertions(+), 44 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index ec30e4804c7..82d10fb5f47 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,8 +1,8 @@ """DO NOT MODIFY. Auto-generated by script/fingerprint_frontend.""" FINGERPRINTS = { - "core.js": "b4ee3a700ef5549a36b436611e27d3a9", - "frontend.html": "411fcc6c69b3cab0740ac3db4b9947c8", + "core.js": "7a72f4dcf2a1d5e04094ef807478614d", + "frontend.html": "77a461848fe2a94da4e26a103bd6f814", "mdi.html": "b399b5d3798f5b68b0a4fbaae3432d48", "panels/ha-panel-dev-event.html": "3cc881ae8026c0fba5aa67d334a3ab2b", "panels/ha-panel-dev-info.html": "34e2df1af32e60fffcafe7e008a92169", diff --git a/homeassistant/components/frontend/www_static/core.js b/homeassistant/components/frontend/www_static/core.js index 4def07355e1..8b529c77424 100644 --- a/homeassistant/components/frontend/www_static/core.js +++ b/homeassistant/components/frontend/www_static/core.js @@ -1,4 +1,4 @@ -!function(){"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}function e(t,e){return e={exports:{}},t(e,e.exports),e.exports}function n(t,e){var n=e.authToken,r=e.host;return De({authToken:n,host:r,isValidating:!0,isInvalid:!1,errorMessage:""})}function r(){return Ce.getInitialState()}function i(t,e){var n=e.errorMessage;return t.withMutations(function(t){return t.set("isValidating",!1).set("isInvalid",!0).set("errorMessage",n)})}function o(t,e){var n=e.authToken,r=e.host;return Re({authToken:n,host:r})}function u(){return Le.getInitialState()}function a(t,e){var n=e.rememberAuth;return n}function s(t){return t.withMutations(function(t){t.set("isStreaming",!0).set("useStreaming",!0).set("hasError",!1)})}function c(t){return t.withMutations(function(t){t.set("isStreaming",!1).set("useStreaming",!1).set("hasError",!1)})}function f(t){return t.withMutations(function(t){t.set("isStreaming",!1).set("hasError",!0)})}function h(){return Pe.getInitialState()}function l(t,e){var n=e.model,r=e.result,i=e.params,o=n.entity;if(!r)return t;var u=i.replace?Be({}):t.get(o),a=Array.isArray(r)?r:[r],s=n.fromJSON||Be;return t.set(o,u.withMutations(function(t){for(var e=0;e199&&u.status<300?t(e):n(e)},u.onerror=function(){return n({})},r?(u.setRequestHeader("Content-Type","application/json;charset=UTF-8"),u.send(JSON.stringify(r))):u.send()})}function A(t,e){var n=e.message;return t.set(t.size,n)}function D(){return In.getInitialState()}function C(t,e){t.dispatch(gn.NOTIFICATION_CREATED,{message:e})}function z(t){t.registerStores({notifications:In})}function R(t,e){if("lock"===t)return!0;if("garage_door"===t)return!0;var n=e.get(t);return!!n&&n.services.has("turn_on")}function L(t,e){return!!t&&("group"===t.domain?"on"===t.state||"off"===t.state:R(t.domain,e))}function M(t,e){return[Wn(t),function(t){return!!t&&t.services.has(e)}]}function j(t){return[yn.byId(t),Jn,L]}function N(t,e,n){function r(){var c=(new Date).getTime()-a;c0?i=setTimeout(r,e-c):(i=null,n||(s=t.apply(u,o),i||(u=o=null)))}var i,o,u,a,s;null==e&&(e=100);var c=function(){u=this,o=arguments,a=(new Date).getTime();var c=n&&!i;return i||(i=setTimeout(r,e)),c&&(s=t.apply(u,o),u=o=null),s};return c.clear=function(){i&&(clearTimeout(i),i=null)},c}function k(t,e){var n=e.component;return t.push(n)}function U(t,e){var n=e.components;return ar(n)}function H(){return sr.getInitialState()}function P(t,e){var n=e.latitude,r=e.longitude,i=e.location_name,o=e.temperature_unit,u=e.time_zone,a=e.version;return fr({latitude:n,longitude:r,location_name:i,temperature_unit:o,time_zone:u,serverVersion:a})}function x(){return hr.getInitialState()}function V(t,e){t.dispatch(or.SERVER_CONFIG_LOADED,e)}function q(t){rn(t,"GET","config").then(function(e){return V(t,e)})}function F(t,e){t.dispatch(or.COMPONENT_LOADED,{component:e})}function G(t){return[["serverComponent"],function(e){return e.contains(t)}]}function K(t){t.registerStores({serverComponent:sr,serverConfig:hr})}function Y(t,e){var n=e.pane;return n}function B(){return Ir.getInitialState()}function J(t,e){var n=e.panels;return Or(n)}function W(){return wr.getInitialState()}function X(t,e){var n=e.show;return!!n}function Q(){return Ar.getInitialState()}function Z(t,e){t.dispatch(mr.SHOW_SIDEBAR,{show:e})}function $(t,e){t.dispatch(mr.NAVIGATE,{pane:e})}function tt(t,e){t.dispatch(mr.PANELS_LOADED,{panels:e})}function et(t,e){var n=e.entityId;return n}function nt(){return kr.getInitialState()}function rt(t,e){t.dispatch(jr.SELECT_ENTITY,{entityId:e})}function it(t){t.dispatch(jr.SELECT_ENTITY,{entityId:null})}function ot(t){return!t||(new Date).getTime()-t>6e4}function ut(t,e){var n=e.date;return n.toISOString()}function at(){return xr.getInitialState()}function st(t,e){var n=e.date,r=e.stateHistory;return 0===r.length?t.set(n,qr({})):t.withMutations(function(t){r.forEach(function(e){return t.setIn([n,e[0].entity_id],qr(e.map(cn.fromJSON)))})})}function ct(){return Fr.getInitialState()}function ft(t,e){var n=e.stateHistory;return t.withMutations(function(t){n.forEach(function(e){return t.set(e[0].entity_id,Br(e.map(cn.fromJSON)))})})}function ht(){return Jr.getInitialState()}function lt(t,e){var n=e.stateHistory,r=(new Date).getTime();return t.withMutations(function(t){n.forEach(function(e){return t.set(e[0].entity_id,r)}),history.length>1&&t.set(Qr,r)})}function pt(){return Zr.getInitialState()}function _t(t,e){t.dispatch(Hr.ENTITY_HISTORY_DATE_SELECTED,{date:e})}function dt(t,e){void 0===e&&(e=null),t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_START,{});var n="history/period";return null!==e&&(n+="?filter_entity_id="+e),rn(t,"GET",n).then(function(e){return t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,{stateHistory:e})},function(){return t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_ERROR,{})})}function vt(t,e){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_START,{date:e}),rn(t,"GET","history/period/"+e).then(function(n){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_SUCCESS,{date:e,stateHistory:n})},function(){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_ERROR,{})})}function yt(t){var e=t.evaluate(ei);return vt(t,e)}function St(t){t.registerStores({currentEntityHistoryDate:xr,entityHistory:Fr,isLoadingEntityHistory:Kr,recentEntityHistory:Jr,recentEntityHistoryUpdated:Zr})}function gt(t){t.registerStores({moreInfoEntityId:kr})}function mt(t,e){var n=e.model,r=e.result,i=e.params;if(null===t||"entity"!==n.entity||!i.replace)return t;for(var o=0;oQo}function ae(t){t.registerStores({currentLogbookDate:Uo,isLoadingLogbookEntries:Po,logbookEntries:Ko,logbookEntriesUpdated:Jo})}function se(t,e){return rn(t,"POST","template",{template:e})}function ce(t){return t.set("isListening",!0)}function fe(t,e){var n=e.interimTranscript,r=e.finalTranscript;return t.withMutations(function(t){return t.set("isListening",!0).set("isTransmitting",!1).set("interimTranscript",n).set("finalTranscript",r)})}function he(t,e){var n=e.finalTranscript;return t.withMutations(function(t){return t.set("isListening",!1).set("isTransmitting",!0).set("interimTranscript","").set("finalTranscript",n)})}function le(){return _u.getInitialState()}function pe(){return _u.getInitialState()}function _e(){return _u.getInitialState()}function de(t){return du[t.hassId]}function ve(t){var e=de(t);if(e){var n=e.finalTranscript||e.interimTranscript;t.dispatch(hu.VOICE_TRANSMITTING,{finalTranscript:n}),Zn.callService(t,"conversation","process",{text:n}).then(function(){t.dispatch(hu.VOICE_DONE)},function(){t.dispatch(hu.VOICE_ERROR)})}}function ye(t){var e=de(t);e&&(e.recognition.stop(),du[t.hassId]=!1)}function Se(t){ve(t),ye(t)}function ge(t){var e=Se.bind(null,t);e();var n=new webkitSpeechRecognition;du[t.hassId]={recognition:n,interimTranscript:"",finalTranscript:""},n.interimResults=!0,n.onstart=function(){return t.dispatch(hu.VOICE_START)},n.onerror=function(){return t.dispatch(hu.VOICE_ERROR)},n.onend=e,n.onresult=function(e){var n=de(t);if(n){for(var r="",i="",o=e.resultIndex;o=n)}function c(t,e){return h(t,e,0)}function f(t,e){return h(t,e,e)}function h(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function l(t){return v(t)?t:C(t)}function p(t){return y(t)?t:z(t)}function _(t){return S(t)?t:R(t)}function d(t){return v(t)&&!g(t)?t:L(t)}function v(t){return!(!t||!t[dn])}function y(t){return!(!t||!t[vn])}function S(t){return!(!t||!t[yn])}function g(t){return y(t)||S(t)}function m(t){return!(!t||!t[Sn])}function E(t){this.next=t}function I(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function b(){return{value:void 0,done:!0}}function O(t){return!!A(t)}function w(t){return t&&"function"==typeof t.next}function T(t){var e=A(t);return e&&e.call(t)}function A(t){var e=t&&(In&&t[In]||t[bn]);if("function"==typeof e)return e}function D(t){return t&&"number"==typeof t.length}function C(t){return null===t||void 0===t?H():v(t)?t.toSeq():V(t)}function z(t){return null===t||void 0===t?H().toKeyedSeq():v(t)?y(t)?t.toSeq():t.fromEntrySeq():P(t)}function R(t){return null===t||void 0===t?H():v(t)?y(t)?t.entrySeq():t.toIndexedSeq():x(t)}function L(t){return(null===t||void 0===t?H():v(t)?y(t)?t.entrySeq():t:x(t)).toSetSeq()}function M(t){this._array=t,this.size=t.length}function j(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function N(t){this._iterable=t,this.size=t.length||t.size}function k(t){this._iterator=t,this._iteratorCache=[]}function U(t){return!(!t||!t[wn])}function H(){return Tn||(Tn=new M([]))}function P(t){var e=Array.isArray(t)?new M(t).fromEntrySeq():w(t)?new k(t).fromEntrySeq():O(t)?new N(t).fromEntrySeq():"object"==typeof t?new j(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function x(t){var e=q(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function V(t){var e=q(t)||"object"==typeof t&&new j(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function q(t){return D(t)?new M(t):w(t)?new k(t):O(t)?new N(t):void 0}function F(t,e,n,r){var i=t._cache;if(i){for(var o=i.length-1,u=0;u<=o;u++){var a=i[n?o-u:u];if(e(a[1],r?a[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,n)}function G(t,e,n,r){var i=t._cache;if(i){var o=i.length-1,u=0;return new E(function(){var t=i[n?o-u:u];return u++>o?b():I(e,r?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,n)}function K(){throw TypeError("Abstract")}function Y(){}function B(){}function J(){}function W(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function X(t,e){return e?Q(e,t,"",{"":t}):Z(t)}function Q(t,e,n,r){return Array.isArray(e)?t.call(r,n,R(e).map(function(n,r){return Q(t,n,r,e)})):$(e)?t.call(r,n,z(e).map(function(n,r){return Q(t,n,r,e)})):e}function Z(t){return Array.isArray(t)?R(t).map(Z).toList():$(t)?z(t).map(Z).toMap():t}function $(t){return t&&(t.constructor===Object||void 0===t.constructor)}function tt(t){return t>>>1&1073741824|3221225471&t}function et(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return tt(n)}return"string"===e?t.length>jn?nt(t):rt(t):"function"==typeof t.hashCode?t.hashCode():it(t)}function nt(t){var e=Un[t];return void 0===e&&(e=rt(t),kn===Nn&&(kn=0,Un={}),kn++,Un[t]=e),e}function rt(t){for(var e=0,n=0;n0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function ut(t,e){if(!t)throw new Error(e)}function at(t){ut(t!==1/0,"Cannot perform this action with an infinite size.")}function st(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ct(t){this._iter=t,this.size=t.size}function ft(t){this._iter=t,this.size=t.size}function ht(t){this._iter=t,this.size=t.size}function lt(t){var e=Mt(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=jt,e.__iterateUncached=function(e,n){var r=this;return t.__iterate(function(t,n){return e(n,t,r)!==!1},n)},e.__iteratorUncached=function(e,n){if(e===En){var r=t.__iterator(e,n);return new E(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===mn?gn:mn,n)},e}function pt(t,e,n){var r=Mt(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,i){var o=t.get(r,ln);return o===ln?i:e.call(n,o,r,t)},r.__iterateUncached=function(r,i){var o=this;return t.__iterate(function(t,i,u){return r(e.call(n,t,i,u),i,o)!==!1},i)},r.__iteratorUncached=function(r,i){var o=t.__iterator(En,i);return new E(function(){var i=o.next();if(i.done)return i;var u=i.value,a=u[0];return I(r,a,e.call(n,u[1],a,t),i)})},r}function _t(t,e){var n=Mt(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=lt(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=jt,n.__iterate=function(e,n){var r=this;return t.__iterate(function(t,n){return e(t,n,r)},!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function dt(t,e,n,r){var i=Mt(t);return r&&(i.has=function(r){var i=t.get(r,ln);return i!==ln&&!!e.call(n,i,r,t)},i.get=function(r,i){var o=t.get(r,ln);return o!==ln&&e.call(n,o,r,t)?o:i}),i.__iterateUncached=function(i,o){var u=this,a=0;return t.__iterate(function(t,o,s){if(e.call(n,t,o,s))return a++,i(t,r?o:a-1,u)},o),a},i.__iteratorUncached=function(i,o){var u=t.__iterator(En,o),a=0;return new E(function(){for(;;){var o=u.next();if(o.done)return o;var s=o.value,c=s[0],f=s[1];if(e.call(n,f,c,t))return I(i,r?c:a++,f,o)}})},i}function vt(t,e,n){var r=Ut().asMutable();return t.__iterate(function(i,o){r.update(e.call(n,i,o,t),0,function(t){return t+1})}),r.asImmutable()}function yt(t,e,n){var r=y(t),i=(m(t)?be():Ut()).asMutable();t.__iterate(function(o,u){i.update(e.call(n,o,u,t),function(t){return t=t||[],t.push(r?[u,o]:o),t})});var o=Lt(t);return i.map(function(e){return Ct(t,o(e))})}function St(t,e,n,r){var i=t.size;if(void 0!==e&&(e=0|e),void 0!==n&&(n=0|n),s(e,n,i))return t;var o=c(e,i),a=f(n,i);if(o!==o||a!==a)return St(t.toSeq().cacheResult(),e,n,r);var h,l=a-o;l===l&&(h=l<0?0:l);var p=Mt(t);return p.size=0===h?h:t.size&&h||void 0,!r&&U(t)&&h>=0&&(p.get=function(e,n){return e=u(this,e),e>=0&&eh)return b();var t=i.next();return r||e===mn?t:e===gn?I(e,a-1,void 0,t):I(e,a-1,t.value[1],t)})},p}function gt(t,e,n){var r=Mt(t);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var u=0;return t.__iterate(function(t,i,a){return e.call(n,t,i,a)&&++u&&r(t,i,o)}),u},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var u=t.__iterator(En,i),a=!0;return new E(function(){if(!a)return b();var t=u.next();if(t.done)return t;var i=t.value,s=i[0],c=i[1];return e.call(n,c,s,o)?r===En?t:I(r,s,c,t):(a=!1,b())})},r}function mt(t,e,n,r){var i=Mt(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var a=!0,s=0;return t.__iterate(function(t,o,c){if(!a||!(a=e.call(n,t,o,c)))return s++,i(t,r?o:s-1,u)}),s},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var a=t.__iterator(En,o),s=!0,c=0;return new E(function(){var t,o,f;do{if(t=a.next(),t.done)return r||i===mn?t:i===gn?I(i,c++,void 0,t):I(i,c++,t.value[1],t);var h=t.value;o=h[0],f=h[1],s&&(s=e.call(n,f,o,u))}while(s);return i===En?t:I(i,o,f,t)})},i}function Et(t,e){var n=y(t),r=[t].concat(e).map(function(t){return v(t)?n&&(t=p(t)):t=n?P(t):x(Array.isArray(t)?t:[t]),t}).filter(function(t){return 0!==t.size});if(0===r.length)return t;if(1===r.length){var i=r[0];if(i===t||n&&y(i)||S(t)&&S(i))return i}var o=new M(r);return n?o=o.toKeyedSeq():S(t)||(o=o.toSetSeq()),o=o.flatten(!0),o.size=r.reduce(function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}},0),o}function It(t,e,n){var r=Mt(t);return r.__iterateUncached=function(r,i){function o(t,s){var c=this;t.__iterate(function(t,i){return(!e||s0}function Dt(t,e,n){var r=Mt(t);return r.size=new M(n).map(function(t){return t.size}).min(),r.__iterate=function(t,e){for(var n,r=this,i=this.__iterator(mn,e),o=0;!(n=i.next()).done&&t(n.value,o++,r)!==!1;);return o},r.__iteratorUncached=function(t,r){var i=n.map(function(t){return t=l(t),T(r?t.reverse():t)}),o=0,u=!1;return new E(function(){var n;return u||(n=i.map(function(t){return t.next()}),u=n.some(function(t){return t.done})),u?b():I(t,o++,e.apply(null,n.map(function(t){return t.value})))})},r}function Ct(t,e){return U(t)?e:t.constructor(e)}function zt(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function Rt(t){return at(t.size),o(t)}function Lt(t){return y(t)?p:S(t)?_:d}function Mt(t){return Object.create((y(t)?z:S(t)?R:L).prototype)}function jt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):C.prototype.cacheResult.call(this)}function Nt(t,e){return t>e?1:t>>n)&hn,a=(0===n?r:r>>>n)&hn,s=u===a?[Zt(t,e,n+cn,r,i)]:(o=new Ft(e,r,i),u>>=1)u[a]=1&n?e[o++]:void 0;return u[r]=i,new Vt(t,o+1,u)}function ne(t,e,n){for(var r=[],i=0;i>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function ae(t,e,n,r){var o=r?t:i(t);return o[e]=n,o}function se(t,e,n,r){var i=t.length+1;if(r&&e+1===i)return t[e]=n,t;for(var o=new Array(i),u=0,a=0;a0&&ro?0:o-n,c=u-n;return c>fn&&(c=fn),function(){if(i===c)return Bn;var t=e?--c:i++;return r&&r[t]}}function i(t,r,i){var a,s=t&&t.array,c=i>o?0:o-i>>r,f=(u-i>>r)+1;return f>fn&&(f=fn),function(){for(;;){if(a){var t=a();if(t!==Bn)return t;a=null}if(c===f)return Bn;var o=e?--f:c++;a=n(s&&s[o],r-cn,i+(o<=t.size||n<0)return t.withMutations(function(t){n<0?me(t,n).set(0,r):me(t,0,n+1).set(n,r)});n+=t._origin;var i=t._tail,o=t._root,a=e(_n);return n>=Ie(t._capacity)?i=ye(i,t.__ownerID,0,n,r,a):o=ye(o,t.__ownerID,t._level,n,r,a),a.value?t.__ownerID?(t._root=o,t._tail=i,t.__hash=void 0,t.__altered=!0,t):_e(t._origin,t._capacity,t._level,o,i):t}function ye(t,e,r,i,o,u){var a=i>>>r&hn,s=t&&a0){var f=t&&t.array[a],h=ye(f,e,r-cn,i,o,u);return h===f?t:(c=Se(t,e),c.array[a]=h,c)}return s&&t.array[a]===o?t:(n(u),c=Se(t,e),void 0===o&&a===c.array.length-1?c.array.pop():c.array[a]=o,c)}function Se(t,e){return e&&t&&e===t.ownerID?t:new le(t?t.array.slice():[],e)}function ge(t,e){if(e>=Ie(t._capacity))return t._tail;if(e<1<0;)n=n.array[e>>>r&hn],r-=cn;return n}}function me(t,e,n){void 0!==e&&(e=0|e),void 0!==n&&(n=0|n);var i=t.__ownerID||new r,o=t._origin,u=t._capacity,a=o+e,s=void 0===n?u:n<0?u+n:o+n;if(a===o&&s===u)return t;if(a>=s)return t.clear();for(var c=t._level,f=t._root,h=0;a+h<0;)f=new le(f&&f.array.length?[void 0,f]:[],i),c+=cn,h+=1<=1<l?new le([],i):_;if(_&&p>l&&acn;y-=cn){var S=l>>>y&hn;v=v.array[S]=Se(v.array[S],i)}v.array[l>>>cn&hn]=_}if(s=p)a-=p,s-=p,c=cn,f=null,d=d&&d.removeBefore(i,0,a);else if(a>o||p>>c&hn;if(g!==p>>>c&hn)break;g&&(h+=(1<o&&(f=f.removeBefore(i,c,a-h)),f&&pi&&(i=a.size),v(u)||(a=a.map(function(t){return X(t)})),r.push(a)}return i>t.size&&(t=t.setSize(i)),ie(t,e,r)}function Ie(t){return t>>cn<=fn&&u.size>=2*o.size?(i=u.filter(function(t,e){return void 0!==t&&a!==e}),r=i.toKeyedSeq().map(function(t){return t[0]}).flip().toMap(),t.__ownerID&&(r.__ownerID=i.__ownerID=t.__ownerID)):(r=o.remove(e),i=a===u.size-1?u.pop():u.set(a,void 0))}else if(s){if(n===u.get(a)[1])return t;r=o,i=u.set(a,[e,n])}else r=o.set(e,u.size),i=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=i,t.__hash=void 0,t):we(r,i)}function De(t){return null===t||void 0===t?Re():Ce(t)?t:Re().unshiftAll(t)}function Ce(t){return!(!t||!t[Wn])}function ze(t,e,n,r){var i=Object.create(Xn);return i.size=t,i._head=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Re(){return Qn||(Qn=ze(0))}function Le(t){return null===t||void 0===t?ke():Me(t)&&!m(t)?t:ke().withMutations(function(e){var n=d(t);at(n.size),n.forEach(function(t){return e.add(t)})})}function Me(t){return!(!t||!t[Zn])}function je(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function Ne(t,e){var n=Object.create($n);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function ke(){return tr||(tr=Ne(Jt()))}function Ue(t){return null===t||void 0===t?xe():He(t)?t:xe().withMutations(function(e){var n=d(t);at(n.size),n.forEach(function(t){return e.add(t)})})}function He(t){return Me(t)&&m(t)}function Pe(t,e){var n=Object.create(er);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function xe(){return nr||(nr=Pe(Te()))}function Ve(t,e){var n,r=function(o){if(o instanceof r)return o;if(!(this instanceof r))return new r(o);if(!n){n=!0;var u=Object.keys(t);Ge(i,u),i.size=u.length,i._name=e,i._keys=u,i._defaultValues=t}this._map=Ut(o)},i=r.prototype=Object.create(rr);return i.constructor=r,r}function qe(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._map=e,r.__ownerID=n,r}function Fe(t){return t._name||t.constructor.name||"Record"}function Ge(t,e){try{e.forEach(Ke.bind(void 0,t))}catch(t){}}function Ke(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){ut(this.__ownerID,"Cannot set on an immutable record."),this.set(e,t)}})}function Ye(t,e){if(t===e)return!0;if(!v(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||y(t)!==y(e)||S(t)!==S(e)||m(t)!==m(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!g(t);if(m(t)){var r=t.entries();return e.every(function(t,e){var i=r.next().value;return i&&W(i[1],t)&&(n||W(i[0],e))})&&r.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var u=!0,a=e.__iterate(function(e,r){if(n?!t.has(e):i?!W(e,t.get(r,ln)):!W(t.get(r,ln),e))return u=!1,!1});return u&&t.size===a}function Be(t,e,n){if(!(this instanceof Be))return new Be(t,e,n);if(ut(0!==n,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),ee?-1:0}function rn(t){if(t.size===1/0)return 0;var e=m(t),n=y(t),r=e?1:0,i=t.__iterate(n?e?function(t,e){r=31*r+un(et(t),et(e))|0}:function(t,e){r=r+un(et(t),et(e))|0}:e?function(t){r=31*r+et(t)|0}:function(t){r=r+et(t)|0});return on(i,r)}function on(t,e){return e=Dn(e,3432918353),e=Dn(e<<15|e>>>-15,461845907),e=Dn(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=Dn(e^e>>>16,2246822507),e=Dn(e^e>>>13,3266489909),e=tt(e^e>>>16)}function un(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var an=Array.prototype.slice,sn="delete",cn=5,fn=1<r?b():I(t,i,n[e?r-i++:i++])})},t(j,z),j.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},j.prototype.has=function(t){return this._object.hasOwnProperty(t)},j.prototype.__iterate=function(t,e){for(var n=this,r=this._object,i=this._keys,o=i.length-1,u=0;u<=o;u++){var a=i[e?o-u:u];if(t(r[a],a,n)===!1)return u+1}return u},j.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,i=r.length-1,o=0;return new E(function(){var u=r[e?i-o:o];return o++>i?b():I(t,u,n[u])})},j.prototype[Sn]=!0,t(N,R),N.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);var r=this._iterable,i=T(r),o=0;if(w(i))for(var u;!(u=i.next()).done&&t(u.value,o++,n)!==!1;);return o},N.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=T(n);if(!w(r))return new E(b);var i=0;return new E(function(){var e=r.next();return e.done?e:I(t,i++,e.value)})},t(k,R),k.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);for(var r=this._iterator,i=this._iteratorCache,o=0;o=r.length){var e=n.next();if(e.done)return e;r[i]=e.value}return I(t,i,r[i++])})};var Tn;t(K,l),t(Y,K),t(B,K),t(J,K),K.Keyed=Y,K.Indexed=B,K.Set=J;var An,Dn="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t=0|t,e=0|e;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Cn=Object.isExtensible,zn=function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}}(),Rn="function"==typeof WeakMap;Rn&&(An=new WeakMap);var Ln=0,Mn="__immutablehash__";"function"==typeof Symbol&&(Mn=Symbol(Mn));var jn=16,Nn=255,kn=0,Un={};t(st,z),st.prototype.get=function(t,e){return this._iter.get(t,e)},st.prototype.has=function(t){return this._iter.has(t)},st.prototype.valueSeq=function(){return this._iter.valueSeq()},st.prototype.reverse=function(){var t=this,e=_t(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},st.prototype.map=function(t,e){var n=this,r=pt(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},st.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Rt(this):0,function(i){return t(i,e?--n:n++,r)}),e)},st.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(mn,e),r=e?Rt(this):0;return new E(function(){var i=n.next();return i.done?i:I(t,e?--r:r++,i.value,i)})},st.prototype[Sn]=!0,t(ct,R),ct.prototype.includes=function(t){return this._iter.includes(t)},ct.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate(function(e){return t(e,r++,n)},e)},ct.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e),r=0;return new E(function(){var e=n.next();return e.done?e:I(t,r++,e.value,e)})},t(ft,L),ft.prototype.has=function(t){return this._iter.includes(t)},ft.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){return t(e,e,n)},e)},ft.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e);return new E(function(){var e=n.next();return e.done?e:I(t,e.value,e.value,e)})},t(ht,z),ht.prototype.entrySeq=function(){return this._iter.toSeq()},ht.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){if(e){zt(e);var r=v(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}},e)},ht.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e);return new E(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){zt(r);var i=v(r);return I(t,i?r.get(0):r[0],i?r.get(1):r[1],e)}}})},ct.prototype.cacheResult=st.prototype.cacheResult=ft.prototype.cacheResult=ht.prototype.cacheResult=jt,t(Ut,Y),Ut.prototype.toString=function(){return this.__toString("Map {","}")},Ut.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Ut.prototype.set=function(t,e){return Wt(this,t,e)},Ut.prototype.setIn=function(t,e){return this.updateIn(t,ln,function(){return e})},Ut.prototype.remove=function(t){return Wt(this,t,ln)},Ut.prototype.deleteIn=function(t){return this.updateIn(t,function(){return ln})},Ut.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},Ut.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=oe(this,kt(t),e,n);return r===ln?void 0:r},Ut.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},Ut.prototype.merge=function(){return ne(this,void 0,arguments)},Ut.prototype.mergeWith=function(t){var e=an.call(arguments,1);return ne(this,t,e)},Ut.prototype.mergeIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]})},Ut.prototype.mergeDeep=function(){return ne(this,re(void 0),arguments)},Ut.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return ne(this,re(t),e)},Ut.prototype.mergeDeepIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]})},Ut.prototype.sort=function(t){return be(wt(this,t))},Ut.prototype.sortBy=function(t,e){return be(wt(this,e,t))},Ut.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Ut.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new r)},Ut.prototype.asImmutable=function(){return this.__ensureOwner()},Ut.prototype.wasAltered=function(){return this.__altered},Ut.prototype.__iterator=function(t,e){return new Gt(this,t,e)},Ut.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate(function(e){return r++,t(e[1],e[0],n)},e),r},Ut.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Bt(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Ut.isMap=Ht;var Hn="@@__IMMUTABLE_MAP__@@",Pn=Ut.prototype;Pn[Hn]=!0,Pn[sn]=Pn.remove,Pn.removeIn=Pn.deleteIn,Pt.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o=Vn)return $t(t,f,o,u);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new Pt(t,d)}},xt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=1<<((0===t?e:e>>>t)&hn),o=this.bitmap;return 0===(o&i)?r:this.nodes[ue(o&i-1)].get(t+cn,e,n,r)},xt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=1<=qn)return ee(t,l,c,a,_);if(f&&!_&&2===l.length&&Qt(l[1^h]))return l[1^h];if(f&&_&&1===l.length&&Qt(_))return _;var d=t&&t===this.ownerID,v=f?_?c:c^s:c|s,y=f?_?ae(l,h,_,d):ce(l,h,d):se(l,h,_,d);return d?(this.bitmap=v,this.nodes=y,this):new xt(t,v,y)},Vt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=(0===t?e:e>>>t)&hn,o=this.nodes[i];return o?o.get(t+cn,e,n,r):r},Vt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=i===ln,c=this.nodes,f=c[a];if(s&&!f)return this;var h=Xt(f,t,e+cn,n,r,i,o,u);if(h===f)return this;var l=this.count;if(f){if(!h&&(l--,l=0&&t>>e&hn;if(r>=this.array.length)return new le([],t);var i,o=0===r;if(e>0){var u=this.array[r];if(i=u&&u.removeBefore(t,e-cn,n),i===u&&o)return this}if(o&&!i)return this;var a=Se(this,t);if(!o)for(var s=0;s>>e&hn;if(r>=this.array.length)return this;var i;if(e>0){var o=this.array[r];if(i=o&&o.removeAfter(t,e-cn,n),i===o&&r===this.array.length-1)return this}var u=Se(this,t);return u.array.splice(r+1),i&&(u.array[r]=i),u};var Yn,Bn={};t(be,Ut),be.of=function(){return this(arguments)},be.prototype.toString=function(){return this.__toString("OrderedMap {","}")},be.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},be.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Te()},be.prototype.set=function(t,e){return Ae(this,t,e)},be.prototype.remove=function(t){return Ae(this,t,ln)},be.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},be.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate(function(e){return e&&t(e[1],e[0],n)},e)},be.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},be.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?we(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},be.isOrderedMap=Oe,be.prototype[Sn]=!0,be.prototype[sn]=be.prototype.remove;var Jn;t(De,B),De.of=function(){return this(arguments)},De.prototype.toString=function(){return this.__toString("Stack [","]")},De.prototype.get=function(t,e){var n=this._head;for(t=u(this,t);n&&t--;)n=n.next;return n?n.value:e},De.prototype.peek=function(){return this._head&&this._head.value},De.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var e=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:t[r],next:n};return this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pushAll=function(t){if(t=_(t),0===t.size)return this;at(t.size);var e=this.size,n=this._head;return t.reverse().forEach(function(t){e++,n={value:t,next:n}}),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pop=function(){return this.slice(1)},De.prototype.unshift=function(){return this.push.apply(this,arguments)},De.prototype.unshiftAll=function(t){return this.pushAll(t)},De.prototype.shift=function(){return this.pop.apply(this,arguments)},De.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Re()},De.prototype.slice=function(t,e){if(s(t,e,this.size))return this;var n=c(t,this.size),r=f(e,this.size);if(r!==this.size)return B.prototype.slice.call(this,t,e);for(var i=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):ze(i,o)},De.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?ze(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},De.prototype.__iterate=function(t,e){var n=this;if(e)return this.reverse().__iterate(t);for(var r=0,i=this._head;i&&t(i.value,r++,n)!==!1;)i=i.next;return r},De.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new E(function(){if(r){var e=r.value;return r=r.next,I(t,n++,e)}return b()})},De.isStack=Ce;var Wn="@@__IMMUTABLE_STACK__@@",Xn=De.prototype;Xn[Wn]=!0,Xn.withMutations=Pn.withMutations,Xn.asMutable=Pn.asMutable,Xn.asImmutable=Pn.asImmutable,Xn.wasAltered=Pn.wasAltered;var Qn;t(Le,J),Le.of=function(){return this(arguments)},Le.fromKeys=function(t){return this(p(t).keySeq())},Le.prototype.toString=function(){return this.__toString("Set {","}")},Le.prototype.has=function(t){return this._map.has(t)},Le.prototype.add=function(t){return je(this,this._map.set(t,!0))},Le.prototype.remove=function(t){return je(this,this._map.remove(t))},Le.prototype.clear=function(){return je(this,this._map.clear())},Le.prototype.union=function(){var t=an.call(arguments,0);return t=t.filter(function(t){return 0!==t.size}),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations(function(e){for(var n=0;n1?" by "+this._step:"")+" ]"},Be.prototype.get=function(t,e){return this.has(t)?this._start+u(this,t)*this._step:e},Be.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e=0&&nn?b():I(t,o++,u)})},Be.prototype.equals=function(t){return t instanceof Be?this._start===t._start&&this._end===t._end&&this._step===t._step:Ye(this,t)};var ir;t(Je,R),Je.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Je.prototype.get=function(t,e){return this.has(t)?this._value:e},Je.prototype.includes=function(t){return W(this._value,t)},Je.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:new Je(this._value,f(e,n)-c(t,n))},Je.prototype.reverse=function(){return this},Je.prototype.indexOf=function(t){return W(this._value,t)?0:-1},Je.prototype.lastIndexOf=function(t){return W(this._value,t)?this.size:-1},Je.prototype.__iterate=function(t,e){for(var n=this,r=0;rthis.size?e:this.find(function(e,n){return n===t},void 0,e)},has:function(t){return t=u(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t-1&&t%1===0&&t<=Number.MAX_VALUE}var i=Function.prototype.bind;e.isString=function(t){return"string"==typeof t||"[object String]"===n(t)},e.isArray=Array.isArray||function(t){return"[object Array]"===n(t)},"function"!=typeof/./&&"object"!=typeof Int8Array?e.isFunction=function(t){return"function"==typeof t||!1}:e.isFunction=function(t){return"[object Function]"===toString.call(t)},e.isObject=function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},e.extend=function(t){var e=arguments,n=arguments.length;if(!t||n<2)return t||{};for(var r=1;r0)){var e=this.reactorState.get("dirtyStores");if(0!==e.size){var n=c.default.Set().withMutations(function(n){n.union(t.observerState.get("any")),e.forEach(function(e){var r=t.observerState.getIn(["stores",e]);r&&n.union(r)})});n.forEach(function(e){var n=t.observerState.getIn(["observersMap",e]);if(n){var r=n.get("getter"),i=n.get("handler"),o=p.evaluate(t.prevReactorState,r),u=p.evaluate(t.reactorState,r);t.prevReactorState=o.reactorState,t.reactorState=u.reactorState;var a=o.result,s=u.result;c.default.is(a,s)||i.call(null,s)}});var r=p.resetDirtyStores(this.reactorState);this.prevReactorState=r,this.reactorState=r}}}},{key:"batchStart",value:function(){this.__batchDepth++}},{key:"batchEnd",value:function(){if(this.__batchDepth--,this.__batchDepth<=0){this.__isDispatching=!0;try{this.__notify()}catch(t){throw this.__isDispatching=!1,t}this.__isDispatching=!1}}}]),t}();e.default=(0,y.toFactory)(g),t.exports=e.default},function(t,e,n){function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n={};return(0,o.each)(e,function(e,r){n[r]=t.evaluate(e)}),n}Object.defineProperty(e,"__esModule",{value:!0});var o=n(4);e.default=function(t){return{getInitialState:function(){return i(t,this.getDataBindings())},componentDidMount:function(){var e=this;this.__unwatchFns=[],(0,o.each)(this.getDataBindings(),function(n,i){var o=t.observe(n,function(t){e.setState(r({},i,t))});e.__unwatchFns.push(o)})},componentWillUnmount:function(){for(var t=this;this.__unwatchFns.length;)t.__unwatchFns.shift()()}}},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){return new L({result:t,reactorState:e})}function o(t,e){return t.withMutations(function(t){(0,R.each)(e,function(e,n){t.getIn(["stores",n])&&console.warn("Store already defined for id = "+n);var r=e.getInitialState();if(void 0===r&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store getInitialState() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(r))throw new Error("Store getInitialState() must return an immutable value, did you forget to call toImmutable");t.update("stores",function(t){return t.set(n,e)}).update("state",function(t){return t.set(n,r)}).update("dirtyStores",function(t){return t.add(n)}).update("storeStates",function(t){return b(t,[n])})}),I(t)})}function u(t,e){return t.withMutations(function(t){(0,R.each)(e,function(e,n){t.update("stores",function(t){return t.set(n,e)})})})}function a(t,e,n){if(void 0===e&&f(t,"throwOnUndefinedActionType"))throw new Error("`dispatch` cannot be called with an `undefined` action type.");var r=t.get("state"),i=t.get("dirtyStores"),o=r.withMutations(function(r){A.default.dispatchStart(t,e,n),t.get("stores").forEach(function(o,u){var a=r.get(u),s=void 0;try{s=o.handle(a,e,n)}catch(e){throw A.default.dispatchError(t,e.message),e}if(void 0===s&&f(t,"throwOnUndefinedStoreReturnValue")){var c="Store handler must return a value, did you forget a return statement";throw A.default.dispatchError(t,c),new Error(c)}r.set(u,s),a!==s&&(i=i.add(u))}),A.default.dispatchEnd(t,r,i)}),u=t.set("state",o).set("dirtyStores",i).update("storeStates",function(t){return b(t,i)});return I(u)}function s(t,e){var n=[],r=(0,D.toImmutable)({}).withMutations(function(r){(0,R.each)(e,function(e,i){var o=t.getIn(["stores",i]);if(o){var u=o.deserialize(e);void 0!==u&&(r.set(i,u),n.push(i))}})}),i=w.default.Set(n);return t.update("state",function(t){return t.merge(r)}).update("dirtyStores",function(t){return t.union(i)}).update("storeStates",function(t){return b(t,n)})}function c(t,e,n){var r=e;(0,z.isKeyPath)(e)&&(e=(0,C.fromKeyPath)(e));var i=t.get("nextId"),o=(0,C.getStoreDeps)(e),u=w.default.Map({id:i,storeDeps:o,getterKey:r,getter:e,handler:n}),a=void 0;return a=0===o.size?t.update("any",function(t){return t.add(i)}):t.withMutations(function(t){o.forEach(function(e){var n=["stores",e];t.hasIn(n)||t.setIn(n,w.default.Set()),t.updateIn(["stores",e],function(t){return t.add(i)})})}),a=a.set("nextId",i+1).setIn(["observersMap",i],u),{observerState:a,entry:u}}function f(t,e){var n=t.getIn(["options",e]);if(void 0===n)throw new Error("Invalid option: "+e);return n}function h(t,e,n){var r=t.get("observersMap").filter(function(t){var r=t.get("getterKey"),i=!n||t.get("handler")===n;return!!i&&((0,z.isKeyPath)(e)&&(0,z.isKeyPath)(r)?(0,z.isEqual)(e,r):e===r)});return t.withMutations(function(t){r.forEach(function(e){return l(t,e)})})}function l(t,e){return t.withMutations(function(t){var n=e.get("id"),r=e.get("storeDeps");0===r.size?t.update("any",function(t){return t.remove(n)}):r.forEach(function(e){t.updateIn(["stores",e],function(t){return t?t.remove(n):t})}),t.removeIn(["observersMap",n])})}function p(t){var e=t.get("state");return t.withMutations(function(t){var n=t.get("stores"),r=n.keySeq().toJS();n.forEach(function(n,r){var i=e.get(r),o=n.handleReset(i);if(void 0===o&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store handleReset() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(o))throw new Error("Store reset state must be an immutable value, did you forget to call toImmutable");t.setIn(["state",r],o)}),t.update("storeStates",function(t){return b(t,r)}),v(t)})}function _(t,e){var n=t.get("state");if((0,z.isKeyPath)(e))return i(n.getIn(e),t);if(!(0,C.isGetter)(e))throw new Error("evaluate must be passed a keyPath or Getter");if(g(t,e))return i(E(t,e),t);var r=(0,C.getDeps)(e).map(function(e){return _(t,e).result}),o=(0,C.getComputeFn)(e).apply(null,r);return i(o,m(t,e,o))}function d(t){var e={};return t.get("stores").forEach(function(n,r){var i=t.getIn(["state",r]),o=n.serialize(i);void 0!==o&&(e[r]=o)}),e}function v(t){return t.set("dirtyStores",w.default.Set())}function y(t){return t}function S(t,e){var n=y(e);return t.getIn(["cache",n])}function g(t,e){var n=S(t,e);if(!n)return!1;var r=n.get("storeStates");return 0!==r.size&&r.every(function(e,n){return t.getIn(["storeStates",n])===e})}function m(t,e,n){var r=y(e),i=t.get("dispatchId"),o=(0,C.getStoreDeps)(e),u=(0,D.toImmutable)({}).withMutations(function(e){o.forEach(function(n){var r=t.getIn(["storeStates",n]);e.set(n,r)})});return t.setIn(["cache",r],w.default.Map({value:n,storeStates:u,dispatchId:i}))}function E(t,e){var n=y(e);return t.getIn(["cache",n,"value"])}function I(t){return t.update("dispatchId",function(t){return t+1})}function b(t,e){return t.withMutations(function(t){e.forEach(function(e){var n=t.has(e)?t.get(e)+1:1;t.set(e,n)})})}Object.defineProperty(e,"__esModule",{value:!0}),e.registerStores=o,e.replaceStores=u,e.dispatch=a,e.loadState=s,e.addObserver=c,e.getOption=f,e.removeObserver=h,e.removeObserverByEntry=l,e.reset=p,e.evaluate=_,e.serialize=d,e.resetDirtyStores=v;var O=n(3),w=r(O),T=n(9),A=r(T),D=n(5),C=n(10),z=n(11),R=n(4),L=w.default.Record({result:null,reactorState:null})},function(t,e,n){var r=n(8);e.dispatchStart=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.groupCollapsed("Dispatch: %s",e),console.group("payload"),console.debug(n),console.groupEnd())},e.dispatchError=function(t,e){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.debug("Dispatch error: "+e),console.groupEnd())},e.dispatchEnd=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&((0,r.getOption)(t,"logDirtyStores")&&console.log("Stores updated:",n.toList().toJS()),(0,r.getOption)(t,"logAppState")&&console.debug("Dispatch done, new state: ",e.toJS()),console.groupEnd())}},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,l.isArray)(t)&&(0,l.isFunction)(t[t.length-1])}function o(t){return t[t.length-1]}function u(t){return t.slice(0,t.length-1)}function a(t,e){e||(e=h.default.Set());var n=h.default.Set().withMutations(function(e){if(!i(t))throw new Error("getFlattenedDeps must be passed a Getter");u(t).forEach(function(t){if((0,p.isKeyPath)(t))e.add((0,f.List)(t));else{if(!i(t))throw new Error("Invalid getter, each dependency must be a KeyPath or Getter");e.union(a(t))}})});return e.union(n)}function s(t){if(!(0,p.isKeyPath)(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,_]}function c(t){if(t.hasOwnProperty("__storeDeps"))return t.__storeDeps;var e=a(t).map(function(t){return t.first()}).filter(function(t){return!!t});return Object.defineProperty(t,"__storeDeps",{enumerable:!1,configurable:!1,writable:!1,value:e}),e}Object.defineProperty(e,"__esModule",{value:!0});var f=n(3),h=r(f),l=n(4),p=n(11),_=function(t){return t};e.default={isGetter:i,getComputeFn:o,getFlattenedDeps:a,getStoreDeps:c,getDeps:u,fromKeyPath:s},t.exports=e.default},function(t,e,n){function r(t){return t&&t.__esModule?t:{default:t}}function i(t){return(0,s.isArray)(t)&&!(0,s.isFunction)(t[t.length-1])}function o(t,e){var n=a.default.List(t),r=a.default.List(e);return a.default.is(n,r)}Object.defineProperty(e,"__esModule",{value:!0}),e.isKeyPath=i,e.isEqual=o;var u=n(3),a=r(u),s=n(4)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=(0,r.Map)({logDispatches:!1,logAppState:!1,logDirtyStores:!1,throwOnUndefinedActionType:!1,throwOnUndefinedStoreReturnValue:!1,throwOnNonImmutableStore:!1,throwOnDispatchInDispatch:!1});e.PROD_OPTIONS=i;var o=(0,r.Map)({logDispatches:!0,logAppState:!0,logDirtyStores:!0,throwOnUndefinedActionType:!0,throwOnUndefinedStoreReturnValue:!0,throwOnNonImmutableStore:!0,throwOnDispatchInDispatch:!0});e.DEBUG_OPTIONS=o;var u=(0,r.Record)({dispatchId:0,state:(0,r.Map)(),stores:(0,r.Map)(),cache:(0,r.Map)(),storeStates:(0,r.Map)(),dirtyStores:(0,r.Set)(),debug:!1,options:i});e.ReactorState=u;var a=(0,r.Record)({any:(0,r.Set)(),stores:(0,r.Map)({}),observersMap:(0,r.Map)({}),nextId:1});e.ObserverState=a}])})}),be=t(Ie),Oe=e(function(t){var e=function(t){var e,n={};if(!(t instanceof Object)||Array.isArray(t))throw new Error("keyMirror(...): Argument must be an object.");for(e in t)t.hasOwnProperty(e)&&(n[e]=e);return n};t.exports=e}),we=t(Oe),Te=we({VALIDATING_AUTH_TOKEN:null,VALID_AUTH_TOKEN:null,INVALID_AUTH_TOKEN:null,LOG_OUT:null}),Ae=be.Store,De=be.toImmutable,Ce=new Ae({getInitialState:function(){return De({isValidating:!1,authToken:!1,host:null,isInvalid:!1,errorMessage:""})},initialize:function(){this.on(Te.VALIDATING_AUTH_TOKEN,n),this.on(Te.VALID_AUTH_TOKEN,r),this.on(Te.INVALID_AUTH_TOKEN,i)}}),ze=be.Store,Re=be.toImmutable,Le=new ze({getInitialState:function(){return Re({authToken:null,host:""})},initialize:function(){this.on(Te.VALID_AUTH_TOKEN,o),this.on(Te.LOG_OUT,u)}}),Me=be.Store,je=new Me({getInitialState:function(){return!0},initialize:function(){this.on(Te.VALID_AUTH_TOKEN,a)}}),Ne=we({STREAM_START:null,STREAM_STOP:null,STREAM_ERROR:null}),ke="object"==typeof window&&"EventSource"in window,Ue=be.Store,He=be.toImmutable,Pe=new Ue({getInitialState:function(){return He({isSupported:ke,isStreaming:!1,useStreaming:!0,hasError:!1})},initialize:function(){this.on(Ne.STREAM_START,s),this.on(Ne.STREAM_STOP,c),this.on(Ne.STREAM_ERROR,f),this.on(Ne.LOG_OUT,h)}}),xe=we({API_FETCH_ALL_START:null,API_FETCH_ALL_SUCCESS:null,API_FETCH_ALL_FAIL:null,SYNC_SCHEDULED:null,SYNC_SCHEDULE_CANCELLED:null}),Ve=be.Store,qe=new Ve({getInitialState:function(){return!0},initialize:function(){this.on(xe.API_FETCH_ALL_START,function(){return!0}),this.on(xe.API_FETCH_ALL_SUCCESS,function(){return!1}),this.on(xe.API_FETCH_ALL_FAIL,function(){return!1}),this.on(xe.LOG_OUT,function(){return!1})}}),Fe=be.Store,Ge=new Fe({getInitialState:function(){return!1},initialize:function(){this.on(xe.SYNC_SCHEDULED,function(){return!0}),this.on(xe.SYNC_SCHEDULE_CANCELLED,function(){return!1}),this.on(xe.LOG_OUT,function(){return!1})}}),Ke=we({API_FETCH_SUCCESS:null,API_FETCH_START:null,API_FETCH_FAIL:null,API_SAVE_SUCCESS:null,API_SAVE_START:null,API_SAVE_FAIL:null,API_DELETE_SUCCESS:null,API_DELETE_START:null,API_DELETE_FAIL:null,LOG_OUT:null}),Ye=be.Store,Be=be.toImmutable,Je=new Ye({getInitialState:function(){return Be({})},initialize:function(){var t=this;this.on(Ke.API_FETCH_SUCCESS,l),this.on(Ke.API_SAVE_SUCCESS,l),this.on(Ke.API_DELETE_SUCCESS,p),this.on(Ke.LOG_OUT,function(){return t.getInitialState()})}}),We=e(function(t){function e(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function n(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(t){i[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}var r=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;t.exports=n()?Object.assign:function(t,n){for(var o,u,a=arguments,s=e(t),c=1;c199&&u.status<300?t(e):n(e)},u.onerror=function(){return n({})},r?(u.setRequestHeader("Content-Type","application/json;charset=UTF-8"),u.send(JSON.stringify(r))):u.send()})}function A(t,e){var n=e.message;return t.set(t.size,n)}function D(){return In.getInitialState()}function C(t,e){t.dispatch(gn.NOTIFICATION_CREATED,{message:e})}function z(t){t.registerStores({notifications:In})}function R(t,e){if("lock"===t)return!0;if("garage_door"===t)return!0;var n=e.get(t);return!!n&&n.services.has("turn_on")}function L(t,e){return!!t&&("group"===t.domain?"on"===t.state||"off"===t.state:R(t.domain,e))}function M(t,e){return[Wn(t),function(t){return!!t&&t.services.has(e)}]}function j(t){return[yn.byId(t),Jn,L]}function N(t,e,n){function r(){var c=(new Date).getTime()-a;c0?i=setTimeout(r,e-c):(i=null,n||(s=t.apply(u,o),i||(u=o=null)))}var i,o,u,a,s;null==e&&(e=100);var c=function(){u=this,o=arguments,a=(new Date).getTime();var c=n&&!i;return i||(i=setTimeout(r,e)),c&&(s=t.apply(u,o),u=o=null),s};return c.clear=function(){i&&(clearTimeout(i),i=null)},c}function k(t,e){var n=e.component;return t.push(n)}function U(t,e){var n=e.components;return ar(n)}function H(){return sr.getInitialState()}function P(t,e){var n=e.latitude,r=e.longitude,i=e.location_name,o=e.temperature_unit,u=e.time_zone,a=e.version;return fr({latitude:n,longitude:r,location_name:i,temperature_unit:o,time_zone:u,serverVersion:a})}function x(){return hr.getInitialState()}function V(t,e){t.dispatch(or.SERVER_CONFIG_LOADED,e)}function q(t){rn(t,"GET","config").then(function(e){return V(t,e)})}function F(t,e){t.dispatch(or.COMPONENT_LOADED,{component:e})}function G(t){return[["serverComponent"],function(e){return e.contains(t)}]}function K(t){t.registerStores({serverComponent:sr,serverConfig:hr})}function Y(t,e){var n=e.pane;return n}function B(){return Ir.getInitialState()}function J(t,e){var n=e.panels;return Or(n)}function W(){return wr.getInitialState()}function X(t,e){var n=e.show;return!!n}function Q(){return Ar.getInitialState()}function Z(t,e){t.dispatch(mr.SHOW_SIDEBAR,{show:e})}function $(t,e){t.dispatch(mr.NAVIGATE,{pane:e})}function tt(t,e){t.dispatch(mr.PANELS_LOADED,{panels:e})}function et(t,e){var n=e.entityId;return n}function nt(){return kr.getInitialState()}function rt(t,e){t.dispatch(jr.SELECT_ENTITY,{entityId:e})}function it(t){t.dispatch(jr.SELECT_ENTITY,{entityId:null})}function ot(t){return!t||(new Date).getTime()-t>6e4}function ut(t,e){var n=e.date;return n.toISOString()}function at(){return xr.getInitialState()}function st(t,e){var n=e.date,r=e.stateHistory;return 0===r.length?t.set(n,qr({})):t.withMutations(function(t){r.forEach(function(e){return t.setIn([n,e[0].entity_id],qr(e.map(cn.fromJSON)))})})}function ct(){return Fr.getInitialState()}function ft(t,e){var n=e.stateHistory;return t.withMutations(function(t){n.forEach(function(e){return t.set(e[0].entity_id,Br(e.map(cn.fromJSON)))})})}function ht(){return Jr.getInitialState()}function lt(t,e){var n=e.stateHistory,r=(new Date).getTime();return t.withMutations(function(t){n.forEach(function(e){return t.set(e[0].entity_id,r)}),history.length>1&&t.set(Qr,r)})}function pt(){return Zr.getInitialState()}function _t(t,e){t.dispatch(Hr.ENTITY_HISTORY_DATE_SELECTED,{date:e})}function dt(t,e){void 0===e&&(e=null),t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_START,{});var n="history/period";return null!==e&&(n+="?filter_entity_id="+e),rn(t,"GET",n).then(function(e){return t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_SUCCESS,{stateHistory:e})},function(){return t.dispatch(Hr.RECENT_ENTITY_HISTORY_FETCH_ERROR,{})})}function vt(t,e){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_START,{date:e}),rn(t,"GET","history/period/"+e).then(function(n){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_SUCCESS,{date:e,stateHistory:n})},function(){return t.dispatch(Hr.ENTITY_HISTORY_FETCH_ERROR,{})})}function yt(t){var e=t.evaluate(ei);return vt(t,e)}function St(t){t.registerStores({currentEntityHistoryDate:xr,entityHistory:Fr,isLoadingEntityHistory:Kr,recentEntityHistory:Jr,recentEntityHistoryUpdated:Zr})}function gt(t){t.registerStores({moreInfoEntityId:kr})}function mt(t,e){var n=e.model,r=e.result,i=e.params;if(null===t||"entity"!==n.entity||!i.replace)return t;for(var o=0;oQo}function ae(t){t.registerStores({currentLogbookDate:Uo,isLoadingLogbookEntries:Po,logbookEntries:Ko,logbookEntriesUpdated:Jo})}function se(t,e){return rn(t,"POST","template",{template:e})}function ce(t){return t.set("isListening",!0)}function fe(t,e){var n=e.interimTranscript,r=e.finalTranscript;return t.withMutations(function(t){return t.set("isListening",!0).set("isTransmitting",!1).set("interimTranscript",n).set("finalTranscript",r)})}function he(t,e){var n=e.finalTranscript;return t.withMutations(function(t){return t.set("isListening",!1).set("isTransmitting",!0).set("interimTranscript","").set("finalTranscript",n)})}function le(){return _u.getInitialState()}function pe(){return _u.getInitialState()}function _e(){return _u.getInitialState()}function de(t){return du[t.hassId]}function ve(t){var e=de(t);if(e){var n=e.finalTranscript||e.interimTranscript;t.dispatch(hu.VOICE_TRANSMITTING,{finalTranscript:n}),Zn.callService(t,"conversation","process",{text:n}).then(function(){t.dispatch(hu.VOICE_DONE)},function(){t.dispatch(hu.VOICE_ERROR)})}}function ye(t){var e=de(t);e&&(e.recognition.stop(),du[t.hassId]=!1)}function Se(t){ve(t),ye(t)}function ge(t){var e=Se.bind(null,t);e();var n=new webkitSpeechRecognition;du[t.hassId]={recognition:n,interimTranscript:"",finalTranscript:""},n.interimResults=!0,n.onstart=function(){return t.dispatch(hu.VOICE_START)},n.onerror=function(){return t.dispatch(hu.VOICE_ERROR)},n.onend=e,n.onresult=function(e){var n=de(t);if(n){for(var r="",i="",o=e.resultIndex;o=n)}function c(t,e){return h(t,e,0)}function f(t,e){return h(t,e,e)}function h(t,e,n){return void 0===t?n:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function l(t){return v(t)?t:C(t)}function p(t){return y(t)?t:z(t)}function _(t){return S(t)?t:R(t)}function d(t){return v(t)&&!g(t)?t:L(t)}function v(t){return!(!t||!t[dn])}function y(t){return!(!t||!t[vn])}function S(t){return!(!t||!t[yn])}function g(t){return y(t)||S(t)}function m(t){return!(!t||!t[Sn])}function E(t){this.next=t}function I(t,e,n,r){var i=0===t?e:1===t?n:[e,n];return r?r.value=i:r={value:i,done:!1},r}function b(){return{value:void 0,done:!0}}function O(t){return!!A(t)}function w(t){return t&&"function"==typeof t.next}function T(t){var e=A(t);return e&&e.call(t)}function A(t){var e=t&&(In&&t[In]||t[bn]);if("function"==typeof e)return e}function D(t){return t&&"number"==typeof t.length}function C(t){return null===t||void 0===t?H():v(t)?t.toSeq():V(t)}function z(t){return null===t||void 0===t?H().toKeyedSeq():v(t)?y(t)?t.toSeq():t.fromEntrySeq():P(t)}function R(t){return null===t||void 0===t?H():v(t)?y(t)?t.entrySeq():t.toIndexedSeq():x(t)}function L(t){return(null===t||void 0===t?H():v(t)?y(t)?t.entrySeq():t:x(t)).toSetSeq()}function M(t){this._array=t,this.size=t.length}function j(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function N(t){this._iterable=t,this.size=t.length||t.size}function k(t){this._iterator=t,this._iteratorCache=[]}function U(t){return!(!t||!t[wn])}function H(){return Tn||(Tn=new M([]))}function P(t){var e=Array.isArray(t)?new M(t).fromEntrySeq():w(t)?new k(t).fromEntrySeq():O(t)?new N(t).fromEntrySeq():"object"==typeof t?new j(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function x(t){var e=q(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function V(t){var e=q(t)||"object"==typeof t&&new j(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function q(t){return D(t)?new M(t):w(t)?new k(t):O(t)?new N(t):void 0}function F(t,e,n,r){var i=t._cache;if(i){for(var o=i.length-1,u=0;u<=o;u++){var a=i[n?o-u:u];if(e(a[1],r?a[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,n)}function G(t,e,n,r){var i=t._cache;if(i){var o=i.length-1,u=0;return new E(function(){var t=i[n?o-u:u];return u++>o?b():I(e,r?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,n)}function K(){throw TypeError("Abstract")}function Y(){}function B(){}function J(){}function W(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return!("function"!=typeof t.equals||"function"!=typeof e.equals||!t.equals(e))}function X(t,e){return e?Q(e,t,"",{"":t}):Z(t)}function Q(t,e,n,r){return Array.isArray(e)?t.call(r,n,R(e).map(function(n,r){return Q(t,n,r,e)})):$(e)?t.call(r,n,z(e).map(function(n,r){return Q(t,n,r,e)})):e}function Z(t){return Array.isArray(t)?R(t).map(Z).toList():$(t)?z(t).map(Z).toMap():t}function $(t){return t&&(t.constructor===Object||void 0===t.constructor)}function tt(t){return t>>>1&1073741824|3221225471&t}function et(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){var n=0|t;for(n!==t&&(n^=4294967295*t);t>4294967295;)t/=4294967295,n^=t;return tt(n)}return"string"===e?t.length>jn?nt(t):rt(t):"function"==typeof t.hashCode?t.hashCode():it(t)}function nt(t){var e=Un[t];return void 0===e&&(e=rt(t),kn===Nn&&(kn=0,Un={}),kn++,Un[t]=e),e}function rt(t){for(var e=0,n=0;n0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function ut(t,e){if(!t)throw new Error(e)}function at(t){ut(t!==1/0,"Cannot perform this action with an infinite size.")}function st(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ct(t){this._iter=t,this.size=t.size}function ft(t){this._iter=t,this.size=t.size}function ht(t){this._iter=t,this.size=t.size}function lt(t){var e=Mt(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=jt,e.__iterateUncached=function(e,n){var r=this;return t.__iterate(function(t,n){return e(n,t,r)!==!1},n)},e.__iteratorUncached=function(e,n){if(e===En){var r=t.__iterator(e,n);return new E(function(){var t=r.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===mn?gn:mn,n)},e}function pt(t,e,n){var r=Mt(t);return r.size=t.size,r.has=function(e){return t.has(e)},r.get=function(r,i){var o=t.get(r,ln);return o===ln?i:e.call(n,o,r,t)},r.__iterateUncached=function(r,i){var o=this;return t.__iterate(function(t,i,u){return r(e.call(n,t,i,u),i,o)!==!1},i)},r.__iteratorUncached=function(r,i){var o=t.__iterator(En,i);return new E(function(){var i=o.next();if(i.done)return i;var u=i.value,a=u[0];return I(r,a,e.call(n,u[1],a,t),i)})},r}function _t(t,e){var n=Mt(t);return n._iter=t,n.size=t.size,n.reverse=function(){return t},t.flip&&(n.flip=function(){var e=lt(t);return e.reverse=function(){return t.flip()},e}),n.get=function(n,r){return t.get(e?n:-1-n,r)},n.has=function(n){return t.has(e?n:-1-n)},n.includes=function(e){return t.includes(e)},n.cacheResult=jt,n.__iterate=function(e,n){var r=this;return t.__iterate(function(t,n){return e(t,n,r)},!n)},n.__iterator=function(e,n){return t.__iterator(e,!n)},n}function dt(t,e,n,r){var i=Mt(t);return r&&(i.has=function(r){var i=t.get(r,ln);return i!==ln&&!!e.call(n,i,r,t)},i.get=function(r,i){var o=t.get(r,ln);return o!==ln&&e.call(n,o,r,t)?o:i}),i.__iterateUncached=function(i,o){var u=this,a=0;return t.__iterate(function(t,o,s){if(e.call(n,t,o,s))return a++,i(t,r?o:a-1,u)},o),a},i.__iteratorUncached=function(i,o){var u=t.__iterator(En,o),a=0;return new E(function(){for(;;){var o=u.next();if(o.done)return o;var s=o.value,c=s[0],f=s[1];if(e.call(n,f,c,t))return I(i,r?c:a++,f,o)}})},i}function vt(t,e,n){var r=Ut().asMutable();return t.__iterate(function(i,o){r.update(e.call(n,i,o,t),0,function(t){return t+1})}),r.asImmutable()}function yt(t,e,n){var r=y(t),i=(m(t)?be():Ut()).asMutable();t.__iterate(function(o,u){i.update(e.call(n,o,u,t),function(t){return t=t||[],t.push(r?[u,o]:o),t})});var o=Lt(t);return i.map(function(e){return Ct(t,o(e))})}function St(t,e,n,r){var i=t.size;if(void 0!==e&&(e=0|e),void 0!==n&&(n=0|n),s(e,n,i))return t;var o=c(e,i),a=f(n,i);if(o!==o||a!==a)return St(t.toSeq().cacheResult(),e,n,r);var h,l=a-o;l===l&&(h=l<0?0:l);var p=Mt(t);return p.size=0===h?h:t.size&&h||void 0,!r&&U(t)&&h>=0&&(p.get=function(e,n){return e=u(this,e),e>=0&&eh)return b();var t=i.next();return r||e===mn?t:e===gn?I(e,a-1,void 0,t):I(e,a-1,t.value[1],t)})},p}function gt(t,e,n){var r=Mt(t);return r.__iterateUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterate(r,i);var u=0;return t.__iterate(function(t,i,a){return e.call(n,t,i,a)&&++u&&r(t,i,o)}),u},r.__iteratorUncached=function(r,i){var o=this;if(i)return this.cacheResult().__iterator(r,i);var u=t.__iterator(En,i),a=!0;return new E(function(){if(!a)return b();var t=u.next();if(t.done)return t;var i=t.value,s=i[0],c=i[1];return e.call(n,c,s,o)?r===En?t:I(r,s,c,t):(a=!1,b())})},r}function mt(t,e,n,r){var i=Mt(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var a=!0,s=0;return t.__iterate(function(t,o,c){if(!a||!(a=e.call(n,t,o,c)))return s++,i(t,r?o:s-1,u)}),s},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var a=t.__iterator(En,o),s=!0,c=0;return new E(function(){var t,o,f;do{if(t=a.next(),t.done)return r||i===mn?t:i===gn?I(i,c++,void 0,t):I(i,c++,t.value[1],t);var h=t.value;o=h[0],f=h[1],s&&(s=e.call(n,f,o,u))}while(s);return i===En?t:I(i,o,f,t)})},i}function Et(t,e){var n=y(t),r=[t].concat(e).map(function(t){return v(t)?n&&(t=p(t)):t=n?P(t):x(Array.isArray(t)?t:[t]),t}).filter(function(t){return 0!==t.size});if(0===r.length)return t;if(1===r.length){var i=r[0];if(i===t||n&&y(i)||S(t)&&S(i))return i}var o=new M(r);return n?o=o.toKeyedSeq():S(t)||(o=o.toSetSeq()),o=o.flatten(!0),o.size=r.reduce(function(t,e){if(void 0!==t){var n=e.size;if(void 0!==n)return t+n}},0),o}function It(t,e,n){var r=Mt(t);return r.__iterateUncached=function(r,i){function o(t,s){var c=this;t.__iterate(function(t,i){return(!e||s0}function Dt(t,e,n){var r=Mt(t);return r.size=new M(n).map(function(t){return t.size}).min(),r.__iterate=function(t,e){for(var n,r=this,i=this.__iterator(mn,e),o=0;!(n=i.next()).done&&t(n.value,o++,r)!==!1;);return o},r.__iteratorUncached=function(t,r){var i=n.map(function(t){return t=l(t),T(r?t.reverse():t)}),o=0,u=!1;return new E(function(){var n;return u||(n=i.map(function(t){return t.next()}),u=n.some(function(t){return t.done})),u?b():I(t,o++,e.apply(null,n.map(function(t){return t.value})))})},r}function Ct(t,e){return U(t)?e:t.constructor(e)}function zt(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function Rt(t){return at(t.size),o(t)}function Lt(t){return y(t)?p:S(t)?_:d}function Mt(t){return Object.create((y(t)?z:S(t)?R:L).prototype)}function jt(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):C.prototype.cacheResult.call(this)}function Nt(t,e){return t>e?1:t>>n)&hn,a=(0===n?r:r>>>n)&hn,s=u===a?[Zt(t,e,n+cn,r,i)]:(o=new Ft(e,r,i),u>>=1)u[a]=1&n?e[o++]:void 0;return u[r]=i,new Vt(t,o+1,u)}function ne(t,e,n){for(var r=[],i=0;i>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function ae(t,e,n,r){var o=r?t:i(t);return o[e]=n,o}function se(t,e,n,r){var i=t.length+1;if(r&&e+1===i)return t[e]=n,t;for(var o=new Array(i),u=0,a=0;a0&&ro?0:o-n,c=u-n;return c>fn&&(c=fn),function(){if(i===c)return Bn;var t=e?--c:i++;return r&&r[t]}}function i(t,r,i){var a,s=t&&t.array,c=i>o?0:o-i>>r,f=(u-i>>r)+1;return f>fn&&(f=fn),function(){for(;;){if(a){var t=a();if(t!==Bn)return t;a=null}if(c===f)return Bn;var o=e?--f:c++;a=n(s&&s[o],r-cn,i+(o<=t.size||n<0)return t.withMutations(function(t){n<0?me(t,n).set(0,r):me(t,0,n+1).set(n,r)});n+=t._origin;var i=t._tail,o=t._root,a=e(_n);return n>=Ie(t._capacity)?i=ye(i,t.__ownerID,0,n,r,a):o=ye(o,t.__ownerID,t._level,n,r,a),a.value?t.__ownerID?(t._root=o,t._tail=i,t.__hash=void 0,t.__altered=!0,t):_e(t._origin,t._capacity,t._level,o,i):t}function ye(t,e,r,i,o,u){var a=i>>>r&hn,s=t&&a0){var f=t&&t.array[a],h=ye(f,e,r-cn,i,o,u);return h===f?t:(c=Se(t,e),c.array[a]=h,c)}return s&&t.array[a]===o?t:(n(u),c=Se(t,e),void 0===o&&a===c.array.length-1?c.array.pop():c.array[a]=o,c)}function Se(t,e){return e&&t&&e===t.ownerID?t:new le(t?t.array.slice():[],e)}function ge(t,e){if(e>=Ie(t._capacity))return t._tail;if(e<1<0;)n=n.array[e>>>r&hn],r-=cn;return n}}function me(t,e,n){void 0!==e&&(e=0|e),void 0!==n&&(n=0|n);var i=t.__ownerID||new r,o=t._origin,u=t._capacity,a=o+e,s=void 0===n?u:n<0?u+n:o+n;if(a===o&&s===u)return t;if(a>=s)return t.clear();for(var c=t._level,f=t._root,h=0;a+h<0;)f=new le(f&&f.array.length?[void 0,f]:[],i),c+=cn,h+=1<=1<l?new le([],i):_;if(_&&p>l&&acn;y-=cn){var S=l>>>y&hn;v=v.array[S]=Se(v.array[S],i)}v.array[l>>>cn&hn]=_}if(s=p)a-=p,s-=p,c=cn,f=null,d=d&&d.removeBefore(i,0,a);else if(a>o||p>>c&hn;if(g!==p>>>c&hn)break;g&&(h+=(1<o&&(f=f.removeBefore(i,c,a-h)),f&&pi&&(i=a.size),v(u)||(a=a.map(function(t){return X(t)})),r.push(a)}return i>t.size&&(t=t.setSize(i)),ie(t,e,r)}function Ie(t){return t>>cn<=fn&&u.size>=2*o.size?(i=u.filter(function(t,e){return void 0!==t&&a!==e}),r=i.toKeyedSeq().map(function(t){return t[0]}).flip().toMap(),t.__ownerID&&(r.__ownerID=i.__ownerID=t.__ownerID)):(r=o.remove(e),i=a===u.size-1?u.pop():u.set(a,void 0))}else if(s){if(n===u.get(a)[1])return t;r=o,i=u.set(a,[e,n])}else r=o.set(e,u.size),i=u.set(u.size,[e,n]);return t.__ownerID?(t.size=r.size,t._map=r,t._list=i,t.__hash=void 0,t):we(r,i)}function De(t){return null===t||void 0===t?Re():Ce(t)?t:Re().unshiftAll(t)}function Ce(t){return!(!t||!t[Wn])}function ze(t,e,n,r){var i=Object.create(Xn);return i.size=t,i._head=e,i.__ownerID=n,i.__hash=r,i.__altered=!1,i}function Re(){return Qn||(Qn=ze(0))}function Le(t){return null===t||void 0===t?ke():Me(t)&&!m(t)?t:ke().withMutations(function(e){var n=d(t);at(n.size),n.forEach(function(t){return e.add(t)})})}function Me(t){return!(!t||!t[Zn])}function je(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function Ne(t,e){var n=Object.create($n);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function ke(){return tr||(tr=Ne(Jt()))}function Ue(t){return null===t||void 0===t?xe():He(t)?t:xe().withMutations(function(e){var n=d(t);at(n.size),n.forEach(function(t){return e.add(t)})})}function He(t){return Me(t)&&m(t)}function Pe(t,e){var n=Object.create(er);return n.size=t?t.size:0,n._map=t,n.__ownerID=e,n}function xe(){return nr||(nr=Pe(Te()))}function Ve(t,e){var n,r=function(o){if(o instanceof r)return o;if(!(this instanceof r))return new r(o);if(!n){n=!0;var u=Object.keys(t);Ge(i,u),i.size=u.length,i._name=e,i._keys=u,i._defaultValues=t}this._map=Ut(o)},i=r.prototype=Object.create(rr);return i.constructor=r,r}function qe(t,e,n){var r=Object.create(Object.getPrototypeOf(t));return r._map=e,r.__ownerID=n,r}function Fe(t){return t._name||t.constructor.name||"Record"}function Ge(t,e){try{e.forEach(Ke.bind(void 0,t))}catch(n){}}function Ke(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){ut(this.__ownerID,"Cannot set on an immutable record."),this.set(e,t)}})}function Ye(t,e){if(t===e)return!0;if(!v(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||y(t)!==y(e)||S(t)!==S(e)||m(t)!==m(e))return!1;if(0===t.size&&0===e.size)return!0;var n=!g(t);if(m(t)){var r=t.entries();return e.every(function(t,e){var i=r.next().value;return i&&W(i[1],t)&&(n||W(i[0],e))})&&r.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var u=!0,a=e.__iterate(function(e,r){if(n?!t.has(e):i?!W(e,t.get(r,ln)):!W(t.get(r,ln),e))return u=!1,!1});return u&&t.size===a}function Be(t,e,n){if(!(this instanceof Be))return new Be(t,e,n);if(ut(0!==n,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),n=void 0===n?1:Math.abs(n),ee?-1:0}function rn(t){if(t.size===1/0)return 0;var e=m(t),n=y(t),r=e?1:0,i=t.__iterate(n?e?function(t,e){r=31*r+un(et(t),et(e))|0}:function(t,e){r=r+un(et(t),et(e))|0}:e?function(t){r=31*r+et(t)|0}:function(t){r=r+et(t)|0});return on(i,r)}function on(t,e){return e=Dn(e,3432918353),e=Dn(e<<15|e>>>-15,461845907),e=Dn(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=Dn(e^e>>>16,2246822507),e=Dn(e^e>>>13,3266489909),e=tt(e^e>>>16)}function un(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var an=Array.prototype.slice,sn="delete",cn=5,fn=1<r?b():I(t,i,n[e?r-i++:i++])})},t(j,z),j.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},j.prototype.has=function(t){return this._object.hasOwnProperty(t)},j.prototype.__iterate=function(t,e){for(var n=this,r=this._object,i=this._keys,o=i.length-1,u=0;u<=o;u++){var a=i[e?o-u:u];if(t(r[a],a,n)===!1)return u+1}return u},j.prototype.__iterator=function(t,e){var n=this._object,r=this._keys,i=r.length-1,o=0;return new E(function(){var u=r[e?i-o:o];return o++>i?b():I(t,u,n[u])})},j.prototype[Sn]=!0,t(N,R),N.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);var r=this._iterable,i=T(r),o=0;if(w(i))for(var u;!(u=i.next()).done&&t(u.value,o++,n)!==!1;);return o},N.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var n=this._iterable,r=T(n);if(!w(r))return new E(b);var i=0;return new E(function(){var e=r.next();return e.done?e:I(t,i++,e.value)})},t(k,R),k.prototype.__iterateUncached=function(t,e){var n=this;if(e)return this.cacheResult().__iterate(t,e);for(var r=this._iterator,i=this._iteratorCache,o=0;o=r.length){var e=n.next();if(e.done)return e;r[i]=e.value}return I(t,i,r[i++])})};var Tn;t(K,l),t(Y,K),t(B,K),t(J,K),K.Keyed=Y,K.Indexed=B,K.Set=J;var An,Dn="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(t,e){t=0|t,e=0|e;var n=65535&t,r=65535&e;return n*r+((t>>>16)*r+n*(e>>>16)<<16>>>0)|0},Cn=Object.isExtensible,zn=function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}}(),Rn="function"==typeof WeakMap;Rn&&(An=new WeakMap);var Ln=0,Mn="__immutablehash__";"function"==typeof Symbol&&(Mn=Symbol(Mn));var jn=16,Nn=255,kn=0,Un={};t(st,z),st.prototype.get=function(t,e){return this._iter.get(t,e)},st.prototype.has=function(t){return this._iter.has(t)},st.prototype.valueSeq=function(){return this._iter.valueSeq()},st.prototype.reverse=function(){var t=this,e=_t(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},st.prototype.map=function(t,e){var n=this,r=pt(this,t,e);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(t,e)}),r},st.prototype.__iterate=function(t,e){var n,r=this;return this._iter.__iterate(this._useKeys?function(e,n){return t(e,n,r)}:(n=e?Rt(this):0,function(i){return t(i,e?--n:n++,r)}),e)},st.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var n=this._iter.__iterator(mn,e),r=e?Rt(this):0;return new E(function(){var i=n.next();return i.done?i:I(t,e?--r:r++,i.value,i)})},st.prototype[Sn]=!0,t(ct,R),ct.prototype.includes=function(t){return this._iter.includes(t)},ct.prototype.__iterate=function(t,e){var n=this,r=0;return this._iter.__iterate(function(e){return t(e,r++,n)},e)},ct.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e),r=0;return new E(function(){var e=n.next();return e.done?e:I(t,r++,e.value,e)})},t(ft,L),ft.prototype.has=function(t){return this._iter.includes(t)},ft.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){return t(e,e,n)},e)},ft.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e);return new E(function(){var e=n.next();return e.done?e:I(t,e.value,e.value,e)})},t(ht,z),ht.prototype.entrySeq=function(){return this._iter.toSeq()},ht.prototype.__iterate=function(t,e){var n=this;return this._iter.__iterate(function(e){if(e){zt(e);var r=v(e);return t(r?e.get(1):e[1],r?e.get(0):e[0],n)}},e)},ht.prototype.__iterator=function(t,e){var n=this._iter.__iterator(mn,e);return new E(function(){for(;;){var e=n.next();if(e.done)return e;var r=e.value;if(r){zt(r);var i=v(r);return I(t,i?r.get(0):r[0],i?r.get(1):r[1],e)}}})},ct.prototype.cacheResult=st.prototype.cacheResult=ft.prototype.cacheResult=ht.prototype.cacheResult=jt,t(Ut,Y),Ut.prototype.toString=function(){return this.__toString("Map {","}")},Ut.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Ut.prototype.set=function(t,e){return Wt(this,t,e)},Ut.prototype.setIn=function(t,e){return this.updateIn(t,ln,function(){return e})},Ut.prototype.remove=function(t){return Wt(this,t,ln)},Ut.prototype.deleteIn=function(t){return this.updateIn(t,function(){return ln})},Ut.prototype.update=function(t,e,n){return 1===arguments.length?t(this):this.updateIn([t],e,n)},Ut.prototype.updateIn=function(t,e,n){n||(n=e,e=void 0);var r=oe(this,kt(t),e,n);return r===ln?void 0:r},Ut.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Jt()},Ut.prototype.merge=function(){return ne(this,void 0,arguments)},Ut.prototype.mergeWith=function(t){var e=an.call(arguments,1);return ne(this,t,e)},Ut.prototype.mergeIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]})},Ut.prototype.mergeDeep=function(){return ne(this,re(void 0),arguments)},Ut.prototype.mergeDeepWith=function(t){var e=an.call(arguments,1);return ne(this,re(t),e)},Ut.prototype.mergeDeepIn=function(t){var e=an.call(arguments,1);return this.updateIn(t,Jt(),function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]})},Ut.prototype.sort=function(t){return be(wt(this,t))},Ut.prototype.sortBy=function(t,e){return be(wt(this,e,t))},Ut.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Ut.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new r)},Ut.prototype.asImmutable=function(){return this.__ensureOwner()},Ut.prototype.wasAltered=function(){return this.__altered},Ut.prototype.__iterator=function(t,e){return new Gt(this,t,e)},Ut.prototype.__iterate=function(t,e){var n=this,r=0;return this._root&&this._root.iterate(function(e){return r++,t(e[1],e[0],n)},e),r},Ut.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Bt(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Ut.isMap=Ht;var Hn="@@__IMMUTABLE_MAP__@@",Pn=Ut.prototype;Pn[Hn]=!0,Pn[sn]=Pn.remove,Pn.removeIn=Pn.deleteIn,Pt.prototype.get=function(t,e,n,r){for(var i=this.entries,o=0,u=i.length;o=Vn)return $t(t,f,o,u);var _=t&&t===this.ownerID,d=_?f:i(f);return p?c?h===l-1?d.pop():d[h]=d.pop():d[h]=[o,u]:d.push([o,u]),_?(this.entries=d,this):new Pt(t,d)}},xt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=1<<((0===t?e:e>>>t)&hn),o=this.bitmap;return 0===(o&i)?r:this.nodes[ue(o&i-1)].get(t+cn,e,n,r)},xt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=1<=qn)return ee(t,l,c,a,_);if(f&&!_&&2===l.length&&Qt(l[1^h]))return l[1^h];if(f&&_&&1===l.length&&Qt(_))return _;var d=t&&t===this.ownerID,v=f?_?c:c^s:c|s,y=f?_?ae(l,h,_,d):ce(l,h,d):se(l,h,_,d);return d?(this.bitmap=v,this.nodes=y,this):new xt(t,v,y)},Vt.prototype.get=function(t,e,n,r){void 0===e&&(e=et(n));var i=(0===t?e:e>>>t)&hn,o=this.nodes[i];return o?o.get(t+cn,e,n,r):r},Vt.prototype.update=function(t,e,n,r,i,o,u){void 0===n&&(n=et(r));var a=(0===e?n:n>>>e)&hn,s=i===ln,c=this.nodes,f=c[a];if(s&&!f)return this;var h=Xt(f,t,e+cn,n,r,i,o,u);if(h===f)return this;var l=this.count;if(f){if(!h&&(l--,l=0&&t>>e&hn;if(r>=this.array.length)return new le([],t);var i,o=0===r;if(e>0){var u=this.array[r];if(i=u&&u.removeBefore(t,e-cn,n),i===u&&o)return this}if(o&&!i)return this;var a=Se(this,t);if(!o)for(var s=0;s>>e&hn;if(r>=this.array.length)return this;var i;if(e>0){var o=this.array[r];if(i=o&&o.removeAfter(t,e-cn,n),i===o&&r===this.array.length-1)return this}var u=Se(this,t);return u.array.splice(r+1),i&&(u.array[r]=i),u};var Yn,Bn={};t(be,Ut),be.of=function(){return this(arguments)},be.prototype.toString=function(){return this.__toString("OrderedMap {","}")},be.prototype.get=function(t,e){var n=this._map.get(t);return void 0!==n?this._list.get(n)[1]:e},be.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):Te()},be.prototype.set=function(t,e){return Ae(this,t,e)},be.prototype.remove=function(t){return Ae(this,t,ln)},be.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},be.prototype.__iterate=function(t,e){var n=this;return this._list.__iterate(function(e){return e&&t(e[1],e[0],n)},e)},be.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},be.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),n=this._list.__ensureOwner(t);return t?we(e,n,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=n,this)},be.isOrderedMap=Oe,be.prototype[Sn]=!0,be.prototype[sn]=be.prototype.remove;var Jn;t(De,B),De.of=function(){return this(arguments)},De.prototype.toString=function(){return this.__toString("Stack [","]")},De.prototype.get=function(t,e){var n=this._head;for(t=u(this,t);n&&t--;)n=n.next;return n?n.value:e},De.prototype.peek=function(){return this._head&&this._head.value},De.prototype.push=function(){var t=arguments;if(0===arguments.length)return this;for(var e=this.size+arguments.length,n=this._head,r=arguments.length-1;r>=0;r--)n={value:t[r],next:n};return this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pushAll=function(t){if(t=_(t),0===t.size)return this;at(t.size);var e=this.size,n=this._head;return t.reverse().forEach(function(t){e++,n={value:t,next:n}}),this.__ownerID?(this.size=e,this._head=n,this.__hash=void 0,this.__altered=!0,this):ze(e,n)},De.prototype.pop=function(){return this.slice(1)},De.prototype.unshift=function(){return this.push.apply(this,arguments)},De.prototype.unshiftAll=function(t){return this.pushAll(t)},De.prototype.shift=function(){return this.pop.apply(this,arguments)},De.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Re()},De.prototype.slice=function(t,e){if(s(t,e,this.size))return this;var n=c(t,this.size),r=f(e,this.size);if(r!==this.size)return B.prototype.slice.call(this,t,e);for(var i=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):ze(i,o)},De.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?ze(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},De.prototype.__iterate=function(t,e){var n=this;if(e)return this.reverse().__iterate(t);for(var r=0,i=this._head;i&&t(i.value,r++,n)!==!1;)i=i.next;return r},De.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var n=0,r=this._head;return new E(function(){if(r){var e=r.value;return r=r.next,I(t,n++,e)}return b()})},De.isStack=Ce;var Wn="@@__IMMUTABLE_STACK__@@",Xn=De.prototype;Xn[Wn]=!0,Xn.withMutations=Pn.withMutations,Xn.asMutable=Pn.asMutable,Xn.asImmutable=Pn.asImmutable,Xn.wasAltered=Pn.wasAltered;var Qn;t(Le,J),Le.of=function(){return this(arguments)},Le.fromKeys=function(t){return this(p(t).keySeq())},Le.prototype.toString=function(){return this.__toString("Set {","}")},Le.prototype.has=function(t){return this._map.has(t)},Le.prototype.add=function(t){return je(this,this._map.set(t,!0))},Le.prototype.remove=function(t){return je(this,this._map.remove(t))},Le.prototype.clear=function(){return je(this,this._map.clear())},Le.prototype.union=function(){var t=an.call(arguments,0);return t=t.filter(function(t){return 0!==t.size}),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations(function(e){for(var n=0;n1?" by "+this._step:"")+" ]"},Be.prototype.get=function(t,e){return this.has(t)?this._start+u(this,t)*this._step:e},Be.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e=0&&nn?b():I(t,o++,u)})},Be.prototype.equals=function(t){return t instanceof Be?this._start===t._start&&this._end===t._end&&this._step===t._step:Ye(this,t)};var ir;t(Je,R),Je.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Je.prototype.get=function(t,e){return this.has(t)?this._value:e},Je.prototype.includes=function(t){return W(this._value,t)},Je.prototype.slice=function(t,e){var n=this.size;return s(t,e,n)?this:new Je(this._value,f(e,n)-c(t,n))},Je.prototype.reverse=function(){return this},Je.prototype.indexOf=function(t){return W(this._value,t)?0:-1},Je.prototype.lastIndexOf=function(t){return W(this._value,t)?this.size:-1},Je.prototype.__iterate=function(t,e){for(var n=this,r=0;rthis.size?e:this.find(function(e,n){return n===t},void 0,e)},has:function(t){return t=u(this,t),t>=0&&(void 0!==this.size?this.size===1/0||t-1&&t%1===0&&t<=Number.MAX_VALUE}var i=Function.prototype.bind;e.isString=function(t){return"string"==typeof t||"[object String]"===n(t)},e.isArray=Array.isArray||function(t){return"[object Array]"===n(t)},"function"!=typeof/./&&"object"!=typeof Int8Array?e.isFunction=function(t){return"function"==typeof t||!1}:e.isFunction=function(t){return"[object Function]"===toString.call(t)},e.isObject=function(t){var e=typeof t;return"function"===e||"object"===e&&!!t},e.extend=function(t){var e=arguments,n=arguments.length;if(!t||n<2)return t||{};for(var r=1;r0)){var e=this.reactorState.get("dirtyStores");if(0!==e.size){var n=c["default"].Set().withMutations(function(n){n.union(t.observerState.get("any")),e.forEach(function(e){var r=t.observerState.getIn(["stores",e]);r&&n.union(r)})});n.forEach(function(e){var n=t.observerState.getIn(["observersMap",e]);if(n){var r=n.get("getter"),i=n.get("handler"),o=p.evaluate(t.prevReactorState,r),u=p.evaluate(t.reactorState,r);t.prevReactorState=o.reactorState,t.reactorState=u.reactorState;var a=o.result,s=u.result;c["default"].is(a,s)||i.call(null,s)}});var r=p.resetDirtyStores(this.reactorState);this.prevReactorState=r,this.reactorState=r}}}},{key:"batchStart",value:function(){this.__batchDepth++}},{key:"batchEnd",value:function(){if(this.__batchDepth--,this.__batchDepth<=0){this.__isDispatching=!0;try{this.__notify()}catch(t){throw this.__isDispatching=!1,t}this.__isDispatching=!1}}}]),t}();e["default"]=(0,y.toFactory)(g),t.exports=e["default"]},function(t,e,n){function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n={};return(0,o.each)(e,function(e,r){n[r]=t.evaluate(e)}),n}Object.defineProperty(e,"__esModule",{value:!0});var o=n(4);e["default"]=function(t){return{getInitialState:function(){return i(t,this.getDataBindings())},componentDidMount:function(){var e=this;this.__unwatchFns=[],(0,o.each)(this.getDataBindings(),function(n,i){var o=t.observe(n,function(t){e.setState(r({},i,t))});e.__unwatchFns.push(o)})},componentWillUnmount:function(){for(var t=this;this.__unwatchFns.length;)t.__unwatchFns.shift()()}}},t.exports=e["default"]},function(t,e,n){function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){return new L({result:t,reactorState:e})}function o(t,e){return t.withMutations(function(t){(0,R.each)(e,function(e,n){t.getIn(["stores",n])&&console.warn("Store already defined for id = "+n);var r=e.getInitialState();if(void 0===r&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store getInitialState() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(r))throw new Error("Store getInitialState() must return an immutable value, did you forget to call toImmutable");t.update("stores",function(t){return t.set(n,e)}).update("state",function(t){return t.set(n,r)}).update("dirtyStores",function(t){return t.add(n)}).update("storeStates",function(t){return b(t,[n])})}),I(t)})}function u(t,e){return t.withMutations(function(t){(0,R.each)(e,function(e,n){t.update("stores",function(t){return t.set(n,e)})})})}function a(t,e,n){if(void 0===e&&f(t,"throwOnUndefinedActionType"))throw new Error("`dispatch` cannot be called with an `undefined` action type.");var r=t.get("state"),i=t.get("dirtyStores"),o=r.withMutations(function(r){A["default"].dispatchStart(t,e,n),t.get("stores").forEach(function(o,u){var a=r.get(u),s=void 0;try{s=o.handle(a,e,n)}catch(c){throw A["default"].dispatchError(t,c.message),c}if(void 0===s&&f(t,"throwOnUndefinedStoreReturnValue")){var h="Store handler must return a value, did you forget a return statement";throw A["default"].dispatchError(t,h),new Error(h)}r.set(u,s),a!==s&&(i=i.add(u))}),A["default"].dispatchEnd(t,r,i)}),u=t.set("state",o).set("dirtyStores",i).update("storeStates",function(t){return b(t,i)});return I(u)}function s(t,e){var n=[],r=(0,D.toImmutable)({}).withMutations(function(r){(0,R.each)(e,function(e,i){var o=t.getIn(["stores",i]);if(o){var u=o.deserialize(e);void 0!==u&&(r.set(i,u),n.push(i))}})}),i=w["default"].Set(n);return t.update("state",function(t){return t.merge(r)}).update("dirtyStores",function(t){return t.union(i)}).update("storeStates",function(t){return b(t,n)})}function c(t,e,n){var r=e;(0,z.isKeyPath)(e)&&(e=(0,C.fromKeyPath)(e));var i=t.get("nextId"),o=(0,C.getStoreDeps)(e),u=w["default"].Map({id:i,storeDeps:o,getterKey:r,getter:e,handler:n}),a=void 0;return a=0===o.size?t.update("any",function(t){return t.add(i)}):t.withMutations(function(t){o.forEach(function(e){var n=["stores",e];t.hasIn(n)||t.setIn(n,w["default"].Set()),t.updateIn(["stores",e],function(t){return t.add(i)})})}),a=a.set("nextId",i+1).setIn(["observersMap",i],u),{observerState:a,entry:u}}function f(t,e){var n=t.getIn(["options",e]);if(void 0===n)throw new Error("Invalid option: "+e);return n}function h(t,e,n){var r=t.get("observersMap").filter(function(t){var r=t.get("getterKey"),i=!n||t.get("handler")===n;return!!i&&((0,z.isKeyPath)(e)&&(0,z.isKeyPath)(r)?(0,z.isEqual)(e,r):e===r)});return t.withMutations(function(t){r.forEach(function(e){return l(t,e)})})}function l(t,e){return t.withMutations(function(t){var n=e.get("id"),r=e.get("storeDeps");0===r.size?t.update("any",function(t){return t.remove(n)}):r.forEach(function(e){t.updateIn(["stores",e],function(t){return t?t.remove(n):t})}),t.removeIn(["observersMap",n])})}function p(t){var e=t.get("state");return t.withMutations(function(t){var n=t.get("stores"),r=n.keySeq().toJS();n.forEach(function(n,r){var i=e.get(r),o=n.handleReset(i);if(void 0===o&&f(t,"throwOnUndefinedStoreReturnValue"))throw new Error("Store handleReset() must return a value, did you forget a return statement");if(f(t,"throwOnNonImmutableStore")&&!(0,D.isImmutableValue)(o))throw new Error("Store reset state must be an immutable value, did you forget to call toImmutable");t.setIn(["state",r],o)}),t.update("storeStates",function(t){return b(t,r)}),v(t)})}function _(t,e){var n=t.get("state");if((0,z.isKeyPath)(e))return i(n.getIn(e),t);if(!(0,C.isGetter)(e))throw new Error("evaluate must be passed a keyPath or Getter");if(g(t,e))return i(E(t,e),t);var r=(0,C.getDeps)(e).map(function(e){return _(t,e).result}),o=(0,C.getComputeFn)(e).apply(null,r);return i(o,m(t,e,o))}function d(t){var e={};return t.get("stores").forEach(function(n,r){var i=t.getIn(["state",r]),o=n.serialize(i);void 0!==o&&(e[r]=o)}),e}function v(t){return t.set("dirtyStores",w["default"].Set())}function y(t){return t}function S(t,e){var n=y(e);return t.getIn(["cache",n])}function g(t,e){var n=S(t,e);if(!n)return!1;var r=n.get("storeStates");return 0!==r.size&&r.every(function(e,n){return t.getIn(["storeStates",n])===e})}function m(t,e,n){var r=y(e),i=t.get("dispatchId"),o=(0,C.getStoreDeps)(e),u=(0,D.toImmutable)({}).withMutations(function(e){o.forEach(function(n){var r=t.getIn(["storeStates",n]);e.set(n,r)})});return t.setIn(["cache",r],w["default"].Map({value:n,storeStates:u,dispatchId:i}))}function E(t,e){var n=y(e);return t.getIn(["cache",n,"value"])}function I(t){return t.update("dispatchId",function(t){return t+1})}function b(t,e){return t.withMutations(function(t){e.forEach(function(e){var n=t.has(e)?t.get(e)+1:1;t.set(e,n)})})}Object.defineProperty(e,"__esModule",{value:!0}),e.registerStores=o,e.replaceStores=u,e.dispatch=a,e.loadState=s,e.addObserver=c,e.getOption=f,e.removeObserver=h,e.removeObserverByEntry=l,e.reset=p,e.evaluate=_,e.serialize=d,e.resetDirtyStores=v;var O=n(3),w=r(O),T=n(9),A=r(T),D=n(5),C=n(10),z=n(11),R=n(4),L=w["default"].Record({result:null,reactorState:null})},function(t,e,n){var r=n(8);e.dispatchStart=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.groupCollapsed("Dispatch: %s",e),console.group("payload"),console.debug(n),console.groupEnd())},e.dispatchError=function(t,e){(0,r.getOption)(t,"logDispatches")&&console.group&&(console.debug("Dispatch error: "+e),console.groupEnd())},e.dispatchEnd=function(t,e,n){(0,r.getOption)(t,"logDispatches")&&console.group&&((0,r.getOption)(t,"logDirtyStores")&&console.log("Stores updated:",n.toList().toJS()),(0,r.getOption)(t,"logAppState")&&console.debug("Dispatch done, new state: ",e.toJS()),console.groupEnd())}},function(t,e,n){function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){return(0,l.isArray)(t)&&(0,l.isFunction)(t[t.length-1])}function o(t){return t[t.length-1]}function u(t){return t.slice(0,t.length-1)}function a(t,e){e||(e=h["default"].Set());var n=h["default"].Set().withMutations(function(e){if(!i(t))throw new Error("getFlattenedDeps must be passed a Getter");u(t).forEach(function(t){if((0,p.isKeyPath)(t))e.add((0,f.List)(t));else{if(!i(t))throw new Error("Invalid getter, each dependency must be a KeyPath or Getter");e.union(a(t))}})});return e.union(n)}function s(t){if(!(0,p.isKeyPath)(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,_]}function c(t){if(t.hasOwnProperty("__storeDeps"))return t.__storeDeps;var e=a(t).map(function(t){return t.first()}).filter(function(t){return!!t});return Object.defineProperty(t,"__storeDeps",{enumerable:!1,configurable:!1,writable:!1,value:e}),e}Object.defineProperty(e,"__esModule",{value:!0});var f=n(3),h=r(f),l=n(4),p=n(11),_=function(t){return t};e["default"]={isGetter:i,getComputeFn:o,getFlattenedDeps:a,getStoreDeps:c,getDeps:u,fromKeyPath:s},t.exports=e["default"]},function(t,e,n){function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){return(0,s.isArray)(t)&&!(0,s.isFunction)(t[t.length-1])}function o(t,e){var n=a["default"].List(t),r=a["default"].List(e);return a["default"].is(n,r)}Object.defineProperty(e,"__esModule",{value:!0}),e.isKeyPath=i,e.isEqual=o;var u=n(3),a=r(u),s=n(4)},function(t,e,n){Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=(0,r.Map)({logDispatches:!1,logAppState:!1,logDirtyStores:!1,throwOnUndefinedActionType:!1,throwOnUndefinedStoreReturnValue:!1,throwOnNonImmutableStore:!1,throwOnDispatchInDispatch:!1});e.PROD_OPTIONS=i;var o=(0,r.Map)({logDispatches:!0,logAppState:!0,logDirtyStores:!0,throwOnUndefinedActionType:!0,throwOnUndefinedStoreReturnValue:!0,throwOnNonImmutableStore:!0,throwOnDispatchInDispatch:!0});e.DEBUG_OPTIONS=o;var u=(0,r.Record)({dispatchId:0,state:(0,r.Map)(),stores:(0,r.Map)(),cache:(0,r.Map)(),storeStates:(0,r.Map)(),dirtyStores:(0,r.Set)(),debug:!1,options:i});e.ReactorState=u;var a=(0,r.Record)({any:(0,r.Set)(),stores:(0,r.Map)({}),observersMap:(0,r.Map)({}),nextId:1});e.ObserverState=a}])})}),be=t(Ie),Oe=e(function(t){var e=function(t){var e,n={};if(!(t instanceof Object)||Array.isArray(t))throw new Error("keyMirror(...): Argument must be an object.");for(e in t)t.hasOwnProperty(e)&&(n[e]=e);return n};t.exports=e}),we=t(Oe),Te=we({VALIDATING_AUTH_TOKEN:null,VALID_AUTH_TOKEN:null,INVALID_AUTH_TOKEN:null,LOG_OUT:null}),Ae=be.Store,De=be.toImmutable,Ce=new Ae({getInitialState:function(){return De({isValidating:!1,authToken:!1,host:null,isInvalid:!1,errorMessage:""})},initialize:function(){this.on(Te.VALIDATING_AUTH_TOKEN,n),this.on(Te.VALID_AUTH_TOKEN,r),this.on(Te.INVALID_AUTH_TOKEN,i)}}),ze=be.Store,Re=be.toImmutable,Le=new ze({getInitialState:function(){return Re({authToken:null,host:""})},initialize:function(){this.on(Te.VALID_AUTH_TOKEN,o),this.on(Te.LOG_OUT,u)}}),Me=be.Store,je=new Me({getInitialState:function(){return!0},initialize:function(){this.on(Te.VALID_AUTH_TOKEN,a)}}),Ne=we({STREAM_START:null,STREAM_STOP:null,STREAM_ERROR:null}),ke="object"==typeof window&&"EventSource"in window,Ue=be.Store,He=be.toImmutable,Pe=new Ue({getInitialState:function(){return He({isSupported:ke,isStreaming:!1,useStreaming:!0,hasError:!1})},initialize:function(){this.on(Ne.STREAM_START,s),this.on(Ne.STREAM_STOP,c),this.on(Ne.STREAM_ERROR,f),this.on(Ne.LOG_OUT,h)}}),xe=we({API_FETCH_ALL_START:null,API_FETCH_ALL_SUCCESS:null,API_FETCH_ALL_FAIL:null,SYNC_SCHEDULED:null,SYNC_SCHEDULE_CANCELLED:null}),Ve=be.Store,qe=new Ve({getInitialState:function(){return!0},initialize:function(){this.on(xe.API_FETCH_ALL_START,function(){return!0}),this.on(xe.API_FETCH_ALL_SUCCESS,function(){return!1}),this.on(xe.API_FETCH_ALL_FAIL,function(){return!1}),this.on(xe.LOG_OUT,function(){return!1})}}),Fe=be.Store,Ge=new Fe({getInitialState:function(){return!1},initialize:function(){this.on(xe.SYNC_SCHEDULED,function(){return!0}),this.on(xe.SYNC_SCHEDULE_CANCELLED,function(){return!1}),this.on(xe.LOG_OUT,function(){return!1})}}),Ke=we({API_FETCH_SUCCESS:null,API_FETCH_START:null,API_FETCH_FAIL:null,API_SAVE_SUCCESS:null,API_SAVE_START:null,API_SAVE_FAIL:null,API_DELETE_SUCCESS:null,API_DELETE_START:null,API_DELETE_FAIL:null,LOG_OUT:null}),Ye=be.Store,Be=be.toImmutable,Je=new Ye({getInitialState:function(){return Be({})},initialize:function(){var t=this;this.on(Ke.API_FETCH_SUCCESS,l),this.on(Ke.API_SAVE_SUCCESS,l),this.on(Ke.API_DELETE_SUCCESS,p),this.on(Ke.LOG_OUT,function(){return t.getInitialState()})}}),We=e(function(t){function e(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function n(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(e).map(function(t){return e[t]});if("0123456789"!==r.join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(t){i[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(o){return!1}}var r=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;t.exports=n()?Object.assign:function(t,n){for(var o,u,a=arguments,s=e(t),c=1;cA5UP)*-m(WiR)lC67% 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 literal 31500 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 z#0?~setTimeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.push(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;this._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.length,t=0;t \ No newline at end of file +this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},i=window.Element.prototype.animate;window.Element.prototype.animate=function(n,r){var o=i.call(this,n,r);o._cancelHandlers=[],o.oncancel=null;var a=o.cancel;o.cancel=function(){a.call(this);var i=new e(this,null,t()),n=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){n.forEach(function(t){t.call(i.target,i)})},0)};var s=o.addEventListener;o.addEventListener=function(t,e){"function"==typeof e&&"cancel"==t?this._cancelHandlers.push(e):s.call(this,t,e)};var u=o.removeEventListener;return o.removeEventListener=function(t,e){if("cancel"==t){var i=this._cancelHandlers.indexOf(e);i>=0&&this._cancelHandlers.splice(i,1)}else u.call(this,t,e)},o}}}(),function(t){var e=document.documentElement,i=null,n=!1;try{var r=getComputedStyle(e).getPropertyValue("opacity"),o="0"==r?"1":"0";i=e.animate({opacity:[o,o]},{duration:1}),i.currentTime=0,n=getComputedStyle(e).getPropertyValue("opacity")==o}catch(t){}finally{i&&i.cancel()}if(!n){var a=window.Element.prototype.animate;window.Element.prototype.animate=function(e,i){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&e[Symbol.iterator]&&(e=Array.from(e)),Array.isArray(e)||null===e||(e=t.convertToArrayForm(e)),a.call(this,e,i)}}}(c),!function(t,e,i){function n(t){var i=e.timeline;i.currentTime=t,i._discardAnimations(),0==i._animations.length?o=!1:requestAnimationFrame(n)}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(i){e.timeline._updateAnimationsPromises(),t(i),e.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(c,e,f),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index 41c7c071ac75a40a401361571b9fd1358c21cd49..e1c641e3169560539be5957dcd7cb747ecbc277d 100644 GIT binary patch delta 6526 zcmZ2?h<(=~c6Rx04vt3mt&Qwk*%{+DDSn*bn|*a#^&0N|=ZenXn-_IZW3uYXTPoeB zm2@jJ-R`X4xxH-@V>1h5{B*AEjDMx>_XWtF%u7$U$UC!p^%VKN<>!-MTv_dZ^uNY- z#T|^w%#3%pyY6NzWMpLCzI_klE=I#ivb~JYX{#DOgP5AHj{C~tdd77rtEnYVpZG8`_8hS0nXCb_S@QTn=M}b?ZEuh z?%3mZ6vXDZJTc8#AN5B0oHKV=NmOyOguwD!tNtxpob4_X!{5{V`ln@i$K$1`GI3|$ zf4cMR4exB3Ep1NI-0p=fUjOWEpLtll%I)3fGbWdaFZtP9?Q#FcDelPRa?|DKb{wb` zGwHTT)n|TeXTHI^{p3Z#eXiTDy}06L|J(5MVzsWwn2RF*fsZ}rzYf<{tLyTg_VU~J zJiU)TsSV}r&q`XA4jqoQP7Ge88e)3-Rr^(b{)g8SG#B#c2Q9D+YF^OvJ7%u%mI$+} ze)X5G><>*m)@#T!OM~ZHWYmY8i*Kr5Z#*QmXiBTdlZ;;X?aBwYo#~9-V7Pke@|-hk z%f9zoMxMT{7kxH>UG?3uJIj1lo_UkeeDz{l{QNn*_x4p)RvB6RF8TEGYUFpDc_05Y zKmNwkp64RL9lvbH@3@fJ>s@-n9;)!3edld%!C9znSKs;aZur+7kuvvw&O7`xm|2}8 zV!LgNe*)7zp0|hlKIw}o^j6kQ>bbaTQzGZ*B84Kq4~s3{1zo=_Y3W;Iu3jg9u~drP zOs4O|#9lU?tOWC!2cjmIcix+opydC~k>&QWka>4IyS7epnLY1b=cK4qpQq0cTL(TA z)sV2PDJz#U@b9cY@$lm1>XP*lyPM{pdw93)RLsq$)#oO!z1_yPaK&S$Y^m96W9A;? z3z&JGZ^9w@S!d<5_0E+UiKm~e%vqPTiF)AE0Y5j@H z=O)cbi+cL2J0`B0&&AsJ?O~Ecfr}`&%)+%RT-s&^d)`Zq_bPntai_k!EiotI#%Rn z*Ztsr*0@OBHAQ!0#EWT4?-Lp)U09IF|2%BTf)fqyeiI!fcl$&rS=4@ zk;|NtUEI6!3;oXS>z=UvYTGIU5zZ9{F6!*6UM94uOl#|1A>Q~^`?oCBT%6A0`^f2k z*qQwc-p^mb*4VHqW&Ps`+hVnvj~JeI`=ng-jVI*5PaDIF8c(krWNiMIb)L&9?f9)( z^<1j=UL06c_MLM>o9RPtj`w

<)+cl^Ux#rrljU@%!1&=RQ6%)R=bHZ++1Q&Wfbe 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 delta 6514 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 P|L33lU|+b|RCWdc_c_Xu diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index dd6ee9544e7..2c61fb2b72f 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit dd6ee9544e7129b1735fe2377311ff2e2b7449c0 +Subproject commit 2c61fb2b72f422155dac4e7308181f7f7f845f44 diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 40e47f06969..58c4b528f05 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}var precacheConfig=[["/","9a5d0507bd1f13e3eca6b35abd4cbebb"],["/frontend/panels/dev-event-3cc881ae8026c0fba5aa67d334a3ab2b.html","e22ed0d2d10777c87eb9620d81f525b4"],["/frontend/panels/dev-info-34e2df1af32e60fffcafe7e008a92169.html","7e939dc762dc0c0ec769db4ea76a4b09"],["/frontend/panels/dev-service-bb5c587ada694e0fd42ceaaedd6fe6aa.html","782c4860c5e8ab274231ba9dfd528f29"],["/frontend/panels/dev-state-4608326978256644c42b13940c028e0a.html","26758b741ac1b7c8e9cfcb24762d8774"],["/frontend/panels/dev-template-0a099d4589636ed3038a3e9f020468a7.html","99114026cf9193263c74cc25f9f6a469"],["/frontend/panels/map-af7d04aff7dd5479c5a0016bc8d4dd7d.html","6031df1b4d23d5b321208449b2d293f8"],["/static/core-b4ee3a700ef5549a36b436611e27d3a9.js","e2fb4f1dc0d1e8192a327b51768b3802"],["/static/frontend-411fcc6c69b3cab0740ac3db4b9947c8.html","5967b9cdaeb14753552c2461805eb397"],["/static/mdi-b399b5d3798f5b68b0a4fbaae3432d48.html","819d479ae2b690589687469045b22c26"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","b0f32ad3c7749c40d486603f31c9d8b1"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var n=new URL(e);return"/"===n.pathname.slice(-1)&&(n.pathname+=t),n.toString()},createCacheKey=function(e,t,n,a){var c=new URL(e);return a&&c.toString().match(a)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(n)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var n=new URL(t).pathname;return e.some(function(e){return n.match(e)})},stripIgnoredUrlParameters=function(e,t){var n=new URL(e);return n.search=n.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),n.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],n=e[1],a=new URL(t,self.location),c=createCacheKey(a,hashParamName,n,!1);return[a.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(n){if(!t.has(n))return e.add(new Request(n,{credentials:"same-origin"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(n){return Promise.all(n.map(function(n){if(!t.has(n.url))return e.delete(n)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,n=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(n);var a="index.html";!t&&a&&(n=addDirectoryIndex(n,a),t=urlsToCacheKeys.has(n));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(n=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(n)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(n))}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t)))}),self.addEventListener("notificationclick",function(e){var t;e.notification.data&&e.notification.data.url&&(e.notification.close(),t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var n,a;for(n=0;nCi{tVGs-?*sgvTyxSE>%U&8xuraNN6YUIo&JmXw|_gZMfmPsS1GLx z4gcQl<2YGkSFdQ_u!*_q@M?us3*v4(t=MyS)hsFHje*-TzsvU=cYox>9Hv{FuXXL| z7W4OdQMW>;`dq!nrvGOP)9#!vOTT|Q`r15h2g|~RZ}nt%)yvQO>woX_vTYqtpYU3} zj;%`CyKY;bpM8n%+t&N}0Upu+w#V=OQpa%7$@-Jtn_7WWZuevVJ^tDquRPuIE7Mwu zrZVMQ7k9BfHDWiNQDnG(*QaH1FP17zRp?ltrRU$fmI=I(vnv&@%!dRoV z<%zy7MFGaprYg)muK%_DUXRS~mPcb>5j?eb#b<4T>9 za%bm^^qb-hn>R#-`-uuJ(J=AaZ7aMOrM@J#m+NXS}l&W2_%H9nqk-@@qgBuc!%k;uZGQF>{47P zc`{?+jDxqlgq;{?H(Y7hv|sIwsE*mxjO~|Nx_sMC&hgOnaq7Op;VGeE$gKn zdw-r(;bS?qEeZP{-p`2D58zww+E{o_P|3t2<-mr+Y2swYxn-qg1|ak~`%f^rqh_`EJ^tfH?`PmPQn@HENdV ztt_vV{U-Bab;Q9tuk+NcgJ#^>aPr9R57sMut{htA!t_$|+3v|xR|NA4ZG6s}xO2ru zw?d&x&8R6E6A#r1o@n;4{k;0+e)F=gbyc!lYyWq(ym|5Y-SViz`JdY*4}aXGtZrCt z^5fgp^C!YLC%$p0a@r<(G3rKY@1@0jGX?%|@*Ye6pZGH=uQ|YFTjky0dGdGKSFz?) z|DEy0e~0xYv91krCaZ#b7gyPYu}>;UDq0f9KHvVg)~gAbS3f1~tN(LOx|*+zdqwEt zhi_NUpZA{W@$CnPW>@>~6?7C>rCfaao$9Yod7TT_2&7)<|Df6Xo=x;dpX$McH^xTR zZ0FdjebRnkT$dg8;fja)wtZhOJHA-f`qjVI;A@~sef*MuTMZ{_zHjIiQ0i z(7~TSi+88L+o^bEifC3{*5clRCmHYM;%?quoql8Ig2RkoyJFb?YE*|^Z(p{id{tYz z$=kqxI0g(BbSyR*}#$Hev@(_itnVvm*K0mt;`=MDrs;NQ#ly8T3J z?ZnWt1}_rp&h!W0Sl^#}NT<%N{6+j#_G9g@e%W!P?X_96yH4-_P1Vre8C9z1Hd^#m zJzSV7aJTEyzO}iLKlif7wtS8K{oAeZUqV5ZOy!nR`GprxZ;PBN>$2kB|9!bfV_Qu2 ze3D-%dAB2rxuU01#PMP{W1D1Rf#?=~^^pHcmAP$>T39fSN z$=0?!Z{fXkMP}w|@kPgy*B{%M_^{~74fmARk3W`t{2hL8f9?O>>HiLVo&V9`=grdA zSD(L?eEPR7)845&=YOT@t4kJ%R7-f zPVH}&-k)0b^LTKn!mQ(;#4iLttSxw|xt%fiUFW)oYU`I3O}%vO-}dvfeV4wjug!Mn zX3Uo!7Ac<(`SJH5cDob^4;Y{yy6_X33mtpZogXC9CaHug}i==~8&U&DefX zw`^_o>O7cv^UlAjg3^b|xl^|lU8(B2|MIVA{r`uFR!)`7w{FKx-Z6XP zTi>qVh1Zq&&6N&L=lb+PjFtOlY~Y+-RsW_Pf4#r3t)ckO3qQ9|U-o||KQ-JE?$)!3 zwwPaIzT~0f{yX31+HK!=Tx~n+bFtSuc7C0=>-4Mi=^N%Hu1g4tZ~o8N$G0KOQiOp401n!CXaE2J literal 2012 zcmb2|=HOVMvLT#_xj40`EHgPZzC6DuJGDqJtC(SFL~j1=6N3M=xh@8un6>D8ufB9B z$GVpbIcD8q-O2q)@vG!-BW=Tl)3iKqrXTtFUN&fw?#)TXu8g-;PTZY&GkxC7^cM+t z53P7R>r%P21Q`YDkOe=mgOa$LO5wyX59`-Gat*=9YH@)+&zf5?G=k02_&NW+1(Auh^x^vr= zKt7r4DYKS)MJJkM$i^Jmalv%!`vbQ>PyH0I^|{zOwF1_CvkQ{DnzS@HPV*E-E%i#> z`7}mjoyp~si=x9`uuCv|>ujF#q%yBdX3H6gjjW}b-dio+F8{J_UIF77t5q`T69k{n z3FIqMSQ0SlqR+cKPZV};Q9D1w^oYO#>&&eTQ`5aNl>B#RF5Icb>$AnrH|oi$RX$t_ z=eW`wG&h(PPtYuVzB0j0MAA@Gq~b!1f#23i*KSS`?X!KlGFaBf#f|HnQD@mD9pOV9 z%QUAmEly*dU~R8+`m)pWCM{=ECiY7fi)X&*k9hJ^_(17~n9#l2i#n!+EonVd!8T1e zPJ{1~pqoqBikjzMUS6*A-PKnfxv}G9tD#QmCB>?noyv;N>ZhJg<9PZZDR`pyWG$zR zWxk26TX){AJi)PihMTU=W3#Js0^PV2m!wVeeAm_6F1O&)oY}h$mT)kvD{?xpbmfGu z^r#Oyi$x?h`J8-GY`x)h=0lBVcY-ulq;zeLS#ENk>+Hl?>}BQbGdR5F8qPeq1i%TpxPjG`upm`wlK_;snS`j3EDS3bpv>0Omz z4rKCnW)zht&Qr=Pqp zO`W{1IO9~2+C~vm@yKb`XBJOdnc$8N@|GbsvPirpb<|-EXiMKBHY1UlvfbU^? zi1ay$G@qLD*P=H(t=eh&jNx|I0?U&tP0l3drfM#1@O6lGxP9OFo7}V4UZ&C6Gvuc$ z&kSBW)qCZcIhRCshbAr*m@}(3d+EyB>UUQ{>x~_Q{xt4CdFuSdz6C)->$qDun1d`0 zQaG4tct-jqYXEE`tDtg_tl+|Be`QRjsf z-a4nHGxWaJNcTQ!61@`S%-y%;;HNVzhXYj9Cj>72wl=oe>}yeI^_zWfmuOjE>9~}C z%0c)||EZ+A&zz(jCuB)Zo8z3YMAw8@Pw$ZMb>6 z`ii7g;Zvsf&r?~uGW>%Q$D$o`s@DXHY%O2q*ez@FHu~yJ*O!6u=j!9jPoMtW9TEAv zU+8a1Y4PV<(La*Q^ur6qYu_F{dA@4zuMhutUtKL(oS@;q`Q{mQ?W?*rQU15MeivIT zyjUS~&)#l!Y2cg5>;8$BUO#{MMRbnTfoGbjF z;TEl3dwG2?HD#T7lv7sz+em`lmM8szZ|=jxzpt+^>*U=1LT3i+@q0fsy3RW8Nd3)s z{!?M&$~6M18~8tH#(D^FdT4$4oF|yuRO_~^{XpqOS+&c%H5aa(UQl9nV_xnIzDIQ_ zk$dGPW%6(O`P``Wnpwx0GV|Lp7d0}&JuV7N?DFe3x^237!Tj`?$c4|7xp%X;_dR>| zFLZnLR~~EeEf%k9l*BI@h|c};b*J9nb620qIaeQ;-jypygc*R^KV*?@!-{Wld`ol7NzH~o;jyYRo~ zTUPnm-T8qgvTqXa{=ITOBfl!B@`#Cst=UAbspW@f z18!+4Ufz(i8*~Dum>J*v5@{~CIxZotKSle^R%N@?oaD1-0=BU!r`hn?oa6aCPoX{C z#Z#hRzVz>h;1AUj`)b7UTKb-7Ar0hUo2l&S=Ygu z6>ekjVV)^-tpDfIt$E_^r=+^Cty=e-{oAL9WhWS#cEq1`cU$IK`?vV+)OB|r$S+Em z8hf?-RdDFz@7of#&eT8dd@Fui@B0&n`Edu`$)TX>ZupwZ9ZM+b7lk zymj}>;|Hc;fwi(Szx$6Em>tRLI_cy!Y32XhdDCY8+Ps-Vy3xt=i$>>O=QW}wk~?m# wiPkwg@zz%LsXXToWpr7WC4LF{W3l6&ZuK8EnN7X>FaKw{TCqZEp&$bT06G)ljQ{`u diff --git a/homeassistant/components/notify/html5.py b/homeassistant/components/notify/html5.py index 33ebe8e0c0d..6aafec8e120 100644 --- a/homeassistant/components/notify/html5.py +++ b/homeassistant/components/notify/html5.py @@ -8,12 +8,14 @@ import os import logging import json import time +import datetime +import uuid import voluptuous as vol from voluptuous.humanize import humanize_error -from homeassistant.const import ( - HTTP_BAD_REQUEST, HTTP_INTERNAL_SERVER_ERROR) +from homeassistant.const import (HTTP_BAD_REQUEST, HTTP_INTERNAL_SERVER_ERROR, + HTTP_UNAUTHORIZED, URL_ROOT) from homeassistant.util import ensure_unique_string from homeassistant.components.notify import ( ATTR_TARGET, ATTR_TITLE, ATTR_DATA, BaseNotificationService, @@ -24,13 +26,13 @@ from homeassistant.helpers import config_validation as cv REQUIREMENTS = ['https://github.com/web-push-libs/pywebpush/archive/' 'e743dc92558fc62178d255c0018920d74fa778ed.zip#' - 'pywebpush==0.5.0'] + 'pywebpush==0.5.0', 'PyJWT==1.4.2'] -DEPENDENCIES = ["frontend"] +DEPENDENCIES = ['frontend'] _LOGGER = logging.getLogger(__name__) -REGISTRATIONS_FILE = "html5_push_registrations.conf" +REGISTRATIONS_FILE = 'html5_push_registrations.conf' ATTR_GCM_SENDER_ID = 'gcm_sender_id' ATTR_GCM_API_KEY = 'gcm_api_key' @@ -43,11 +45,58 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ ATTR_SUBSCRIPTION = 'subscription' ATTR_BROWSER = 'browser' +ATTR_ENDPOINT = 'endpoint' +ATTR_KEYS = 'keys' +ATTR_AUTH = 'auth' +ATTR_P256DH = 'p256dh' + +ATTR_TAG = 'tag' +ATTR_ACTION = 'action' +ATTR_ACTIONS = 'actions' +ATTR_TYPE = 'type' +ATTR_URL = 'url' + +ATTR_JWT = 'jwt' + +# The number of days after the moment a notification is sent that a JWT +# is valid. +JWT_VALID_DAYS = 7 + +KEYS_SCHEMA = vol.All(dict, + vol.Schema({ + vol.Required(ATTR_AUTH): cv.string, + vol.Required(ATTR_P256DH): cv.string + })) + +SUBSCRIPTION_SCHEMA = vol.All(dict, + vol.Schema({ + # pylint: disable=no-value-for-parameter + vol.Required(ATTR_ENDPOINT): vol.Url(), + vol.Required(ATTR_KEYS): KEYS_SCHEMA + })) + REGISTER_SCHEMA = vol.Schema({ - vol.Required(ATTR_SUBSCRIPTION): cv.match_all, + vol.Required(ATTR_SUBSCRIPTION): SUBSCRIPTION_SCHEMA, vol.Required(ATTR_BROWSER): vol.In(['chrome', 'firefox']) }) +CALLBACK_EVENT_PAYLOAD_SCHEMA = vol.Schema({ + vol.Required(ATTR_TAG): cv.string, + vol.Required(ATTR_TYPE): vol.In(['received', 'clicked', 'closed']), + vol.Required(ATTR_TARGET): cv.string, + vol.Optional(ATTR_ACTION): cv.string, + vol.Optional(ATTR_DATA): dict, +}) + +NOTIFY_CALLBACK_EVENT = 'html5_notification' + +# badge and timestamp are Chrome specific (not in official spec) + +HTML5_SHOWNOTIFICATION_PARAMETERS = ('actions', 'badge', 'body', 'dir', + 'icon', 'lang', 'renotify', + 'requireInteraction', 'tag', 'timestamp', + 'vibrate') + def get_service(hass, config): """Get the HTML5 push notification service.""" @@ -60,12 +109,14 @@ def get_service(hass, config): hass.wsgi.register_view( HTML5PushRegistrationView(hass, registrations, json_path)) + hass.wsgi.register_view(HTML5PushCallbackView(hass, registrations)) - gcm_api_key = config.get('gcm_api_key') - gcm_sender_id = config.get('gcm_sender_id') + gcm_api_key = config.get(ATTR_GCM_API_KEY) + gcm_sender_id = config.get(ATTR_GCM_SENDER_ID) if gcm_sender_id is not None: - add_manifest_json_key('gcm_sender_id', config.get('gcm_sender_id')) + add_manifest_json_key(ATTR_GCM_SENDER_ID, + config.get(ATTR_GCM_SENDER_ID)) return HTML5NotificationService(gcm_api_key, registrations) @@ -76,7 +127,7 @@ def _load_config(filename): return {} try: - with open(filename, "r") as fdesc: + with open(filename, 'r') as fdesc: inp = fdesc.read() # In case empty file @@ -85,17 +136,17 @@ def _load_config(filename): return json.loads(inp) except (IOError, ValueError) as error: - _LOGGER.error("Reading config file %s failed: %s", filename, error) + _LOGGER.error('Reading config file %s failed: %s', filename, error) return None def _save_config(filename, config): """Save configuration.""" try: - with open(filename, "w") as fdesc: + with open(filename, 'w') as fdesc: fdesc.write(json.dumps(config, indent=4, sort_keys=True)) except (IOError, TypeError) as error: - _LOGGER.error("Saving config file failed: %s", error) + _LOGGER.error('Saving config file failed: %s', error) return False return True @@ -103,8 +154,8 @@ def _save_config(filename, config): class HTML5PushRegistrationView(HomeAssistantView): """Accepts push registrations from a browser.""" - url = "/api/notify.html5" - name = "api:notify.html5" + url = '/api/notify.html5' + name = 'api:notify.html5' def __init__(self, hass, registrations, json_path): """Init HTML5PushRegistrationView.""" @@ -129,7 +180,101 @@ class HTML5PushRegistrationView(HomeAssistantView): return self.json_message('Error saving registration.', HTTP_INTERNAL_SERVER_ERROR) - return self.json_message("Push notification subscriber registered.") + return self.json_message('Push notification subscriber registered.') + + +class HTML5PushCallbackView(HomeAssistantView): + """Accepts push registrations from a browser.""" + + requires_auth = False + url = '/api/notify.html5/callback' + name = 'api:notify.html5/callback' + + def __init__(self, hass, registrations): + """Init HTML5PushCallbackView.""" + super().__init__(hass) + self.registrations = registrations + + def decode_jwt(self, token): + """Find the registration that signed this JWT and return it.""" + import jwt + + # 1. Check claims w/o verifying to see if a target is in there. + # 2. If target in claims, attempt to verify against the given name. + # 2a. If decode is successful, return the payload. + # 2b. If decode is unsuccessful, return a 401. + + target_check = jwt.decode(token, verify=False) + if target_check[ATTR_TARGET] in self.registrations: + possible_target = self.registrations[target_check[ATTR_TARGET]] + key = possible_target[ATTR_SUBSCRIPTION][ATTR_KEYS][ATTR_AUTH] + try: + return jwt.decode(token, key) + except jwt.exceptions.DecodeError: + pass + + return self.json_message('No target found in JWT', + status_code=HTTP_UNAUTHORIZED) + + # The following is based on code from Auth0 + # https://auth0.com/docs/quickstart/backend/python + # pylint: disable=too-many-return-statements + def check_authorization_header(self, request): + """Check the authorization header.""" + import jwt + auth = request.headers.get('Authorization', None) + if not auth: + return self.json_message('Authorization header is expected', + status_code=HTTP_UNAUTHORIZED) + + parts = auth.split() + + if parts[0].lower() != 'bearer': + return self.json_message('Authorization header must ' + 'start with Bearer', + status_code=HTTP_UNAUTHORIZED) + elif len(parts) != 2: + return self.json_message('Authorization header must ' + 'be Bearer token', + status_code=HTTP_UNAUTHORIZED) + + token = parts[1] + try: + payload = self.decode_jwt(token) + except jwt.exceptions.InvalidTokenError: + return self.json_message('token is invalid', + status_code=HTTP_UNAUTHORIZED) + return payload + + def post(self, request): + """Accept the POST request for push registrations event callback.""" + auth_check = self.check_authorization_header(request) + if not isinstance(auth_check, dict): + return auth_check + + event_payload = { + ATTR_TAG: request.json.get(ATTR_TAG), + ATTR_TYPE: request.json[ATTR_TYPE], + ATTR_TARGET: auth_check[ATTR_TARGET], + } + + if request.json.get(ATTR_ACTION) is not None: + event_payload[ATTR_ACTION] = request.json.get(ATTR_ACTION) + + if request.json.get(ATTR_DATA) is not None: + event_payload[ATTR_DATA] = request.json.get(ATTR_DATA) + + try: + event_payload = CALLBACK_EVENT_PAYLOAD_SCHEMA(event_payload) + except vol.Invalid as ex: + _LOGGER.warning('Callback event payload is not valid! %s', + humanize_error(event_payload, ex)) + + event_name = '{}.{}'.format(NOTIFY_CALLBACK_EVENT, + event_payload[ATTR_TYPE]) + self.hass.bus.fire(event_name, event_payload) + return self.json({'status': 'ok', + 'event': event_payload[ATTR_TYPE]}) # pylint: disable=too-few-public-methods @@ -147,31 +292,41 @@ class HTML5NotificationService(BaseNotificationService): """Return a dictionary of registered targets.""" return self.registrations.keys() + # pylint: disable=too-many-locals def send_message(self, message="", **kwargs): """Send a message to a user.""" + import jwt from pywebpush import WebPusher timestamp = int(time.time()) + tag = str(uuid.uuid4()) payload = { - 'body': message, - 'data': {}, - 'icon': '/static/icons/favicon-192x192.png', 'badge': '/static/images/notification-badge.png', + 'body': message, + ATTR_DATA: {}, + 'icon': '/static/icons/favicon-192x192.png', + ATTR_TAG: tag, 'timestamp': (timestamp*1000), # Javascript ms since epoch - 'title': kwargs.get(ATTR_TITLE) + ATTR_TITLE: kwargs.get(ATTR_TITLE) } data = kwargs.get(ATTR_DATA) if data: - payload.update(data) + # Pick out fields that should go into the notification directly vs + # into the notification data dictionary. - if data.get('url') is not None: - payload['data']['url'] = data.get('url') - elif (payload['data'].get('url') is None and - payload.get('actions') is None): - payload['data']['url'] = '/' + for key, val in data.copy().items(): + if key in HTML5_SHOWNOTIFICATION_PARAMETERS: + payload[key] = val + del data[key] + + payload[ATTR_DATA] = data + + if (payload[ATTR_DATA].get(ATTR_URL) is None and + payload.get(ATTR_ACTIONS) is None): + payload[ATTR_DATA][ATTR_URL] = URL_ROOT targets = kwargs.get(ATTR_TARGET) @@ -183,9 +338,18 @@ class HTML5NotificationService(BaseNotificationService): for target in targets: info = self.registrations.get(target) if info is None: - _LOGGER.error("%s is not a valid HTML5 push notification" - " target!", target) + _LOGGER.error('%s is not a valid HTML5 push notification' + ' target!', target) continue + jwt_exp = (datetime.datetime.fromtimestamp(timestamp) + + datetime.timedelta(days=JWT_VALID_DAYS)) + jwt_secret = info[ATTR_SUBSCRIPTION][ATTR_KEYS][ATTR_AUTH] + jwt_claims = {'exp': jwt_exp, 'nbf': timestamp, + 'iat': timestamp, ATTR_TARGET: target, + ATTR_TAG: payload[ATTR_TAG]} + jwt_token = jwt.encode(jwt_claims, jwt_secret).decode('utf-8') + payload[ATTR_DATA][ATTR_JWT] = jwt_token + WebPusher(info[ATTR_SUBSCRIPTION]).send( json.dumps(payload), gcm_key=self._gcm_key, ttl='86400') diff --git a/requirements_all.txt b/requirements_all.txt index 4f0a4aa12e6..851fd2aa3c4 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -10,6 +10,9 @@ typing>=3,<4 # homeassistant.components.isy994 PyISY==1.0.6 +# homeassistant.components.notify.html5 +PyJWT==1.4.2 + # homeassistant.components.arduino PyMata==2.12 diff --git a/tests/components/notify/test_html5.py b/tests/components/notify/test_html5.py index 121cc1096d2..6201fb24ea0 100644 --- a/tests/components/notify/test_html5.py +++ b/tests/components/notify/test_html5.py @@ -42,7 +42,10 @@ class TestHtml5Notify(object): data = { 'device': { 'browser': 'chrome', - 'subscription': 'hello world', + 'subscription': { + 'endpoint': 'https://google.com', + 'keys': {'auth': 'auth', 'p256dh': 'p256dh'} + }, } } @@ -60,7 +63,10 @@ class TestHtml5Notify(object): assert len(mock_wp.mock_calls) == 2 # WebPusher constructor - assert mock_wp.mock_calls[0][1][0] == 'hello world' + assert mock_wp.mock_calls[0][1][0] == {'endpoint': + 'https://google.com', + 'keys': {'auth': 'auth', + 'p256dh': 'p256dh'}} # Call to send payload = json.loads(mock_wp.mock_calls[1][1][0]) @@ -80,7 +86,7 @@ class TestHtml5Notify(object): assert service is not None # assert hass.called - assert len(hass.mock_calls) == 2 + assert len(hass.mock_calls) == 3 view = hass.mock_calls[1][1][0] assert view.json_path == fp.name @@ -88,7 +94,9 @@ class TestHtml5Notify(object): builder = EnvironBuilder(method='POST', data=json.dumps({ 'browser': 'chrome', - 'subscription': 'sub info', + 'subscription': {'endpoint': 'https://google.com', + 'keys': {'auth': 'auth', + 'p256dh': 'p256dh'}}, })) Request = request_class() resp = view.post(Request(builder.get_environ())) @@ -96,7 +104,9 @@ class TestHtml5Notify(object): expected = { 'unnamed device': { 'browser': 'chrome', - 'subscription': 'sub info', + 'subscription': {'endpoint': 'https://google.com', + 'keys': {'auth': 'auth', + 'p256dh': 'p256dh'}}, }, } @@ -116,7 +126,7 @@ class TestHtml5Notify(object): assert service is not None # assert hass.called - assert len(hass.mock_calls) == 2 + assert len(hass.mock_calls) == 3 view = hass.mock_calls[1][1][0] @@ -142,4 +152,89 @@ class TestHtml5Notify(object): with patch('homeassistant.components.notify.html5._save_config', return_value=False): resp = view.post(Request(builder.get_environ())) - assert resp.status_code == 500, resp.response + assert resp.status_code == 400, resp.response + + def test_callback_view_no_jwt(self): + """Test that the notification callback view works without JWT.""" + hass = MagicMock() + + with tempfile.NamedTemporaryFile() as fp: + hass.config.path.return_value = fp.name + fp.close() + service = html5.get_service(hass, {}) + + assert service is not None + + # assert hass.called + assert len(hass.mock_calls) == 3 + + view = hass.mock_calls[2][1][0] + + builder = EnvironBuilder(method='POST', data=json.dumps({ + 'type': 'push', + 'tag': '3bc28d69-0921-41f1-ac6a-7a627ba0aa72' + })) + Request = request_class() + resp = view.post(Request(builder.get_environ())) + + assert resp.status_code == 401, resp.response + + @patch('pywebpush.WebPusher') + def test_callback_view_with_jwt(self, mock_wp): + """Test that the notification callback view works with JWT.""" + hass = MagicMock() + + data = { + 'device': { + 'browser': 'chrome', + 'subscription': { + 'endpoint': 'https://google.com', + 'keys': {'auth': 'auth', 'p256dh': 'p256dh'} + }, + } + } + + with tempfile.NamedTemporaryFile() as fp: + fp.write(json.dumps(data).encode('utf-8')) + fp.flush() + hass.config.path.return_value = fp.name + service = html5.get_service(hass, {'gcm_sender_id': '100'}) + + assert service is not None + + # assert hass.called + assert len(hass.mock_calls) == 3 + + service.send_message('Hello', target=['device'], + data={'icon': 'beer.png'}) + + assert len(mock_wp.mock_calls) == 2 + + # WebPusher constructor + assert mock_wp.mock_calls[0][1][0] == {'endpoint': + 'https://google.com', + 'keys': {'auth': 'auth', + 'p256dh': + 'p256dh'}} + + # Call to send + push_payload = json.loads(mock_wp.mock_calls[1][1][0]) + + assert push_payload['body'] == 'Hello' + assert push_payload['icon'] == 'beer.png' + + view = hass.mock_calls[2][1][0] + view.registrations = data + + bearer_token = "Bearer {}".format(push_payload['data']['jwt']) + + builder = EnvironBuilder(method='POST', data=json.dumps({ + 'type': 'push', + }), headers={'Authorization': bearer_token}) + Request = request_class() + resp = view.post(Request(builder.get_environ())) + + assert resp.status_code == 200, resp.response + returned = resp.response[0].decode('utf-8') + expected = '{"event": "push", "status": "ok"}' + assert json.loads(returned) == json.loads(expected)