UNPKG

lavva.exalushome.extalife

Version:

Library implementing communication and abstraction layers for ExtaLife API in ExalusHome system

2 lines 464 kB
"use strict";(self.webpackChunklavva_exalushome_extalife=self.webpackChunklavva_exalushome_extalife||[]).push([[61],{161:(e,t,n)=>{n.d(t,{h:()=>o});var r=n(5973),s=n(4268);class o{constructor(){this._services={},this._serviceRegistrationEvent=new r.r}static get Instance(){return null!=o._instance||(o._instance=new o,this.Log=new s.g,this.Log.Warning("Initializing DependencyContainer"),o._instance.RegisterService(this.Log),this.IsInitialized=!0,window.services=this),o._instance}RegisterService(e){var t;null===(t=o.Log)||void 0===t||t.Debug("DependencyContainer",`Registering new service: ${e.GetServiceName()}`),this._services[e.GetServiceName()]=e,this._serviceRegistrationEvent.Invoke(e)}GetService(e){var t;return null===(t=o.Log)||void 0===t||t.Debug("DependencyContainer",`Getting service [${e}] by GetService<T>()`),this._services[e]}GetServiceAsync(e,t){var n,r;return null===(n=o.Log)||void 0===n||n.Debug("DependencyContainer",`Waiting for service availability [${e}] by GetServiceAsync<T>()`),this._services.hasOwnProperty(e)?(null===(r=o.Log)||void 0===r||r.Debug("DependencyContainer",`Got service [${e}] by GetServiceAsync<T>()`),Promise.resolve(this._services[e])):new Promise(((n,r)=>{var s=t=>{var r;(null==t?void 0:t.GetServiceName())===e&&(null===(r=o.Log)||void 0===r||r.Debug("DependencyContainer",`Got service [${e}] by GetServiceAsync<T>()`),this._serviceRegistrationEvent.Unsubscribe(s),n(t))},i=()=>{var n;null===(n=o.Log)||void 0===n||n.Debug("DependencyContainer",`Cancelled service [${e}] retrieval by GetServiceAsync<T>()`),this._serviceRegistrationEvent.Unsubscribe(s),null==t||t.CancellationEvent.Unsubscribe(i),r(new Error("Operation cancelled!"))};null==t||t.CancellationEvent.Subscribe(i),this._serviceRegistrationEvent.Subscribe(s)}))}GetServiceWithTimeoutAsync(e,t){var n,r;return null===(n=o.Log)||void 0===n||n.Debug("DependencyContainer",`Waiting for service[${e}] availability by GetServiceWithTimeoutAsync<T>()`),this._services.hasOwnProperty(e)?(null===(r=o.Log)||void 0===r||r.Debug("DependencyContainer",`Got service [${e}] by GetServiceWithTimeoutAsync<T>()`),Promise.resolve(this._services[e])):new Promise(((n,r)=>{let s=0,i=e=>{var t;(null==e?void 0:e.GetClassName())===e&&(null===(t=o.Log)||void 0===t||t.Debug("DependencyContainer",`Got service [${e}] by GetServiceWithTimeoutAsync<T>()`),window.clearTimeout(s),this._serviceRegistrationEvent.Unsubscribe(i),n(e))};s=window.setTimeout((()=>{var t;window.clearTimeout(s),this._serviceRegistrationEvent.Unsubscribe(i),null===(t=o.Log)||void 0===t||t.Error("DependencyContainer",`Failed to get service [${e}] in time by GetServiceWithTimeoutAsync<T>()`),r(new Error("Operation cancelled!"))}),t),this._serviceRegistrationEvent.Subscribe(i)}))}}o.IsInitialized=!1},333:(e,t,n)=>{var r;n.d(t,{y:()=>r}),function(e){e[e.Device=1]="Device",e[e.Person=2]="Person",e[e.DevicesGroups=3]="DevicesGroups"}(r||(r={}))},934:(e,t,n)=>{n.d(t,{N:()=>c});var r=n(1061),s=n(161),o=n(3386),i=n(2734),a=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class c{constructor(){this._manualDeviceProtocolServices=new Map}GetServiceName(){return c.ServiceName}RegisterManuallyPairedDevicesProtocol(e){var t,n;null===(t=s.h.Log)||void 0===t||t.Debug(c.ServiceName,`Registering new manual device protocol service: ${e.GetServiceName()}`),null===(n=s.h.Log)||void 0===n||n.Error(c.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! RegisterManuallyPairedDevicesProtocol()"),r.j.Get(o.u.ServiceName).ExitConfigurationModeAsync(),this._manualDeviceProtocolServices.set(e.GetServiceName(),e)}GetDevicesForManualPairingAsync(e){return a(this,void 0,void 0,(function*(){const t=[...this._manualDeviceProtocolServices.values()],n=[];if(null!=e)if(Array.isArray(e))for(let r=0;r<t.length;r++)e.any((e=>e==t[r].ProtocolExtensionGuid))&&n.push(...yield t[r].GetDevicesForManualPairingAsync());else{const r=t.find((t=>t.ProtocolExtensionGuid==e));null!=r&&n.push(...yield r.GetDevicesForManualPairingAsync())}else for(let e=0;e<t.length;e++)n.push(...yield t[e].GetDevicesForManualPairingAsync());return n}))}AddManuallyPairedDeviceAsync(e){return a(this,void 0,void 0,(function*(){var t;const n=[...this._manualDeviceProtocolServices.values()].find((t=>t.ProtocolExtensionGuid==e.ProtocolExtensionGuid));return null!=n?n.AddManuallyPairedDeviceAsync(e):(null===(t=s.h.Log)||void 0===t||t.Error(c.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! AddManuallyPairedDeviceAsync()"),r.j.Get(o.u.ServiceName).ExitConfigurationModeAsync(),i.T.Failed)}))}GetRegisteredProtocolGuids(){return[...this._manualDeviceProtocolServices.values()].map((e=>e.ProtocolExtensionGuid))}}c.ServiceName="ManualDeviceService"},1061:(e,t,n)=>{n.d(t,{j:()=>Su});var r=n(161),s=n(4665),o=n(9595),i=n(4506),a=n(6094),c=n(8883),u=n(5329),l=n(8914),d=n(3386);class h extends RangeError{paramName;constructor(e){super(`${e} was out of range. Must be non-negative and less than the size of the collection.`),this.paramName=e,this.name="ArgumentOutOfRangeException",this.stack=this.stack||(new Error).stack}}const g=Object.freeze({MoreThanOneElement:"Sequence contains more than one element",MoreThanOneMatchingElement:"Sequence contains more than one matching element",NoElements:"Sequence contains no elements",NoMatch:"Sequence contains no matching element"});class p extends Error{constructor(e){super(e),this.name="InvalidOperationException",this.stack=this.stack||(new Error).stack}}const f=(e,t)=>e===t;class v{iterator;constructor(e){this.iterator=e}[Symbol.asyncIterator](){return this.iterator()}}class m{dataFunc;constructor(e){this.dataFunc=e}[Symbol.asyncIterator](){const{dataFunc:e}=this;return async function*(){if(1===e.type)for(const t of e.generator())yield t;else for(const t of await e.generator())yield t}()}}class y{iterator;constructor(e){this.iterator=e}[Symbol.iterator](){return this.iterator()}}class w extends Array{}const S=(e,t,n,r)=>{if(r){if(!n)throw new ReferenceError("TAccumulate function is undefined");return C(e,t,n,r)}return n?_(e,t,n):A(e,t)},A=(e,t)=>{let n;for(const r of e)n=n?t(n,r):r;if(void 0===n)throw new p(g.NoElements);return n},_=(e,t,n)=>{let r=t;for(const t of e)r=n(r,t);return r},C=(e,t,n,r)=>{let s=t;for(const t of e)s=n(s,t);return r(s)},T=(e,t)=>{for(const n of e)if(!1===t(n))return!1;return!0},D=async(e,t)=>{for(const n of e)if(!1===await t(n))return!1;return!0},k=(e,t)=>t?E(e,t):I(e),I=e=>{for(const t of e)return!0;return!1},E=(e,t)=>{for(const n of e)if(!0===t(n))return!0;return!1},R=async(e,t)=>{for(const n of e)if(!0===await t(n))return!0;return!1},N=(e,t)=>new y((function*(){yield*e,yield t})),G=e=>{if(Array.isArray(e)){if(0===e.length)throw new p(g.NoElements);return new v((async function*(){for await(const t of e)yield t}))}return new v(e)},b=e=>G((async function*(){for(const t of e)yield t})),P=(e,t)=>new m({generator:t,type:e}),O=e=>P(0,(async()=>{const t=[];for(const n of e)t.push(n);return t})),M=(e,t)=>{let n=0,r=0;if(t)for(const s of e)n+=t(s),r+=1;else for(const t of e)n+=t,r+=1;if(0===r)throw new p(g.NoElements);return n/r},U=async(e,t)=>{let n=0,r=0;for(const s of e)n+=await t(s),r+=1;if(0===r)throw new p(g.NoElements);return n/r},W=(e,t)=>{if(t<1)throw new h("size");return new y((function*(){let n=[];for(const r of e)n.push(r),n.length===t&&(yield n,n=[]);n.length&&(yield n)}))},x=(e,t)=>new y((function*(){yield*e,yield*t})),F=(e,t,n=f)=>{for(const r of e)if(n(t,r))return!0;return!1},L=async(e,t,n)=>{for(const r of e)if(await n(t,r))return!0;return!1},B=(e,t)=>t?q(e,t):$(e),$=e=>{let t=0;for(const n of e)t++;return t},q=(e,t)=>{let n=0;for(const r of e)!0===t(r)&&n++;return n},V=async(e,t)=>{let n=0;for(const r of e)!0===await t(r)&&n++;return n},j=(e,t)=>new y((function*(){let n=!1;for(const t of e)n=!0,yield t;n||(yield t)})),H=(e,t=f)=>new y((function*(){const n=[];for(const r of e)n.find((e=>t(e,r)))||(n.push(r),yield r)})),Q=(e,t)=>G((async function*(){const n=[];e:for(const r of e){for(const e of n)if(await t(e,r))continue e;n.push(r),yield r}})),Z=(e,t)=>new y((function*(){for(const n of e)t(n),yield n})),K=(e,t)=>G((async function*(){for(const n of e)await t(n),yield n})),Y=(e,t)=>{if(t<0)throw new h("index");let n=0;for(const r of e)if(t===n++)return r;throw new h("index")},z=(e,t)=>{let n=0;for(const r of e)if(t===n++)return r;return null},J=(e,t,n=f)=>new y((function*(){const r=[...t];for(const t of e){let e=!1;for(let s=0;s<r.length;s++)if(!0===n(t,r[s])){e=!0;break}!1===e&&(yield t)}})),X=(e,t,n)=>G((async function*(){const r=[...t];for(const t of e){let e=!1;for(let s=0;s<r.length;s++){const o=r[s];if(!0===await n(t,o)){e=!0;break}}!1===e&&(yield t)}})),ee=(e,t)=>t?ne(e,t):te(e),te=e=>{const t=e[Symbol.iterator]().next();if(!0===t.done)throw new p(g.NoElements);return t.value},ne=(e,t)=>{for(const n of e)if(!0===t(n))return n;throw new p(g.NoMatch)},re=async(e,t)=>{for(const n of e)if(!0===await t(n))return n;throw new p(g.NoMatch)},se=(e,t)=>t?ie(e,t):oe(e),oe=e=>e[Symbol.iterator]().next().value??null,ie=(e,t)=>{for(const n of e)if(!0===t(n))return n;return null},ae=async(e,t)=>{for(const n of e)if(!0===await t(n))return n;return null};class ce extends w{key;constructor(e,t){super(1),this.key=e,this[0]=t}}const ue=(e,t,n)=>{let r;return r=n?((e,t,n)=>function*(){const r=new Array;for(const s of e){const e=t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}for(const e of r)yield e})(e,t,n):((e,t)=>function*(){const n={};for(const r of e){const e=t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}for(const e in n)yield n[e]})(e,t),new y(r)},le=(e,t,n)=>n?he(e,t,n):de(e,t),de=(e,t)=>G((async function*(){const n={};for(const r of e){const e=await t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}for(const e in n)yield n[e]})),he=(e,t,n)=>G((async function*(){const r=new Array;for(const s of e){const e=await t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(!0===await n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}for(const e of r)yield e})),ge=(e,t,n,r)=>r?((e,t,n,r)=>new y((function*(){const s=new Array;for(const o of e){const e=t(o);let i=!1;for(let t=0;t<s.length;t++){const a=s[t];if(r(a.key,e)){a.push(n(o)),i=!0;break}}if(!1===i){const t=n(o);s.push(new ce(e,t))}}for(const e of s)yield e})))(e,t,n,r):((e,t,n)=>new y((function*(){const r={};for(const s of e){const e=t(s),o=r[e],i=n(s);o?o.push(i):r[e]=new ce(e,i)}for(const e in r)yield r[e]})))(e,t,n),pe=(e,t,n,r,s,o)=>{const i=o?fe(e,t,n,r,s,o):ve(e,t,n,r,s);return new y(i)},fe=(e,t,n,r,s,o)=>function*(){const i=[];for(const e of t){const t=r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}for(const t of e){const e=n(t),r=i.find((t=>o(t.key,e)))??{key:e,values:[]};yield s(t,r.values)}},ve=(e,t,n,r,s)=>function*(){const o=new Map;for(const e of t){const t=r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}for(const t of e){const e=n(t),r=o.get(e)??[];yield s(t,r)}},me=(e,t,n,r,s,o)=>{const i=o?ye(e,t,n,r,s,o):we(e,t,n,r,s);return G(i)},ye=(e,t,n,r,s,o)=>async function*(){const i=[];for(const e of t){const t=await r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}for(const t of e){const e=await n(t),r=i.find((t=>o(t.key,e)))??{key:e,values:[]};yield s(t,r.values)}},we=(e,t,n,r,s)=>async function*(){const o=new Map;for(const e of t){const t=await r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}for(const t of e){const e=await n(t),r=o.get(e)??[];yield s(t,r)}},Se=(e,t,n=f)=>new y((function*(){const r=[...e.distinct(n)];if(0===r.length)return;const s=[...t];for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++)if(!0===n(t,s[e])){yield t;break}}})),Ae=(e,t,n)=>G((async function*(){const r=[];for await(const t of e.distinctAsync(n))r.push(t);if(0===r.length)return;const s=[...t];for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===await n(t,r)){yield t;break}}}})),_e=(e,t,n,r,s,o=f)=>new y((function*(){const i=[...t];for(const t of e){const e=n(t);for(const n of i){const i=r(n);!0===o(e,i)&&(yield s(t,n))}}})),Ce=(e,t)=>t?De(e,t):Te(e),Te=e=>{let t;for(const n of e)t=n;if(!t)throw new p(g.NoElements);return t},De=(e,t)=>{let n;for(const r of e)!0===t(r)&&(n=r);if(!n)throw new p(g.NoMatch);return n},ke=async(e,t)=>{let n;for(const r of e)!0===await t(r)&&(n=r);if(!n)throw new p(g.NoMatch);return n},Ie=(e,t)=>t?Re(e,t):Ee(e),Ee=e=>{let t=null;for(const n of e)t=n;return t},Re=(e,t)=>{let n=null;for(const r of e)!0===t(r)&&(n=r);return n},Ne=async(e,t)=>{let n=null;for(const r of e)!0===await t(r)&&(n=r);return n},Ge=(e,t)=>t?Pe(e,t):be(e),be=e=>{let t=null;for(const n of e)t=Math.max(t??Number.NEGATIVE_INFINITY,n);if(null===t)throw new p(g.NoElements);return t},Pe=(e,t)=>{let n=null;for(const r of e)n=Math.max(n??Number.NEGATIVE_INFINITY,t(r));if(null===n)throw new p(g.NoElements);return n},Oe=async(e,t)=>{let n=null;for(const r of e)n=Math.max(n??Number.NEGATIVE_INFINITY,await t(r));if(null===n)throw new p(g.NoElements);return n},Me=(e,t)=>t?We(e,t):Ue(e),Ue=e=>{let t=null;for(const n of e)t=Math.min(t??Number.POSITIVE_INFINITY,n);if(null===t)throw new p(g.NoElements);return t},We=(e,t)=>{let n=null;for(const r of e)n=Math.min(n??Number.POSITIVE_INFINITY,t(r));if(null===n)throw new p(g.NoElements);return n},xe=async(e,t)=>{let n=null;for(const r of e)n=Math.min(n??Number.POSITIVE_INFINITY,await t(r));if(null===n)throw new p(g.NoElements);return n},Fe=(e,t)=>{const n="string"==typeof t?e=>typeof e===t:e=>e instanceof t;return new y((function*(){for(const t of e)n(t)&&(yield t)}))};async function*Le(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}function*Be(e,t,n,r){const s=((e,t)=>{const n=new Map;for(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}class $e extends v{orderedPairs;constructor(e){super((async function*(){for await(const t of e())yield*t})),this.orderedPairs=e}static generateAsync(e,t,n,r){let s;return s=e instanceof $e?async function*(){for await(const s of e.orderedPairs())yield*Le(s,t,n,r)}:()=>async function*(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for await(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}(e,t,n,r),new $e(s)}static generate(e,t,n,r){let s;return s=e instanceof $e?async function*(){for await(const s of e.orderedPairs())yield*Be(s,t,n,r)}:()=>async function*(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for await(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}(e,t,n,r),new $e(s)}thenBy(e,t){return $e.generate(this,e,!0,t)}thenByAsync(e,t){return $e.generateAsync(this,e,!0,t)}thenByDescending(e,t){return $e.generate(this,e,!1,t)}thenByDescendingAsync(e,t){return $e.generateAsync(this,e,!1,t)}}function*qe(e,t,n,r){const s=((e,t)=>{const n=new Map;for(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}async function*Ve(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}class je extends y{orderedPairs;constructor(e){super((function*(){for(const t of e())yield*t})),this.orderedPairs=e}static generate(e,t,n,r){let s;return s=e instanceof je?function*(){for(const s of e.orderedPairs())yield*qe(s,t,n,r)}:()=>qe(e,t,n,r),new je(s)}static generateAsync(e,t,n,r){let s;return s=e instanceof je?async function*(){for(const s of e.orderedPairs())yield*Ve(s,t,n,r)}:()=>Ve(e,t,n,r),new $e(s)}thenBy(e,t){return je.generate(this,e,!0,t)}thenByAsync(e,t){return je.generateAsync(this,e,!0,t)}thenByDescending(e,t){return je.generate(this,e,!1,t)}thenByDescendingAsync(e,t){return je.generateAsync(this,e,!1,t)}}const He=(e,t)=>je.generate(e,(e=>e),!0,t),Qe=(e,t,n)=>je.generate(e,t,!0,n),Ze=(e,t,n)=>je.generateAsync(e,t,!0,n),Ke=(e,t,n)=>je.generate(e,t,!1,n),Ye=(e,t,n)=>je.generateAsync(e,t,!1,n),ze=(e,t)=>je.generate(e,(e=>e),!1,t),Je=(e,t)=>{const n=[],r=[];for(const s of e)!0===t(s)?r.push(s):n.push(s);return[r,n]},Xe=async(e,t)=>{const n=[],r=[];for(const s of e)!0===await t(s)?r.push(s):n.push(s);return[r,n]},et=(e,t)=>new y((function*(){yield t,yield*e})),tt=e=>new y((function*(){const t=[...e];for(let e=t.length-1;e>=0;e--)yield t[e]})),nt=(e,t)=>{if("function"==typeof t){const{length:n}=t;return 1===n?rt(e,t):st(e,t)}return ot(e,t)},rt=(e,t)=>new y((function*(){for(const n of e)yield t(n)})),st=(e,t)=>new y((function*(){let n=0;for(const r of e)yield t(r,n),n++})),ot=(e,t)=>new y((function*(){for(const n of e)yield n[t]})),it=(e,t)=>"function"==typeof t?1===t.length?at(e,t):ct(e,t):ut(e,t),at=(e,t)=>G((async function*(){for(const n of e)yield t(n)})),ct=(e,t)=>G((async function*(){let n=0;for(const r of e)yield t(r,n),n++})),ut=(e,t)=>G((async function*(){for(const n of e)yield n[t]})),lt=(e,t)=>"function"==typeof t?1===t.length?dt(e,t):ht(e,t):gt(e,t),dt=(e,t)=>new y((function*(){for(const n of e)for(const e of t(n))yield e})),ht=(e,t)=>new y((function*(){let n=0;for(const r of e){for(const e of t(r,n))yield e;n++}})),gt=(e,t)=>new y((function*(){for(const n of e)for(const e of n[t])yield e})),pt=(e,t)=>1===t.length?ft(e,t):vt(e,t),ft=(e,t)=>G((async function*(){for(const n of e){const e=await t(n);for(const t of e)yield t}})),vt=(e,t)=>G((async function*(){let n=0;for(const r of e){const e=await t(r,n);for(const t of e)yield t;n++}})),mt=(e,t,n=f)=>{const r=e[Symbol.iterator](),s=t[Symbol.iterator]();let o=r.next(),i=s.next();for(;!o.done&&!i.done;){if(!n(o.value,i.value))return!1;o=r.next(),i=s.next()}return!0===o.done&&!0===i.done},yt=async(e,t,n)=>{const r=e[Symbol.iterator](),s=t[Symbol.iterator]();let o=r.next(),i=s.next();for(;!o.done&&!i.done;){if(!1===await n(o.value,i.value))return!1;o=r.next(),i=s.next()}return!0===o.done&&!0===i.done},wt=(e,t)=>t?At(e,t):St(e),St=e=>{let t=!1,n=null;for(const r of e){if(!0===t)throw new p(g.MoreThanOneElement);t=!0,n=r}if(!1===t)throw new p(g.NoElements);return n},At=(e,t)=>{let n=!1,r=null;for(const s of e)if(t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}if(!1===n)throw new p(g.NoMatch);return r},_t=async(e,t)=>{let n=!1,r=null;for(const s of e)if(await t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}if(!1===n)throw new p(g.NoMatch);return r},Ct=(e,t)=>t?Dt(e,t):Tt(e),Tt=e=>{let t=!1,n=null;for(const r of e){if(!0===t)throw new p(g.MoreThanOneElement);t=!0,n=r}return n},Dt=(e,t)=>{let n=!1,r=null;for(const s of e)if(t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}return r},kt=async(e,t)=>{let n=!1,r=null;for(const s of e)if(await t(s)){if(!0===n)throw new p(g.MoreThanOneElement);n=!0,r=s}return r},It=(e,t)=>new y((function*(){let n=0;for(const r of e)n++>=t&&(yield r)})),Et=(e,t)=>1===t.length?Rt(e,t):Nt(e,t),Rt=(e,t)=>new y((function*(){let n=!0;for(const r of e)!1===n?yield r:!1===t(r)&&(n=!1,yield r)})),Nt=(e,t)=>new y((function*(){let n=0,r=!0;for(const s of e)!1===r?yield s:!1===t(s,n)&&(r=!1,yield s),n++})),Gt=(e,t)=>1===t.length?bt(e,t):Pt(e,t),bt=(e,t)=>G((async function*(){let n=!0;for(const r of e)!1===n?yield r:!1===await t(r)&&(n=!1,yield r)})),Pt=(e,t)=>G((async function*(){let n=0,r=!0;for(const s of e)!1===r?yield s:!1===await t(s,n)&&(r=!1,yield s),n++})),Ot=(e,t)=>t?Ut(e,t):Mt(e),Mt=e=>{let t=0;for(const n of e)t+=n;return t},Ut=(e,t)=>{let n=0;for(const r of e)n+=t(r);return n},Wt=async(e,t)=>{let n=0;for(const r of e)n+=await t(r);return n},xt=(e,t)=>new y((function*(){let n=t>0?t:0;for(const t of e){if(0==n--)break;yield t}})),Ft=(e,t)=>1===t.length?Lt(e,t):Bt(e,t),Lt=(e,t)=>new y((function*(){for(const n of e){if(!t(n))break;yield n}})),Bt=(e,t)=>new y((function*(){let n=0;for(const r of e){if(!t(r,n++))break;yield r}})),$t=(e,t)=>1===t.length?qt(e,t):Vt(e,t),qt=(e,t)=>G((async function*(){for(const n of e){if(!await t(n))break;yield n}})),Vt=(e,t)=>G((async function*(){let n=0;for(const r of e){if(!await t(r,n++))break;yield r}})),jt=e=>[...e],Ht=(e,t)=>{const n=new Map;for(const r of e){const e=t(r),s=n.get(e);void 0===s?n.set(e,[r]):s.push(r)}return n},Qt=async(e,t)=>{const n=new Map;for(const r of e){const e=await t(r),s=n.get(e);void 0===s?n.set(e,[r]):s.push(r)}return n},Zt=(e,t)=>{const n={};for(const r of e)n[t(r)]=r;return n},Kt=async(e,t)=>{const n={};for(const r of e)n[await t(r)]=r;return n},Yt=e=>new Set(e),zt=(e,t,n)=>n?Xt(e,t,n):Jt(e,t),Jt=(e,t)=>new y((function*(){const n=new Set;for(const t of e)!1===n.has(t)&&(yield t,n.add(t));for(const e of t)!1===n.has(e)&&(yield e,n.add(e))})),Xt=(e,t,n)=>new y((function*(){const r=[];for(const s of[e,t])for(const e of s){let t=!1;for(const s of r)if(!0===n(e,s)){t=!0;break}!1===t&&(yield e,r.push(e))}})),en=(e,t,n)=>G((async function*(){const r=[];for(const s of[e,t])for(const e of s){let t=!1;for(const s of r)if(!0===await n(e,s)){t=!0;break}!1===t&&(yield e,r.push(e))}})),tn=(e,t)=>1===t.length?nn(e,t):rn(e,t),nn=(e,t)=>new y((function*(){for(const n of e)!0===t(n)&&(yield n)})),rn=(e,t)=>new y((function*(){let n=0;for(const r of e)!0===t(r,n++)&&(yield r)})),sn=(e,t)=>1===t.length?on(e,t):an(e,t),on=(e,t)=>G((async function*(){for(const n of e)!0===await t(n)&&(yield n)})),an=(e,t)=>G((async function*(){let n=0;for(const r of e)!0===await t(r,n++)&&(yield r)})),cn=(e,t,n)=>n?ln(e,t,n):un(e,t),un=(e,t)=>new y((function*(){const n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){const e=n.next(),t=r.next();if(e.done||t.done)break;yield[e.value,t.value]}})),ln=(e,t,n)=>new y((function*(){const r=e[Symbol.iterator](),s=t[Symbol.iterator]();for(;;){const e=r.next(),t=s.next();if(e.done||t.done)break;yield n(e.value,t.value)}})),dn=(e,t,n)=>G((async function*(){const r=e[Symbol.iterator](),s=t[Symbol.iterator]();for(;;){const e=r.next(),t=s.next();if(e.done||t.done)break;yield n(e.value,t.value)}})),hn=e=>{const t=e.prototype,n=(e,n)=>{const r=function(...t){return e(this,...t)};Object.defineProperty(r,"length",{value:e.length-1}),t[n]=r};n(S,"aggregate"),n(T,"all"),n(D,"allAsync"),n(k,"any"),n(R,"anyAsync"),n(N,"append"),n(b,"asAsync"),n(O,"asParallel"),n(M,"average"),n(U,"averageAsync"),n(W,"chunk"),n(x,"concatenate"),n(F,"contains"),n(L,"containsAsync"),n(B,"count"),n(V,"countAsync"),n(j,"defaultIfEmpty"),n(H,"distinct"),n(Q,"distinctAsync"),n(Z,"each"),n(K,"eachAsync"),n(Y,"elementAt"),n(z,"elementAtOrDefault"),n(J,"except"),n(X,"exceptAsync"),n(ee,"first"),n(re,"firstAsync"),n(se,"firstOrDefault"),n(ae,"firstOrDefaultAsync"),n(ue,"groupBy"),n(le,"groupByAsync"),n(ge,"groupByWithSel"),n(pe,"groupJoin"),n(me,"groupJoinAsync"),n(Se,"intersect"),n(Ae,"intersectAsync"),n(_e,"joinByKey"),n(Ce,"last"),n(ke,"lastAsync"),n(Ie,"lastOrDefault"),n(Ne,"lastOrDefaultAsync"),n(Ge,"max"),n(Oe,"maxAsync"),n(Me,"min"),n(xe,"minAsync"),n(Fe,"ofType"),n(He,"order"),n(Qe,"orderBy"),n(Ze,"orderByAsync"),n(Ke,"orderByDescending"),n(Ye,"orderByDescendingAsync"),n(ze,"orderDescending"),n(et,"prepend"),n(tt,"reverse"),n(nt,"select"),n(it,"selectAsync"),n(lt,"selectMany"),n(pt,"selectManyAsync"),n(mt,"sequenceEquals"),n(yt,"sequenceEqualsAsync"),n(wt,"single"),n(_t,"singleAsync"),n(Ct,"singleOrDefault"),n(kt,"singleOrDefaultAsync"),n(It,"skip"),n(Et,"skipWhile"),n(Gt,"skipWhileAsync"),n(Ot,"sum"),n(Wt,"sumAsync"),n(xt,"take"),n(Ft,"takeWhile"),n($t,"takeWhileAsync"),n(jt,"toArray"),n(Ht,"toMap"),n(Qt,"toMapAsync"),n(Zt,"toObject"),n(Kt,"toObjectAsync"),n(Je,"partition"),n(Xe,"partitionAsync"),n(Yt,"toSet"),n(zt,"union"),n(en,"unionAsync"),n(tn,"where"),n(sn,"whereAsync"),n(cn,"zip"),n(dn,"zipAsync")},gn=(e,t,n,r)=>{if(r){if(!n)throw new ReferenceError("TAccumulate function is undefined");return vn(e,t,n,r)}return n?fn(e,t,n):pn(e,t)},pn=async(e,t)=>{let n;for await(const r of e)n=n?t(n,r):r;if(void 0===n)throw new p(g.NoElements);return n},fn=async(e,t,n)=>{let r=t;for await(const t of e)r=n(r,t);return r},vn=async(e,t,n,r)=>{let s=t;for await(const t of e)s=n(s,t);return r(s)},mn=async(e,t)=>{for await(const n of e)if(!1===t(n))return!1;return!0},yn=async(e,t)=>{for await(const n of e)if(!1===await t(n))return!1;return!0},wn=(e,t)=>new v((async function*(){yield*e,yield t})),Sn=(e,t)=>t?_n(e,t):An(e),An=async e=>{for await(const t of e)return!0;return!1},_n=async(e,t)=>{for await(const n of e)if(!0===t(n))return!0;return!1},Cn=async(e,t)=>{for await(const n of e)if(!0===await t(n))return!0;return!1},Tn=e=>P(0,(async()=>{const t=[];for await(const n of e)t.push(n);return t})),Dn=async(e,t)=>{let n=0,r=0;if(t)for await(const s of e)n+=t(s),r+=1;else for await(const t of e)n+=t,r+=1;if(0===r)throw new p(g.NoElements);return n/r},kn=async(e,t)=>{let n=0,r=0;for await(const s of e)n+=await t(s),r+=1;if(0===r)throw new p(g.NoElements);return n/r},In=(e,t)=>{if(t<1)throw new h("size");return new v((async function*(){let n=[];for await(const r of e)n.push(r),n.length===t&&(yield n,n=[]);n.length&&(yield n)}))},En=(e,t)=>new v((async function*(){yield*e,yield*t})),Rn=async(e,t,n=f)=>{for await(const r of e)if(n(t,r))return!0;return!1},Nn=async(e,t,n)=>{for await(const r of e)if(await n(t,r))return!0;return!1},Gn=(e,t)=>t?Pn(e,t):bn(e),bn=async e=>{let t=0;for await(const n of e)t++;return t},Pn=async(e,t)=>{let n=0;for await(const r of e)!0===t(r)&&n++;return n},On=async(e,t)=>{let n=0;for await(const r of e)!0===await t(r)&&n++;return n},Mn=(e,t)=>new v((async function*(){let n=!1;for await(const t of e)n=!0,yield t;n||(yield t)})),Un=(e,t=f)=>new v((async function*(){const n=[];for await(const r of e)n.find((e=>t(e,r)))||(n.push(r),yield r)})),Wn=(e,t)=>new v((async function*(){const n=[];e:for await(const r of e){for(const e of n)if(await t(e,r))continue e;n.push(r),yield r}})),xn=(e,t)=>new v((async function*(){for await(const n of e)t(n),yield n})),Fn=(e,t)=>new v((async function*(){for await(const n of e)await t(n),yield n})),Ln=async(e,t)=>{if(t<0)throw new h("index");let n=0;for await(const r of e)if(t===n++)return r;throw new h("index")},Bn=async(e,t)=>{let n=0;for await(const r of e)if(t===n++)return r;return null},$n=(e,t,n=f)=>new v((async function*(){const r=[];for await(const e of t)r.push(e);for await(const t of e){let e=!1;for(let s=0;s<r.length;s++){const o=r[s];if(!0===n(t,o)){e=!0;break}}!1===e&&(yield t)}})),qn=(e,t,n)=>new v((async function*(){const r=[];for await(const e of t)r.push(e);for await(const t of e){let e=!1;for(let s=0;s<r.length;s++){const o=r[s];if(!0===await n(t,o)){e=!0;break}}!1===e&&(yield t)}})),Vn=(e,t)=>t?Hn(e,t):jn(e),jn=async e=>{const t=await e[Symbol.asyncIterator]().next();if(!0===t.done)throw new p(g.NoElements);return t.value},Hn=async(e,t)=>{for await(const n of e)if(!0===t(n))return n;throw new p(g.NoMatch)},Qn=async(e,t)=>{for await(const n of e)if(!0===await t(n))return n;throw new p(g.NoMatch)},Zn=(e,t)=>t?Yn(e,t):Kn(e),Kn=async e=>(await e[Symbol.asyncIterator]().next()).value??null,Yn=async(e,t)=>{for await(const n of e)if(!0===t(n))return n;return null},zn=async(e,t)=>{for await(const n of e)if(!0===await t(n))return n;return null},Jn=(e,t,n)=>n?Xn(e,t,n):er(e,t),Xn=(e,t,n)=>new v((async function*(){const r=new Array;for await(const s of e){const e=t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}for(const e of r)yield e})),er=(e,t)=>new v((async function*(){const n={};for await(const r of e){const e=t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}for(const e in n)yield n[e]})),tr=(e,t,n)=>n?rr(e,t,n):nr(e,t),nr=(e,t)=>new v((async function*(){const n={};for await(const r of e){const e=await t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}for(const e in n)yield n[e]})),rr=(e,t,n)=>new v((async function*(){const r=new Array;for await(const s of e){const e=await t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(!0===await n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}for(const e of r)yield e})),sr=(e,t,n,r)=>r?ir(e,t,n,r):or(e,t,n),or=(e,t,n)=>new v((async function*(){const r={};for await(const s of e){const e=t(s),o=r[e],i=n(s);o?o.push(i):r[e]=new ce(e,i)}for(const e in r)yield r[e]})),ir=(e,t,n,r)=>new v((async function*(){const s=new Array;for await(const o of e){const e=t(o);let i=!1;for(let t=0;t<s.length;t++){const a=s[t];if(r(a.key,e)){a.push(n(o)),i=!0;break}}if(!1===i){const t=n(o);s.push(new ce(e,t))}}for(const e of s)yield e})),ar=(e,t,n,r,s,o)=>{const i=o?cr(e,t,n,r,s,o):ur(e,t,n,r,s);return new v(i)},cr=(e,t,n,r,s,o)=>async function*(){const i=[];for await(const e of t){const t=r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}for await(const t of e){const e=n(t),r=i.find((t=>o(t.key,e)))??{key:e,values:[]};yield s(t,r.values)}},ur=(e,t,n,r,s)=>async function*(){const o=new Map;for await(const e of t){const t=r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}for await(const t of e){const e=n(t),r=o.get(e)??[];yield s(t,r)}},lr=(e,t,n,r,s,o)=>{const i=o?dr(e,t,n,r,s,o):hr(e,t,n,r,s);return new v(i)},dr=(e,t,n,r,s,o)=>async function*(){const i=[];for await(const e of t){const t=await r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}for await(const t of e){const e=await n(t),r=i.find((t=>o(t.key,e)))??{key:e,values:[]};yield s(t,r.values)}},hr=(e,t,n,r,s)=>async function*(){const o=new Map;for await(const e of t){const t=await r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}for await(const t of e){const e=await n(t),r=o.get(e)??[];yield s(t,r)}},gr=(e,t,n=f)=>new v((async function*(){const r=await e.distinct(n).toArray();if(0===r.length)return;const s=await t.toArray();for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===n(t,r)){yield t;break}}}})),pr=(e,t,n)=>new v((async function*(){const r=await e.distinctAsync(n).toArray();if(0===r.length)return;const s=await t.toArray();for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===await n(t,r)){yield t;break}}}})),fr=(e,t,n,r,s,o=f)=>new v((async function*(){const i=[];for await(const e of t)i.push(e);for await(const t of e){const e=n(t);for(const n of i){const i=r(n);!0===o(e,i)&&(yield s(t,n))}}})),vr=(e,t)=>t?yr(e,t):mr(e),mr=async e=>{let t=null;for await(const n of e)t=n;if(!t)throw new p(g.NoElements);return t},yr=async(e,t)=>{let n=null;for await(const r of e)!0===t(r)&&(n=r);if(!n)throw new p(g.NoMatch);return n},wr=async(e,t)=>{let n=null;for await(const r of e)!0===await t(r)&&(n=r);if(!n)throw new p(g.NoMatch);return n},Sr=(e,t)=>t?_r(e,t):Ar(e),Ar=async e=>{let t=null;for await(const n of e)t=n;return t},_r=async(e,t)=>{let n=null;for await(const r of e)!0===t(r)&&(n=r);return n},Cr=async(e,t)=>{let n=null;for await(const r of e)!0===await t(r)&&(n=r);return n},Tr=(e,t)=>t?kr(e,t):Dr(e),Dr=async e=>{let t=null;for await(const n of e)t=Math.max(t??Number.NEGATIVE_INFINITY,n);if(null===t)throw new p(g.NoElements);return t},kr=async(e,t)=>{let n=null;for await(const r of e)n=Math.max(n??Number.NEGATIVE_INFINITY,t(r));if(null===n)throw new p(g.NoElements);return n},Ir=async(e,t)=>{let n=null;for await(const r of e)n=Math.max(n??Number.NEGATIVE_INFINITY,await t(r));if(null===n)throw new p(g.NoElements);return n},Er=(e,t)=>t?Nr(e,t):Rr(e),Rr=async e=>{let t=null;for await(const n of e)t=Math.min(t??Number.POSITIVE_INFINITY,n);if(null===t)throw new p(g.NoElements);return t},Nr=async(e,t)=>{let n=null;for await(const r of e)n=Math.min(n??Number.POSITIVE_INFINITY,t(r));if(null===n)throw new p(g.NoElements);return n},Gr=async(e,t)=>{let n=null;for await(const r of e)n=Math.min(n??Number.POSITIVE_INFINITY,await t(r));if(null===n)throw new p(g.NoElements);return n},br=(e,t)=>{const n="string"==typeof t?e=>typeof e===t:e=>e instanceof t;return new v((async function*(){for await(const t of e)n(t)&&(yield t)}))},Pr=(e,t)=>$e.generate(e,(e=>e),!0,t),Or=(e,t,n)=>$e.generate(e,t,!0,n),Mr=(e,t,n)=>$e.generateAsync(e,t,!0,n),Ur=(e,t,n)=>$e.generate(e,t,!1,n),Wr=(e,t,n)=>$e.generateAsync(e,t,!1,n),xr=(e,t)=>$e.generate(e,(e=>e),!1,t),Fr=async(e,t)=>{const n=[],r=[];for await(const s of e)!0===t(s)?r.push(s):n.push(s);return[r,n]},Lr=async(e,t)=>{const n=[],r=[];for await(const s of e)!0===await t(s)?r.push(s):n.push(s);return[r,n]},Br=(e,t)=>new v((async function*(){yield t,yield*e})),$r=e=>new v((async function*(){const t=[];for await(const n of e)t.push(n);for(let e=t.length-1;e>=0;e--)yield t[e]})),qr=(e,t)=>"function"==typeof t?1===t.length?Vr(e,t):jr(e,t):Hr(e,t),Vr=(e,t)=>new v((async function*(){for await(const n of e)yield t(n)})),jr=(e,t)=>new v((async function*(){let n=0;for await(const r of e)yield t(r,n),n++})),Hr=(e,t)=>new v((async function*(){for await(const n of e)yield n[t]})),Qr=(e,t)=>"string"==typeof t?Kr(e,t):Zr(e,t),Zr=(e,t)=>new v((async function*(){for await(const n of e)yield t(n)})),Kr=(e,t)=>new v((async function*(){for await(const n of e)yield n[t]})),Yr=(e,t)=>"function"==typeof t?1===t.length?zr(e,t):Jr(e,t):Xr(e,t),zr=(e,t)=>new v((async function*(){for await(const n of e)for(const e of t(n))yield e})),Jr=(e,t)=>new v((async function*(){let n=0;for await(const r of e){for(const e of t(r,n))yield e;n++}})),Xr=(e,t)=>new v((async function*(){for await(const n of e)for(const e of n[t])yield e})),es=(e,t)=>1===t.length?new v((async function*(){for await(const n of e){const e=await t(n);for(const t of e)yield t}})):new v((async function*(){let n=0;for await(const r of e){const e=await t(r,n);for(const t of e)yield t;n++}})),ts=async(e,t,n=f)=>{const r=e[Symbol.asyncIterator](),s=t[Symbol.asyncIterator]();let o=await Promise.all([r.next(),s.next()]),i=o[0],a=o[1];for(;!i.done&&!a.done;){if(!n(i.value,a.value))return!1;o=await Promise.all([r.next(),s.next()]),i=o[0],a=o[1]}return!0===i.done&&!0===a.done},ns=async(e,t,n)=>{const r=e[Symbol.asyncIterator](),s=t[Symbol.asyncIterator]();let o=await Promise.all([r.next(),s.next()]),i=o[0],a=o[1];for(;!i.done&&!a.done;){if(!1===await n(i.value,a.value))return!1;o=await Promise.all([r.next(),s.next()]),i=o[0],a=o[1]}return!0===i.done&&!0===a.done},rs=(e,t)=>t?os(e,t):ss(e),ss=async e=>{let t=!1,n=null;for await(const r of e){if(!0===t)throw new p(g.MoreThanOneElement);t=!0,n=r}if(!1===t)throw new p(g.NoElements);return n},os=async(e,t)=>{let n=!1,r=null;for await(const s of e)if(t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}if(!1===n)throw new p(g.NoMatch);return r},is=async(e,t)=>{let n=!1,r=null;for await(const s of e)if(await t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}if(!1===n)throw new p(g.NoMatch);return r},as=(e,t)=>t?us(e,t):cs(e),cs=async e=>{let t=!1,n=null;for await(const r of e){if(!0===t)throw new p(g.MoreThanOneElement);t=!0,n=r}return n},us=async(e,t)=>{let n=!1,r=null;for await(const s of e)if(t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}return r},ls=async(e,t)=>{let n=!1,r=null;for await(const s of e)if(await t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}return r},ds=(e,t)=>new v((async function*(){let n=0;for await(const r of e)n++>=t&&(yield r)})),hs=(e,t)=>1===t.length?gs(e,t):ps(e,t),gs=(e,t)=>new v((async function*(){let n=!0;for await(const r of e)!1===n?yield r:!1===t(r)&&(n=!1,yield r)})),ps=(e,t)=>new v((async function*(){let n=0,r=!0;for await(const s of e)!1===r?yield s:!1===t(s,n)&&(r=!1,yield s),n++})),fs=(e,t)=>1===t.length?vs(e,t):ms(e,t),vs=(e,t)=>new v((async function*(){let n=!0;for await(const r of e)!1===n?yield r:!1===await t(r)&&(n=!1,yield r)})),ms=(e,t)=>new v((async function*(){let n=0,r=!0;for await(const s of e)!1===r?yield s:!1===await t(s,n)&&(r=!1,yield s),n++})),ys=(e,t)=>t?Ss(e,t):ws(e),ws=async e=>{let t=0;for await(const n of e)t+=n;return t},Ss=async(e,t)=>{let n=0;for await(const r of e)n+=t(r);return n},As=async(e,t)=>{let n=0;for await(const r of e)n+=await t(r);return n},_s=(e,t)=>new v((async function*(){let n=t>0?t:0;for await(const t of e){if(0==n--)break;yield t}})),Cs=(e,t)=>1===t.length?Ts(e,t):Ds(e,t),Ts=(e,t)=>new v((async function*(){for await(const n of e){if(!t(n))break;yield n}})),Ds=(e,t)=>new v((async function*(){let n=0;for await(const r of e){if(!t(r,n++))break;yield r}})),ks=(e,t)=>1===t.length?Is(e,t):Es(e,t),Is=(e,t)=>new v((async function*(){for await(const n of e){if(!await t(n))break;yield n}})),Es=(e,t)=>new v((async function*(){let n=0;for await(const r of e){if(!await t(r,n++))break;yield r}})),Rs=async e=>{const t=[];for await(const n of e)t.push(n);return t},Ns=async(e,t)=>{const n=new Map;for await(const r of e){const e=t(r),s=n.get(e);void 0===s?n.set(e,[r]):s.push(r)}return n},Gs=async(e,t)=>{const n=new Map;for await(const r of e){const e=await t(r),s=n.get(e);void 0===s?n.set(e,[r]):s.push(r)}return n},bs=async(e,t)=>{const n={};for await(const r of e)n[t(r)]=r;return n},Ps=async(e,t)=>{const n={};for await(const r of e)n[await t(r)]=r;return n},Os=async e=>{const t=new Set;for await(const n of e)t.add(n);return t},Ms=(e,t,n)=>n?Ws(e,t,n):Us(e,t),Us=(e,t)=>new v((async function*(){const n=new Set;for await(const t of e)!1===n.has(t)&&(yield t,n.add(t));for await(const e of t)!1===n.has(e)&&(yield e,n.add(e))})),Ws=(e,t,n)=>new v((async function*(){const r=[];for(const s of[e,t])for await(const e of s){let t=!1;for(const s of r)if(!0===n(e,s)){t=!0;break}!1===t&&(yield e,r.push(e))}})),xs=(e,t,n)=>new v((async function*(){const r=[];for(const s of[e,t])for await(const e of s){let t=!1;for(const s of r)if(!0===await n(e,s)){t=!0;break}!1===t&&(yield e,r.push(e))}})),Fs=(e,t)=>1===t.length?Ls(e,t):Bs(e,t),Ls=(e,t)=>new v((async function*(){for await(const n of e)!0===t(n)&&(yield n)})),Bs=(e,t)=>new v((async function*(){let n=0;for await(const r of e)!0===t(r,n++)&&(yield r)})),$s=(e,t)=>1===t.length?qs(e,t):Vs(e,t),qs=(e,t)=>new v((async function*(){for await(const n of e)!0===await t(n)&&(yield n)})),Vs=(e,t)=>new v((async function*(){let n=0;for await(const r of e)!0===await t(r,n++)&&(yield r)})),js=(e,t,n)=>n?Qs(e,t,n):Hs(e,t),Hs=(e,t)=>new v((async function*(){const n=e[Symbol.asyncIterator](),r=t[Symbol.asyncIterator]();for(;;){const[e,t]=await Promise.all([n.next(),r.next()]);if(e.done||t.done)break;yield[e.value,t.value]}})),Qs=(e,t,n)=>new v((async function*(){const r=e[Symbol.asyncIterator](),s=t[Symbol.asyncIterator]();for(;;){const[e,t]=await Promise.all([r.next(),s.next()]);if(e.done||t.done)break;yield n(e.value,t.value)}})),Zs=(e,t,n)=>new v((async function*(){const r=e[Symbol.asyncIterator](),s=t[Symbol.asyncIterator]();for(;;){const e=await Promise.all([r.next(),s.next()]),t=e[0],o=e[1];if(t.done||o.done)break;yield n(t.value,o.value)}})),Ks=(e,t,n,r)=>{if(r){if(!n)throw new ReferenceError("TAccumulate function is undefined");return Js(e,t,n,r)}return n?zs(e,t,n):Ys(e,t)},Ys=async(e,t)=>{let n;for await(const r of e)n=n?t(n,r):r;if(void 0===n)throw new p(g.NoElements);return n},zs=async(e,t,n)=>{let r=t;for await(const t of e)r=n(r,t);return r},Js=async(e,t,n,r)=>{let s=t;for await(const t of e)s=n(s,t);return r(s)},Xs=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return{generator:()=>n.generator().then((e=>{const n=new Array(e.length);for(let r=0;r<e.length;r++)n[r]=t(e[r]);return n})),type:0};case 1:return{generator:()=>{const e=n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n].then(t);return r},type:1};case 2:return{generator:async()=>{const e=await n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n].then(t);return r},type:2}}},eo=(e,t)=>{const n=Xs(e,(e=>{if(!t(e))throw new Error(String(!1));return!0}));switch(n.type){case 0:return n.generator().then((()=>!0),(()=>!1));case 1:return Promise.all(n.generator()).then((()=>!0),(()=>!1));case 2:return n.generator().then(Promise.all.bind(Promise)).then((()=>!0),(()=>!1))}},to=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return{generator:async()=>{const e=await n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=t(e[n]);return r},type:2};case 1:return{generator:()=>n.generator().map((async e=>{const n=await e;return await t(n)})),type:1};case 2:return{generator:async()=>(await n.generator()).map((e=>e.then(t))),type:2}}},no=(e,t)=>{const n=to(e,(async e=>{if(!1===await t(e))throw new Error(String(!1));return!0}));switch(n.type){case 1:return Promise.all(n.generator()).then((()=>!0),(()=>!1));case 2:return n.generator().then(Promise.all.bind(Promise)).then((()=>!0),(()=>!1))}},ro=(e,t)=>{const n=e.dataFunc;switch(n.type){case 1:return new m({generator:()=>{const e=n.generator();return e.push(Promise.resolve(t)),e},type:n.type});case 2:return new m({generator:async()=>{const e=await n.generator();return e.push(Promise.resolve(t)),e},type:n.type});case 0:return new m({generator:async()=>{const e=await n.generator();return e.push(t),e},type:n.type})}},so=(e,t)=>t?io(e,t):oo(e),oo=async e=>{const t=e.dataFunc;let n;switch(t.type){case 1:return n=t.generator(),0!==n.length;case 0:case 2:return n=await t.generator(),0!==n.length}},io=async(e,t)=>{const n=Xs(e,t);let r;switch(n.type){case 0:return r=await n.generator(),r.includes(!0);case 1:return r=await Promise.all(n.generator()),r.includes(!0);case 2:return r=await Promise.all(await n.generator()),r.includes(!0)}},ao=async(e,t)=>{const n=to(e,t);let r;switch(n.type){case 1:return r=n.generator(),0!==r.length&&new Promise(((e,t)=>{let n=0;for(const s of r)s.then((t=>{n++,t?e(!0):n===r.length&&e(!1)}),t)}));case 2:return r=await n.generator(),0===Promise.length?!1:(await Promise.all(r)).includes(!0)}},co=e=>G((async function*(){for await(const t of e)yield t})),uo=async e=>{switch(e.type){case 0:return await e.generator();case 1:return await Promise.all(e.generator());case 2:const t=await e.generator();return await Promise.all(t)}},lo=async(e,t)=>{let n;n=t?Xs(e,t):e.dataFunc;const r=await uo(n);if(0===r.length)throw new p(g.NoElements);let s=0;for(const e of r)s+=e;return s/r.length},ho=async(e,t)=>{const n=to(e,t),r=await uo(n);if(0===r.length)throw new p(g.NoElements);let s=0;for(const e of r)s+=e;return s/r.length},go=(e,t)=>{if(t<1)throw new h("size");let n;switch(e.dataFunc.type){case 1:const r=e.dataFunc.generator;n={type:1,generator:()=>{const e=[];let n=[];for(const s of r())n.push(s),n.length===t&&(e.push(Promise.all(n)),n=[]);return n.length&&e.push(Promise.all(n)),e}};break;case 2:const s=e.dataFunc.generator;n={type:2,generator:async()=>{const e=[];let n=[];for(const r of await s())n.push(r),n.length===t&&(e.push(Promise.all(n)),n=[]);return n.length&&e.push(Promise.all(n)),e}};break;case 0:const o=e.dataFunc.generator;n={type:0,generator:async()=>{const e=[];let n=[];for(const r of await o())n.push(r),n.length===t&&(e.push(n),n=[]);return n.length&&e.push(n),e}}}return new m(n)},po=(e,t)=>new m({generator:async()=>{const[n,r]=await Promise.all([e.toArray(),t.toArray()]);return[...n,...r]},type:0}),fo=async(e,t,n=f)=>{let r;switch(r=Xs(e,n?e=>n(t,e):e=>e===t),r.type){case 0:return(await r.generator()).some((e=>e));case 1:return(await Promise.all(r.generator())).some((e=>e));case 2:return(await Promise.all(await r.generator())).some((e=>e))}},vo=async(e,t,n)=>{const r=to(e,(e=>n(t,e)));switch(r.type){case 1:return(await Promise.all(r.generator())).some((e=>e));case 2:return(await Promise.all(await r.generator())).some((e=>e))}},mo=(e,t)=>t?wo(e,t):yo(e),yo=async e=>{const t=e.dataFunc;switch(t.type){case 0:case 2:return(await e.toArray()).length;case 1:return t.generator().length}},wo=async(e,t)=>{const n=await e.toArray();let r=0;for(let e=0;e<n.length;e++)!0===t(n[e])&&r++;return r},So=async(e,t)=>{const n=to(e,t);let r;switch(n.type){case 1:r=Promise.all(n.generator());break;case 2:r=Promise.all(await n.generator())}let s=0;for(const e of await r)e&&s++;return s},Ao=(e,t)=>{const n=e.dataFunc,r=t instanceof Promise;let s;switch(n.type){case 0:s={generator:()=>n.generator().then((e=>e.length?e:r?t.then((e=>[e])):[t])),type:n.type};break;case 1:s={generator:()=>{const e=n.generator();return e.length?e:r?[t]:[Promise.resolve(t)]},type:n.type};break;case 2:s={generator:async()=>{const e=await n.generator();return e.length?e:r?[t]:[Promise.resolve(t)]},type:n.type}}return new m(s)},_o=(e,t=f)=>new m({generator:async()=>{const n=[];for(const r of await e.toArray())n.find((e=>t(e,r)))||n.push(r);return n},type:0}),Co=(e,t)=>new m({generator:async()=>{const n=[];e:for(const r of await e.toArray()){for(const e of n)if(await t(e,r))continue e;n.push(r)}return n},type:0}),To=(e,t)=>new m(Xs(e,(e=>(t(e),e)))),Do=(e,t)=>{const n=to(e,(async e=>(await t(e),e)));return new m(n)},ko=async(e,t)=>{if(t<0)throw new h("index");const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();if(t>=e.length)throw new h("index");return e[t]}case 1:{const e=n.generator();if(t>=e.length)throw new h("index");return await e[t]}case 2:{const e=await n.generator();if(t>=e.length)throw new h("index");return await e[t]}}},Io=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();return t>=e.length?null:e[t]}case 1:{const e=n.generator();return t>=e.length?null:await e[t]}case 2:{const e=await n.generator();return t>=e.length?null:await e[t]}}},Eo=(e,t,n=f)=>new m({generator:async()=>{const[r,s]=await Promise.all([e.toArray(),t.toArray()]),o=[];for(const e of r){let t=!1;for(let r=0;r<s.length;r++){const o=s[r];if(!0===n(e,o)){t=!0;break}}!1===t&&o.push(e)}return o},type:0}),Ro=(e,t,n)=>new m({generator:async()=>{const[r,s]=await Promise.all([e.toArray(),t.toArray()]),o=[];for(const e of r){let t=!1;for(let r=0;r<s.length;r++){const o=s[r];if(!0===await n(e,o)){t=!0;break}}!1===t&&o.push(e)}return o},type:0}),No=e=>uo(e.dataFunc),Go=(e,t)=>t?Po(e,t):bo(e),bo=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();if(0===e.length)throw new p(g.NoElements);return e[0]}case 1:{const e=t.generator();if(0===e.length)throw new p(g.NoElements);return await e[0]}case 2:{const e=await t.generator();if(0===e.length)throw new p(g.NoElements);return await e[0]}}},Po=async(e,t)=>{const n=await No(e);for(const e of n)if(!0===t(e))return e;throw new p(g.NoMatch)},Oo=async(e,t)=>{const n=await No(e);for(const e of n)if(!0===await t(e))return e;throw new p(g.NoMatch)},Mo=(e,t)=>t?Wo(e,t):Uo(e),Uo=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();return 0===e.length?null:e[0]}case 1:{const e=t.generator();return 0===e.length?null:await e[0]}case 2:{const e=await t.generator();return 0===e.length?null:await e[0]}}},Wo=async(e,t)=>{const n=await No(e);for(const e of n)if(!0===t(e))return e;return null},xo=async(e,t)=>{const n=await No(e);for(const e of n)if(!0===await t(e))return e;return null},Fo=(e,t,n)=>n?Bo(e,t,n):Lo(e,t),Lo=(e,t)=>new m({generator:async()=>{const n={};for(const r of await e.toArray()){const e=t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}const r=new Array;for(const e in n)r.push(n[e]);return r},type:0}),Bo=(e,t,n)=>new m({generator:async()=>{const r=new Array;for(const s of await e.toArray()){const e=t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}const s=new Array;for(const e of r)s.push(e);return s},type:0}),$o=(e,t,n)=>n?qo(e,t,n):Vo(e,t),qo=(e,t,n)=>new m({generator:async()=>{const r=to(e,(async e=>[await t(e),e]));let s;switch(r.type){case 1:s=await Promise.all(r.generator());break;case 2:s=await Promise.all(await r.generator())}const o=new Array;for(const[e,t]of s){let r=!1;for(let s=0;s<o.length;s++){const i=o[s];if(!0===await n(i.key,e)){i.push(t),r=!0;break}}!1===r&&o.push(new ce(e,t))}const i=new Array;for(const e of o)i.push(e);return i},type:0}),Vo=(e,t)=>new m({generator:async()=>{const n=to(e,(async e=>[await t(e),e]));let r;switch(n.type){case 1:r=await Promise.all(n.generator());break;case 2:r=await Promise.all(await n.generator())}const s={};for(const[e,t]of r){const n=s[e];n?n.push(t):s[e]=new ce(e,t)}const o=new Array;for(const e in s)o.push(s[e]);return o},type:0}),jo=(e,t,n,r)=>r?Ho(e,t,n,r):Qo(e,t,n),Ho=(e,t,n,r)=>new m({generator:async()=>{const s=new Array;for await(const o of e){const e=t(o);let i=!1;for(let t=0;t<s.length;t++){const a=s[t];if(r(a.key,e)){a.push(n(o)),i=!0;break}}if(!1===i){const t=n(o);s.push(new ce(e,t))}}const o=new Array;for(const e of s)o.push(e);return o},type:0}),Qo=(e,t,n)=>new m({generator:async()=>{const r={};for(const s of await e.toArray()){const e=t(s),o=r[e],i=n(s);o?o.push(i):r[e]=new ce(e,i)}const s=new Array;for(const e in r)s.push(r[e]);return s},type:0}),Zo=(e,t,n,r,s,o)=>{const i=o?Ko(e,t,n,r,s,o):Yo(e,t,n,r,s);return new m({generator:i,type:0})},Ko=(e,t,n,r,s,o)=>async()=>{const i=[];for await(const e of t){const t=r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}return(await e.toArray()).map((e=>{const t=n(e),r=i.find((e=>o(e.key,t)))??{key:t,values:[]};return s(e,r.values)}))},Yo=(e,t,n,r,s)=>async()=>{const o=new Map;for await(const e of t){const t=r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}return(await e.toArray()).map((e=>{const t=n(e),r=o.get(t)??[];return s(e,r)}))},zo=(e,t,n,r,s,o)=>{const i=o?Jo(e,t,n,r,s,o):Xo(e,t,n,r,s);return new m({generator:i,type:0})},Jo=(e,t,n,r,s,o)=>async()=>{const i=[];for await(const e of t){const t=await r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}const a=(await e.toArray()).map((async e=>{const t=await n(e),r=i.find((e=>o(e.key,t)))??{key:t,values:[]};return s(e,r.values)}));return await Promise.all(a)},Xo=(e,t,n,r,s)=>async()=>{const o=new Map;for await(const e of t){const t=await r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}const i=(await e.toArray()).map((async e=>{const t=await n(e),r=o.get(t)??[];return s(e,r)}));return await Promise.all(i)},ei=(e,t,n=f)=>new m({generator:async()=>{const r=await e.distinct(n).toArray();if(0===r.length)return[];const s=await t.toArray(),o=new Array;for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===n(t,r)){o.push(t);break}}}return o},type:0}),ti=(e,t,n)=>new m({generator:async()=>{const r=await e.distinctAsync(n).toArray();if(0===r.length)return[];const s=await t.toArray(),o=new Array;for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===await n(t,r)){o.push(t);break}}}return o},type:0}),ni=(e,t,n,r,s,o=f)=>new m({generator:async()=>{const[i,a]=await Promise.all([t.toArray(),e.toArray()]),c=new Array;for(const e of a){const t=n(e);for(const n of i){const i=r(n);!0===o(t,i)&&c.push(s(e,n))}}return c},type:0}),ri=(e,t)=>t?oi(e,t):si(e),si=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();if(0===e.length)throw new p(g.NoElements);return e[e.length-1]}case 1:{const e=t.generator();if(0===e.length)throw new p(g.NoElements);return await e[e.length-1]}case 2:{const e=await t.generator();if(0===e.length)throw new p(g.NoElements);return await e[e.length-1]}}},oi=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=e[n];if(t(r))return r}break}case 1:{const e=n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(t(r))return r}break}case 2:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(t(r))return r}break}}throw new p(g.NoMatch)},ii=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=e[n];if(!0===await t(r))return r}break}case 1:{const e=n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(!0===await t(r))return r}break}case 2:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(!0===await t(r))return r}break}}throw new p(g.NoMatch)},ai=(e,t)=>t?ui(e,t):ci(e),ci=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();return 0===e.length?null:e[e.length-1]}case 1:{const e=t.generator();return 0===e.length?null:await e[e.length-1]}case 2:{const e=await t.generator();return 0===e.length?null:await e[e.length-1]}}},ui=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=e[n];if(t(r))return r}break}case 1:{const e=n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(t(r))return r}break}case 2:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(t(r))return r}break}}return null},li=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=e[n];if(!0===await t(r))return r}break}case 1:{const e=n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(!0===await t(r))return r}break}case 2:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(!0===await t(r))return r}break}}return null},di=async(e,t)=>{let n;n=t?Xs(e,t):e.dataFunc;const r=await uo(n);if(0===r.length)throw new p(g.NoElements);return Math.max.apply(null,r)},hi=async(e,t)=>{const n=to(e,t),r=await uo(n);if(0===r.length)throw new p(g.NoElements);return Math.max.apply(null,r)},gi=async(e,t)=>{let n;n=t?Xs(e,t):e.dataFunc;const r=await uo(n);if(0===r.length)throw new p(g.NoElements);return Math.min.apply(null,r)},pi=async(e,t)=>{const n=to(e,t),r=await uo(n);if(0===r.length)throw new p(g.NoElements);return Math.min.apply(null,r)},fi=(e,t)=>{const n="string"==typeof t?e=>[typeof e===t,e]:e=>[e instanceof t,e];return new m({generator:async()=>{const t=Xs(e,n),r=await uo(t),s=[];for(const[e,t]of r)e&&s.push(t);return s},type:0})};async function*vi(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}async function*mi(e,t,n,r){const s=((e,t)=>{const n=new Map;for(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}class yi extends m{orderedPairs;constructor(e){super({generator:async()=>{const t=e(),n=[];for await(const e of t)n.push(...e);return n},type:0}),this.orderedPairs=e}static generateAsync(e,t,n,r){let s;return s=e instanceof yi?async function*(){for await(const s of e.orderedPairs())yield*vi(s,t,n,r)}:()=>async function*(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for await(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}(e,t,n,r),new yi(s)}static generate(e,t,n,r){let s;return s=e instanceof yi?async function*(){for await(const s of e.orderedPairs())yield*mi(s,t,n,r)}:()=>async function*(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for await(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}(e,t,n,r),new yi(s)}thenBy(e,t){return yi.generate(this,e,!0,t)}thenByAsync(e,t){return yi.generateAsync(this,e,!0,t)}thenByDescending(e,t){return yi.generate(this,e,!1,t)}thenByDescendingAsync(e,t){return yi.generateAsync(this,e,!1,t)}}const wi=(e,t)=>yi.generate(e,(e=>e),!0,t),Si=(e,t,n)=>yi.generate(e,t,!0,n),Ai=(e,t,n)=>yi.generateAsync(e,t,!0,n),_i=(e,t,n)=>yi.generate(e,t,!1,n),Ci=(e,t,n)=>yi.generateAsync(e,t,!1,n),Ti=(e,t)=>yi.generate(e,(e=>e),!1,t),Di=async(e,t)=>{const n=Xs(e,(e=>[t(e),e])),r=await uo(n),s=[],o=[];for(const[e,t]of r)e?o.push(t):s.push(t);return[o,s]},ki=async(e,t)=>{const n=to(e,(async e=>[await t(e),e])),r=await uo(n),s=[],o=[];for(const[e,t]of r)e?o.push(t):s.push(t);return[o,s]},Ii=(e,t)=>{const n=e.dataFunc;switch(n.type){case 1:return new m({generator:()=>{const e=n.generator();return e.unshift(Promise.resolve(t)),e},type:n.type});case 2:return new m({generator:async()=>{const e=await n.generator();return e.unshift(Promise.resolve(t)),e},type:n.type});case 0:return new m({generator:async()=>{const e=await n.generator();return e.unshift(t),e},type:n.type})}},Ei=e=>{const t=e.dataFunc;switch(t.type){case 1:return new m({generator:()=>t.generator().reverse(),type:t.type});case 2:case 0:return new m({generator:async()=>(await t.generator()).reverse(),type:t.type})}},Ri=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return{generator:()=>n.generator().then((e=>{const n=new Array(e.length);for(let r=0;r<e.length;r++)n[r]=t(e[r],r);return n})),type:0};case 1:return{generator:()=>{const e=n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n].then((e=>t(e,n)));return r},type:1};case 2:return{generator:async()=>{const e=await n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n].then((e=>t(e,n)));return r},type:2}}},Ni=(e,t)=>"function"==typeof t?1===t.length?new m(Xs(e,t)):new m(Ri(e,t)):new m(Xs(e,(e=>e[t]))),Gi=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return{generator:async()=>{const e=await n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=t(e[n],n);return r},type:2};case 1:return{generator:()=>n.generator().map(((e,n)=>e.then((e=>t(e,n))))),type:1};case 2:return{generator:async()=>(await n.generator()).map(((e,n)=>e.then((e=>t(e,n))))),type:2}}},bi=(e,t)=>{let n;return n="function"==typeof t?1===t.length?to(e,t):Gi(e,t):to(e,(e=>e[t])),new m(n)},Pi=(e,t)=>new m({generator:async()=>{let n;n="function"==typeof t?1===t.length?Xs(e,t):Ri(e,t):Xs(e,(e=>e[t]));const r=[];switch(n.type){case 0:for(const e of await n.generator())for(const t of e)r.push(t);break;case 1:for(const e of n.generator())for(const t of await e)r.push(t);break;case 2:for(const e of await n.generator())for(const t of await e)r.push(t)}return r},type:0}),Oi=(e,t)=>new m({generator:async()=>{let n;n=1===t.length?to(e,t):Gi(e,t);const r=[];switch(n.type){case 1:for(const e of n.generator())for(const t of await e)r.push(t);break;case 2:for(const e of await n.generator())for(const t of await e)r.push(t)}return r},type:0}),Mi=async(e,t,n=f)=>{const r=await e.toArray(),s=await t.toArray();if(r.length!==s.length)return!1;for(let e=0;e<r.length;e++)if(!1===n(r[e],s[e]))return!1;return!0},Ui=async(e,t,n)=>{const r=await e.toArray(),s=await t.toArray();if(r.length!==s.length)return!1;for(let e=0;e<r.length;e++){const t=r[e],o=s[e];if(!1===await n(t,o))return!1}return!0},Wi=(e,t)=>t?Fi(e,t):xi(e),xi=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);if(0===e.length)throw new p(g.NoElements);return e[0]}case 1:{const e=t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);if(0===e.length)throw new p(g.NoElements);return e[0]}case 2:{const e=await t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);if(0===e.length)throw new p(g.NoElements);return await e[0]}}},Fi=async(e,t)=>{const n=await No(e);let r=!1,s=null;for(const e of n)if(t(e)){if(!0===r)throw new p(g.MoreThanOneMatchingElement);r=!0,s=e}if(!1===r)throw new p(g.NoMatch);return s},Li=async(e,t)=>{const n=await No(e);let r=!1,s=null;for(const e of n)if(!0===await t(e)){if(!0===r)throw new p(g.MoreThanOneMatchingElement);r=!0,s=e}if(!1===r)throw new p(g.NoMatch);return s},Bi=(e,t)=>t?qi(e,t):$i(e),$i=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);return 0===e.length?null:e[0]}case 1:{const e=t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);return 0===e.length?null:e[0]}case 2:{const e=await t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);return 0===e.length?null:await e[0]}}},qi=async(e,t)=>{const n=await No(e);let r=!1,s=null;for(const e of n)if(t(e)){if(!0===r)throw new p(g.MoreThanOneElement);r=!0,s=e}return s},Vi=async(e,t)=>{const n=await No(e);let r=!1,s=null;for(const e of n)if(!0===await t(e)){if(!0===r)throw new p(g.MoreThanOneElement);r=!0,s=e}return s},ji=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return new m({generator:async()=>(await n.generator()).slice(t),type:0});case 1:return new m({generator:()=>n.generator().slice(t),type:1});case 2:return new m({generator:async()=>(await n.generator()).slice(t),type:2})}},Hi=(e,t)=>new m({generator:async()=>{const n=await e.toArray();let r=0;for(;r<n.length;r++){const e=n[r];if(!1===t(e,r))break}const s=[];for(;r<n.length;r++)s.push(n[r]);return s},type:0}),Qi=(e,t)=>new m({generator:async()=>{const n=await e.toArray();let r=0;for(;r<n.length;r++){const e=n[r];if(!1===await t(e,r))break}const s=[];for(;r<n.length;r++)s.push(n[r]);return s},type:0}),Zi=(e,t)=>t?Yi(e,t):Ki(e),Ki=async e=>{let t=0;for(const n of await e.toArray())t+=n;return t},Yi=async(e,t)=>{let n=0;for(const r of await e.toArray())n+=t(r);return n},zi=async(e,t)=>{const n=to(e,t),r=await uo(n);let s=0;for(const e of r)s+=e;return s},Ji=(e,t)=>{const n=t>0?t:0,r=e.dataFunc;switch(r.type){case 1:return new m({generator:()=>r.generator().splice(0,n),type:1});case 2:return new m({generator:()=>r.generator().then((e=>e.splice(0,n))),type:2});default:return new m({generator:()=>r.generator().then((e=>e.splice(0,n))),type:0})}},Xi=(e,t)=>new m({generator:async()=>{const n=await e.toArray(),r=new Array;if(1===t.length)for(const e of n){if(!0!==t(e))break;r.push(e)}else for(let e=0;e<n.length;e++){const s=n[e];if(!0!==t(s,e))break;r.push(s)}return r},type:0}),ea=(e,t)=>new m({generator:async()=>{const n=await e.toArray(),r=new Array;if(1===t.length){const e=t;for(const t of n){if(!0!==await e(t))break;r.push(t)}}else for(let e=0;e<n.length;e++){const s=n[e];if(!0!==await t(s,e))break;r.push(s)}return r},type:0}),ta=async(e,t)=>{const n=new Map,r=Xs(e,(e=>[t(e),e])),s=await uo(r);for(const[e,t]of s){const r=n.get(e);void 0===r?n.set(e,[t]):r.push(t)}return n},na=async(e,t)=>{const n=new Map,r=to(e,(async e=>[await t(e),e])),s=await uo(r);for(const[e,t]of s){const r=n.get(e);void 0===r?n.set(e,[t]):r.push(t)}return n},ra=async(e,t)=>{const n=e.dataFunc,r=await uo(n),s={};for(const e of r)s[t(e)]=e;return s},sa=async(e,t)=>{const n=to(e,(async e=>[await t(e),e])),r=await uo(n),s={};for(const[e,t]of r)s[e]=t;return s},oa=async e=>{const t=e.dataFunc,n=await uo(t);return new Set(n)},ia=(e,t,n)=>n?ca(e,t,n):aa(e,t),aa=(e,t)=>new m({generator:async()=>{const n=new Set,r=t.toArray();for await(const t of e)!1===n.has(t)&&n.add(t);const s=await r;for(const e of s)!1===n.has(e)&&n.add(e);return[...n.keys()]},type:0}),ca=(e,t,n)=>new m({generator:async()=>{const r=[],s=await Promise.all([e.toArray(),t.toArray()]);for(const e of s)for(const t of e){let e=!1;for(const s of r)if(!0===n(t,s)){e=!0;break}!1===e&&r.push(t)}return r},type:0}),ua=(e,t,n)=>new m({generator:async()=>{const r=[],s=await Promise.all([e.toArray(),t.toArray()]);for(const e of s)for(const t of e){let e=!1;for(const s of r)if(!0===await n(t,s)){e=!0;break}!1===e&&r.push(t)}return r},type:0}),la=(e,t)=>new m({generator:async()=>(await e.toArray()).filter(t),type:0}),da=(e,t)=>new m({generator:async()=>{const n=Gi(e,(async(e,n)=>[await t(e,n),e])),r=await uo(n),s=[];for(const[e,t]of r)e&&s.push(t);return s},type:0}),ha=(e,t,n)=>n?pa(e,t,n):ga(e,t),ga=(e,t)=>new m({generator:async()=>{const[n,r]=await Promise.all([e.toArray(),t.toArray()]),s=n.length<r.length?n.length:r.length,o=new Array(s);for(let e=0;e<s;e++){const t=n[e],s=r[e];o[e]=[t,s]}return o},type:0}),pa=(e,t,n)=>new m({generator:async()=>{const[r,s]=await Promise.all([e.toArray(),t.toArray()]),o=r.length<s.length?r.length:s.length,i=new Array(o);for(let e=0;e<o;e++){const t=r[e],o=s[e];i[e]=n(t,o)}return i},type:0}),fa=(e,t,n)=>new m({generator:async()=>{const[r,s]=await Promise.all([e.toArray(),t.toArray()]),o=r.length<s.length?r.length:s.length,i=new Array(o);for(let e=0;e<o;e++){const t=r[e],o=s[e];i[e]=n(t,o)}return Promise.all(i)},type:0}),va=e=>{const t=w.prototype,n=e.prototype,r=Object.getOwnPropertyNames(t);for(const e of r)n[e]=n[e]??t[e]};hn(y),(e=>{const t=e.prototype,n=(e,n)=>{const r=function(...t){return e(this,...t)};Object.defineProperty(r,"length",{value:e.length-1}),t[n]=r};n(gn,"aggregate"),n(mn,"all"),n(yn,"allAsync"),n(wn,"append"),n(Sn,"any"),n(Cn,"anyAsync"),n(Tn,"asParallel"),n(Dn,"average"),n(kn,"averageAsync"),n(In,"chunk"),n(En,"concatenate"),n(Rn,"contains"),n(Nn,"containsAsync"),n(Gn,"count"),n(On,"countAsync"),n(Mn,"defaultIfEmpty"),n(Un,"distinct"),n(Wn,"distinctAsync"),n(xn,"each"),n(Fn,"eachAsync"),n(Ln,"elementAt"),n(Bn,"elementAtOrDefault"),n($n,"except"),n(qn,"exceptAsync"),n(Vn,"first"),n(Qn,"firstAsync"),n(Zn,"firstOrDefault"),n(zn,"firstOrDefaultAsync"),n(Jn,"groupBy"),n(tr,"groupByAsync"),n(sr,"groupByWithSel"),n(ar,"groupJoin"),n(lr,"groupJoinAsync"),n(gr,"intersect"),n(pr,"intersectAsync"),n(fr,"joinByKey"),n(vr,"last"),n(wr,"lastAsync"),n(Sr,"lastOrDefault"),n(Cr,"lastOrDefaultAsync"),n(Tr,"max"),n(Ir,"maxAsync"),n(Er,"min"),n(Gr,"minAsync"),n(br,"ofType"),n(Pr,"order"),n(Or,"orderBy"),n(Mr,"orderByAsync"),n(Ur,"orderByDescending"),n(Wr,"orderByDescendingAsync"),n(xr,"orderDescending"),n(Fr,"partition"),n(Lr,"partitionAsync"),n(Br,"prepend"),n($r,"reverse"),n(qr,"select"),n(Qr,"selectAsync"),n(Yr,"selectMany"),n(es,"selectManyAsync"),n(ts,"sequenceEquals"),n(ns,"sequenceEqualsAsync"),n(rs,"single"),n(is,"singleAsync"),n(as,"singleOrDefault"),n(ls,"singleOrDefaultAsync"),n(ds,"skip"),n(hs,"skipWhile"),n(fs,"skipWhileAsync"),n(ys,"sum"),n(As,"sumAsync"),n(_s,"take"),n(Cs,"takeWhile"),n(ks,"takeWhileAsync"),n(Rs,"toArray"),n(Ns,"toMap"),n(Gs,"toMapAsync"),n(bs,"toObject"),n(Ps,"toObjectAsync"),n(Os,"toSet"),n(Ms,"union"),n(xs,"unionAsync"),n(Fs,"where"),n($s,"whereAsync"),n(js,"zip"),n(Zs,"zipAsync")})(v),(e=>{const t=e.prototype,n=(e,n)=>{const r=function(...t){return e(this,...t)};Object.defineProperty(r,"length",{value:e.length-1}),t[n]=r};n(Ks,"aggregate"),n(eo,"all"),n(no,"allAsync"),n(ro,"append"),n(so,"any"),n(ao,"anyAsync"),n(co,"asAsync"),n(lo,"average"),n(ho,"averageAsync"),n(go,"chunk"),n(po,"concatenate"),n(fo,"contains"),n(vo,"containsAsync"),n(mo,"count"),n(So,"countAsync"),n(Ao,"defaultIfEmpty"),n(_o,"distinct"),n(Co,"distinctAsync"),n(To,"each"),n(Do,"eachAsync"),n(ko,"elementAt"),n(Io,"elementAtOrDefault"),n(Eo,"except"),n(Ro,"exceptAsync"),n(Go,"first"),n(Oo,"firstAsync"),n(Mo,"firstOrDefault"),n(xo,"firstOrDefaultAsync"),n(Fo,"groupBy"),n($o,"groupByAsync"),n(jo,"groupByWithSel"),n(Zo,"groupJoin"),n(zo,"groupJoinAsync"),n(Zo,"groupJoin"),n(zo,"groupJoinAsync"),n(ei,"intersect"),n(ti,"intersectAsync"),n(ni,"joinByKey"),n(ri,"last"),n(ii,"lastAsync"),n(ai,"lastOrDefault"),n(li,"lastOrDefaultAsync"),n(di,"max"),n(hi,"maxAsync"),n(gi,"min"),n(pi,"minAsync"),n(fi,"ofType"),n(wi,"order"),n(Si,"orderBy"),n(Ai,"orderByAsync"),n(_i,"orderByDescending"),n(Ci,"orderByDescendingAsync"),n(Ti,"orderDescending"),n(Di,"partition"),n(ki,"partitionAsync"),n(Ii,"prepend"),n(Ei,"reverse"),n(Ni,"select"),n(bi,"selectAsync"),n(Pi,"selectMany"),n(Oi,"selectManyAsync"),n(Mi,"sequenceEquals"),n(Ui,"sequenceEqualsAsync"),n(Wi,"single"),n(Li,"singleAsync"),n(Bi,"singleOrDefault"),n(Vi,"singleOrDefaultAsync"),n(ji,"skip"),n(Hi,"skipWhile"),n(Qi,"skipWhileAsync"),n(Zi,"sum"),n(zi,"sumAsync"),n(Ji,"take"),n(Xi,"takeWhile"),n(ea,"takeWhileAsync"),n(No,"toArray"),n(ta,"toMap"),n(na,"toMapAsync"),n(ra,"toObject"),n(sa,"toObjectAsync"),n(oa,"toSet"),n(ia,"union"),n(ua,"unionAsync"),n(la,"where"),n(da,"whereAsync"),n(ha,"zip"),n(fa,"zipAsync")})(m),(()=>{const{prototype:e}=w,t=Object.getOwnPropertyNames(y.prototype);for(const n of t)e[n]=e[n]??y.prototype[n];e.all=function(e){return this.every(e)},e.any=function(e){return e?this.some(e):0!==this.length},e.count=function(e){if(e){let t=0;for(let n=0;n<this.length;n++)!0===e(this[n])&&t++;return t}return this.length},e.elementAt=function(e){if(e<0||e>=this.length)throw new h("index");return this[e]},e.elementAtOrDefault=function(e){return this[e]??null},e.first=function(e){if(e){const t=this.find(e);if(void 0===t)throw new p(g.NoMatch);return t}if(0===this.length)throw new p(g.NoElements);return this[0]},e.firstOrDefault=function(e){if(e){const t=this.find(e);return void 0===t?null:t}return 0===this.length?null:this[0]},e.last=function(e){if(e){for(let t=this.length-1;t>=0;t--){const n=this[t];if(!0===e(n))return n}throw new p(g.NoMatch)}if(0===this.length)throw new p(g.NoElements);return this[this.length-1]},e.lastOrDefault=function(e){if(e){for(let t=this.length-1;t>=0;t--){const n=this[t];if(!0===e(n))return n}return null}return 0===this.length?null:this[this.length-1]},e.max=function(e){if(0===this.length)throw new p(g.NoElements);if(e){let t=Number.NEGATIVE_INFINITY;for(let n=0;n<this.length;n++)t=Math.max(e(this[n]),t);return t}return Math.max.apply(null,this)},e.min=function(e){if(0===this.length)throw new p(g.NoElements);if(e){let t=Number.POSITIVE_INFINITY;for(let n=0;n<this.length;n++)t=Math.min(e(this[n]),t);return t}return Math.min.apply(null,this)},e.reverse=function(){return Array.prototype.reverse.apply(this),this}})();var ma,ya,wa=n(4756),Sa=n(6823),Aa=n(4268);!function(e){e.Success="Success",e.GroupDoesNotExists="GroupDoesNotExists",e.ObjectDoesNotExists="ObjectDoesNotExists",e.FatalError="FatalError",e.FunctionNotSupported="FunctionNotSupported"}(ma||(ma={})),function(e){e.Success="Success",e.NoPermissions="NoPermissions",e.NameToShort="NameToShort",e.NameAlreadyExists="NameAlreadyExists",e.OtherError="OtherError",e.UnknownError="UnknownError"}(ya||(ya={}));class _a{constructor(){this._guid="",this._name="",this._iconName="",this._position=0,this._objectsOrder={},null==_a._devicesService&&(_a._devicesService=Su.Get(c.N7.ServiceName))}GetDevicesChannelsInGroupAsync(){return e=this,t=arguments,r=function*(e=!1){let t=[],n=[];const r=yield _a._devicesService.GetDevicesAsync(e);if(void 0===this._objectsOrder||null===this._objectsOrder||0==Object.entries(this._objectsOrder).length){Su.Get(Aa.g.ServiceName).Error("Old controller API fallback to old groups API.");for(let e of r)for(let t of e.Channels.where((e=>e.ChannelGroups.any((e=>e===this._guid)))))n.push(t);return n}const s=Object.keys(this._objectsOrder).map(Number).sort(((e,t)=>e-t));Object.values(this._objectsOrder).forEach((e=>{const n=r.select((t=>t.Channels.where((t=>t.ChannelId===e))));if(null!==n)for(let e of n)for(let n of e)t.push(n)}));for(let e of s){const r=t.firstOrDefault((t=>t.ChannelId===this._objectsOrder[e]));null!==r&&n.push(r)}return n},new((n=void 0)||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}));var e,t,n,r}get Guid(){return this._guid}set Guid(e){this._guid=e}get Name(){return this._name}set Name(e){this._name=e}get IconName(){return this._iconName}set IconName(e){this._iconName=e}get OrderPosition(){return this._position}set OrderPosition(e){this._position=e}get ObjectsOrder(){return this._objectsOrder}set ObjectsOrder(e){this._objectsOrder=e}ChangeNameAsync(e){return Su.Get(Ta.ServiceName).ChangeGroupNameAsync(this,e)}ChangeIconNameAsync(e){return Su.Get(Ta.ServiceName).ChangeGroupIconNameAsync(this,e)}}var Ca=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class Ta{constructor(){this._connection=null,this._synchronized=!1,this._synchronizationTaskCompletionSource=null,this._groups=[],this._objectsGroupingSupported=!1,this._connection=Su.Get(o.G.ServiceName),this._synchronizationTaskCompletionSource=new Promise((e=>{Su.Get(u.Q.ServiceName).OnUserLoggedInEvent().Subscribe((t=>Ca(this,void 0,void 0,(function*(){yield this.GetGroupsAsync(!0),e(),this._synchronized=!0}))))}))}SetObjectsInGroupAndOrderAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s;let o=[],i=[];for(let e of t)if(this.IsDevice(e)){for(let t of e.Channels)o.push(`${t.ChannelId}`);i.push(`${e.Guid}`)}else{if(!this.IsDeviceChannel(e))throw new Error("Passed object is not a device or device channel!");o.push(`${e.ChannelId}`),i.push(`${e.ChannelId}`)}const a=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new Ia(e,i),15e3,!1);switch(null===(s=r.h.Log)||void 0===s||s.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! SetObjectsInGroupAndOrderAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),null==a?void 0:a.Status){case wa.nW.OK:return new Sa.ZR(ma.Success,"");case wa.nW.NotSupportedMethod:case wa.nW.ResourceDoesNotExists:case wa.nW.ResourceIsNotAvailable:return new Sa.ZR(ma.FunctionNotSupported,"");case wa.nW.WrongData:return"GroupDoesNotExists"===a.Data?new Sa.ZR(ma.GroupDoesNotExists,a.Data):new Sa.ZR(ma.FatalError,a.Data);case wa.nW.Error:case wa.nW.FatalError:default:return new Sa.ZR(ma.FatalError,"")}}))}IsDevice(e){return void 0!==e.Channels}IsDeviceChannel(e){return void 0!==e.GetDevice}LogGroupsOrder(e){const t=Su.Get(Aa.g.ServiceName);e.forEach(((e,n)=>{t.Debug(Ta.ServiceName,`Group ${e.Name} order position [on array]: ${n} set position: ${e.OrderPosition}`)}))}LogObjectsInGroupOrder(e,t){const n=Su.Get(Aa.g.ServiceName);n.Debug(Ta.ServiceName,`Group ${e.Name} objects order:`),t.forEach(((e,t)=>{n.Debug(Ta.ServiceName,`Channel ${e.Name} order position [on array]: ${t} channelId: ${e.ChannelId}`)}));for(const[t,r]of Object.entries(e.ObjectsOrder))n.Debug(`new order [GROUP ${e.Name}] Order: [${t}] = ${r}`)}ChangeGroupsOrderAsync(e){return Ca(this,void 0,void 0,(function*(){var t,n;const s=e.select((e=>e.Guid)).toArray(),o=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new ka(s),15e3,!1);return null===(n=r.h.Log)||void 0===n||n.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! ChangeGroupsOrderAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),(null==o?void 0:o.Status)===wa.nW.OK?(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),wa.nW.OK):(Su.Get(Aa.g.ServiceName).Error(Ta.ServiceName,`Failed to change groups order, controller responded with error ${null==o?void 0:o.Status} data: ${null==o?void 0:o.Data}`),this.LogGroupsOrder(e),null==o?void 0:o.Status)}))}ChangeObjectsPositionsInGroupAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s,o;const a=t.select((e=>e.ChannelId)).toArray(),u=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new Ga(e.Guid,a),15e3,!1);return null===(s=r.h.Log)||void 0===s||s.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! ChangeObjectsPositionsInGroupAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),(null==u?void 0:u.Status)===wa.nW.OK?(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),yield Su.Get(c.N7.ServiceName).GetDevicesAsync(),wa.nW.OK):(null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,`Failed to change objects positions in group, controller responded with error ${null==u?void 0:u.Status} data: ${null==u?void 0:u.Data}`),this.LogObjectsInGroupOrder(e,t),null==u?void 0:u.Status)}))}IsGroupsAndObjectsOrderingAvailable(){return this._objectsGroupingSupported}MoveGroupPositionAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s,o;const a=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new Da(e.Guid,t),15e3,!1);return null===(s=r.h.Log)||void 0===s||s.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! MoveGroupPositionAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),(null==a?void 0:a.Status)===wa.nW.OK?(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),wa.nW.OK):(null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,`Failed to move group position, controller responded with error ${null==a?void 0:a.Status} data: ${null==a?void 0:a.Data}`),null==a?void 0:a.Status)}))}MoveObjectInGroupPositionAsync(e,t,n){return Ca(this,void 0,void 0,(function*(){var s,o,a;const u=`${t.GetDevice().Guid}_${t.Number}`,l=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(new Na(e.Guid,u,n),15e3,!1);return null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! MoveObjectInGroupPositionAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),(null==l?void 0:l.Status)===wa.nW.OK?(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),yield Su.Get(c.N7.ServiceName).GetDevicesAsync(),wa.nW.OK):(null===(a=r.h.Log)||void 0===a||a.Error(Ta.ServiceName,`Failed to move object in group position, controller responded with error ${null==l?void 0:l.Status} data: ${null==l?void 0:l.Data}`),null==l?void 0:l.Status)}))}AddDeviceChannelToGroupByGuidAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s,o,a;const u=new Wa;if(u.Data.Channel=e.Number,null==e.GetDevice())throw new Error("Device is not set on this channel!");u.Data.DeviceGuid=null===(n=e.GetDevice())||void 0===n?void 0:n.Guid,u.Data.GroupGuid=t;const l=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(u,15e3,!1);return null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! AddDeviceChannelToGroupByGuidAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),null!=l&&null!=l.Status?(l.Status==wa.nW.OK?e.ChannelGroups.push(t):null===(a=r.h.Log)||void 0===a||a.Error(Ta.ServiceName,`Failed to add device channel ${e.Name} to group ${t}, controller responded with error ${l.Status} data: ${l.Data}`),Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),yield Su.Get(c.N7.ServiceName).GetDevicesAsync(),l.Status):(yield this.GetGroupsAsync(),wa.nW.Error)}))}RemoveDeviceChannelFromGroupByGuidAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s,o,a;const u=new xa;if(null==e.GetDevice())throw new Error("Device is not set on this channel!");u.Data.DeviceGuid=null===(n=e.GetDevice())||void 0===n?void 0:n.Guid,u.Data.Channel=e.Number,u.Data.GroupGuid=t;const l=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(u,15e3,!1);return null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! RemoveDeviceChannelFromGroupByGuidAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),null!=l&&null!=l.Status?(l.Status==wa.nW.OK?e.ChannelGroups=e.ChannelGroups.where((e=>e!=t)).toArray():null===(a=r.h.Log)||void 0===a||a.Error(Ta.ServiceName,`Failed to remove device channel ${e.Name} from group ${t}, controller responded with error ${l.Status} data: ${l.Data}`),Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),yield Su.Get(c.N7.ServiceName).GetDevicesAsync(),l.Status):(yield this.GetGroupsAsync(),wa.nW.Error)}))}UpsertGroupWithDevicesChannelsAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s,o,a;if(this._groups.all((t=>t.Guid!=e.Guid))){let t=yield this.AddNewGroupWithIconAsync(e.Name,e.IconName);if(!(t instanceof _a))return t instanceof Sa.ZR?t:new Sa.ZR(ya.UnknownError,"");e=t}for(let s of t.where((t=>t.ChannelGroups.all((t=>t!==e.Guid))))){let t=yield this.AddDeviceChannelToGroupAsync(s,e);if(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),yield Su.Get(c.N7.ServiceName).GetDevicesAsync(),t!==wa.nW.OK)return null===(n=r.h.Log)||void 0===n||n.Error(Ta.ServiceName,`Failed to add device channel ${s.Name} to group ${e.Name}, controller responded with error ${t}`),new Sa.ZR(ya.UnknownError,`Failed to add device channel ${s.Name} to group ${e.Name}, controller responded with error ${t}`)}let u=yield Su.Get(c.N7.ServiceName).GetDevicesAsync();for(let n of u)for(let a of n.Channels.except(t,((e,t)=>e.GetDevice().Guid==t.GetDevice().Guid&&e.Number==t.Number)))for(var l of a.ChannelGroups.where((t=>e.Guid==t))){let t=yield this.RemoveDeviceChannelFromGroupAsync(a,e);if(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(),t!==wa.nW.OK)return null===(s=r.h.Log)||void 0===s||s.Error(Ta.ServiceName,`Failed to remove device channel ${a.Name} from group ${e.Name}, controller responded with error ${t}`),null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! UpsertGroupWithDevicesChannelsAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),new Sa.ZR(ya.UnknownError,`Failed to remove device channel ${a.Name} from group ${e.Name}, controller responded with error ${t}`)}return null===(a=r.h.Log)||void 0===a||a.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! UpsertGroupWithDevicesChannelsAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),e}))}UpdateGroupWithDevicesChannelsAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s,o,a,u;for(let o of t.where((t=>t.ChannelGroups.all((t=>t!==e))))){let t=yield this.AddDeviceChannelToGroupByGuidAsync(o,e);if(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(),t!==wa.nW.OK)return null===(n=r.h.Log)||void 0===n||n.Error(Ta.ServiceName,`Failed to add device channel ${o.Name} to group ${e}, controller responded with error ${t}`),null===(s=r.h.Log)||void 0===s||s.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! UpdateGroupWithDevicesChannelsAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),wa.nW.FatalError}let l=yield Su.Get(c.N7.ServiceName).GetDevicesAsync();for(let n of l)for(let s of n.Channels.except(t,((e,t)=>e.GetDevice().Guid==t.GetDevice().Guid&&e.Number==t.Number)))for(var h of s.ChannelGroups.where((t=>e==t))){let t=yield this.RemoveDeviceChannelFromGroupByGuidAsync(s,e);if(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),yield Su.Get(c.N7.ServiceName).GetDevicesAsync(),t!==wa.nW.OK)return null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,`Failed to remove device channel ${s.Name} from group ${e}, controller responded with error ${t}`),null===(a=r.h.Log)||void 0===a||a.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! UpdateGroupWithDevicesChannelsAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),wa.nW.FatalError}return null===(u=r.h.Log)||void 0===u||u.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! UpdateGroupWithDevicesChannelsAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),wa.nW.OK}))}ChangeGroupNameByGuidAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s,o;let a=new Ua,c=new Fa,u=this._groups.first((t=>t.Guid===e));c.Guid=e,c.Name=t,c.IconName=u.IconName,null===(n=a.Data)||void 0===n||n.push(c);const l=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(a,15e3,!1);if(Su.Get(i.C.ServiceName).ClearCache(),this._groups=yield this.GetGroupsAsync(),null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! ChangeGroupNameByGuidAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),null!=l&&null!=l.Status)switch(l.Status){case wa.nW.OK:return new Sa.ZR(ya.Success,"");case wa.nW.WrongData:switch(l.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${l.Status} data: ${l.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${l.Status} data: ${l.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}ChangeGroupNameAndIconAsync(e,t,n){return this.ChangeGroupNameAndIconByGuidAsync(e.Guid,t,n)}ChangeGroupNameAndIconByGuidAsync(e,t,n){return Ca(this,void 0,void 0,(function*(){var s,o,a;let c=new Ua,u=new Fa,l=this._groups.first((t=>t.Guid===e));u.Guid=e,u.Name=t,u.IconName=n,u.ObjectsOrder=l.ObjectsOrder,null===(s=c.Data)||void 0===s||s.push(u);const h=yield null===(o=this._connection)||void 0===o?void 0:o.SendAndWaitForResponseAsync(c,15e3,!1);if(Su.Get(i.C.ServiceName).ClearCache(),this._groups=yield this.GetGroupsAsync(),null===(a=r.h.Log)||void 0===a||a.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! ChangeGroupNameAndIconByGuidAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),null!=h&&null!=h.Status)switch(h.Status){case wa.nW.OK:return new Sa.ZR(ya.Success,"");case wa.nW.WrongData:switch(h.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${h.Status} data: ${h.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${h.Status} data: ${h.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}ChangeGroupIconNameByGuidAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s,o;let a=new Ua,c=new Fa,u=this._groups.first((t=>t.Guid===e));c.Guid=e,c.Name=u.Name,c.IconName=t,null===(n=a.Data)||void 0===n||n.push(c);const l=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(a,15e3,!1);if(Su.Get(i.C.ServiceName).ClearCache(),this._groups=yield this.GetGroupsAsync(),null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! ChangeGroupIconNameByGuidAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),null!=l&&null!=l.Status)switch(l.Status){case wa.nW.OK:return new Sa.ZR(ya.Success,"");case wa.nW.WrongData:switch(l.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${l.Status} data: ${l.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${l.Status} data: ${l.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}GetServiceName(){return Ta.ServiceName}WaitForSynchronizationAsync(){return this._synchronizationTaskCompletionSource}GetGroupByGuid(e){return this._groups.first((t=>t.Guid===e))}ChangeGroupNameAsync(e,t){return this.ChangeGroupNameByGuidAsync(e.Guid,t)}ChangeGroupIconNameAsync(e,t){return this.ChangeGroupNameByGuidAsync(e.Guid,t)}RemoveGroupAsync(e){return this.RemoveGroupByGuidAsync(e.Guid)}RemoveGroupByGuidAsync(e){return Ca(this,void 0,void 0,(function*(){var t,n;let s=new Oa;s.Data=e;const o=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(s,15e3,!1);Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),yield Su.Get(c.N7.ServiceName).GetDevicesAsync();for(let t of yield Su.Get(c.N7.ServiceName).GetDevicesAsync())for(let n of t.Channels)n.ChannelGroups.any((t=>t===e))&&(n.ChannelGroups=n.ChannelGroups.except(e,((e,t)=>e===t)).toArray());return null===(n=r.h.Log)||void 0===n||n.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! RemoveGroupByGuidAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),null!=o&&null!=o.Status?null==o?void 0:o.Status:wa.nW.Error}))}GetGroupsAsync(){return Ca(this,arguments,void 0,(function*(e=!1){var t,n;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new Ma,15e3,e);let s=[];if((null==r?void 0:r.Status)===wa.nW.OK){let e=Su.Get(Aa.g.ServiceName),t=0,o=yield Su.Get(c.N7.ServiceName).GetDevicesAsync();return null===(n=r.Data)||void 0===n||n.forEach((n=>{t++;let r=new _a;if(r.Guid=n.Guid,r.Name=n.Name,r.IconName=n.IconName,r.ObjectsOrder=n.ObjectsOrder,r.OrderPosition=n.OrderPosition,null==r.OrderPosition&&(r.OrderPosition=t),null==r.ObjectsOrder){this._objectsGroupingSupported=!1,r.ObjectsOrder={};let e=o.selectMany((e=>e.Channels.where((e=>e.ChannelGroups.any((e=>e==r.Guid)))))),t=0;for(let n of e)t++,r.ObjectsOrder[t]=n.ChannelId}else this._objectsGroupingSupported=!0;e.Info(Ta.ServiceName,`Got group: ${r.Name} ${r.Guid} order: ${r.OrderPosition} objects order: ${JSON.stringify(r.ObjectsOrder)}`),s.push(r)})),this._groups=s,s}throw new Error(`Failed to get groups, API responded with status ${null==r?void 0:r.Status} data: ${null==r?void 0:r.Data}`)}))}AddDeviceChannelToGroupAsync(e,t){return this.AddDeviceChannelToGroupByGuidAsync(e,t.Guid)}RemoveDeviceChannelFromGroupAsync(e,t){return this.RemoveDeviceChannelFromGroupByGuidAsync(e,t.Guid)}AddNewGroupAsync(e){return Ca(this,void 0,void 0,(function*(){var t,n,s,o;let a=new Ua,u=new Fa;u.Name=e,null===(t=a.Data)||void 0===t||t.push(u);const l=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(a,15e3,!1);if(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),yield Su.Get(c.N7.ServiceName).GetDevicesAsync(),null===(s=r.h.Log)||void 0===s||s.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! AddNewGroupAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),null!=l&&null!=l.Status)switch(l.Status){case wa.nW.OK:return this._groups.first((t=>t.Name===e));case wa.nW.WrongData:switch(null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,`Failed to add new group, controller responded with error ${l.Status} data: ${l.Data}`),l.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${l.Status} data: ${l.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${l.Status} data: ${l.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}AddNewGroupWithIconAsync(e,t){return Ca(this,void 0,void 0,(function*(){var n,s,o,a;let u=new Ua,l=new Fa;l.Name=e,l.IconName=t,null===(n=u.Data)||void 0===n||n.push(l);const h=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(u,15e3,!1);if(Su.Get(i.C.ServiceName).ClearCache(),yield this.GetGroupsAsync(!1),yield Su.Get(c.N7.ServiceName).GetDevicesAsync(),null===(o=r.h.Log)||void 0===o||o.Error(Ta.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! AddNewGroupWithIconAsync()"),Su.Get(d.u.ServiceName).ExitConfigurationModeAsync(),null!=h&&null!=h.Status)switch(h.Status){case wa.nW.OK:return this._groups.first((t=>t.Name===e));case wa.nW.WrongData:switch(null===(a=r.h.Log)||void 0===a||a.Error(Ta.ServiceName,`Failed to add new group, controller responded with error ${h.Status} data: ${h.Data}`),h.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${h.Status} data: ${h.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${h.Status} data: ${h.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}}Ta.ServiceName="ChannelsGroupsService";class Da extends wa.CP{constructor(e,t){super(),this.Resource="/devices/groups/group/move",this.Method=wa.IT.Post,this.Data=new Ra,this.Data.GroupGuid=e,this.Data.NewPosition=t}}class ka extends wa.CP{constructor(e){super(),this.Resource="/devices/groups/move",this.Method=wa.IT.Post,this.Data=e}}class Ia extends wa.CP{constructor(e,t){super(),this.Resource="/devices/groups/group/objects/set",this.Method=wa.IT.Post,this.Data=new Ea,this.Data.GroupGuid=e.Guid,this.Data.ObjectsIds=t}}class Ea{constructor(){this.GroupGuid="",this.ObjectsIds=[]}}class Ra{constructor(){this.GroupGuid="",this.NewPosition=0}}class Na extends wa.CP{constructor(e,t,n){super(),this.Resource="/devices/groups/group/object/move",this.Method=wa.IT.Post,this.Data=new ba,this.Data.GroupGuid=e,this.Data.NewPosition=n,this.Data.ObjectId=t}}class Ga extends wa.CP{constructor(e,t){super(),this.Resource="/devices/groups/group/objects/move",this.Method=wa.IT.Post,this.Data=new Pa,this.Data.GroupGuid=e,this.Data.OrderedObjectsIds=t}}class ba{constructor(){this.GroupGuid="",this.ObjectId="",this.NewPosition=0}}class Pa{constructor(){this.GroupGuid="",this.OrderedObjectsIds=[]}}class Oa extends wa.CP{constructor(){super(),this.Resource="/devices/groups/group",this.Method=wa.IT.Delete}}class Ma extends wa.CP{constructor(){super(),this.Resource="/devices/groups/",this.Method=wa.IT.Get}}class Ua extends wa.CP{constructor(){super(),this.Resource="/devices/groups/group",this.Method=wa.IT.Put,this.Data=[]}}class Wa extends wa.CP{constructor(){super(),this.Resource="/devices/device/channel/groups/group/",this.Method=wa.IT.Put,this.Data=new La}}class xa extends wa.CP{constructor(){super(),this.Resource="/devices/device/channel/groups/group/",this.Method=wa.IT.Delete,this.Data=new La}}class Fa{constructor(){this.Id=0,this.Guid="",this.Name="",this.IconName="",this.OrderPosition=0,this.ObjectsOrder={}}}class La{constructor(){this.GroupGuid="",this.DeviceGuid="",this.Channel=0}}var Ba,$a,qa,Va,ja=n(9869),Ha=n(5410),Qa=n(9054),Za=n(934),Ka=n(2990),Ya=n(4824),za=n(7198),Ja=n(2824),Xa=n(6203);!function(e){e.CannotFindDevice="CannotFindDevice",e.ResponseTypeNotSupported="ResponseTypeNotSupported",e.InvalidChannelNumber="InvalidChannelNumber",e.IncorrectLimitValue="IncorrectLimitValue",e.IncorrectOffsetValue="IncorrectOffsetValue",e.OtherError="OtherError",e.FatalError="FatalError",e.NoData="NoData",e.FunctionalityNotSupported="FunctionalityNotSupported"}(Ba||(Ba={})),function(e){e[e.None=0]="None",e[e.DataRange=1]="DataRange",e[e.Hour=2]="Hour",e[e.Day=3]="Day",e[e.Week=4]="Week",e[e.Month=5]="Month",e[e.Year=6]="Year"}($a||($a={})),function(e){e.Min="Min",e.Max="Max",e.Avg="Avg"}(qa||(qa={}));class ec{constructor(){this._objectType="Unknown",this._stateInterfaceType="Unknown"}get StateObjectType(){return this._objectType}get StateInterfaceType(){return this._stateInterfaceType}get StateResponseType(){return this._stateInterfaceType}set StateObjectType(e){this._objectType=e}set StateInterfaceType(e){this._stateInterfaceType=e}}!function(e){e[e.Unknown=-1]="Unknown",e[e.PitchBlack=0]="PitchBlack",e[e.VeryDark=1]="VeryDark",e[e.DarkIndoors=2]="DarkIndoors",e[e.DimIndoors=3]="DimIndoors",e[e.NormalIndoors=4]="NormalIndoors",e[e.BrightIndoors=5]="BrightIndoors",e[e.DimOutdoors=6]="DimOutdoors",e[e.CloudyOutdoors=7]="CloudyOutdoors",e[e.DirectSunlight=8]="DirectSunlight"}(Va||(Va={}));var tc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class nc{constructor(){this._connection=null,this._connection=Su.Get(o.G.ServiceName)}GetServiceName(){return nc.ServiceName}GetStatesByIntervalAsync(e,t,n,r,s,o){return tc(this,arguments,void 0,(function*(e,t,n,r,s,o,i=!1){var a;try{if(!(yield this.IsFunctionalitySupportedAsync()))return new Sa.ZR(Ba.FunctionalityNotSupported,"State history data is not supported with this version of controller software, update software to get this functionality.");let u;if("string"==typeof e){const t=yield Su.Get(c.N7.ServiceName).GetDevice(e);if(null==t)return new Sa.ZR(Ba.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);u=t}else u=e;if(!u.Channels.any((e=>e.Number==t)))return new Sa.ZR(Ba.InvalidChannelNumber,`Given channel not found in device with guid: ${u.Guid}.`);if(!u.Channels.any((e=>e.Number==t&&e.AvailableResponseTypes.any((e=>e.Type==n)))))return new Sa.ZR(Ba.ResponseTypeNotSupported,"Device or channel not supporting requested DeviceResponseType.");const l=new sc;l.DeviceGuid=u.Guid,l.DeviceChannel=t,l.Range=r,l.StateInterfaceType=n,l.ReverseOrder=i,l.Limit=s,l.Offset=o;const d=yield null===(a=this._connection)||void 0===a?void 0:a.SendAndWaitForResponseAsync(new rc(l),2e4,!1);if(null==d)return new Sa.ZR(Ba.OtherError,"Cannot get state history data - response is null.");switch(d.Status){case wa.nW.WrongData:switch(d.Data){case"IncorrectLimitValue":return new Sa.ZR(Ba.IncorrectLimitValue,"Cannot get state history data - limit value is incorrect!");case"IncorrectOffsetValue":return new Sa.ZR(Ba.IncorrectOffsetValue,"Cannot get state history data - offset value is incorrect!");case"IncorrectArguments":return new Sa.ZR(Ba.OtherError,"Cannot get state history data - some parameters are incorrect!");default:return new Sa.ZR(Ba.OtherError,"Cannot get state history data - unknown error!")}case wa.nW.FatalError:return new Sa.ZR(Ba.FatalError,"Cannot get state history data - an exception occurred in the controller while reading data!");case wa.nW.ResourceDoesNotExists:return new Sa.ZR(Ba.ResponseTypeNotSupported,"Device or channel not supporting requested DeviceResponseType.");case wa.nW.OK:if(null==d.Data)return new Sa.ZR(Ba.NoData,"Controller responede with status OK, but response does not contain data!");if(d.Data.AggregateDataList=d.Data.AggregateDataList.map((e=>(e.AggregateData=(0,Ja.ku)(e.AggregateData),e))),n===Xa.mQ.MeasuredEnergy){const e=d.Data.Data.map((e=>{const t=e;return t.Values.MeasurementAveragingParameters=(0,Ja.ku)(e.Values.MeasurementAveragingParameters),t.Values.MeasurementNonAveragingParmeters=(0,Ja.ku)(e.Values.MeasurementNonAveragingParmeters),t}));return d.Data.Data=e,d.Data}return d.Data;default:return new Sa.ZR(Ba.OtherError,`Cannot get state history data - controller responded with response code ${d.Status}`)}}catch(e){return new Sa.ZR(Ba.FatalError,`Cannot get state history data - exeption occurs! ${e}`)}}))}GetAvailableStatesAsync(){return tc(this,void 0,void 0,(function*(){var e;try{const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new oc,12e3,!1);return null==t?new Sa.ZR(Ba.OtherError,"Cannot get available states - response is null."):t.Status!=wa.nW.OK?new Sa.ZR(Ba.OtherError,`Cannot get available states - controller responded with response code ${t.Status}.`):null==t.Data?new Sa.ZR(Ba.NoData,"Cannot get available states - controller responede with status OK, but response does not contain data!"):t.Data.map((e=>{const t=new ec;return t.StateInterfaceType=e.StateInterfaceType,t.StateObjectType=e.StateObjectType,t}))}catch(e){return new Sa.ZR(Ba.FatalError,`Cannot get available states - exeption occurs! ${e}`)}}))}IsFunctionalitySupportedAsync(){return tc(this,void 0,void 0,(function*(){return!(parseFloat((yield Su.Get(Ya.OA.ServiceName).GetSoftwareRuntimeInfoAsync()).SoftwareVersion)<=3.42)}))}GetAvailableStatesPerChannelAsync(e,t){return tc(this,void 0,void 0,(function*(){var n;let r;if("string"==typeof e){const t=yield Su.Get(c.N7.ServiceName).GetDevice(e);if(null==t)return new Sa.ZR(Ba.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);r=t}else r=e;const s=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new ic(new ac(r.Guid,t)),8e3,!1);if(null==s)return new Sa.ZR(Ba.OtherError,"Cannot get available states - response is null.");switch(s.Status){case wa.nW.ResourceDoesNotExists:switch(s.Data){case"DeviceNotFound":return new Sa.ZR(Ba.CannotFindDevice,"Cannot get available states - device does not exists!");case"ChannelNotFound":return new Sa.ZR(Ba.InvalidChannelNumber,"Cannot get available states - wrong channel!");default:return new Sa.ZR(Ba.OtherError,"Cannot get available states - unknown error!")}case wa.nW.OK:{if(null==s.Data)return new Sa.ZR(Ba.NoData,"Cannot get available states - controller responede with status OK, but response does not contain data!");const e=s.Data.AvailableStates.map((e=>{const t=new ec;return t.StateInterfaceType=e.StateInterfaceType,t.StateObjectType=e.StateObjectType,t}));return s.Data.AvailableStates=e,s.Data}default:return new Sa.ZR(Ba.OtherError,`Cannot get available states - controller responded with response code ${s.Status}`)}}))}}nc.ServiceName="StatesHistoryService";class rc extends wa.CP{constructor(e){super(),this.Resource="/statehistory/states/get/last",this.Method=wa.IT.Get,this.Data=e}}class sc{constructor(){this.DeviceGuid="",this.DeviceChannel=0,this.StateInterfaceType="",this.Range=$a.Day,this.ReverseOrder=!1,this.Limit=0,this.Offset=0}}class oc extends wa.CP{constructor(){super(),this.Resource="/statehistory/states/available",this.Method=wa.IT.Get}}class ic extends wa.CP{constructor(e){super(),this.Resource="/statehistory/states/available/per/channel",this.Method=wa.IT.Get,this.Data=e}}class ac{constructor(e,t){this.DeviceGuid=e,this.Channel=t}}var cc,uc,lc,dc,hc,gc,pc,fc=n(8679);(pc=cc||(cc={}))[pc.User=0]="User",pc[pc.Controller=1]="Controller",pc[pc.Marketing=2]="Marketing",(gc=uc||(uc={}))[gc.Notification=0]="Notification",gc[gc.Message=1]="Message",gc[gc.Alarm=2]="Alarm",gc[gc.Warning=3]="Warning",gc[gc.Info=4]="Info",(hc=lc||(lc={}))[hc.Other=0]="Other",hc[hc.UserLoggedIn=1]="UserLoggedIn",hc[hc.UserLoggedOut=2]="UserLoggedOut",hc[hc.FoundNewDevice=3]="FoundNewDevice",hc[hc.DoorBellPress=4]="DoorBellPress",hc[hc.AddedNewDevice=5]="AddedNewDevice",hc[hc.RemovedDevice=6]="RemovedDevice",hc[hc.RegisteredNewUser=7]="RegisteredNewUser",hc[hc.GotAccessToTheInternet=8]="GotAccessToTheInternet",hc[hc.LostAccessToTheInternet=9]="LostAccessToTheInternet",hc[hc.RemovedUser=10]="RemovedUser",hc[hc.NetworkChanged=11]="NetworkChanged",function(e){e.WeatherWidget="WeatherWidget"}(dc||(dc={}));var vc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class mc{constructor(){this._chatSubscriptions=[],this._connection=Su.Get(o.G.ServiceName),this._connection.SubscribeTo("/homemessaging/notify/message/new",(e=>{const t=e.Data;if(null==t.RecipientUserGuid&&t.MessageType==uc.Message)return;const n=new yc;n.DateTime=t.DateTime,n.Guid=t.Guid,n.MessageSource=t.MessageSource,n.MessageText=t.MessageText,n.MessageType=t.MessageType,n.RecipientUserGuid=t.RecipientUserGuid?t.RecipientUserGuid:"n/a",n.Sender=t.Sender,n.SenderName=t.SenderName?t.SenderName:"n/a",n.SenderUserGuid=t.SenderUserGuid?t.SenderUserGuid:"n/a",n.TextToSpeechMessage=t.TextToSpeechMessage?t.TextToSpeechMessage:"";for(let[e,r]of Object.entries(t.MessageActions))n.MessageActions.set(dc[e],r);for(let[e,r]of Object.entries(t.MessageActionsData))n.MessageActionsData.set(e,r);this._chatSubscriptions.forEach((e=>{e(n)}))}))}GetCachedMessagesAsync(){return vc(this,void 0,void 0,(function*(){try{const e=yield this._connection.SendAndWaitForResponseAsync(new wc,12e3,!1);if(null==e)return new Sa.ZR(Nc.OtherError,"Cannot get messages - response is null.");if(e.Status!=wa.nW.OK)return new Sa.ZR(Nc.OtherError,`Cannot get messages - controller responded with response code ${e.Status}.`);if(null==e.Data)return new Sa.ZR(Nc.NoData,"Cannot get messages - controller responded with status OK, but response does not contain data!");const t=[];return e.Data.forEach((e=>{if(null==e.RecipientUserGuid&&e.MessageType==uc.Message)return;const n=new yc;n.DateTime=e.DateTime,n.Guid=e.Guid,n.MessageSource=e.MessageSource,n.MessageText=e.MessageText,n.MessageType=e.MessageType,n.RecipientUserGuid=e.RecipientUserGuid?e.RecipientUserGuid:"n/a",n.Sender=e.Sender,n.SenderName=e.SenderName?e.SenderName:"n/a",n.SenderUserGuid=e.SenderUserGuid?e.SenderUserGuid:"n/a",n.TextToSpeechMessage=e.TextToSpeechMessage?e.TextToSpeechMessage:"";for(let[t,r]of Object.entries(e.MessageActions))n.MessageActions.set(dc[t],r);for(let[t,r]of Object.entries(e.MessageActionsData))n.MessageActionsData.set(t,r);t.push(n)})),t}catch(e){return new Sa.ZR(Nc.FatalError,`Cannot get messages - exception occurred ${e}`)}}))}SendMessageAsync(e){return vc(this,void 0,void 0,(function*(){var t;try{const t=yield this._connection.SendAndWaitForResponseAsync(new Sc(`recipient:home ${e}`),8e3,!1);return null==t||null==t.Status?wa.nW.FatalError:t.Status}catch(e){return null===(t=r.h.Log)||void 0===t||t.Error(xc.ServiceName,`Cannot send message! ${e}`),wa.nW.FatalError}}))}SubscribeToMessages(e){this._chatSubscriptions.push(e)}UnsubscribeFromMessages(e){this._chatSubscriptions&&(this._chatSubscriptions=this._chatSubscriptions.filter((t=>t!==e)))}}class yc{constructor(){this._sender=cc.Controller,this._messageType=uc.Info,this._messageSource=lc.Other,this._senderUserGuid="",this._recipientUserGuid="",this._textToSpeechMessage="",this._messageActions=new Map,this._messageActionsData=new Map,this._guid="",this._senderName="",this._messageText="",this._dateTime=(new Date).toDateString()}get Sender(){return this._sender}get MessageType(){return this._messageType}get MessageSource(){return this._messageSource}get SenderUserGuid(){return this._senderUserGuid}get RecipientUserGuid(){return this._recipientUserGuid}get TextToSpeechMessage(){return this._textToSpeechMessage}get MessageActions(){return this._messageActions}get MessageActionsData(){return this._messageActionsData}get Guid(){return this._guid}get SenderName(){return this._senderName}get MessageText(){return this._messageText}get DateTime(){return this._dateTime}set Sender(e){this._sender=e}set MessageType(e){this._messageType=e}set MessageSource(e){this._messageSource=e}set SenderUserGuid(e){this._senderUserGuid=e}set RecipientUserGuid(e){this._recipientUserGuid=e}set TextToSpeechMessage(e){this._textToSpeechMessage=e}set MessageActions(e){this._messageActions=e}set MessageActionsData(e){this._messageActionsData=e}set Guid(e){this._guid=e}set SenderName(e){this._senderName=e}set MessageText(e){this._messageText=e}set DateTime(e){this._dateTime=e}}class wc extends wa.CP{constructor(){super(),this.Resource="/homemessaging/messages",this.Method=wa.IT.Get}}class Sc extends wa.CP{constructor(e){super(),this.Resource="/homemessaging/message",this.Method=wa.IT.Put,this.Data=e}}var Ac,_c,Cc,Tc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class Dc{constructor(){this._chatSubscriptions=[],this._connection=Su.Get(o.G.ServiceName),this._connection.SubscribeTo("/homemessaging/notify/message/new",(e=>{if("/homemessaging/notify/message/new"===e.Resource){const t=e.Data;if(null==t.RecipientUserGuid&&t.MessageType==uc.Message){const e=new kc;e.DateTime=t.DateTime,e.Guid=t.Guid,e.MessageText=t.MessageText,e.SenderName=t.SenderName?t.SenderName:"n/a",this._chatSubscriptions.forEach((t=>{t(e)}))}}}))}GetCachedMessagesAsync(){return Tc(this,void 0,void 0,(function*(){try{const e=yield this._connection.SendAndWaitForResponseAsync(new Ec,12e3,!1);if(null==e)return new Sa.ZR(Nc.OtherError,"Cannot get messages - response is null.");if(e.Status!=wa.nW.OK)return new Sa.ZR(Nc.OtherError,`Cannot get messages - controller responded with response code ${e.Status}.`);if(null==e.Data)return new Sa.ZR(Nc.NoData,"Cannot get messages - controller responded with status OK, but response does not contain data!");const t=[];return e.Data.forEach((e=>{if(null==e.RecipientUserGuid&&e.MessageType==uc.Message){const n=new kc;n.DateTime=e.DateTime,n.Guid=e.Guid,n.MessageText=e.MessageText,n.SenderName=e.SenderName?e.SenderName:"n/a",t.push(n)}})),t}catch(e){return new Sa.ZR(Nc.FatalError,`Cannot get messages - exception occurred ${e}`)}}))}SendMessageAsync(e){return Tc(this,void 0,void 0,(function*(){var t;try{const t=yield this._connection.SendAndWaitForResponseAsync(new Ic(e),8e3,!1);return null==t||null==t.Status?wa.nW.FatalError:t.Status}catch(e){return null===(t=r.h.Log)||void 0===t||t.Error(xc.ServiceName,`Cannot send message! ${e}`),wa.nW.FatalError}}))}SubscribeToMessages(e){this._chatSubscriptions.push(e)}UnsubscribeFromMessages(e){this._chatSubscriptions&&(this._chatSubscriptions=this._chatSubscriptions.filter((t=>t!==e)))}}class kc{constructor(){this._guid="",this._senderName="",this._messageText="",this._dateTime=""}get Guid(){return this._guid}get SenderName(){return this._senderName}get MessageText(){return this._messageText}get DateTime(){return this._dateTime}set Guid(e){this._guid=e}set SenderName(e){this._senderName=e}set MessageText(e){this._messageText=e}set DateTime(e){this._dateTime=e}}class Ic extends wa.CP{constructor(e){super(),this.Resource="/homemessaging/message",this.Method=wa.IT.Put,this.Data=e}}class Ec extends wa.CP{constructor(){super(),this.Resource="/homemessaging/messages",this.Method=wa.IT.Get}}!function(e){e[e.None=0]="None",e[e.ChangeDeviceState=1]="ChangeDeviceState"}(Ac||(Ac={})),function(e){e.GPT3_5_TURBO="gpt-3.5-turbo",e.GPT3_5_TURBO_16K="gpt-3.5-turbo-16k",e.GPT4="gpt-4"}(_c||(_c={})),function(e){e[e.UnknownError=0]="UnknownError",e[e.ChatNotConfigured=1]="ChatNotConfigured",e[e.MessageNotSend=2]="MessageNotSend",e[e.InvalidMessageResponseFormat=3]="InvalidMessageResponseFormat"}(Cc||(Cc={}));var Rc,Nc,Gc,bc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class Pc{constructor(){this._chatSubscriptions=[],this._connection=Su.Get(o.G.ServiceName),this._connection.SubscribeTo("/homemessaging/gpt/notify/message/new",(e=>{const t=e.Data,n=new Wc;if(n.DateTime=t.DateTime,n.Guid=t.Guid,n.MessageText=t.MessageText?t.MessageText:"",n.SenderName=t.SenderName?t.SenderName:"n/a",null!=t.ControllerActivities)for(let[e,r]of Object.entries(t.ControllerActivities)){const t=Ac[e],s=new Map;for(let[e,t]of Object.entries(r))s.set(e,t);n.ControllerActivities.set(t,s)}if(null!=t.Errors)for(let[e,r]of Object.entries(t.Errors))n.Errors.set(Cc[e],r);this._chatSubscriptions.forEach((e=>{e(n)}))}))}IsGptChatAvailableAsync(){return bc(this,void 0,void 0,(function*(){return(yield Su.Get(Ka.Wn.ServiceName).GetExtensionsInfoAsync()).any((e=>"80daeab9-104f-4c1b-9464-61f5fc9bf2bf"==e.ExtensionGuid))}))}GetChatConfigurationAsync(){return bc(this,void 0,void 0,(function*(){try{const e=yield this._connection.SendAndWaitForResponseAsync(new Mc,8e3,!1);return null==e||null==e.Status?new Sa.ZR(Nc.FatalError,"Cannot get chat configuration! No data in result"):e.Status!=wa.nW.OK?new Sa.ZR(Nc.Error,`Cannot get chat configuration! Controller responded with code: ${e.Status}`):null==e.Data?new Sa.ZR(Nc.NoData,"Cannot get chat configuration! Controller responded with success, but no data in response!"):e.Data}catch(e){return new Sa.ZR(Nc.FatalError,`Cannot get chat configuration! ${e}`)}}))}SetChatConfigurationAsync(e){return bc(this,void 0,void 0,(function*(){var t;try{const t=yield this._connection.SendAndWaitForResponseAsync(new Uc(e),8e3,!1);return null==t||null==t.Status?wa.nW.FatalError:t.Status}catch(e){return null===(t=r.h.Log)||void 0===t||t.Error(xc.ServiceName,`Cannot set chat configuration! ${e}`),wa.nW.FatalError}}))}SendMessageAsync(e){return bc(this,void 0,void 0,(function*(){var t;try{const t=yield this._connection.SendAndWaitForResponseAsync(new Oc(e),8e3,!1);return null==t||null==t.Status?wa.nW.FatalError:t.Status}catch(e){return null===(t=r.h.Log)||void 0===t||t.Error(xc.ServiceName,`Cannot send message! ${e}`),wa.nW.FatalError}}))}SubscribeToMessages(e){var t;null===(t=this._chatSubscriptions)||void 0===t||t.push(e)}UnsubscribeFromMessages(e){this._chatSubscriptions&&(this._chatSubscriptions=this._chatSubscriptions.filter((t=>t!==e)))}}class Oc extends wa.CP{constructor(e){super(),this.Resource="/homemessaging/gpt/message",this.Method=wa.IT.Put,this.Data=e}}class Mc extends wa.CP{constructor(){super(),this.Resource="/homemessaging/gpt/configuration",this.Method=wa.IT.Get}}class Uc extends wa.CP{constructor(e){super(),this.Resource="/homemessaging/gpt/configuration",this.Method=wa.IT.Put,this.Data=e}}class Wc{constructor(){this._messageActions=new Map,this._errors=new Map,this._guid="",this._senderName="",this._messageText="",this._dateTime=""}get ControllerActivities(){return this._messageActions}get Errors(){return this._errors}get Guid(){return this._guid}get SenderName(){return this._senderName}get MessageText(){return this._messageText}get DateTime(){return this._dateTime}set ControllerActivities(e){this._messageActions=e}set Errors(e){this._errors=e}set Guid(e){this._guid=e}set SenderName(e){this._senderName=e}set MessageText(e){this._messageText=e}set DateTime(e){this._dateTime=e}}!function(e){e[e.ControllerChat=0]="ControllerChat",e[e.FamilyChat=1]="FamilyChat",e[e.GptChat=2]="GptChat"}(Rc||(Rc={}));class xc{constructor(){this._services={ControllerChat:new mc,GptChat:new Pc,FamillyChat:new Dc}}GetServiceName(){return xc.ServiceName}GetChatImplementation(e){switch(e){case Rc.ControllerChat:return this._services.ControllerChat;case Rc.FamilyChat:return this._services.FamillyChat;case Rc.GptChat:return this._services.GptChat;default:throw new Fc(`Chat with type ${e} not implemented!`)}}}xc.ServiceName="ChatService",function(e){e.OtherError="OtherError",e.FatalError="FatalError",e.Error="Error",e.NoData="NoData"}(Nc||(Nc={}));class Fc extends Error{constructor(e){super(e),this.message=e,this.name="ChatNotImplementedException"}}!function(e){e[e.ResourceIsNotAvailable=-11]="ResourceIsNotAvailable",e[e.AnotherAppWithGivenAccessTokenAlreadyExists=-10]="AnotherAppWithGivenAccessTokenAlreadyExists",e[e.AppGuidDoesNotExists=-7]="AppGuidDoesNotExists",e[e.AppUrlToShort=-6]="AppUrlToShort",e[e.AppUserNameToShort=-5]="AppUserNameToShort",e[e.AppUserIdToShort=-4]="AppUserIdToShort",e[e.AccessTokenToShort=-3]="AccessTokenToShort",e[e.AppNameToShort=-2]="AppNameToShort",e[e.UnkownError=0]="UnkownError",e[e.Changed=1]="Changed"}(Gc||(Gc={}));var Lc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class Bc{constructor(){this._connection=Su.Get(o.G.ServiceName),this._log=Su.Get(Aa.g.ServiceName)}GetServiceName(){return Bc.ServiceName}IsSupportedAsync(){return Lc(this,void 0,void 0,(function*(){let e=yield this._connection.SendAndWaitForResponseAsync(new $c,2e3,!0);return this._log.Debug(Bc.ServiceName,`IsSupportedAsync: ${null==e?void 0:e.Status} resp: ${JSON.stringify(e)}`),null!=e&&e.Status==wa.nW.WrongData}))}GetConnectedAppsAsync(){return Lc(this,void 0,void 0,(function*(){let e=yield this._connection.SendAndWaitForResponseAsync(new qc,2e3,!0);return(null==e?void 0:e.Status)===wa.nW.OK?null==e?void 0:e.Data:null==e?void 0:e.Status}))}UpsertConnectedAppAsync(e){return Lc(this,void 0,void 0,(function*(){let t=yield this._connection.SendAndWaitForResponseAsync(new jc(e),2e3,!1);switch(null==t?void 0:t.Status){case wa.nW.OK:return new Sa.ZR(Gc.Changed,"");case wa.nW.WrongData:switch(t.Data){case"AccessTokenToShort":return new Sa.ZR(Gc.AccessTokenToShort,t.Data);case"AnotherAppWithGivenAccessTokenAlreadyExists":return new Sa.ZR(Gc.AnotherAppWithGivenAccessTokenAlreadyExists,t.Data);case"AppGuidDoesNotExists":return new Sa.ZR(Gc.AppGuidDoesNotExists,t.Data);case"AppNameToShort":return new Sa.ZR(Gc.AppNameToShort,t.Data);case"AppUrlToShort":return new Sa.ZR(Gc.AppUrlToShort,t.Data);case"AppUserIdToShort":return new Sa.ZR(Gc.AppUserIdToShort,t.Data);case"AppUserNameToShort":return new Sa.ZR(Gc.AppUserNameToShort,t.Data);default:return new Sa.ZR(Gc.UnkownError,t.Data)}case wa.nW.ResourceDoesNotExists:case wa.nW.ResourceIsNotAvailable:return new Sa.ZR(Gc.ResourceIsNotAvailable,t.Data);default:return new Sa.ZR(Gc.UnkownError,t.Data)}}))}RemoveConnectedAppAsync(e){return Lc(this,void 0,void 0,(function*(){let t=yield this._connection.SendAndWaitForResponseAsync(new Vc(e.Guid),2e3,!0);return null==t?void 0:t.Status}))}}Bc.ServiceName="ConnectedAppsService";class $c extends wa.CP{constructor(){super(),this.Resource="/applications/app/auth",this.Method=wa.IT.Put,this.Data=""}}class qc extends wa.CP{constructor(){super(),this.Resource="/applications/get",this.Method=wa.IT.Get}}class Vc extends wa.CP{constructor(e){super(),this.Resource="/applications/app/delete",this.Method=wa.IT.Delete,this.Data=e}}class jc extends wa.CP{constructor(e){super(),this.Resource="/applications/app/upsert",this.Method=wa.IT.Put,this.Data=e}}var Hc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class Qc{constructor(){try{const e=window.location.href,t=new URL(e),n=new URLSearchParams(t.search),r=n.get("mig_c_enc"),s=n.get("mig_controllers"),o=n.get("mig_lang");if(null!==r){const e=decodeURIComponent(this.b64DecodeUnicode(decodeURIComponent(r)));localStorage.setItem(Qc.AppUserControllersKeyName,e)}null!==s&&localStorage.setItem(Qc.AppUserControllersKeyName,decodeURIComponent(s)),null!==o&&localStorage.setItem(Qc.AppSelectedLanguageKeyName,o)}catch(e){console.error(e)}}waitForNavigatorObject(e){return new Promise(((t,n)=>{setTimeout((()=>{n(new Error(`Timed out waiting for navigator.${e}`))}),1e4),function n(){navigator[e]?t(navigator[e]):requestAnimationFrame(n)}()}))}b64DecodeUnicode(e){return decodeURIComponent(Array.prototype.map.call(atob(e),(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))}decodeUriJsonData(e){return JSON.parse(decodeURIComponent(e))}encodeUriJsonData(e){return encodeURIComponent(JSON.stringify(e))}IsExalusNativeMigrationAvailable(){return void 0!==navigator.exalusMigration}GetServiceName(){return Qc.ServiceName}IsMigrationDataAvailableAsync(){return Hc(this,void 0,void 0,(function*(){try{if(this.isIosNavtie()){var e=yield Qc.GetIosMigrationStatus();return null!==e&&e}if(!navigator.userAgent.endsWith("LavvaAndroidNative")||void 0!==navigator.exalusMigration&&null!==navigator.exalusMigration||(yield this.waitForNavigatorObject("exalusMigration")),this.IsExalusNativeMigrationAvailable()){let e=yield navigator.exalusMigration.IsMigrationDataAvailableAsync();return null!=e&&e.DataMigrated}return null!==localStorage.getItem(Qc.AppSelectedLanguageKeyName)||null!==localStorage.getItem(Qc.AppUserControllersKeyName)}catch(e){return console.error(e),!1}}))}GetControllersDataAsync(){return Hc(this,void 0,void 0,(function*(){try{if(this.isIosNavtie()){let e=yield Qc.GetIosControllerList();return void 0===e?null:e}{if(this.IsExalusNativeMigrationAvailable()){let e=yield navigator.exalusMigration.GetControllersDataAsync();return void 0===e?null:e}let e=localStorage.getItem(Qc.AppUserControllersKeyName);return null!==e?JSON.parse(e):null}}catch(e){return console.error(e),null}}))}GetLanguageCodeAsync(){return Hc(this,void 0,void 0,(function*(){try{if(this.isIosNavtie()){let e=yield Qc.GetIosDefaultLanguage();return void 0===e?null:e}{if(this.IsExalusNativeMigrationAvailable()){let e=yield navigator.exalusMigration.GetLanguageCodeAsync();return void 0===e?null:e}let e=localStorage.getItem(Qc.AppSelectedLanguageKeyName);return null!=e?e:null}}catch(e){return console.error(e),null}}))}static GetIosMigrationStatus(e=8e3){let t;return new Promise(((n,r)=>{t=setTimeout((()=>{r(null)}),e);try{window.nativeEvent.exalusControllerData.isMigrationAvaliable=e=>{clearTimeout(t),n(e)},window.webkit.messageHandlers.exalusControllerData.postMessage("IsMigrationAvaliable")}catch(e){r(e)}}))}static GetIosControllerList(e=8e3){let t;return new Promise(((n,r)=>{t=setTimeout((()=>{r(null)}),e);try{window.nativeEvent.exalusControllerData.handleControllers=e=>{clearTimeout(t),n(e)},window.webkit.messageHandlers.exalusControllerData.postMessage("GetControllers")}catch(e){r(e)}}))}static GetIosDefaultLanguage(e=8e3){let t;return new Promise(((n,r)=>{t=setTimeout((()=>{r(null)}),e);try{window.nativeEvent.exalusControllerData.handleLanguage=e=>{clearTimeout(t),n(e)},window.webkit.messageHandlers.exalusControllerData.postMessage("GetDefaultLanguage")}catch(e){r(e)}}))}isIosNavtie(){var e;const t=null!=window.webkit&&null!=window.webkit.messageHandlers,n=void 0!==(null===(e=window.nativeEvent)||void 0===e?void 0:e.exalusControllerData);return t&&n}}Qc.AppSelectedLanguageKeyName="App___SelectedLanguage",Qc.AppUserControllersKeyName="App___UserControllersListDatabase",Qc.ServiceName="DataMigrationService";var Zc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class Kc{constructor(){this._localIpAddress=null,this._publicIpAddress=null,this._gatewayIpAddress=null,this._macAddress=null,this._isInLocalNetwork=!1,this.nativeFindControllerApi=null,void 0!==navigator.findEfcController&&(this.nativeFindControllerApi=navigator.findEfcController),this._connection=Su.Get(o.G.ServiceName),this._logger=Su.Get(Aa.g.ServiceName),this._storage=Su.Get(s.s.ServiceName),Su.Get(u.Q.ServiceName).OnUserLoggedInEvent().Subscribe((e=>Zc(this,void 0,void 0,(function*(){var e;try{const t=yield this.GetControllerNetworkConfigurationAsync();if(null!=t){this._localIpAddress=t.LocalIPv4,this._publicIpAddress=t.PublicIPv4,this._gatewayIpAddress=t.GatewayIPv4,this._macAddress=t.MAC,this._storage.Save(Kc.ServiceName,"LocalIpAddress",this._localIpAddress);const n=this.GetControllerHostName(this._connection.GetControllerSerialNumber());this._logger.Debug(`Looking for controller in local network with host name: ${n}`);let r=null;this.isIosNative()?r=yield this.getIosControllerIpAsync(n):null!==this.nativeFindControllerApi&&(r=yield null===(e=this.nativeFindControllerApi)||void 0===e?void 0:e.FindControllerAsync(n)),null!=r&&""!=r?(this._isInLocalNetwork=!0,this._logger.Debug(Kc.ServiceName,`Controller found in local network with ip address: ${r}`)):(this._isInLocalNetwork=!1,this._logger.Debug(Kc.ServiceName,"Controller not found in local network."))}else this._logger.Error(Kc.ServiceName,"Failed to get network configuration data.")}catch(e){this._logger.Error(Kc.ServiceName,`Failed to get network configuration data - ${e}`)}}))))}FindControllerInLocalNetworkAsync(e){return Zc(this,void 0,void 0,(function*(){if(this.isIosNative()){const t=yield this.getIosControllerIpAsync(e);return""==t?null:t}return null!==this.nativeFindControllerApi?this.nativeFindControllerApi.FindControllerAsync(e):Promise.resolve(null)}))}GetLastKnownControllerLocalIpAddress(){return null!==this._localIpAddress?this._localIpAddress:this._storage.Read(Kc.ServiceName,"LocalIpAddress")}GetControllerHostName(e){return`ExalusTR7-${e}`}GetMdnsHostName(){return`ExalusTR7-${this.GetControllerHostName(this._connection.GetControllerSerialNumber())}.local`.toLowerCase()}GetControllerNetworkConfigurationAsync(){return Zc(this,void 0,void 0,(function*(){var e;const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new Yc,2e4,!1);return null==t||null==t.Status||null==t.Data?(this._logger.Error(Kc.ServiceName,"Failed to get network configuration data - unknow error."),null):t.Data}))}GetServiceName(){return Kc.ServiceName}isIosNative(){var e;const t=null!=window.webkit&&null!=window.webkit.messageHandlers,n=void 0!==(null===(e=window.nativeEvent)||void 0===e?void 0:e.exalusFindController);return t&&n}getIosControllerIpAsync(e,t=2e4){let n;return new Promise(((r,s)=>{n=setTimeout((()=>{this._logger.Error("Cannot find controller in local network, timeout!"),r("")}),t);try{window.nativeEvent.exalusFindController.handleFindController=e=>{clearTimeout(n),r(e)},window.webkit.messageHandlers.exalusFindController.postMessage(e)}catch(e){this._logger.Error(`Cannot find controller in local network, error: ${e}`),r("")}}))}}Kc.ServiceName="FindControllerService";class Yc extends wa.CP{constructor(){super(),this.Resource="/network/lan/",this.Method=wa.IT.Get}}var zc=n(5973),Jc=n(8070),Xc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class eu{constructor(){this._errorOccuredEvent=new zc.r,this._connectionStateChangedEvent=new zc.r,this._dataReceivedEvent=new zc.r,this._onMessageReceived=new zc.r,this._log=Su.Get(Aa.g.ServiceName),this._controllerConfiguration=null,this._cache=null,this._session=null,this._logPackets=!0,this.socket=null,this._address=null,this._port="81",this._isOpen=!1,this._pin=void 0,this._serial=void 0,this._auth=null,this._initialized=!1}SendAndHandleStreamAsync(e,t,n){throw new Error("Method not implemented.")}Initialize(){this._initialized||(this._initialized=!0,this._controllerConfiguration=Su.Get(d.u.ServiceName),this._cache=Su.Get(i.C.ServiceName),this._session=Su.Get(u.Q.ServiceName))}checkIfAuthInfoIsCorrectAsync(e){return Xc(this,void 0,void 0,(function*(){const t=`http://${window.location.hostname}/controller_info`;let n=yield fetch(t,{method:"GET"});return!!n.ok&&(yield n.text())===`${e.SerialNumber}:${e.PIN}`}))}SubscribeTo(e,t){let n=n=>{n.Resource===e&&t(n)};return this.OnDataReceivedEvent().Subscribe(n),()=>this.OnDataReceivedEvent().Unsubscribe(n)}GetControllerSerialNumber(){return this._serial}GetControllerPin(){return this._pin}SetServersBrokerAddress(e){throw new Error("Method not implemented.")}SetDefaultPacketsBrokerAddress(e){throw new Error("Method not implemented.")}GetServerAddressAsync(){return Su.IsRunningFromLocalNetwork()&&(this._address=`${window.location.hostname}:${this._port}`),Promise.resolve(this._address)}ConnectAsync(e){return new Promise(((t,n)=>{var r;this.Initialize(),null===(r=this.socket)||void 0===r||r.close(),this.socket=new WebSocket(`ws://${e}/api`),this._log.Debug(eu.ServiceName,`Connecting to the WebSockets server ${e}`),this.socket.onerror=t=>(this._log.Debug(eu.ServiceName,`Error occured in the WebSockets server ${e} info: \n${JSON.stringify(t)}`),this._isOpen=!1,this._errorOccuredEvent.Invoke(["WebSockets",t.toString()]),n(Jc.IX.FailedToConnect)),this.socket.onopen=n=>(this._log.Debug(eu.ServiceName,`Connected to the WebSockets server ${e} info: \n${JSON.stringify(n)}`),this._isOpen=!0,this._connectionStateChangedEvent.Invoke(Jc.KN.Connected),t(Jc.IX.Connected)),this.socket.onclose=t=>{this._log.Debug(eu.ServiceName,`Disconnected from the WebSockets server ${e} info: \n${JSON.stringify(t)}`),this._isOpen=!1,this._connectionStateChangedEvent.Invoke(Jc.KN.Disconnected)},this.socket.onmessage=t=>{this._log.Debug(eu.ServiceName,`Message received from the WebSockets server ${e}: ${t.data}`),this._onMessageReceived.Invoke(t.data);try{let e=JSON.parse(t.data);this._log.Debug(eu.ServiceName,`Received data frame: ${e.Status}`),this._dataReceivedEvent.Invoke(e)}catch(e){this._log.Error(eu.ServiceName,`Failed to parse message: ${t.data}`)}},this._connectionStateChangedEvent.Invoke(Jc.KN.Connecting)}))}AuthorizeAsync(e){return Xc(this,void 0,void 0,(function*(){return!!(yield this.checkIfAuthInfoIsCorrectAsync(e))&&(this._log.Debug(eu.ServiceName,`Authorization successful for controller ${e.SerialNumber}`),this._pin=e.PIN,this._serial=e.SerialNumber,this._auth=e,!0)}))}ConnectAndAuthorizeAsync(e){return Xc(this,void 0,void 0,(function*(){if(this._log.Debug(eu.ServiceName,`Connecting and authorizing to the controller ${e.SerialNumber}`),!(yield this.AuthorizeAsync(e)))return Jc.IX.AuthorizationFailed;let t=yield this.GetServerAddressAsync();return null==t?Jc.IX.FailedToConnectToServer:yield this.ConnectAsync(t)}))}DisconnectAsync(){var e;return this._log.Debug(eu.ServiceName,`Disconnecting from the WebSockets server ${this._address}`),this._connectionStateChangedEvent.Invoke(Jc.KN.Disconnecting),null===(e=this.socket)||void 0===e||e.close(),Promise.resolve()}IsConnected(){return this._isOpen}EnablePacketsLogging(){this._log.Debug(eu.ServiceName,"Packets logging enabled"),this._logPackets=!0}DisablePacketsLogging(){this._log.Debug(eu.ServiceName,"Packets logging disabled"),this._logPackets=!1}SendData(e,t){var n;let r=JSON.stringify(e);return t&&this._log.Debug(eu.ServiceName,`Sending data frame: ${r}`),this._isOpen?null===(n=this.socket)||void 0===n||n.send(r):this._log.Error(eu.ServiceName,`Failed to send data frame: ${r}`),this._isOpen}SendAsync(e){return this._isOpen?Promise.resolve(this.SendData(e,this._logPackets)):Promise.resolve(!1)}SendAndWaitForResponseAsync(e,t,n,r=!0){return this.SendAndWaitForResponseWithRepeatAsync(e,t,n,r)}SendAndHandleResponseAsync(e,t,n,r){return Xc(this,void 0,void 0,(function*(){var s;let o=0;const i=Date.now();if(!this.IsConnected())throw new Error("Connection is not established");return"/users/user/login"!==e.Resource&&(yield null===(s=this._session)||void 0===s?void 0:s.WaitForSessionCreationAsync()),new Promise(((s,a)=>Xc(this,void 0,void 0,(function*(){const c=()=>window.setTimeout((()=>{this._dataReceivedEvent.Unsubscribe(u);let t=`Response timeout, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;this._log.Error(eu.ServiceName,t),a(new Error(t))}),t);let u=l=>Xc(this,void 0,void 0,(function*(){var d,h,g;if((null==l?void 0:l.TransactionId)==e.TransactionId){window.clearTimeout(o);const p=Date.now()-i;switch((r||!0===window.packets)&&this._log.Debug(eu.ServiceName,`Received response for: ${null==l?void 0:l.Resource} ${null==l?void 0:l.Method} id: ${null==l?void 0:l.TransactionId} in ${p}ms`),(null==l?void 0:l.Status)===wa.nW.UserIsNotLoggedIn&&(this._dataReceivedEvent.Unsubscribe(u),(null===(d=this._session)||void 0===d?void 0:d.OnUserLoggedOutEvent()).Invoke(null===(h=this._session)||void 0===h?void 0:h.User),yield null===(g=this._session)||void 0===g?void 0:g.RestoreSessionAsync(),s(yield this.SendAndHandleResponseAsync(e,t,n,r))),null==l?void 0:l.Status){case wa.nW.MultiDataResponseStart:case wa.nW.MultiDataResponse:n(l),o=c();break;case wa.nW.MultiDataResponseStop:case wa.nW.FatalError:case wa.nW.Error:n(l),this._dataReceivedEvent.Unsubscribe(u),s();break;default:let t=`Failed to process MultiDataResponse - recived incorrect response status: ${null==l?void 0:l.Status} method: ${e.Method} transaction id: ${e.TransactionId}\n                             make sure that the requested endpoint uses MultiDataResponse, otherwise use SendAndWaitForResponseAsync<T> method.`;a(new Error(t))}}}));if(this._dataReceivedEvent.Subscribe(u),o=c(),!this.SendData(e,r)){let t=`Failed to send request, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;a(new Error(t))}}))))}))}SendAndWaitForResponseWithRepeatAsync(e,t,n){return Xc(this,arguments,void 0,(function*(e,t,n,r=!0,s=!0){var o,i,a;if(e.Method===wa.IT.Get&&n&&!(yield null===(o=this._controllerConfiguration)||void 0===o?void 0:o.DidCofigurationChangeAsync())){let t=null===(i=this._cache)||void 0===i?void 0:i.GetCache(e);if(null!==t)return Promise.resolve(t)}let c=0;const u=Date.now();if(!this.IsConnected())throw new Error("Connection is not established");return"/users/user/login"!==e.Resource&&(yield null===(a=this._session)||void 0===a?void 0:a.WaitForSessionCreationAsync()),new Promise(((o,i)=>Xc(this,void 0,void 0,(function*(){let a=i=>Xc(this,void 0,void 0,(function*(){var l,d,h,g;if((null==i?void 0:i.TransactionId)==e.TransactionId){window.clearTimeout(c),this._dataReceivedEvent.Unsubscribe(a);const p=Date.now()-u;s&&this._log.Debug(eu.ServiceName,`Received response for: ${null==i?void 0:i.Resource} ${null==i?void 0:i.Method} id: ${null==i?void 0:i.TransactionId} in ${p}ms`),e.Method===wa.IT.Get&&n&&(null===(l=this._cache)||void 0===l||l.Cache(i)),!n&&(null==i?void 0:i.Status)===wa.nW.UserIsNotLoggedIn&&r&&((null===(d=this._session)||void 0===d?void 0:d.OnUserLoggedOutEvent()).Invoke(null===(h=this._session)||void 0===h?void 0:h.User),yield null===(g=this._session)||void 0===g?void 0:g.RestoreSessionAsync(),o(yield this.SendAndWaitForResponseWithRepeatAsync(e,t,n,!1,s))),o(i)}}));if(this._dataReceivedEvent.Subscribe(a),c=window.setTimeout((()=>{this._dataReceivedEvent.Unsubscribe(a);let t=`Response timeout, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;this._log.Error(eu.ServiceName,t),i(new Error(t))}),t),!this.SendData(e,s)){let t=`Failed to send request, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;i(new Error(t))}}))))}))}OnDataReceivedEvent(){return this._dataReceivedEvent}OnErrorOccuredEvent(){return this._errorOccuredEvent}OnConnectionStateChangedEvent(){return this._connectionStateChangedEvent}GetAuthorizationInfo(){return this._auth}GetServiceName(){return eu.ServiceName}}eu.ServiceName="ExalusConnectionService";var tu,nu,ru,su=n(8517);class ou{constructor(){var e,t;this.OnEnteredPictureInPicture=new su.J,this.OnExitedPictureInPicture=new su.J,this._nativeApi=null,this.IsSupported()?(this._nativeApi=navigator.pip,null===(e=this._nativeApi)||void 0===e||e.OnEnteredPictureInPicture.Subscribe((()=>this.OnEnteredPictureInPicture.Invoke())),null===(t=this._nativeApi)||void 0===t||t.OnExitedPictureInPicture.Subscribe((()=>this.OnExitedPictureInPicture.Invoke()))):navigator.pip=null}IsSupported(){return void 0!==navigator.pip&&null!==navigator.pip}RequestPictureInPictureAsync(){return this.IsSupported()?this._nativeApi.RequestPictureInPictureAsync():Promise.resolve(!1)}GetServiceName(){return ou.ServiceName}}ou.ServiceName="PictureInPictureService",(ru=tu||(tu={}))[ru.Unknown=-1]="Unknown",ru[ru.Web=0]="Web",ru[ru.Android=1]="Android",ru[ru.iOS=2]="iOS";class iu{constructor(){this.ClientName="",this.LavvaUserName="",this.ClientType=tu.Unknown,this.TokenGuid="",this.Token="",this.RegistrationDate=new Date}}!function(e){e.FeatureUnsupported="FeatureUnsupported",e.UnknownError="UnknownError",e.NoData="NoData",e.IncorrectGuid="IncorrectGuid",e.IdentityIsEmpty="IdentityIsEmpty",e.DeviceTokenIsEmpty="DeviceTokenIsEmpty",e.ClientNameIsEmpty="ClientNameIsEmpty",e.LavvaUserNameIsEmpty="LavvaUserNameIsEmpty",e.TokenNotFound="TokenNotFound",e.TokensNotFoundForLavvaUser="TokensNotFoundForLavvaUser"}(nu||(nu={}));var au=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class cu{constructor(){this._connection=Su.Get(o.G.ServiceName),this._logger=Su.Get(Aa.g.ServiceName)}GetServiceName(){return cu.ServiceName}RegisterNotificationsClientAsync(e){return au(this,void 0,void 0,(function*(){var t;try{const n=new uu({ClientName:e.ClientName,DeviceToken:e.DeviceToken,LavvaUserName:e.LavvaUserName,ClientType:this.getClientType(),NotificationsEnabledForToken:e.EnableNotifications}),r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(n,8e3,!1);if(null==r||null==r.Status)return new Sa.ZR(nu.UnknownError,"Cannot register notifications client - unknown error!");switch(r.Status){case wa.nW.WrongData:{const e=this.isValidErrorCode(r.Data)?r.Data:nu.UnknownError;return new Sa.ZR(e,"Cannot register notifications client - wrong data!")}case wa.nW.ResourceDoesNotExists:return new Sa.ZR(nu.FeatureUnsupported,"Notifications feature not supported in controller!");case wa.nW.OK:return"string"==typeof r.Data?r.Data:new Sa.ZR(nu.NoData,"Cannot register notifications client - result status is OK, but no token guid presented in paylode, unknown error!");default:return new Sa.ZR(nu.UnknownError,"Cannot register notifications client - unknown error!")}}catch(e){return new Sa.ZR(nu.UnknownError,`Cannot register notifications client - error: ${e}`)}}))}UpdateNotificationsClientAsync(e,t){return au(this,void 0,void 0,(function*(){var n;try{const r=new lu({ClientName:t.ClientName,DeviceToken:t.DeviceToken,LavvaUserName:t.LavvaUserName,ClientType:this.getClientType(),NotificationsEnabledForToken:t.EnableNotifications,Guid:e}),s=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(r,8e3,!1);if(null==s||null==s.Status)return new Sa.ZR(nu.UnknownError,"Cannot update notifications client - unknown error!");switch(s.Status){case wa.nW.WrongData:{const e=this.isValidErrorCode(s.Data)?s.Data:nu.UnknownError;return new Sa.ZR(e,"Cannot update notifications client - wrong data!")}case wa.nW.ResourceDoesNotExists:return new Sa.ZR(nu.FeatureUnsupported,"Notifications feature not supported in controller!");case wa.nW.OK:return"string"==typeof s.Data?s.Data==e?wa.nW.OK:new Sa.ZR(nu.UnknownError,`Cannot update notifications client - result status is OK, but token guid is different! request guid ${e}, response guid: ${s.Data}`):new Sa.ZR(nu.NoData,"Cannot update notifications client - result status is OK, but no token guid presented in paylode, unknown error!");default:return new Sa.ZR(nu.UnknownError,"Cannot update notifications client - unknown error!")}}catch(e){return this._logger.Error(`Cannot update notifications client - error: ${e}`),new Sa.ZR(nu.UnknownError,`Cannot update notifications client - error: ${e}`)}}))}GetRegisteredNotificationsClientsMetadataAsync(e){return au(this,void 0,void 0,(function*(){var e;try{const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new du,8e3,!1);return null==t||null==t.Status?new Sa.ZR(nu.UnknownError,"Cannot get notifications clients metadata - unknown error!"):t.Status==wa.nW.ResourceDoesNotExists?new Sa.ZR(nu.FeatureUnsupported,"Notifications feature not supported in controller!"):t.Status!=wa.nW.OK?new Sa.ZR(nu.UnknownError,`Cannot get notifications clients metadata - response status: ${t.Status}}`):null==t.Data?new Sa.ZR(nu.NoData,"Cannot get notifications clients metadata - response status is OK, but no data!"):t.Data.map((e=>{const t=new iu;return t.ClientName=e.ClientName,t.LavvaUserName=e.LavvaUserName,t.ClientType=e.ClientType,t.TokenGuid=e.TokenGuid,t.Token=e.Token,t.RegistrationDate=new Date(e.RegistrationDate),t}))}catch(e){return this._logger.Error(`Cannot get notifications clients metadata - error: ${e}`),new Sa.ZR(nu.UnknownError,`Cannot get notifications clients metadata - error: ${e}`)}}))}IsNotificationsEnabledForAllUserTokensAsync(e){return au(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new mu(e),8e3,!1);if(null==n||null==n.Status)return new Sa.ZR(nu.UnknownError,"Cannot get notifications status - unknown error!");switch(n.Status){case wa.nW.ResourceDoesNotExists:case wa.nW.WrongData:if(null==n.Data)return new Sa.ZR(nu.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(n.Data)?n.Data:nu.UnknownError;return new Sa.ZR(e,"Cannot get notifications status!")}case wa.nW.OK:return"boolean"==typeof n.Data?n.Data:new Sa.ZR(nu.NoData,"Cannot get notifications status - result status is OK, but no data, or data type is wrong!");default:return new Sa.ZR(nu.UnknownError,`Cannot get notifications - response code ${n.Status}}!`)}}catch(e){return this._logger.Error(`Cannot get notifications status - error: ${e}`),new Sa.ZR(nu.UnknownError,`Cannot get notifications status - error: ${e}`)}}))}IsNotificationsEnabledAsync(e){return au(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new hu(e),8e3,!1);if(null==n||null==n.Status)return new Sa.ZR(nu.UnknownError,"Cannot get notifications status - unknown error!");switch(n.Status){case wa.nW.ResourceDoesNotExists:if(null==n.Data)return new Sa.ZR(nu.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(n.Data)?n.Data:nu.UnknownError;return new Sa.ZR(e,"Cannot get notifications status - resource not exists!")}case wa.nW.OK:return"boolean"==typeof n.Data?n.Data:new Sa.ZR(nu.NoData,"Cannot get notifications status - result status is OK, but no data, or data type is wrong!");default:return new Sa.ZR(nu.UnknownError,`Cannot get notifications - response code ${n.Status}}!`)}}catch(e){return this._logger.Error(`Cannot get notifications status - error: ${e}`),new Sa.ZR(nu.UnknownError,`Cannot get notifications status - error: ${e}`)}}))}EnableNotificationsAsync(e){return au(this,void 0,void 0,(function*(){var t;try{let n=null;null!=e&&""!=e&&(n=e);const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new gu(n),8e3,!1);if(null==r||null==r.Status)return new Sa.ZR(nu.UnknownError,"Cannot enable notifications - unknown error!");switch(r.Status){case wa.nW.ResourceDoesNotExists:if(null==r.Data)return new Sa.ZR(nu.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(r.Data)?r.Data:nu.UnknownError;return new Sa.ZR(e,"Cannot enable notifications - resource not exists!")}case wa.nW.OK:return wa.nW.OK;default:return new Sa.ZR(nu.UnknownError,`Cannot enable notifications - response code ${r.Status}}!`)}}catch(e){return this._logger.Error(`Cannot enable notifications - error: ${e}`),new Sa.ZR(nu.UnknownError,`Cannot enable notifications - error: ${e}`)}}))}EnableNotificationsForAllUserTokensAsync(e){return au(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new fu(e),8e3,!1);if(null==n||null==n.Status)return new Sa.ZR(nu.UnknownError,"Cannot enable notifications - unknown error!");switch(n.Status){case wa.nW.ResourceDoesNotExists:case wa.nW.WrongData:if(null==n.Data)return new Sa.ZR(nu.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(n.Data)?n.Data:nu.UnknownError;return new Sa.ZR(e,"Cannot enable notifications!")}case wa.nW.OK:return wa.nW.OK;default:return new Sa.ZR(nu.UnknownError,`Cannot enable notifications - response code ${n.Status}!`)}}catch(t){return this._logger.Error(`Cannot enable notifications for lavva user ${e} - error: ${t}`),new Sa.ZR(nu.UnknownError,`Cannot disable notifications for lavva user ${e} - error: ${t}`)}}))}DisableNotificationsAsync(e){return au(this,void 0,void 0,(function*(){var t;try{let n=null;null!=e&&""!=e&&(n=e);const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new pu(n),8e3,!1);if(null==r||null==r.Status)return new Sa.ZR(nu.UnknownError,"Cannot disable notifications - unknown error!");switch(r.Status){case wa.nW.ResourceDoesNotExists:if(null==r.Data)return new Sa.ZR(nu.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(r.Data)?r.Data:nu.UnknownError;return new Sa.ZR(e,"Cannot disable notifications - resource not exists!")}case wa.nW.OK:return wa.nW.OK;default:return new Sa.ZR(nu.UnknownError,`Cannot disable notifications - response code ${r.Status}!`)}}catch(e){return this._logger.Error(`Cannot disable notifications - error: ${e}`),new Sa.ZR(nu.UnknownError,`Cannot disable notifications - error: ${e}`)}}))}DisableNotificationsForAllUserTokensAsync(e){return au(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new vu(e),8e3,!1);if(null==n||null==n.Status)return new Sa.ZR(nu.UnknownError,"Cannot disable notifications - unknown error!");switch(n.Status){case wa.nW.ResourceDoesNotExists:case wa.nW.WrongData:if(null==n.Data)return new Sa.ZR(nu.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(n.Data)?n.Data:nu.UnknownError;return new Sa.ZR(e,"Cannot disable notifications!")}case wa.nW.OK:return wa.nW.OK;default:return new Sa.ZR(nu.UnknownError,`Cannot disable notifications - response code ${n.Status}!`)}}catch(t){return this._logger.Error(`Cannot disable notifications for lavva user ${e} - error: ${t}`),new Sa.ZR(nu.UnknownError,`Cannot disable notifications for lavva user ${e} - error: ${t}`)}}))}getClientType(){return this.isIos()?tu.iOS:navigator.userAgent.endsWith("LavvaAndroidNative")?tu.Android:tu.Web}isValidErrorCode(e){return Object.values(nu).includes(e)}isIos(){return null!=window.webkit&&null!=window.webkit.messageHandlers}}cu.ServiceName="NotificationsService";class uu extends wa.CP{constructor(e){super(),this.Resource="/notifications/token",this.Method=wa.IT.Post,this.Data=e}}class lu extends wa.CP{constructor(e){super(),this.Resource="/notifications/token",this.Method=wa.IT.Put,this.Data=e}}class du extends wa.CP{constructor(){super(),this.Resource="/notifications/tokens/metadata",this.Method=wa.IT.Get}}class hu extends wa.CP{constructor(e){super(),this.Resource="/notifications/status",this.Method=wa.IT.Get,this.Data={TokenIdentity:e}}}class gu extends wa.CP{constructor(e){super(),this.Resource="/notifications/enable",this.Method=wa.IT.Post,this.Data=e}}class pu extends wa.CP{constructor(e){super(),this.Resource="/notifications/disable",this.Method=wa.IT.Post,this.Data=e}}class fu extends wa.CP{constructor(e){super(),this.Resource="/notifications/enable/for/lavva/user",this.Method=wa.IT.Post,this.Data=e}}class vu extends wa.CP{constructor(e){super(),this.Resource="/notifications/disable/for/lavva/user",this.Method=wa.IT.Post,this.Data=e}}class mu extends wa.CP{constructor(e){super(),this.Resource="/notifications/status/for/lavva/user",this.Method=wa.IT.Get,this.Data=e}}class yu{CheckLocationPermissionAsync(){return this.IsAndroidLocationAvailable()?navigator.AndroidLocation.CheckLocationPermissionAsync():Promise.resolve(!1)}RequestLocationPermissionAsync(){return this.IsAndroidLocationAvailable()?navigator.AndroidLocation.RequestLocationPermissionAsync():Promise.resolve(!1)}IsAndroidLocationAvailable(){return void 0!==navigator.AndroidLocation}GetServiceName(){return yu.ServiceName}}yu.ServiceName="AndroidLocationService";class wu{IsAndroidNotificationsAvailable(){return void 0!==navigator.AndroidNotifications}CheckNotificationPermissionAsync(){return this.IsAndroidNotificationsAvailable()?navigator.AndroidNotifications.CheckNotificationPermissionAsync():Promise.resolve(!1)}RequestNotificationPermissionAsync(){return this.IsAndroidNotificationsAvailable()?navigator.AndroidNotifications.RequestNotificationPermissionAsync():Promise.resolve(!1)}GetDeviceFirebaseTokenAsync(){return this.IsAndroidNotificationsAvailable()?navigator.AndroidNotifications.GetDeviceFirebaseTokenAsync():Promise.resolve(null)}GetServiceName(){return wu.ServiceName}}wu.ServiceName="AndroidNotificationsService",hn(Map),hn(Set),(()=>{const e=String.prototype,t=Object.getOwnPropertyNames(y.prototype);for(const n of t)e[n]=e[n]??y.prototype[n];e.first=function(e){if(e){for(let t=0;t<this.length;t++){const n=this[t];if(!0===e(n))return n}throw new p(g.NoMatch)}if(0===this.length)throw new p(g.NoElements);return this[0]},e.firstOrDefault=function(e){if(e){for(let t=0;t<this.length;t++){const n=this[t];if(!0===e(n))return n}return null}return 0===this.length?null:this[0]},e.count=function(e){if(e){let t=0;for(let n=0;n<this.length;n++)!0===e(this[n])&&t++;return t}return this.length},e.elementAt=function(e){if(e<0||e>=this.length)throw new h("index");return this[e]},e.elementAtOrDefault=function(e){return this[e]||null},e.last=function(e){if(e){for(let t=this.length-1;t>=0;t--){const n=this[t];if(!0===e(n))return n}throw new p(g.NoMatch)}if(0===this.length)throw new p(g.NoElements);return this[this.length-1]},e.lastOrDefault=function(e){if(e){for(let t=this.length-1;t>=0;t--){const n=this[t];if(!0===e(n))return n}return null}return 0===this.length?null:this[this.length-1]},e.reverse=function(){const e=this;return new y((function*(){for(let t=e.length-1;t>=0;t--)yield e[t]}))}})(),va(Array),va(Int8Array),va(Int16Array),va(Int32Array),va(Uint8Array),va(Uint8ClampedArray),va(Uint16Array),va(Uint32Array),va(Float32Array),va(Float64Array);class Su{static Init(){if(r.h.IsInitialized)return;let e=r.h.Instance;try{e.RegisterService(new Qc),e.RegisterService(new s.s),e.RegisterService(new ja.i),e.RegisterService(new i.C),e.RegisterService(new u.Q),e.RegisterService(new ou),Su.IsRunningFromLocalNetwork()?(console.log("\n\nRunning from local network!\n\n"),e.RegisterService(new eu)):e.RegisterService(new o.G),e.RegisterService(new yu),e.RegisterService(new wu),e.RegisterService(new za.V),e.RegisterService(new za.V),e.RegisterService(new l.O),e.RegisterService(new d.u),e.RegisterService(new Kc),e.RegisterService(new Za.N),e.RegisterService(new Ka.Wn),e.RegisterService(new Ha.V),e.RegisterService(new a.g),e.RegisterService(new c.N7),e.RegisterService(new Ta),e.RegisterService(new Ya.OA),e.RegisterService(new Qa.K),e.RegisterService(new Bc),e.RegisterService(new nc),e.RegisterService(new fc.N),e.RegisterService(new xc),e.RegisterService(new cu)}catch(e){console.error(e)}}static IsAppServedFromControllerAsync(){const e=`http://${window.location.hostname}/controller_info`;return fetch(e,{method:"GET"}).then((e=>!!e.ok)).catch((e=>!1))}static IsRunningFromLocalNetwork(e=window.location.hostname){return e.startsWith("192.168.")||e.startsWith("10.")}static GetAsync(e,t){return r.h.Instance.GetServiceAsync(e,t)}static GetWithTimeoutAsync(e,t){return r.h.Instance.GetServiceWithTimeoutAsync(e,t)}static Get(e){return r.h.Instance.GetService(e)}static SleepForAsync(e){return new Promise((t=>setTimeout(t,e)))}static ExportStringAsFileToDownload(e,t){const n=new Blob([t],{type:"text/plain"}),r=document.createElement("a"),s=window.URL.createObjectURL(n);return r.href=s,r.download=e,r}}Su.WorksInContextOf="",Su.Version=1},1966:(e,t,n)=>{n.d(t,{MU:()=>s,Y3:()=>a,YW:()=>u,az:()=>c,j$:()=>r,lc:()=>o,tJ:()=>l,zN:()=>i});class r extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class s extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class o extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class i extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class a extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class c extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class u extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class l extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}},2348:(e,t,n)=>{var r,s,o;n.d(t,{AM:()=>r,zA:()=>s}),function(e){e[e.NoTasksExecuting=0]="NoTasksExecuting",e[e.ExecutingTasks=1]="ExecutingTasks"}(r||(r={})),function(e){e[e.Default=0]="Default",e[e.Monostable=1]="Monostable",e[e.Bistable=2]="Bistable",e[e.Gate=3]="Gate",e[e.Gateway=4]="Gateway"}(s||(s={})),function(e){e[e.None=0]="None",e[e.OnOff=1]="OnOff",e[e.OnOffLights=2]="OnOffLights",e[e.OnOffWithDelay=3]="OnOffWithDelay",e[e.GateSwitchState=4]="GateSwitchState",e[e.GatePulse=5]="GatePulse",e[e.GateOpenClose=6]="GateOpenClose",e[e.GatewayOpenClose=7]="GatewayOpenClose",e[e.GatewayPulse=8]="GatewayPulse",e[e.Monostable=9]="Monostable",e[e.Dimmer=10]="Dimmer",e[e.Blind=11]="Blind",e[e.Roller=12]="Roller",e[e.TemperatureSensor=13]="TemperatureSensor",e[e.BrightnessSensor=14]="BrightnessSensor",e[e.HumiditySensor=15]="HumiditySensor",e[e.PowerMeter=16]="PowerMeter",e[e.RGBLight=17]="RGBLight",e[e.RGBWLight=18]="RGBWLight",e[e.LightsWarmth=19]="LightsWarmth",e[e.TemperatureControl=20]="TemperatureControl",e[e.BlindsWithPrecisePosition=21]="BlindsWithPrecisePosition",e[e.MovementSensor=21]="MovementSensor",e[e.SimpleRemote=22]="SimpleRemote",e[e.BlindsRemote=23]="BlindsRemote",e[e.DistanceSensor=24]="DistanceSensor",e[e.Multisensor=25]="Multisensor",e[e.IOTransmitter=26]="IOTransmitter",e[e.DoorOpenClose=27]="DoorOpenClose",e[e.WindSensor=28]="WindSensor",e[e.BatterySensor=29]="BatterySensor",e[e.PressureSensor=30]="PressureSensor"}(o||(o={}))},2558:(e,t,n)=>{n.d(t,{V:()=>s});var r=n(333);class s{constructor(){this._guid="",this._ownerGuid="",this._ownerIdentity="",this._base64Image="",this._imageType=r.y.Device,this._dateTime=""}get Guid(){return this._guid}get OwnerGuid(){return this._ownerGuid}get OwnerIdentity(){return this._ownerIdentity}get Base64Image(){return this._base64Image}get ImageType(){return this._imageType}get DateTime(){return this._dateTime}set Base64Image(e){this._base64Image=e}set Guid(e){this._guid=e}set OwnerGuid(e){this._ownerGuid=e}set OwnerIdentity(e){this._ownerIdentity=e}set ImageType(e){this._imageType=e}}},2734:(e,t,n)=>{var r;n.d(t,{T:()=>r}),function(e){e[e.ControllerResponseTimeout=-4]="ControllerResponseTimeout",e[e.DeviceNotFound=-3]="DeviceNotFound",e[e.DeviceResponseTimeout=-2]="DeviceResponseTimeout",e[e.Failed=-1]="Failed",e[e.Unknown=0]="Unknown",e[e.Executed=1]="Executed"}(r||(r={}))},2824:(e,t,n)=>{n.d(t,{M0:()=>r,YZ:()=>s,ku:()=>o});class r{static GenerateUUID(){var e=(new Date).getTime(),t="undefined"!=typeof performance&&performance.now&&1e3*performance.now()||0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(n){var r=16*Math.random();return e>0?(r=(e+r)%16|0,e=Math.floor(e/16)):(r=(t+r)%16|0,t=Math.floor(t/16)),("x"===n?r:3&r|8).toString(16)}))}static GenerateMd5(e){let t="0123456789abcdef";function n(e){let n,r="";for(n=0;n<=3;n++)r+=t.charAt(e>>8*n+4&15)+t.charAt(e>>8*n&15);return r}function r(e,t){let n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function s(e,t,n,s,o,i){return r(function(e,t){return e<<t|e>>>32-t}(r(r(t,e),r(s,i)),o),n)}function o(e,t,n,r,o,i,a){return s(t&n|~t&r,e,t,o,i,a)}function i(e,t,n,r,o,i,a){return s(t&r|n&~r,e,t,o,i,a)}function a(e,t,n,r,o,i,a){return s(t^n^r,e,t,o,i,a)}function c(e,t,n,r,o,i,a){return s(n^(t|~r),e,t,o,i,a)}let u,l,d,h,g,p=function(e){let t,n=1+(e.length+8>>6),r=new Array(16*n);for(t=0;t<16*n;t++)r[t]=0;for(t=0;t<e.length;t++)r[t>>2]|=e.charCodeAt(t)<<t%4*8;return r[t>>2]|=128<<t%4*8,r[16*n-2]=8*e.length,r}(""+e),f=1732584193,v=-271733879,m=-1732584194,y=271733878;for(u=0;u<p.length;u+=16)l=f,d=v,h=m,g=y,f=o(f,v,m,y,p[u+0],7,-680876936),y=o(y,f,v,m,p[u+1],12,-389564586),m=o(m,y,f,v,p[u+2],17,606105819),v=o(v,m,y,f,p[u+3],22,-1044525330),f=o(f,v,m,y,p[u+4],7,-176418897),y=o(y,f,v,m,p[u+5],12,1200080426),m=o(m,y,f,v,p[u+6],17,-1473231341),v=o(v,m,y,f,p[u+7],22,-45705983),f=o(f,v,m,y,p[u+8],7,1770035416),y=o(y,f,v,m,p[u+9],12,-1958414417),m=o(m,y,f,v,p[u+10],17,-42063),v=o(v,m,y,f,p[u+11],22,-1990404162),f=o(f,v,m,y,p[u+12],7,1804603682),y=o(y,f,v,m,p[u+13],12,-40341101),m=o(m,y,f,v,p[u+14],17,-1502002290),v=o(v,m,y,f,p[u+15],22,1236535329),f=i(f,v,m,y,p[u+1],5,-165796510),y=i(y,f,v,m,p[u+6],9,-1069501632),m=i(m,y,f,v,p[u+11],14,643717713),v=i(v,m,y,f,p[u+0],20,-373897302),f=i(f,v,m,y,p[u+5],5,-701558691),y=i(y,f,v,m,p[u+10],9,38016083),m=i(m,y,f,v,p[u+15],14,-660478335),v=i(v,m,y,f,p[u+4],20,-405537848),f=i(f,v,m,y,p[u+9],5,568446438),y=i(y,f,v,m,p[u+14],9,-1019803690),m=i(m,y,f,v,p[u+3],14,-187363961),v=i(v,m,y,f,p[u+8],20,1163531501),f=i(f,v,m,y,p[u+13],5,-1444681467),y=i(y,f,v,m,p[u+2],9,-51403784),m=i(m,y,f,v,p[u+7],14,1735328473),v=i(v,m,y,f,p[u+12],20,-1926607734),f=a(f,v,m,y,p[u+5],4,-378558),y=a(y,f,v,m,p[u+8],11,-2022574463),m=a(m,y,f,v,p[u+11],16,1839030562),v=a(v,m,y,f,p[u+14],23,-35309556),f=a(f,v,m,y,p[u+1],4,-1530992060),y=a(y,f,v,m,p[u+4],11,1272893353),m=a(m,y,f,v,p[u+7],16,-155497632),v=a(v,m,y,f,p[u+10],23,-1094730640),f=a(f,v,m,y,p[u+13],4,681279174),y=a(y,f,v,m,p[u+0],11,-358537222),m=a(m,y,f,v,p[u+3],16,-722521979),v=a(v,m,y,f,p[u+6],23,76029189),f=a(f,v,m,y,p[u+9],4,-640364487),y=a(y,f,v,m,p[u+12],11,-421815835),m=a(m,y,f,v,p[u+15],16,530742520),v=a(v,m,y,f,p[u+2],23,-995338651),f=c(f,v,m,y,p[u+0],6,-198630844),y=c(y,f,v,m,p[u+7],10,1126891415),m=c(m,y,f,v,p[u+14],15,-1416354905),v=c(v,m,y,f,p[u+5],21,-57434055),f=c(f,v,m,y,p[u+12],6,1700485571),y=c(y,f,v,m,p[u+3],10,-1894986606),m=c(m,y,f,v,p[u+10],15,-1051523),v=c(v,m,y,f,p[u+1],21,-2054922799),f=c(f,v,m,y,p[u+8],6,1873313359),y=c(y,f,v,m,p[u+15],10,-30611744),m=c(m,y,f,v,p[u+6],15,-1560198380),v=c(v,m,y,f,p[u+13],21,1309151649),f=c(f,v,m,y,p[u+4],6,-145523070),y=c(y,f,v,m,p[u+11],10,-1120210379),m=c(m,y,f,v,p[u+2],15,718787259),v=c(v,m,y,f,p[u+9],21,-343485551),f=r(f,l),v=r(v,d),m=r(m,h),y=r(y,g);return n(f)+n(v)+n(m)+n(y)}}class s{static Delay(e){return new Promise((t=>setTimeout(t,e)))}}function o(e){return new Map(Object.entries(e))}},2990:(e,t,n)=>{n.d(t,{Wn:()=>u});var r=n(1061),s=n(9315),o=n(4756),i=n(161),a=n(9595),c=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class u{constructor(){this._extensionInfoCache=new Map,this._protocolInfoCache=new Map,this._isExtensionInfoInitialized=!1,this._semaphore=new s.z(1)}GetServiceName(){return u.ServiceName}GetExtensionsInfoAsync(e){return c(this,arguments,void 0,(function*(e,t=!1){var n;null===(n=i.h.Log)||void 0===n||n.Debug(u.ServiceName,`Getting ExtensionsInfo, data loaded from cache: ${!t}`);var r=yield this._semaphore.AcquireAsync();if(this._isExtensionInfoInitialized&&!t||(yield this.GetExtensionInfoFromControllerAsync()),r.Release(),0==[...this._extensionInfoCache.values()].length)return[];if(null!=e){const t=this._extensionInfoCache.get(e);if(null==t)throw new h("Cannot get ExtensionsInfo, extension not found.");return[t]}return[...this._extensionInfoCache.values()]}))}GetProtocolInfoAsync(e){return c(this,arguments,void 0,(function*(e,t=!1,n=!1){var r;if(null===(r=i.h.Log)||void 0===r||r.Debug(u.ServiceName,`Getting ProtocolInfo, data loaded from cache: ${!t}`),t&&(yield this.GetProtocolExtensionInfoFromControllerAsync()),0!=[...this._protocolInfoCache.values()].length||n){if(0==[...this._protocolInfoCache.values()].length)throw new h("Cannot get ProtocolInfo, controler may return empty list of Extensions or other unknown error occurs!")}else yield this.GetProtocolInfoAsync(e,!0,!0);if(null!=e){const t=this._protocolInfoCache.get(e);if(null==t)throw new h("Cannot get ProtocolInfo, extension not found.");return[t]}return[...this._protocolInfoCache.values()]}))}GetExtensionInfoFromControllerAsync(){return c(this,void 0,void 0,(function*(){const e=new l,t=yield r.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(e,16e3,!1);if(null==t||null==t.Status)throw new h("Cannot get ExtensionsInfo from controller, controller response does not contain data!");if(t.Status!=o.nW.OK)throw new h(`Cannot get ExtensionsInfo from controller! Response status: ${t.Status}`);if(null==t.Data)throw new h("Cannot get ExtensionsInfo from controller, controller response does not contain data!");t.Data.forEach((e=>{this._extensionInfoCache.set(e.ExtensionGuid,e)})),0!=[...this._extensionInfoCache.values()].length&&(this._isExtensionInfoInitialized=!0)}))}GetProtocolExtensionInfoFromControllerAsync(){return c(this,void 0,void 0,(function*(){var e;const t=new d,n=yield r.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(t,16e3,!1);if(null==n||null==n.Status)throw new h("Cannot get ProtocolInfo from controller, controller response does not contain data!");switch(n.Status){case o.nW.OK:if(null==n.Data)throw new h("Cannot get ProtocolInfo from controller, controller response does not contain data!");n.Data.forEach((e=>{this._protocolInfoCache.set(e.PublicGuid,e)}));break;case o.nW.ResourceDoesNotExists:null===(e=i.h.Log)||void 0===e||e.Debug(u.ServiceName,"Cannot get ProtocolInfo from controller, controller software does not implement this yet, update controller to the newest software!");break;default:throw new h(`Cannot get ProtocolInfo from controller! Response status: ${n.Status}`)}}))}}u.ServiceName="StatisticsInfoService";class l extends o.CP{constructor(){super(),this.Resource="/controller/extensions/",this.Method=o.IT.Get}}class d extends o.CP{constructor(){super(),this.Resource="/controller/protocols/",this.Method=o.IT.Get}}class h extends Error{constructor(e){super(e),this.message=e,this.name="CannotGetExtensions"}}},3386:(e,t,n)=>{n.d(t,{u:()=>y});var r,s=n(8517);!function(e){e.CannotExportConfiguration="CannotExportConfiguration"}(r||(r={}));var o=n(5973),i=n(1061),a=n(9595),c=n(5329),u=n(4756),l=n(4665),d=n(4506),h=n(2824),g=n(2990),p=n(8069),f=n(6823),v=n(161),m=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class y{GetServiceName(){return y.ServiceName}constructor(){this._connection=null,this._session=null,this._localStorage=null,this._onEnteredConfigurationEvent=new s.J,this._onExitedConfigurationEvent=new s.J,this._onConfigurationTimeCheckedEvent=new o.r,this._configurationTime=new Date,this._appEnteredConfigurationMode=!1,this._didConfigurationChange=!1,this._synchronizationTaskCompletionSource=new Promise((e=>{i.j.Get(c.Q.ServiceName).OnUserLoggedInEvent().Subscribe((t=>m(this,void 0,void 0,(function*(){this._didConfigurationChange=yield this.CheckIfConfigurationHasChangedAsync(),this._didConfigurationChange&&i.j.Get(d.C.ServiceName).ClearCache(),e()}))))})),this._connection=i.j.Get(a.G.ServiceName),this._session=i.j.Get(c.Q.ServiceName),this._localStorage=i.j.Get(l.s.ServiceName),this._connection.SubscribeTo("/info/configuration/mode/entry",(e=>{i.j.Get(d.C.ServiceName).ClearCache(),this._appEnteredConfigurationMode||this._onEnteredConfigurationEvent.Invoke()})),this._connection.SubscribeTo("/info/configuration/mode/exit",(e=>{i.j.Get(d.C.ServiceName).ClearCache(),this._appEnteredConfigurationMode||this._onExitedConfigurationEvent.Invoke()}))}ImportControllerConfigurationAsync(e){return m(this,void 0,void 0,(function*(){var t,n,r;let s=yield e.text(),o=this.SplitStringBySize(s),i=new w("");i.Status=u.nW.MultiDataResponseStart;let a=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(i,6e3,!1);if(void 0===a||(null==a?void 0:a.Status)!=u.nW.OK)return u.nW.Error;for(const e of o){let t=new w(e);t.Status=u.nW.MultiDataResponse;let r=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(t,6e3,!1);if(void 0===r||(null==r?void 0:r.Status)!=u.nW.OK)return u.nW.Error}i.Status=u.nW.MultiDataResponseStop;let c=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(i,12e4,!1);return void 0===c||(null==c?void 0:c.Status)!=u.nW.OK?u.nW.Error:u.nW.OK}))}SplitStringBySize(e,t=1e5){const n=Math.floor(t/2),r=[];let s=0;for(;s<e.length;){let o=e.slice(s,s+n);for(;new Blob([o]).size>t;)o=o.slice(0,-1);r.push(o),s+=o.length}return r}GetControllerSystemTimeAsync(){return m(this,void 0,void 0,(function*(){var e,t;try{var n=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new I,8e3,!1);return null==n||null==n.Status?u.nW.Error:n.Status!=u.nW.OK?n.Status:null==n.Data?u.nW.ResourceIsNotAvailable:new Date(n.Data)}catch(e){return null===(t=v.h.Log)||void 0===t||t.Error(y.ServiceName,`Cannot get current controller time! ${e}`),u.nW.FatalError}}))}SetControllerSystemTimeAsync(e){return m(this,void 0,void 0,(function*(){var t,n;try{var r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new E(e.toISOString()),8e3,!1);return null==r||null==r.Status?u.nW.Error:r.Status}catch(e){return null===(n=v.h.Log)||void 0===n||n.Error(y.ServiceName,`Cannot set current controller time! ${e}`),u.nW.FatalError}}))}StartNtpTimeSynchronizationAsync(){return m(this,void 0,void 0,(function*(){var e,t;try{var n=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new R,8e3,!1);return null==n||null==n.Status?u.nW.Error:n.Status}catch(e){return null===(t=v.h.Log)||void 0===t||t.Error(y.ServiceName,`Cannot set current controller time! ${e}`),u.nW.FatalError}}))}FactoryResetAsync(e){return m(this,void 0,void 0,(function*(){var t,n;try{i.j.Get(d.C.ServiceName).ClearCache();var r=null===(n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new _,2e3,!1))||void 0===n?void 0:n.Status;if(r==u.nW.OK){let t=300,n=0,r=100/t,s=setInterval((()=>{n+=r,e(parseFloat(n.toPrecision(1)))}),1e3);return yield h.YZ.Delay(1e3*t),i.j.Get(d.C.ServiceName).ClearCache(),clearInterval(s),u.nW.OK}return r}catch(e){return u.nW.FatalError}}))}RollbackLastUpdateAsync(e){return m(this,void 0,void 0,(function*(){var t,n;try{i.j.Get(d.C.ServiceName).ClearCache();var r=null===(n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new C,2e3,!1))||void 0===n?void 0:n.Status;if(r==u.nW.OK){let t=420,n=0,r=100/t,s=setInterval((()=>{n+=r,e(parseFloat(n.toPrecision(1)))}),1e3);return yield h.YZ.Delay(1e3*t),i.j.Get(d.C.ServiceName).ClearCache(),clearInterval(s),u.nW.OK}return r}catch(e){return u.nW.FatalError}}))}RestartControllerAsync(e){return m(this,void 0,void 0,(function*(){var t,n;try{i.j.Get(d.C.ServiceName).ClearCache();var r=null===(n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new A,2e3,!1))||void 0===n?void 0:n.Status;if(r==u.nW.OK){let t=240,n=0,r=100/t,s=setInterval((()=>{n+=r,e(parseFloat(n.toPrecision(1)))}),1e3);return yield h.YZ.Delay(1e3*t),i.j.Get(d.C.ServiceName).ClearCache(),clearInterval(s),u.nW.OK}return r}catch(e){return u.nW.FatalError}}))}DidCofigurationChangeAsync(){return m(this,void 0,void 0,(function*(){return yield this._synchronizationTaskCompletionSource,Promise.resolve(this._didConfigurationChange)}))}GetLastKnownConfigurationChangeTime(){var e;const t=null===(e=this._localStorage)||void 0===e?void 0:e.Read(this.GetServiceName(),"last_configuration_time");return null!=t?new Date(t):new Date}SaveLastConfigurationChangeTime(e){var t;null===(t=this._localStorage)||void 0===t||t.Save(this.GetServiceName(),"last_configuration_time",e.toString())}EnterConfigurationModeAsync(){return m(this,void 0,void 0,(function*(){var e;this._appEnteredConfigurationMode=!0,i.j.Get(d.C.ServiceName).ClearCache(),yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new T,2e4,!1)}))}ExitConfigurationModeAsync(){return m(this,void 0,void 0,(function*(){var e;this._appEnteredConfigurationMode=!0,i.j.Get(d.C.ServiceName).ClearCache(),yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new D,2e4,!1),i.j.Get(d.C.ServiceName).ClearCache(),this._appEnteredConfigurationMode=!1}))}OnEnteredConfigurationEvent(){return this._onEnteredConfigurationEvent}OnExitedConfigurationEvent(){return this._onExitedConfigurationEvent}OnConfigurationTimeCheckedEvent(){return this._onConfigurationTimeCheckedEvent}GetLastConfigurationChangeTimeAsync(){return m(this,void 0,void 0,(function*(){var e;const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new k,2e4,!1);if(null==t||(null==t?void 0:t.Status)!=u.nW.OK)throw new Error("Failed to get last configuration change time");return this._configurationTime=new Date(t.Data),this._configurationTime}))}CheckIfConfigurationHasChangedAsync(){return m(this,void 0,void 0,(function*(){const e=yield this.GetLastConfigurationChangeTimeAsync();return this.GetLastKnownConfigurationChangeTime().toString()!=e.toString()&&(this.SaveLastConfigurationChangeTime(e),this._onConfigurationTimeCheckedEvent.Invoke(e),i.j.Get(d.C.ServiceName).ClearCache(),!0)}))}CanExportOrImportControllerConfigurationAsync(){return m(this,void 0,void 0,(function*(){try{let e=yield i.j.Get(g.Wn.ServiceName).GetExtensionsInfoAsync(),t=i.j.Get(c.Q.ServiceName).User;return null!=t&&null!=t.AccessLevel&&t.AccessLevel>=p.hx.Admin&&e.any((e=>"f4f0f066-7c43-46c6-a0bd-aedf93903dc0"==e.ExtensionGuid))}catch(e){return!1}}))}ExportControllerConfigurationAsync(){return m(this,void 0,void 0,(function*(){var e;let t=[],n=null;yield null===(e=this._connection)||void 0===e?void 0:e.SendAndHandleResponseAsync(new S,3e4,(e=>{switch(e.Status){case u.nW.MultiDataResponseStart:break;case u.nW.MultiDataResponse:null!=e.Data&&void 0!==e.Data&&t.push(e.Data);break;case u.nW.MultiDataResponseStop:break;case u.nW.Error:case u.nW.FatalError:n=new f.ZR(r.CannotExportConfiguration,"Cannot export configuration! Controller returned error!")}}),!0);let s=JSON.stringify(JSON.parse(t.join("")),null,2);return console.log(s),null!=n?n:i.j.ExportStringAsFileToDownload(this.GetCurrentTimestampedFilename(),s)}))}GetCurrentTimestampedFilename(){var e,t;const n=new Date,r=n.getHours().toString().padStart(2,"0"),s=n.getMinutes().toString().padStart(2,"0"),o=n.getDate().toString().padStart(2,"0"),i=(n.getMonth()+1).toString().padStart(2,"0"),a=n.getFullYear().toString();return`${null===(t=null===(e=this._connection)||void 0===e?void 0:e.GetAuthorizationInfo())||void 0===t?void 0:t.SerialNumber}_${r}-${s}-${o}-${i}-${a}-config.cexp`}}y.ServiceName="ControllerConfigurationService";class w extends u.CP{constructor(e){super(),this.Resource="/configuration/backup/import",this.Method=u.IT.Put,this.Data=e}}class S extends u.CP{constructor(){super(),this.Resource="/configuration/backup/export",this.Method=u.IT.Get}}class A extends u.CP{constructor(){super(),this.Resource="/controller/restart",this.Method=u.IT.Post}}class _ extends u.CP{constructor(){super(),this.Resource="/controller/factory_reset",this.Method=u.IT.Post}}class C extends u.CP{constructor(){super(),this.Resource="/controller/backups/restore/previous",this.Method=u.IT.Post}}class T extends u.CP{constructor(){super(),this.Resource="/system/configuration/mode/entry",this.Method=u.IT.Put}}class D extends u.CP{constructor(){super(),this.Resource="/system/configuration/mode/exit",this.Method=u.IT.Put}}class k extends u.CP{constructor(){super(),this.Resource="/system/configuration/change/time",this.Method=u.IT.Get}}class I extends u.CP{constructor(){super(),this.Resource="/system/time",this.Method=u.IT.Get}}class E extends u.CP{constructor(e){super(),this.Resource="/system/time",this.Method=u.IT.Put,this.Data=e}}class R extends u.CP{constructor(){super(),this.Resource="/system/time/ntp/update",this.Method=u.IT.Put}}},3826:(e,t,n)=>{n.d(t,{B6:()=>ae,BD:()=>Ae,BJ:()=>ye,Bo:()=>Se,CV:()=>oe,Cv:()=>Ce,IP:()=>Pe,IR:()=>be,If:()=>se,JA:()=>ie,K7:()=>Le,KJ:()=>X,L5:()=>Fe,M0:()=>d,My:()=>B,Nl:()=>xe,ON:()=>he,OQ:()=>j,Py:()=>S,QI:()=>r,Qj:()=>ke,R6:()=>ne,Ro:()=>Z,Rq:()=>L,Rv:()=>te,Sd:()=>Be,UF:()=>De,Uj:()=>pe,VH:()=>U,VM:()=>ue,Vk:()=>$e,Vm:()=>Ee,Xp:()=>Oe,b8:()=>ge,cK:()=>_e,dQ:()=>H,f3:()=>we,fX:()=>F,fp:()=>ve,gX:()=>O,l3:()=>Te,l4:()=>M,lD:()=>Q,lo:()=>q,mH:()=>We,mL:()=>$,mV:()=>V,nA:()=>x,nQ:()=>K,nu:()=>Re,q1:()=>W,qV:()=>fe,qr:()=>Ie,rW:()=>ce,r_:()=>Me,re:()=>Y,sk:()=>Ne,tC:()=>z,uk:()=>J,v3:()=>ee,vY:()=>re,wb:()=>de,wr:()=>Ue,x5:()=>me,xb:()=>le,yv:()=>Ge});var r,s,o,i,a,c,u,l,d,h,g,p,f,v,m,y,w,S,A,_,C,T,D,k,I,E,R,N,G,b,P=n(6203);class O{constructor(){this._type="",this._data=null,this._typeAsEnum=P.mQ.Unknown,this._serializedDataWithoutTime=""}get Data(){return this._data}set Data(e){this._data=e;let{Time:t}=e,n=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(n[r[s]]=e[r[s]])}return n}(e,["Time"]);this._serializedDataWithoutTime=JSON.stringify(n)}get Type(){return this._type}set Type(e){this._type=e}get TypeAsEnum(){return this._typeAsEnum}set TypeAsEnum(e){this._typeAsEnum=e}get StatesComparisonData(){return this._serializedDataWithoutTime}}!function(e){e[e.Confident=0]="Confident",e[e.Unconfident=1]="Unconfident"}(r||(r={}));class M extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.ChannelOnOffState,this.Type="ChannelOnOffState",this.Data=e.state}}class U{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=s.Unknown,this.Time=""}}!function(e){e[e.On=0]="On",e[e.Off=1]="Off",e[e.Unknown=2]="Unknown"}(s||(s={})),function(e){e[e.Idle=0]="Idle",e[e.IncomingCall=1]="IncomingCall",e[e.AnsweringCall=2]="AnsweringCall",e[e.Busy=3]="Busy",e[e.NoAnswerToCall=4]="NoAnswerToCall",e[e.Unknown=5]="Unknown"}(o||(o={}));class W extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.OnlineCamera,this.Type="OnlineCameraState",this.Data=e.state}}class x extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.DoorBellState,this.Type="DoorBellState",this.Data=e.state}}class F{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=i.Relased,this.Time=""}}!function(e){e[e.Pressed=0]="Pressed",e[e.Relased=1]="Relased",e[e.PressedAndRelased=2]="PressedAndRelased"}(i||(i={}));class L extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.ReedState,this.Type="ReedState",this.Data=e.state}}class B{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=!1,this.Time=""}}class $ extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindPosition,this.Type="BlindPostionState",this.Data=e.state}GetBlindStatus(){switch(this.Data.Position){case 200:return a.UnableToMove;case 201:return a.MotorOverheatedPleaseWait;default:return a.Working}}}!function(e){e[e.Unknown=0]="Unknown",e[e.Working=1]="Working",e[e.UnableToMove=200]="UnableToMove",e[e.MotorOverheatedPleaseWait=201]="MotorOverheatedPleaseWait"}(a||(a={}));class q{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Position=0,this.RawPosition=0,this.Time=""}}class V extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.RemoteButtonState,this.Type="RemoteButtonState",this.Data=e.state}}class j{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=c.Relased,this.Time=""}}!function(e){e[e.Pressed=1]="Pressed",e[e.Relased=2]="Relased",e[e.PressedAndRelased=3]="PressedAndRelased"}(c||(c={}));class H extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.LightColor,this.Type="LightColorState",this.Data=e.state}}class Q{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.R=0,this.G=0,this.B=0,this.Time=""}}class Z extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.LightWarmth,this.Type="LightWarmthState",this.Data=e.state}}class K{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Temperature=0,this.Time=""}}class Y extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.LightBrightness,this.Type="LightBrightnessState",this.Data=e.state}}class z{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Brightness=0,this.Time=""}}class J extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MeasuredTemperature,this.Type="MeasuredTemperatureState",this.Data=e.state}}class X{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Temperature=0,this.Type=u.InsideTemperature,this.Time=""}}!function(e){e[e.AirTemperature=0]="AirTemperature",e[e.InsideTemperature=1]="InsideTemperature",e[e.OutsideTemperature=2]="OutsideTemperature",e[e.FloorTemperature=3]="FloorTemperature",e[e.SafetyTemperature=4]="SafetyTemperature",e[e.SetTemperature=5]="SetTemperature"}(u||(u={}));class ee extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BatteryState,this.Type="BatteryState",this.Data=e.state}}class te{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=l.Half,this.Percentage=-1,this.Time=""}}!function(e){e[e.Unknown=-1]="Unknown",e[e.Full=0]="Full",e[e.Empty=1]="Empty",e[e.Half=2]="Half",e[e.Percentage=3]="Percentage",e[e.Low=4]="Low",e[e.ExternalPower=5]="ExternalPower"}(l||(l={}));class ne extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MeasuredBrightness,this.Type="MeasuredBrightnessState",this.Data=e.state}}class re{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Brightness=0,this.Time=""}}class se extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MeasuredEnergy,this.Type="MeasuredEnergyState",this.Data=e.state,this.Data.MeasurementParameters=new Map(Object.entries(e.state.MeasurementParameters))}}class oe{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Time="",this.MeasurementParameters=new Map}}!function(e){e.Voltage="Voltage",e.Current="Current",e.PhaseShift="PhaseShift",e.ActivePower="ActivePower",e.ReactivePower="ReactivePower",e.ApparentPower="ApparentPower",e.PowerFactor="PowerFactor",e.ActiveForwardEnergy="ActiveForwardEnergy",e.ActiveReverseEnergy="ActiveReverseEnergy",e.ApparentEnergy="ApparentEnergy",e.ReactiveForwardEnergy="ReactiveForwardEnergy",e.ReactiveReverseEnergy="ReactiveReverseEnergy",e.Frequency="Frequency",e.SPIErrorRate="SPIErrorRate",e.CRCErrorRate="CRCErrorRate",e.Timestamp="Timestamp",e.FailedMeasurementsRate="FailedMeasurementsRate",e.FundamentalActivePower="FundamentalActivePower",e.HarmonicActivePower="HarmonicActivePower"}(d||(d={}));class ie extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MeasuredDistance,this.Type="MeasuredDistanceState",this.Data=e.state}}!function(e){e[e.No=0]="No",e[e.Yes=1]="Yes"}(h||(h={}));class ae extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MovementSensorState,this.Type="MovementSensorState",this.Data=e.state}}class ce{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Intensity=0,this.Movement=g.No,this.Time=""}}!function(e){e[e.No=0]="No",e[e.Yes=1]="Yes"}(g||(g={}));class ue extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindRemoteButtonState,this.Type="BlindRemoteButtonState",this.Data=e.state}}class le{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=p.StopReleased,this.Time=""}}!function(e){e[e.OpenPressed=1]="OpenPressed",e[e.OpenReleased=2]="OpenReleased",e[e.StopPressed=3]="StopPressed",e[e.StopReleased=4]="StopReleased",e[e.ClosePressed=5]="ClosePressed",e[e.CloseReleased=6]="CloseReleased"}(p||(p={}));class de extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.FacadeRemoteButtonState,this.Type="FacadeRemoteButtonState",this.Data=e.state}}class he{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=f.StopReleased,this.Time=""}}!function(e){e[e.OpenPressed=1]="OpenPressed",e[e.OpenReleased=2]="OpenReleased",e[e.StopPressed=3]="StopPressed",e[e.StopReleased=4]="StopReleased",e[e.ClosePressed=5]="ClosePressed",e[e.CloseReleased=6]="CloseReleased"}(f||(f={}));class ge extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.SignalStrength,this.Type="SignalStrenghtState",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.Excellent=1]="Excellent",e[e.Good=2]="Good",e[e.Acceptable=3]="Acceptable",e[e.Low=4]="Low",e[e.Terrible=5]="Terrible",e[e.NoLink=6]="NoLink"}(v||(v={}));class pe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.GatePosition,this.Type="GatePositionState",this.Data=e.state}}class fe{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.PositionType=m.Unknown,this.Position=0,this.Time=""}}!function(e){e[e.Unknown=0]="Unknown",e[e.Open=1]="Open",e[e.PartiallyOpen=2]="PartiallyOpen",e[e.Close=3]="Close",e[e.On=4]="On",e[e.Off=5]="Off",e[e.Percentage=6]="Percentage"}(m||(m={}));class ve extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.GatewayPosition,this.Type="GatewayPositionState",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.Open=1]="Open",e[e.PartiallyOpen=2]="PartiallyOpen",e[e.Close=3]="Close",e[e.On=4]="On",e[e.Off=5]="Off"}(y||(y={}));class me extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.GateControllerHealth,this.Type="GateControllerHealthState",this.Data=e.state}}!function(e){e[e.Unknown=-1]="Unknown",e[e.Inactive=0]="Inactive",e[e.Active=1]="Active",e[e.UnconnectedOrMalfunction=2]="UnconnectedOrMalfunction"}(w||(w={}));class ye extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindCalibration,this.Type="BlindCalibrationState",this.Data=e.state}}class we{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.CalibrationStatus=S.AutoLernIdle,this.Time=""}}!function(e){e[e.AutoLernIdle=0]="AutoLernIdle",e[e.AutoLernInProgress=1]="AutoLernInProgress",e[e.AutoLernSuccessfull=2]="AutoLernSuccessfull",e[e.AutoLernCancelled=4]="AutoLernCancelled"}(S||(S={}));class Se extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.HumiditySensorState,this.Type="HumiditySensorState",this.Data=e.state}}class Ae{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Type=A.AirHumidity,this.Humidity=0,this.Time=""}}!function(e){e[e.AirHumidity=0]="AirHumidity",e[e.InsideHumidity=1]="InsideHumidity",e[e.OutsideHumidity=2]="OutsideHumidity",e[e.SafetyHumidity=3]="SafetyHumidity",e[e.SetHumidity=4]="SetHumidity"}(A||(A={}));class _e extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.VibrationSensorState,this.Type="VibrationSensorState",this.Data=e.state}}!function(e){e[e.No=0]="No",e[e.Yes=1]="Yes"}(_||(_={}));class Ce extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BinarySensorState,this.Type="BinarySensorState",this.Data=e.state}}class Te{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=C.Low,this.Time=""}}!function(e){e[e.High=1]="High",e[e.Low=0]="Low"}(C||(C={}));class De extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.ConfigurationState,this.Type="ConfigurationState",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.OngoingConfiguration=1]="OngoingConfiguration",e[e.NotConfigured=2]="NotConfigured",e[e.Configured=3]="Configured",e[e.PartiallyConfigured=4]="PartiallyConfigured"}(T||(T={}));class ke extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindOpenCloseTime,this.Type="BlindOpenCloseTimeState",this.Data=e.state}}class Ie extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.OvercurrentProtectionState,this.Type="OvercurrentProtectionState",this.Data=e.state}}class Ee extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.OvercurrentProtectionThreshold,this.Type="OvercurrentProtectionThresholdState",this.Data=e.state}}class Re extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.FacadePosition,this.Type="FacadePositionState",this.Data=e.state}}class Ne extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.FacadeType,this.Type="FacadeTypeState",this.Data=e.state}}class Ge extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.CurrentWindThreshold,this.Type="CurrentWindThresholdState",this.Data=e.state}}class be{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.WindThreshold=D.Unknown,this.Time=""}}!function(e){e[e.Unknown=0]="Unknown",e[e.Below=1]="Below",e[e.Exceeded=2]="Exceeded",e[e.Inactive=3]="Inactive"}(D||(D={}));class Pe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.CurrentLightThreshold,this.Type="CurrentLightThresholdState",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.Below=1]="Below",e[e.Exceeded=2]="Exceeded"}(k||(k={}));class Oe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.WindSpeedState,this.Type="WindSpeedState",this.Data=e.state}}class Me{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Value=0,this.Time=""}}class Ue extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.FloodSensorState,this.Type="FloodSensorState",this.Data=e.state}}class We{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=I.NoFloodDetected,this.Time=""}}!function(e){e[e.FloodDetected=1]="FloodDetected",e[e.NoFloodDetected=0]="NoFloodDetected"}(I||(I={})),function(e){e[e.AirHumidity=0]="AirHumidity",e[e.InsideHumidity=1]="InsideHumidity",e[e.OutsideHumidity=2]="OutsideHumidity",e[e.SafetyHumidity=3]="SafetyHumidity",e[e.SetHumidity=4]="SetHumidity"}(E||(E={}));class xe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.PressureSensorState,this.Type="PressureSensorState",this.Data=e.state}}class Fe{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Pressure=0,this.Time="",this.PressureType=R.OutsidePressure}}!function(e){e[e.InsidePressure=0]="InsidePressure",e[e.OutsidePressure=1]="OutsidePressure",e[e.SetPressure=2]="SetPressure"}(R||(R={})),function(e){e[e.Facade90=0]="Facade90",e[e.Facade180=1]="Facade180"}(N||(N={}));class Le extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.TamperProtectionState,this.Type="TamperProtection",this.Data=e.state}}!function(e){e[e.OK=0]="OK",e[e.Breach=1]="Breach"}(G||(G={}));class Be extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.LightRGBWState,this.Type="LightRGBW",this.Data=e.state}}class $e extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindErrorState,this.Type="BlindError",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.ObstacleDetected=1]="ObstacleDetected",e[e.MotorFailure=2]="MotorFailure"}(b||(b={}))},4071:(e,t,n)=>{n.d(t,{M:()=>r});class r{constructor(){this.ResourceGuid="",this.Data=null,this.IsGlobal=!1,this.InsertTime=new Date}}},4268:(e,t,n)=>{var r;n.d(t,{g:()=>s}),function(e){e[e.Debug=0]="Debug",e[e.Info=1]="Info",e[e.Warning=2]="Warning",e[e.Error=3]="Error",e[e.None=4]="None"}(r||(r={}));class s{constructor(){this._blockedServices=[],this._logLevel=r.Debug,void 0!==window.loglevel&&null!==window.loglevel&&(this._logLevel=window.loglevel),window.logger=this}EnableStackTrace(){s.DoesThrowStackTrace=!0}DisableStackTrace(){s.DoesThrowStackTrace=!1}IsBlocked(e){return void 0!==e&&this._blockedServices.any((t=>t==e))}DisableLogsFrom(e){this._blockedServices.all((t=>t!=e))&&this._blockedServices.push(e),this.Debug(s.ServiceName,`Disabling logs from ${e}`)}EnableLogsFrom(e){this._blockedServices.any((t=>t==e))&&(this._blockedServices=this._blockedServices.where((t=>t!=e)).toArray()),this.Debug(s.ServiceName,`Enaabling logs from ${e}`)}get LogLevel(){return this._logLevel}set LogLevel(e){this._logLevel=e}GetServiceName(){return s.ServiceName}GetTimeStamp(){const e=new Date;return`${e.getHours()}:${e.getMinutes()}:${e.getSeconds()}.${e.getMilliseconds()} | `}Warning(e,t){switch(this._logLevel){case r.Warning:case r.Info:case r.Debug:break;case r.None:default:return}void 0===e||this.IsBlocked(e)||null!=e&&(null==t?console.warn(`${this.GetTimeStamp()}[WARN] ${e}`):console.warn(`${this.GetTimeStamp()}[WARN] [${e}] ${t}`))}Error(e,t){switch(this._logLevel){case r.Warning:case r.Info:case r.Debug:case r.Error:break;case r.None:default:return}null!=e&&(null==t?console.error(`${this.GetTimeStamp()}[ERROR] ${e}`):console.error(`${this.GetTimeStamp()}[ERROR] [${e}] ${t}`))}Info(e,t){switch(this._logLevel){case r.Info:case r.Debug:break;case r.None:default:return}void 0===e||this.IsBlocked(e)||null!=e&&(null==t?console.info(`${this.GetTimeStamp()}[INFO] ${e}`):console.info(`${this.GetTimeStamp()}[INFO] [${e}] ${t}`))}Debug(e,t){switch(this._logLevel){case r.Debug:break;case r.None:default:return}void 0===e||this.IsBlocked(e)||null!=e&&(null==t?console.debug(`${this.GetTimeStamp()}[DEBUG] ${e}`):s.DoesThrowStackTrace||!0===window.stacktrace?console.debug(`${this.GetTimeStamp()}[DEBUG] [${e}] ${t} \nstack:\n${(new Error).stack}}`):console.debug(`${this.GetTimeStamp()}[DEBUG] [${e}] ${t}`))}Log(e,t){this._logLevel!==r.None&&(void 0===e||this.IsBlocked(e)||null!=e&&(null==t?console.log(`${this.GetTimeStamp()}[LOG] ${e}`):console.log(`${this.GetTimeStamp()}[LOG] [${e}] ${t}`)))}}s.ServiceName="LoggerService",s.DoesThrowStackTrace=!1},4506:(e,t,n)=>{n.d(t,{C:()=>a});var r=n(1061),s=n(4756),o=n(4665),i=n(4268);class a{constructor(){this._log=r.j.Get(i.g.ServiceName),a._localStorageService=r.j.Get(o.s.ServiceName)}GetServiceName(){return a.ServiceName}GetResourceName(e){return`${e.Resource}_${e.Method}`}Cache(e){var t;e.Status===s.nW.OK&&(this._log.Debug(a.ServiceName,`Caching request: ${e.Resource} ${e.Method}`),null===(t=a._localStorageService)||void 0===t||t.Save(this.GetServiceName(),this.GetResourceName(e),e))}GetCache(e){var t;let n=null===(t=a._localStorageService)||void 0===t?void 0:t.Read(this.GetServiceName(),this.GetResourceName(e));return null!=n&&this._log.Debug(a.ServiceName,`Got request response from cache: ${e.Resource} ${e.Method}`),n}ClearCache(){var e;null===(e=a._localStorageService)||void 0===e||e.DropStorage(this.GetServiceName()),this._log.Debug(a.ServiceName,`Clearing cache for ${this.GetServiceName()}`)}Remove(e){var t;null===(t=a._localStorageService)||void 0===t||t.Remove(this.GetServiceName(),this.GetResourceName(e)),this._log.Debug(a.ServiceName,`Clearing cache for cache: ${e.Resource} ${e.Method}`)}}a._localStorageService=null,a.ServiceName="WebApiCacheService"},4637:(e,t,n)=>{n.d(t,{OW:()=>r,Z:()=>s,eS:()=>o,kD:()=>a,lb:()=>i});class r{constructor(){this.DeviceGuid="",this.CurrentVersion="",this.NewVersion=""}}class s{constructor(){this.UpdatesAvailable=[],this.UpdatesNotAvailable=[]}}class o{constructor(){this.UpdatedResourceName=new Map,this.UpdateDescription=new Map,this.UpdateCreationTime=null,this.Version="",this.UpdateChannel=""}}class i{constructor(){this.Resource="",this.Version="",this.Type=null}}var a;!function(e){e[e.RadioUpdate=0]="RadioUpdate",e[e.SoftwareUpdate=1]="SoftwareUpdate"}(a||(a={}))},4665:(e,t,n)=>{n.d(t,{s:()=>o});var r=n(161),s=n(1061);class o{GetServiceName(){return o.ServiceName}GetResourceName(e,t){return`_exalus_${s.j.WorksInContextOf}_${e}_${t}`}Remove(e,t){localStorage.removeItem(this.GetResourceName(e,t))}DropStorage(e){let t=`_exalus_${e}`;for(const e in localStorage)(null==e?void 0:e.startsWith(t))&&localStorage.removeItem(e)}Save(e,t,n){localStorage.setItem(this.GetResourceName(e,t),JSON.stringify(n))}Read(e,t){var n;try{let n=this.GetResourceName(e,t),r=localStorage.getItem(n);return null==r?null:JSON.parse(r)}catch(s){return null===(n=r.h.Log)||void 0===n||n.Error(o.ServiceName,`Exception has occurred while reading ${this.GetResourceName(e,t)}`),null}}}o.ServiceName="LocalStorageService"},4740:(e,t,n)=>{n.d(t,{q:()=>r});class r{static NewGuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}}},4756:(e,t,n)=>{n.d(t,{CP:()=>i,IT:()=>s,nW:()=>r});var r,s,o=n(2824);class i{constructor(){this.TransactionId=o.M0.GenerateUUID()}}!function(e){e[e.OK=0]="OK",e[e.UnknownError=1]="UnknownError",e[e.FatalError=2]="FatalError",e[e.WrongData=3]="WrongData",e[e.ResourceDoesNotExists=4]="ResourceDoesNotExists",e[e.NoPermissionToPerformThisOperation=5]="NoPermissionToPerformThisOperation",e[e.SessionHasAlreadyLoggedOnUser=6]="SessionHasAlreadyLoggedOnUser",e[e.OperationNotPermitted=7]="OperationNotPermitted",e[e.NoPermissionsToCallGivenResource=8]="NoPermissionsToCallGivenResource",e[e.ResourceIsNotAvailable=9]="ResourceIsNotAvailable",e[e.Error=10]="Error",e[e.NoData=11]="NoData",e[e.NotSupportedMethod=12]="NotSupportedMethod",e[e.UserIsNotLoggedIn=13]="UserIsNotLoggedIn",e[e.MultiDataResponseStart=14]="MultiDataResponseStart",e[e.MultiDataResponse=15]="MultiDataResponse",e[e.MultiDataResponseStop=16]="MultiDataResponseStop"}(r||(r={})),function(e){e[e.Get=0]="Get",e[e.Post=1]="Post",e[e.Delete=2]="Delete",e[e.Put=3]="Put",e[e.Options=4]="Options",e[e.Head=5]="Head"}(s||(s={}))},4824:(e,t,n)=>{n.d(t,{KH:()=>m,OA:()=>h,tg:()=>r});var r,s=n(1966),o=n(1061),i=n(9315),a=n(4756),c=n(9595),u=n(6053),l=n(161),d=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class h{constructor(){this._services=new Map,this._runtimeInfo=new g,this._hardwareInfo=new f,this._semaphore=new i.z(1),this._isRuntimeInfoInitialized=!1,this._isHardwareInfoInitialized=!1}GetServiceName(){return h.ServiceName}RegisterUpdatesProvider(e){var t;null===(t=l.h.Log)||void 0===t||t.Debug(h.ServiceName,`Registering new update provider: ${e.GetUpdateProviderName()}`),this._services.set(e.GetUpdateProviderName(),e)}GetUpdatesProviderAsync(e){return d(this,void 0,void 0,(function*(){var t;null===(t=l.h.Log)||void 0===t||t.Debug(h.ServiceName,`Getting update provider [${e}] by GetUpdateProviderAsync<T>()`);const n=this._services.get(e);if(null==n)throw new u.Zt("Cannot get update provider! Requested update provider has not been registered.");return n}))}GetUpdatesProvidersAsync(e){return d(this,void 0,void 0,(function*(){var t;null===(t=l.h.Log)||void 0===t||t.Debug(h.ServiceName,`Getting update providers with type ${e} by GetUpdateProvidersAsync<T>()`);let n=[];if(n=[...this._services.values()].filter((t=>t.ProviderType==e)),0==n.length)throw new u.Zt("Cannot get update providers! Requested update providers has not been registered.");return n}))}GetUpdatesProvidersByProtocolAsync(e,t,n){return d(this,void 0,void 0,(function*(){var r;if(new RegExp("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$").test(e)){null===(r=l.h.Log)||void 0===r||r.Debug(h.ServiceName,`Getting update providers with protocol guid: [${e}] by GetUpdateProvidersByProtocolAsync<T>()`);let s=[];if(s=null!=n?[...this._services.values()].filter((r=>r.ProtocolGuid==e&&r.ProviderType==t&&r.AvailableExtensionVersion==n)):[...this._services.values()].filter((n=>n.ProtocolGuid==e&&n.ProviderType==t)),0==s.length)throw new u.Zt("Cannot get update providers! Requested update providers has not been registered.");return s}throw new u.Zt("Cannot get update providers! Bad parameters.")}))}GetUpdatesProvidersByExtensionAsync(e,t,n){return d(this,void 0,void 0,(function*(){var r;if(new RegExp("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$").test(e)){null===(r=l.h.Log)||void 0===r||r.Debug(h.ServiceName,`Getting update providers with extension guid: [${e}] by GetUpdateProvidersByExtensionAsync<T>()`);let s=[];if(s=null!=n?[...this._services.values()].filter((r=>r.ExtensionGuid==e&&r.ProviderType==t&&r.AvailableExtensionVersion==n)):[...this._services.values()].filter((n=>n.ExtensionGuid==e&&n.ProviderType==t)),0==s.length)throw new u.Zt("Cannot get update providers! Requested update providers has not been registered.");return s}throw new u.Zt("Cannot get update providers! Bad parameters.")}))}GetSoftwareRuntimeInfoAsync(){return d(this,arguments,void 0,(function*(e=!1){var t=yield this._semaphore.AcquireAsync();return!this._isRuntimeInfoInitialized||e?(yield this.GetRuntimeControllerInfoAsync(),t.Release(),this._runtimeInfo):(t.Release(),this._runtimeInfo)}))}GetRuntimeControllerInfoAsync(){return d(this,void 0,void 0,(function*(){var e;null===(e=l.h.Log)||void 0===e||e.Debug(h.ServiceName,"Getting runtime version info from controller.");try{const e=yield o.j.Get(c.G.ServiceName).SendAndWaitForResponseAsync(new p,16e3,!1);if(null==e||null==e.Status)throw new m('Cannot get runtime info, controller response result is empty."',r.EmptyResponse);if(e.Status!=a.nW.OK)throw new m(`Cannot get runtime info, controller responded with status ${e.Status}.`,r.WrongResponseStatus);if(null==e.Data)throw new m("Cannot get runtime info, controller responded with status OK but response does not contains data.",r.NoDataInResponse);this._runtimeInfo=e.Data,this._isRuntimeInfoInitialized=!0}catch(e){throw e instanceof s.MU?new m("Cannot get runtime info, controller response timeout.",r.Timeout):e}}))}GetHardwareInfoAsync(){return d(this,arguments,void 0,(function*(e=!1){return!this._isHardwareInfoInitialized||e?(yield this.GetHardwareControllerInfoAsync(),this._hardwareInfo):this._hardwareInfo}))}GetHardwareControllerInfoAsync(){return d(this,void 0,void 0,(function*(){var e;null===(e=l.h.Log)||void 0===e||e.Debug(h.ServiceName,"Getting hardware info from controller.");const t=yield o.j.Get(c.G.ServiceName).SendAndWaitForResponseAsync(new v,8e3,!1);if(null==t||null==t.Status)throw new m('Cannot get hardware info, controller response result is empty."',r.EmptyResponse);if(t.Status!=a.nW.OK)throw new m(`Cannot get hardware info, controller responded with status ${t.Status}.`,r.WrongResponseStatus);if(null==t.Data)throw new m("Cannot get hardware info, controller responded with status OK but response does not contains data.",r.NoDataInResponse);this._hardwareInfo=t.Data,this._isRuntimeInfoInitialized=!0}))}}h.ServiceName="UpdateProvider";class g{constructor(){this.BaseLinuxVersion="",this.BaseMonoVersion="",this.RuntimeVersion="",this.UpdateChannel="",this.SoftwareVersion=""}}class p extends a.CP{constructor(){super(),this.Resource="/controller/software/info",this.Method=a.IT.Get}}class f{constructor(){this.GetControllerHardwareVersion=0,this.DevicePIN="",this.GetControllerSerialNumber="",this.HostnamePrefix="",this.DefaultStaticIpAddress="",this.GetAvailableHardware=[],this.ControllerSecret=""}}class v extends a.CP{constructor(){super(),this.Resource="/controller/hardware/info",this.Method=a.IT.Get}}class m extends Error{constructor(e,t){super(e),this.message=e,this.code=0,this.name="CannotGetRuntimeInfo",this.code=t}}!function(e){e[e.Unknown=0]="Unknown",e[e.EmptyResponse=1]="EmptyResponse",e[e.NoDataInResponse=2]="NoDataInResponse",e[e.WrongResponseStatus=3]="WrongResponseStatus",e[e.Timeout=4]="Timeout"}(r||(r={}))},5186:(e,t,n)=>{n.d(t,{K:()=>i});var r=n(1061),s=n(8069),o=n(6094);class i{constructor(){this._guid="",this._cloudGuid="",this._name="",this._surname="",this._phone="",this._email="",this._isAccountOnline=!0,this._isAccountActive=!0,this._isAccountBanned=!0,this._notificationChannels=[],this._gender=s.YT.Unknown,this._accessLevel=s.hx.Any,this._localization=s.G4.En_Us,this._softwareVersion=""}get Guid(){return this._guid}set Guid(e){this._guid=e}get CloudGuid(){return this._cloudGuid}set CloudGuid(e){this._cloudGuid=e}get Name(){return this._name}set Name(e){this._name=e}get Surname(){return this._surname}set Surname(e){this._surname=e}get Phone(){return this._phone}set Phone(e){this._phone=e}get AccessLevel(){return this._accessLevel}set AccessLevel(e){this._accessLevel=e}get Email(){return this._email}set Email(e){this._email=e}get IsAccountOnline(){return this._isAccountOnline}set IsAccountOnline(e){this._isAccountOnline=e}get IsActive(){return this._isAccountActive}set IsActive(e){this._isAccountActive=e}get IsBanned(){return this._isAccountBanned}set IsBanned(e){this._isAccountBanned=e}get NotificationChannels(){return this._notificationChannels}set NotificationChannels(e){this._notificationChannels=e}get Gender(){return this._gender}set Gender(e){this._gender=e}get Localization(){return this._localization}set Localization(e){this._localization=e}get SoftwareVersion(){return this._softwareVersion}set SoftwareVersion(e){this._softwareVersion=e}GetUserProfilePictureAsync(){return r.j.Get(o.g.ServiceName).GetUserProfilePictureAsync({Guid:this._guid})}SetUserProfilePictureAsync(e){return r.j.Get(o.g.ServiceName).SetUserProfilePictureAsync({Guid:this._guid},e)}}},5329:(e,t,n)=>{n.d(t,{Q:()=>h});var r,s=n(1061),o=n(9595),i=n(8070),a=n(5973);n(8069),function(e){e[e.Unknown=0]="Unknown",e[e.WrongAuthData=1]="WrongAuthData",e[e.NoResponseFromController=2]="NoResponseFromController",e[e.AuthDisabled=3]="AuthDisabled",e[e.MethodNotSupported=4]="MethodNotSupported"}(r||(r={}));var c=n(4756),u=n(161),l=n(5186),d=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class h{constructor(){this._onUserLoggedInEvent=new a.r,this._onUserLoggedOutEvent=new a.r,this._email="",this._password="",this._authToken="",this._loginTaskCompletionSource=this.CreateSessionCompletionSourceAsync(),this._alreadySubsribedToNetworkEvents=!1,this._user=null}CreateSessionCompletionSourceAsync(){return d(this,void 0,void 0,(function*(){var e;null===(e=u.h.Log)||void 0===e||e.Debug(h.ServiceName,"Creating _loginTaskCompletionSource"),this._loginTaskCompletionSource=new Promise((e=>{this.OnUserLoggedInEvent().Subscribe((t=>{var n;null===(n=u.h.Log)||void 0===n||n.Debug(h.ServiceName,`Logged in as ${t.Name}, completing CreateSessionCompletionSourceAsync()`),e()}))}))}))}RestoreSessionAsync(){return d(this,void 0,void 0,(function*(){var e;null===(e=u.h.Log)||void 0===e||e.Debug(h.ServiceName,`Creating RestoreSessionAsync ${this._email} ${this._password}`),void 0!==this._user&&null!==this._user&&(yield this.UserLogInAsync(this._email,this._password))}))}WaitForSessionCreationAsync(){return d(this,void 0,void 0,(function*(){return this._loginTaskCompletionSource}))}OnUserLoggedInEvent(){return this._onUserLoggedInEvent}OnUserLoggedOutEvent(){return this._onUserLoggedOutEvent}get User(){return this._user}UserLogOutAsync(){return d(this,void 0,void 0,(function*(){var e,t,n=new c.CP;n.Resource="/users/user/logout",n.Method=c.IT.Put,this._email="",this._password="",(yield s.j.Get(o.G.ServiceName).SendAndWaitForResponseAsync(n,2e4,!1)).Status==c.nW.OK?(this._onUserLoggedOutEvent.Invoke(this._user),null===(e=u.h.Log)||void 0===e||e.Debug(h.ServiceName,"User has been logged out.")):null===(t=u.h.Log)||void 0===t||t.Debug(h.ServiceName,"Failed to logout user!")}))}OnConnectionStateChanged(e){return d(this,void 0,void 0,(function*(){switch(e){case i.KN.Disconnected:case i.KN.Failed:break;case i.KN.Connected:s.j.Get(h.ServiceName).RestoreSessionAsync()}}))}AuthorizeAppAsync(e){return d(this,void 0,void 0,(function*(){var t,n,i,a,g=s.j.Get(o.G.ServiceName);const f=yield g.SendAndWaitForResponseAsync(new p(e),2e4,!1);if(f.Status==c.nW.OK&&null!=f.Data){this._authToken=e;var v=new l.K;return this._user=v,v.AccessLevel=f.Data.AccessLevel,v.Email=f.Data.Email,this._email=f.Data.Email,v.Gender=f.Data.Gender,v.Guid=f.Data.Guid,v.IsAccountOnline=f.Data.IsAccountOnline,v.Name=f.Data.Name,v.IsActive=f.Data.IsActive,v.IsBanned=f.Data.IsBanned,v.Phone=f.Data.Phone,v.Surname=f.Data.Surname,v.SoftwareVersion=f.Data.SoftwareVersion,this._alreadySubsribedToNetworkEvents||(this._alreadySubsribedToNetworkEvents=!0,g.OnConnectionStateChangedEvent().Subscribe(this.OnConnectionStateChanged),s.j.Get(o.G.ServiceName).SubscribeTo("/info/users/user/loggedOut",(e=>d(this,void 0,void 0,(function*(){var t,n;null===(t=u.h.Log)||void 0===t||t.Debug(h.ServiceName,`User logged out: ${JSON.stringify(e.Data)}`),null===(n=this._onUserLoggedOutEvent)||void 0===n||n.Invoke(this._user)}))))),null===(t=u.h.Log)||void 0===t||t.Debug(h.ServiceName,`Did logging in succeded?: ${f.Status==c.nW.OK}`),this._onUserLoggedInEvent.Invoke(this._user),v}return f.Status===c.nW.OperationNotPermitted?(null===(n=u.h.Log)||void 0===n||n.Debug(h.ServiceName,`App login response: ${f.Data}`),r.AuthDisabled):f.Status===c.nW.ResourceDoesNotExists?(null===(i=u.h.Log)||void 0===i||i.Debug(h.ServiceName,`App login response: ${f.Data}`),r.MethodNotSupported):(null===(a=u.h.Log)||void 0===a||a.Debug(h.ServiceName,`App login response: ${f.Data}`),r.WrongAuthData)}))}UserLogInAsync(e,t){return d(this,void 0,void 0,(function*(){var n,i,a=s.j.Get(o.G.ServiceName);const g=yield a.SendAndWaitForResponseAsync(new f(e,t),2e4,!1);if(g.Status==c.nW.OK&&null!=g.Data){this._email=e,this._password=t;var p=new l.K;return this._user=p,p.AccessLevel=g.Data.AccessLevel,p.Email=g.Data.Email,p.Gender=g.Data.Gender,p.Guid=g.Data.Guid,p.IsAccountOnline=g.Data.IsAccountOnline,p.Name=g.Data.Name,p.IsActive=g.Data.IsActive,p.IsBanned=g.Data.IsBanned,p.Phone=g.Data.Phone,p.Surname=g.Data.Surname,p.SoftwareVersion=g.Data.SoftwareVersion,this._alreadySubsribedToNetworkEvents||(this._alreadySubsribedToNetworkEvents=!0,a.OnConnectionStateChangedEvent().Subscribe(this.OnConnectionStateChanged),s.j.Get(o.G.ServiceName).SubscribeTo("/info/users/user/loggedOut",(e=>d(this,void 0,void 0,(function*(){var t,n;null===(t=u.h.Log)||void 0===t||t.Debug(h.ServiceName,`User logged out: ${JSON.stringify(e.Data)}`),null===(n=this._onUserLoggedOutEvent)||void 0===n||n.Invoke(this._user)}))))),null===(n=u.h.Log)||void 0===n||n.Debug(h.ServiceName,`Did logging in succeded?: ${g.Status==c.nW.OK}`),this._onUserLoggedInEvent.Invoke(this._user),p}return null===(i=u.h.Log)||void 0===i||i.Debug(h.ServiceName,`User login response: ${g.Data}`),r.WrongAuthData}))}GetServiceName(){return h.ServiceName}}h.ServiceName="SessionService";class g{constructor(e,t){this.Email="",this.Password="",this.Email=e,this.Password=t}}class p extends c.CP{constructor(e){super(),this.Data=e,this.Resource="/applications/app/auth",this.Method=c.IT.Put}}class f extends c.CP{constructor(e,t){super(),this.Data=new g(e,t),this.Resource="/users/user/login",this.Method=c.IT.Put}}},5410:(e,t,n)=>{n.d(t,{V:()=>p});var r=n(1061),s=n(4756),o=n(161),i=n(2824),a=n(3386),c=n(9595),u=n(6823),l=n(4268),d=n(333),h=n(2558),g=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class p{constructor(){this._imageExistsCaseNumber=0,this._connection=r.j.Get(c.G.ServiceName),this._logger=r.j.Get(l.g.ServiceName)}GetServiceName(){return p.ServiceName}AddPictureAsync(e){return g(this,void 0,void 0,(function*(){var t,n;try{if(e.Base64Image.length*(3/4)>=512e3)return this._logger.Error(p.ServiceName,"Cannot add picture - Base64Imgae size exceeded."),s.nW.WrongData;let r=new Image;const o=new Promise(((t,n)=>{r.src=e.Base64Image,r.onload=function(){t(!0)},setTimeout((()=>t(!1)),5e3)}));if(!(yield o))return this._logger.Error(p.ServiceName,"Cannot add picture - cannot load image - ensure that given base64 string is an image!"),s.nW.WrongData;if(0===r.height||0===r.width)return this._logger.Error(p.ServiceName,"Cannot add picture - cannot read width/height of image - ensure that given base64 string is an image!"),s.nW.WrongData;if(null!=e.Guid&&""!=e.Guid)return this._logger.Error(p.ServiceName,"Cannot add picture - Guid must be empty."),s.nW.WrongData;const a=new v;a.Guid=i.M0.GenerateUUID(),a.DateTime=(new Date).toISOString(),a.ImageType=e.ImageType,a.OwnerGuid=`${e.OwnerGuid}_${e.OwnerIdentity}`,a.Base64Image=e.Base64Image;const c=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new y(a.Guid),8e3,!1);if(null==c||null==c.Status)return this._logger.Error(p.ServiceName,"Cannot add picture - unknown error!"),s.nW.UnknownError;if(c.Status==s.nW.ResourceDoesNotExists){const e=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new A(a),8e3,!1);return null==e||null==e.Status?(this._logger.Error(p.ServiceName,"Cannot add picture - unknown error!"),s.nW.UnknownError):e.Status}return c.Status==s.nW.OK?(this._logger.Warning(p.ServiceName,"Cannot add picture - picture already exists, trying to add with regenerated GUID."),this._imageExistsCaseNumber<2?(this._imageExistsCaseNumber++,this.AddPictureAsync(e)):s.nW.UnknownError):(this._logger.Error(p.ServiceName,"Cannot add picture - cannot get current picture status."),s.nW.Error)}catch(e){return this._logger.Error(p.ServiceName,`Cannot add picture! ${e}`),s.nW.FatalError}}))}EditPictureAsync(e){return g(this,void 0,void 0,(function*(){var t,n,i,c;try{if(""==e.Guid||null==e.Guid)return this._logger.Error(p.ServiceName,"Cannot edit picture - guid is empty."),s.nW.WrongData;if(e.Base64Image.length*(3/4)>=512e3)return this._logger.Error(p.ServiceName,"Cannot edit picture - Base64Imgae size exceeded."),s.nW.WrongData;let u=new Image;const l=new Promise(((t,n)=>{u.src=e.Base64Image,u.onload=function(){t(!0)},setTimeout((()=>t(!1)),5e3)}));if(!(yield l))return this._logger.Error(p.ServiceName,"Cannot edit picture - cannot load image - ensure that given base64 string is an image!"),s.nW.WrongData;if(0===u.height||0===u.width)return this._logger.Error(p.ServiceName,"Cannot edit picture - cannot read width/height of image - ensure that given base64 string is an image!"),s.nW.WrongData;const d=new v;d.DateTime=(new Date).toISOString(),d.ImageType=e.ImageType,d.Base64Image=e.Base64Image,d.Guid=e.Guid,e.Guid.includes("profilePicture")||e.Guid.includes("devices_group")?d.OwnerGuid=e.OwnerGuid:d.OwnerGuid=`${e.OwnerGuid}_${e.OwnerIdentity}`;const h=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new y(d.Guid),8e3,!1);if(null===(n=o.h.Log)||void 0===n||n.Error(p.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! EditPictureAsync()"),r.j.Get(a.u.ServiceName).ExitConfigurationModeAsync(),null==h||null==h.Status)return this._logger.Error(p.ServiceName,"Cannot edit picture - unknown error!"),s.nW.UnknownError;if(h.Status==s.nW.ResourceDoesNotExists)return this._logger.Error(p.ServiceName,"Cannot edit picture - picture not exists."),s.nW.OperationNotPermitted;if(h.Status==s.nW.OK){const e=yield null===(i=this._connection)||void 0===i?void 0:i.SendAndWaitForResponseAsync(new A(d),8e3,!1);return null===(c=o.h.Log)||void 0===c||c.Error(p.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! EditPictureAsync()"),r.j.Get(a.u.ServiceName).ExitConfigurationModeAsync(),null==e||null==e.Status?(this._logger.Error(p.ServiceName,"Cannot edit picture - unknown error!"),s.nW.UnknownError):e.Status}return this._logger.Error(p.ServiceName,"Cannot edit picture - cannot get current picture status."),s.nW.Error}catch(e){return this._logger.Error(p.ServiceName,`Cannot edit picture! ${e}`),s.nW.FatalError}}))}DeletePictureAsync(e){return g(this,void 0,void 0,(function*(){var t,n;try{if(""==e.Guid||null==e.Guid)return this._logger.Error(p.ServiceName,"Cannot delete picture - guid is empty."),s.nW.WrongData;const i=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new _(e.Guid),8e3,!1);return null===(n=o.h.Log)||void 0===n||n.Error(p.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! DeletePictureAsync()"),r.j.Get(a.u.ServiceName).ExitConfigurationModeAsync(),null==i||null==i.Status?(this._logger.Error(p.ServiceName,"Cannot delete picture - unknown error!"),s.nW.UnknownError):i.Status}catch(e){return this._logger.Error(p.ServiceName,`Cannot delete picture! ${e}`),s.nW.FatalError}}))}GetPicturesInfoAsync(){return g(this,void 0,void 0,(function*(){var e;try{const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new w,8e3,!1);return null==t||null==t.Status?(this._logger.Error(p.ServiceName,"Cannot get pictures info - unknown error!"),new u.ZR(s.nW.UnknownError,"NoDataInResult")):t.Status!=s.nW.OK?(this._logger.Error(p.ServiceName,`Cannot get pictures info - controler responded with status ${t.Status}.`),new u.ZR(t.Status,"UnknownReason")):null==t.Data?(this._logger.Error(p.ServiceName,"Cannot get pictures info - controler responded with OK, but no data in result.}."),new u.ZR(s.nW.UnknownError,"NoDataInResult")):t.Data.map((e=>{const t=new m;return t.DateTime=e.DateTime,t.Guid=e.Guid,t.OwnerGuid=e.OwnerGuid,-1!=e.OwnerGuid.indexOf("_")?(t.OwnerGuid=e.OwnerGuid.substring(0,e.OwnerGuid.indexOf("_")),t.OwnerIdentity=e.OwnerGuid.substring(e.OwnerGuid.indexOf("_")+1)):e.Guid.includes("profilePicture")?(t.OwnerIdentity=e.Guid.substring(e.Guid.indexOf("_")+1),t.OwnerGuid=e.OwnerGuid):e.Guid.includes("devices_group")?(t.OwnerIdentity=e.Guid.substring(0,e.Guid.lastIndexOf("_")),t.OwnerGuid=e.OwnerGuid):(t.OwnerGuid=e.OwnerGuid,t.OwnerIdentity=""),t}))}catch(e){return this._logger.Error(p.ServiceName,`Cannot get picture info! ${e}`),new u.ZR(s.nW.FatalError,"ExceptionOccurred")}}))}GetPictureAsync(e){return g(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new y(e),8e3,!1);if(null==n||null==n.Status)return this._logger.Error(p.ServiceName,"Cannot get picture - unknown error!"),new u.ZR(s.nW.UnknownError,"NoDataInResult");switch(n.Status){case s.nW.ResourceDoesNotExists:return new u.ZR(s.nW.ResourceDoesNotExists,"PictureNotFound");case s.nW.OK:if(null==n.Data)return new u.ZR(s.nW.Error,"RespondedWithOKButNoData");const e=new f;return e.Base64Image=n.Data.Base64Image,e.DateTime=n.Data.DateTime,e.ImageType=n.Data.ImageType,e.Guid=n.Data.Guid,-1!=n.Data.OwnerGuid.indexOf("_")?(e.OwnerGuid=n.Data.OwnerGuid.substring(0,n.Data.OwnerGuid.indexOf("_")),e.OwnerIdentity=n.Data.OwnerGuid.substring(n.Data.OwnerGuid.indexOf("_")+1)):n.Data.Guid.includes("profilePicture")?(e.OwnerIdentity=n.Data.Guid.substring(n.Data.Guid.indexOf("_")+1),e.OwnerGuid=n.Data.OwnerGuid):n.Data.Guid.includes("devices_group")?(e.OwnerIdentity=n.Data.Guid.substring(0,n.Data.Guid.lastIndexOf("_")),e.OwnerGuid=n.Data.OwnerGuid):(e.OwnerGuid=n.Data.OwnerGuid,e.OwnerIdentity=""),e;default:return new u.ZR(n.Status,"UnknownReason")}}catch(e){return this._logger.Error(p.ServiceName,`Cannot get picture! ${e}`),new u.ZR(s.nW.FatalError,"ExceptionOccurred")}}))}GetPicturesListAsync(){return g(this,void 0,void 0,(function*(){var e;try{const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new S,8e3,!1);return null==t||null==t.Status?(this._logger.Error(p.ServiceName,"Cannot get pictures - unknown error!"),new u.ZR(s.nW.UnknownError,"NoDataInResult")):t.Status!=s.nW.OK?(this._logger.Error(p.ServiceName,`Cannot get pictures - controler responded with status ${t.Status}.`),new u.ZR(t.Status,"UnknownReason")):null==t.Data?(this._logger.Error(p.ServiceName,"Cannot get pictures - controler responded with OK, but no data in result.}."),new u.ZR(s.nW.UnknownError,"NoDataInResult")):t.Data.map((e=>{const t=new f;return t.Base64Image=e.Base64Image,t.DateTime=e.DateTime,t.Guid=e.Guid,t.ImageType=e.ImageType,-1!=e.OwnerGuid.indexOf("_")?(t.OwnerGuid=e.OwnerGuid.substring(0,e.OwnerGuid.indexOf("_")),t.OwnerIdentity=e.OwnerGuid.substring(e.OwnerGuid.indexOf("_")+1)):e.Guid.includes("profilePicture")?(t.OwnerIdentity=e.Guid.substring(e.Guid.indexOf("_")+1),t.OwnerGuid=e.OwnerGuid):e.Guid.includes("devices_group")?(t.OwnerIdentity=e.Guid.substring(0,e.Guid.lastIndexOf("_")),t.OwnerGuid=e.OwnerGuid):(t.OwnerGuid=e.OwnerGuid,t.OwnerIdentity=""),t}))}catch(e){return this._logger.Error(p.ServiceName,`Cannot get pictures! ${e}`),new u.ZR(s.nW.FatalError,"ExceptionOccurred")}}))}}p.ServiceName="PictureService";class f extends h.V{set DateTime(e){this._dateTime=e}}class v{constructor(){this.Guid="",this.OwnerGuid="",this.Base64Image="",this.ImageType=d.y.Device,this.DateTime=""}}class m{constructor(){this._guid="",this._dateTime="",this._ownerGuid="",this._ownerIdentity=""}get Guid(){return this._guid}get DateTime(){return this._dateTime}get OwnerGuid(){return this._ownerGuid}get OwnerIdentity(){return this._ownerIdentity}set Guid(e){this._guid=e}set DateTime(e){this._dateTime=e}set OwnerGuid(e){this._ownerGuid=e}set OwnerIdentity(e){this._ownerIdentity=e}}class y extends s.CP{constructor(e){super(),this.Resource="/pictures/picture",this.Method=s.IT.Get,this.Data=e}}class w extends s.CP{constructor(){super(),this.Resource="/pictures/info",this.Method=s.IT.Get}}class S extends s.CP{constructor(){super(),this.Resource="/pictures/list",this.Method=s.IT.Get}}class A extends s.CP{constructor(e){super(),this.Resource="/pictures/picture",this.Method=s.IT.Put,this.Data=e}}class _ extends s.CP{constructor(e){super(),this.Resource="/pictures/picture",this.Method=s.IT.Delete,this.Data=e}}},5973:(e,t,n)=>{n.d(t,{r:()=>s});var r=n(161);class s{constructor(){this.handlers=[]}Subscribe(e){this.handlers.push(e)}Unsubscribe(e){this.handlers=this.handlers.filter((t=>t!==e))}Invoke(e){this.handlers.slice(0).forEach((t=>{var n;try{t(e)}catch(e){null===(n=r.h.Log)||void 0===n||n.Error(e)}}))}}},6053:(e,t,n)=>{var r,s;n.d(t,{Dx:()=>s,UT:()=>o,Zt:()=>a,cp:()=>r,u_:()=>i}),function(e){e[e.Device=0]="Device",e[e.Controller=1]="Controller"}(r||(r={}));class o{constructor(){this.UpdateGuid="",this.Channel="",this.Version="",this.CurrentVersion="",this.DownloadUri="",this.Download="",this.Name="",this.Description="",this.UpdateType=s.Unknown,this.ResourceGuid=""}}class i{constructor(){this.UpdateDescription=new Map,this.Update=new o,this.UpdatedResourceName="",this.CurrentResourceVersion=""}}!function(e){e[e.Unknown=0]="Unknown",e[e.Container=1]="Container",e[e.RadioFirmware=2]="RadioFirmware",e[e.DeviceFirmware=3]="DeviceFirmware",e[e.Configuration=4]="Configuration",e[e.ContainerScript=5]="ContainerScript",e[e.ContainerSoftware=6]="ContainerSoftware",e[e.RuntimeSoftware=7]="RuntimeSoftware",e[e.RuntimeScript=8]="RuntimeScript",e[e.RuntimeFixingScript=9]="RuntimeFixingScript"}(s||(s={}));class a extends Error{constructor(e){super(e),this.message=e,this.name="UpdateProviderNotFound"}}},6094:(e,t,n)=>{n.d(t,{g:()=>v});var r=n(8069),s=n(1061),o=n(9595),i=n(4756),a=n(5329),c=n(5186),u=n(161),l=n(6823),d=n(2558),h=n(5410),g=n(333),p=n(4506),f=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class v{constructor(){this._connection=null,this._connection=s.j.Get(o.G.ServiceName),this._pictureService=s.j.Get(h.V.ServiceName),this._sessionService=s.j.Get(a.Q.ServiceName)}CanEditUser(e){const t=this._sessionService.User;return e.Guid===(null==t?void 0:t.Guid)||this.CanEditUsersOfAccessLevel(e.AccessLevel)}CanEditUsersOfAccessLevel(e){var t;const n=null===(t=this._sessionService.User)||void 0===t?void 0:t.AccessLevel;if(void 0===n)return!1;switch(e){case r.hx.Support:return n===r.hx.Support;case r.hx.Installator:return n>=r.hx.Installator;case r.hx.Admin:default:return n>=r.hx.Admin}}GetServiceName(){return v.ServiceName}GetUsersAsync(){return f(this,void 0,void 0,(function*(){var e,t;const n=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new S,2e4,!1);if(null==n)return Promise.resolve([]);if((null==n?void 0:n.Status)==i.nW.OK){if(null!=n.Data){const e=[];return n.Data.forEach((t=>{var n=new c.K;n.AccessLevel=t.AccessLevel,n.Email=t.Email,n.Gender=t.Gender,n.Guid=t.Guid,n.IsAccountOnline=t.IsAccountOnline,n.Name=t.Name,n.IsActive=t.IsActive,n.IsBanned=t.IsBanned,n.Phone=t.Phone,n.Surname=t.Surname,e.push(n)})),e}return Promise.resolve([])}if((null==n?void 0:n.Status)==i.nW.NoData)return Promise.resolve([]);throw null===(t=u.h.Log)||void 0===t||t.Debug(v.ServiceName,`Failed to retrieve users, error: ${n.Status}`),new Error(`Failed to retrieve users, error: ${n.Status}`)}))}GetUserAsync(e){return f(this,void 0,void 0,(function*(){var t,n;if(""===e)return Promise.resolve(null);null==e&&(e="");const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new m(e),2e4,!1);if(null==r||null==r.Data)return Promise.resolve(null);if(r.Status!=i.nW.OK)return null===(n=u.h.Log)||void 0===n||n.Debug(v.ServiceName,`Failed to retrieve user, error: ${r.Status}`),Promise.resolve(null);const s=new c.K;return s.AccessLevel=r.Data.AccessLevel,s.Email=r.Data.Email,s.Gender=r.Data.Gender,s.Guid=r.Data.Guid,s.IsAccountOnline=r.Data.IsAccountOnline,s.Name=r.Data.Name,s.IsActive=r.Data.IsActive,s.IsBanned=r.Data.IsBanned,s.Phone=r.Data.Phone,s.Surname=r.Data.Surname,s}))}CreateUserAsync(e,t){return f(this,void 0,void 0,(function*(){var n;if(null!=e.Guid&&""!=e.Guid)return new l.ZR(i.nW.WrongData,"GuidMustBeEmpty");const r=new y;r.Name=e.Name.trim(),r.Surname=e.Surname.trim(),r.Email=e.Email.trim(),r.Password=t.trim(),r.Phone=e.Phone.trim(),r.Gender=e.Gender,r.AccessLevel=e.AccessLevel;const o=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new w(r),2e4,!1);return s.j.Get(p.C.ServiceName).ClearCache(),null==o||null==o.Status?new l.ZR(i.nW.FatalError,"UnknownError"):(null==o.Data&&(o.Data=""),new l.ZR(o.Status,o.Data))}))}UpdateUserAsync(e){return f(this,void 0,void 0,(function*(){var t;if(null==e.Guid||""==e.Guid)return new l.ZR(i.nW.WrongData,"GuidCannotBeEmpty");const n=new y;n.Guid=e.Guid,n.Name=e.Name.trim(),n.Surname=e.Surname.trim(),n.Email=e.Email.trim(),n.Phone=e.Phone.trim(),n.Gender=e.Gender,n.AccessLevel=e.AccessLevel;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new w(n),2e4,!1);return s.j.Get(p.C.ServiceName).ClearCache(),null==r||null==r.Status?new l.ZR(i.nW.FatalError,"UnknownError"):(null==r.Data&&(r.Data=""),new l.ZR(r.Status,r.Data))}))}ChangePasswordAsync(e,t){return f(this,void 0,void 0,(function*(){var n;if(null==e.Guid||""==e.Guid)return new l.ZR(i.nW.WrongData,"GuidCannotBeEmpty");const r=yield this.GetUserAsync(e.Guid);if(null==r)return new l.ZR(i.nW.ResourceIsNotAvailable,"CannotGetUser");const s=new y;s.Guid=e.Guid,s.Password=t,s.AccessLevel=r.AccessLevel,s.Email=r.Email;const o=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new w(s),2e4,!1);return null==o||null==o.Status?new l.ZR(i.nW.FatalError,"UnknownError"):(null==o.Data&&(o.Data=""),new l.ZR(o.Status,o.Data))}))}DeleteUserAsync(e){return f(this,void 0,void 0,(function*(){var t,n;if(""===e)return i.nW.WrongData;null==e&&(e="");const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new A(e),2e4,!1);return s.j.Get(p.C.ServiceName).ClearCache(),null==r||null==r.Status?i.nW.FatalError:(r.Status!=i.nW.OK&&(null===(n=u.h.Log)||void 0===n||n.Debug(v.ServiceName,`Failed to delete user, error: ${r.Status}`)),r.Status)}))}GetUserProfilePictureAsync(e){return f(this,void 0,void 0,(function*(){if(null==e.Guid||""==e.Guid)return new l.ZR(i.nW.WrongData,"GuidCannotBeEmpty");const t=yield this._pictureService.GetPicturesInfoAsync();if(null!=t.Type)return t;const n=t.find((t=>"profilePicture"==t.OwnerIdentity&&t.OwnerGuid==e.Guid));if(null!=n){const e=yield this._pictureService.GetPictureAsync(n.Guid);return s.j.Get(p.C.ServiceName).ClearCache(),null!=e.Type?t:e}return new l.ZR(i.nW.ResourceDoesNotExists,"PictureNotFound")}))}SetUserProfilePictureAsync(e,t){return f(this,void 0,void 0,(function*(){if(null==e.Guid||""==e.Guid)return new l.ZR(i.nW.WrongData,"GuidCannotBeEmpty");let n=new d.V;n.ImageType=g.y.Person,n.OwnerGuid=e.Guid,n.OwnerIdentity="profilePicture",n.Base64Image=t;const r=yield this.GetUserProfilePictureAsync(e);if(s.j.Get(p.C.ServiceName).ClearCache(),r.Type==i.nW.ResourceDoesNotExists){const e=yield this._pictureService.AddPictureAsync(n);return e===i.nW.OK?new l.ZR(i.nW.OK,"PictureSet"):new l.ZR(e,"PictureServiceError")}if(null!=r.Type)return new l.ZR(i.nW.Error,"ErrorWhenTryingToCheckIfCurrentProfilePictureExists");{n.Guid=r.Guid,n.OwnerGuid=r.OwnerGuid;const e=yield this._pictureService.EditPictureAsync(n);return e===i.nW.OK?new l.ZR(i.nW.OK,"PictureSet"):new l.ZR(e,"PictureServiceError")}}))}}v.ServiceName="UsersService";class m extends i.CP{constructor(e){super(),this.Resource="/users/user",this.Method=i.IT.Get,this.Data=e}}class y{constructor(){this.Guid="",this.Name="",this.Surname="",this.Email="",this.Password="",this.Phone="",this.Gender=r.YT.Unknown,this.AccessLevel=r.hx.Any}}class w extends i.CP{constructor(e){super(),this.Resource="/users/user",this.Method=i.IT.Put,this.Data=e}}class S extends i.CP{constructor(){super(),this.Resource="/users/list",this.Method=i.IT.Get}}class A extends i.CP{constructor(e){super(),this.Resource="/users/user",this.Method=i.IT.Delete,this.Data=e}}},6203:(e,t,n)=>{n.d(t,{AT:()=>r,FX:()=>g,G9:()=>a,MO:()=>s,UT:()=>h,bq:()=>c,gX:()=>i,mQ:()=>o,q1:()=>d});var r,s,o,i,a,c,u,l=n(2348);class d{constructor(){this._type=s.Unknown,this._interfaceType=""}get Type(){return this._type}get InterfaceType(){return this._interfaceType}set InterfaceType(e){this._interfaceType=e,this._type=e}}!function(e){e[e.Unknown=0]="Unknown",e[e.BlindMotor=1]="BlindMotor",e[e.DinModule=2]="DinModule",e[e.DinModuleWithAntenna=3]="DinModuleWithAntenna",e[e.Remote=4]="Remote",e[e.RemoteForBlinds=5]="RemoteForBlinds",e[e.RemoteForFacadeBlinds=6]="RemoteForFacadeBlinds",e[e.MovementSensor=7]="MovementSensor",e[e.TemperatureSensor=8]="TemperatureSensor",e[e.HumiditySensor=9]="HumiditySensor",e[e.DinPowerMeter=10]="DinPowerMeter",e[e.Intercom=11]="Intercom",e[e.SecurityCamera=12]="SecurityCamera",e[e.Multisensor=13]="Multisensor",e[e.FloodSensor=14]="FloodSensor",e[e.FlushMountedReceiver=15]="FlushMountedReceiver",e[e.FlushMountedBlindController=16]="FlushMountedBlindController",e[e.FlushMountedDimmer=17]="FlushMountedDimmer",e[e.FlushMountedRelay=18]="FlushMountedRelay",e[e.FlushMountedGateController=19]="FlushMountedGateController",e[e.WindSensor=20]="WindSensor",e[e.FlushMountedGateAndGatewayController=21]="FlushMountedGateAndGatewayController",e[e.AirPressureSensor=22]="AirPressureSensor",e[e.LightBrightnessSensor=23]="LightBrightnessSensor",e[e.ReedSensor=24]="ReedSensor",e[e.FlushMountedTransceiver=25]="FlushMountedTransceiver",e[e.FlushMountedRGBLightController=26]="FlushMountedRGBLightController",e[e.WallMountedThermoregulator=27]="WallMountedThermoregulator",e[e.ImpulseCounter=28]="ImpulseCounter",e[e.FlushMountedFacadeController=29]="FlushMountedFacadeController",e[e.WallMountedGateController=30]="WallMountedGateController",e[e.WallMountedRGBLightController=31]="WallMountedRGBLightController",e[e.WallMountedDimmer=32]="WallMountedDimmer",e[e.WallMountedRemote=33]="WallMountedRemote",e[e.DinRelay=34]="DinRelay",e[e.DinReceiver=35]="DinReceiver",e[e.DinBlindController=36]="DinBlindController",e[e.DinTransceiver=37]="DinTransceiver",e[e.SocketPlugIn=38]="SocketPlugIn",e[e.WallMountedRelay=39]="WallMountedRelay",e[e.Retransmitter=40]="Retransmitter"}(r||(r={})),function(e){e.Unknown="Unknown",e.SetBlindPosition="IBlindPosition",e.SetBlindPositionSimple="IBlindPositionSimple",e.SetBlindMicroventilation="IMicroventilation",e.TurnOff="IChannelOff",e.TurnOn="IChannelOn",e.TurnOnWithTime="IChannelOnWithTime",e.TogleState="IChannelSwitchState",e.SetLightBrightnessDynamicly="IDynamicLightBrightness",e.SetLightBrightness="ILightBrightness",e.SetLightColor="ILightColor",e.SetLightTemperature="ILightTemperature",e.PairDevice="IPair",e.UnpairDevice="IUnpair",e.IdentifyDevice="IIdentifyDevice",e.GetChannelsState="IGetDeviceState",e.GetPowerMeasurements="IGetPowerMeasurements",e.GetAvailableData="IGetAvailableData",e.MultipleDataRequest="IMultipleDataRequest",e.SetBlindOpenCloseTime="ISetBlindOpenCloseTime",e.SetTemperature="IChangeTemperature",e.SetGatePosition="IGatePosition",e.SetGatewayPosition="IGatewayPosition",e.ChangeGatePositionPulse="IGatePulse",e.ChangeGatewayPositionPulse="IGatewayPulse",e.SetFacadePosition="IFacadePosition",e.GetFacadeType="IGetFacadeType",e.LightRGBW="ILightRGBW",e.PreciseGateControl="IPreciseGateControl"}(s||(s={}));class h{constructor(){this._type=o.Unknown,this._interfaceType=""}get Type(){return this._type}get InterfaceType(){return this._interfaceType}set InterfaceType(e){this._interfaceType=e,this._type=e}}!function(e){e.Unknown="Unknown",e.BatteryState="IBatteryState",e.BinarySensorState="IBinarySensor",e.BlindOpenCloseTime="IBlindOpenCloseTime",e.BlindPosition="IBlindPosition",e.BlindRemoteButtonState="IBlindsControlButton",e.BlindErrorState="IBlindError",e.MeasuredBrightness="IBrightness",e.RemoteButtonState="IButtonState",e.ChannelOnOffState="IChannelOnOff",e.IntercomState="IIntercom",e.DoorBellState="IDoorBell",e.FacadeRemoteButtonState="IFacadeControlButton",e.FacadePosition="IFacadeState",e.FacadeType="IFacadeType",e.FloodSensorState="IFloodSensor",e.GatePosition="IGatePosition",e.GatewayPosition="IGatewayPosition",e.GateControllerHealth="IGateControllerHealth",e.HumiditySensorState="IHumiditySensor",e.LightBrightness="ILightBrightness",e.LightColor="ILightColor",e.LightWarmth="ILightTemperature",e.LightTreshold="ILightTreshold",e.MovementSensorState="IMovementSensor",e.OnlineCamera="IOnlineCamera",e.OvercurrentProtectionState="IOvercurrentProtection",e.OvercurrentProtectionThreshold="IOvercurrentProtectionThreshold",e.ReedState="IReedState",e.SignalStrength="ISignalStrength",e.SmokeSensorState="ISmokeSensor",e.MeasuredTemperature="ITemperature",e.VibrationSensorState="IVibrationSensor",e.MeasuredWindSpeed="IWindSpeed",e.WindThreshold="IWindThreshold",e.MeasuredEnergy="IEnergy",e.MeasuredDistance="DistanceSensor",e.BlindCalibration="BlindCalibration",e.ConfigurationState="ConfigurationState",e.CurrentWindThreshold="CurrentWindThreshold",e.CurrentLightThreshold="CurrentLightThreshold",e.WindSpeedState="WindSpeed",e.TamperProtectionState="ITamperProtection",e.PressureSensorState="IPressureSensor",e.LightRGBWState="ILightRGBW"}(o||(o={})),function(e){e[e.NotResponding=0]="NotResponding",e[e.Working=1]="Working",e[e.Broken=2]="Broken",e[e.FirmareUpgradeMode=3]="FirmareUpgradeMode"}(i||(i={})),function(e){e[e.TwoWay=1]="TwoWay",e[e.OneWay=2]="OneWay",e[e.ConditionalTwoWay=3]="ConditionalTwoWay"}(a||(a={})),function(e){e[e.Unknown=-1]="Unknown",e[e.Multipurpose=0]="Multipurpose",e[e.Controller=1]="Controller",e[e.Driver=2]="Driver",e[e.Receiver=3]="Receiver",e[e.Remote=4]="Remote",e[e.Sensor=5]="Sensor",e[e.Scene=6]="Scene"}(c||(c={}));class g{constructor(){this.DeviceGuid="",this.Channel=0,this.Status=l.AM.NoTasksExecuting}}!function(e){e[e.Unknown=0]="Unknown",e[e.Executed=1]="Executed",e[e.ResponseTimeout=2]="ResponseTimeout",e[e.TaskRepeatedAndExecuted=3]="TaskRepeatedAndExecuted",e[e.TaskRepeatedResponseTimeout=4]="TaskRepeatedResponseTimeout",e[e.FlowControlNotAvailable=5]="FlowControlNotAvailable",e[e.ExecutionError=6]="ExecutionError"}(u||(u={}))},6276:(e,t,n)=>{n.d(t,{E:()=>i});var r=n(4740),s=n(6203),o=n(7714);class i{constructor(){this._taskType=s.MO.GetChannelsState,this._featureType=o.Y.GetState,this._channel=0,this._guid=r.q.NewGuid(),this._deviceGuid=""}get TaskType(){return this._taskType}set TaskType(e){this._taskType=e}get FeatureType(){return this._featureType}set FeatureType(e){this._featureType=e}get Guid(){return this._guid}set Guid(e){this._guid=e}get DeviceGuid(){return this._deviceGuid}set DeviceGuid(e){this._deviceGuid=e}get Channel(){return this._channel}set Channel(e){this._channel=e}}},6823:(e,t,n)=>{n.d(t,{Ao:()=>o,ZR:()=>s,gm:()=>r});class r{constructor(e,t){this._type=o.Unknown,this._data="",this._type=e,this._data=t}get Type(){return this._type}set Type(e){this._type=e}get Data(){return this._data}set Data(e){this._data=e}}class s{constructor(e,t){this._type=null,this._data="",this._type=e,this._data=t}get Type(){return this._type}set Type(e){this._type=e}get Data(){return this._data}set Data(e){this._data=e}}var o;!function(e){e[e.ResourceDoesNotExists=-6]="ResourceDoesNotExists",e[e.UnknownError=-5]="UnknownError",e[e.NoPermissions=-4]="NoPermissions",e[e.WrongData=-3]="WrongData",e[e.ControllerResponseTimeout=-2]="ControllerResponseTimeout",e[e.Failed=-1]="Failed",e[e.Unknown=0]="Unknown",e[e.Changed=1]="Changed"}(o||(o={}))},6881:(e,t,n)=>{var r,s,o,i,a,c,u,l;n.d(t,{D9:()=>s,Hf:()=>g,II:()=>h,Y0:()=>r,Yy:()=>i,jK:()=>d,kL:()=>c,rQ:()=>u,yI:()=>l}),function(e){e[e.DownloadingFailure=-5]="DownloadingFailure",e[e.InstallationStopped=-4]="InstallationStopped",e[e.InstallationError=-3]="InstallationError",e[e.IncompatiblePackage=-2]="IncompatiblePackage",e[e.Error=-1]="Error",e[e.OK=0]="OK",e[e.DownloadingPackage=1]="DownloadingPackage",e[e.CheckingPackage=2]="CheckingPackage",e[e.PreparingForUpgrade=3]="PreparingForUpgrade",e[e.Upgrading=4]="Upgrading",e[e.MovingData=5]="MovingData",e[e.Reloading=6]="Reloading",e[e.Upgraded=7]="Upgraded"}(r||(r={})),function(e){e[e.WaitingForUser=1]="WaitingForUser",e[e.Downloading=2]="Downloading",e[e.Unpackaging=3]="Unpackaging",e[e.CheckingApplicability=4]="CheckingApplicability",e[e.MigratingData=5]="MigratingData",e[e.CreatingBackup=6]="CreatingBackup",e[e.Deploying=7]="Deploying",e[e.Installing=8]="Installing",e[e.Removing=9]="Removing",e[e.Error=10]="Error",e[e.ReadyToDownload=11]="ReadyToDownload",e[e.PreparingSystem=12]="PreparingSystem",e[e.CheckingPackageIntegrity=13]="CheckingPackageIntegrity",e[e.CheckingIntegrity=14]="CheckingIntegrity",e[e.UndoingInstallation=15]="UndoingInstallation",e[e.Installed=16]="Installed"}(s||(s={})),function(e){e[e.Ignore=0]="Ignore",e[e.Cancel=1]="Cancel",e[e.Install=2]="Install"}(o||(o={}));class d{constructor(){this.UpdatedResourceName=new Map,this.Percentage=0,this.PercentageTotal=0,this.Status=r.Error,this.UpdateNumber=1,this.AvailableUpdates=1}}class h{constructor(){this.UpdatedResourceName=new Map,this.Percentage=0,this.PercentageTotal=0,this.SpeedMbps=0,this.CurrentTask=c.Unknown}}class g{constructor(){this.BulkUpdateStatus=i.Success,this.DevicesUpdateResults=new Map}}!function(e){e[e.Success=0]="Success",e[e.PartialSuccess=1]="PartialSuccess",e[e.UpdatesNotFound=2]="UpdatesNotFound",e[e.CannotUnpairRetransmitters=3]="CannotUnpairRetransmitters",e[e.CannotPairRetransmitters=4]="CannotPairRetransmitters"}(i||(i={})),function(e){e[e.Unknown=0]="Unknown",e[e.Updated=1]="Updated",e[e.InsufficientConnection=2]="InsufficientConnection",e[e.Error=3]="Error",e[e.UnknownError=4]="UnknownError",e[e.ControllerSoftwareTooOld=5]="ControllerSoftwareTooOld"}(a||(a={})),function(e){e[e.Unknown=0]="Unknown",e[e.DownloadingUpdate=1]="DownloadingUpdate",e[e.DownloadingInstaller=2]="DownloadingInstaller",e[e.CheckingUpdate=3]="CheckingUpdate"}(c||(c={})),function(e){e[e.DeviceIsUpToDate=0]="DeviceIsUpToDate",e[e.CannotFindDevice=1]="CannotFindDevice",e[e.UnsupportedApiVersion=2]="UnsupportedApiVersion",e[e.UnsupportedDevice=3]="UnsupportedDevice",e[e.CannotGetFirmwareVersion=4]="CannotGetFirmwareVersion",e[e.CannotGetUpdates=5]="CannotGetUpdates",e[e.CannotProcessUpdate=6]="CannotProcessUpdate",e[e.UpdateActionsNotSupported=7]="UpdateActionsNotSupported",e[e.UnsupportedExtensionVersion=8]="UnsupportedExtensionVersion",e[e.UpdatesPartiallyInstalled=9]="UpdatesPartiallyInstalled",e[e.RetransmitterFound=10]="RetransmitterFound",e[e.ProtocolRadioUnsupported=11]="ProtocolRadioUnsupported",e[e.FeatureUnsupportedInCurrentVersion=12]="FeatureUnsupportedInCurrentVersion",e[e.CannotGetUpdatesBranch=13]="CannotGetUpdatesBranch",e[e.CannotSetUpdatesBranch=14]="CannotSetUpdatesBranch",e[e.UpdateAlreadyDownloaded=15]="UpdateAlreadyDownloaded",e[e.UpdateDownloadFailed=16]="UpdateDownloadFailed",e[e.UpdateAlreadyInstalled=17]="UpdateAlreadyInstalled",e[e.CannotGetCurrentControllerVersionTimeout=18]="CannotGetCurrentControllerVersionTimeout",e[e.CannotGetCurrentControllerVersion=19]="CannotGetCurrentControllerVersion"}(u||(u={})),function(e){e.Public="public",e.Beta="beta",e.Development="dev"}(l||(l={}))},7198:(e,t,n)=>{n.d(t,{V:()=>u});var r=n(1061),s=n(4756),o=n(9595),i=n(4071),a=n(4665),c=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class u{constructor(){this._connection=null,this._localDb=null,this._connection=r.j.Get(o.G.ServiceName),this._localDb=r.j.Get(a.s.ServiceName)}GetLocalDbName(e,t){return`${e}_${t}`}SaveAsync(e,t,n){return c(this,void 0,void 0,(function*(){let r=new l(e,t,n),o=yield this._connection.SendAndWaitForResponseAsync(r,35e3,!1);if(o.Status===s.nW.OK){const r=new g;r.ResourceGuid=e,r.Data=JSON.stringify(n),r.IsGlobal=t,this._localDb.Save(u.ServiceName,this.GetLocalDbName(e,t),r)}return o.Status}))}ReadAsync(e,t,n){return c(this,void 0,void 0,(function*(){let r=new d(e,t);if(!n){const n=this._localDb.Read(u.ServiceName,this.GetLocalDbName(e,t));if(null!=n){const e=n,t=new i.M;return t.Data=JSON.parse(e.Data),t.IsGlobal=e.IsGlobal,t.ResourceGuid=e.ResourceGuid,t}}let o=yield this._connection.SendAndWaitForResponseAsync(r,35e3,!1);if(o.Status===s.nW.OK){const e=new i.M;return e.ResourceGuid=o.ResourceGuid,e.Data=JSON.parse(o.Data),e.IsGlobal=o.IsGlobal,e}return o.Status}))}RemoveAsync(e,t){return c(this,void 0,void 0,(function*(){let n=new h(e,t);return(yield this._connection.SendAndWaitForResponseAsync(n,35e3,!1)).Status}))}GetServiceName(){return u.ServiceName}}u.ServiceName="RemoteStorageService";class l extends s.CP{constructor(e,t,n){super(),this.ResourceGuid="",this.Global=!1,this.Resource="/sync/config/",this.Method=s.IT.Put,this.ResourceGuid=e,this.Global=t,this.Data=JSON.stringify(n)}}class d extends s.CP{constructor(e,t){super(),this.ResourceGuid="",this.Global=!1,this.Resource="/sync/config/",this.Method=s.IT.Get,this.ResourceGuid=e,this.Global=t}}class h extends s.CP{constructor(e,t){super(),this.ResourceGuid="",this.Global=!1,this.Resource="/sync/config/",this.Method=s.IT.Delete,this.ResourceGuid=e,this.Global=t}}class g extends s.CP{constructor(){super(...arguments),this.ResourceGuid="",this.Data="",this.IsGlobal=!1,this.InsertTime=new Date}}},7581:(e,t,n)=>{n.d(t,{Bv:()=>G,F$:()=>_,F6:()=>D,Sz:()=>f,TM:()=>A,Tz:()=>y,VP:()=>r,VV:()=>w,Xk:()=>l,YU:()=>g,ZM:()=>s,_t:()=>p,ec:()=>v,fG:()=>I,fq:()=>d,gw:()=>T,h7:()=>h,jv:()=>m,ky:()=>k,ol:()=>S,uv:()=>E,wj:()=>i,zX:()=>R});var r,s,o,i,a=n(6203),c=n(7714),u=n(6276);class l extends u.E{constructor(){super(),this.Temperature=0,this.FeatureType=c.Y.SetTemperature,this.TaskType=a.MO.SetTemperature}}class d extends u.E{constructor(){super(),this.FeatureType=c.Y.TurnOff,this.TaskType=a.MO.TurnOff}}class h extends u.E{constructor(){super(),this.FeatureType=c.Y.TurnOn,this.TaskType=a.MO.TurnOn}}class g extends u.E{constructor(){super(),this.SwitchOffDelaySeconds=0,this.FeatureType=c.Y.TurnOnWithTimeout,this.TaskType=a.MO.TurnOnWithTime}}class p extends u.E{constructor(){super(),this.Brightness=0,this.FeatureType=c.Y.SetLightBrightness,this.TaskType=a.MO.SetLightBrightness}}class f extends u.E{constructor(){super(),this.FeatureType=c.Y.ToggleState,this.TaskType=a.MO.TogleState}}class v extends u.E{constructor(){super(),this.R=0,this.G=0,this.B=0,this.FeatureType=c.Y.SetLightColor,this.TaskType=a.MO.SetLightColor}}class m extends u.E{constructor(){super(),this.Temperature=0,this.FeatureType=c.Y.SetLightTemperature,this.TaskType=a.MO.SetLightTemperature}}class y extends u.E{constructor(){super(),this.Action=r.Stop,this.Position=0,this.FeatureType=c.Y.SetBlindPosition,this.TaskType=a.MO.SetBlindPosition}}!function(e){e[e.Open=0]="Open",e[e.Close=1]="Close",e[e.Stop=2]="Stop",e[e.Percentage=3]="Percentage"}(r||(r={})),u.E,function(e){e[e.Open=0]="Open",e[e.Close=1]="Close",e[e.Stop=2]="Stop",e[e.Percentage=3]="Percentage"}(s||(s={}));class w extends u.E{constructor(){super(),this.Action=o.Stop,this.Position=0,this.FeatureType=c.Y.SetBlindPosition,this.TaskType=a.MO.SetBlindPositionSimple}}!function(e){e[e.Open=0]="Open",e[e.Close=1]="Close",e[e.Stop=2]="Stop"}(o||(o={}));class S extends u.E{constructor(){super(),this.Brightness=0,this.FeatureType=c.Y.SetLightBrightnessDynamicly,this.TaskType=a.MO.SetLightBrightnessDynamicly}}class A extends u.E{constructor(){super(),this.FeatureType=c.Y.IdentifyDevice,this.TaskType=a.MO.IdentifyDevice}}class _ extends u.E{constructor(){super(),this.Data=new C,this.FeatureType=c.Y.SetBlindOpenCloseTime,this.TaskType=a.MO.SetBlindOpenCloseTime}}class C{constructor(){this.Channel=0,this.CloseTime=0,this.OpenTime=0}}class T extends u.E{constructor(){super(),this.FeatureType=c.Y.GetState,this.TaskType=a.MO.GetChannelsState}}class D extends u.E{constructor(){super(),this.Position=0,this.FeatureType=c.Y.SetBlindMicroventilation,this.TaskType=a.MO.SetBlindMicroventilation}}class k extends u.E{constructor(){super(),this.FeatureType=c.Y.GatePulse,this.TaskType=a.MO.ChangeGatewayPositionPulse}}class I extends u.E{constructor(){super(),this.FeatureType=c.Y.GatewayPulse,this.TaskType=a.MO.ChangeGatewayPositionPulse}}class E extends u.E{constructor(){super(),this.FacadeAction=i.Stop,this.Tilt=0,this.Position=0,this.FeatureType=c.Y.SetFacadePositionAndTilt,this.TaskType=a.MO.SetFacadePosition}}class R extends u.E{constructor(){super(),this.FeatureType=c.Y.GetFacadeType,this.TaskType=a.MO.GetFacadeType}}!function(e){e[e.Open=0]="Open",e[e.Close=1]="Close",e[e.Stop=2]="Stop",e[e.Percentage=3]="Percentage",e[e.Tilt=4]="Tilt",e[e.TiltAndPercentage=5]="TiltAndPercentage"}(i||(i={}));class N{constructor(){this.R=0,this.G=0,this.B=0,this.W=0,this.Brightness=0,this.Channel=0}}class G extends u.E{constructor(){super(),this.Data=new N,this.FeatureType=c.Y.LightRGBW,this.TaskType=a.MO.LightRGBW}}},7714:(e,t,n)=>{var r;n.d(t,{Y:()=>r}),function(e){e[e.TurnOn=0]="TurnOn",e[e.TurnOff=1]="TurnOff",e[e.ToggleState=2]="ToggleState",e[e.SetBlindPosition=3]="SetBlindPosition",e[e.SetLightColor=4]="SetLightColor",e[e.SetLightTemperature=5]="SetLightTemperature",e[e.SetLightBrightness=6]="SetLightBrightness",e[e.SetTemperature=7]="SetTemperature",e[e.GetState=8]="GetState",e[e.TurnOnWithTimeout=9]="TurnOnWithTimeout",e[e.SetLightBrightnessDynamicly=10]="SetLightBrightnessDynamicly",e[e.IdentifyDevice=11]="IdentifyDevice",e[e.SetBlindOpenCloseTime=12]="SetBlindOpenCloseTime",e[e.SetBlindMicroventilation=13]="SetBlindMicroventilation",e[e.GatewayPulse=25]="GatewayPulse",e[e.GatePulse=26]="GatePulse",e[e.SetFacadePositionAndTilt=29]="SetFacadePositionAndTilt",e[e.GetFacadeType=30]="GetFacadeType",e[e.LightRGBW=31]="LightRGBW",e[e.SetGatePositionPrecise=32]="SetGatePositionPrecise"}(r||(r={}))},8069:(e,t,n)=>{var r,s,o;n.d(t,{G4:()=>o,YT:()=>s,hx:()=>r}),function(e){e[e.Any=0]="Any",e[e.Guest=10]="Guest",e[e.Standard=20]="Standard",e[e.Admin=30]="Admin",e[e.Installator=40]="Installator",e[e.Support=50]="Support"}(r||(r={})),function(e){e[e.Unknown=0]="Unknown",e[e.Men=1]="Men",e[e.Woman=2]="Woman",e[e.Other=3]="Other"}(s||(s={})),function(e){e[e.En_Us=0]="En_Us",e[e.Pl_Pl=1]="Pl_Pl"}(o||(o={}))},8070:(e,t,n)=>{n.d(t,{IX:()=>o,KN:()=>i,e5:()=>r,lm:()=>a});class r{constructor(e,t){this.serialNumber=e,this.pin=t,this.SerialNumber=e,this.PIN=t}}var s,o,i;!function(e){e[e.ByCloud=0]="ByCloud",e[e.LocalNetwork=1]="LocalNetwork",e[e.P2P=2]="P2P"}(s||(s={})),function(e){e[e.FailedToConnect=0]="FailedToConnect",e[e.AuthorizationFailed=1]="AuthorizationFailed",e[e.FailedToConnectToServer=2]="FailedToConnectToServer",e[e.Connected=3]="Connected",e[e.ControllerIsNotConnected=4]="ControllerIsNotConnected"}(o||(o={})),function(e){e[e.Disconnected=0]="Disconnected",e[e.Connecting=1]="Connecting",e[e.Connected=3]="Connected",e[e.Disconnecting=4]="Disconnecting",e[e.Failed=5]="Failed",e[e.Reconnecting=6]="Reconnecting"}(i||(i={}));class a extends Error{constructor(e){super(e),this.name="StreamError"}}},8517:(e,t,n)=>{n.d(t,{J:()=>o});var r=n(1061),s=n(4268);class o{constructor(){this._log=r.j.Get(s.g.ServiceName),this.handlers=[]}Subscribe(e){this.handlers.push(e)}Unsubscribe(e){this.handlers=this.handlers.filter((t=>t!==e))}Invoke(){this.handlers.slice(0).forEach((e=>{try{e()}catch(e){this._log.Error(e)}}))}}},8637:(e,t,n)=>{n.d(t,{D7:()=>s,E$:()=>r,hy:()=>o});class r{constructor(){this.Longitude=0,this.Latitude=0}}class s{constructor(){this.Longitude=0,this.Latitude=0,this.IsNetworkBased=!1}}var o;!function(e){e[e.OK=0]="OK",e[e.NoPermissions=1]="NoPermissions",e[e.UserIsNotLoggedIn=2]="UserIsNotLoggedIn",e[e.UnknownError=3]="UnknownError"}(o||(o={}))},8679:(e,t,n)=>{n.d(t,{N:()=>ue});var r,s,o,i,a,c,u,l,d,h,g,p,f,v,m,y,w,S=n(1061),A=n(4756),_=n(161),C=n(4740),T=n(2824),D=n(3386),k=n(8914),I=n(8637),E=n(8883),R=n(6203),N=n(3826),G=n(7714),b=n(2734),P=n(6276),O=n(7581),M=n(9595),U=n(6823),W=n(4824);!function(e){e.OtherError="OtherError",e.FatalError="FatalError",e.NoData="NoData",e.InvalidSceneGuid="InvalidSceneGuid"}(r||(r={}));class x{constructor(){this._comparisonParams=new Map,this.Type=R.mQ.Unknown,this.DeviceGuid="",this.ComparisonMethod=s.Default}GetCheckDeviceState(){return this._checkDeviceState}SetCheckDeviceState(e){this._checkDeviceState=e,e instanceof N.Rv&&(this.Type=R.mQ.BatteryState),e instanceof N.l3&&(this.Type=R.mQ.BinarySensorState),e instanceof N.lo&&(this.Type=R.mQ.BlindPosition),e instanceof N.tC&&(this.Type=R.mQ.LightBrightness),e instanceof N.vY&&(this.Type=R.mQ.MeasuredBrightness),e instanceof N.OQ&&(this.Type=R.mQ.RemoteButtonState),e instanceof N.VH&&(this.Type=R.mQ.ChannelOnOffState),e instanceof N.fX&&(this.Type=R.mQ.DoorBellState),e instanceof N.CV&&(this.Type=R.mQ.MeasuredEnergy),e instanceof N.mH&&(this.Type=R.mQ.FloodSensorState),e instanceof N.qV&&(this.Type=R.mQ.GatePosition),e instanceof N.lD&&(this.Type=R.mQ.LightColor),e instanceof N.nQ&&(this.Type=R.mQ.LightWarmth),e instanceof N.My&&(this.Type=R.mQ.ReedState),e instanceof N.KJ&&(this.Type=R.mQ.MeasuredTemperature),e instanceof N.BD&&(this.Type=R.mQ.HumiditySensorState),e instanceof N.xb&&(this.Type=R.mQ.BlindRemoteButtonState),e instanceof N.ON&&(this.Type=R.mQ.FacadeRemoteButtonState),e instanceof N.rW&&(this.Type=R.mQ.MovementSensorState),e instanceof N.CV&&(this.Type=R.mQ.MeasuredEnergy),e instanceof N.L5&&(this.Type=R.mQ.PressureSensorState),e instanceof N.r_&&(this.Type=R.mQ.WindSpeedState),e instanceof N.IR&&(this.Type=R.mQ.CurrentWindThreshold)}GetComparisonParam(e){return this._comparisonParams.get(e)}GetComparisonParams(){return this._comparisonParams}SetComparisonParam(e,t){this._comparisonParams.set(e,t)}}class F{constructor(e){this._value=e}get Value(){return this._value}set Value(e){this._value=e}}class L{constructor(...e){this._value="00:00:00",e.length>1?this.SetTimeSpan(e[0],e[1],e[2],e[3]):this._value=e[0]}SetTimeSpan(e,t,n,r){this._value=r<=0?`${n.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`:`${r}.${n.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`}get Value(){return this._value}}!function(e){e[e.Default=0]="Default",e[e.Delta=1]="Delta",e[e.StateRepeat=2]="StateRepeat"}(s||(s={})),function(e){e[e.DeltaValue=0]="DeltaValue",e[e.DeltaCalculationTimeRange=1]="DeltaCalculationTimeRange",e[e.StateRepeatCount=2]="StateRepeatCount",e[e.StateRepeatTimeRange=3]="StateRepeatTimeRange"}(o||(o={})),function(e){e[e.SunRise=1]="SunRise",e[e.SunSet=2]="SunSet"}(i||(i={}));class B{constructor(){this.DeviceGuid=""}}!function(e){e[e.Unknown=-1]="Unknown",e[e.DeviceTask=0]="DeviceTask",e[e.DelayTask=1]="DelayTask",e[e.NotifyTask=2]="NotifyTask",e[e.LockExecution=3]="LockExecution"}(a||(a={})),function(e){e.Unknown="Unknown",e.DeviceTask="DeviceTask",e.DelayTask="DelayTask",e.NotifyTask="NotifyTask",e.LockExecution="LockExecution"}(c||(c={})),(w=u||(u={}))[w.Unknown=0]="Unknown",w[w.Second=1]="Second",w[w.Minute=2]="Minute",w[w.Hour=3]="Hour",w[w.Day=4]="Day",w[w.DayOfWeek=5]="DayOfWeek",w[w.Month=6]="Month",w[w.Year=7]="Year",w[w.Date=8]="Date",w[w.Time=9]="Time",w[w.WeatherType=11]="WeatherType",w[w.CompareNumbers=12]="CompareNumbers",w[w.CompareBooleans=13]="CompareBooleans",w[w.DeviceState=14]="DeviceState",w[w.Timer=15]="Timer",w[w.Temperature=17]="Temperature",w[w.DaysOfWeek=18]="DaysOfWeek",w[w.AstronomicalClockWithOffset=19]="AstronomicalClockWithOffset",w[w.SceneExecuted=20]="SceneExecuted",(y=l||(l={}))[y.Unknown=0]="Unknown",y[y.Equal=1]="Equal",y[y.NotEqueal=2]="NotEqueal",y[y.BiggerThan=3]="BiggerThan",y[y.SmallerThan=4]="SmallerThan",y[y.BiggerThanOrEqual=5]="BiggerThanOrEqual",y[y.SmallerThanOrEqual=6]="SmallerThanOrEqual",y[y.OneOfBothIsTrue=7]="OneOfBothIsTrue",y[y.BothAreTrue=8]="BothAreTrue",function(e){e[e.Unknown=0]="Unknown",e[e.BatteryState=1]="BatteryState",e[e.BinarySensor=2]="BinarySensor",e[e.BlindPosition=3]="BlindPosition",e[e.Brightness=4]="Brightness",e[e.ButtonState=5]="ButtonState",e[e.ChannelOnOff=6]="ChannelOnOff",e[e.DoorBell=7]="DoorBell",e[e.Energy=8]="Energy",e[e.FloodSensor=9]="FloodSensor",e[e.GatePosition=10]="GatePosition",e[e.HeatSensor=11]="HeatSensor",e[e.LightBrightness=12]="LightBrightness",e[e.LightColor=13]="LightColor",e[e.LightTemperature=14]="LightTemperature",e[e.MeasuredCurrent=15]="MeasuredCurrent",e[e.MeasuredPower=16]="MeasuredPower",e[e.MeasuredVoltage=17]="MeasuredVoltage",e[e.ReedState=18]="ReedState",e[e.SmokeSensor=19]="SmokeSensor",e[e.Temperature=20]="Temperature",e[e.BlindsControlButton=21]="BlindsControlButton",e[e.Movement=22]="Movement",e[e.WindSpeed=24]="WindSpeed",e[e.Humidity=25]="Humidity",e[e.AirPressure=26]="AirPressure",e[e.WindThreshold=31]="WindThreshold",e[e.FacadeControlButton=36]="FacadeControlButton"}(d||(d={})),function(e){e[e.Null=0]="Null",e[e.Condition=1]="Condition",e[e.ConditionGroup=2]="ConditionGroup",e[e.ArgumentAsInt=3]="ArgumentAsInt",e[e.ArgumentAsTimeSpan=4]="ArgumentAsTimeSpan",e[e.ArgumentAsBoolean=5]="ArgumentAsBoolean",e[e.ArgumentAsTimeout=6]="ArgumentAsTimeout",e[e.ArgumentAsDayOfWeek=7]="ArgumentAsDayOfWeek",e[e.ArgumentAsDaysOfWeek=8]="ArgumentAsDaysOfWeek",e[e.ArgumentAsAstronomicalClock=9]="ArgumentAsAstronomicalClock",e[e.ArgumentAsTime=10]="ArgumentAsTime",e[e.ArgumentAsDeviceState=11]="ArgumentAsDeviceState",e[e.ArgumentAsNumber=12]="ArgumentAsNumber",e[e.ArgumentAsAstronomicalClockWithOffset=13]="ArgumentAsAstronomicalClockWithOffset",e[e.ArgumentAsConditionInfo=14]="ArgumentAsConditionInfo"}(h||(h={})),(m=g||(g={})).Null="Null",m.Condition="Condition",m.ConditionGroup="ConditionGroup",m.ArgumentAsInt="ArgumentAsInt",m.ArgumentAsTimeSpan="ArgumentAsTimeSpan",m.ArgumentAsBoolean="ArgumentAsBoolean",m.ArgumentAsTimeout="ArgumentAsTimeout",m.ArgumentAsDayOfWeek="ArgumentAsDayOfWeek",m.ArgumentAsDaysOfWeek="ArgumentAsDaysOfWeek",m.ArgumentAsAstronomicalClock="ArgumentAsAstronomicalClock",m.ArgumentAsTime="ArgumentAsTime",m.ArgumentAsDeviceState="ArgumentAsDeviceState",m.ArgumentAsNumber="ArgumentAsNumber",m.ArgumentAsAstronomicalClockWithOffset="ArgumentAsAstronomicalClockWithOffset",m.ArgumentAsConditionInfo="ArgumentAsConditionInfo",function(e){e.DeviceTask="DeviceTask",e.DelayTask="DelayTask",e.LockExecutionTask="LockExecutionTask",e.NotifyTaskAppNotify="NotifyTaskAppNotify",e.NotifyTaskEmailNotify="NotifyTaskEmailNotify"}(p||(p={}));class $ extends Error{constructor(e){super(e),this.message=e,this.name="UnsupportedScenesDeviceState"}}!function(e){e[e.None=0]="None",e[e.AppNotification=1]="AppNotification",e[e.Email=2]="Email"}(f||(f={})),function(e){e[e.Timeout=0]="Timeout",e[e.TimeRange=1]="TimeRange"}(v||(v={}));var q,V,j;class H{constructor(e,t="Cube"){this._result=null,this._tmp=new Q,this._tmpTask=null,this._prevSeqGuid="",this._currentSeqGuid="",this._editingExistingSequence=!1,this._rawExistingSequenceTasks=null,this._sequenceName="",this._sequenceIcon="",this._service=S.j.Get(ue.ServiceName),e&&(this._sequenceName=e,this._sequenceIcon=t,this._tmp.Guid=C.q.NewGuid())}SetSequenceName(e){const t=n=>{if(n.RightArgumentType!=j.Null)return t(n.RightArgument);n.Tasks.ControllerTasks.where((e=>e.TaskType==a.NotifyTask)).toArray().forEach((t=>{t.Title=e}))};this._sequenceName=e,this._editingExistingSequence&&null!=this._result&&(this._result.Name=e,t(this._result))}SetSequenceIcon(e){this._sequenceIcon=e,this._editingExistingSequence&&null!=this._result&&(this._result.Icon=e)}GetNext(){if(null==this._result)return null;if(""==this._currentSeqGuid)return this._currentSeqGuid=this._result.Guid,this._service.MapSequence(JSON.parse(JSON.stringify(this._result)),!0);{const e=this.FindArgumentWithGuid(this._result,this._currentSeqGuid);return null==e?null:e.RightArgumentType==j.Condition?(this._prevSeqGuid=this._currentSeqGuid,this._currentSeqGuid=e.RightArgument.Guid,this._service.MapSequence(JSON.parse(JSON.stringify(e.RightArgument)),!0)):null}}CloneCurrentBuilder(){var e=new H;return e._currentSeqGuid="",e._prevSeqGuid="",e._editingExistingSequence=structuredClone(this._editingExistingSequence),e._rawExistingSequenceTasks=structuredClone(this._rawExistingSequenceTasks),e._result=structuredClone(this._result),e._sequenceIcon=structuredClone(this._sequenceIcon),e._sequenceName=structuredClone(this._sequenceName),e._tmp=structuredClone(this._tmp),(e=>{const t=e=>{e.Guid=C.q.NewGuid(),e.RightArgumentType==j.Condition&&t(e.RightArgument)};null!=e._result&&t(e._result),null!=this._tmp&&(this._tmp.Guid=C.q.NewGuid())})(e),e}GetPrevious(){let e="";const t=(n,r)=>n.Guid==r?{sequence:n,prevGuid:e}:n.RightArgumentType==j.Condition?(e=n.Guid,t(n.RightArgument,r)):null;if(null==this._result)return null;if(""==this._currentSeqGuid||""==this._prevSeqGuid)return null;const n=t(this._result,this._prevSeqGuid);return null==n?null:(this._currentSeqGuid=n.sequence.Guid,this._prevSeqGuid=n.prevGuid,this._service.MapSequence(JSON.parse(JSON.stringify(n.sequence)),!0))}GetByGuid(e){if(null==this._result)return null;const t=this.FindArgumentWithGuid(this._result,e);return null==t?null:this._service.MapSequence(t)}EditCurrentSequence(e){const t=e=>{if(e.RightArgumentType!=j.Null)return t(e.RightArgument);this._rawExistingSequenceTasks=JSON.parse(JSON.stringify(e.Tasks))};return this._editingExistingSequence=!0,t(e._rawRequestData),Object.hasOwn(e._rawRequestData,"Condition")?this._result=e._rawRequestData.Condition:this._result=e._rawRequestData,{GetNext:()=>this.GetNext(),GetPrevious:()=>this.GetPrevious(),GetByGuid:e=>this.GetByGuid(e),GetAllowedArguments:()=>this.GetAllowedArguments(),RemoveSequence:e=>this.RemoveSequenceByGuid(e),ArgumentAsAstronomicalClockWithOffset:(e,t,n)=>this.ArgumentAsAstronomicalClockWithOffset(e,t,n),ArgumentAsDaysOfWeek:(e,t,n)=>this.ArgumentAsDaysOfWeek(e,t,n),ArgumentAsDeviceState:(e,t,n,r=l.Equal)=>this.ArgumentAsDeviceState(e,t,n,r),ArgumentAsTime:(e,t,n=l.Equal)=>this.ArgumentAsTime(e,t,n),ArgumentAsTimeSpan:(e,t)=>this.ArgumentAsTimeSpan(e,t),ArgumentAsSceneExecuted:e=>this.ArgumentAsSceneExecuted(e),RemoveTask:e=>this.RemoveTask(e)}}ArgumentAsAstronomicalClockWithOffset(e,t,n){if(this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.AstronomicalClockWithOffset,this._tmp.LeftArgumentType=j.ArgumentAsAstronomicalClockWithOffset,this._tmp.AtMeetCondition=t,t&&null!=n&&n!=l.Equal)throw new re("AtmeetCondition supports only comparation type 'Equal'.");if(e.Offset<-3600||e.Offset>3600)throw new re("Offset must be in range between -3600 and 3600 seconds.");if(t)this._tmp.ConditionType=l.Equal;else{if(null==n)throw new re("Comparasion type must be provided if atMeetCondition is false!");this._tmp.ConditionType=n}return this._tmp.LeftArgument.Argument=e,this._tmp.LeftArgument.HandledType=j.ArgumentAsAstronomicalClockWithOffset,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsActionWithEmptyCondition(){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.Unknown,this._tmp.LeftArgumentType=j.Null,this._tmp.ConditionType=l.Equal,this._tmp.LeftArgument.Argument=null,this._tmp.LeftArgument.HandledType=j.Null,this._tmp.Name=this._sequenceName,this._tmp.Icon=this._sequenceIcon,this._tmp.AtMeetCondition=!1,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsDaysOfWeek(e,t,n=l.Equal){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.DaysOfWeek,this._tmp.LeftArgumentType=j.ArgumentAsDaysOfWeek,this._tmp.ConditionType=n,this._tmp.LeftArgument.Argument=e,this._tmp.LeftArgument.HandledType=j.ArgumentAsDaysOfWeek,this._tmp.AtMeetCondition=t,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsTimeSpan(e,t=l.Equal){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.Timer,this._tmp.LeftArgumentType=j.ArgumentAsTimeSpan,this._tmp.ConditionType=t,this._tmp.AtMeetCondition=!0,this._tmp.LeftArgument.Argument=e,this._tmp.LeftArgument.HandledType=j.ArgumentAsTimeSpan,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsTime(e,t,n=l.Equal){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.Time,this._tmp.LeftArgumentType=j.ArgumentAsTime,this._tmp.ConditionType=n,this._tmp.AtMeetCondition=t,this._tmp.LeftArgument.Argument=e,this._tmp.LeftArgument.HandledType=j.ArgumentAsTime,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsDeviceState(e,t,n,r=l.Equal){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.DeviceState,this._tmp.LeftArgumentType=j.ArgumentAsDeviceState,this._tmp.ConditionType=r,this._tmp.AtMeetCondition=t,this._tmp.ConditionTimeout=n,this._tmp.LeftArgument.Argument=this.GenerateDeviceStateArgument(e),this._tmp.LeftArgument.HandledType=j.ArgumentAsDeviceState,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsSceneExecuted(e){this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.SceneExecuted,this._tmp.LeftArgumentType=j.ArgumentAsConditionInfo,this._tmp.ConditionType=l.Equal,this._tmp.AtMeetCondition=!0;const t=new B;return t.DeviceGuid=e.DeviceGuid,this._tmp.LeftArgument.Argument=t,this._tmp.LeftArgument.HandledType=j.ArgumentAsConditionInfo,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}GenerateDeviceStateArgument(e){const t=new Y;t.Channel=e.GetCheckDeviceState().Channel,t.ComparisonMethod=e.ComparisonMethod;let n={},r=e.GetComparisonParams().entries();for(const[e,t]of r)n=Object.assign(Object.assign({},n),{[o[e]]:t.Value});switch(t.ComparisonParams=n,t.DeviceGuid=e.DeviceGuid,t.DeviceStateType=this.MapResponseTypeToDeviceStateType(e.Type),e.Type){case R.mQ.BatteryState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State,t.CheckedDeviceState.Percentage=e.GetCheckDeviceState().Percentage;break;case R.mQ.BinarySensorState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case R.mQ.BlindPosition:t.CheckedDeviceState.Position=e.GetCheckDeviceState().Position;break;case R.mQ.LightBrightness:case R.mQ.MeasuredBrightness:t.CheckedDeviceState.Brightness=e.GetCheckDeviceState().Brightness;break;case R.mQ.RemoteButtonState:case R.mQ.ChannelOnOffState:case R.mQ.DoorBellState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case R.mQ.MeasuredEnergy:{let n={},r=e.GetCheckDeviceState().MeasurementParameters.entries();for(const[e,t]of r)n=Object.assign(Object.assign({},n),{[N.M0[e]]:t});t.CheckedDeviceState.MeasurementParameters=n;break}case R.mQ.FloodSensorState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case R.mQ.GatePosition:t.CheckedDeviceState.Position=e.GetCheckDeviceState().Position,t.CheckedDeviceState.PositionType=e.GetCheckDeviceState().PositionType;break;case R.mQ.LightColor:{const n=e.GetCheckDeviceState();t.CheckedDeviceState.R=n.R,t.CheckedDeviceState.G=n.G,t.CheckedDeviceState.B=n.B;break}case R.mQ.LightWarmth:t.CheckedDeviceState.Temperature=e.GetCheckDeviceState().Temperature;break;case R.mQ.ReedState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case R.mQ.SmokeSensorState:throw new $("Unsupported device state!");case R.mQ.MeasuredTemperature:t.CheckedDeviceState.Temperature=e.GetCheckDeviceState().Temperature;break;case R.mQ.HumiditySensorState:t.CheckedDeviceState.Humidity=e.GetCheckDeviceState().Humidity;break;case R.mQ.BlindRemoteButtonState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case R.mQ.LightRGBWState:{let n=e.GetCheckDeviceState();t.CheckedDeviceState.R=n.R,t.CheckedDeviceState.G=n.G,t.CheckedDeviceState.B=n.B,t.CheckedDeviceState.W=n.W;break}case R.mQ.FacadeRemoteButtonState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case R.mQ.MovementSensorState:{let n=e.GetCheckDeviceState();t.CheckedDeviceState.Movement=n.Movement,t.CheckedDeviceState.Intensity=n.Intensity;break}case R.mQ.PressureSensorState:t.CheckedDeviceState.Pressure=e.GetCheckDeviceState().Pressure,t.CheckedDeviceState.PressureType=e.GetCheckDeviceState().PressureType;break;case R.mQ.WindSpeedState:t.CheckedDeviceState.Value=e.GetCheckDeviceState().Value;break;case R.mQ.CurrentWindThreshold:t.CheckedDeviceState.WindThreshold=e.GetCheckDeviceState().WindThreshold;break;case R.mQ.Unknown:t.CheckedDeviceState={};break;default:throw new $("Unsupported device state!")}return t}MapResponseTypeToDeviceStateType(e){switch(e){case R.mQ.BatteryState:return d.BatteryState;case R.mQ.BinarySensorState:return d.BinarySensor;case R.mQ.BlindPosition:return d.BlindPosition;case R.mQ.LightBrightness:return d.LightBrightness;case R.mQ.RemoteButtonState:return d.ButtonState;case R.mQ.ChannelOnOffState:return d.ChannelOnOff;case R.mQ.DoorBellState:return d.DoorBell;case R.mQ.MeasuredEnergy:return d.Energy;case R.mQ.FloodSensorState:return d.FloodSensor;case R.mQ.GatePosition:return d.GatePosition;case R.mQ.MeasuredBrightness:return d.Brightness;case R.mQ.LightColor:return d.LightColor;case R.mQ.LightWarmth:return d.LightTemperature;case R.mQ.ReedState:return d.ReedState;case R.mQ.SmokeSensorState:return d.SmokeSensor;case R.mQ.MeasuredTemperature:return d.Temperature;case R.mQ.HumiditySensorState:return d.Humidity;case R.mQ.BlindRemoteButtonState:return d.BlindsControlButton;case R.mQ.FacadeRemoteButtonState:return d.FacadeControlButton;case R.mQ.MovementSensorState:return d.Movement;case R.mQ.PressureSensorState:return d.AirPressure;case R.mQ.WindSpeedState:return d.WindSpeed;case R.mQ.CurrentWindThreshold:return d.WindThreshold;default:return d.Unknown}}AddSequence(){const e=(t,n)=>{if(t.RightArgumentType!=j.Null)return e(t.RightArgument,n);t.RightArgumentType=j.Condition,t.RightArgument=n,this._editingExistingSequence&&null!=this._rawExistingSequenceTasks&&(n.Tasks=JSON.parse(JSON.stringify(this._rawExistingSequenceTasks)),t.Tasks=new z)};null==this._result?(this._tmp.Name=this._sequenceName,this._tmp.Icon=this._sequenceIcon,this._result=this._tmp,this._result.AtMeetCondition=!0):e(this._result,this._tmp);const t=this._service.MapSequence(JSON.parse(JSON.stringify(this._tmp)));return this._tmp=new Q,{GetNext:()=>this.GetNext(),GetPrevious:()=>this.GetPrevious(),GetByGuid:e=>this.GetByGuid(e),GetAllowedArguments:()=>this.GetAllowedArguments(),RemoveSequenceByGuid:e=>this.RemoveSequenceByGuid(e),Commit:()=>this.Commit(),ArgumentAsActionWithEmptyCondition:()=>this.ArgumentAsActionWithEmptyCondition(),ArgumentAsAstronomicalClockWithOffset:(e,t,n)=>this.ArgumentAsAstronomicalClockWithOffset(e,t,n),ArgumentAsDaysOfWeek:(e,t,n)=>this.ArgumentAsDaysOfWeek(e,t,n),ArgumentAsDeviceState:(e,t,n,r=l.Equal)=>this.ArgumentAsDeviceState(e,t,n,r),ArgumentAsTime:(e,t,n=l.Equal)=>this.ArgumentAsTime(e,t,n),ArgumentAsTimeSpan:(e,t)=>this.ArgumentAsTimeSpan(e,t),ArgumentAsSceneExecuted:e=>this.ArgumentAsSceneExecuted(e),SequenceData:t}}EditSequence(e){const t=(n,r)=>{if(n.Guid!=e||n.ObjectType!=j.Condition){if(n.RightArgumentType==j.Condition)return t(n.RightArgument,r);throw new se(`Cannot edit sequence with given GUID ${e} - sequence not foud in chain`)}n.AtMeetCondition=r.AtMeetCondition,n.ConditionTimeout=r.ConditionTimeout,n.ConditionType=r.ConditionType,n.ExecuteOnce=r.ExecuteOnce,n.HandledType=r.HandledType,n.IsDisabled=r.IsDisabled,n.LeftArgument=r.LeftArgument,n.LeftArgumentType=r.LeftArgumentType,n.ObjectType=r.ObjectType,n.Tasks=r.Tasks,r.Guid=n.Guid,r.Icon=n.Icon,r.Name=n.Name};if(null==this._result)throw new se(`Cannot edit sequence with given GUID ${e} - sequence not initialized (no root element)`);t(this._result,this._tmp);const n=this._service.MapSequence(JSON.parse(JSON.stringify(this._tmp)));return this._tmp=new Q,console.log(`new tmp guid: ${this._tmp.Guid}`),this._result.AtMeetCondition||(this._result.AtMeetCondition=!0),{GetNext:()=>this.GetNext(),GetPrevious:()=>this.GetPrevious(),GetByGuid:e=>this.GetByGuid(e),GetAllowedArguments:()=>this.GetAllowedArguments(),RemoveSequenceByGuid:e=>this.RemoveSequenceByGuid(e),Commit:()=>this.Commit(),ArgumentAsActionWithEmptyCondition:()=>this.ArgumentAsActionWithEmptyCondition(),ArgumentAsAstronomicalClockWithOffset:(e,t,n)=>this.ArgumentAsAstronomicalClockWithOffset(e,t,n),ArgumentAsDaysOfWeek:(e,t,n)=>this.ArgumentAsDaysOfWeek(e,t,n),ArgumentAsDeviceState:(e,t,n,r=l.Equal)=>this.ArgumentAsDeviceState(e,t,n,r),ArgumentAsTime:(e,t,n=l.Equal)=>this.ArgumentAsTime(e,t,n),ArgumentAsTimeSpan:(e,t)=>this.ArgumentAsTimeSpan(e,t),ArgumentAsSceneExecuted:e=>this.ArgumentAsSceneExecuted(e),SequenceData:n}}RemoveSequenceByGuid(e){let t;const n=(e,n)=>{""==this._currentSeqGuid&&""==this._prevSeqGuid||(this._currentSeqGuid==n?(this._currentSeqGuid=e.RightArgumentType==j.Condition?e.RightArgument.Guid:"",this._prevSeqGuid=null!=t?t.Guid:""):this._prevSeqGuid==n&&(this._prevSeqGuid=null!=t?t.Guid:""))},r=(e,s)=>{if(e.Guid!=s){if(t=e,e.RightArgumentType==j.Null)throw new se(`Cannot remove sequence, sequence with given guid ${s} not found!`);return r(e.RightArgument,s)}null==t?this._result=null:(t.RightArgument=e.RightArgument,t.RightArgumentType=e.RightArgumentType),n(e,s)};if(null==this._result)throw new se("Cannot remove sequence, sequence not configured!");return this._result.Guid==e&&this._result.RightArgumentType!=j.Null?(this._result.RightArgument.Name=this._result.Name,this._result.RightArgument.Icon=this._result.Icon,this._result.RightArgument.Guid=this._result.Guid,this._result=this._result.RightArgument,this._result.AtMeetCondition=!0,n(this._result,e)):r(this._result,e),{GetNext:()=>this.GetNext(),GetPrevious:()=>this.GetPrevious(),GetByGuid:e=>this.GetByGuid(e),GetAllowedArguments:()=>this.GetAllowedArguments(),RemoveSequenceByGuid:e=>this.RemoveSequenceByGuid(e),Commit:()=>this.Commit(),ArgumentAsActionWithEmptyCondition:()=>this.ArgumentAsActionWithEmptyCondition(),ArgumentAsAstronomicalClockWithOffset:(e,t,n)=>this.ArgumentAsAstronomicalClockWithOffset(e,t,n),ArgumentAsDaysOfWeek:(e,t,n)=>this.ArgumentAsDaysOfWeek(e,t,n),ArgumentAsDeviceState:(e,t,n,r=l.Equal)=>this.ArgumentAsDeviceState(e,t,n,r),ArgumentAsTime:(e,t,n=l.Equal)=>this.ArgumentAsTime(e,t,n),ArgumentAsTimeSpan:(e,t)=>this.ArgumentAsTimeSpan(e,t),ArgumentAsSceneExecuted:e=>this.ArgumentAsSceneExecuted(e),SequenceData:null}}Commit(){const e=t=>{if(t.RightArgumentType!=j.Null)return e(t.RightArgument);null!=this._rawExistingSequenceTasks&&(t.Tasks=this._rawExistingSequenceTasks)};if(null==this._result)throw new se("Sequence are not initialized! Not found root sequence.");return this._editingExistingSequence&&e(this._result),{GetSupportedTypesOfTasks:()=>this.GetSupportedTaskTypesAsync(),DeviceTask:e=>this.DeviceTask(e),DelayTask:e=>this.DelayTask(e),NotifyTask:e=>this.NotifyTask(e),LockExecutionTask:e=>this.LockExecutionTask(e),RemoveTask:e=>this.RemoveTask(e),Build:()=>this.Build(),BuildToISequence:()=>this._service.MapSequence(JSON.parse(JSON.stringify(this._result))),ValidateScene:()=>this.ValidateScene()}}DeviceTask(e){if(this._tmpTask=this.ParseDeviceTask(e),null==this._result)throw new Error("No context!");return{AddTask:()=>this.AddTask(),EditTask:e=>this.EditTask(e),TaskId:T.M0.GenerateMd5(JSON.stringify(this._tmpTask))}}ParseDeviceTask(e){const t=new X;return t.Channel=e.Channel,t.DeviceGuid=e.DeviceGuid,t.ControlFeature=this.MapTaskTypeToControlFeature(e.TaskType),t.Data={},t.Data.Channel=e.Channel,e.TaskType==R.MO.SetBlindPosition||e instanceof O.Tz?(t.Data.Position=e.Position,t.Data.Action=e.Action):e.TaskType==R.MO.SetBlindPositionSimple||e instanceof O.VV?(t.Data.Action=e.Action,t.Data.Position=0):e.TaskType==R.MO.SetLightColor||e instanceof O.ec?(t.Data.R=e.R,t.Data.G=e.G,t.Data.B=e.B):e.TaskType==R.MO.SetLightTemperature||e instanceof O.jv?t.Data.Temperature=e.Temperature:e.TaskType==R.MO.SetLightBrightness||e instanceof O._t?t.Data.Brightness=e.Brightness:e.TaskType==R.MO.SetTemperature||e instanceof O.Xk?t.Data.Temperature=e.Temperature:e.TaskType==R.MO.TurnOnWithTime||e instanceof O.YU?t.Data.SwitchOffDelaySeconds=e.SwitchOffDelaySeconds:e.TaskType==R.MO.SetLightBrightnessDynamicly||e instanceof O.ol?t.Data.Brightness=e.Brightness:e.TaskType==R.MO.SetBlindOpenCloseTime||e instanceof O.F$?(t.Data.CloseTime=e.Data.CloseTime,t.Data.OpenTime=e.Data.OpenTime):e.TaskType==R.MO.SetBlindMicroventilation||e instanceof O.F6?t.Data.Position=e.Position:e.TaskType==R.MO.SetFacadePosition||e instanceof O.uv?(t.Data.FacadeAction=e.FacadeAction,t.Data.Position=e.Position,t.Data.Tilt=e.Tilt):(e.TaskType==R.MO.LightRGBW||e instanceof O.Bv)&&(t.Data.R=e.Data.R,t.Data.G=e.Data.G,t.Data.B=e.Data.B,t.Data.W=e.Data.W,t.Data.Brightness=e.Data.Brightness),t}DelayTask(e){const t=new ee;if(t.Delay=e.Delay.Value,this._tmpTask=t,null==this._result)throw new Error("No context!");return{AddTask:()=>this.AddTask(),EditTask:e=>this.EditTask(e),TaskId:T.M0.GenerateMd5(JSON.stringify(t))}}NotifyTask(e){if(e.NotifyType==f.Email)throw new ie("NotifyType 'Email' is not supported!");if(e.NotifyType==f.None)throw new Error("NotifyType mus be set!");if(""==e.Message)throw new re("Message must be set!");if(e.Message.length>1e3)throw new re("Message is too long! Max length is 1000 characters.");const t=new ne;if(t.NotifyType=e.NotifyType,t.Message=e.Message,t.NotificationClients=e.NotificationClients,t.Title=this._sequenceName,this._tmpTask=t,null==this._result)throw new Error("No context!");return{AddTask:()=>this.AddTask(),EditTask:e=>this.EditTask(e),TaskId:T.M0.GenerateMd5(JSON.stringify(t))}}LockExecutionTask(e){const t=new te;if(t.LockType=e.LockType,t.LockType==v.Timeout&&"00:00:00"!=t.LockEndHour)throw new ie("Parameter LockEndHour at lock type `Timeout` must be default!");if(t.LockStartHour=e.LockStartHour.Value,t.LockEndHour=e.LockEndHour.Value,t.ResetLockScenesGuids=e.ResetLockScenesGuids,this._tmpTask=t,null==this._result)throw new Error("No context!");return{AddTask:()=>this.AddTask(),EditTask:e=>this.EditTask(e),TaskId:T.M0.GenerateMd5(JSON.stringify(t))}}AddTask(){const e=t=>{var n;if(t.RightArgumentType!=j.Null)return e(t.RightArgument);if(null==this._tmpTask)throw Error("No task context!");void 0!==t.Tasks.DevicesTasks&&null!==t.Tasks.DevicesTasks||(t.Tasks.DevicesTasks=[]),this._tmpTask instanceof X&&t.Tasks.DevicesTasks.push(structuredClone(this._tmpTask)),t.Tasks.ControllerTasks.push(structuredClone(this._tmpTask)),this._tmpTask=null,null===(n=_.h.Log)||void 0===n||n.Debug(`Task added to sequence: \n${JSON.stringify(this._tmpTask)} \ntasks on a list: \n${JSON.stringify(t.Tasks)}`)};if(null==this._result)throw new Error("No context!");return e(this._result),{GetSupportedTypesOfTasks:()=>this.GetSupportedTaskTypesAsync(),DeviceTask:e=>this.DeviceTask(e),DelayTask:e=>this.DelayTask(e),NotifyTask:e=>this.NotifyTask(e),LockExecutionTask:e=>this.LockExecutionTask(e),RemoveTask:e=>this.RemoveTask(e),Build:()=>this.Build(),BuildToISequence:()=>this._service.MapSequence(JSON.parse(JSON.stringify(this._result))),ValidateScene:()=>this.ValidateScene()}}EditTask(e){const t=n=>{var r;if(n.RightArgumentType!=j.Null)return t(n.RightArgument);if(null==this._tmpTask)throw Error("No task context!");if(null==n.Tasks.ControllerTasks||0==n.Tasks.ControllerTasks.length)throw new oe("Task not found, cannot edit!");this._tmpTask instanceof X&&null!=n.Tasks.DevicesTasks&&(n.Tasks.DevicesTasks=n.Tasks.DevicesTasks.map((t=>T.M0.GenerateMd5(JSON.stringify(t))==e?structuredClone(this._tmpTask):t))),n.Tasks.ControllerTasks=n.Tasks.ControllerTasks.map((t=>T.M0.GenerateMd5(JSON.stringify(t))==e?structuredClone(this._tmpTask):t)),this._tmpTask=null,null===(r=_.h.Log)||void 0===r||r.Debug(`Task edited in sequence: \n${JSON.stringify(this._tmpTask)} \ntasks on a list: \n${JSON.stringify(n.Tasks)}`)};if(null==this._result)throw new Error("No context!");return t(this._result),{GetSupportedTypesOfTasks:()=>this.GetSupportedTaskTypesAsync(),DeviceTask:e=>this.DeviceTask(e),DelayTask:e=>this.DelayTask(e),NotifyTask:e=>this.NotifyTask(e),LockExecutionTask:e=>this.LockExecutionTask(e),RemoveTask:e=>this.RemoveTask(e),Build:()=>this.Build(),BuildToISequence:()=>this._service.MapSequence(JSON.parse(JSON.stringify(this._result))),ValidateScene:()=>this.ValidateScene()}}RemoveTask(e){const t=(e,n)=>{var r,s;if(e.RightArgumentType!=j.Null)return t(e.RightArgument,n);{const t=e.Tasks.ControllerTasks.filter((e=>T.M0.GenerateMd5(JSON.stringify(e))!=n));if(e.Tasks.ControllerTasks=null==t?[]:t,null===(s=null===(r=e.Tasks)||void 0===r?void 0:r.DevicesTasks)||void 0===s?void 0:s.any()){const t=e.Tasks.DevicesTasks.filter((e=>T.M0.GenerateMd5(JSON.stringify(e))!=n));e.Tasks.DevicesTasks=null==t?[]:t}}};if(null==this._result)throw Error("Cannot remove task, sequence not configured!");t(this._result,e)}MapTaskTypeToControlFeature(e){switch(e){case R.MO.Unknown:throw new re("Unsupported task type!");case R.MO.SetBlindPosition:case R.MO.SetBlindPositionSimple:return G.Y.SetBlindPosition;case R.MO.SetBlindMicroventilation:return G.Y.SetBlindMicroventilation;case R.MO.TurnOff:return G.Y.TurnOff;case R.MO.TurnOn:return G.Y.TurnOn;case R.MO.TurnOnWithTime:return G.Y.TurnOnWithTimeout;case R.MO.TogleState:return G.Y.ToggleState;case R.MO.SetLightBrightnessDynamicly:return G.Y.SetLightBrightnessDynamicly;case R.MO.SetLightBrightness:return G.Y.SetLightBrightness;case R.MO.SetLightColor:return G.Y.SetLightColor;case R.MO.SetLightTemperature:return G.Y.SetLightTemperature;case R.MO.PairDevice:case R.MO.UnpairDevice:throw new re("Unsupported task type!");case R.MO.IdentifyDevice:return G.Y.IdentifyDevice;case R.MO.GetChannelsState:return G.Y.GetState;case R.MO.GetPowerMeasurements:case R.MO.GetAvailableData:case R.MO.MultipleDataRequest:throw new re("Unsupported task type!");case R.MO.SetBlindOpenCloseTime:return G.Y.SetBlindOpenCloseTime;case R.MO.SetTemperature:return G.Y.SetTemperature;case R.MO.ChangeGatePositionPulse:return G.Y.GatePulse;case R.MO.ChangeGatewayPositionPulse:return G.Y.GatewayPulse;case R.MO.SetFacadePosition:case R.MO.GetFacadeType:return G.Y.SetFacadePositionAndTilt;case R.MO.LightRGBW:return G.Y.LightRGBW;default:throw new re("Unsupported task type!")}}GetSupportedTaskTypesAsync(){return e=this,t=void 0,r=function*(){const e=yield S.j.Get(W.OA.ServiceName).GetSoftwareRuntimeInfoAsync(),[t,n]=e.SoftwareVersion.split(".").map((e=>parseInt(e))),r=[p.DeviceTask];return(t>5||5==t&&n>=27)&&r.push(p.DelayTask),(t>5||5==t&&n>=37)&&r.push(p.LockExecutionTask),(t>6||6==t&&n>=3)&&r.push(p.NotifyTaskAppNotify),r},new((n=void 0)||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}));var e,t,n,r}Build(){const e=t=>{if(t.RightArgumentType!=j.Null)return e(t.RightArgument);t.Tasks.ControllerTasks=t.Tasks.ControllerTasks.map((e=>(Object.hasOwn(e,"_taskGuid")&&delete e._taskGuid,e)))};if(null!=this._result)return e(this._result),this._result;throw Error("Cannot build sequence, sequence not configured!")}FindArgumentWithGuid(e,t){return e.Guid==t?e:e.RightArgumentType==j.Condition?this.FindArgumentWithGuid(e.RightArgument,t):null}GetAllowedArguments(){const e=[];return null==this._result?(e.push({ArgumentType:V.ArgumentAsAstronomicalClockWithOffset,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:V.ArgumentAsDaysOfWeek,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:V.ArgumentAsDeviceState,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:V.ArgumentAsSceneExecuted,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:V.ArgumentAsTime,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:V.ArgumentAsTimeSpan,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1})):null!=this._result&&(null==this._result.RightArgument||this._result.RightArgument instanceof Z)&&(this._result.LeftArgumentType==j.ArgumentAsDaysOfWeek&&(e.push({ArgumentType:V.ArgumentAsTime,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!0}),e.push({ArgumentType:V.ArgumentAsAstronomicalClockWithOffset,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!0})),this._result.LeftArgumentType==j.ArgumentAsTime&&e.push({ArgumentType:V.ArgumentAsDaysOfWeek,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!1}),this._result.LeftArgumentType==j.ArgumentAsAstronomicalClockWithOffset&&e.push({ArgumentType:V.ArgumentAsDaysOfWeek,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!1})),0==e.any((e=>e.ArgumentType==V.ArgumentAsAstronomicalClockWithOffset))&&e.push({ArgumentType:V.ArgumentAsAstronomicalClockWithOffset,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!0}),0==e.any((e=>e.ArgumentType==V.ArgumentAsDaysOfWeek))&&e.push({ArgumentType:V.ArgumentAsDaysOfWeek,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!0}),0==e.any((e=>e.ArgumentType==V.ArgumentAsDeviceState))&&e.push({ArgumentType:V.ArgumentAsDeviceState,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!0}),0==e.any((e=>e.ArgumentType==V.ArgumentAsSceneExecuted))&&e.push({ArgumentType:V.ArgumentAsSceneExecuted,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),0==e.any((e=>e.ArgumentType==V.ArgumentAsTime))&&e.push({ArgumentType:V.ArgumentAsTime,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!0}),0==e.any((e=>e.ArgumentType==V.ArgumentAsTimeSpan))&&e.push({ArgumentType:V.ArgumentAsTimeSpan,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e}ValidateScene(){var e,t,n,r;if(null==this._result)throw new Error("No context!");const s=[],o=(e,t,n)=>e.RightArgumentType==j.Null?e.LeftArgumentType==t&&e.AtMeetCondition==n?e:null:e.LeftArgumentType==t&&e.AtMeetCondition==n?e:o(e.RightArgument,t,n),i=o(this._result,j.ArgumentAsDaysOfWeek,!0);null!=i&&((null===(e=i.RightArgument)||void 0===e?void 0:e.LeftArgumentType)==j.ArgumentAsTime||(null===(t=i.RightArgument)||void 0===t?void 0:t.LeftArgumentType)==j.ArgumentAsAstronomicalClockWithOffset)&&s.push(q.OptimizeDayOfWeekArgument);const a=o(this._result,j.ArgumentAsTime,!0);return null!=a&&(null===(n=a.RightArgument)||void 0===n?void 0:n.LeftArgumentType)==j.ArgumentAsDaysOfWeek&&(null===(r=a.RightArgument)||void 0===r?void 0:r.AtMeetCondition)&&s.push(q.OptimizeAtInDayOfWeekArgument),{IsValid:0==s.length,Errors:s,TryFix:()=>this.TryFix(s),Ignore:()=>this.Commit()}}TryFix(e){if(null==this._result)throw new Error("No context!");if(e.includes(q.OptimizeDayOfWeekArgument)){const e=t=>{var n,r;return t.LeftArgumentType==j.ArgumentAsDaysOfWeek?(null===(n=t.RightArgument)||void 0===n?void 0:n.LeftArgumentType)==j.ArgumentAsTime||(null===(r=t.RightArgument)||void 0===r?void 0:r.LeftArgumentType)==j.ArgumentAsAstronomicalClockWithOffset?t:e(t.RightArgument):t.RightArgumentType==j.Null?null:e(t.RightArgument)},t=e(this._result);if(null==t)throw new Error("Something wrong! Cannot find 'days of week' argument! Cannot fix!");const n=structuredClone(t),r=t.RightArgument;t.LeftArgument=r.LeftArgument,t.LeftArgumentType=r.LeftArgumentType,t.HandledType=r.HandledType,r.LeftArgument=n.LeftArgument,r.LeftArgumentType=n.LeftArgumentType,r.HandledType=n.HandledType,r.AtMeetCondition=!1}if(e.includes(q.OptimizeAtInDayOfWeekArgument)){const e=t=>{var n,r;return t.LeftArgumentType==j.ArgumentAsTime?(null===(n=t.RightArgument)||void 0===n?void 0:n.LeftArgumentType)==j.ArgumentAsDaysOfWeek&&(null===(r=t.RightArgument)||void 0===r?void 0:r.AtMeetCondition)?t:e(t.RightArgument):t.RightArgumentType==j.Null?null:e(t.RightArgument)},t=e(this._result);if(null==t)throw new Error("Something wrong! Cannot find 'time' argument! Cannot fix!");t.RightArgument.AtMeetCondition=!1}return this.Commit()}}!function(e){e.OptimizeDayOfWeekArgument="OptimizeDayOfWeekArgument",e.OptimizeAtInDayOfWeekArgument="OptimizeAtInDayOfWeekArgument"}(q||(q={})),function(e){e.Unknown="Unknown",e.ArgumentAsAstronomicalClockWithOffset="ArgumentAsAstronomicalClockWithOffset",e.ArgumentAsDaysOfWeek="ArgumentAsDaysOfWeek",e.ArgumentAsTimeSpan="ArgumentAsTimeSpan",e.ArgumentAsTime="ArgumentAsTime",e.ArgumentAsDeviceState="ArgumentAsDeviceState",e.ArgumentAsSceneExecuted="ArgumentAsSceneExecuted"}(V||(V={}));class Q{constructor(){this.Tasks=new z,this.Guid="",this.ObjectType=1,this.Name="",this.Icon="",this.AtMeetCondition=!1,this.ExecuteOnce=!1,this.IsDisabled=!1,this.HandledType=u.Unknown,this.ConditionType=l.Unknown,this.ConditionTimeout=0,this.LeftArgumentType=j.Null,this.RightArgumentType=j.Null,this.LeftArgument=new K({},j.Null),this.RightArgument=new Z}}class Z{constructor(){this.HandledType=0,this.Argument=null}}class K{constructor(e,t){this.Argument=e,this.HandledType=t}}class Y{constructor(){this.DeviceStateType=d.Unknown,this.Channel=0,this.DeviceGuid="",this.ComparisonMethod=s.Default,this.ComparisonParams=null,this.CheckedDeviceState={}}}class z{constructor(){this.ControllerTasks=[],this.DevicesTasks=[]}}class J{constructor(){this.Guid=C.q.NewGuid(),this.RunParallel=!1,this.TaskType=a.Unknown}}class X extends J{constructor(){super(...arguments),this.TaskType=a.DeviceTask,this.DeviceGuid="",this.Channel=0,this.ControlFeature=G.Y.TurnOn}}class ee extends J{constructor(){super(...arguments),this.TaskType=a.DelayTask,this.Delay="00:00:00"}}class te extends J{constructor(){super(...arguments),this.TaskType=a.LockExecution,this.LockType=v.Timeout,this.LockStartHour="00:00:00",this.LockEndHour="00:00:00",this.ResetLockScenesGuids=[]}}class ne extends J{constructor(){super(...arguments),this.TaskType=a.NotifyTask,this.Title="",this.Message="",this.NotifyType=f.None,this.NotificationClients=[]}}!function(e){e[e.Null=0]="Null",e[e.Condition=1]="Condition",e[e.ConditionGroup=2]="ConditionGroup",e[e.ArgumentAsInt=3]="ArgumentAsInt",e[e.ArgumentAsTimeSpan=4]="ArgumentAsTimeSpan",e[e.ArgumentAsBoolean=5]="ArgumentAsBoolean",e[e.ArgumentAsTimeout=6]="ArgumentAsTimeout",e[e.ArgumentAsDayOfWeek=7]="ArgumentAsDayOfWeek",e[e.ArgumentAsDaysOfWeek=8]="ArgumentAsDaysOfWeek",e[e.ArgumentAsAstronomicalClock=9]="ArgumentAsAstronomicalClock",e[e.ArgumentAsTime=10]="ArgumentAsTime",e[e.ArgumentAsDeviceState=11]="ArgumentAsDeviceState",e[e.ArgumentAsNumber=12]="ArgumentAsNumber",e[e.ArgumentAsAstronomicalClockWithOffset=13]="ArgumentAsAstronomicalClockWithOffset",e[e.ArgumentAsConditionInfo=14]="ArgumentAsConditionInfo"}(j||(j={}));class re extends Error{constructor(e){super(e),this.message=e,this.name="BadParametersScenesBuilderException"}}class se extends Error{constructor(e){super(e),this.message=e,this.name="SequenceNotFoundScenesBuilderException"}}class oe extends Error{constructor(e){super(e),this.message=e,this.name="TaskNotFoundScenesBuilderException"}}class ie extends Error{constructor(e){super(e),this.message=e,this.name="UnsupportedArgumentScenesBuilderException"}}var ae,ce=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class ue{constructor(){this._connection=S.j.Get(M.G.ServiceName),this._configurationService=S.j.Get(D.u.ServiceName)}GetServiceName(){return ue.ServiceName}GetSequencesListAsync(){return ce(this,void 0,void 0,(function*(){var e,t;const n=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new le,12e3,!1);return null===(t=_.h.Log)||void 0===t||t.Debug(`GetSequencesListAsync result:\n ${JSON.stringify(n)}}`),null==n?new U.ZR(r.OtherError,"Cannot get sequences list - response is null."):n.Status!=A.nW.OK?new U.ZR(r.OtherError,`Cannot get sequences list - controller responded with response code ${n.Status}.`):null==n.Data?new U.ZR(r.NoData,"Cannot get sequences list - controller responded with status OK, but response does not contain data!"):n.Data}))}GetSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t;let n="";n="string"==typeof e?e:e.Guid;const s=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new de(n),12e3,!1);if(null==s)return new U.ZR(r.OtherError,"Cannot get sequence - response is null.");if(s.Status!=A.nW.OK)return new U.ZR(r.OtherError,`Cannot get sequence - controller responded with response code ${s.Status}.`);if(null==s.Data)return new U.ZR(r.NoData,"Cannot get sequence - controller responded with status OK, but response does not contain data!");const o=s.Data;return this.MapSequence(o)}))}GetSequenceBuilder(e,t){return new H(e,t)}CreateSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t,n,r,s;try{yield this._configurationService.EnterConfigurationModeAsync(),null===(t=_.h.Log)||void 0===t||t.Debug(`Creating sequence ${e.Name} json: \n${JSON.stringify(e)}`);const r=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new fe(e),2e4,!1);return null==r||null==r.Status?A.nW.Error:r.Status}catch(t){return null===(r=_.h.Log)||void 0===r||r.Error(`Creating sequence ${e.Name} error: ${t}`),A.nW.FatalError}finally{null===(s=_.h.Log)||void 0===s||s.Error(ue.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! CreateSequenceAsync()"),yield this._configurationService.ExitConfigurationModeAsync()}}))}CheckIfSequenceIsUsedInAnotherSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t;try{let n="";n="string"==typeof e?e:e.Guid;const s=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new he(n),12e3,!1);if(null==s)return new U.ZR(r.OtherError,"Cannot get sequence - response is null.");switch(s.Status){case A.nW.WrongData:return new U.ZR(r.InvalidSceneGuid,"Cannot check if sequence is used in another sequence! Sequence not found, invalid sequence guid!");case A.nW.OK:return null==s.Data?new U.ZR(r.NoData,"Cannot get sequence - controller responded with status OK, but response does not contain data!"):s.Data;default:return new U.ZR(r.OtherError,`Cannot check if sequence is used in another sequence! Controller responded with code: ${s.Status}`)}}catch(e){return new U.ZR(r.FatalError,`Cannot check if sequence is used in another sequence! Fatal error! ${e}`)}}))}DeleteSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t,n;try{let n="";n="string"==typeof e?e:e.Guid,yield this._configurationService.EnterConfigurationModeAsync();const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new me(n),12e3,!1);return null==r||null==r.Status?A.nW.Error:r.Status}catch(e){return A.nW.FatalError}finally{null===(n=_.h.Log)||void 0===n||n.Error(ue.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! DeleteSequenceAsync()"),yield this._configurationService.ExitConfigurationModeAsync()}}))}EditSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t,n,r;try{const n={Guid:e.Guid,Icon:e.Icon,Name:e.Name,Condition:e};yield this._configurationService.EnterConfigurationModeAsync();const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new ve(n),2e4,!1);return null==r||null==r.Status?A.nW.Error:r.Status}catch(t){return null===(n=_.h.Log)||void 0===n||n.Error(`Editing sequence ${e.Name} error: ${t}`),A.nW.FatalError}finally{null===(r=_.h.Log)||void 0===r||r.Error(ue.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! EditSequenceAsync()"),yield this._configurationService.ExitConfigurationModeAsync()}}))}EnableSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t;let n="";n="string"==typeof e?e:e.Guid;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new ye(n),12e3,!1);return null==r||null==r.Status?A.nW.Error:r.Status}))}DisableSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t;let n="";n="string"==typeof e?e:e.Guid;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new we(n),12e3,!1);return null==r||null==r.Status?A.nW.Error:r.Status}))}RunSequenceAsync(e){return ce(this,void 0,void 0,(function*(){let t="";if("string"==typeof e){const n=yield this.GetSequencesListAsync();if(null!=n.Type)return A.nW.Error;{const r=n.find((t=>t.Guid==e));if(!r)return A.nW.Error;t=r.DeviceGuid}}else t=e.DeviceGuid;const n=new O.h7;switch(n.Channel=1,n.DeviceGuid=t,yield S.j.Get(E.N7.ServiceName).ExecuteDeviceTaskAsync({Guid:t},n)){case b.T.Executed:return A.nW.OK;case b.T.DeviceNotFound:return A.nW.WrongData;default:return A.nW.Error}}))}GetUtilsAsync(){return ce(this,void 0,void 0,(function*(){const e=yield this.SunCalculatorAsync();return{GetSunRiseTime:e.GetSunRiseTime,GetSunSetTime:e.GetSunSetTime,ParseLinearScaleToLux:this._parseLinearScaleToLux,ParseLuxToLinearScale:this._parseLuxToLinearScale}}))}_parseLinearScaleToLux(e){if(!(e<0||e>1))return Math.round(Math.pow(10,5*e))}_parseLuxToLinearScale(e){if(e<=0)return 0;const t=Math.log10(e)/5;return t>1?1:t}SunCalculatorAsync(){return ce(this,void 0,void 0,(function*(){var e;const t=S.j.Get(k.O.ServiceName),n=new I.E$;let r=!1;n.Latitude=49.9958888026741,n.Longitude=18.9172596008914;try{if(yield t.IsControllerGeolocationSetAsync()){const e=yield t.GetControlllerGeolocationAsync();e instanceof I.D7&&(n.Latitude=e.Latitude,n.Longitude=e.Longitude)}}catch(t){null===(e=_.h.Log)||void 0===e||e.Warning(`Cannot get localization data, using default values: 49.9958888026741, 18.9172596008914. Error: ${t}`)}const s=e=>{let t=7.95204*Math.sin(.01768*e+3.03217)+9.98906*Math.sin(.03383*e+3.4687)+4*(n.Longitude-15*Math.round(n.Longitude/15));return((e=new Date)=>{const t=new Date(e.getFullYear(),0,1).getTimezoneOffset(),n=new Date(e.getFullYear(),6,1).getTimezoneOffset();return Math.max(t,n)!==e.getTimezoneOffset()})()&&(t-=60),t},o=e=>Math.asin(-.39795*Math.cos(2*Math.PI*(e+10)/365)),i=e=>{const t=n.Latitude*Math.PI/180;let r=Math.sin(t)*Math.sin(e)/(Math.cos(t)*Math.cos(e));return r=(e=>(e<-1&&(e=-1),e>1&&(e=1),e))(r),r},a=e=>{const t=Math.ceil(e/60),n=e-60*t,r=new Date;return new Date(r.getFullYear(),r.getMonth(),r.getDate(),t,n)},c=e=>{const t=new Date;t.setDate(t.getDate()+e);const n=(u=t,Math.floor((u.valueOf()-new Date(u.getFullYear(),0,0).valueOf())/1e3/60/60/24));var u;const l=s(n),d=o(n),h=((e,t)=>{let n=720-720/Math.PI*Math.acos(-e)-t;return n<0&&(n+=1440),n})(i(d),l),g=a(h);return new Date>g&&!r?(r=!0,c(1)):(r=!1,new Date(t.getFullYear(),t.getMonth(),t.getDate(),g.getHours(),g.getMinutes()))},u=e=>{const t=new Date;t.setDate(t.getDate()+e);const n=(c=t,Math.floor((c.valueOf()-new Date(c.getFullYear(),0,0).valueOf())/1e3/60/60/24));var c;const l=s(n),d=o(n),h=i(d),g=Math.floor(((e,t)=>{let n=720+720/Math.PI*Math.acos(-e)-t;return n>1439&&(n-=1439),n})(h,l)),p=a(g);return new Date>p&&!r?(r=!0,u(1)):(r=!1,new Date(t.getFullYear(),t.getMonth(),t.getDate(),p.getHours(),p.getMinutes()))};return{GetSunRiseTime:()=>c(0),GetSunSetTime:()=>u(0)}}))}MapSequence(e,t=!1){const n=Object.assign({},e),r=e=>{if(e.RightArgumentType!=ae.Null)return!Object.hasOwn(e.Tasks,"ControllerTasks")&&Object.hasOwn(e.Tasks,"DevicesTasks")&&delete Object.assign(e.Tasks,{ControllerTasks:e.Tasks.DevicesTasks}).DevicesTasks,r(e.RightArgument);!Object.hasOwn(e.Tasks,"ControllerTasks")&&Object.hasOwn(e.Tasks,"DevicesTasks")&&(delete Object.assign(e.Tasks,{ControllerTasks:e.Tasks.DevicesTasks}).DevicesTasks,e.Tasks.ControllerTasks.map((e=>{e.TaskType=a.DeviceTask,e.RunParallel=!1}))),null!=e.Tasks.ControllerTasks&&e.Tasks.ControllerTasks.map((e=>{null==(null==e?void 0:e.Guid)&&(e.Guid=C.q.NewGuid())}))};return r(e),n._rawRequestData=JSON.parse(JSON.stringify(e)),t?(n.RightArgument=null,n.RightArgumentType=g.Null):(n.RightArgumentType=this.MapArgumentType(e.RightArgumentType),n.RightArgument=this.MapRightArgument(e.RightArgument,n.RightArgumentType)),n.LeftArgumentType=this.MapArgumentType(e.LeftArgumentType),n.LeftArgument=this.MapLeftArgument(e.LeftArgument,n.LeftArgumentType),n.Tasks.ControllerTasks=this.MapControllerTasks(e.Tasks.ControllerTasks),void 0===n.DoesHaveTriggers&&(n.DoesHaveTriggers=n.LeftArgumentType==g.Null),n}MapRightArgument(e,t){return 0==e.HandledType||(e.LeftArgumentType=this.MapArgumentType(e.LeftArgumentType),e.LeftArgument=this.MapLeftArgument(e.LeftArgument,e.LeftArgumentType),e.Tasks.ControllerTasks=this.MapControllerTasks(e.Tasks.ControllerTasks),Object.hasOwn(e.Tasks,"DevicesTasks")&&delete e.Tasks.DevicesTasks,t===g.Condition&&(e.RightArgumentType=this.MapArgumentType(e.RightArgumentType),e.RightArgument=this.MapRightArgument(e.RightArgument,e.RightArgumentType))),e}MapLeftArgument(e,t){let n=new ge;switch(n.HandledType=e.HandledType,t){case g.ArgumentAsAstronomicalClock:n.Argument.ArgumentAsAstronomicalClock={Position:e.Argument};break;case g.ArgumentAsAstronomicalClockWithOffset:n.Argument.ArgumentAsAstronomicalClockWithOffset={Offset:e.Argument.Offset,Position:e.Argument.Position};break;case g.ArgumentAsBoolean:n.Argument.ArgumentAsBoolean=e.Argument;break;case g.ArgumentAsDayOfWeek:n.Argument.ArgumentAsDayOfWeek=e.Argument;break;case g.ArgumentAsDaysOfWeek:n.Argument.ArgumentAsDaysOfWeek=e.Argument;break;case g.ArgumentAsInt:n.Argument.ArgumentAsInt=e.Argument;break;case g.ArgumentAsTimeout:n.Argument.ArgumentAsTimeout=e.Argument;break;case g.ArgumentAsTimeSpan:n.Argument.ArgumentAsTimeSpan={days:e.Argument.days,hours:e.Argument.hours,minutes:e.Argument.minutes,seconds:e.Argument.seconds};break;case g.ArgumentAsTime:n.Argument.ArgumentAsTime={Hour:e.Argument.Hour,Minute:e.Argument.Minute,Second:e.Argument.Second};break;case g.ArgumentAsDeviceState:{const t=new x;t.Type=this.MapDeviceStateTypeToResponseType(e.Argument.DeviceStateType),t.SetCheckDeviceState(this.CreateDeviceState(e.Argument.CheckedDeviceState,e.Argument.Channel,t.Type)),t.DeviceGuid=e.Argument.DeviceGuid,t.ComparisonMethod=null==e.Argument.ComparisonMethod?s.Default:e.Argument.ComparisonMethod,null!=e.Argument.ComparisonParams&&Object.entries(e.Argument.ComparisonParams).forEach((e=>{switch(e[0]){case"DeltaValue":case"StateRepeatCount":t.SetComparisonParam(o[e[0]],new F(e[1]));break;case"DeltaCalculationTimeRange":case"StateRepeatTimeRange":t.SetComparisonParam(o[e[0]],new L(e[1]))}})),n.Argument.ArgumentAsDeviceState=t;break}case g.ArgumentAsConditionInfo:n.Argument.ArgumentAsConditionInfo={DeviceGuid:e.Argument.DeviceGuid}}return n}MapArgumentType(e){return g[ae[e]]}MapDeviceStateTypeToResponseType(e){switch(e){case d.BatteryState:return R.mQ.BatteryState;case d.BinarySensor:return R.mQ.BinarySensorState;case d.BlindPosition:return R.mQ.BlindPosition;case d.Brightness:return R.mQ.MeasuredBrightness;case d.ButtonState:return R.mQ.RemoteButtonState;case d.ChannelOnOff:return R.mQ.ChannelOnOffState;case d.DoorBell:return R.mQ.DoorBellState;case d.Energy:return R.mQ.MeasuredEnergy;case d.FloodSensor:return R.mQ.FloodSensorState;case d.GatePosition:return R.mQ.GatePosition;case d.LightBrightness:return R.mQ.LightBrightness;case d.LightColor:return R.mQ.LightColor;case d.LightTemperature:return R.mQ.LightWarmth;case d.ReedState:return R.mQ.ReedState;case d.SmokeSensor:return R.mQ.SmokeSensorState;case d.Temperature:return R.mQ.MeasuredTemperature;case d.Humidity:return R.mQ.HumiditySensorState;case d.BlindsControlButton:return R.mQ.BlindRemoteButtonState;case d.FacadeControlButton:return R.mQ.FacadeRemoteButtonState;case d.Movement:return R.mQ.MovementSensorState;case d.AirPressure:return R.mQ.PressureSensorState;case d.WindSpeed:return R.mQ.WindSpeedState;case d.WindThreshold:return R.mQ.CurrentWindThreshold;default:return R.mQ.Unknown}}CreateDeviceState(e,t,n){switch(n){case R.mQ.BatteryState:return{Channel:t,StateReliability:N.QI.Unconfident,Percentage:e.Percentage,State:e.State,Time:""};case R.mQ.BinarySensorState:return{Channel:t,StateReliability:N.QI.Unconfident,State:e.State,Time:""};case R.mQ.BlindPosition:return{Channel:t,StateReliability:N.QI.Unconfident,Position:e.Position,RawPosition:e.RawPosition,Time:""};case R.mQ.LightBrightness:case R.mQ.MeasuredBrightness:return{Channel:t,StateReliability:N.QI.Unconfident,Brightness:e.Brightness,Time:""};case R.mQ.RemoteButtonState:case R.mQ.ChannelOnOffState:case R.mQ.DoorBellState:return{Channel:t,StateReliability:N.QI.Unconfident,State:e.State,Time:""};case R.mQ.MeasuredEnergy:{const n=new Map;for(let[t,r]of Object.entries(e.MeasurementParameters))n.set(N.M0[t],r);return{Channel:t,StateReliability:N.QI.Unconfident,MeasurementParameters:n,Time:""}}case R.mQ.FloodSensorState:return{Channel:t,StateReliability:N.QI.Unconfident,State:e.State,Time:""};case R.mQ.GatePosition:return{Channel:t,StateReliability:N.QI.Unconfident,Position:e.Position,PositionType:e.PositionType,Time:""};case R.mQ.LightColor:return{Channel:t,StateReliability:N.QI.Unconfident,R:e.R,G:e.G,B:e.B,Time:""};case R.mQ.LightWarmth:return{Channel:t,StateReliability:N.QI.Unconfident,Temperature:e.Temperature,Time:""};case R.mQ.ReedState:return{Channel:t,StateReliability:N.QI.Unconfident,State:e.State,Time:""};case R.mQ.SmokeSensorState:throw new $("Unsupported device state!");case R.mQ.MeasuredTemperature:return{Channel:t,StateReliability:N.QI.Unconfident,Temperature:e.Temperature,Time:"",Type:e.Type};case R.mQ.HumiditySensorState:return{Channel:t,StateReliability:N.QI.Unconfident,Humidity:e.Humidity,Time:"",Type:e.Type};case R.mQ.BlindRemoteButtonState:return{Channel:t,StateReliability:N.QI.Unconfident,State:e.State,Time:""};case R.mQ.LightRGBWState:return{StateReliability:N.QI.Unconfident,Channel:t,Time:"",Brightness:100,R:e.R,G:e.G,B:e.B,W:e.W};case R.mQ.FacadeRemoteButtonState:return{Channel:t,Time:"",StateReliability:N.QI.Unconfident,State:e.State};case R.mQ.MovementSensorState:return{Channel:t,Time:"",StateReliability:N.QI.Unconfident,Movement:e.Movement,Intensity:e.Intensity};case R.mQ.PressureSensorState:return{Channel:t,Time:"",StateReliability:N.QI.Unconfident,Pressure:e.Pressure,PressureType:e.PressureType};case R.mQ.WindSpeedState:return{Channel:t,Time:"",StateReliability:N.QI.Unconfident,Value:e.Value};case R.mQ.CurrentWindThreshold:return{Channel:t,Time:"",StateReliability:N.QI.Unconfident,WindThreshold:e.WindThreshold};case R.mQ.Unknown:return new N.gX;default:throw new $("Unsupported device state!")}}MapDeviceTask(e){var t;let n=new P.E,r=e;switch(null===(t=_.h.Log)||void 0===t||t.Debug(`[TASK] object: ${JSON.stringify(r)}`),r.ControlFeature){case G.Y.TurnOn:n=new O.h7,n.TaskType=R.MO.TurnOn;break;case G.Y.TurnOff:n=new O.fq,n.TaskType=R.MO.TurnOff;break;case G.Y.ToggleState:n=new O.Sz,n.TaskType=R.MO.TogleState;break;case G.Y.SetBlindPosition:{const e=S.j.Get(E.N7.ServiceName).GetDevice(r.DeviceGuid);(null==e?void 0:e.AvailableTaskTypes.any((e=>"IBlindPositionSimple"==e.InterfaceType)))?(n=new O.VV,n.TaskType=R.MO.SetBlindPositionSimple,n.Action=r.Data.Action):(n=new O.Tz,n.TaskType=R.MO.SetBlindPosition,n.Action=r.Data.Action,n.Position=r.Data.Position);break}case G.Y.SetLightColor:n=new O.ec,n.TaskType=R.MO.SetLightColor,n.R=r.Data.R,n.G=r.Data.G,n.B=r.Data.B;break;case G.Y.SetLightTemperature:n=new O.jv,n.TaskType=R.MO.SetLightTemperature,n.Temperature=r.Data.Temperature;break;case G.Y.SetLightBrightness:n=new O._t,n.TaskType=R.MO.SetLightBrightness,n.Brightness=r.Data.Brightness;break;case G.Y.SetTemperature:n=new O.Xk,n.TaskType=R.MO.SetTemperature,n.Temperature=r.Data.Temperature;break;case G.Y.GetState:n=new O.gw,n.TaskType=R.MO.GetChannelsState;break;case G.Y.TurnOnWithTimeout:n=new O.YU,n.TaskType=R.MO.TurnOnWithTime,n.SwitchOffDelaySeconds=r.Data.SwitchOffDelaySeconds;break;case G.Y.SetLightBrightnessDynamicly:n=new O.ol,n.TaskType=R.MO.SetLightBrightnessDynamicly,n.Brightness=r.Data.Brightness;break;case G.Y.IdentifyDevice:n=new O.TM,n.TaskType=R.MO.IdentifyDevice;break;case G.Y.SetBlindOpenCloseTime:n=new O.F$,n.TaskType=R.MO.SetBlindOpenCloseTime,n.Data.CloseTime=r.Data;break;case G.Y.SetBlindMicroventilation:n=new O.F6,n.TaskType=R.MO.SetBlindMicroventilation,n.Position=r.Data.Position;break;case G.Y.GatewayPulse:n=new O.fG,n.TaskType=R.MO.ChangeGatewayPositionPulse;break;case G.Y.GatePulse:n=new O.ky,n.TaskType=R.MO.ChangeGatePositionPulse;break;case G.Y.SetFacadePositionAndTilt:n=new O.uv,n.TaskType=R.MO.SetFacadePosition,n.Position=r.Data.Position,n.Tilt=r.Data.Tilt,n.FacadeAction=O.wj.TiltAndPercentage;break;case G.Y.GetFacadeType:n=new O.zX,n.TaskType=R.MO.GetFacadeType;break;case G.Y.LightRGBW:n=new O.Bv,n.TaskType=R.MO.LightRGBW,n.Data=r.Data}return n.Channel=r.Channel,n.DeviceGuid=r.DeviceGuid,n.FeatureType=r.ControlFeature,n.Guid=C.q.NewGuid(),n}MapControllerTasks(e){var t,n;const r=[];null===(t=_.h.Log)||void 0===t||t.Debug(`[TASKS] received tasks object: ${JSON.stringify(e)}`);for(let t of e){const e=new pe;switch(e.Guid=t.Guid,e.TaskId=T.M0.GenerateMd5(JSON.stringify(t)),t.TaskType){case a.DeviceTask:e.TaskType=c.DeviceTask,e.Task.DeviceTask=this.MapDeviceTask(t);break;case a.DelayTask:e.TaskType=c.DelayTask,e.Task.DelayTask={Delay:new L(t.Delay)};break;case a.NotifyTask:e.TaskType=c.NotifyTask,e.Task.NotifyTask={Message:t.Message,NotifyType:t.NotifyType,NotificationClients:t.NotificationClients};break;case a.LockExecution:case a.LockExecution:e.TaskType=c.LockExecution,null===(n=_.h.Log)||void 0===n||n.Debug(`[TASKS] received task LockExecution object: ${JSON.stringify(t)}`),e.Task.LockExecution={LockStartHour:new L(t.LockStartHour),LockEndHour:new L(t.LockEndHour),LockType:t.LockType,ResetLockScenesGuids:t.ResetLockScenesGuids};case a.Unknown:}r.push(e)}return r}GetSupportedTaskTypesAsync(){return ce(this,void 0,void 0,(function*(){const e=yield S.j.Get(W.OA.ServiceName).GetSoftwareRuntimeInfoAsync(),[t,n]=e.SoftwareVersion.split(".").map((e=>parseInt(e))),r=[p.DeviceTask];return(t>5||5==t&&n>=27)&&r.push(p.DelayTask),(t>5||5==t&&n>=37)&&r.push(p.LockExecutionTask),(t>6||6==t&&n>=3)&&r.push(p.NotifyTaskAppNotify),r}))}}ue.ServiceName="ScenesService";class le extends A.CP{constructor(){super(),this.Resource="/logic/sequences/list",this.Method=A.IT.Get}}class de extends A.CP{constructor(e){super(),this.Resource="/logic/sequence",this.Method=A.IT.Get,this.Data=e}}class he extends A.CP{constructor(e){super(),this.Resource="/logic/sequences/used",this.Method=A.IT.Get,this.Data=e}}class ge{constructor(){this.HandledType=ae.Null,this.Argument={}}}!function(e){e[e.Null=0]="Null",e[e.Condition=1]="Condition",e[e.ConditionGroup=2]="ConditionGroup",e[e.ArgumentAsInt=3]="ArgumentAsInt",e[e.ArgumentAsTimeSpan=4]="ArgumentAsTimeSpan",e[e.ArgumentAsBoolean=5]="ArgumentAsBoolean",e[e.ArgumentAsTimeout=6]="ArgumentAsTimeout",e[e.ArgumentAsDayOfWeek=7]="ArgumentAsDayOfWeek",e[e.ArgumentAsDaysOfWeek=8]="ArgumentAsDaysOfWeek",e[e.ArgumentAsAstronomicalClock=9]="ArgumentAsAstronomicalClock",e[e.ArgumentAsTime=10]="ArgumentAsTime",e[e.ArgumentAsDeviceState=11]="ArgumentAsDeviceState",e[e.ArgumentAsNumber=12]="ArgumentAsNumber",e[e.ArgumentAsAstronomicalClockWithOffset=13]="ArgumentAsAstronomicalClockWithOffset",e[e.ArgumentAsConditionInfo=14]="ArgumentAsConditionInfo"}(ae||(ae={}));class pe{constructor(){this.TaskId="",this.Guid="",this.TaskType=c.Unknown,this.Task={}}}class fe extends A.CP{constructor(e){super(),this.Resource="/logic/sequence",this.Method=A.IT.Put,this.Data=e}}class ve extends A.CP{constructor(e){super(),this.Resource="/logic/sequence/edit",this.Method=A.IT.Put,this.Data=e}}class me extends A.CP{constructor(e){super(),this.Resource="/logic/sequence",this.Method=A.IT.Delete,this.Data=e}}class ye extends A.CP{constructor(e){super(),this.Resource="/logic/sequence/enable",this.Method=A.IT.Post,this.Data=e}}class we extends A.CP{constructor(e){super(),this.Resource="/logic/sequence/disable",this.Method=A.IT.Post,this.Data=e}}},8883:(e,t,n)=>{n.d(t,{N7:()=>M});var r=n(5973),s=n(6203),o=n(2734);class i{constructor(){this.Device=null,this.Channel=0,this.Task=null,this.Result=o.T.Unknown}}var a=n(3826),c=n(1061),u=n(6823),l=n(2348),d=n(9595),h=n(4756),g=n(161),p=n(3386),f=n(4268);class v{constructor(){this._onDeviceStateChangedEvent=new r.r,this._onDeviceStateRefreshedOrChangedEvent=new r.r,this._onDeviceTasksExecutionChangedOnChannelsEvent=new r.r,this._onDeviceFirmwareVersionChangedEvent=new r.r,this._iconType=s.AT.Unknown,this._serialNumber=null,this._model=null,this._modelGuid=null,this._manufacturerGuid=null,this._isVirtual=!1,this._isEnabled=!1,this._deviceState=s.gX.Working,this._deviceType=s.bq.Unknown,this._communicationWay=s.G9.OneWay,this._availableTasksTypes=[],this._availableResponseTypes=[],this._channels=[],this._protocolGuid=null,this._softwareVersion=null,null==v._devicesService&&(v._devicesService=c.j.Get(M.ServiceName));const e=this._onDeviceStateChangedEvent,t=this._onDeviceTasksExecutionChangedOnChannelsEvent;v._devicesService.OnDeviceStateChangedEvent().Subscribe((t=>{t.Device.Guid==this._guid&&e.Invoke(t.State)})),v._devicesService.OnDeviceStateRefreshedOrChangedEvent().Subscribe((e=>{e.Device.Guid==this._guid&&this._onDeviceStateRefreshedOrChangedEvent.Invoke(e.State)})),v._devicesService.OnDevicesTasksExecutionChangeEvent().Subscribe((e=>{t.Invoke(e.filter((e=>e.DeviceGuid==this._guid)).map((e=>e.Channel)))}))}OnDeviceFirmwareVersionChangedEvent(){return this._onDeviceFirmwareVersionChangedEvent}OnDeviceStateRefreshedOrChangedEvent(){return this._onDeviceStateRefreshedOrChangedEvent}get ShouldChannelsBeGrouped(){if(this._deviceType===s.bq.Remote)switch(this._modelGuid){case"afea26ac-d5de-4aa9-8e74-ff69679d097b":case"908a71ec-ca46-4431-9504-05b7801e77f8":case"d8fea502-541e-42d9-8ece-a1bcfaaa93f9":return!1;default:return this._availableTasksTypes.all((e=>e.Type!==s.MO.SetBlindPositionSimple))}return!1}get States(){return f.g.DoesThrowStackTrace?c.j.Get(M.ServiceName).GetDeviceStates(this).selectMany((e=>e.States)).toArray():v._devicesService.GetDeviceStates(this).selectMany((e=>e.States)).toArray()}RemoveDeviceAsync(){return v._devicesService.RemoveDeviceAsync(this)}ExecuteDeviceTaskAsync(e){return v._devicesService.ExecuteDeviceTaskAsync(this,e)}OnDeviceTasksExecutionChangedOnChannelsEvent(){return this._onDeviceTasksExecutionChangedOnChannelsEvent}OnDeviceStateChangedEvent(){return this._onDeviceStateChangedEvent}get Guid(){return null==this._guid?"":this._guid}set Guid(e){this._guid=e}get IconType(){return this._iconType}set IconType(e){this._iconType=e}get Name(){return null==this._name?"":this._name}set Name(e){this._name=e}set SoftwareVersion(e){this._softwareVersion=e}get SoftwareVersion(){return this._softwareVersion}get ChannelsAmount(){return null==this._channelsAmount?0:this._channelsAmount}set ChannelsAmount(e){this._channelsAmount=e}get SerialNumber(){return this._serialNumber}set SerialNumber(e){this._serialNumber=e}get Model(){return this._model}set Model(e){this._model=e}get ModelGuid(){return this._modelGuid}set ModelGuid(e){this._modelGuid=e}get ManufacturerGuid(){return this._manufacturerGuid}set ManufacturerGuid(e){this._manufacturerGuid=e}get IsVirtual(){return this._isVirtual}set IsVirtual(e){this._isVirtual=e}get IsEnabled(){return this._isEnabled}set IsEnabled(e){this._isEnabled=e}get DeviceState(){return this._deviceState}set DeviceState(e){this._deviceState=e}get DeviceType(){return this._deviceType}set DeviceType(e){this._deviceType=e}get CommunicationWay(){return this._communicationWay}set CommunicationWay(e){this._communicationWay=e}get AvailableTaskTypes(){return this._availableTasksTypes}set AvailableTaskTypes(e){this._availableTasksTypes=e}get AvailableResponseTypes(){return this._availableResponseTypes}set AvailableResponseTypes(e){this._availableResponseTypes=e}get Channels(){return this._channels}get ProtocolGuid(){return this._protocolGuid}set ProtocolGuid(e){this._protocolGuid=e}ChangeDeviceNameAsync(e){return t=this,n=void 0,s=function*(){var t;try{const n=yield c.j.Get(d.G.ServiceName).SendAndWaitForResponseAsync(new m(this,e),2e4,!1);switch(n.Status){case h.nW.OK:return this._name=e,null===(t=g.h.Log)||void 0===t||t.Error("Device","EXIT CONFIGURATION MODE WILL BE FIRED! ChangeDeviceNameAsync()"),c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),new u.gm(u.Ao.Changed,"");case h.nW.WrongData:if("DeviceNotFound"==n.Data)return new u.gm(u.Ao.Failed,"DeviceNotFound");break;case h.nW.NoPermissionsToCallGivenResource:return new u.gm(u.Ao.NoPermissions,"")}}catch(e){return e.message.includes("timeout")?new u.gm(u.Ao.ControllerResponseTimeout,""):new u.gm(u.Ao.UnknownError,"")}return new u.gm(u.Ao.Unknown,"")},new((r=void 0)||(r=Promise))((function(e,o){function i(e){try{c(s.next(e))}catch(e){o(e)}}function a(e){try{c(s.throw(e))}catch(e){o(e)}}function c(t){var n;t.done?e(t.value):(n=t.value,n instanceof r?n:new r((function(e){e(n)}))).then(i,a)}c((s=s.apply(t,n||[])).next())}));var t,n,r,s}ExecuteTaskAsync(e){return v._devicesService.ExecuteDeviceTaskAsync(this,e)}}class m extends h.CP{constructor(e,t){super(),this.Resource="/devices/device/name",this.Method=h.IT.Put;const n=new y;n.DeviceGuid=e.Guid,n.Name=t,this.Data=n}}class y{constructor(){this.DeviceGuid="",this.Name=""}}var w=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class S{constructor(){this._device=new v,this._number=0,this._name="",this._iconName="",this._channelId="",this._mode=l.zA.Default,this._channelGroups=[],this._isHidden=!1,this._availableTasksTypes=[],this._availableResponseTypes=[],this._customData={},this._roles=[],this._configurations={},this.CustomDataAndRolesSupported=!1,this._onTasksExecutionChangedEvent=new r.r,this._onChannelStateChangedEvent=new r.r,this._onChannelStateRefreshedOrChangedEvent=new r.r,null==S._devicesService&&(S._devicesService=c.j.Get(M.ServiceName))}OnChannelStateChangedEvent(){return this._onChannelStateChangedEvent}OnChannelStateRefreshedOrChangedEvent(){return this._onChannelStateRefreshedOrChangedEvent}get Configurations(){return this._configurations}set Configurations(e){this._configurations=e}IsCustomDataAndRolesSupported(){return this.CustomDataAndRolesSupported}get CustomData(){return this._customData}set CustomData(e){this._customData=e}get Roles(){return this._roles}set Roles(e){this._roles=e}get ChannelId(){return this._channelId}SetDevice(e){this._device=e,this._channelId=`${e.Guid}_${this.Number}`,this._device.OnDeviceStateChangedEvent().Subscribe((e=>{e.Data.Channel==this.Number&&this._onChannelStateChangedEvent.Invoke(e)})),this._device.OnDeviceStateRefreshedOrChangedEvent().Subscribe((e=>{e.Data.Channel==this.Number&&this._onChannelStateRefreshedOrChangedEvent.Invoke(e)}))}GetDevice(){return this._device}SetCustomDataAsync(e,t){return w(this,void 0,void 0,(function*(){const n=this.GetChannelConfigurationData();n.CustomData[e]=t,this._customData[e]=t;const r=new A;return r.DeviceGuid=this._device.Guid,r.ChannelConfiguration=n,this.ChangeConfigurationAsync(r)}))}RemoveCustomDataAsync(e){const t=this.GetChannelConfigurationData();delete t.CustomData[e],delete this._customData[e];const n=new A;return n.DeviceGuid=this._device.Guid,n.ChannelConfiguration=t,this.ChangeConfigurationAsync(n)}GetChannelConfigurationData(){const e=new _;return e.Channel=this._number,e.ChannelName=this._name,e.Configuration=this._mode,e.CustomData=this._customData,e.GroupsGuids=this._channelGroups,e.Hidden=this._isHidden,e.IconName=this._iconName,e}HideAsync(){const e=this.GetChannelConfigurationData();this._isHidden=!0,e.Hidden=!0;const t=new A;return t.DeviceGuid=this._device.Guid,t.ChannelConfiguration=e,this.ChangeConfigurationAsync(t)}ShowAsync(){const e=this.GetChannelConfigurationData();e.Hidden=!1,this._isHidden=!1;const t=new A;return t.DeviceGuid=this._device.Guid,t.ChannelConfiguration=e,this.ChangeConfigurationAsync(t)}ChangeNameAsync(e){const t=this.GetChannelConfigurationData(),n=new A;return n.DeviceGuid=this._device.Guid,n.ChannelConfiguration=t,t.ChannelName=e,this._name=e,this.ChangeConfigurationAsync(n)}ChangeIconNameAsync(e){const t=this.GetChannelConfigurationData();t.IconName=e;const n=new A;return n.DeviceGuid=this._device.Guid,n.ChannelConfiguration=t,this._iconName=e,this.ChangeConfigurationAsync(n)}ChangeGroupsAsync(e){const t=this.GetChannelConfigurationData();t.GroupsGuids=e;const n=new A;return n.DeviceGuid=this._device.Guid,n.ChannelConfiguration=t,this._channelGroups=e,this.ChangeConfigurationAsync(n)}ChangeConfigurationAsync(e){return w(this,void 0,void 0,(function*(){var t,n;try{const r=yield c.j.Get(d.G.ServiceName).SendAndWaitForResponseAsync(new C(e),2e4,!1);switch(null===(t=g.h.Log)||void 0===t||t.Error("Device","EXIT CONFIGURATION MODE WILL BE FIRED! ChangeConfigurationAsync()"),yield c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),r.Status){case h.nW.OK:return this._name=e.ChannelConfiguration.ChannelName,this._iconName=e.ChannelConfiguration.IconName,this._channelGroups=e.ChannelConfiguration.GroupsGuids,this._isHidden=e.ChannelConfiguration.Hidden,this._mode=e.ChannelConfiguration.Configuration,this._customData=e.ChannelConfiguration.CustomData,this._roles=e.ChannelConfiguration.Roles,this._configurations=e.ChannelConfiguration.Configurations,new u.gm(u.Ao.Changed,"");case h.nW.WrongData:if("DeviceNotFound"===r.Data)return null===(n=g.h.Log)||void 0===n||n.Error("Failed to change channel configuration, referenced device does not exist!"),new u.gm(u.Ao.WrongData,"DeviceNotFound");break;case h.nW.FatalError:return new u.gm(u.Ao.UnknownError,"")}}catch(e){if(e.message.includes("timeout"))return new u.gm(u.Ao.ControllerResponseTimeout,"")}return new u.gm(u.Ao.Unknown,"")}))}get Number(){return this._number}set Number(e){this._number=e}get Name(){return this._name}set Name(e){this._name=e}get IconName(){return this._iconName}set IconName(e){this._iconName=e}get States(){return f.g.DoesThrowStackTrace?c.j.Get(M.ServiceName).GetDeviceStates(this.GetDevice()).where((e=>e.Channel==this.Number)).selectMany((e=>e.States)).toArray():S._devicesService.GetDeviceStates(this.GetDevice()).where((e=>e.Channel==this.Number)).selectMany((e=>e.States)).toArray()}get Mode(){return this._mode}set Mode(e){this._mode=e}get ChannelGroups(){return this._channelGroups}set ChannelGroups(e){this._channelGroups=e}get IsHidden(){return this._isHidden}set IsHidden(e){this._isHidden=e}get AvailableTaskTypes(){return this._availableTasksTypes}set AvailableTaskTypes(e){this._availableTasksTypes=e}get AvailableResponseTypes(){return this._availableResponseTypes}set AvailableResponseTypes(e){this._availableResponseTypes=e}OnTasksExecutionChangeEvent(){return this._onTasksExecutionChangedEvent}ExecuteTaskAsync(e){return null!=this._device?(e.Channel=this.Number,e.DeviceGuid=this._device.Guid,S._devicesService.ExecuteDeviceTaskAsync(this._device,e)):Promise.resolve(o.T.Failed)}}S._devicesService=null;class A{constructor(){this.DeviceGuid="",this.ChannelConfiguration=new _}}class _{constructor(){this.Channel=0,this.ChannelName="",this.Configuration=l.zA.Default,this.GroupsGuids=[],this.IconName="",this.Hidden=!1,this.Configurations={},this.CustomData={},this.Roles=[]}}class C extends h.CP{constructor(e){super(),this.Resource="/devices/device/channel/configuration",this.Method=h.IT.Put,this.Data=e}}var T=n(7714),D=n(7581),k=n(5329),I=n(934),E=n(4071),R=n(7198),N=n(8069),G=n(4506),b=n(8679),P=n(2824),O=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class M{constructor(){this._devices=[],this._onDevicesTasksChangedEvent=new r.r,this._onDeviceFoundEvent=new r.r,this._onDeviceRegisteredEvent=new r.r,this._onDeviceRemovedEvent=new r.r,this._onDeviceFirmwareVersionChangedEvent=new r.r,this._onDeviceStateChangedEvent=new r.r,this._onDeviceStateRefreshedOrChangedEvent=new r.r,this._connection=null,this._session=null,this._controllerConfiguration=null,this._synchronized=!1,this._synchronizedDevicesStates=!1,this._devicesChannelsStates=[],this._synchronizationTaskCompletionSource=null,this._deviceStatesSynchronizationTaskCompletionSource=null,this._connection=c.j.Get(d.G.ServiceName),this._session=c.j.Get(k.Q.ServiceName),this._controllerConfiguration=c.j.Get(p.u.ServiceName),this._onDeviceStateChangedEvent.Subscribe((e=>O(this,void 0,void 0,(function*(){return this.PutDeviceStateOnList(e.Device,e.State)})))),this._synchronizationTaskCompletionSource=new Promise((e=>{var t;null===(t=this._session)||void 0===t||t.OnUserLoggedInEvent().Subscribe((t=>O(this,void 0,void 0,(function*(){var t;try{this._devices=yield this.GetPairedDevicesAsync()}catch(e){null===(t=g.h.Log)||void 0===t||t.Error(M.ServiceName,`Failed to get paired devices: ${e}`)}this._synchronized=!0,e()}))))})),this._deviceStatesSynchronizationTaskCompletionSource=new Promise((e=>{var t;null===(t=this._session)||void 0===t||t.OnUserLoggedInEvent().Subscribe((t=>O(this,void 0,void 0,(function*(){var t;try{yield this.WaitForSynchronizationAsync(),yield this.SyncDevicesStatesAsync()}catch(e){null===(t=g.h.Log)||void 0===t||t.Error(M.ServiceName,`Failed to sync devices states: ${e}`)}this._synchronizedDevicesStates=!0,e()}))))})),this._connection.SubscribeTo("/info/devices/tasks",(e=>{this.ParseDeviceTaskInfo(e.Data)})),this._connection.SubscribeTo("/info/devices/device/found",(e=>{this.MapApiDevices(e.Data).forEach((e=>{var t;e.DeviceType!=s.bq.Scene&&(null===(t=g.h.Log)||void 0===t||t.Debug(M.ServiceName,`Found device: ${e.Name} guid: ${e.Guid}`),this._onDeviceFoundEvent.Invoke(e))}))})),this._connection.SubscribeTo("/info/devices/device/firmware/updated",(e=>{const t=e.Data.DeviceGuid,n=e.Data.Version,r=this._devices.find((e=>e.Guid==t));void 0!==r&&(this._onDeviceFirmwareVersionChangedEvent.Invoke({Device:r,FirmwareVersion:n}),r.SoftwareVersion=n,r.OnDeviceFirmwareVersionChangedEvent().Invoke({FirmwareVersion:n}))})),this._connection.SubscribeTo("/devices/blinds/times",(e=>{})),this._connection.SubscribeTo("/info/devices/device/state/changed",(e=>{var t;const n=e.Data,r=this._devices.filter((e=>e.Guid==n.DeviceGuid));if(r.length>0){const e=r[0],o=this.MapApiDeviceStateToDeviceState(e,n);if(null!=o){this._onDeviceStateRefreshedOrChangedEvent.Invoke({Device:e,State:o}),o.TypeAsEnum==s.mQ.SignalStrength?e.Channels.forEach((t=>{let r=new a.b8(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateRefreshedOrChangedEvent.Invoke({Device:e,State:r})})):o.TypeAsEnum==s.mQ.BatteryState&&e.Channels.forEach((t=>{let r=new a.v3(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateRefreshedOrChangedEvent.Invoke({Device:e,State:r})}));let r=e.States.find((e=>e.TypeAsEnum===o.TypeAsEnum&&e.Data.Channel===o.Data.Channel));if(r){let i=r.StatesComparisonData;if(o.TypeAsEnum==s.mQ.BlindErrorState&&(null===(t=o.Data)||void 0===t?void 0:t.ErrorCode)!=r.Data.ErrorCode)return void this._onDeviceStateChangedEvent.Invoke({Device:e,State:o});r.Data=o.Data,i!==o.StatesComparisonData&&(this._onDeviceStateChangedEvent.Invoke({Device:e,State:o}),o.TypeAsEnum==s.mQ.SignalStrength?e.Channels.forEach((t=>{let r=new a.b8(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateChangedEvent.Invoke({Device:e,State:r})})):o.TypeAsEnum==s.mQ.BatteryState&&e.Channels.forEach((t=>{let r=new a.v3(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateChangedEvent.Invoke({Device:e,State:r})})))}else e.States.push(o),this._onDeviceStateChangedEvent.Invoke({Device:e,State:o}),o.TypeAsEnum==s.mQ.SignalStrength?e.Channels.forEach((t=>{let r=new a.b8(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateChangedEvent.Invoke({Device:e,State:r})})):o.TypeAsEnum==s.mQ.BatteryState&&e.Channels.forEach((t=>{let r=new a.v3(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateChangedEvent.Invoke({Device:e,State:r})}))}}})),this._connection.SubscribeTo("/info/devices/devices/registered",(e=>{c.j.Get(G.C.ServiceName).ClearCache(),this.MapApiDevices(e.Data).forEach((e=>{var t;null===(t=g.h.Log)||void 0===t||t.Debug(M.ServiceName,`Registered device: ${e.Name} guid: ${e.Guid}`),this._devices.push(e),this._onDeviceRegisteredEvent.Invoke(e)}))})),this._connection.SubscribeTo("/info/devices/devices/removed",(e=>{c.j.Get(G.C.ServiceName).ClearCache(),this.MapApiDevices(e.Data).forEach((e=>{var t;null===(t=g.h.Log)||void 0===t||t.Debug(M.ServiceName,`Removed device: ${e.Name} guid: ${e.Guid}`),this._devices=this._devices.filter((t=>t.Guid!=e.Guid)),this._onDeviceRemovedEvent.Invoke(e)}))}))}ProtocolGuidToProtocolName(e){switch(e){case"1fca7e8a-a2dc-4883-bd94-4e9b2012f685":return"ExtaLife";case"cd25bdff-628c-4dbc-a16a-648c96a819d4":return"Portos 433MHz";case"634c2bb2-1a4f-4db6-8dd4-d5fbaf92678e":return"Supla";case"194aeb81-990c-4a02-9236-59e902958fda":return"RTSP";case"b3e4644e-ab5b-494e-b3c5-66fabe7fff64":return"Wekta";case"247198e1-e360-4355-9886-232ac1456eea":return"Lavva Wi-Fi";default:return null}}CheckIfDeviceUsedInScenesAsync(e){return O(this,void 0,void 0,(function*(){var t,n,r,s,o,i;try{let i;if("string"==typeof e){const n=this.GetDevice(e);if(null==n)return null===(t=g.h.Log)||void 0===t||t.Error("Cannot check if device is used in scenes! Device with given guid not exists"),h.nW.ResourceDoesNotExists;i=n}else i=e;const l=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new K(i.Guid),2e4,!1);if(null==l||null==l.Status)return null===(r=g.h.Log)||void 0===r||r.Error("Cannot check if device is used in scenes! Response or status is null!"),h.nW.FatalError;if(l.Status!=h.nW.OK)return l.Status;if(null==l.Data)return null===(s=g.h.Log)||void 0===s||s.Error("Cannot check if device is used in scenes! No data!"),h.nW.FatalError;var a=yield c.j.Get(b.N.ServiceName).GetSequencesListAsync();if(a instanceof u.ZR)return null===(o=g.h.Log)||void 0===o||o.Error(`Cannot check if device is used in scenes! Cannot get sequence list, ScenesServiceErrorCode: ${a.Type}`),h.nW.Error;const d=new X;return d.DeviceGuid=i.Guid,l.Data.ConditionsAsCondition.forEach((e=>{const t=a.find((t=>t.Guid==e));t&&d.ConditionsAsCondition.push(t)})),l.Data.ConditionsAsTask.forEach((e=>{const t=a.find((t=>t.Guid==e));t&&d.ConditionsAsCondition.push(t)})),d}catch(e){return null===(i=g.h.Log)||void 0===i||i.Error(`Cannot check if device is used in scenes! ${e}`),h.nW.FatalError}}))}CanEditDevicesInfo(){var e,t;return null!==this._session&&void 0!==this._session&&null!==this._session.User&&void 0!==this._session.User&&(null===(t=null===(e=this._session)||void 0===e?void 0:e.User)||void 0===t?void 0:t.AccessLevel)>=N.hx.Admin}CanAddAndRemoveAndConfigureDevices(){var e,t;return null!==this._session&&void 0!==this._session&&null!==this._session.User&&void 0!==this._session.User&&(null===(t=null===(e=this._session)||void 0===e?void 0:e.User)||void 0===t?void 0:t.AccessLevel)>=N.hx.Installator}GetDeviceChannelByChannelId(e){return this._devices.firstOrDefault((t=>t.Channels.any((t=>t.ChannelId==e)))).Channels.firstOrDefault((t=>t.ChannelId==e))}EnableFastStatesSyncAsync(){return O(this,void 0,void 0,(function*(){var e;const t=c.j.Get(R.V.ServiceName).SaveAsync("FastDevicesSync",!1,!0);return null===(e=g.h.Log)||void 0===e||e.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! EnableFastStatesSyncAsync()"),yield c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),t}))}DisableFastStatesSyncAsync(){return O(this,void 0,void 0,(function*(){var e;const t=c.j.Get(R.V.ServiceName).SaveAsync("FastDevicesSync",!1,!1);return null===(e=g.h.Log)||void 0===e||e.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! DisableFastStatesSyncAsync()"),yield c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),t}))}IsFastStatesSyncEnabledAsync(){return O(this,void 0,void 0,(function*(){const e=yield c.j.Get(R.V.ServiceName).ReadAsync("FastDevicesSync",!1,!1);return e instanceof E.M?e.Data:e!=h.nW.ResourceDoesNotExists&&e}))}GetDevicesForManualPairingAsync(e){return O(this,void 0,void 0,(function*(){let t=c.j.Get(I.N.ServiceName);const n=new RegExp("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$");return Array.isArray(e)||n.test(e)?yield t.GetDevicesForManualPairingAsync(e):yield t.GetDevicesForManualPairingAsync()}))}AddManuallyPairedDevice(e){return O(this,void 0,void 0,(function*(){var t,n=yield c.j.Get(I.N.ServiceName).AddManuallyPairedDeviceAsync(e);return null===(t=g.h.Log)||void 0===t||t.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! AddManuallyPairedDevice()"),yield c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),n}))}GetDeviceChannelStates(e,t){var n,r;return null!==(r=null===(n=this._devicesChannelsStates.firstOrDefault((t=>t.DeviceGuid==e.Guid)))||void 0===n?void 0:n.ChannelsStates.filter((e=>e.Channel==t)))&&void 0!==r?r:[]}GetDeviceStates(e){var t,n;return null!==(n=null===(t=this._devicesChannelsStates.firstOrDefault((t=>t.DeviceGuid==e.Guid)))||void 0===t?void 0:t.ChannelsStates)&&void 0!==n?n:[]}PutDeviceStateOnList(e,t){let n=this._devicesChannelsStates.firstOrDefault((t=>t.DeviceGuid==e.Guid));if(null==n){let r=new U;r.Channel=t.Data.Channel,r.States=[t],n={DeviceGuid:e.Guid,ChannelsStates:[r]},this._devicesChannelsStates.push(n)}else{let e=n.ChannelsStates.firstOrDefault((e=>e.Channel==t.Data.Channel));if(null==e)e=new U,e.Channel=t.Data.Channel,e.States=[t],n.ChannelsStates.push(e);else{let n=e.States.firstOrDefault((e=>e.TypeAsEnum==t.TypeAsEnum));null!=n&&(n.TypeAsEnum==s.mQ.BlindErrorState?e.States=e.States.where((e=>e.Data.ErrorCode!=t.Data.ErrorCode)).toArray():e.States=e.States.where((e=>e.TypeAsEnum!=t.TypeAsEnum)).toArray()),e.States.push(t)}}}WaitForSynchronizationAsync(){return this._synchronizationTaskCompletionSource}WaitForDevicesStatesSynchronizationAsync(){return this._deviceStatesSynchronizationTaskCompletionSource}GetCurrentlyRunningTaksAsync(){return O(this,void 0,void 0,(function*(){var e;const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new q,15e3,!1);(null==t?void 0:t.Status)==h.nW.OK&&null!=t.Data&&this.ParseDeviceTaskInfo(t.Data)}))}ParseDeviceTaskInfo(e){const t=[];e.forEach((e=>{var n;const r=e.split(";"),o=new s.FX;o.DeviceGuid=r[0],o.Channel=Number(r[1]),o.Status=l.AM.ExecutingTasks,t.push(o),null===(n=g.h.Log)||void 0===n||n.Debug(M.ServiceName,`Device ${o.DeviceGuid} has task on channel ${o.Channel}`)})),this._onDevicesTasksChangedEvent.Invoke(t)}MapApiDeviceStateToDeviceState(e,t){var n;switch(t.state,t.DataType){case"ChannelOnOff":return new a.l4(t);case"DoorBell":return new a.nA(t);case"ReedPosition":return new a.Rq(t);case"BlindPosition":return new a.mL(t);case"ButtonState":return new a.mV(t);case"LightColor":return new a.dQ(t);case"LightTemperature":return new a.Ro(t);case"LightBrightness":return new a.re(t);case"TemperatureSensor":case"TemperatureState":case"MeasuredTemperature":return new a.uk(t);case"BatteryState":return new a.v3(t);case"MeasuredBrightness":case"DeviceBrightnessState":return new a.R6(t);case"EnergyMeasuredPower":case"EnergyMeasuredCurrent":case"EnergyMeasuredVoltage":break;case"IEnergy":case"Energy":return new a.If(t);case"DistanceSensor":return new a.JA(t);case"MovementSensor":return new a.B6(t);case"BlindsControlButton":return new a.VM(t);case"FacadeControlButton":return new a.wb(t);case"SignalStrength":return new a.b8(t);case"GatePosition":return new a.Uj(t);case"GatewayPosition":return new a.fp(t);case"GateControllerHealth":return new a.x5(t);case"IBlindCalibrationStatus":case"BlindCalibration":return new a.BJ(t);case"HumiditySensor":case"HumidityState":return new a.Bo(t);case"VibrationSensor":return new a.cK(t);case"DigitalInputSensor":return new a.Cv(t);case"ConfigurationState":return new a.UF(t);case"BlindOpenCloseTime":case"IBlindOpenCloseTime":return new a.Qj(t);case"IOvercurrentProtection":case"OvercurrentProtection":return new a.qr(t);case"IOvercurrentProtectionThreshold":case"OvercurrentProtectionThreshold":return new a.Vm(t);case"FacadePosition":case"FacadeState":return new a.nu(t);case"FacadeTypeState":return new a.sk(t);case"CurrentWindThreshold":return new a.yv(t);case"CurrentLightThreshold":return new a.IP(t);case"WindSpeed":return new a.Xp(t);case"FloodSensor":return new a.wr(t);case"PressureState":return new a.Nl(t);case"ITamperProtection":case"TamperProtection":return new a.K7(t);case"ILightRGBW":case"LightRGBW":return new a.Sd(t);case"OnlineCamera":case"IOnlineCamera":return new a.q1(t);case"BlindError":case"IBlindError":return t.state.ErrorData=(0,P.ku)(t.state.ErrorData),new a.Vk(t);default:null===(n=g.h.Log)||void 0===n||n.Debug(M.ServiceName,`Not supported device state ${t.DataType}`)}return null}GetServiceName(){return M.ServiceName}SyncDevicesStatesAsync(){return O(this,arguments,void 0,(function*(e=!1){var t,n,r;const s=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new x,15e3,!1);if(yield this.IsFastStatesSyncEnabledAsync()){if(e){let e=new F;e.Data=!0;const t=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(e,35e3,!1);return(null==t?void 0:t.Status)==h.nW.OK}return(null==s?void 0:s.Status)==h.nW.OK}{let e=new F;e.Data=!0;const t=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(e,35e3,!1);return(null==t?void 0:t.Status)==h.nW.OK}}))}OnDevicesTasksExecutionChangeEvent(){return this._onDevicesTasksChangedEvent}OnDeviceStateChangedEvent(){return this._onDeviceStateChangedEvent}OnDeviceStateRefreshedOrChangedEvent(){return this._onDeviceStateRefreshedOrChangedEvent}OnDeviceRegisteredEvent(){return this._onDeviceRegisteredEvent}OnDeviceRemovedEvent(){return this._onDeviceRemovedEvent}OnDeviceFoundEvent(){return this._onDeviceFoundEvent}MapApiDevices(e){const t=[];return null==e?[]:(e.forEach((e=>{var n,r,o,i,a=new v;a.Guid=e.Guid,a.Name=e.DeviceName,a.ChannelsAmount=e.ChannelsNumber,a.DeviceType=e.DeviceType,a.CommunicationWay=e.CommunicationWay,a.DeviceState=e.DeviceState,a.IsEnabled=e.IsEnabled,a.IsVirtual=e.IsVirtual,a.SerialNumber=e.DeviceSerialNumber,a.ManufacturerGuid=e.ManufacturerGuid,a.ModelGuid=e.DeviceModelGuid,a.Model=e.DeviceModel,a.Name=e.DeviceName,a.ProtocolGuid=e.ProtocolGuid,void 0!==e.IconType&&null!==e.IconType?a.IconType=e.IconType:a.IconType=s.AT.Unknown;try{null===(n=e.AvailableTasks)||void 0===n||n.forEach((e=>{var t=new s.q1;if(a.CommunicationWay==s.G9.OneWay)"IBlindPosition"===e&&(t.InterfaceType="IBlindPositionSimple");else switch(e){case"IGatePosition":t.InterfaceType="IGatePulse";break;case"IGatewayPosition":t.InterfaceType="IGatewayPulse";break;default:t.InterfaceType=e}a.AvailableTaskTypes.push(t)})),null===(r=e.AvailableResponses)||void 0===r||r.forEach((e=>{var t=new s.UT;t.InterfaceType=e,a.AvailableResponseTypes.push(t)})),null===(o=e.ChannelsConfiguration)||void 0===o||o.forEach((e=>{var t,n,r;try{var o=new S;o.Number=e.Channel,a.Channels.push(o),o.SetDevice(a),o.Name=e.ChannelName,o.ChannelGroups=e.GroupsGuids,o.IconName=e.IconName,o.IsHidden=e.Hidden,o.Configurations=e.Configurations,o.CustomDataAndRolesSupported=void 0!==e.CustomData&&null!==e.CustomData,void 0!==e.CustomData&&null!==e.CustomData&&(o.CustomData=e.CustomData),void 0!==e.Roles&&null!==e.Roles&&(o.Roles=e.Roles),null===(t=e.AvailableResponses)||void 0===t||t.forEach((e=>{var t=new s.UT;t.InterfaceType=e,o.AvailableResponseTypes.push(t)})),null===(n=e.AvailableTasks)||void 0===n||n.forEach((e=>{var t=new s.q1;a.AvailableTaskTypes.any((e=>"IBlindPositionSimple"==e.InterfaceType))?"IBlindPosition"==e&&(t.InterfaceType="IBlindPositionSimple"):t.InterfaceType=e,o.AvailableTaskTypes.push(t)}))}catch(e){null===(r=g.h.Log)||void 0===r||r.Error(e)}}))}catch(e){null===(i=g.h.Log)||void 0===i||i.Error(e)}t.push(a)})),t)}GetPairedDevicesAsync(){return O(this,arguments,void 0,(function*(e=!1){var t,n,r;if(this._synchronized&&!(yield null===(t=this._controllerConfiguration)||void 0===t?void 0:t.DidCofigurationChangeAsync()))return Promise.resolve(this._devices);const o=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new W,15e3,!0);return null==o||void 0===o?[]:o.Status==h.nW.OK&&null!=o.Data?e?this.MapApiDevices(o.Data):this.MapApiDevices(o.Data.filter((e=>e.DeviceType!=s.bq.Scene))):(null===(r=g.h.Log)||void 0===r||r.Error(M.ServiceName,`Failed to get devices. ${o.Status} ${o.Data}`),[])}))}GetDevicesAsync(){return O(this,arguments,void 0,(function*(e=!1){return yield this.WaitForSynchronizationAsync(),this.GetPairedDevicesAsync(e)}))}GetFoundDevicesAsync(){return O(this,void 0,void 0,(function*(){var e,t;const n=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new $,15e3,!1);return null==n?[]:n.Status==h.nW.OK&&null!=n.Data?this.MapApiDevices(n.Data).where((e=>e.DeviceType!==s.bq.Scene)).toArray():(null===(t=g.h.Log)||void 0===t||t.Error(M.ServiceName,`Failed to get found devices. ${n.Status} ${n.Data}`),[])}))}GetDevice(e){return this._devices.find((t=>t.Guid===e))}FindDevicesAsync(){return O(this,void 0,void 0,(function*(){var e;c.j.Get(G.C.ServiceName).ClearCache(),yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new L,35e3,!1)}))}StopSearchingForDevices(){return O(this,void 0,void 0,(function*(){var e;yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new B,2e4,!1)}))}RegisterDeviceAsync(e){return O(this,void 0,void 0,(function*(){var t,n,r;try{const r=new V;r.Data=e.Guid;const s=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(r,2e4,!1);return null===(n=g.h.Log)||void 0===n||n.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! RegisterDeviceAsync()"),c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),(null==s?void 0:s.Status)==h.nW.OK?(this._devices.any((t=>t.Guid==e.Guid))||this._devices.push(e),this._onDeviceRegisteredEvent.Invoke(e),o.T.Executed):o.T.Failed}catch(e){return null===(r=g.h.Log)||void 0===r||r.Error(M.ServiceName,`Failed to paired devices: ${e}`),o.T.ControllerResponseTimeout}}))}RemoveDeviceAsync(e){return O(this,arguments,void 0,(function*(e,t=!1){var n,r,s=new j;t&&(s=new H),s.Data=e.Guid;const i=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(s,35e3,!1);return null===(r=g.h.Log)||void 0===r||r.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! RemoveDeviceAsync()"),c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),(null==i?void 0:i.Status)==h.nW.OK?(this._devices=this._devices.where((t=>t.Guid!=e.Guid)).toArray(),this._onDeviceRemovedEvent.Invoke(e),o.T.Executed):o.T.Failed}))}MapDeviceTaskToDeviceTaskInfo(e,t){let n=new Y;const r=t;switch(r.FeatureType){case T.Y.SetTemperature:n.Data=r.Temperature;break;case T.Y.SetLightBrightness:n.Data=r.Brightness;break;case T.Y.SetLightColor:n=new z;const e=r;n.R=e.R,n.G=e.G,n.B=e.B;break;case T.Y.SetLightTemperature:n.Data=r.Temperature;break;case T.Y.SetGatePositionPrecise:switch(r.GateControlAction){case D.ZM.Open:n.Data=101;break;case D.ZM.Close:n.Data=102;break;case D.ZM.Stop:n.Data=103;break;case D.ZM.Percentage:n.Data=r.Position}break;case T.Y.SetBlindPosition:switch(r.Action){case D.VP.Open:n.Data=101;break;case D.VP.Close:n.Data=102;break;case D.VP.Stop:n.Data=103;break;case D.VP.Percentage:n.Data=r.Position}break;case T.Y.SetLightBrightnessDynamicly:n.Data=r.Brightness;break;case T.Y.SetBlindOpenCloseTime:n.Data=r.Data;break;case T.Y.SetBlindMicroventilation:n.Data=r.Position;break;case T.Y.SetFacadePositionAndTilt:n=new J;const t=r;n.FacadeAction=t.FacadeAction,n.Tilt=t.Tilt,n.Position=t.Position;break;case T.Y.LightRGBW:n.Data=r.Data;break;case T.Y.GatePulse:case T.Y.GatewayPulse:n.Data=0;break;case T.Y.TurnOnWithTimeout:n.Data=r.SwitchOffDelaySeconds}return n.Channel=r.Channel,n.DeviceGuid=e.Guid,n.ControlFeature=r.FeatureType,n}ExecuteDeviceTaskAsync(e,t){return O(this,void 0,void 0,(function*(){var n,r,s,i,a,c,u,l;try{null===(n=g.h.Log)||void 0===n||n.Debug(M.ServiceName,`Preparing device task execution, device: ${e.Guid} task: ${t.TaskType} channel: ${t.Channel}`);let l=this.MapDeviceTaskToDeviceTaskInfo(e,t);try{const e=new Q(l);null===(r=g.h.Log)||void 0===r||r.Debug(M.ServiceName,`Sending device task for execution, device: ${l.DeviceGuid} task: ${l.ControlFeature} channel: ${l.Channel} request: ${JSON.stringify(e)}`);const t=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(e,15e3,!1);switch(null==t?void 0:t.Status){case h.nW.OK:return o.T.Executed;case h.nW.FatalError:return null===(i=g.h.Log)||void 0===i||i.Error(M.ServiceName,`Fatal error occured when tried to execute task on device. Error code: ${t.Data}`),o.T.Failed;case h.nW.WrongData:if("DeviceNotFound"===t.Data)return o.T.DeviceNotFound;break;case h.nW.Error:return"DeviceResponseTimeout"===t.Data?o.T.DeviceResponseTimeout:(null===(a=g.h.Log)||void 0===a||a.Error(M.ServiceName,`Unknown error occured when trying to execute task on device. Error code: ${t.Data}`),o.T.Failed)}}catch(e){return e.message.includes("timeout")?(null===(c=g.h.Log)||void 0===c||c.Error(M.ServiceName,`Failed to get controller response in time.\n${e}`),o.T.ControllerResponseTimeout):(null===(u=g.h.Log)||void 0===u||u.Error(M.ServiceName,`Unknown error occured when tried to execute task on device.\n${e}`),o.T.Failed)}return o.T.Unknown}catch(e){return null===(l=g.h.Log)||void 0===l||l.Error(M.ServiceName,`Unknown error occured when tried to execute task on device.\n${e}`),o.T.Failed}}))}ExecuteDevicesTasksAsync(e){return O(this,void 0,void 0,(function*(){var t,n,r,s;let a=[],c=[],u=0;for(const[t,n]of e){const e=this.MapDeviceTaskToDeviceTaskInfo(t,n);e.SequnceExecutionOrder=u,u++,c.push(e)}const l=new Z(c);try{const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(l,12e4,!1);let s=-1;null===(n=null==r?void 0:r.Data)||void 0===n||n.forEach((t=>{var n,c;s++;let u=o.T.Unknown;switch(t.Status){case h.nW.OK:return o.T.Executed;case h.nW.FatalError:null===(n=g.h.Log)||void 0===n||n.Error(M.ServiceName,`Fatal error occured when tried to execute task on device. Error code: ${t.Data}`),u=o.T.Failed;break;case h.nW.WrongData:"DeviceNotFound"===t.Data&&(u=o.T.DeviceNotFound);break;case h.nW.Error:"DeviceResponseTimeout"===t.Data?u=o.T.DeviceResponseTimeout:(null===(c=g.h.Log)||void 0===c||c.Error(M.ServiceName,`Unknown error occured when trying to execute task on device. Error code: ${r.Data}`),u=o.T.Failed)}let l=0,d=new i;for(const[t,n]of e){if(l==s){d.Device=t,d.Task=n,d.Channel=n.Channel,a.push(d);break}l++}}))}catch(t){if(t.message.includes("timeout")){null===(r=g.h.Log)||void 0===r||r.Error(M.ServiceName,`Failed to get controller response in time.\n${t}`);for(const[t,n]of e){let e=new i;a.push(e),e.Device=t,e.Task=n,e.Channel=n.Channel,e.Result=o.T.ControllerResponseTimeout}}else{null===(s=g.h.Log)||void 0===s||s.Error(M.ServiceName,`Unknown error occured when tried to execute task on device.\n${t}`);for(const[t,n]of e){let e=new i;a.push(e),e.Device=t,e.Task=n,e.Channel=n.Channel,e.Result=o.T.Failed}}}return a}))}}M.ServiceName="DevicesService";class U{constructor(){this.Channel=0,this.States=[]}}class W extends h.CP{constructor(){super(),this.Resource="/devices/list",this.Method=h.IT.Get}}class x extends h.CP{constructor(){super(),this.Data=!1,this.Resource="/devices/channels/states",this.Method=h.IT.Get}}class F extends h.CP{constructor(){super(),this.Data=!1,this.Resource="/devices/channels/states/sync",this.Method=h.IT.Get}}class L extends h.CP{constructor(){super(),this.Resource="/devices/search",this.Method=h.IT.Post}}class B extends h.CP{constructor(){super(),this.Resource="/devices/search/stop",this.Method=h.IT.Post}}class $ extends h.CP{constructor(){super(),this.Resource="/devices/found/list",this.Method=h.IT.Get}}class q extends h.CP{constructor(){super(),this.Resource="/devices/tasks",this.Method=h.IT.Get}}class V extends h.CP{constructor(){super(),this.Resource="/devices/device/pair",this.Method=h.IT.Put}}class j extends h.CP{constructor(){super(),this.Resource="/devices/device/unpair",this.Method=h.IT.Put}}class H extends h.CP{constructor(){super(),this.Resource="/devices/device/unpair/force",this.Method=h.IT.Put}}class Q extends h.CP{constructor(e){super(),this.Resource="/devices/device/control",this.Method=h.IT.Post,this.Data=e}}class Z extends h.CP{constructor(e){super(),this.Resource="/devices/devices/control",this.Method=h.IT.Post,this.Data=e}}class K extends h.CP{constructor(e){super(),this.Resource="/logic/device/used",this.Method=h.IT.Get,this.Data=e}}class Y{constructor(){this.DeviceGuid="",this.Channel=0,this.ControlFeature=T.Y.GetState,this.SequnceExecutionOrder=0}}class z extends Y{constructor(){super(...arguments),this.R=0,this.G=0,this.B=0}}class J extends Y{constructor(){super(...arguments),this.FacadeAction=D.wj.Stop,this.Tilt=0,this.Position=0}}class X{constructor(){this.DeviceGuid="",this.ConditionsAsCondition=[],this.ConditionsAsTask=[]}}},8914:(e,t,n)=>{n.d(t,{O:()=>d});var r=n(6823),s=n(8637),o=n(4756),i=n(1061),a=n(9595),c=n(161),u=n(3386),l=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class d{IsControllerGeolocationSetAsync(){return l(this,void 0,void 0,(function*(){let e=new h,t=yield i.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(e,15e3,!0);return(null==t?void 0:t.Status)===o.nW.OK?null==t?void 0:t.Data:null==t?void 0:t.Status}))}GetCurrentGeolocationAsync(){return l(this,void 0,void 0,(function*(){return new Promise(((e,t)=>l(this,void 0,void 0,(function*(){window.navigator.geolocation.getCurrentPosition((t=>{e(t)}),(t=>{e(t)}))}))))}))}SetControllerGeolocationAsync(e){return l(this,void 0,void 0,(function*(){var t,n,l;let h=new p;h.Data.Latitude=e.Latitude,h.Data.Longitude=e.Longitude,null===(t=c.h.Log)||void 0===t||t.Warning(d.ServiceName,`SetControllerGeolocationAsync() ${JSON.stringify(h)}`);let g=yield i.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(h,15e3,!1);switch(null===(n=c.h.Log)||void 0===n||n.Warning(d.ServiceName,`${JSON.stringify(g)}`),null===(l=c.h.Log)||void 0===l||l.Error(d.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! SetControllerGeolocationAsync()"),i.j.Get(u.u.ServiceName).ExitConfigurationModeAsync(),null==g?void 0:g.Status){case o.nW.OK:return new r.ZR(s.hy.OK,"");case o.nW.NoPermissionToPerformThisOperation:case o.nW.NoPermissionsToCallGivenResource:return new r.ZR(s.hy.NoPermissions,"");case o.nW.UserIsNotLoggedIn:return new r.ZR(s.hy.UserIsNotLoggedIn,"");default:return new r.ZR(s.hy.UnknownError,"")}}))}GetControlllerGeolocationAsync(){return l(this,void 0,void 0,(function*(){var e,t;let n=new g;null===(e=c.h.Log)||void 0===e||e.Warning(d.ServiceName,`GetControlllerGeolocationAsync(): ${JSON.stringify(n)}`);let r=yield i.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(n,15e3,!0);if(null===(t=c.h.Log)||void 0===t||t.Warning(d.ServiceName,`${JSON.stringify(r)}`),(null==r?void 0:r.Status)===o.nW.OK){let e=new s.D7;return e.IsNetworkBased=(null==r?void 0:r.Data).IsNetworkBased,e.Latitude=(null==r?void 0:r.Data).Latitude,e.Longitude=(null==r?void 0:r.Data).Longitude,e}return null==r?void 0:r.Status}))}GetServiceName(){return d.ServiceName}}d.ServiceName="GeolocationService";class h extends o.CP{constructor(){super(),this.Resource="/geolocation/isset",this.Method=o.IT.Get}}class g extends o.CP{constructor(){super(),this.Resource="/geolocation/get",this.Method=o.IT.Get}}class p extends o.CP{constructor(){super(),this.Data=new s.E$,this.Resource="/geolocation/save",this.Method=o.IT.Put}}},9054:(e,t,n)=>{n.d(t,{K:()=>_});var r,s,o,i,a=n(1061),c=n(4756),u=n(2990),l=n(8883),d=n(6823),h=n(4824),g=n(4637),p=n(6053),f=n(6881),v=n(9869),m=n(4268),y=n(9595),w=n(2824),S=n(5329),A=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class _{constructor(){this._controllerUpdates=[],this._updateRequestTimeout=12e4,this._oldUpdateVersion=5,this._oldUpdateBuild=56,this._updateOfflineStageTime=9.3,this._updateProviders=a.j.Get(h.OA.ServiceName),this._logger=a.j.Get(m.g.ServiceName),this._connection=a.j.Get(y.G.ServiceName),this._appStateService=a.j.Get(v.i.ServiceName),this._extensionService=a.j.Get(u.Wn.ServiceName)}GetAutomaticControllerUpdateDownloadStatusAsync(){return A(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot get update branch, feature unsupported in current version. Current version: ${e}`);let r=yield this._connection.SendAndWaitForResponseAsync(new U,1e4,!1);return!(r.Status!=c.nW.OK||!r.Data)}))}GetServiceName(){return _.ServiceName}CheckDeviceVersionAsync(e){return A(this,void 0,void 0,(function*(){var t;let n;if("string"==typeof e){const t=yield a.j.Get(l.N7.ServiceName).GetDevice(e);if(null==t)return new d.ZR(f.rQ.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);n=t}else n=e;if(null==n.ProtocolGuid)return new d.ZR(f.rQ.UnsupportedDevice,"Device does not contains data about protocol GUID.");const r=yield null===(t=(yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(n.ProtocolGuid,p.cp.Device)).first())||void 0===t?void 0:t.GetSoftwareVersionAsync(n);return r.Type,r}))}CheckDeviceUpdateAsync(e){return A(this,void 0,void 0,(function*(){var t;let n;if("string"==typeof e){const t=yield a.j.Get(l.N7.ServiceName).GetDevice(e);if(null==t)return new d.ZR(f.rQ.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);n=t}else n=e;if(null==n.ProtocolGuid)return new d.ZR(f.rQ.UnsupportedDevice,"Device does not contains data about protocol GUID.");const r=yield null===(t=(yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(n.ProtocolGuid,p.cp.Device)).first())||void 0===t?void 0:t.GetAvailableUpdateAsync(n);if(null!=r.Type)return r;const s=new D;s.CurrentResourceVersion=r.CurrentResourceVersion,s.NewResourceVersion=r.Update.Version,s.UpdatedResourceName=r.UpdatedResourceName,s.UpdateResourceGuid=r.Update.ResourceGuid,s.UpdateDescription=new Map([["pl-PL",r.Update.Description]]);let o="n/a";try{o=(yield this._extensionService.GetProtocolInfoAsync(n.ProtocolGuid)).first().Name}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}return s.Protocol=o,s.ProtocolGuid=n.ProtocolGuid,(yield a.j.Get(l.N7.ServiceName).GetDevicesAsync()).any((e=>"952ddc14-76c4-4f47-b0bc-5d106c1f9b02"==e.ModelGuid))&&(s.IsUpdateSafe=!1),s}))}CheckDeviceUpdatesBulkAsync(e){return A(this,void 0,void 0,(function*(){const t=yield yield this._updateProviders.GetUpdatesProvidersAsync(p.cp.Device),n=[];for(var r of t){const t=yield r.CheckUpdateBulkAsync(e);if(t instanceof d.ZR)return t;t.map((e=>A(this,void 0,void 0,(function*(){const t=new D;t.CurrentResourceVersion=e.CurrentResourceVersion,t.NewResourceVersion=e.Update.Version,t.UpdatedResourceName=e.UpdatedResourceName,t.UpdateDescription=e.UpdateDescription,t.IsUpdateSafe=!0;let s="n/a";try{s=(yield this._extensionService.GetProtocolInfoAsync(r.ProtocolGuid)).first().Name}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}t.Protocol=s,t.ProtocolGuid=r.ProtocolGuid,t.UpdateResourceGuid=e.Update.ResourceGuid,n.push(t)}))))}return n}))}InstallDeviceUpdateAsync(e,t,n){return A(this,arguments,void 0,(function*(e,t,n,r=!1){var s;let o;if("string"==typeof e){const t=yield a.j.Get(l.N7.ServiceName).GetDevice(e);if(null==t)return new d.ZR(f.rQ.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);o=t}else o=e;if(null==o.ProtocolGuid)return new d.ZR(f.rQ.UnsupportedDevice,"Device does not contains data about protocol GUID.");const i=yield null===(s=(yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(o.ProtocolGuid,p.cp.Device)).first())||void 0===s?void 0:s.GetAvailableUpdateAsync(o);if(null!=i.Type)return i;this._appStateService.DisallowHibernation();const u=yield(yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(o.ProtocolGuid,p.cp.Device)).first().InstallUpdateAsync(i,t,n,r);return null!=u.Type?(this._appStateService.AllowHibernation(),u):(this._appStateService.AllowHibernation(),c.nW.OK)}))}InstallDevicesUpdateBulkAsync(e,t,n){return A(this,void 0,void 0,(function*(){const r=(yield a.j.Get(l.N7.ServiceName).GetDevicesAsync()).where((t=>e.includes(t.Guid))).groupBy((e=>e.ProtocolGuid)),s=[];this._appStateService.DisallowHibernation();const o=r.count();for(let e=0;e<o;e++){const i=r.elementAt(e),a=e*(100/o),c=(e+1)*(100/o),u=e=>{e.PercentageTotal=Math.floor(e.PercentageTotal/100*(c-a)+a),t(e)},l=yield yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(i.key,p.cp.Device),h=yield l.first().InstalUpdateBulkAsync(i.select((e=>e.Guid)).toArray(),u,n);if(h instanceof d.ZR)return h;s.push(h)}if(this._appStateService.AllowHibernation(),1==s.length)return s[0];{const e=new f.Hf;s.some((e=>e.DevicesUpdateResults.count()>0))&&s.any((e=>e.BulkUpdateStatus!=f.Yy.Success))?e.BulkUpdateStatus=f.Yy.PartialSuccess:s.any((e=>e.BulkUpdateStatus!=f.Yy.Success))?e.BulkUpdateStatus=s.first().BulkUpdateStatus:e.BulkUpdateStatus=f.Yy.Success;for(const t of s)t.DevicesUpdateResults.forEach(((t,n)=>{e.DevicesUpdateResults.set(n,t)}));return e}}))}CheckControllerSoftwareUpdateAvailabilityAsync(){return A(this,void 0,void 0,(function*(){const e=a.j.Get(S.Q.ServiceName).User;if(null==e)return!1;if(""==e.SoftwareVersion||null==e.SoftwareVersion)return!0;const[t,n]=e.SoftwareVersion.split(".");if(parseFloat(t)<this._oldUpdateVersion||parseFloat(t)==this._oldUpdateVersion&&parseFloat(n)<=this._oldUpdateBuild)return!0;const r=yield this._connection.SendAndWaitForResponseAsync(new b,1e4,!1);if(null==r||r.Status!=c.nW.OK||null==r.Data)return!1;const[s,o]=r.Data.Update.Version.ContainerSoftwareVersion.toString().split(".");return parseInt(s)>parseInt(t)||parseInt(s)==parseInt(t)&&parseInt(o)>parseInt(n)}))}CheckDevicesUpdatesAvailabilityAsync(){return A(this,void 0,void 0,(function*(){const e=a.j.Get(S.Q.ServiceName).User;if(null==e)return[];if(""==e.SoftwareVersion||null==e.SoftwareVersion)return[];const[t,n]=e.SoftwareVersion.split(".");if(parseFloat(t)<6||6==parseFloat(t)&&parseFloat(n)<=4)return[];const r=yield this._connection.SendAndWaitForResponseAsync(new L,1e4,!1),s=[];return null==r||(null==r?void 0:r.Status)!=c.nW.OK||null==(null==r?void 0:r.Data)?[]:(null==r||r.Data.forEach((e=>{if(!e.IsAvailable)return;const t=new g.OW;t.DeviceGuid=e.DeviceGuid,t.CurrentVersion=e.CurrentVersion,t.NewVersion=e.NewVersion,s.push(t)})),s)}))}CheckControllerUpdatesAsync(){return A(this,void 0,void 0,(function*(){this._controllerUpdates=[];let e=[];const t=new g.Z,n=yield this.getRuntimeInfoAsync();if(n instanceof d.ZR){const e=new C;return e.UpdateType=g.kD.SoftwareUpdate,e.ResponseResult=n,t.UpdatesNotAvailable.push(e),t}const r=parseInt(n.SoftwareVersion.toString().split(".")[0]),s=parseInt(n.SoftwareVersion.toString().split(".")[1]);try{e=yield this._updateProviders.GetUpdatesProvidersAsync(p.cp.Controller)}catch(e){if(!(e instanceof p.Zt))throw e;this._logger.Warning("Cannot get update providers for controller protocols! Avaliable only controller software updates!")}for(let n=0;n<e.length;n++){const r=yield e[n].GetAvailableRadioUpdateAsync();if(null!=r.Type){const s=new C;s.ResponseResult=r,s.UpdateType=g.kD.RadioUpdate;let o="n/a";try{o=(yield this._extensionService.GetProtocolInfoAsync(e[n].ProtocolGuid)).first().Name}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}s.UpdatedResourceName=new Map([["pl-PL",o],["en-US",o]]),s.CurrentResourceVersion=yield e[n].GetCurrentRadioVersionAsync(),t.UpdatesNotAvailable.push(s)}else{const s=r,o=new T;o.UpdatedResourceName=new Map([["pl-PL",s.UpdatedResourceName],["en-US",s.UpdatedResourceName]]),o.CurrentResourceVersion=s.CurrentResourceVersion,o.NewResourceVersion=s.Update.Version,o.UpdateDescription=new Map([["pl-PL",s.Update.Description]]),o.UpdateType=g.kD.RadioUpdate,o.UpdateIdentifier=w.M0.GenerateUUID(),o.UpdateIsDownloading=!1,o.DownloadProgress=100,o.UpdateCreationTime=null,t.UpdatesAvailable.push(o),this._controllerUpdates.push(Object.assign(Object.assign({},s),{UpdateIdentifier:o.UpdateIdentifier,ProviderName:e[n].GetUpdateProviderName(),UpdateType:g.kD.RadioUpdate}))}}let o=!0;if((r<this._oldUpdateVersion||r===this._oldUpdateVersion&&s<=this._oldUpdateBuild)&&(o=!1),o){const e=yield this._connection.SendAndWaitForResponseAsync(new b,15e3,!1);if(null==e||e.Status!=c.nW.OK&&e.Status!=c.nW.NoData)throw new Error(`Cannot get pending updates! Response is empty or status is not OK. Status: ${null==e?void 0:e.Status}`);if(null!=e.Data){const r=new p.u_;r.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,r.UpdateDescription=(0,w.ku)(e.Data.Update.UpdateDescription),r.UpdatedResourceName=(0,w.ku)(e.Data.Update.UpdateName).get("en-US");const s=new T;s.UpdatedResourceName=(0,w.ku)(e.Data.Update.UpdateName),s.UpdateDescription=(0,w.ku)(e.Data.Update.UpdateDescription),s.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,s.NewResourceVersion=`${e.Data.Update.Version.BaseRuntime}.${e.Data.Update.Version.ContainerSoftwareVersion}`,s.UpdateType=g.kD.SoftwareUpdate,s.UpdateIdentifier=e.Data.Update.Guid,s.UpdateIsDownloading=e.Data.UpdateStep==i.DownloadingInstaller||e.Data.UpdateStep==i.DownloadingUpdate||e.Data.UpdateStep==i.CheckingUpdate,s.DownloadProgress=e.Data.DownloadProgress,s.UpdateCreationTime=e.Data.Update.Creationtime,t.UpdatesAvailable.push(s),this._controllerUpdates.push(Object.assign(Object.assign({},r),{UpdateIdentifier:s.UpdateIdentifier,ProviderName:_.ServiceName,UpdateType:g.kD.SoftwareUpdate}))}else{const e=yield this._connection.SendAndWaitForResponseAsync(new P,15e3,!1);if(null==e)throw new Error("Cannot check updates! Response is empty.");switch(e.Status){case c.nW.NoData:const r=new C;r.UpdateType=g.kD.SoftwareUpdate,r.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),r.ResponseResult=new d.ZR(f.rQ.DeviceIsUpToDate,"Updates not found, controller is already up-to-date."),t.UpdatesNotAvailable.push(r);break;case c.nW.OK:if(null==e.Data)throw new Error("Cannot check updates! Response data is empty.");const s=new p.u_;s.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,s.UpdateDescription=(0,w.ku)(e.Data.UpdateDescription),s.UpdatedResourceName=(0,w.ku)(e.Data.UpdateName).get("en-US");const o=new T;o.UpdatedResourceName=(0,w.ku)(e.Data.UpdateName),o.UpdateDescription=(0,w.ku)(e.Data.UpdateDescription),o.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,o.UpdateType=g.kD.SoftwareUpdate,o.UpdateIdentifier=e.Data.Guid,o.NewResourceVersion=`${e.Data.Version.BaseRuntime}.${e.Data.Version.ContainerSoftwareVersion}`,o.UpdateIsDownloading=!1,o.DownloadProgress=0,o.UpdateCreationTime=e.Data.Creationtime,t.UpdatesAvailable.push(o),this._controllerUpdates.push(Object.assign(Object.assign({},s),{UpdateIdentifier:o.UpdateIdentifier,ProviderName:_.ServiceName,UpdateType:g.kD.SoftwareUpdate}));break;default:throw new Error(`Cannot check updates! Response status is not OK. Status: ${e.Status}`)}}}else{const e=`https://exalus-updates.tr7.pl/software/${n.UpdateChannel}/${n.RuntimeVersion}/${n.SoftwareVersion}/update.json`;try{const r=yield fetch(e);let s,o=new p.u_;const i=new C;switch(i.UpdateType=g.kD.SoftwareUpdate,i.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),r.status){case 200:null!=r.body&&(s=yield r.json());break;case 404:i.ResponseResult=new d.ZR(f.rQ.DeviceIsUpToDate,"Updates not found, controller is already up-to-date."),t.UpdatesNotAvailable.push(i);break;default:i.ResponseResult=new d.ZR(f.rQ.CannotGetUpdates,`Response status code does not indicate success. Status: ${r.status}`),t.UpdatesNotAvailable.push(i)}if(null!=s){o.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,o.Update=s;const e=new T;e.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),e.CurrentResourceVersion=o.CurrentResourceVersion,e.NewResourceVersion=o.Update.Version,e.UpdateDescription=new Map([["pl-PL",o.Update.Description]]),e.UpdateType=g.kD.SoftwareUpdate,e.UpdateIdentifier=w.M0.GenerateUUID(),e.DownloadProgress=100,e.UpdateIsDownloading=!1,e.UpdateCreationTime=null,t.UpdatesAvailable.push(e),this._controllerUpdates.push(Object.assign(Object.assign({},o),{UpdateIdentifier:e.UpdateIdentifier,ProviderName:_.ServiceName,UpdateType:g.kD.SoftwareUpdate}))}else if(200==r.status)throw new Error(`Cannot get Update Data from response. Status: ${r.status}`)}catch(e){const n=yield this.getRuntimeInfoAsync();if(n instanceof d.ZR){const e=new C;e.UpdateType=g.kD.SoftwareUpdate,e.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),e.ResponseResult=n,t.UpdatesNotAvailable.push(e)}else{const r=new C;r.UpdateType=g.kD.SoftwareUpdate,r.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),r.ResponseResult=new d.ZR(f.rQ.CannotGetUpdates,`Cannot get available updates! ${e}`),r.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,t.UpdatesNotAvailable.push(r)}}}return t}))}CheckControllerVersionAsync(){return A(this,void 0,void 0,(function*(){const e=yield this._updateProviders.GetUpdatesProvidersAsync(p.cp.Controller),t=yield this.getRuntimeInfoAsync();if(t instanceof d.ZR)return t;const n=[];let r;r=new g.lb,r.Resource="Controller software",r.Type=g.kD.SoftwareUpdate,r.Version=`${t.RuntimeVersion}.${t.SoftwareVersion}`,n.push(r);for(let t=0;t<e.length;t++){r=new g.lb,r.Version=yield e[t].GetCurrentRadioVersionAsync(),r.Type=g.kD.RadioUpdate;let s="n/a";try{s=(yield this._extensionService.GetProtocolInfoAsync(e[t].ProtocolGuid)).first().Name}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}r.Resource=s,n.push(r)}return n}))}GetControllerUpdateBranchAsync(){return A(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot get update branch, feature unsupported in current version. Current version: ${e}`);const r=yield this._connection.SendAndWaitForResponseAsync(new N,1e4,!1);if(null==r||(null==r?void 0:r.Status)!=c.nW.OK)return new d.ZR(f.rQ.CannotGetUpdatesBranch,`Cannot get update branch, response is empty or status is not OK. Status: ${null==r?void 0:r.Status}`);switch(r.Data){case 0:return f.yI.Public;case 1:return f.yI.Beta;case 2:return f.yI.Development;default:return new d.ZR(f.rQ.CannotGetUpdatesBranch,`Cannot get update branch, unknown branch number. Branch number: ${r.Data}`)}}))}SetControllerUpdateBranchAsync(e){return A(this,void 0,void 0,(function*(){const t=yield this.getRuntimeInfoAsync();if(t instanceof d.ZR)return t;const n=parseInt(t.SoftwareVersion.toString().split(".")[0]),r=parseInt(t.SoftwareVersion.toString().split(".")[1]);if(n<this._oldUpdateVersion||n===this._oldUpdateVersion&&r<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot set update branch, feature unsupported in current version. Current version: ${t}`);const s=yield this._connection.SendAndWaitForResponseAsync(new G(e),1e4,!1);return null==s||(null==s?void 0:s.Status)!=c.nW.OK?new d.ZR(f.rQ.CannotSetUpdatesBranch,`Cannot set update branch, response is empty or status is not OK. Status: ${null==s?void 0:s.Status}`):c.nW.OK}))}EnableAutomaticControllerUpdateDonwloadAsync(){return A(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot enable automatic updates download, feature unsupported in current version. Current version: ${e}`);const r=yield this._connection.SendAndWaitForResponseAsync(new W,1e4,!1);return null==r||(null==r?void 0:r.Status)!=c.nW.OK?new d.ZR(f.rQ.CannotSetUpdatesBranch,`Cannot enable automatic updates download, response is empty or status is not OK. Status: ${null==r?void 0:r.Status}`):c.nW.OK}))}DisableAutomaticControllerUpdateDonwloadAsync(){return A(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot disable automatic update download, feature unsupported in current version. Current version: ${e}`);const r=yield this._connection.SendAndWaitForResponseAsync(new x,1e4,!1);return null==r||(null==r?void 0:r.Status)!=c.nW.OK?new d.ZR(f.rQ.CannotSetUpdatesBranch,`Cannot disable automatic update download, response is empty or status is not OK. Status: ${null==r?void 0:r.Status}`):c.nW.OK}))}GetControllerUpdatesHistoryAsync(){return A(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot disable automatic update download, feature unsupported in current version. Current version: ${e}`);const r=yield this._connection.SendAndWaitForResponseAsync(new F,1e4,!1);if(null==r)return new d.ZR(f.rQ.CannotGetUpdates,"Cannot get updates history, response is empty.");switch(r.Status){case c.nW.OK:return null!=r.Data?r.Data.map((e=>{const t=new g.eS;return t.UpdatedResourceName=(0,w.ku)(e.UpdateName),t.UpdateDescription=(0,w.ku)(e.UpdateDescription),t.UpdateCreationTime=e.Creationtime,t.UpdateChannel=e.UpdateChannel,t.Version=`${e.Version.BaseRuntime}.${e.Version.ContainerSoftwareVersion}`,t})):new d.ZR(f.rQ.CannotGetUpdates,"Cannot get updates history, response data is empty.");case c.nW.NoData:return[];default:return new d.ZR(f.rQ.CannotGetUpdates,`Cannot get updates history, response status is not OK. Status: ${r.Status}`)}}))}InstallControllerUpdateAsync(e,t,n,r,s){return A(this,void 0,void 0,(function*(){const o=new RegExp("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$"),i=this._controllerUpdates.length,a=yield this.getRuntimeInfoAsync();if(a instanceof d.ZR)return a;const u=parseInt(a.SoftwareVersion.toString().split(".")[0]),l=parseInt(a.SoftwareVersion.toString().split(".")[1]);if(0==this._controllerUpdates.length)return new d.ZR(f.rQ.CannotGetUpdates,"Cannot find any updates, make sure you check for available updates by calling CheckControllerUpdateAsync().");if("string"!=typeof n||!o.test(n)){const s=[1],o=t=>{t.UpdateNumber=s[0],t.AvailableUpdates=i,e(t)},a=e=>A(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}));let h=this._controllerUpdates.where((e=>e.UpdateType==g.kD.RadioUpdate)).toArray(),p=[];this._appStateService.DisallowHibernation();for(let e=0;e<h.length;e++){const t=yield(yield this._updateProviders.GetUpdatesProviderAsync(h[e].ProviderName)).InstallRadioUpdateAsync(h[e],o,n);yield a(5e3),t==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((t=>t.UpdateIdentifier!=h[e].UpdateIdentifier))),p.push(t),s[0]++}const v=this._controllerUpdates.find((e=>e.UpdateType==g.kD.SoftwareUpdate));if(null!=v)if(u<this._oldUpdateVersion||u===this._oldUpdateVersion&&l<=this._oldUpdateBuild){const e=yield this.UpdateControllerUsingScriptAsync(v.Update,o);e==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=v.UpdateIdentifier))),p.push(e),s[0]++}else{const e=yield this.UpdateControllerUsingApiAsync(o,t,r);this._appStateService.AllowHibernation(),e==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n))),p.push(e),s[0]++}const m=p.where((e=>e instanceof d.ZR)).toArray();if(null!=m&&0!=m.length){let e="";return m.forEach((t=>e+=`${t.Type}, `)),this._appStateService.AllowHibernation(),new d.ZR(f.rQ.UpdatesPartiallyInstalled,`Update installation finished - not all updates were successfully installed. Installation error codes: ${e}`)}return this._appStateService.AllowHibernation(),c.nW.OK}{let o;const i=this._controllerUpdates.find((e=>e.UpdateIdentifier==n));if(null==i)return new d.ZR(f.rQ.CannotGetUpdates,`Update with requested guid (${n}) not found.`);switch(this._logger.Debug(`Installing single update type: ${i.Update.UpdateType}, resource: ${i.UpdatedResourceName}, version: ${i.Update.Version}`),this._appStateService.DisallowHibernation(),i.UpdateType){case g.kD.RadioUpdate:return r?new d.ZR(f.rQ.UpdateAlreadyDownloaded,"Update already downloaded set flag downloadOnly to false to install it."):(o=yield(yield this._updateProviders.GetUpdatesProviderAsync(i.ProviderName)).InstallRadioUpdateAsync(i,e,s),this._appStateService.AllowHibernation(),o==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n))),o);case g.kD.SoftwareUpdate:if(u<this._oldUpdateVersion||u===this._oldUpdateVersion&&l<=this._oldUpdateBuild){if(r)return new d.ZR(f.rQ.UpdateAlreadyDownloaded,"Update already downloaded set flag downloadOnly to false to install it.");o=yield this.UpdateControllerUsingScriptAsync(i.Update,e),this._appStateService.AllowHibernation(),o==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n)))}else o=yield this.UpdateControllerUsingApiAsync(e,t,r),this._appStateService.AllowHibernation(),o==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n)));return o;default:return new d.ZR(f.rQ.CannotProcessUpdate,`Update with type ${i.UpdateType} is not supported by UpdateService.`)}}}))}UpdateControllerUsingScriptAsync(e,t){return A(this,void 0,void 0,(function*(){var n,r,s,o,i,u;switch(e.UpdateType){case p.Dx.Container:case p.Dx.ContainerSoftware:try{return yield null===(n=this._connection)||void 0===n?void 0:n.SendAndHandleResponseAsync(new k(e.DownloadUri),this._updateRequestTimeout,(n=>{const r=new f.jK;switch(r.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),n.Status){case c.nW.MultiDataResponseStart:r.Status=f.Y0.PreparingForUpgrade;break;case c.nW.MultiDataResponse:if(null==n.Data)return void this._logger.Warning(_.ServiceName,`Recived update response without data! URI: ${e.DownloadUri}`);switch(r.Percentage=Math.round(n.Data.Progress),n.Data.State){case f.D9.CheckingApplicability:case f.D9.CheckingIntegrity:case f.D9.CheckingPackageIntegrity:r.Status=f.Y0.CheckingPackage;break;case f.D9.CreatingBackup:case f.D9.MigratingData:case f.D9.Removing:r.Status=f.Y0.MovingData;break;case f.D9.Deploying:case f.D9.Installing:r.Status=f.Y0.Upgrading;break;case f.D9.Downloading:r.Status=f.Y0.DownloadingPackage;break;case f.D9.Error:r.Status=f.Y0.Error;break;case f.D9.Installed:r.Status=f.Y0.Upgraded;break;case f.D9.PreparingSystem:case f.D9.ReadyToDownload:r.Status=f.Y0.PreparingForUpgrade;break;case f.D9.UndoingInstallation:r.Status=f.Y0.InstallationStopped;break;case f.D9.Unpackaging:r.Status=f.Y0.MovingData;break;case f.D9.WaitingForUser:r.Status=f.Y0.Upgrading}break;case c.nW.MultiDataResponseStop:r.Status=f.Y0.OK;break;case c.nW.Error:case c.nW.FatalError:r.Status=f.Y0.Error}t(r)}),!1),c.nW.OK}catch(e){return new d.ZR(f.rQ.CannotProcessUpdate,`Cannot process update, error: ${e}`)}case p.Dx.RuntimeFixingScript:var h=10;let m="n/a";try{m=(yield this._extensionService.GetExtensionsInfoAsync()).first((e=>"f4f45dac-beda-441a-8d29-efc6dc977cd1"==e.ExtensionGuid)).ExtensionVersion}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}var g=m;const y=yield this.getRuntimeInfoAsync();if(y instanceof d.ZR)return y;var v=parseFloat(y.RuntimeVersion)>=2||parseFloat(g)>=1.2201125;try{h=(yield a.j.Get(l.N7.ServiceName).GetDevicesAsync()).length}catch(e){this._logger.Warning(_.ServiceName,`Cannot get number of devices in system! Error: ${e}. Using default value of 10 devices.`)}if(v){let n,r=new f.jK;r.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),r.Percentage=1,r.Status=f.Y0.PreparingForUpgrade,t(r);let s=2;const o=Date.now(),i=900*h+8e5,a=i/100,u=o+i,l=new Promise(((o,l)=>A(this,void 0,void 0,(function*(){var l;try{const h=()=>{if(this._appStateService.OnReturnedFromSuspension().Unsubscribe(h),Date.now()>u)clearInterval(n),this._logger.Debug("Update already finished!"),r.Percentage=100,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Upgraded,t(r),o(c.nW.OK);else{var e=u-Date.now();e<i?s=95-e/a:(clearInterval(n),n=setInterval((()=>{clearInterval(n),r.Percentage=100,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Upgraded,t(r),o(c.nW.OK)}),e))}};this._appStateService.OnReturnedFromSuspension().Subscribe(h),n=setInterval((()=>{if(s>99)clearInterval(n),r.Percentage=100,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Upgraded,t(r),o(c.nW.OK);else{var e=s;e<99&&(r.Percentage=Math.round(e),r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Upgrading,t(r))}s++}),a);const g=yield null===(l=this._connection)||void 0===l?void 0:l.SendAndWaitForResponseAsync(new I(e.DownloadUri),this._updateRequestTimeout,!1);g.Status!=c.nW.OK&&(clearInterval(n),r.Percentage=0,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.InstallationError,t(r),this._logger.Debug(_.ServiceName,`Update failed with error. Update response status: ${g.Status}`),o(new d.ZR(f.rQ.CannotProcessUpdate,`Update failed with error. Update response status: ${g.Status}`)))}catch(e){this._logger.Debug(_.ServiceName,`Update failed with error. ${e}`),r.Percentage=0,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Error,t(r),clearInterval(n),o(new d.ZR(f.rQ.CannotProcessUpdate,`Update failed with error. ${e}`))}}))));return yield l}{let n=new f.jK;n.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),n.Percentage=1,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.PreparingForUpgrade,t(n);const a=this._connection.GetAuthorizationInfo();if(null==a)return new d.ZR(f.rQ.CannotProcessUpdate,"Cannot process update. Cannot get current controller login credentials!");if((yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(new E({Email:"support@support",Password:`support@${a.SerialNumber}:${a.PIN}`}),12e3,!1)).Status===c.nW.OK){n.Percentage=1,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.PreparingForUpgrade,t(n);let r=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(new R("rm /runtime/tmp/update.sh"),12e3,!1);if(r.Status==c.nW.OK){if(this._logger.Debug("Removed previous script"),n.Percentage=2,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.PreparingForUpgrade,t(n),r=yield null===(o=this._connection)||void 0===o?void 0:o.SendAndWaitForResponseAsync(new R(`wget ${e.DownloadUri} -O /runtime/tmp/update.sh --no-check-certificate`),this._updateRequestTimeout,!1),r.Status==c.nW.OK){this._logger.Debug("Downloaded update script"),n.Percentage=5,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.PreparingForUpgrade,t(n);try{if(r=yield null===(i=this._connection)||void 0===i?void 0:i.SendAndWaitForResponseAsync(new R("chmod a+x /runtime/tmp/update.sh"),12e3,!1),r.Status==c.nW.OK){this._logger.Debug("Executed update script"),n.Percentage=5,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgrading,t(n);let e,r=0;const s=.95,o=Date.now(),i=900*h+15e5,a=i/95,u=o+i,l=new Promise(((o,l)=>A(this,void 0,void 0,(function*(){var l;try{const d=()=>{if(this._appStateService.OnReturnedFromSuspension().Unsubscribe(d),Date.now()>u)clearInterval(e),this._logger.Debug("Update already finished!"),n.Percentage=100,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgraded,t(n),o(c.nW.OK);else{var s=u-Date.now();s<i?r=95-s/a:(clearInterval(e),e=setInterval((()=>{clearInterval(e),n.Percentage=100,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgraded,t(n),o(c.nW.OK)}),s))}};this._appStateService.OnReturnedFromSuspension().Subscribe(d),e=setInterval((()=>{if(r>99)clearInterval(e),n.Percentage=100,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgraded,t(n),o(c.nW.OK);else{var i=5+r*s;i<99&&(n.Percentage=Math.round(i),n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgrading,t(n))}r++}),a),null===(l=this._connection)||void 0===l||l.SendAndWaitForResponseAsync(new R("/runtime/tmp/update.sh"),12e3,!1)}catch(e){o(new d.ZR(f.rQ.CannotProcessUpdate,`Update failed with error. ${e}`))}}))));return yield l}return n.Percentage=0,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.InstallationError,t(n),new d.ZR(f.rQ.CannotProcessUpdate,"Execution failed!")}catch(e){return null===(u=this._connection)||void 0===u||u.SendAndWaitForResponseAsync(new R("/runtime/scripts/restart_all.sh"),12e3,!1),new d.ZR(f.rQ.CannotProcessUpdate,`Execution failed! Error ${e}`)}}return new d.ZR(f.rQ.CannotProcessUpdate,"Execution failed! Cannot clear old update script!")}}return new d.ZR(f.rQ.CannotProcessUpdate,"Execution failed! Cannot loggin using support account!")}default:return new d.ZR(f.rQ.CannotProcessUpdate,`Not supported update type, type: ${e.UpdateType}`)}}))}UpdateControllerUsingApiAsync(e,t,n){return A(this,void 0,void 0,(function*(){const r=e=>A(this,void 0,void 0,(function*(){return new Promise(((r,s)=>A(this,void 0,void 0,(function*(){yield this._connection.SendAndHandleResponseAsync(new O,this._updateRequestTimeout,(s=>{var o,a,u,l;const h=new f.II;switch(h.UpdatedResourceName=(0,w.ku)(e.Update.UpdateName),s.Status){case c.nW.MultiDataResponseStart:h.Percentage=0,h.SpeedMbps=0,h.PercentageTotal=0,h.CurrentTask=f.kL.DownloadingInstaller,t(h);break;case c.nW.MultiDataResponse:if(null!=s.Data){switch(h.Percentage=s.Data.StepProgressInPercentage,h.SpeedMbps=s.Data.DownloadSpeedInMbs,h.PercentageTotal=n?Math.round(2*(null===(o=s.Data)||void 0===o?void 0:o.UpdateProgressInPercentage)):Math.round(null===(a=s.Data)||void 0===a?void 0:a.UpdateProgressInPercentage),s.Data.UpdateStep){case i.DownloadingInstaller:h.CurrentTask=f.kL.DownloadingInstaller;break;case i.DownloadingUpdate:h.CurrentTask=f.kL.DownloadingUpdate;break;default:h.CurrentTask=f.kL.CheckingUpdate}t(h)}break;case c.nW.MultiDataResponseStop:if(null!=s.Data)switch(s.Data.UpdateStep){case i.UpdateDownloaded:h.Percentage=100,h.PercentageTotal=n?Math.round(2*(null===(u=s.Data)||void 0===u?void 0:u.UpdateProgressInPercentage)):Math.round(null===(l=s.Data)||void 0===l?void 0:l.UpdateProgressInPercentage),h.SpeedMbps=0,h.CurrentTask=f.kL.CheckingUpdate,t(h),r(c.nW.OK);break;case i.UpdateDownloadFailed:h.Percentage=0,h.PercentageTotal=0,h.SpeedMbps=0,h.CurrentTask=f.kL.Unknown,t(h),r(new d.ZR(f.rQ.UpdateDownloadFailed,"Update download failed!"))}break;case c.nW.Error:case c.nW.FatalError:h.Percentage=0,h.PercentageTotal=0,h.SpeedMbps=0,h.CurrentTask=f.kL.Unknown,t(h),r(new d.ZR(f.rQ.CannotProcessUpdate,"Update download failed!"))}}),!1)}))))})),s=t=>A(this,void 0,void 0,(function*(){return new Promise(((n,r)=>A(this,void 0,void 0,(function*(){const r=60*this._updateOfflineStageTime*1e3;let s=0;yield this._connection.SendAndHandleResponseAsync(new M,this._updateRequestTimeout,(o=>{var a,u;const l=new f.jK;switch(l.UpdatedResourceName=(0,w.ku)(t.Update.UpdateName),o.Status){case c.nW.MultiDataResponseStart:l.Status=f.Y0.PreparingForUpgrade,l.Percentage=null===(a=o.Data)||void 0===a?void 0:a.StepProgressInPercentage,l.PercentageTotal=null===(u=o.Data)||void 0===u?void 0:u.UpdateProgressInPercentage,e(l);break;case c.nW.MultiDataResponse:null!=o.Data&&(l.Status=f.Y0.Upgrading,l.Percentage=Math.round(o.Data.StepProgressInPercentage),l.PercentageTotal=Math.round(o.Data.UpdateProgressInPercentage),s=o.Data.StepProgressInPercentage,e(l));break;case c.nW.MultiDataResponseStop:if(null!=o.Data)switch(o.Data.UpdateStep){case i.UpdateInstallationFailed:l.Status=f.Y0.InstallationError,l.Percentage=0,l.PercentageTotal=0,e(l),n(new d.ZR(f.rQ.CannotProcessUpdate,"Update installation failed!"));break;case i.OfflineUpdateStep:{l.Percentage=Math.round(o.Data.StepProgressInPercentage),l.PercentageTotal=Math.round(o.Data.UpdateProgressInPercentage);let t=(100-l.PercentageTotal)/100,i=l.PercentageTotal;const a=setInterval((()=>{s++,i+=t,i>100&&(i=100),s>=100?(l.Status=f.Y0.Upgraded,l.Percentage=100,l.PercentageTotal=100,e(l),clearInterval(a),n(c.nW.OK)):(l.Status=f.Y0.Upgrading,l.Percentage=Math.round(s),l.PercentageTotal=Math.round(i),e(l))}),r/(100-s))}}break;case c.nW.Error:case c.nW.FatalError:l.Status=f.Y0.Error,l.Percentage=0,l.PercentageTotal=0,e(l),n(new d.ZR(f.rQ.CannotProcessUpdate,"Update installation failed!"))}}),!1)}))))}));if(n){const e=yield this._connection.SendAndWaitForResponseAsync(new b,1e4,!1);if((null==e?void 0:e.Status)==c.nW.NoData)return new d.ZR(f.rQ.DeviceIsUpToDate,"No updates available!");if(null==e||(null==e?void 0:e.Status)!=c.nW.OK||null==(null==e?void 0:e.Data))throw new Error(`Cannot get pending updates! Response is empty or status is not OK. Status: ${null==e?void 0:e.Status}`);switch(e.Data.UpdateStep){case i.DownloadingInstaller:case i.DownloadingUpdate:case i.UpdateDownloaded:return new d.ZR(f.rQ.UpdateAlreadyDownloaded,"Update already downloaded, or download is in progress.");case i.InstallingUpdate:case i.PreparingUpdate:return new d.ZR(f.rQ.UpdateAlreadyInstalled,"Update already installed, or installation is in progress.");default:return yield r(e.Data)}}else{const e=yield this._connection.SendAndWaitForResponseAsync(new b,1e4,!1);if((null==e?void 0:e.Status)==c.nW.NoData)return new d.ZR(f.rQ.DeviceIsUpToDate,"No updates available!");if(null==e||(null==e?void 0:e.Status)!=c.nW.OK||null==(null==e?void 0:e.Data))throw new Error(`Cannot get pending updates! Response is empty or status is not OK. Status: ${null==e?void 0:e.Status}`);switch(e.Data.UpdateStep){case i.DownloadingInstaller:case i.DownloadingUpdate:return new d.ZR(f.rQ.UpdateAlreadyDownloaded,"Update already downloaded, or donwload in progress.");case i.InstallingUpdate:case i.PreparingUpdate:return new d.ZR(f.rQ.UpdateAlreadyInstalled,"Update already installed, or installation in progress.");case i.UpdateDownloaded:return yield s(e.Data);default:var o=yield r(e.Data);return o!=c.nW.OK?o:yield s(e.Data)}}}))}getRuntimeInfoAsync(){return A(this,void 0,void 0,(function*(){try{return yield this._updateProviders.GetSoftwareRuntimeInfoAsync()}catch(e){return e instanceof h.KH&&e.code==h.tg.Timeout?new d.ZR(f.rQ.CannotGetCurrentControllerVersionTimeout,"Cannot get runtime info (current controller version), timeout error - please restart controller to fix issue."):new d.ZR(f.rQ.CannotGetCurrentControllerVersion,`Cannot get runtime info (current controller version), error: ${e}`)}}))}}_.ServiceName="UpdatesService",p.u_;class C{constructor(){this.UpdatedResourceName=new Map,this.CurrentResourceVersion="",this.UpdateType=null,this.ResponseResult=null}}class T{constructor(){this._updateIdentifier="",this._updateResourceName=new Map,this._updateType=null,this._currentResourceVersion="",this._newResourceVersion="",this._updateDescription=new Map,this._updateIsDownloading=!1,this._updateCheckDownloadProgress=0,this._updateCreationTime=null}get UpdateCreationTime(){return this._updateCreationTime}get DownloadProgress(){return this._updateCheckDownloadProgress}get UpdateDescription(){return this._updateDescription}get UpdateIdentifier(){return this._updateIdentifier}get UpdatedResourceName(){return this._updateResourceName}get UpdateType(){return this._updateType}get CurrentResourceVersion(){return this._currentResourceVersion}get NewResourceVersion(){return this._newResourceVersion}get UpdateIsDownloading(){return this._updateIsDownloading}set UpdateCreationTime(e){this._updateCreationTime=e}set DownloadProgress(e){this._updateCheckDownloadProgress=e}set UpdateDescription(e){this._updateDescription=e}set UpdateIdentifier(e){this._updateIdentifier=e}set UpdatedResourceName(e){this._updateResourceName=e}set UpdateType(e){this._updateType=e}set CurrentResourceVersion(e){this._currentResourceVersion=e}set NewResourceVersion(e){this._newResourceVersion=e}set UpdateIsDownloading(e){this._updateIsDownloading=e}}class D{constructor(){this._updatedResourceName="",this._updateResourceGuid="",this._protocol="",this._protocolGuid="",this._currentResourceVersion="",this._newResourceVersion="",this._isUpdateSafe=!0,this._updateDescription=new Map}get UpdateDescription(){return this._updateDescription}set UpdateDescription(e){this._updateDescription=e}get UpdatedResourceName(){return this._updatedResourceName}get UpdateResourceGuid(){return this._updateResourceGuid}get Protocol(){return this._protocol}get ProtocolGuid(){return this._protocolGuid}get CurrentResourceVersion(){return this._currentResourceVersion}get NewResourceVersion(){return this._newResourceVersion}get IsUpdateSafe(){return this._isUpdateSafe}set UpdatedResourceName(e){this._updatedResourceName=e}set UpdateResourceGuid(e){this._updateResourceGuid=e}set Protocol(e){this._protocol=e}set ProtocolGuid(e){this._protocolGuid=e}set CurrentResourceVersion(e){this._currentResourceVersion=e}set NewResourceVersion(e){this._newResourceVersion=e}set IsUpdateSafe(e){this._isUpdateSafe=e}}class k extends c.CP{constructor(e){super(),this.Resource="/updates/update/from/uri",this.Method=c.IT.Post,this.Data=e}}!function(e){e[e.Windows=0]="Windows",e[e.Linux=1]="Linux",e[e.Unix=2]="Unix",e[e.OSX=3]="OSX",e[e.Android=4]="Android",e[e.iOS=5]="iOS",e[e.WindowsMobile=6]="WindowsMobile"}(r||(r={})),function(e){e[e.Any=0]="Any",e[e.MIPS=1]="MIPS",e[e.ARM32=2]="ARM32",e[e.ARM64=3]="ARM64",e[e.IntelX86=4]="IntelX86",e[e.IntelX64=5]="IntelX64"}(s||(s={})),function(e){e[e.Unknown=0]="Unknown",e[e.Environment=1]="Environment",e[e.OperatingSystem=2]="OperatingSystem",e[e.Application=3]="Application",e[e.Extension=4]="Extension",e[e.HardwareFirmware=5]="HardwareFirmware",e[e.Script=6]="Script",e[e.Command=7]="Command"}(o||(o={})),function(e){e[e.InstallerFileSignCheckFailed=-5]="InstallerFileSignCheckFailed",e[e.UpdateFileSignCheckFailed=-4]="UpdateFileSignCheckFailed",e[e.UpdateInstallationFailed=-3]="UpdateInstallationFailed",e[e.UpdateDownloadFailed=-2]="UpdateDownloadFailed",e[e.UpdateFileCheckFailed=-1]="UpdateFileCheckFailed",e[e.Unknown=0]="Unknown",e[e.DownloadingUpdate=1]="DownloadingUpdate",e[e.CheckingUpdate=2]="CheckingUpdate",e[e.PreparingUpdate=3]="PreparingUpdate",e[e.InstallingUpdate=4]="InstallingUpdate",e[e.DownloadingInstaller=5]="DownloadingInstaller",e[e.UpdateDownloaded=6]="UpdateDownloaded",e[e.OfflineUpdateStep=7]="OfflineUpdateStep"}(i||(i={}));class I extends c.CP{constructor(e){super(),this.Resource="/updates/install/from/url",this.Method=c.IT.Put,this.Data=e}}class E extends c.CP{constructor(e){super(),this.Resource="/users/user/login",this.Method=c.IT.Put,this.Data=e}}class R extends c.CP{constructor(e){super(),this.Resource="/controller/runtime/execute",this.Method=c.IT.Post,this.Data=e}}class N extends c.CP{constructor(){super(),this.Resource="/updates/branch",this.Method=c.IT.Get}}class G extends c.CP{constructor(e){super(),this.Resource="/updates/branch",this.Method=c.IT.Put,this.Data=e}}class b extends c.CP{constructor(){super(),this.Resource="/updates/pending",this.Method=c.IT.Get}}class P extends c.CP{constructor(){super(),this.Resource="/updates/check",this.Method=c.IT.Get}}class O extends c.CP{constructor(){super(),this.Resource="/updates/download",this.Method=c.IT.Post}}class M extends c.CP{constructor(){super(),this.Resource="/updates/install",this.Method=c.IT.Post}}class U extends c.CP{constructor(){super(),this.Resource="/updates/download/automatic/status",this.Method=c.IT.Get}}class W extends c.CP{constructor(){super(),this.Resource="/updates/download/automatic/enable",this.Method=c.IT.Put}}class x extends c.CP{constructor(){super(),this.Resource="/updates/download/automatic/disable",this.Method=c.IT.Put}}class F extends c.CP{constructor(){super(),this.Resource="/updates/history",this.Method=c.IT.Get}}class L extends c.CP{constructor(){super(),this.Resource="/updates/devices/availability",this.Method=c.IT.Get}}},9315:(e,t,n)=>{n.d(t,{z:()=>r});class r{constructor(e){if(this.initialCount=e,this._running=0,this._waiting=[],this.Take=()=>{if(this._waiting.length>0&&this._running<this.initialCount){this._running++;const e=this._waiting.shift();null==e||e.Resolve({Release:this.Release})}},this.AcquireAsync=()=>this._running<this.initialCount?(this._running++,Promise.resolve({Release:this.Release})):new Promise(((e,t)=>{this._waiting.push({Resolve:e,Reject:t})})),this.Release=()=>{this._running--,this.Take()},this.Purge=()=>{this._waiting.forEach((e=>{e.Reject(new Error("The semaphore was purged and as a result this task has been cancelled"))})),this._running=0,this._waiting=[]},e<1)throw new Error(`The semaphore was created with a max value of ${e} but the max value cannot be less than 1`)}}},9595:(e,t,n)=>{n.d(t,{G:()=>se});const r=[0,2e3,1e4,3e4,null];class s{constructor(e){this._retryDelays=void 0!==e?[...e,null]:r}nextRetryDelayInMilliseconds(e){return this._retryDelays[e.previousRetryCount]}}class o{}o.Authorization="Authorization",o.Cookie="Cookie";class i{constructor(e,t,n){this.statusCode=e,this.statusText=t,this.content=n}}class a{get(e,t){return this.send({...t,method:"GET",url:e})}post(e,t){return this.send({...t,method:"POST",url:e})}delete(e,t){return this.send({...t,method:"DELETE",url:e})}getCookieString(e){return""}}class c extends a{constructor(e,t){super(),this._innerClient=e,this._accessTokenFactory=t}async send(e){let t=!0;this._accessTokenFactory&&(!this._accessToken||e.url&&e.url.indexOf("/negotiate?")>0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[o.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[o.Authorization]&&delete e.headers[o.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}var u,l,d,h,g,p=n(1966);!function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(u||(u={}));class f{constructor(){}log(e,t){}}f.instance=new f;class v{static isRequired(e,t){if(null==e)throw new Error(`The '${t}' argument is required.`)}static isNotEmpty(e,t){if(!e||e.match(/^\s*$/))throw new Error(`The '${t}' argument should not be empty.`)}static isIn(e,t,n){if(!(e in t))throw new Error(`Unknown ${n} value: ${e}.`)}}class m{static get isBrowser(){return!m.isNode&&"object"==typeof window&&"object"==typeof window.document}static get isWebWorker(){return!m.isNode&&"object"==typeof self&&"importScripts"in self}static get isReactNative(){return!m.isNode&&"object"==typeof window&&void 0===window.document}static get isNode(){return"undefined"!=typeof process&&process.release&&"node"===process.release.name}}function y(e,t){let n="";return w(e)?(n=`Binary data of length ${e.byteLength}`,t&&(n+=`. Content: '${function(e){const t=new Uint8Array(e);let n="";return t.forEach((e=>{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function w(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function S(e,t,n,r,s,o){const i={},[a,c]=C();i[a]=c,e.log(u.Trace,`(${t} transport) sending data. ${y(s,o.logMessageContent)}.`);const l=w(s)?"arraybuffer":"text",d=await n.post(r,{content:s,headers:{...i,...o.headers},responseType:l,timeout:o.timeout,withCredentials:o.withCredentials});e.log(u.Trace,`(${t} transport) request complete. Response status: ${d.statusCode}.`)}class A{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class _{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${u[e]}: ${t}`;switch(e){case u.Critical:case u.Error:this.out.error(n);break;case u.Warning:this.out.warn(n);break;case u.Information:this.out.info(n);break;default:this.out.log(n)}}}}function C(){let e="X-SignalR-User-Agent";return m.isNode&&(e="User-Agent"),[e,T("8.0.7",D(),m.isNode?"NodeJS":"Browser",k())]}function T(e,t,n,r){let s="Microsoft SignalR/";const o=e.split(".");return s+=`${o[0]}.${o[1]}`,s+=` (${e}; `,s+=t&&""!==t?`${t}; `:"Unknown OS; ",s+=`${n}`,s+=r?`; ${r}`:"; Unknown Runtime Version",s+=")",s}function D(){if(!m.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function k(){if(m.isNode)return process.versions.node}function I(e){return e.stack?e.stack:e.message?e.message:`${e}`}class E extends a{constructor(e){if(super(),this._logger=e,"undefined"==typeof fetch||m.isNode){const e=require;this._jar=new(e("tough-cookie").CookieJar),"undefined"==typeof fetch?this._fetchType=e("node-fetch"):this._fetchType=fetch,this._fetchType=e("fetch-cookie")(this._fetchType,this._jar)}else this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}());if("undefined"==typeof AbortController){const e=require;this._abortControllerType=e("abort-controller")}else this._abortControllerType=AbortController}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new p.lc;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new p.lc});let r,s=null;if(e.timeout){const r=e.timeout;s=setTimeout((()=>{t.abort(),this._logger.log(u.Warning,"Timeout from HTTP request."),n=new p.MU}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},w(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(u.Warning,`Error from HTTP request. ${e}.`),e}finally{s&&clearTimeout(s),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await R(r,"text");throw new p.j$(e||r.statusText,r.status)}const o=R(r,e.responseType),a=await o;return new i(r.status,r.statusText,a)}getCookieString(e){let t="";return m.isNode&&this._jar&&this._jar.getCookies(e,((e,n)=>t=n.join("; "))),t}}function R(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class N extends a{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new p.lc):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(w(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const s=e.headers;s&&Object.keys(s).forEach((e=>{r.setRequestHeader(e,s[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new p.lc)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new i(r.status,r.statusText,r.response||r.responseText)):n(new p.j$(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(u.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new p.j$(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(u.Warning,"Timeout from HTTP request."),n(new p.MU)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class G extends a{constructor(e){if(super(),"undefined"!=typeof fetch||m.isNode)this._httpClient=new E(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new N(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new p.lc):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(l||(l={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(d||(d={}));class b{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class P{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new b,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(v.isRequired(e,"url"),v.isRequired(t,"transferFormat"),v.isIn(t,d,"transferFormat"),this._url=e,this._logger.log(u.Trace,"(LongPolling transport) Connecting."),t===d.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=C(),s={[n]:r,...this._options.headers},o={abortSignal:this._pollAbort.signal,headers:s,timeout:1e5,withCredentials:this._options.withCredentials};t===d.Binary&&(o.responseType="arraybuffer");const i=`${e}&_=${Date.now()}`;this._logger.log(u.Trace,`(LongPolling transport) polling: ${i}.`);const a=await this._httpClient.get(i,o);200!==a.statusCode?(this._logger.log(u.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new p.j$(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,o)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(u.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(u.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(u.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new p.j$(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(u.Trace,`(LongPolling transport) data received. ${y(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(u.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof p.MU?this._logger.log(u.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(u.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(u.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?S(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(u.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(u.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=C();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let s;try{await this._httpClient.delete(this._url,r)}catch(e){s=e}s?s instanceof p.j$&&(404===s.statusCode?this._logger.log(u.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(u.Trace,`(LongPolling transport) Error sending a DELETE request: ${s}`)):this._logger.log(u.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(u.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(u.Trace,e),this.onclose(this._closeError)}}}class O{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return v.isRequired(e,"url"),v.isRequired(t,"transferFormat"),v.isIn(t,d,"transferFormat"),this._logger.log(u.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let s,o=!1;if(t===d.Text){if(m.isBrowser||m.isWebWorker)s=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,o]=C();n[r]=o,s=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{s.onmessage=e=>{if(this.onreceive)try{this._logger.log(u.Trace,`(SSE transport) data received. ${y(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},s.onerror=e=>{o?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},s.onopen=()=>{this._logger.log(u.Information,`SSE connected to ${this._url}`),this._eventSource=s,o=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?S(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class M{constructor(e,t,n,r,s,o){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=s,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=o}async connect(e,t){let n;return v.isRequired(e,"url"),v.isRequired(t,"transferFormat"),v.isIn(t,d,"transferFormat"),this._logger.log(u.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,s)=>{let i;e=e.replace(/^http/,"ws");const a=this._httpClient.getCookieString(e);let c=!1;if(m.isNode||m.isReactNative){const t={},[r,s]=C();t[r]=s,n&&(t[o.Authorization]=`Bearer ${n}`),a&&(t[o.Cookie]=a),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===d.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(u.Information,`WebSocket connected to ${e}.`),this._webSocket=i,c=!0,r()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(u.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(u.Trace,`(WebSockets transport) data received. ${y(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(c)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",s(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(u.Trace,`(WebSockets transport) sending data. ${y(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(u.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class U{constructor(e,t={}){var n;if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,v.isRequired(e,"url"),this._logger=void 0===(n=t.logger)?new _(u.Information):null===n?f.instance:void 0!==n.log?n:new _(n),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout;let r=null,s=null;if(m.isNode){const e=require;r=e("ws"),s=e("eventsource")}m.isNode||"undefined"==typeof WebSocket||t.WebSocket?m.isNode&&!t.WebSocket&&r&&(t.WebSocket=r):t.WebSocket=WebSocket,m.isNode||"undefined"==typeof EventSource||t.EventSource?m.isNode&&!t.EventSource&&void 0!==s&&(t.EventSource=s):t.EventSource=EventSource,this._httpClient=new c(t.httpClient||new G(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||d.Binary,v.isIn(e,d,"transferFormat"),this._logger.log(u.Debug,`Starting connection with transfer format '${d[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(u.Error,e),await this._stopPromise,Promise.reject(new p.lc(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(u.Error,e),Promise.reject(new p.lc(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new W(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(u.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(u.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(u.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(u.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==l.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(l.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new p.lc("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof P&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(u.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(u.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=C();t[n]=r;const s=this._resolveNegotiateUrl(e);this._logger.log(u.Debug,`Sending negotiation request: ${s}.`);try{const e=await this._httpClient.post(s,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new p.YW("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof p.j$&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(u.Error,t),Promise.reject(new p.YW(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let s=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(u.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(s,r),void(this.connectionId=n.connectionId);const o=[],i=n.availableTransports||[];let a=n;for(const n of i){const i=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(i instanceof Error)o.push(`${n.transport} failed:`),o.push(i);else if(this._isITransport(i)){if(this.transport=i,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}s=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(s,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(u.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,o.push(new p.az(`${n.transport} failed: ${e}`,l[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(u.Debug,e),Promise.reject(new p.lc(e))}}}}return o.length>0?Promise.reject(new p.tJ(`Unable to connect to the server with any of the available transports. ${o.join(" ")}`,o)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case l.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new M(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case l.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new O(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case l.LongPolling:return new P(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const s=l[e.transport];if(null==s)return this._logger.log(u.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||!!(t&e)}(t,s))return this._logger.log(u.Debug,`Skipping transport '${l[s]}' because it was disabled by the client.`),new p.Y3(`'${l[s]}' is disabled by the client.`,s);if(!(e.transferFormats.map((e=>d[e])).indexOf(n)>=0))return this._logger.log(u.Debug,`Skipping transport '${l[s]}' because it does not support the requested transfer format '${d[n]}'.`),new Error(`'${l[s]}' does not support ${d[n]}.`);if(s===l.WebSockets&&!this._options.WebSocket||s===l.ServerSentEvents&&!this._options.EventSource)return this._logger.log(u.Debug,`Skipping transport '${l[s]}' because it is not supported in your environment.'`),new p.zN(`'${l[s]}' is not supported in your environment.`,s);this._logger.log(u.Debug,`Selecting transport '${l[s]}'.`);try{return this.features.reconnect=s===l.WebSockets?r:void 0,this._constructTransport(s)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(u.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(u.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(u.Error,`Connection disconnected with error '${e}'.`):this._logger.log(u.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(u.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(u.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(u.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!m.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(u.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class W{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new x,this._transportResult=new x,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new x),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new x;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):W._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class x{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class F{static write(e){return`${e}${F.RecordSeparator}`}static parse(e){if(e[e.length-1]!==F.RecordSeparator)throw new Error("Message is incomplete.");const t=e.split(F.RecordSeparator);return t.pop(),t}}F.RecordSeparatorCode=30,F.RecordSeparator=String.fromCharCode(F.RecordSeparatorCode);class L{writeHandshakeRequest(e){return F.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(w(e)){const r=new Uint8Array(e),s=r.indexOf(F.RecordSeparatorCode);if(-1===s)throw new Error("Message is incomplete.");const o=s+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,o))),n=r.byteLength>o?r.slice(o).buffer:null}else{const r=e,s=r.indexOf(F.RecordSeparator);if(-1===s)throw new Error("Message is incomplete.");const o=s+1;t=r.substring(0,o),n=r.length>o?r.substring(o):null}const r=F.parse(t),s=JSON.parse(r[0]);if(s.type)throw new Error("Expected a handshake response from the server.");return[n,s]}}!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(h||(h={}));class B{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new A(this,e)}}class ${constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};w(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new q(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;n<this._messages.length;n++){const r=this._messages[n];if(r._id<=e.sequenceId)t=n,w(r._message)?this._bufferedByteCount-=r._message.byteLength:this._bufferedByteCount-=r._message.length,r._resolver();else{if(!(this._bufferedByteCount<this._bufferSize))break;r._resolver()}}-1!==t&&(this._messages=this._messages.slice(t+1))}_shouldProcessMessage(e){if(this._waitForSequenceMessage)return e.type===h.Sequence&&(this._waitForSequenceMessage=!1,!0);if(!this._isInvocationMessage(e))return!0;const t=this._nextReceivingSequenceId;return this._nextReceivingSequenceId++,t<=this._latestReceivedSequenceId?(t===this._latestReceivedSequenceId&&this._ackTimer(),!1):(this._latestReceivedSequenceId=t,this._ackTimer(),!0)}_resetSequence(e){e.sequenceId>this._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:h.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case h.Invocation:case h.StreamItem:case h.Completion:case h.StreamInvocation:case h.CancelInvocation:return!0;case h.Close:case h.Sequence:case h.Ping:case h.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:h.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class q{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(g||(g={}));class V{static create(e,t,n,r,s,o,i){return new V(e,t,n,r,s,o,i)}constructor(e,t,n,r,s,o,i){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(u.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},v.isRequired(e,"connection"),v.isRequired(t,"logger"),v.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=s?s:3e4,this.keepAliveIntervalInMilliseconds=null!=o?o:15e3,this._statefulReconnectBufferSize=null!=i?i:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new L,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=g.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:h.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==g.Disconnected&&this._connectionState!==g.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==g.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=g.Connecting,this._logger.log(u.Debug,"Starting HubConnection.");try{await this._startInternal(),m.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=g.Connected,this._connectionStarted=!0,this._logger.log(u.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=g.Disconnected,this._logger.log(u.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(u.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(u.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new $(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(u.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===g.Disconnected)return this._logger.log(u.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===g.Disconnecting)return this._logger.log(u.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=g.Disconnecting,this._logger.log(u.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(u.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===g.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new p.lc("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),s=this._createStreamInvocation(e,t,r);let o;const i=new B;return i.cancelCallback=()=>{const e=this._createCancelInvocation(s.invocationId);return delete this._callbacks[s.invocationId],o.then((()=>this._sendWithProtocol(e)))},this._callbacks[s.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===h.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},o=this._sendWithProtocol(s).catch((e=>{i.error(e),delete this._callbacks[s.invocationId]})),this._launchStreams(n,o),i}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),s=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,s),s}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),s=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[s.invocationId]=(n,r)=>{r?t(r):n&&(n.type===h.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(s).catch((e=>{t(e),delete this._callbacks[s.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case h.Invocation:this._invokeClientMethod(e).catch((e=>{this._logger.log(u.Error,`Invoke client method threw error: ${I(e)}`)}));break;case h.StreamItem:case h.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===h.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(u.Error,`Stream callback threw error: ${I(e)}`)}}break}case h.Ping:break;case h.Close:{this._logger.log(u.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case h.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case h.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(u.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(u.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(u.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(u.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===g.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(u.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(u.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),s=!!e.invocationId;let o,i,a;for(const n of r)try{const r=o;o=await n.apply(this,e.arguments),s&&o&&r&&(this._logger.log(u.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),i=void 0}catch(e){i=e,this._logger.log(u.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):s?(i?a=this._createCompletionMessage(e.invocationId,`${i}`,null):void 0!==o?a=this._createCompletionMessage(e.invocationId,null,o):(this._logger.log(u.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):o&&this._logger.log(u.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(u.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new p.lc("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===g.Disconnecting?this._completeClose(e):this._connectionState===g.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===g.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=g.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),m.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(u.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),s=this._getNextRetryDelay(n++,0,r);if(null===s)return this._logger.log(u.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=g.Reconnecting,e?this._logger.log(u.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(u.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(u.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==g.Reconnecting)return void this._logger.log(u.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==s;){if(this._logger.log(u.Information,`Reconnect attempt number ${n} will start in ${s} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,s)})),this._reconnectDelayHandle=void 0,this._connectionState!==g.Reconnecting)return void this._logger.log(u.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=g.Connected,this._logger.log(u.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(u.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(u.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==g.Reconnecting)return this._logger.log(u.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===g.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),s=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(u.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(u.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(u.Error,`Stream 'error' callback called with '${e}' threw error: ${I(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{arguments:t,streamIds:r,target:e,type:h.Invocation}:{arguments:t,target:e,type:h.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:h.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:h.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r<e.length;r++){const s=e[r];if(this._isObservable(s)){const o=this._invocationId;this._invocationId++,t[o]=s,n.push(o.toString()),e.splice(r,1)}}return[t,n]}_isObservable(e){return e&&e.subscribe&&"function"==typeof e.subscribe}_createStreamInvocation(e,t,n){const r=this._invocationId;return this._invocationId++,0!==n.length?{arguments:t,invocationId:r.toString(),streamIds:n,target:e,type:h.StreamInvocation}:{arguments:t,invocationId:r.toString(),target:e,type:h.StreamInvocation}}_createCancelInvocation(e){return{invocationId:e,type:h.CancelInvocation}}_createStreamItemMessage(e,t){return{invocationId:e,item:t,type:h.StreamItem}}_createCompletionMessage(e,t,n){return t?{error:t,invocationId:e,type:h.Completion}:{invocationId:e,result:n,type:h.Completion}}_createCloseMessage(){return{type:h.Close}}}class j{constructor(){this.name="json",this.version=2,this.transferFormat=d.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=f.instance);const n=F.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case h.Invocation:this._isInvocationMessage(n);break;case h.StreamItem:this._isStreamItemMessage(n);break;case h.Completion:this._isCompletionMessage(n);break;case h.Ping:case h.Close:break;case h.Ack:this._isAckMessage(n);break;case h.Sequence:this._isSequenceMessage(n);break;default:t.log(u.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return F.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const H={trace:u.Trace,debug:u.Debug,info:u.Information,information:u.Information,warn:u.Warning,warning:u.Warning,error:u.Error,critical:u.Critical,none:u.None};class Q{configureLogging(e){if(v.isRequired(e,"logging"),void 0!==e.log)this.logger=e;else if("string"==typeof e){const t=function(e){const t=H[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new _(t)}else this.logger=new _(e);return this}withUrl(e,t){return v.isRequired(e,"url"),v.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return v.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new s(e):this.reconnectPolicy=e:this.reconnectPolicy=new s,this}withServerTimeout(e){return v.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return v.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new U(this.url,e);return V.create(t,this.logger||f.instance,this.protocol||new j,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Z=n(4756),K=n(8070),Y=n(5973),z=n(1061),J=n(4268),X=n(8517),ee=n(3386),te=n(4506),ne=n(5329),re=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class se{constructor(){this._logPackets=!1,this._pingInterval=5e3,this._disconnectedOnPurpose=!1,this._defaultPacketsBrokerAddress="packets-broker1.tr7.pl",this._serversBrokerAddress="https://servers-broker.tr7.pl",this._serversBrokerAddressList=["https://servers-broker.tr7.pl","https://broker.tr7.pl"],this._allBrokersChecked=!1,this._address="packets-broker1.tr7.pl",this._isEstabilished=!1,this._timeout=1e4,this._dataReceivedEvent=new Y.r,this._pongReceivedEvent=new X.J,this._authorizationReceivedEvent=new Y.r,this._registrationReceivedEvent=new Y.r,this._streamStartedEvent=new Y.r,this._connectionStateChangedEvent=new Y.r,this._errorOccuredEvent=new Y.r,this._log=z.j.Get(J.g.ServiceName),this._controllerConfiguration=null,this._cache=null,this._session=null,this._packetsBrokerServers=["packets-broker1.tr7.pl","br1.tr7.pl","br1.exala.pl"],this._lastReceivedPacketTime=Date.now(),this._connectedAtLeastOnce=!1}SubscribeTo(e,t){let n=n=>{n.Resource===e&&t(n)};return this.OnDataReceivedEvent().Subscribe(n),()=>this.OnDataReceivedEvent().Unsubscribe(n)}GetControllerSerialNumber(){return this._serialId}GetControllerPin(){return this._PIN}GetServiceName(){return se.ServiceName}EnablePacketsLogging(){this._logPackets=!0}DisablePacketsLogging(){this._logPackets=!1}InitializeConnection(){if(this._controllerConfiguration=z.j.Get(ee.u.ServiceName),this._cache=z.j.Get(te.C.ServiceName),this._session=z.j.Get(ne.Q.ServiceName),this._connection){try{this._connection.stop()}catch(e){}this._connection=void 0}if(!this._address)throw new Error("Domain is not set");if(!this._serialId)throw new Error("SerialId is not set");if(!this._PIN)throw new Error("PIN is not set");this._connection=(new Q).withUrl(`https://${this._address}/broker`).build(),this._dataReceivedEvent.Subscribe((e=>{this._lastReceivedPacketTime=Date.now()})),setInterval((()=>re(this,void 0,void 0,(function*(){yield this.PingControllerAsync()}))),this._pingInterval)}GetAuthorizationInfo(){return null!=this._serialId&&null!=this._PIN?new K.e5(this._serialId,this._PIN):null}SetServersBrokerAddress(e){this._serversBrokerAddress=e}SetDefaultPacketsBrokerAddress(e){this._defaultPacketsBrokerAddress=e,this._address=e}GetServerAddressAsync(){return re(this,void 0,void 0,(function*(){try{let e=yield fetch(`${this._serversBrokerAddress}/api/connections/broker/whichserver/${this._serialId}`);if(200===e.status){let t=yield e.text();return t?(this._log.Debug(se.ServiceName,`Got server address: ${t}`),t):(this._log.Error(se.ServiceName,`Failed to get server address, status: ${e.status}`),null)}return this._allBrokersChecked?(this._allBrokersChecked=!1,null):204===e.status?(this.swapBrokersAsync(!1),this.GetServerAddressAsync()):(this._log.Error(se.ServiceName,`Failed to get server address, status: ${e.status}`),null)}catch(e){return this._log.Error(se.ServiceName,e),null}}))}ConnectAsync(e){return re(this,void 0,void 0,(function*(){return this._connectedAtLeastOnce=!1,this._address=e,yield this.connectAsync()}))}AuthorizeAsync(e){return new Promise(((t,n)=>re(this,void 0,void 0,(function*(){var n;let r=0,s=e=>{window.clearTimeout(r),this._log.Debug(se.ServiceName,`Got authorization result: ${e}`),this._connectedAtLeastOnce=!0,t(e)};r=window.setTimeout((()=>{window.clearTimeout(r),this._authorizationReceivedEvent.Unsubscribe(s),t(!1)}),2e3),this._log.Debug(se.ServiceName,`Authorizing to cloud using: ${e.SerialNumber} PIN: ${e.PIN}`),this._authorizationReceivedEvent.Subscribe(s),yield null===(n=this._connection)||void 0===n?void 0:n.send("AuthorizeTo",e.SerialNumber,e.PIN)}))))}ConnectAndAuthorizeAsync(e){return re(this,void 0,void 0,(function*(){this._connectedAtLeastOnce=!1,z.j.WorksInContextOf=e.SerialNumber,this._serialId=e.SerialNumber,this._PIN=e.PIN;var t=yield this.GetServerAddressAsync();if(t&&null!=t&&""!=t){this._log.Debug(se.ServiceName,`Got packets broker address: ${t}`),this.SetDefaultPacketsBrokerAddress(t);let r=yield this.connectAsync();if(r!=K.IX.Connected)return r;var n=yield this.AuthorizeAsync(e);if(!n){if(this._connectedAtLeastOnce=!1,yield this.swapBrokersAsync(),!this._allBrokersChecked)return this.ConnectAndAuthorizeAsync(e);this._allBrokersChecked=!1}return n&&(this._connectedAtLeastOnce=!0),n?K.IX.Connected:K.IX.AuthorizationFailed}{let t=K.IX.ControllerIsNotConnected;this._log.Warning(se.ServiceName,"Server did not return packets broker address, trying to connect to known brokers.");for(let n of this._packetsBrokerServers){this._log.Warning(se.ServiceName,`Testing connection to ${n}`),this.SetDefaultPacketsBrokerAddress(n);try{yield this.DisconnectAsync()}catch(e){}this._log.Warning(se.ServiceName,`Connecting to server: ${n}`);let r=yield this.connectAsync();if(this._log.Warning(se.ServiceName,`Connection result: ${r}`),r==K.IX.Connected){if(yield this.AuthorizeAsync(e))return t=K.IX.Connected,this._connectedAtLeastOnce=!0,t;this._log.Warning(se.ServiceName,`Failed to authorize in ${n}`)}}return t}}))}swapBrokersAsync(){return re(this,arguments,void 0,(function*(e=!0){e&&(yield this.DisconnectAsync());var t=this._serversBrokerAddressList.lastIndexOf(this._serversBrokerAddress);t+1<this._serversBrokerAddressList.length?(this._serversBrokerAddress=this._serversBrokerAddressList[t+1],this._log.Debug(`Changing address of next broker from: ${this._serversBrokerAddressList[t]} to: ${this._serversBrokerAddressList[t+1]}`)):(this._log.Debug(`All brokers checked, changing address to first one: ${this._serversBrokerAddressList[0]}`),this._allBrokersChecked=!0,this._serversBrokerAddress=this._serversBrokerAddressList[0])}))}connectAsync(){return re(this,void 0,void 0,(function*(){var e,t,n,r,s,o,i,a,c,u,l;if(K.IX.FailedToConnect,!this._address)return Promise.resolve(K.IX.ControllerIsNotConnected);this._disconnectedOnPurpose&&(this._disconnectedOnPurpose=!1),this._connectionStateChangedEvent,this.InitializeConnection(),null===(e=this._connection)||void 0===e||e.onclose((()=>re(this,void 0,void 0,(function*(){var e,t;if(this._disconnectedOnPurpose?this._log.Info(se.ServiceName,"Connection closed on demand."):this._log.Error(se.ServiceName,"Connection closed"),z.j.Get(ne.Q.ServiceName).CreateSessionCompletionSourceAsync(),this.FireConnectionStateChanged(),(null===(e=this._connection)||void 0===e?void 0:e.state)===g.Disconnected&&!this._disconnectedOnPurpose)return yield null===(t=this._connection)||void 0===t?void 0:t.start(),null!=this._connection&&(yield this.AuthorizeAsync(new K.e5(this._serialId,this._PIN)))?(this._log.Info(se.ServiceName,"Reconnected from onClose"),this.FireConnectionStateChanged()):K.IX.FailedToConnect})))),null===(t=this._connection)||void 0===t||t.onreconnected((()=>re(this,void 0,void 0,(function*(){if(yield this.AuthorizeAsync(new K.e5(this._serialId,this._PIN)))return this._log.Info(se.ServiceName,"Reconnected from onreconnected"),this.FireConnectionStateChanged()})))),null===(n=this._connection)||void 0===n||n.onreconnecting((()=>(this._log.Warning(se.ServiceName,"Reconnecting..."),this.FireConnectionStateChanged()))),yield null===(r=this._connection)||void 0===r?void 0:r.start(),null===(s=this._connection)||void 0===s||s.on("Pong",(()=>{this._log.Debug(se.ServiceName,"Pong received <-"),this._pongReceivedEvent.Invoke()})),null===(o=this._connection)||void 0===o||o.on("Registration",(e=>{var t;null===(t=this._registrationReceivedEvent)||void 0===t||t.Invoke(e)})),null===(i=this._connection)||void 0===i||i.on("Authorization",(e=>{var t;null===(t=this._authorizationReceivedEvent)||void 0===t||t.Invoke(e)})),null===(a=this._connection)||void 0===a||a.on("SendError",((e,t)=>re(this,void 0,void 0,(function*(){e.startsWith("NotAuthorized:")?(this._log.Error(se.ServiceName,"Failed to authorize!"),yield this.AuthorizeAsync(new K.e5(this._serialId,this._PIN))):(this._log.Error(se.ServiceName,`Server returned error: ${e} ${t}`),this._errorOccuredEvent.Invoke([e,t]))})))),null===(c=this._connection)||void 0===c||c.on("ControllerDisconnected",(e=>re(this,void 0,void 0,(function*(){this._serialId===e&&(this._log.Warning(se.ServiceName,`Controller disconnected: ${e}`),yield this.DisconnectAsync())})))),null===(u=this._connection)||void 0===u||u.on("StreamStarted",(e=>{var t;null===(t=this._streamStartedEvent)||void 0===t||t.Invoke(e)}));let d=this._dataReceivedEvent;return null===(l=this._connection)||void 0===l||l.on("Data",((e,t)=>{const n=JSON.parse(t);(this._logPackets||!0===window.packets)&&this._log.Debug(se.ServiceName,`Received data:\n${JSON.stringify(n,null,2)}`),d.Invoke(n)})),null!=this._connection?this.FireConnectionStateChanged():K.IX.FailedToConnect}))}FireConnectionStateChanged(){var e;const t=this._connectionStateChangedEvent;switch(null===(e=this._connection)||void 0===e?void 0:e.state){case g.Connected:return t.Invoke(K.KN.Connected),K.IX.Connected;case g.Connecting:return t.Invoke(K.KN.Connecting),K.IX.Connected;case g.Disconnected:if(this._connectedAtLeastOnce)return t.Invoke(K.KN.Disconnected),K.IX.FailedToConnect;break;case g.Disconnecting:if(this._connectedAtLeastOnce)return t.Invoke(K.KN.Disconnecting),K.IX.FailedToConnect;break;case g.Reconnecting:return t.Invoke(K.KN.Reconnecting),K.IX.FailedToConnect}return K.IX.FailedToConnect}DisconnectAsync(){return re(this,void 0,void 0,(function*(){var e;this._disconnectedOnPurpose=!0,yield null===(e=this._connection)||void 0===e?void 0:e.stop()}))}IsConnected(){var e;return(null===(e=this._connection)||void 0===e?void 0:e.state)===g.Connected}SendAndWaitForResponseAsync(e,t,n,r=!0){return this.SendAndWaitForResponseWithRepeatAsync(e,t,n,r)}SendAndWaitForResponseWithRepeatAsync(e,t,n){return re(this,arguments,void 0,(function*(e,t,n,r=!0,s=!0){var o,i,a;if(e.Method===Z.IT.Get&&n&&!(yield null===(o=this._controllerConfiguration)||void 0===o?void 0:o.DidCofigurationChangeAsync())){let t=null===(i=this._cache)||void 0===i?void 0:i.GetCache(e);if(null!==t)return Promise.resolve(t)}let c=0;const u=Date.now();if(!this.IsConnected())throw new Error("Connection is not established");return"/users/user/login"!==e.Resource&&(yield null===(a=this._session)||void 0===a?void 0:a.WaitForSessionCreationAsync()),new Promise(((o,i)=>re(this,void 0,void 0,(function*(){let a=i=>re(this,void 0,void 0,(function*(){var l,d,h,g;if((null==i?void 0:i.TransactionId)==e.TransactionId){window.clearTimeout(c),this._dataReceivedEvent.Unsubscribe(a);const p=Date.now()-u;s&&this._log.Debug(se.ServiceName,`Received response for: ${null==i?void 0:i.Resource} ${null==i?void 0:i.Method} id: ${null==i?void 0:i.TransactionId} in ${p}ms`),e.Method===Z.IT.Get&&n&&(null===(l=this._cache)||void 0===l||l.Cache(i)),!n&&(null==i?void 0:i.Status)===Z.nW.UserIsNotLoggedIn&&r&&((null===(d=this._session)||void 0===d?void 0:d.OnUserLoggedOutEvent()).Invoke(null===(h=this._session)||void 0===h?void 0:h.User),yield null===(g=this._session)||void 0===g?void 0:g.RestoreSessionAsync(),o(yield this.SendAndWaitForResponseWithRepeatAsync(e,t,n,!1,s))),o(i)}}));if(this._dataReceivedEvent.Subscribe(a),c=window.setTimeout((()=>{this._dataReceivedEvent.Unsubscribe(a);let t=`Response timeout, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;this._log.Error(se.ServiceName,t),i(new p.MU(t))}),t),!(yield this.SendAsync(e,s))){let t=`Failed to send request, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;i(new Error(t))}}))))}))}SendAndHandleResponseAsync(e,t,n){return re(this,arguments,void 0,(function*(e,t,n,r=!0){var s;let o=0;const i=Date.now();if(!this.IsConnected())throw new Error("Connection is not established");return"/users/user/login"!==e.Resource&&(yield null===(s=this._session)||void 0===s?void 0:s.WaitForSessionCreationAsync()),new Promise(((s,a)=>re(this,void 0,void 0,(function*(){const c=()=>window.setTimeout((()=>{this._dataReceivedEvent.Unsubscribe(u);let t=`Response timeout, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;this._log.Error(se.ServiceName,t),a(new p.MU(t))}),t);let u=l=>re(this,void 0,void 0,(function*(){var d,h,g;if((null==l?void 0:l.TransactionId)==e.TransactionId){window.clearTimeout(o);const p=Date.now()-i;switch((r||!0===window.packets)&&this._log.Debug(se.ServiceName,`Received response for: ${null==l?void 0:l.Resource} ${null==l?void 0:l.Method} id: ${null==l?void 0:l.TransactionId} in ${p}ms`),(null==l?void 0:l.Status)===Z.nW.UserIsNotLoggedIn&&(this._dataReceivedEvent.Unsubscribe(u),(null===(d=this._session)||void 0===d?void 0:d.OnUserLoggedOutEvent()).Invoke(null===(h=this._session)||void 0===h?void 0:h.User),yield null===(g=this._session)||void 0===g?void 0:g.RestoreSessionAsync(),s(yield this.SendAndHandleResponseAsync(e,t,n,r))),null==l?void 0:l.Status){case Z.nW.MultiDataResponseStart:case Z.nW.MultiDataResponse:n(l),o=c();break;case Z.nW.MultiDataResponseStop:case Z.nW.FatalError:case Z.nW.Error:n(l),this._dataReceivedEvent.Unsubscribe(u),s();break;default:let t=`Failed to process MultiDataResponse - recived incorrect response status: ${null==l?void 0:l.Status} method: ${e.Method} transaction id: ${e.TransactionId}\n                             make sure that the requested endpoint uses MultiDataResponse, otherwise use SendAndWaitForResponseAsync<T> method.`;a(new Error(t))}}}));if(this._dataReceivedEvent.Subscribe(u),o=c(),!(yield this.SendAsync(e,r))){let t=`Failed to send request, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;a(new Error(t))}}))))}))}SendAndHandleStreamAsync(e,t){return re(this,arguments,void 0,(function*(e,t,n=!0){var r;let s=0;const o=Date.now();if(!this.IsConnected())throw new Error("Connection is not established");return"/users/user/login"!==e.Resource&&(yield null===(r=this._session)||void 0===r?void 0:r.WaitForSessionCreationAsync()),new Promise(((r,i)=>re(this,void 0,void 0,(function*(){if(!(yield this.SendAsync(e,n))){let t=`Failed to send request, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;i(new Error(t))}let a=a=>re(this,void 0,void 0,(function*(){var c;if(a==e.TransactionId){window.clearTimeout(s);const u=Date.now()-o;(n||!0===window.packets)&&this._log.Debug(se.ServiceName,`Received stream registration message for stream ${a} in ${u}ms`),null===(c=this._connection)||void 0===c||c.stream("WatchStream",e.TransactionId).subscribe({next:e=>{t.Next(e),(n||!0===window.packets)&&this._log.Debug(se.ServiceName,`Received stream packet for stream ${a}`)},complete:()=>{t.Complete(),(n||!0===window.packets)&&this._log.Debug(se.ServiceName,`Received stream complete message for stream ${a}`),r()},error:n=>{t.Error(n);const r=`Failed to subscribe for stream: ${e.TransactionId}, error: ${n}`;i(new K.lm(r))}})}}));this._streamStartedEvent.Subscribe(a),s=(()=>window.setTimeout((()=>{this._streamStartedEvent.Unsubscribe(a);let t=`Waiting for stream timeout occurs, stream was not registered in 8000ms, make sure that method supports streaming! Resource: ${e.Resource} method: ${e.Method} stream/transaction id: ${e.TransactionId}`;this._log.Error(se.ServiceName,t),i(new p.MU(t))}),8e3))()}))))}))}PingControllerAsync(){return re(this,void 0,void 0,(function*(){var e;if((null===(e=this._connection)||void 0===e?void 0:e.state)!==g.Connected)return!1;if(null!==this._lastReceivedPacketTime&&Date.now()-this._lastReceivedPacketTime<this._pingInterval)return!1;let t=new Z.CP;return t.Resource="/system/ping",t.Method=Z.IT.Get,yield this.SendAndWaitForResponseAsync(t,2e3,!1,!1).then((()=>!0)).catch((()=>!1))}))}SendAsync(e,t=!1){if(!this.IsConnected())throw new Error("Connection is not established");return new Promise((n=>{var r;this._logPackets||!0===window.packets?this._log.Debug(se.ServiceName,`Sent DataFrame ${e.Resource} ${e.Method} transaction id: ${e.TransactionId} data:\n${JSON.stringify(e,null,2)}`):t&&this._log.Debug(se.ServiceName,`Sent DataFrame ${e.Resource} ${e.Method} transaction id: ${e.TransactionId}`),null===(r=this._connection)||void 0===r||r.invoke("SendTo",this._serialId,e).then((()=>{n(!0)})).catch((e=>{this._log.Error(se.ServiceName,`${e}`),n(!1)}))}))}OnDataReceivedEvent(){return this._dataReceivedEvent}OnConnectionStateChangedEvent(){return this._connectionStateChangedEvent}OnErrorOccuredEvent(){return this._errorOccuredEvent}}se.ServiceName="ExalusConnectionService"},9869:(e,t,n)=>{n.d(t,{i:()=>d});var r=n(1061);class s{constructor(){this._promise=Promise.resolve(),this._disable=()=>{}}Lock(){this._promise=new Promise((e=>this._disable=e))}Unlock(){this._disable()}WaitForLockAsync(){return this._promise}}var o,i=n(161),a=n(8517),c=n(5973);!function(e){e[e.Suspended=1]="Suspended",e[e.ReturnedFromSuspension=2]="ReturnedFromSuspension",e[e.EnteredLowPowerMode=3]="EnteredLowPowerMode",e[e.ExitedLowPowerMode=4]="ExitedLowPowerMode",e[e.LoggedIn=5]="LoggedIn",e[e.LoggedOut=6]="LoggedOut",e[e.Connected=7]="Connected",e[e.Disconnected=8]="Disconnected",e[e.FailedToConnect=9]="FailedToConnect",e[e.Connecting=10]="Connecting",e[e.Disconnecting=11]="Disconnecting",e[e.Reconnecting=12]="Reconnecting"}(o||(o={}));var u=n(8070),l=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class d{constructor(){this._syncLock=new s,this._isInFouces=!0,this._canHibernate=!0,this._session=null,this._connection=null,this._currentAppState=o.Disconnected,this._returnedFromSuspension=!1,this._onReturnedFromSuspensionEvent=new a.J,this._onSuspendedEvent=new a.J,this._onEnterLowPowerModeEvent=new a.J,this._onExitLowPowerModeEvent=new a.J,this._onBackButtonPressedEvent=new a.J,this._onForwardButtonPressedEvent=new a.J,this._onAppStateChanged=new c.r,this.MonitorAppState(),this._onAppStateChanged.Subscribe((e=>this._currentAppState=e)),null==navigator.userAgent.match(/Safari/i)||navigator.mediaDevices?window.addEventListener("visibilitychange",(()=>l(this,void 0,void 0,(function*(){yield this._syncLock.WaitForLockAsync(),this._syncLock.Lock(),this.IsHidden()?this.Suspend():this.ReturnFromSuspension(),this._syncLock.Unlock()})))):(window.addEventListener("onblur",(()=>{this._isInFouces&&(this._isInFouces=!1,this.Suspend())})),window.addEventListener("onfocus",(()=>{this._isInFouces||(this._isInFouces=!0,this.ReturnFromSuspension())}))),window.addEventListener("popstate",(e=>{var t,n,r,s;document.location,e.state&&("forward"==e.state.direction?(null===(t=i.h.Log)||void 0===t||t.Warning(d.ServiceName,"Forward button pressed"),null===(n=this._onForwardButtonPressedEvent)||void 0===n||n.Invoke()):(null===(r=i.h.Log)||void 0===r||r.Warning(d.ServiceName,"Back button pressed"),null===(s=this._onBackButtonPressedEvent)||void 0===s||s.Invoke()))}))}MonitorAppState(){return l(this,void 0,void 0,(function*(){this._session=yield r.j.GetAsync("SessionService"),this._connection=yield r.j.GetAsync("ExalusConnectionService"),this._session.OnUserLoggedInEvent().Subscribe((e=>{var t;null===(t=i.h.Log)||void 0===t||t.Warning(d.ServiceName,"App state changed to: logged in"),this._onAppStateChanged.Invoke(o.LoggedIn)})),this._session.OnUserLoggedOutEvent().Subscribe((e=>{var t;null===(t=i.h.Log)||void 0===t||t.Warning(d.ServiceName,"App state changed to: logged out"),this._onAppStateChanged.Invoke(o.LoggedOut)})),this._connection.OnConnectionStateChangedEvent().Subscribe((e=>{var t,n,r,s,a,c;switch(e){case u.KN.Connected:null===(t=i.h.Log)||void 0===t||t.Warning(d.ServiceName,"App state changed to: connected"),this._onAppStateChanged.Invoke(o.Connected);break;case u.KN.Disconnected:null===(n=i.h.Log)||void 0===n||n.Warning(d.ServiceName,"App state changed to: disconnected"),this._onAppStateChanged.Invoke(o.Disconnected);break;case u.KN.Connecting:null===(r=i.h.Log)||void 0===r||r.Warning(d.ServiceName,"App state changed to: connecting"),this._onAppStateChanged.Invoke(o.Connecting);break;case u.KN.Disconnecting:null===(s=i.h.Log)||void 0===s||s.Warning(d.ServiceName,"App state changed to: disconnecting"),this._onAppStateChanged.Invoke(o.Disconnecting);break;case u.KN.Reconnecting:null===(a=i.h.Log)||void 0===a||a.Warning(d.ServiceName,"App state changed to: reconnecting"),this._onAppStateChanged.Invoke(o.Reconnecting);break;case u.KN.Failed:null===(c=i.h.Log)||void 0===c||c.Warning(d.ServiceName,"App state changed to: failed"),this._onAppStateChanged.Invoke(o.FailedToConnect)}}))}))}get CurrentAppState(){return this._currentAppState}OnAppStateChanged(){return this._onAppStateChanged}Suspend(){var e,t;this.IsHibernationAllowed()&&(this._returnedFromSuspension=!1,this._onSuspendedEvent.Invoke(),this._onAppStateChanged.Invoke(o.Suspended),null===(e=i.h.Log)||void 0===e||e.Warning(d.ServiceName,"App state changed to: suspended"),null===(t=i.h.Log)||void 0===t||t.Warning(d.ServiceName,"App switched to background"))}ReturnFromSuspension(){var e,t;this.IsHibernationAllowed()&&(this._returnedFromSuspension=!0,this._onReturnedFromSuspensionEvent.Invoke(),this._onAppStateChanged.Invoke(o.ReturnedFromSuspension),null===(e=i.h.Log)||void 0===e||e.Warning(d.ServiceName,"App state changed to: returned from suspension"),null===(t=i.h.Log)||void 0===t||t.Warning(d.ServiceName,"App switched to foreground"))}EnterLowPowerMode(){this._onEnterLowPowerModeEvent.Invoke(),this._onAppStateChanged.Invoke(o.EnteredLowPowerMode)}ExitLowPowerMode(){this._onExitLowPowerModeEvent.Invoke(),this._onAppStateChanged.Invoke(o.ExitedLowPowerMode)}IsWorkingInWebView(){return"file:"===window.location.protocol||null!=navigator.userAgent.match(/Safari/i)&&!navigator.mediaDevices}IsHidden(){return document.hidden}IsActive(){return!this.IsHidden()}IsInBackground(){return this.IsHidden()}ReturnedFromSuspension(){return this._returnedFromSuspension}IsHibernationAllowed(){return this._canHibernate}DisallowHibernation(){this._canHibernate=!1}AllowHibernation(){this._canHibernate=!0}OnReturnedFromSuspension(){return this._onReturnedFromSuspensionEvent}OnSuspended(){return this._onSuspendedEvent}OnEnterLowPowerMode(){return this._onEnterLowPowerModeEvent}OnExitLowPowerMode(){return this._onExitLowPowerModeEvent}OnBackButtonPressed(){return this._onBackButtonPressedEvent}OnForwardButtonPressed(){return this._onForwardButtonPressedEvent}GetServiceName(){return d.ServiceName}}d.ServiceName="AppStateService"}}]);
//# sourceMappingURL=61-exalushome-extalife.bundle.js.map