obi-sdk 0.1.10 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -29
- package/dist/modular/chunks/{session-c3b70ffb.js → index-2d0b05af.js} +5409 -818
- package/dist/modular/chunks/index-2d0b05af.js.map +1 -0
- package/dist/modular/chunks/obi-widget-0970cbbe.js +2221 -0
- package/dist/modular/chunks/obi-widget-0970cbbe.js.map +1 -0
- package/dist/modular/core.js +3 -8
- package/dist/modular/core.js.map +1 -1
- package/dist/modular/index.js +29 -228
- package/dist/modular/index.js.map +1 -1
- package/dist/modular/ui.js +17 -16
- package/dist/modular/ui.js.map +1 -1
- package/dist/obi-sdk.es.js +21074 -7
- package/dist/obi-sdk.standalone.iife.js +60 -33
- package/dist/obi-sdk.standalone.iife.js.map +1 -1
- package/dist/obi-sdk.umd.js +103 -76
- package/index.d.ts +10 -61
- package/package.json +4 -4
- package/dist/index-719ec57d.js +0 -5168
- package/dist/modular/chunks/mitt-3c1f932d.js +0 -20
- package/dist/modular/chunks/mitt-3c1f932d.js.map +0 -1
- package/dist/modular/chunks/obi-widget-ff350828.js +0 -6369
- package/dist/modular/chunks/obi-widget-ff350828.js.map +0 -1
- package/dist/modular/chunks/session-c3b70ffb.js.map +0 -1
- package/dist/session-730ff76c.js +0 -15762
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"obi-widget-0970cbbe.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/@lit/reactive-element/decorators/state.js","../../../src/utils/storage.ts","../../../src/ui/components/nav-icon.ts","../../../src/ui/components/icons.ts","../../../src/ui/components/navigation-bar.ts","../../../src/ui/components/courses/courses.ts","../../../src/ui/components/courses/course-modal.ts","../../../node_modules/lit-html/directive-helpers.js","../../../node_modules/lit-html/directive.js","../../../node_modules/lit-html/async-directive.js","../../../node_modules/lit-html/directives/ref.js","../../../src/ui/components/audio-equalizer.ts","../../../src/ui/components/dot-loader.ts","../../../src/ui/components/searching-loader.ts","../../../src/ui/components/obi-widget.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=h.fromAttribute(s,t.type)??this._$Ej?.get(e)??null,this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){const e=this.constructor,h=this[t];if(i??=e.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(e._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.0\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.3.0\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.0\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * StorageManager provides namespaced access to browser localStorage\n * to prevent key conflicts with other applications.\n */\n\nimport { SDKState } from \"../core\"\n\n// Define the session data interface\nexport interface SessionData {\n sessionToken: string\n roomToken: string\n roomUrl: string\n obiState: SDKState\n sessionExpiry: string\n}\n\nexport class StorageManager {\n private namespace: string\n\n /**\n * Create a new StorageManager with a specific namespace\n * @param namespace The namespace to prefix all keys with\n */\n constructor(namespace: string) {\n this.namespace = namespace\n }\n\n /**\n * Get a value from localStorage with the namespace prefix\n * @param key The key to retrieve\n * @returns The stored value or null if not found\n */\n getItem(key: string): string | null {\n return localStorage.getItem(`${this.namespace}.${key}`)\n }\n\n /**\n * Set a value in localStorage with the namespace prefix\n * @param key The key to set\n * @param value The value to store\n */\n setItem(key: string, value: string): void {\n localStorage.setItem(`${this.namespace}.${key}`, value)\n }\n\n /**\n * Remove a value from localStorage with the namespace prefix\n * @param key The key to remove\n */\n removeItem(key: string): void {\n localStorage.removeItem(`${this.namespace}.${key}`)\n }\n\n /**\n * Clear all keys that belong to this namespace\n */\n clear(): void {\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i)\n if (key && key.startsWith(`${this.namespace}.`)) {\n localStorage.removeItem(key)\n }\n }\n }\n}\n\nexport const STORAGE_KEYS = {\n SESSION_DATA: \"session_data\",\n}\n\nexport const storage = new StorageManager(\"io.obi.widget\")\n","import { LitElement, html, css } from \"lit\"\nimport { property } from \"lit/decorators.js\"\n\nexport class NavIcon extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n\n button {\n display: flex;\n height: 40px;\n width: 40px;\n align-items: center;\n justify-content: center;\n border-radius: 2px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n transition: all 0.2s;\n cursor: pointer;\n margin: 4px 0;\n padding: 0;\n border: none;\n color: black;\n }\n\n button.special {\n color: #fff;\n background-color: #000;\n }\n\n button.special svg {\n stroke: #fff;\n }\n\n button.special.active {\n background-color: black;\n color: white;\n }\n\n button.special.active:hover {\n background-color: #27272a;\n }\n\n button:not(.special) {\n background-color: white;\n color: black;\n }\n\n button:not(.special):hover {\n background-color: #e5e5e5;\n }\n\n ::slotted(*) {\n width: 18px;\n height: 18px;\n }\n `\n\n @property({ type: String })\n id: string = \"\"\n\n @property({ type: Boolean })\n isActive: boolean = false\n\n @property({ type: Boolean })\n isSpecial: boolean = false\n\n @property({ type: Function })\n onClick?: (id: string, isActive: boolean) => void\n\n private handleClick(e: Event) {\n e.preventDefault()\n e.stopPropagation()\n\n const event = new CustomEvent(\"click\", {\n detail: {\n id: this.id,\n isActive: !this.isActive,\n },\n bubbles: true,\n composed: true,\n })\n this.dispatchEvent(event)\n\n if (this.onClick) {\n this.onClick(this.id, !this.isActive)\n }\n }\n\n render() {\n return html`\n <button\n id=\"obi-nav-${this.id}\"\n class=${this.isSpecial ? \"special\" : \"\"}\n ?active=${this.isActive}\n @click=${this.handleClick}\n aria-label=\"${this.id} control\"\n >\n <slot></slot>\n </button>\n `\n }\n}\n\nif (!customElements.get(\"obi-nav-icon\")) {\n customElements.define(\"obi-nav-icon\", NavIcon)\n}\n","import { html, svg } from \"lit\"\n\n// Icon utilities\nconst svgWrapper = (content: any) => html`\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"lucide\"\n style=\"display: block;\"\n >\n ${content}\n </svg>\n`\n\n// Icons\nexport const pauseIcon = svgWrapper(svg`\n <rect x=\"14\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\"/><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\"/>\n`)\n\nexport const playIcon = svgWrapper(svg`<polygon points=\"6 3 20 12 6 21 6 3\"/>`)\n\nexport const powerIcon = svgWrapper(svg`\n <path d=\"M12 2v10\"/><path d=\"M18.4 6.6a9 9 0 1 1-12.77.04\"/>\n`)\n\nexport const closeIcon = svgWrapper(svg`\n <path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/>\n`)\n\nexport const bookOpenIcon = svgWrapper(svg`\n <path d=\"M12 7v14\" />\n <path\n d=\"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\"\n />\n`)\n\nexport const obiIcon = html`\n <img\n class=\"widget-icon\"\n src=\"data:image/svg+xml;base64,${btoa(`<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 34\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"obi-icon\">\n <g id=\"Subtract\">\n <path d=\"M15.5845 9.29177L8.20527 5.00637L8.20527 13.4502L15.5845 17.7356L15.5845 9.29177Z\" fill=\"white\" />\n <path d=\"M15.5896 27.7146L8.21035 31.9994L8.21032 23.4698L15.5896 19.1843L15.5896 27.7146Z\" fill=\"white\" />\n <path d=\"M16.4104 27.7146L16.4104 19.1786L23.7897 23.4641L23.7897 32L16.4104 27.7146Z\" fill=\"white\" />\n <path d=\"M32 27.7142L24.6207 31.9996L24.6207 23.47L32 19.1846L32 27.7142Z\" fill=\"white\" />\n <path d=\"M24.2048 22.748L31.5911 18.4585L24.2845 14.2154L16.8983 18.5048L24.2048 22.748Z\" fill=\"white\" />\n <path d=\"M23.7948 5.01235L23.7948 13.4564L16.4156 17.7418L16.4156 9.29775L23.7948 5.01235Z\" fill=\"white\" />\n <path d=\"M16.0052 0L23.3865 4.2866L16.0003 8.57606L8.61897 4.28946L16.0052 0Z\" fill=\"white\" />\n <path d=\"M7.72042 14.2182L15.1017 18.5048L7.79445 22.7477L0.413699 18.4615L7.72042 14.2182Z\" fill=\"white\" />\n <path d=\"M7.37926 31.9997L7.37926 23.4638L0 19.1784L3.79636e-05 27.7143L7.37926 31.9997Z\" fill=\"white\" />\n </g>\n </g>\n </svg>`)}\"\n alt=\"Obi Icon\"\n />\n`\n","import { LitElement, html, css } from \"lit\"\nimport { property } from \"lit/decorators.js\"\nimport { SDKState } from \"../../core/types\"\nimport \"./nav-icon\"\nimport { pauseIcon, playIcon, powerIcon, closeIcon, bookOpenIcon } from \"./icons\"\n\nexport class NavigationBar extends LitElement {\n static styles = css`\n :host {\n display: flex;\n position: absolute;\n z-index: 10000;\n width: 40px;\n transition: all 0.2s ease-in-out;\n opacity: 1;\n transform: scale(1);\n pointer-events: auto;\n background-color: #fff;\n }\n\n :host([data-direction=\"up\"]) {\n bottom: 64px;\n top: auto;\n flex-direction: column-reverse;\n }\n\n :host([data-direction=\"down\"]) {\n top: 64px;\n bottom: auto;\n flex-direction: column;\n }\n `\n\n @property({ type: Boolean })\n isActive = false\n\n @property({ type: Boolean })\n isScreenActive = false\n\n @property({ type: Object })\n position = { top: 0, left: 0 }\n\n @property({ type: String })\n currentState: SDKState = SDKState.READY\n\n @property({ type: String })\n direction: \"up\" | \"down\" = \"up\"\n\n @property({ type: Function })\n onItemSelect?: (id: string, isActive: boolean) => void\n\n constructor() {\n super()\n }\n\n connectedCallback() {\n super.connectedCallback()\n }\n\n private handleIconClick(id: string, isActive: boolean) {\n if (this.onItemSelect) {\n this.onItemSelect(id, isActive)\n }\n }\n\n render() {\n return html`\n ${this.isActive\n ? html`\n <obi-nav-icon\n id=\"pause\"\n ?isActive=${this.currentState === SDKState.PAUSED}\n @click=${() =>\n this.handleIconClick(\"pause\", this.currentState === SDKState.PAUSED ? false : true)}\n >\n ${this.currentState === SDKState.PAUSED ? playIcon : pauseIcon}\n </obi-nav-icon>\n <obi-nav-icon\n id=\"activate\"\n ?isActive=${this.isActive}\n ?isSpecial=${true}\n @click=${() => this.handleIconClick(\"activate\", this.isActive ? false : true)}\n >\n ${this.isActive ? closeIcon : powerIcon}\n </obi-nav-icon>\n `\n : html`\n <obi-nav-icon\n id=\"experiences\"\n @click=${() => this.handleIconClick(\"experiences\", true)}\n >\n ${bookOpenIcon}\n </obi-nav-icon>\n `}\n `\n }\n}\n\nif (!customElements.get(\"obi-navigation-bar\")) {\n customElements.define(\"obi-navigation-bar\", NavigationBar)\n}\n","import { LitElement, html, css } from \"lit\"\nimport { property } from \"lit/decorators.js\"\n\nexport type CourseData = {\n id: string\n name: string\n description: string\n imageSrc: string\n}\n\nexport class Course extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n\n .course-container {\n padding: 16px 12px;\n gap: 12px;\n border-radius: 4px;\n border: 1px solid #e5e7eb;\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .course-container:hover {\n background-color: #f9fafb;\n border-color: #d1d5db;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n }\n\n .course-container:active {\n transform: scale(0.98);\n }\n\n .course-image {\n max-height: 160px;\n border-radius: 2px;\n border: 1px solid #e5e7eb;\n object-fit: cover;\n width: 100%;\n margin-bottom: 12px;\n }\n\n .course-title {\n font-size: 14px;\n font-weight: bold;\n margin: 0;\n margin-bottom: 12px;\n }\n\n .course-description {\n font-size: 14px;\n color: #71717a;\n margin: 0;\n }\n `\n\n @property({ type: String })\n id: string = \"\"\n\n @property({ type: String })\n name: string = \"\"\n\n @property({ type: String })\n description: string = \"\"\n\n @property({ type: String })\n imageSrc: string = \"\"\n\n @property({ type: Function })\n onSelect?: (id: string) => void\n\n private handleClick() {\n if (this.onSelect) {\n this.onSelect(this.id)\n }\n\n this.dispatchEvent(\n new CustomEvent(\"course-select\", {\n detail: { id: this.id },\n bubbles: true,\n composed: true,\n })\n )\n }\n\n render() {\n return html`\n <div class=\"course-container\" @click=${this.handleClick}>\n <img src=${this.imageSrc} alt=\"Course Preview\" class=\"course-image\" />\n <h2 class=\"course-title\">${this.name}</h2>\n ${this.description ? html`<p class=\"course-description\">${this.description}</p>` : \"\"}\n </div>\n `\n }\n}\n\nexport class CourseList extends LitElement {\n static styles = css`\n :host {\n display: block;\n }\n\n .course-grid {\n display: grid;\n gap: 12px;\n margin-top: 24px;\n }\n\n .course-grid.grid-cols-1 {\n grid-template-columns: 1fr;\n }\n\n .course-grid.grid-cols-2 {\n grid-template-columns: 1fr 1fr;\n }\n\n .course-grid.grid-cols-3 {\n grid-template-columns: 1fr 1fr 1fr;\n }\n\n .loading,\n .error,\n .empty {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 16px;\n }\n\n .error {\n color: #ef4444;\n }\n `\n\n @property({ type: Array })\n courses: CourseData[] = []\n\n @property({ type: Boolean })\n loading = false\n\n @property({ type: String })\n error = \"\"\n\n @property({ type: Function })\n onCourseSelect?: (id: string) => void\n\n private handleCourseSelect(e: CustomEvent) {\n if (this.onCourseSelect) {\n this.onCourseSelect(e.detail.id)\n }\n }\n\n render() {\n if (this.loading) {\n return html`<div class=\"loading\">Loading...</div>`\n }\n\n if (this.error) {\n return html`<div class=\"error\">${this.error}</div>`\n }\n\n if (!this.courses || this.courses.length === 0) {\n return html`<div class=\"empty\">No courses available</div>`\n }\n\n const gridClass =\n this.courses.length === 1\n ? \"grid-cols-1\"\n : this.courses.length === 2\n ? \"grid-cols-2\"\n : \"grid-cols-3\"\n\n return html`\n <div class=\"course-grid ${gridClass}\">\n ${this.courses.map(\n (course: CourseData) => html`\n <obi-course\n id=${course.id}\n name=${course.name}\n description=${course.description || \"\"}\n imageSrc=${course.imageSrc}\n @course-select=${this.handleCourseSelect}\n ></obi-course>\n `\n )}\n </div>\n `\n }\n}\n\n// Register the custom elements\nif (!customElements.get(\"obi-course\")) {\n customElements.define(\"obi-course\", Course)\n}\n\nif (!customElements.get(\"obi-course-list\")) {\n customElements.define(\"obi-course-list\", CourseList)\n}\n","import { LitElement, html, css } from \"lit\"\nimport { property, state } from \"lit/decorators.js\"\n\nimport { API_BASE_URL } from \"../../../core\"\n\nimport { CourseData } from \"./courses\"\nimport \"./courses\"\n\nexport class CourseModal extends LitElement {\n static styles = css`\n :host {\n display: block;\n font-family: \"Syne\", sans-serif;\n }\n\n .backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: black;\n opacity: 0.7;\n z-index: 40;\n }\n\n .container {\n position: fixed;\n background-color: white;\n color: black;\n border: 1px solid #e5e7eb;\n width: 640px;\n max-height: 80vh;\n overflow-y: auto;\n padding: 48px;\n gap: 12px;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n border-radius: 4px;\n z-index: 50;\n display: flex;\n flex-direction: column;\n text-align: center;\n }\n\n .container:hover {\n cursor: auto;\n }\n\n .container::-webkit-scrollbar {\n width: 0.5rem;\n }\n\n .container::-webkit-scrollbar-track {\n background-color: #f3f4f6;\n border-radius: 9999px;\n }\n\n .container::-webkit-scrollbar-thumb {\n background-color: #d1d5db;\n border-radius: 9999px;\n }\n\n .header {\n margin-bottom: 24px;\n text-align: center;\n }\n\n h1 {\n font-size: 32px;\n font-weight: 700;\n margin: 0;\n margin-bottom: 8px;\n }\n\n .subtitle {\n font-size: 20px;\n color: rgb(113 113 122 / 1);\n margin: 0;\n }\n\n .close-button {\n position: absolute;\n top: 16px;\n right: 16px;\n background: none;\n border: none;\n cursor: pointer;\n font-size: 24px;\n color: #6b7280;\n }\n `\n\n @property({ type: Array })\n courses: CourseData[] = []\n\n @property({ type: Boolean })\n loading = true\n\n @property({ type: String })\n error = \"\"\n\n @property({ type: String })\n apiKey = \"\"\n\n @property({ type: Function })\n onCourseSelect?: (id: string) => void\n\n @property({ type: Function })\n onClose?: () => void\n\n @state()\n private apiBaseUrl = \"\"\n\n private handleCourseSelect(e: CustomEvent) {\n if (this.onCourseSelect) {\n this.onCourseSelect(e.detail.id)\n }\n }\n\n private handleClose() {\n if (this.onClose) {\n this.onClose()\n }\n }\n\n private async fetchCourses() {\n try {\n this.loading = true\n const raw_response = await fetch(`${this.apiBaseUrl}/sessions?token=${this.apiKey}`)\n const response = await raw_response.json()\n const mappedCourses = response.map((session: any) => ({\n id: session.uuid,\n name: session.onboarding_plan.name,\n description: session.onboarding_plan.description,\n imageSrc:\n session.onboarding_plan.screen_url ||\n \"https://corproductionsydney-storagebucket5cb7c8ea-atg4gmftc6sk.s3.amazonaws.com/static/generic-course.png\",\n }))\n const filteredCourses = mappedCourses.filter((course: CourseData) => !!course.name)\n this.courses = [...filteredCourses] // Create a new array to ensure property update detection\n this.requestUpdate() // Explicitly request an update\n } catch (err) {\n console.error(\"Fetch error:\", err)\n this.error = \"Failed to fetch courses\"\n } finally {\n this.loading = false\n this.requestUpdate() // Ensure UI updates after loading changes\n }\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n // Get the API key from window.obiWidgetConfig if available\n if (window.obiWidgetConfig?.apiKey) {\n this.apiKey = window.obiWidgetConfig.apiKey\n }\n\n // Set the API base URL from the constant\n this.apiBaseUrl = API_BASE_URL\n\n if (this.apiBaseUrl && this.apiKey) {\n this.fetchCourses()\n } else {\n this.loading = false\n this.error = \"API base URL or API key is missing\"\n }\n }\n\n render() {\n return html`\n <div class=\"backdrop\" @click=${this.handleClose}></div>\n <div class=\"container\">\n <button class=\"close-button\" @click=${this.handleClose}>×</button>\n <div class=\"header\">\n <h1>Give Obi a try!</h1>\n <p class=\"subtitle\">Pick a tour, share your screen, and Obi will take it from there.</p>\n </div>\n\n <obi-course-list\n .courses=${this.courses}\n .loading=${this.loading}\n .error=${this.error}\n @course-select=${this.handleCourseSelect}\n ></obi-course-list>\n </div>\n `\n }\n}\n\nif (!customElements.get(\"obi-course-modal\")) {\n customElements.define(\"obi-course-modal\", CourseModal)\n}\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i<r.length;i++)s(r[i],!1),o(r[i]);else null!=r&&(s(r,!1),o(r));else s(this,i)}const c=i=>{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","import{nothing as t}from\"../lit-html.js\";import{AsyncDirective as i}from\"../async-directive.js\";import{directive as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=()=>new h;class h{}const o=new WeakMap,n=s(class extends i{render(i){return t}update(i,[s]){const e=s!==this.G;return e&&void 0!==this.G&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.G=s,this.ht=i.options?.host,this.rt(this.ct=i.element)),t}rt(t){if(this.isConnected||(t=void 0),\"function\"==typeof this.G){const i=this.ht??globalThis;let s=o.get(i);void 0===s&&(s=new WeakMap,o.set(i,s)),void 0!==s.get(this.G)&&this.G.call(this.ht,void 0),s.set(this.G,t),void 0!==t&&this.G.call(this.ht,t)}else this.G.value=t}get lt(){return\"function\"==typeof this.G?o.get(this.ht??globalThis)?.get(this.G):this.G?.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});export{e as createRef,n as ref};\n//# sourceMappingURL=ref.js.map\n","import { LitElement, html, css } from \"lit\"\nimport { property, state } from \"lit/decorators.js\"\nimport { ref, createRef, Ref } from \"lit/directives/ref.js\"\n\ninterface VolumeData {\n speaker: \"USER\" | \"ASSISTANT\"\n volume: number\n spectrum: number[]\n}\n\nexport class AudioEqualizer extends LitElement {\n @property({ type: Object })\n volume: VolumeData = { speaker: \"ASSISTANT\", volume: 0, spectrum: [] }\n\n @state()\n private canvasRef: Ref<HTMLCanvasElement> = createRef()\n\n private barCount = 8\n private animationFrame: number | null = null\n\n static styles = css`\n :host {\n display: block;\n width: 40px;\n height: 40px;\n margin: 4px;\n }\n\n canvas {\n width: 100%;\n height: 100%;\n }\n `\n\n connectedCallback() {\n super.connectedCallback()\n this.startAnimation()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.stopAnimation()\n }\n\n private startAnimation() {\n const animate = () => {\n this.drawEqualizer()\n this.animationFrame = requestAnimationFrame(animate)\n }\n this.animationFrame = requestAnimationFrame(animate)\n }\n\n private stopAnimation() {\n if (this.animationFrame) {\n cancelAnimationFrame(this.animationFrame)\n this.animationFrame = null\n }\n }\n\n private drawEqualizer() {\n const canvas = this.canvasRef.value\n if (!canvas) return\n\n const ctx = canvas.getContext(\"2d\")\n if (!ctx) return\n\n // Handle high DPI displays\n const dpr = window.devicePixelRatio || 1\n const displayWidth = canvas.clientWidth\n const displayHeight = canvas.clientHeight\n\n // Set canvas size to match display size * DPR\n canvas.width = displayWidth * dpr\n canvas.height = displayHeight * dpr\n\n // Scale context to match DPR\n ctx.scale(dpr, dpr)\n\n // Clear the canvas\n ctx.clearRect(0, 0, displayWidth, displayHeight)\n\n // Calculate bar dimensions\n const gap = 3\n const barWidth = Math.max(1, (displayWidth - (this.barCount - 1) * gap) / this.barCount)\n const barMaxHeight = displayHeight / 2\n\n // Determine current volume and spectrum based on who is speaking\n const currentVolume = this.volume.speaker === \"USER\" ? this.volume.volume : this.volume.volume\n const currentSpectrum =\n this.volume.speaker === \"USER\" ? this.volume.spectrum : this.volume.spectrum\n\n if (currentVolume === 0) return\n\n // Process spectrum to match our bar count\n let processedSpectrum: number[] = []\n if (currentSpectrum && currentSpectrum.length > 0) {\n const spectrumLength = currentSpectrum.length\n const regionSize = Math.ceil(spectrumLength / 10)\n let energyByRegion = []\n\n for (let i = 0; i < 10; i++) {\n const start = i * regionSize\n const end = Math.min((i + 1) * regionSize, spectrumLength)\n let regionEnergy = 0\n for (let j = start; j < end; j++) {\n regionEnergy += currentSpectrum[j] || 0\n }\n energyByRegion.push({ region: i, startIdx: start, endIdx: end, energy: regionEnergy })\n }\n\n energyByRegion.sort((a, b) => b.energy - a.energy)\n const topRegions = energyByRegion.slice(0, 3)\n const startIdx = Math.min(...topRegions.map((r) => r.startIdx))\n const endIdx = Math.max(...topRegions.map((r) => r.endIdx))\n\n if (endIdx > startIdx) {\n for (let i = 0; i < this.barCount; i++) {\n const position = startIdx + (i / (this.barCount - 1)) * (endIdx - startIdx)\n const index = Math.min(spectrumLength - 1, Math.floor(position))\n processedSpectrum[i] = currentSpectrum[index] || 0\n }\n } else {\n for (let i = 0; i < this.barCount; i++) {\n const position = (i / (this.barCount - 1)) * (spectrumLength / 2)\n const index = Math.min(spectrumLength - 1, Math.floor(position))\n processedSpectrum[i] = currentSpectrum[index] || 0\n }\n }\n\n const maxSpectrumValue = Math.max(...processedSpectrum, 1)\n const amplificationFactorRoot = this.volume.speaker === \"USER\" ? 0.7 : 0.6\n\n processedSpectrum = processedSpectrum.map((value, index) => {\n const relativeValue = value / maxSpectrumValue\n const amplificationFactor = amplificationFactorRoot + (index / (this.barCount - 1)) * 0.3\n return Math.min(1, relativeValue * amplificationFactor)\n })\n } else {\n if (this.volume.speaker !== \"USER\") {\n for (let i = 0; i < this.barCount; i++) {\n const time = Date.now() * 0.002\n const value = 0.3 + 0.2 * Math.sin(time + i * 0.7)\n processedSpectrum[i] = value\n }\n }\n }\n\n // Draw each bar\n for (let i = 0; i < this.barCount; i++) {\n const spectrumValue =\n processedSpectrum.length > 0\n ? processedSpectrum[i] !== undefined\n ? processedSpectrum[i]\n : currentVolume\n : currentVolume\n\n if (this.volume.speaker === \"USER\") {\n ctx.fillStyle = `rgba(109, 40, 217, ${spectrumValue * 0.5 + 0.5})`\n } else {\n ctx.fillStyle = `rgba(255, 255, 255, ${spectrumValue * 0.5 + 0.5})`\n }\n\n const barHeight = Math.max(2, spectrumValue * 0.8 * barMaxHeight)\n const x = displayWidth - (this.barCount - i) * (barWidth + gap)\n const radius = barWidth / 2\n\n // Top bar\n ctx.beginPath()\n ctx.moveTo(x + radius, displayHeight / 2 - barHeight)\n ctx.lineTo(x + barWidth - radius, displayHeight / 2 - barHeight)\n ctx.quadraticCurveTo(\n x + barWidth,\n displayHeight / 2 - barHeight,\n x + barWidth,\n displayHeight / 2 - barHeight + radius\n )\n ctx.lineTo(x + barWidth, displayHeight / 2)\n ctx.lineTo(x, displayHeight / 2)\n ctx.lineTo(x, displayHeight / 2 - barHeight + radius)\n ctx.quadraticCurveTo(\n x,\n displayHeight / 2 - barHeight,\n x + radius,\n displayHeight / 2 - barHeight\n )\n ctx.fill()\n\n // Bottom bar\n ctx.beginPath()\n ctx.moveTo(x, displayHeight / 2)\n ctx.lineTo(x + barWidth, displayHeight / 2)\n ctx.lineTo(x + barWidth, displayHeight / 2 + barHeight - radius)\n ctx.quadraticCurveTo(\n x + barWidth,\n displayHeight / 2 + barHeight,\n x + barWidth - radius,\n displayHeight / 2 + barHeight\n )\n ctx.lineTo(x + radius, displayHeight / 2 + barHeight)\n ctx.quadraticCurveTo(\n x,\n displayHeight / 2 + barHeight,\n x,\n displayHeight / 2 + barHeight - radius\n )\n ctx.lineTo(x, displayHeight / 2)\n ctx.fill()\n }\n }\n\n render() {\n return html` <canvas ${ref(this.canvasRef)} width=\"52\" height=\"52\"></canvas> `\n }\n}\n\nif (!customElements.get(\"obi-audio-equalizer\")) {\n customElements.define(\"obi-audio-equalizer\", AudioEqualizer)\n}\n","import { LitElement, html, css } from \"lit\"\nimport { state } from \"lit/decorators.js\"\n\nexport class DotLoader extends LitElement {\n @state()\n private activeDots: boolean[] = Array(5).fill(false)\n\n private numDots = 5\n private containerWidth = 32\n private dotSize = 2\n private bounceHeight = 12\n private animationDuration = 200\n private pauseDuration = 300\n private overlapFactor = 0.7\n private color = \"#FFF\"\n private timeoutIds: number[] = []\n\n static styles = css`\n :host {\n display: block;\n }\n\n .dot-loader {\n display: flex;\n flex-direction: row;\n width: var(--dot-loader-width, 32px);\n height: 14px;\n justify-content: center;\n align-items: center;\n padding: 0;\n margin: 0;\n gap: 4px;\n }\n\n .dot {\n width: var(--dot-size, 2px);\n height: var(--dot-size, 2px);\n border-radius: 50%;\n background-color: var(--dot-color, #fff);\n margin: 0;\n padding: 0;\n transition: transform 0.2s ease-in-out;\n opacity: 1;\n }\n `\n\n connectedCallback() {\n super.connectedCallback()\n this.startAnimation()\n // Set CSS custom properties\n this.style.setProperty(\"--dot-loader-width\", `${this.containerWidth}px`)\n this.style.setProperty(\"--dot-size\", `${this.dotSize}px`)\n this.style.setProperty(\"--dot-color\", this.color)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.stopAnimation()\n }\n\n private startAnimation() {\n this.animateSequence()\n }\n\n private stopAnimation() {\n this.timeoutIds.forEach((id) => window.clearTimeout(id))\n this.timeoutIds = []\n }\n\n private animateSequence() {\n // Reset all dots\n this.activeDots = Array(this.numDots).fill(false)\n\n // Animate each dot with overlap\n for (let i = 0; i < this.numDots; i++) {\n const delay = i * (this.animationDuration * this.overlapFactor)\n\n // Start the dot's bounce\n const bounceStartId = window.setTimeout(() => {\n this.activeDots = [...this.activeDots]\n this.activeDots[i] = true\n\n // End the dot's bounce\n const bounceEndId = window.setTimeout(() => {\n this.activeDots = [...this.activeDots]\n this.activeDots[i] = false\n }, this.animationDuration)\n\n this.timeoutIds.push(bounceEndId)\n }, delay)\n\n this.timeoutIds.push(bounceStartId)\n }\n\n // Schedule the next sequence\n const nextSequenceId = window.setTimeout(\n () => {\n this.animateSequence()\n },\n this.numDots * this.animationDuration * this.overlapFactor + this.pauseDuration\n )\n\n this.timeoutIds.push(nextSequenceId)\n }\n\n render() {\n return html`\n <div class=\"dot-loader\">\n ${this.activeDots.map(\n (isActive) => html`\n <div\n class=\"dot\"\n style=\"transform: ${isActive\n ? `translateY(-${this.bounceHeight}px)`\n : \"translateY(0)\"}\"\n ></div>\n `\n )}\n </div>\n `\n }\n}\n\nif (!customElements.get(\"obi-dot-loader\")) {\n customElements.define(\"obi-dot-loader\", DotLoader)\n}\n","import { LitElement, html, css } from \"lit\"\n\nexport class SearchingLoader extends LitElement {\n static styles = css`\n :host {\n display: flex;\n align-items: center;\n gap: 12px;\n background-color: #7c3aed;\n border-radius: 12px;\n padding: 8px 12px;\n }\n\n .text {\n color: white;\n font-weight: 500;\n font-size: 14px;\n }\n `\n\n render() {\n return html`\n <obi-dot-loader loading style=\"margin-left: 2px\"></obi-dot-loader>\n <span class=\"text\">Searching the knowledge base</span>\n `\n }\n}\n\nif (!customElements.get(\"obi-searching-loader\")) {\n customElements.define(\"obi-searching-loader\", SearchingLoader)\n}\n","import { LitElement, html, css, nothing } from \"lit\"\nimport { state } from \"lit/decorators.js\"\nimport { match, P } from \"ts-pattern\"\n\nimport { ObiSession } from \"../../core/session\"\nimport { SDKState } from \"../../core/types\"\nimport { storage, STORAGE_KEYS, SessionData } from \"../../utils\"\n\nimport \"./navigation-bar\"\nimport \"./courses\"\nimport \"./audio-equalizer\"\nimport \"./dot-loader\"\nimport \"./searching-loader\"\nimport { obiIcon } from \"./icons\"\n\nexport class ObiWidget extends LitElement {\n @state() private apiKey = \"\"\n @state() private isActive = true\n @state() private position:\n | \"bottom-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"top-right\"\n | \"top-left\"\n | \"top-center\"\n | \"middle-left\"\n | \"middle-right\" = \"bottom-right\"\n @state() private user: { id: string; email?: string; metadata?: any } | null = null\n @state() private state: SDKState = SDKState.READY\n @state() private storedActiveState: SDKState | undefined = undefined\n @state() private showCourseModal = false\n @state() private isHovering = false\n @state() private navVisible = false\n @state() private activeSession: ObiSession | null = null\n @state() private volume: { speaker: \"USER\" | \"ASSISTANT\"; volume: number; spectrum: number[] } = {\n speaker: \"ASSISTANT\",\n volume: 0,\n spectrum: [],\n }\n\n private sessionToken: string | null = null\n private roomToken: string | null = null\n private roomUrl: string | null = null\n private boundSaveSessionData: any = null\n\n private closeNavTimeoutRef: number | null = null\n\n constructor() {\n super()\n this.updateFromConfig()\n\n // Add unload handler directly in the constructor\n // This can help in case the component is created but never connected\n const handleUnload = () => {\n if (this.activeSession && this.sessionToken && this.roomToken && this.roomUrl) {\n this.saveSessionData()\n }\n }\n\n // Register this handler early\n window.addEventListener(\"beforeunload\", handleUnload)\n window.addEventListener(\"pagehide\", handleUnload)\n }\n\n // Method to get values from window.obiWidgetConfig\n private updateFromConfig() {\n if (window.obiWidgetConfig) {\n this.apiKey = window.obiWidgetConfig.apiKey || this.apiKey\n this.position = window.obiWidgetConfig.position || this.position\n this.user = window.obiWidgetConfig.user || this.user\n\n // Boolean values need special handling (check if undefined)\n if (window.obiWidgetConfig.isActive !== undefined) {\n this.isActive = window.obiWidgetConfig.isActive\n }\n }\n }\n\n static styles = css`\n :host {\n display: block;\n position: fixed;\n z-index: 9999;\n font-family: Arial, sans-serif;\n --obi-primary: #7c3aed;\n --obi-danger: #ef4444;\n --obi-gray: #6b7280;\n }\n\n /* Position-specific styles */\n :host([position=\"bottom-right\"]) {\n bottom: 80px;\n right: 80px;\n }\n\n :host([position=\"bottom-left\"]) {\n bottom: 80px;\n left: 20px;\n }\n\n :host([position=\"bottom-center\"]) {\n bottom: 80px;\n left: 50%;\n transform: translateX(-50%);\n }\n\n :host([position=\"top-right\"]) {\n top: 20px;\n right: 80px;\n }\n\n :host([position=\"top-left\"]) {\n top: 20px;\n left: 20px;\n }\n\n :host([position=\"top-center\"]) {\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n }\n\n :host([position=\"middle-left\"]) {\n top: 50%;\n left: 20px;\n transform: translateY(-50%);\n }\n\n :host([position=\"middle-right\"]) {\n top: 50%;\n right: 80px;\n transform: translateY(-50%);\n }\n\n /* Adjust position when in researching state to accommodate wider container */\n :host([position=\"bottom-right\"]) .widget-container.researching {\n right: 20px;\n }\n\n :host([position=\"top-right\"]) .widget-container.researching {\n right: 20px;\n }\n\n :host([position=\"middle-right\"]) .widget-container.researching {\n right: 20px;\n }\n\n .widget-container {\n position: fixed;\n width: 56px;\n height: 56px;\n border-radius: 28px;\n border-color: transparent;\n background-color: var(--obi-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: all 0.2s ease-out;\n }\n\n .widget-container.user-speaking {\n background:\n linear-gradient(0deg, #c4b5fd, #c4b5fd),\n linear-gradient(195.84deg, rgba(192, 132, 252, 0) 11.05%, #c084fc 117.01%);\n }\n\n .widget-container:hover {\n border-radius: 12px;\n }\n\n .widget-container.rounded {\n border-radius: 12px;\n }\n\n .widget-container.researching {\n width: 265px;\n border-radius: 12px;\n }\n\n .widget-icon {\n width: 32px;\n height: 32px;\n transition: transform 0.5s ease-in-out;\n }\n\n .widget-container.rounded .widget-icon {\n transform: rotate(110deg);\n }\n\n @keyframes pulse-shadow {\n 0% {\n box-shadow: 0 0 0 0 rgba(124, 58, 237, 0.4);\n }\n 70% {\n box-shadow: 0 0 0 10px rgba(124, 58, 237, 0);\n }\n 100% {\n box-shadow: 0 0 0 0 rgba(124, 58, 237, 0);\n }\n }\n\n .pulse {\n animation: pulse-shadow 2s ease-in-out infinite;\n }\n `\n private async connectObi(sessionToken: string) {\n // Prevent multiple concurrent connection attempts\n if (this.activeSession) {\n console.log(\"Connection already exists\")\n return\n }\n\n try {\n const session = new ObiSession({\n sessionId: sessionToken,\n })\n if (!session) {\n console.error(\"Failed to create session\")\n this.state = SDKState.ERROR\n this.activeSession = null\n return\n }\n\n session.on(\"stateChanged\", (data) => {\n this.state = data.newState\n\n if (data.newState !== SDKState.READY) {\n this.storedActiveState = data.newState\n }\n })\n\n session.on(\"volume\", (data) => {\n this.volume = data\n })\n\n // Handle errors\n session.on(\"error\", (data) => {\n console.error(\"Session error:\", data.error)\n this.state = SDKState.ERROR\n this.activeSession = null\n })\n\n const connectionInfo = await session.connect()\n\n if (connectionInfo) {\n this.sessionToken = sessionToken\n this.roomToken = connectionInfo.token\n this.roomUrl = connectionInfo.url\n }\n\n this.activeSession = session\n } catch (error) {\n console.error(\"Failed to start session:\", error)\n this.state = SDKState.ERROR\n this.activeSession = null\n }\n }\n\n private async handleSessionStart(sessionToken: string) {\n // Prevent multiple concurrent session starts\n if (this.activeSession) {\n console.log(\"Connection already in progress or active session exists\")\n return\n }\n\n this.showCourseModal = false\n this.state = SDKState.LOADING\n await this.connectObi(sessionToken)\n }\n\n /**\n * Check if there's an existing session stored in localStorage\n * and attempt to reconnect if a valid session is found\n */\n private async checkExistingSession() {\n try {\n const sessionData = JSON.parse(\n storage.getItem(STORAGE_KEYS.SESSION_DATA) || \"{}\"\n ) as SessionData\n const { sessionToken, roomToken, roomUrl, sessionExpiry, obiState } = sessionData\n\n if (!sessionToken || !roomToken || !roomUrl) {\n return\n }\n\n // Check if session has expired\n if (sessionExpiry) {\n const expiryDate = new Date(sessionExpiry)\n if (expiryDate < new Date()) {\n this.clearSessionStorage()\n return\n }\n }\n\n this.state = SDKState.LOADING\n\n // Create a new session with the stored token\n const session = new ObiSession({\n sessionId: sessionToken,\n })\n\n if (!session) {\n console.error(\"Failed to create session\")\n this.state = SDKState.ERROR\n this.clearSessionStorage()\n return\n }\n\n session.on(\"stateChanged\", (data) => {\n this.state = data.newState\n\n if (data.newState !== SDKState.READY) {\n this.storedActiveState = data.newState\n }\n })\n\n session.on(\"volume\", (data) => {\n this.volume = data\n })\n\n // Handle errors\n session.on(\"error\", (data) => {\n console.error(\"Session error:\", data.error)\n this.state = SDKState.ERROR\n this.activeSession = null\n this.clearSessionStorage()\n })\n\n const reconnected = await session.reconnect(roomUrl, roomToken, obiState)\n\n if (reconnected) {\n this.activeSession = session\n\n this.sessionToken = sessionToken\n this.roomToken = roomToken\n this.roomUrl = roomUrl\n this.state = obiState\n this.storedActiveState = obiState\n } else {\n // If reconnection failed, clear storage\n this.clearSessionStorage()\n }\n } catch (error) {\n console.error(\"Error reconnecting to session:\", error)\n this.state = SDKState.ERROR\n this.clearSessionStorage()\n }\n }\n\n /**\n * Clear session-related data from localStorage\n */\n private clearSessionStorage() {\n storage.removeItem(STORAGE_KEYS.SESSION_DATA)\n }\n\n connectedCallback() {\n super.connectedCallback()\n this.updateFromConfig()\n\n // Only set the position attribute for CSS styling\n this.setAttribute(\"position\", this.position)\n\n this.boundSaveSessionData = this.saveSessionData.bind(this)\n window.addEventListener(\"beforeunload\", this.boundSaveSessionData)\n window.addEventListener(\"pagehide\", this.boundSaveSessionData)\n\n this.checkExistingSession()\n }\n\n // Method to save session data\n private saveSessionData() {\n if (!this.activeSession) return\n if (this.sessionToken && this.roomToken && this.roomUrl) {\n const expiry = new Date()\n expiry.setMinutes(expiry.getMinutes() + 5)\n\n const sessionData: SessionData = {\n sessionToken: this.sessionToken,\n roomToken: this.roomToken,\n roomUrl: this.roomUrl,\n obiState: this.storedActiveState ?? this.state,\n sessionExpiry: expiry.toISOString(),\n }\n\n storage.setItem(STORAGE_KEYS.SESSION_DATA, JSON.stringify(sessionData))\n }\n }\n\n disconnectedCallback() {\n if (this.closeNavTimeoutRef !== null) {\n window.clearTimeout(this.closeNavTimeoutRef)\n }\n\n // Remove the event listeners with the stored reference\n if (this.boundSaveSessionData) {\n window.removeEventListener(\"beforeunload\", this.boundSaveSessionData)\n window.removeEventListener(\"pagehide\", this.boundSaveSessionData)\n }\n super.disconnectedCallback()\n }\n\n private handleMouseEnter() {\n this.isHovering = true\n this.navVisible = true\n }\n\n private handleMouseLeave() {\n this.isHovering = false\n if (this.closeNavTimeoutRef !== null) {\n window.clearTimeout(this.closeNavTimeoutRef)\n }\n this.closeNavTimeoutRef = window.setTimeout(() => {\n if (!this.isHovering) {\n this.navVisible = false\n }\n this.closeNavTimeoutRef = null\n }, 300)\n }\n\n /**\n * Terminate the session completely and clear storage\n * This is used when a user explicitly wants to end a session\n */\n private terminateSession() {\n this.clearSessionStorage()\n\n this.sessionToken = null\n this.roomToken = null\n this.roomUrl = null\n\n // Then disconnect if there's an active session\n if (this.activeSession) {\n this.activeSession.disconnect()\n this.activeSession = null\n }\n this.state = SDKState.READY\n }\n\n private handleItemSelect(id: string, itemIsActive: boolean) {\n if (id === \"experiences\") {\n this.showCourseModal = true\n return\n }\n\n match([id, itemIsActive])\n .with([\"pause\", true], () => {\n this.activeSession?.pauseRecording()\n })\n .with([\"pause\", false], () => {\n this.activeSession?.resumeRecording()\n })\n .with([\"activate\", false], () => {\n this.terminateSession()\n })\n .otherwise(() => {\n return\n })\n }\n\n render() {\n this.updateFromConfig()\n\n if (!this.isActive) return nothing\n\n const stateRender = match(this.state)\n .with(SDKState.LOADING, () => html`<obi-dot-loader></obi-dot-loader>`)\n .with(SDKState.RESEARCHING, () => html`<obi-searching-loader></obi-searching-loader>`)\n .with(\n P.union(SDKState.USER_SPEAKING, SDKState.AGENT_SPEAKING),\n () => html`<obi-audio-equalizer .volume=${this.volume}></obi-audio-equalizer>`\n )\n .with(SDKState.PAUSED, () => obiIcon)\n .otherwise(() => obiIcon)\n\n return html`\n <div\n class=\"widget-container ${this.state === SDKState.USER_SPEAKING ||\n this.state === SDKState.AGENT_SPEAKING\n ? \"pulse\"\n : \"\"} ${this.state !== SDKState.READY || this.navVisible ? \"rounded\" : \"\"} ${this\n .state === SDKState.RESEARCHING\n ? \"researching\"\n : \"\"} ${this.state === SDKState.USER_SPEAKING ? \"user-speaking\" : \"\"}\"\n @mouseenter=${this.handleMouseEnter}\n @mouseleave=${this.handleMouseLeave}\n >\n ${stateRender}\n ${this.navVisible && this.state !== SDKState.RESEARCHING\n ? html`\n <obi-navigation-bar\n ?isActive=${this.state !== SDKState.READY}\n .position=${this.position}\n data-direction=\"up\"\n .currentState=${this.state}\n .onItemSelect=${this.handleItemSelect.bind(this)}\n ></obi-navigation-bar>\n `\n : nothing}\n </div>\n ${this.showCourseModal\n ? html`<obi-course-modal\n .onClose=${() => (this.showCourseModal = false)}\n .onCourseSelect=${this.handleSessionStart.bind(this)}\n .apiKey=${this.apiKey}\n ></obi-course-modal>`\n : nothing}\n `\n }\n}\n\nif (!customElements.get(\"obi-widget\")) {\n customElements.define(\"obi-widget\", ObiWidget)\n}\n"],"names":["t","e","s","o","r","n","i","S","c","h","a","l","p","d","u","f","b","y","x","v","LitElement","html","css","__decorateClass","property","svg","state","createRef","j","ref","match","nothing","P"],"mappings":";AAKA,MAAMA,MAAE,YAAWC,MAAED,IAAE,eAAa,WAASA,IAAE,YAAUA,IAAE,SAAS,iBAAe,wBAAuB,SAAS,aAAW,aAAY,cAAc,WAAUE,MAAE,OAAM,GAAGC,MAAE,oBAAI;AAAQ,IAAA,MAAA,MAAM,EAAC;AAAA,EAAC,YAAYH,IAAEC,IAAEE,IAAE;AAAC,QAAG,KAAK,eAAa,MAAGA,OAAID;AAAE,YAAM,MAAM,mEAAmE;AAAE,SAAK,UAAQF,IAAE,KAAK,IAAEC;AAAA,EAAC;AAAA,EAAC,IAAI,aAAY;AAAC,QAAID,KAAE,KAAK;AAAE,UAAME,KAAE,KAAK;AAAE,QAAGD,OAAG,WAASD,IAAE;AAAC,YAAMC,KAAE,WAASC,MAAG,MAAIA,GAAE;AAAO,MAAAD,OAAID,KAAEG,IAAE,IAAID,EAAC,IAAG,WAASF,QAAK,KAAK,IAAEA,KAAE,IAAI,iBAAe,YAAY,KAAK,OAAO,GAAEC,MAAGE,IAAE,IAAID,IAAEF,EAAC;AAAA,IAAE;AAAC,WAAOA;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,WAAO,KAAK;AAAA,EAAO;AAAC;AAAM,MAACI,MAAE,CAAAJ,OAAG,IAAIK,IAAE,YAAU,OAAOL,KAAEA,KAAEA,KAAE,IAAG,QAAOE,GAAC,GAAEI,MAAE,CAACN,OAAKC,OAAI;AAAC,QAAME,KAAE,MAAIH,GAAE,SAAOA,GAAE,CAAC,IAAEC,GAAE,OAAQ,CAACA,IAAEC,IAAEC,OAAIF,MAAG,CAAAD,OAAG;AAAC,QAAG,SAAKA,GAAE;AAAa,aAAOA,GAAE;AAAQ,QAAG,YAAU,OAAOA;AAAE,aAAOA;AAAE,UAAM,MAAM,qEAAmEA,KAAE,sFAAsF;AAAA,EAAC,GAAGE,EAAC,IAAEF,GAAEG,KAAE,CAAC,GAAGH,GAAE,CAAC,CAAC;AAAE,SAAO,IAAIK,IAAEF,IAAEH,IAAEE,GAAC;AAAC,GAAEK,MAAE,CAACL,IAAEC,OAAI;AAAC,MAAGF;AAAE,IAAAC,GAAE,qBAAmBC,GAAE,IAAK,CAAAH,OAAGA,cAAa,gBAAcA,KAAEA,GAAE,UAAY;AAAA;AAAM,eAAUC,MAAKE,IAAE;AAAC,YAAMA,KAAE,SAAS,cAAc,OAAO,GAAEE,KAAEL,IAAE;AAAS,iBAASK,MAAGF,GAAE,aAAa,SAAQE,EAAC,GAAEF,GAAE,cAAYF,GAAE,SAAQC,GAAE,YAAYC,EAAC;AAAA,IAAC;AAAC,GAAEK,MAAEP,MAAE,CAAAD,OAAGA,KAAE,CAAAA,OAAGA,cAAa,iBAAe,CAAAA,OAAG;AAAC,MAAIC,KAAE;AAAG,aAAUC,MAAKF,GAAE;AAAS,IAAAC,MAAGC,GAAE;AAAQ,SAAOE,IAAEH,EAAC;AAAC,GAAGD,EAAC,IAAEA;ACAxzC,MAAK,EAAC,IAAGM,KAAE,gBAAeL,KAAE,0BAAyBQ,KAAE,qBAAoBL,KAAE,uBAAsBD,KAAE,gBAAeE,IAAC,IAAE,QAAOK,MAAE,YAAWF,MAAEE,IAAE,cAAaC,MAAEH,MAAEA,IAAE,cAAY,IAAGI,MAAEF,IAAE,gCAA+BG,MAAE,CAACb,IAAEE,OAAIF,IAAEc,MAAE,EAAC,YAAYd,IAAEE,IAAE;AAAC,UAAOA,IAAC;AAAA,IAAE,KAAK;AAAQ,MAAAF,KAAEA,KAAEW,MAAE;AAAK;AAAA,IAAM,KAAK;AAAA,IAAO,KAAK;AAAM,MAAAX,KAAE,QAAMA,KAAEA,KAAE,KAAK,UAAUA,EAAC;AAAA,EAAC;AAAC,SAAOA;AAAC,GAAE,cAAcA,IAAEE,IAAE;AAAC,MAAII,KAAEN;AAAE,UAAOE,IAAG;AAAA,IAAA,KAAK;AAAQ,MAAAI,KAAE,SAAON;AAAE;AAAA,IAAM,KAAK;AAAO,MAAAM,KAAE,SAAON,KAAE,OAAK,OAAOA,EAAC;AAAE;AAAA,IAAM,KAAK;AAAA,IAAO,KAAK;AAAM,UAAG;AAAC,QAAAM,KAAE,KAAK,MAAMN,EAAC;AAAA,MAAC,SAAOA,IAAE;AAAC,QAAAM,KAAE;AAAA,MAAI;AAAA,EAAC;AAAC,SAAOA;AAAC,EAAC,GAAES,MAAE,CAACf,IAAEE,OAAI,CAACI,IAAEN,IAAEE,EAAC,GAAEc,MAAE,EAAC,WAAU,MAAG,MAAK,QAAO,WAAUF,KAAE,SAAQ,OAAG,YAAW,OAAG,YAAWC,IAAC;AAAE,OAAO,aAAP,OAAO,WAAW,OAAO,UAAU,IAAEL,IAAE,wBAAFA,IAAE,sBAAsB,oBAAI;AAAO,IAAA,MAAC,MAAM,UAAU,YAAW;AAAA,EAAC,OAAO,eAAeV,IAAE;AAAC,SAAK,KAAI,IAAI,KAAK,MAAL,KAAK,IAAI,CAAA,IAAI,KAAKA,EAAC;AAAA,EAAC;AAAA,EAAC,WAAW,qBAAoB;AAAC,WAAO,KAAK,SAAU,GAAC,KAAK,QAAM,CAAC,GAAG,KAAK,KAAK,KAAI,CAAE;AAAA,EAAC;AAAA,EAAC,OAAO,eAAeA,IAAEE,KAAEc,KAAE;AAAC,QAAGd,GAAE,UAAQA,GAAE,YAAU,QAAI,KAAK,KAAM,GAAC,KAAK,UAAU,eAAeF,EAAC,OAAKE,KAAE,OAAO,OAAOA,EAAC,GAAG,UAAQ,OAAI,KAAK,kBAAkB,IAAIF,IAAEE,EAAC,GAAE,CAACA,GAAE,YAAW;AAAC,YAAMI,KAAE,OAAM,GAAGG,KAAE,KAAK,sBAAsBT,IAAEM,IAAEJ,EAAC;AAAE,iBAASO,MAAGR,IAAE,KAAK,WAAUD,IAAES,EAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,OAAO,sBAAsBT,IAAEE,IAAEI,IAAE;AAAC,UAAK,EAAC,KAAIL,IAAE,KAAIG,GAAC,IAAEK,IAAE,KAAK,WAAUT,EAAC,KAAG,EAAC,MAAK;AAAC,aAAO,KAAKE,EAAC;AAAA,IAAC,GAAE,IAAIF,IAAE;AAAC,WAAKE,EAAC,IAAEF;AAAA,IAAC,EAAC;AAAE,WAAM,EAAC,KAAIC,IAAE,IAAIC,IAAE;AAAC,YAAMO,KAAER,IAAG,KAAK,IAAI;AAAE,MAAAG,IAAG,KAAK,MAAKF,EAAC,GAAE,KAAK,cAAcF,IAAES,IAAEH,EAAC;AAAA,IAAC,GAAE,cAAa,MAAG,YAAW,KAAE;AAAA,EAAC;AAAA,EAAC,OAAO,mBAAmBN,IAAE;AAAC,WAAO,KAAK,kBAAkB,IAAIA,EAAC,KAAGgB;AAAAA,EAAC;AAAA,EAAC,OAAO,OAAM;AAAC,QAAG,KAAK,eAAeH,IAAE,mBAAmB,CAAC;AAAE;AAAO,UAAMb,KAAEK,IAAE,IAAI;AAAE,IAAAL,GAAE,SAAU,GAAC,WAASA,GAAE,MAAI,KAAK,IAAE,CAAC,GAAGA,GAAE,CAAC,IAAG,KAAK,oBAAkB,IAAI,IAAIA,GAAE,iBAAiB;AAAA,EAAC;AAAA,EAAC,OAAO,WAAU;AAAC,QAAG,KAAK,eAAea,IAAE,WAAW,CAAC;AAAE;AAAO,QAAG,KAAK,YAAU,MAAG,KAAK,KAAI,GAAG,KAAK,eAAeA,IAAE,YAAY,CAAC,GAAE;AAAC,YAAMb,KAAE,KAAK,YAAWE,KAAE,CAAC,GAAGE,IAAEJ,EAAC,GAAE,GAAGG,IAAEH,EAAC,CAAC;AAAE,iBAAUM,MAAKJ;AAAE,aAAK,eAAeI,IAAEN,GAAEM,EAAC,CAAC;AAAA,IAAC;AAAC,UAAMN,KAAE,KAAK,OAAO,QAAQ;AAAE,QAAG,SAAOA,IAAE;AAAC,YAAME,KAAE,oBAAoB,IAAIF,EAAC;AAAE,UAAG,WAASE;AAAE,mBAAS,CAACF,IAAEM,EAAC,KAAIJ;AAAE,eAAK,kBAAkB,IAAIF,IAAEM,EAAC;AAAA,IAAC;AAAC,SAAK,OAAK,oBAAI;AAAI,eAAS,CAACN,IAAEE,EAAC,KAAI,KAAK,mBAAkB;AAAC,YAAMI,KAAE,KAAK,KAAKN,IAAEE,EAAC;AAAE,iBAASI,MAAG,KAAK,KAAK,IAAIA,IAAEN,EAAC;AAAA,IAAC;AAAC,SAAK,gBAAc,KAAK,eAAe,KAAK,MAAM;AAAA,EAAC;AAAA,EAAC,OAAO,eAAeE,IAAE;AAAC,UAAMI,KAAE,CAAA;AAAG,QAAG,MAAM,QAAQJ,EAAC,GAAE;AAAC,YAAMD,KAAE,IAAI,IAAIC,GAAE,KAAK,IAAE,CAAC,EAAE,QAAO,CAAE;AAAE,iBAAUA,MAAKD;AAAE,QAAAK,GAAE,QAAQN,IAAEE,EAAC,CAAC;AAAA,IAAC;AAAM,iBAASA,MAAGI,GAAE,KAAKN,IAAEE,EAAC,CAAC;AAAE,WAAOI;AAAA,EAAC;AAAA,EAAC,OAAO,KAAKN,IAAEE,IAAE;AAAC,UAAMI,KAAEJ,GAAE;AAAU,WAAM,UAAKI,KAAE,SAAO,YAAU,OAAOA,KAAEA,KAAE,YAAU,OAAON,KAAEA,GAAE,YAAW,IAAG;AAAA,EAAM;AAAA,EAAC,cAAa;AAAC,aAAQ,KAAK,OAAK,QAAO,KAAK,kBAAgB,OAAG,KAAK,aAAW,OAAG,KAAK,OAAK,MAAK,KAAK,KAAM;AAAA,EAAA;AAAA,EAAC,OAAM;AAAC,SAAK,OAAK,IAAI,QAAS,CAAAA,OAAG,KAAK,iBAAeA,KAAI,KAAK,OAAK,oBAAI,OAAI,KAAK,KAAI,GAAG,KAAK,iBAAgB,KAAK,YAAY,GAAG,QAAS,CAAAA,OAAGA,GAAE,IAAI,CAAC;AAAA,EAAE;AAAA,EAAC,cAAcA,IAAE;AAAC,KAAC,KAAK,SAAL,KAAK,OAAO,oBAAI,QAAK,IAAIA,EAAC,GAAE,WAAS,KAAK,cAAY,KAAK,eAAaA,GAAE,gBAAa;AAAA,EAAI;AAAA,EAAC,iBAAiBA,IAAE;AAAC,SAAK,MAAM,OAAOA,EAAC;AAAA,EAAC;AAAA,EAAC,OAAM;AAAC,UAAMA,KAAE,oBAAI,OAAIE,KAAE,KAAK,YAAY;AAAkB,eAAUI,MAAKJ,GAAE,KAAM;AAAC,WAAK,eAAeI,EAAC,MAAIN,GAAE,IAAIM,IAAE,KAAKA,EAAC,CAAC,GAAE,OAAO,KAAKA,EAAC;AAAG,IAAAN,GAAE,OAAK,MAAI,KAAK,OAAKA;AAAA,EAAE;AAAA,EAAC,mBAAkB;AAAC,UAAMA,KAAE,KAAK,cAAY,KAAK,aAAa,KAAK,YAAY,iBAAiB;AAAE,WAAOE,IAAEF,IAAE,KAAK,YAAY,aAAa,GAAEA;AAAA,EAAC;AAAA,EAAC,oBAAmB;AAAC,SAAK,eAAL,KAAK,aAAa,KAAK,iBAAkB,IAAC,KAAK,eAAe,IAAE,GAAE,KAAK,MAAM,QAAS,CAAAA,OAAGA,GAAE,gBAAiB,CAAA;AAAA,EAAE;AAAA,EAAC,eAAeA,IAAE;AAAA,EAAE;AAAA,EAAA,uBAAsB;AAAC,SAAK,MAAM,QAAS,CAAAA,OAAGA,GAAE,mBAAgB;EAAM;AAAA,EAAC,yBAAyBA,IAAEE,IAAEI,IAAE;AAAC,SAAK,KAAKN,IAAEM,EAAC;AAAA,EAAC;AAAA,EAAC,KAAKN,IAAEE,IAAE;AAAC,UAAMI,KAAE,KAAK,YAAY,kBAAkB,IAAIN,EAAC,GAAEC,KAAE,KAAK,YAAY,KAAKD,IAAEM,EAAC;AAAE,QAAG,WAASL,MAAG,SAAKK,GAAE,SAAQ;AAAC,YAAMG,MAAG,WAASH,GAAE,WAAW,cAAYA,GAAE,YAAUQ,KAAG,YAAYZ,IAAEI,GAAE,IAAI;AAAE,WAAK,OAAKN,IAAE,QAAMS,KAAE,KAAK,gBAAgBR,EAAC,IAAE,KAAK,aAAaA,IAAEQ,EAAC,GAAE,KAAK,OAAK;AAAA,IAAI;AAAA,EAAC;AAAA,EAAC,KAAKT,IAAEE,IAAE;AAAC,UAAMI,KAAE,KAAK,aAAYL,KAAEK,GAAE,KAAK,IAAIN,EAAC;AAAE,QAAG,WAASC,MAAG,KAAK,SAAOA,IAAE;AAAC,YAAMD,KAAEM,GAAE,mBAAmBL,EAAC,GAAEQ,KAAE,cAAY,OAAOT,GAAE,YAAU,EAAC,eAAcA,GAAE,UAAS,IAAE,WAASA,GAAE,WAAW,gBAAcA,GAAE,YAAUc;AAAE,WAAK,OAAKb,IAAE,KAAKA,EAAC,IAAEQ,GAAE,cAAcP,IAAEF,GAAE,IAAI,KAAG,KAAK,MAAM,IAAIC,EAAC,KAAG,MAAK,KAAK,OAAK;AAAA,IAAI;AAAA,EAAC;AAAA,EAAC,cAAcD,IAAEE,IAAEI,IAAE;AAAC,QAAG,WAASN,IAAE;AAAC,YAAMC,KAAE,KAAK,aAAYQ,KAAE,KAAKT,EAAC;AAAE,UAAGM,YAAIL,GAAE,mBAAmBD,EAAC,IAAE,GAAGM,GAAE,cAAYS,KAAGN,IAAEP,EAAC,KAAGI,GAAE,cAAYA,GAAE,WAASG,OAAI,KAAK,MAAM,IAAIT,EAAC,KAAG,CAAC,KAAK,aAAaC,GAAE,KAAKD,IAAEM,EAAC,CAAC;AAAG;AAAO,WAAK,EAAEN,IAAEE,IAAEI,EAAC;AAAA,IAAC;AAAC,cAAK,KAAK,oBAAkB,KAAK,OAAK,KAAK,KAAM;AAAA,EAAC;AAAA,EAAC,EAAEN,IAAEE,IAAE,EAAC,YAAWI,IAAE,SAAQL,IAAE,SAAQQ,GAAC,GAAEL,IAAE;AAAC,IAAAE,MAAG,EAAE,KAAK,SAAL,KAAK,OAAO,oBAAI,QAAK,IAAIN,EAAC,MAAI,KAAK,KAAK,IAAIA,IAAEI,MAAGF,MAAG,KAAKF,EAAC,CAAC,GAAE,SAAKS,MAAG,WAASL,QAAK,KAAK,KAAK,IAAIJ,EAAC,MAAI,KAAK,cAAYM,OAAIJ,KAAE,SAAQ,KAAK,KAAK,IAAIF,IAAEE,EAAC,IAAG,SAAKD,MAAG,KAAK,SAAOD,OAAI,KAAK,SAAL,KAAK,OAAO,oBAAI,QAAK,IAAIA,EAAC;AAAA,EAAE;AAAA,EAAC,MAAM,OAAM;AAAC,SAAK,kBAAgB;AAAG,QAAG;AAAC,YAAM,KAAK;AAAA,IAAI,SAAOA,IAAE;AAAC,cAAQ,OAAOA,EAAC;AAAA,IAAC;AAAC,UAAMA,KAAE,KAAK,eAAc;AAAG,WAAO,QAAMA,MAAG,MAAMA,IAAE,CAAC,KAAK;AAAA,EAAe;AAAA,EAAC,iBAAgB;AAAC,WAAO,KAAK,cAAe;AAAA,EAAA;AAAA,EAAC,gBAAe;AAAC,QAAG,CAAC,KAAK;AAAgB;AAAO,QAAG,CAAC,KAAK,YAAW;AAAC,UAAG,KAAK,eAAL,KAAK,aAAa,KAAK,qBAAmB,KAAK,MAAK;AAAC,mBAAS,CAACA,IAAEE,EAAC,KAAI,KAAK;AAAK,eAAKF,EAAC,IAAEE;AAAE,aAAK,OAAK;AAAA,MAAM;AAAC,YAAMF,KAAE,KAAK,YAAY;AAAkB,UAAGA,GAAE,OAAK;AAAE,mBAAS,CAACE,IAAEI,EAAC,KAAIN,IAAE;AAAC,gBAAK,EAAC,SAAQA,GAAC,IAAEM,IAAEL,KAAE,KAAKC,EAAC;AAAE,mBAAKF,MAAG,KAAK,KAAK,IAAIE,EAAC,KAAG,WAASD,MAAG,KAAK,EAAEC,IAAE,QAAOI,IAAEL,EAAC;AAAA,QAAC;AAAA,IAAC;AAAC,QAAID,KAAE;AAAG,UAAME,KAAE,KAAK;AAAK,QAAG;AAAC,MAAAF,KAAE,KAAK,aAAaE,EAAC,GAAEF,MAAG,KAAK,WAAWE,EAAC,GAAE,KAAK,MAAM,QAAS,CAAAF,OAAGA,GAAE,aAAc,CAAA,GAAG,KAAK,OAAOE,EAAC,KAAG,KAAK,KAAI;AAAA,IAAE,SAAOA,IAAE;AAAC,YAAMF,KAAE,OAAG,KAAK,KAAI,GAAGE;AAAA,IAAC;AAAC,IAAAF,MAAG,KAAK,KAAKE,EAAC;AAAA,EAAC;AAAA,EAAC,WAAWF,IAAE;AAAA,EAAA;AAAA,EAAE,KAAKA,IAAE;AAAC,SAAK,MAAM,QAAS,CAAAA,OAAGA,GAAE,cAAW,CAAM,GAAC,KAAK,eAAa,KAAK,aAAW,MAAG,KAAK,aAAaA,EAAC,IAAG,KAAK,QAAQA,EAAC;AAAA,EAAC;AAAA,EAAC,OAAM;AAAC,SAAK,OAAK,oBAAI,OAAI,KAAK,kBAAgB;AAAA,EAAE;AAAA,EAAC,IAAI,iBAAgB;AAAC,WAAO,KAAK,kBAAmB;AAAA,EAAA;AAAA,EAAC,oBAAmB;AAAC,WAAO,KAAK;AAAA,EAAI;AAAA,EAAC,aAAaA,IAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,OAAOA,IAAE;AAAC,SAAK,SAAL,KAAK,OAAO,KAAK,KAAK,QAAS,CAAAA,OAAG,KAAK,KAAKA,IAAE,KAAKA,EAAC,CAAC,CAAG,IAAC,KAAK,KAAI;AAAA,EAAE;AAAA,EAAC,QAAQA,IAAE;AAAA,EAAE;AAAA,EAAA,aAAaA,IAAE;AAAA,EAAA;AAAE;AAACiB,IAAE,gBAAc,CAAA,GAAGA,IAAE,oBAAkB,EAAC,MAAK,OAAM,GAAEA,IAAEJ,IAAE,mBAAmB,CAAC,IAAE,oBAAI,OAAII,IAAEJ,IAAE,WAAW,CAAC,IAAE,oBAAI,OAAID,MAAI,EAAC,iBAAgBK,IAAC,CAAC,IAAGP,IAAE,4BAAFA,IAAE,0BAA0B,CAAE,IAAE,KAAK,OAAO;ACAjxL,MAACV,MAAE,YAAWM,MAAEN,IAAE,cAAaE,MAAEI,MAAEA,IAAE,aAAa,YAAW,EAAC,YAAW,CAAAN,OAAGA,GAAC,CAAC,IAAE,QAAOC,MAAE,SAAQQ,MAAE,OAAO,KAAK,OAAM,EAAG,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,KAAIN,MAAE,MAAIM,KAAEJ,MAAE,IAAIF,GAAC,KAAIC,MAAE,UAAS,IAAE,MAAIA,IAAE,cAAc,EAAE,GAAEI,MAAE,CAAAR,OAAG,SAAOA,MAAG,YAAU,OAAOA,MAAG,cAAY,OAAOA,IAAE,IAAE,MAAM,SAAQ,IAAE,CAAAA,OAAG,EAAEA,EAAC,KAAG,cAAY,OAAOA,KAAI,OAAO,QAAQ,GAAE,IAAE,cAAce,MAAE,uDAAsD,IAAE,QAAO,IAAE,MAAK,IAAE,OAAO,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAAA,2BAAsC,GAAG,GAAE,IAAE,MAAK,IAAE,MAAK,IAAE,sCAAqCE,KAAE,CAAAjB,OAAG,CAACM,OAAKJ,QAAK,EAAC,YAAWF,IAAE,SAAQM,IAAE,QAAOJ,GAAC,IAAG,IAAEe,GAAE,CAAC,GAAE,IAAEA,GAAE,CAAC,GAAS,IAAE,OAAO,IAAI,cAAc,GAAE,IAAE,OAAO,IAAI,aAAa,GAAE,IAAE,oBAAI,WAAQ,IAAEb,IAAE,iBAAiBA,KAAE,GAAG;AAAE,SAAS,EAAEJ,IAAEM,IAAE;AAAC,MAAG,CAAC,EAAEN,EAAC,KAAG,CAACA,GAAE,eAAe,KAAK;AAAE,UAAM,MAAM,gCAAgC;AAAE,SAAO,WAASE,MAAEA,IAAE,WAAWI,EAAC,IAAEA;AAAC;AAAC,MAAM,IAAE,CAACN,IAAEM,OAAI;AAAC,QAAMJ,KAAEF,GAAE,SAAO,GAAEG,KAAE,CAAE;AAAC,MAAIC,IAAEO,KAAE,MAAIL,KAAE,UAAQ,MAAIA,KAAE,WAAS,IAAGE,KAAEO;AAAE,WAAQT,KAAE,GAAEA,KAAEJ,IAAEI,MAAI;AAAC,UAAMJ,KAAEF,GAAEM,EAAC;AAAE,QAAII,IAAEI,IAAED,KAAE,IAAGI,KAAE;AAAE,WAAKA,KAAEf,GAAE,WAASM,GAAE,YAAUS,IAAEH,KAAEN,GAAE,KAAKN,EAAC,GAAE,SAAOY;AAAI,MAAAG,KAAET,GAAE,WAAUA,OAAIO,MAAE,UAAQD,GAAE,CAAC,IAAEN,KAAE,IAAE,WAASM,GAAE,CAAC,IAAEN,KAAE,IAAE,WAASM,GAAE,CAAC,KAAG,EAAE,KAAKA,GAAE,CAAC,CAAC,MAAIV,KAAE,OAAO,OAAKU,GAAE,CAAC,GAAE,GAAG,IAAGN,KAAE,KAAG,WAASM,GAAE,CAAC,MAAIN,KAAE,KAAGA,OAAI,IAAE,QAAMM,GAAE,CAAC,KAAGN,KAAEJ,MAAGW,KAAEF,KAAE,MAAI,WAASC,GAAE,CAAC,IAAED,KAAE,MAAIA,KAAEL,GAAE,YAAUM,GAAE,CAAC,EAAE,QAAOJ,KAAEI,GAAE,CAAC,GAAEN,KAAE,WAASM,GAAE,CAAC,IAAE,IAAE,QAAMA,GAAE,CAAC,IAAE,IAAE,KAAGN,OAAI,KAAGA,OAAI,IAAEA,KAAE,IAAEA,OAAI,KAAGA,OAAI,IAAEA,KAAEO,OAAGP,KAAE,GAAEJ,KAAE;AAAQ,UAAMc,KAAEV,OAAI,KAAGR,GAAEM,KAAE,CAAC,EAAE,WAAW,IAAI,IAAE,MAAI;AAAG,IAAAK,MAAGH,OAAIO,MAAEb,KAAEG,MAAEQ,MAAG,KAAGV,GAAE,KAAKO,EAAC,GAAER,GAAE,MAAM,GAAEW,EAAC,IAAEZ,MAAEC,GAAE,MAAMW,EAAC,IAAEJ,MAAES,MAAGhB,KAAEO,OAAG,OAAKI,KAAEP,KAAEY;AAAA,EAAE;AAAC,SAAM,CAAC,EAAElB,IAAEW,MAAGX,GAAEE,EAAC,KAAG,UAAQ,MAAII,KAAE,WAAS,MAAIA,KAAE,YAAU,GAAG,GAAEH,EAAC;AAAC;AAAE,MAAM,EAAC;AAAA,EAAC,YAAY,EAAC,SAAQH,IAAE,YAAWE,GAAC,GAAEG,IAAE;AAAC,QAAID;AAAE,SAAK,QAAM,CAAE;AAAC,QAAII,KAAE,GAAEE,KAAE;AAAE,UAAMI,KAAEd,GAAE,SAAO,GAAEa,KAAE,KAAK,OAAM,CAACE,IAAEI,EAAC,IAAE,EAAEnB,IAAEE,EAAC;AAAE,QAAG,KAAK,KAAG,EAAE,cAAca,IAAEV,EAAC,GAAE,EAAE,cAAY,KAAK,GAAG,SAAQ,MAAIH,MAAG,MAAIA,IAAE;AAAC,YAAMF,KAAE,KAAK,GAAG,QAAQ;AAAW,MAAAA,GAAE,YAAY,GAAGA,GAAE,UAAU;AAAA,IAAC;AAAC,WAAK,UAAQI,KAAE,EAAE,SAAQ,MAAKS,GAAE,SAAOC,MAAG;AAAC,UAAG,MAAIV,GAAE,UAAS;AAAC,YAAGA,GAAE,cAAa;AAAG,qBAAUJ,MAAKI,GAAE,kBAAmB;AAAC,gBAAGJ,GAAE,SAASC,GAAC,GAAE;AAAC,oBAAMK,KAAEa,GAAET,IAAG,GAAER,KAAEE,GAAE,aAAaJ,EAAC,EAAE,MAAMS,GAAC,GAAER,KAAE,eAAe,KAAKK,EAAC;AAAE,cAAAO,GAAE,KAAK,EAAC,MAAK,GAAE,OAAML,IAAE,MAAKP,GAAE,CAAC,GAAE,SAAQC,IAAE,MAAK,QAAMD,GAAE,CAAC,IAAE,IAAE,QAAMA,GAAE,CAAC,IAAE,IAAE,QAAMA,GAAE,CAAC,IAAE,IAAE,EAAC,CAAC,GAAEG,GAAE,gBAAgBJ,EAAC;AAAA,YAAC;AAAM,cAAAA,GAAE,WAAWS,GAAC,MAAII,GAAE,KAAK,EAAC,MAAK,GAAE,OAAML,GAAC,CAAC,GAAEJ,GAAE,gBAAgBJ,EAAC;AAAG,YAAG,EAAE,KAAKI,GAAE,OAAO,GAAE;AAAC,gBAAMJ,KAAEI,GAAE,YAAY,MAAMK,GAAC,GAAEP,KAAEF,GAAE,SAAO;AAAE,cAAGE,KAAE,GAAE;AAAC,YAAAE,GAAE,cAAYE,MAAEA,IAAE,cAAY;AAAG,qBAAQA,KAAE,GAAEA,KAAEJ,IAAEI;AAAI,cAAAF,GAAE,OAAOJ,GAAEM,EAAC,GAAE,EAAG,CAAA,GAAE,EAAE,SAAQ,GAAGO,GAAE,KAAK,EAAC,MAAK,GAAE,OAAM,EAAEL,GAAC,CAAC;AAAE,YAAAJ,GAAE,OAAOJ,GAAEE,EAAC,GAAE,EAAG,CAAA;AAAA,UAAC;AAAA,QAAC;AAAA,MAAC,WAAS,MAAIE,GAAE;AAAS,YAAGA,GAAE,SAAOD;AAAE,UAAAU,GAAE,KAAK,EAAC,MAAK,GAAE,OAAML,GAAC,CAAC;AAAA,aAAM;AAAC,cAAIR,KAAE;AAAG,iBAAK,QAAMA,KAAEI,GAAE,KAAK,QAAQK,KAAET,KAAE,CAAC;AAAI,YAAAa,GAAE,KAAK,EAAC,MAAK,GAAE,OAAML,GAAC,CAAC,GAAER,MAAGS,IAAE,SAAO;AAAA,QAAC;AAAC,MAAAD;AAAA,IAAG;AAAA,EAAC;AAAA,EAAC,OAAO,cAAcR,IAAEM,IAAE;AAAC,UAAMJ,KAAEE,IAAE,cAAc,UAAU;AAAE,WAAOF,GAAE,YAAUF,IAAEE;AAAA,EAAC;AAAC;AAAC,SAAS,EAAEF,IAAEM,IAAEJ,KAAEF,IAAEC,IAAE;AAAC,MAAGK,OAAI;AAAE,WAAOA;AAAE,MAAIG,KAAE,WAASR,KAAEC,GAAE,OAAOD,EAAC,IAAEC,GAAE;AAAK,QAAMC,KAAEK,IAAEF,EAAC,IAAE,SAAOA,GAAE;AAAgB,SAAOG,IAAG,gBAAcN,OAAIM,IAAG,OAAO,KAAE,GAAE,WAASN,KAAEM,KAAE,UAAQA,KAAE,IAAIN,GAAEH,EAAC,GAAES,GAAE,KAAKT,IAAEE,IAAED,EAAC,IAAG,WAASA,MAAGC,GAAE,SAAFA,GAAE,OAAO,CAAA,IAAID,EAAC,IAAEQ,KAAEP,GAAE,OAAKO,KAAG,WAASA,OAAIH,KAAE,EAAEN,IAAES,GAAE,KAAKT,IAAEM,GAAE,MAAM,GAAEG,IAAER,EAAC,IAAGK;AAAC;AAAC,MAAM,EAAC;AAAA,EAAC,YAAYN,IAAEM,IAAE;AAAC,SAAK,OAAK,CAAA,GAAG,KAAK,OAAK,QAAO,KAAK,OAAKN,IAAE,KAAK,OAAKM;AAAA,EAAC;AAAA,EAAC,IAAI,aAAY;AAAC,WAAO,KAAK,KAAK;AAAA,EAAU;AAAA,EAAC,IAAI,OAAM;AAAC,WAAO,KAAK,KAAK;AAAA,EAAI;AAAA,EAAC,EAAEN,IAAE;AAAC,UAAK,EAAC,IAAG,EAAC,SAAQM,GAAC,GAAE,OAAMJ,GAAC,IAAE,KAAK,MAAKD,MAAGD,IAAG,iBAAeI,KAAG,WAAWE,IAAE,IAAE;AAAE,MAAE,cAAYL;AAAE,QAAIQ,KAAE,EAAE,SAAU,GAACN,KAAE,GAAEE,KAAE,GAAEM,KAAET,GAAE,CAAC;AAAE,WAAK,WAASS,MAAG;AAAC,UAAGR,OAAIQ,GAAE,OAAM;AAAC,YAAIL;AAAE,cAAIK,GAAE,OAAKL,KAAE,IAAI,EAAEG,IAAEA,GAAE,aAAY,MAAKT,EAAC,IAAE,MAAIW,GAAE,OAAKL,KAAE,IAAIK,GAAE,KAAKF,IAAEE,GAAE,MAAKA,GAAE,SAAQ,MAAKX,EAAC,IAAE,MAAIW,GAAE,SAAOL,KAAE,IAAI,EAAEG,IAAE,MAAKT,EAAC,IAAG,KAAK,KAAK,KAAKM,EAAC,GAAEK,KAAET,GAAE,EAAEG,EAAC;AAAA,MAAC;AAAC,MAAAF,OAAIQ,IAAG,UAAQF,KAAE,EAAE,SAAU,GAACN;AAAA,IAAI;AAAC,WAAO,EAAE,cAAYC,KAAEH;AAAA,EAAC;AAAA,EAAC,EAAED,IAAE;AAAC,QAAIM,KAAE;AAAE,eAAUJ,MAAK,KAAK;AAAK,iBAASA,OAAI,WAASA,GAAE,WAASA,GAAE,KAAKF,IAAEE,IAAEI,EAAC,GAAEA,MAAGJ,GAAE,QAAQ,SAAO,KAAGA,GAAE,KAAKF,GAAEM,EAAC,CAAC,IAAGA;AAAA,EAAG;AAAC;AAAC,MAAM,EAAC;AAAA,EAAC,IAAI,OAAM;AAAC,WAAO,KAAK,MAAM,QAAM,KAAK;AAAA,EAAI;AAAA,EAAC,YAAYN,IAAEM,IAAEJ,IAAED,IAAE;AAAC,SAAK,OAAK,GAAE,KAAK,OAAK,GAAE,KAAK,OAAK,QAAO,KAAK,OAAKD,IAAE,KAAK,OAAKM,IAAE,KAAK,OAAKJ,IAAE,KAAK,UAAQD,IAAE,KAAK,OAAKA,IAAG,eAAa;AAAA,EAAE;AAAA,EAAC,IAAI,aAAY;AAAC,QAAID,KAAE,KAAK,KAAK;AAAW,UAAMM,KAAE,KAAK;AAAK,WAAO,WAASA,MAAG,OAAKN,IAAG,aAAWA,KAAEM,GAAE,aAAYN;AAAA,EAAC;AAAA,EAAC,IAAI,YAAW;AAAC,WAAO,KAAK;AAAA,EAAI;AAAA,EAAC,IAAI,UAAS;AAAC,WAAO,KAAK;AAAA,EAAI;AAAA,EAAC,KAAKA,IAAEM,KAAE,MAAK;AAAC,IAAAN,KAAE,EAAE,MAAKA,IAAEM,EAAC,GAAEE,IAAER,EAAC,IAAEA,OAAI,KAAG,QAAMA,MAAG,OAAKA,MAAG,KAAK,SAAO,KAAG,KAAK,KAAM,GAAC,KAAK,OAAK,KAAGA,OAAI,KAAK,QAAMA,OAAI,KAAG,KAAK,EAAEA,EAAC,IAAE,WAASA,GAAE,aAAW,KAAK,EAAEA,EAAC,IAAE,WAASA,GAAE,WAAS,KAAK,EAAEA,EAAC,IAAE,EAAEA,EAAC,IAAE,KAAK,EAAEA,EAAC,IAAE,KAAK,EAAEA,EAAC;AAAA,EAAC;AAAA,EAAC,EAAEA,IAAE;AAAC,WAAO,KAAK,KAAK,WAAW,aAAaA,IAAE,KAAK,IAAI;AAAA,EAAC;AAAA,EAAC,EAAEA,IAAE;AAAC,SAAK,SAAOA,OAAI,KAAK,KAAI,GAAG,KAAK,OAAK,KAAK,EAAEA,EAAC;AAAA,EAAE;AAAA,EAAC,EAAEA,IAAE;AAAC,SAAK,SAAO,KAAGQ,IAAE,KAAK,IAAI,IAAE,KAAK,KAAK,YAAY,OAAKR,KAAE,KAAK,EAAEI,IAAE,eAAeJ,EAAC,CAAC,GAAE,KAAK,OAAKA;AAAA,EAAC;AAAA,EAAC,EAAEA,IAAE;AAAC,UAAK,EAAC,QAAOM,IAAE,YAAWJ,GAAC,IAAEF,IAAEC,KAAE,YAAU,OAAOC,KAAE,KAAK,KAAKF,EAAC,KAAG,WAASE,GAAE,OAAKA,GAAE,KAAG,EAAE,cAAc,EAAEA,GAAE,GAAEA,GAAE,EAAE,CAAC,CAAC,GAAE,KAAK,OAAO,IAAGA;AAAG,QAAG,KAAK,MAAM,SAAOD;AAAE,WAAK,KAAK,EAAEK,EAAC;AAAA,SAAM;AAAC,YAAMN,KAAE,IAAI,EAAEC,IAAE,IAAI,GAAEC,KAAEF,GAAE,EAAE,KAAK,OAAO;AAAE,MAAAA,GAAE,EAAEM,EAAC,GAAE,KAAK,EAAEJ,EAAC,GAAE,KAAK,OAAKF;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,KAAKA,IAAE;AAAC,QAAIM,KAAE,EAAE,IAAIN,GAAE,OAAO;AAAE,WAAO,WAASM,MAAG,EAAE,IAAIN,GAAE,SAAQM,KAAE,IAAI,EAAEN,EAAC,CAAC,GAAEM;AAAA,EAAC;AAAA,EAAC,EAAEN,IAAE;AAAC,MAAE,KAAK,IAAI,MAAI,KAAK,OAAK,CAAE,GAAC,KAAK;AAAQ,UAAMM,KAAE,KAAK;AAAK,QAAIJ,IAAED,KAAE;AAAE,eAAUQ,MAAKT;AAAE,MAAAC,OAAIK,GAAE,SAAOA,GAAE,KAAKJ,KAAE,IAAI,EAAE,KAAK,EAAE,EAAG,CAAA,GAAE,KAAK,EAAE,GAAG,GAAE,MAAK,KAAK,OAAO,CAAC,IAAEA,KAAEI,GAAEL,EAAC,GAAEC,GAAE,KAAKO,EAAC,GAAER;AAAI,IAAAA,KAAEK,GAAE,WAAS,KAAK,KAAKJ,MAAGA,GAAE,KAAK,aAAYD,EAAC,GAAEK,GAAE,SAAOL;AAAA,EAAE;AAAA,EAAC,KAAKD,KAAE,KAAK,KAAK,aAAYM,IAAE;AAAC,SAAI,KAAK,OAAO,OAAG,MAAGA,EAAC,GAAEN,MAAGA,OAAI,KAAK,QAAM;AAAC,YAAMM,KAAEN,GAAE;AAAY,MAAAA,GAAE,OAAM,GAAGA,KAAEM;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,aAAaN,IAAE;AAAC,eAAS,KAAK,SAAO,KAAK,OAAKA,IAAE,KAAK,OAAOA,EAAC;AAAA,EAAE;AAAC;AAAC,MAAM,EAAC;AAAA,EAAC,IAAI,UAAS;AAAC,WAAO,KAAK,QAAQ;AAAA,EAAO;AAAA,EAAC,IAAI,OAAM;AAAC,WAAO,KAAK,KAAK;AAAA,EAAI;AAAA,EAAC,YAAYA,IAAEM,IAAEJ,IAAED,IAAEQ,IAAE;AAAC,SAAK,OAAK,GAAE,KAAK,OAAK,GAAE,KAAK,OAAK,QAAO,KAAK,UAAQT,IAAE,KAAK,OAAKM,IAAE,KAAK,OAAKL,IAAE,KAAK,UAAQQ,IAAEP,GAAE,SAAO,KAAG,OAAKA,GAAE,CAAC,KAAG,OAAKA,GAAE,CAAC,KAAG,KAAK,OAAK,MAAMA,GAAE,SAAO,CAAC,EAAE,KAAK,IAAI,QAAM,GAAE,KAAK,UAAQA,MAAG,KAAK,OAAK;AAAA,EAAC;AAAA,EAAC,KAAKF,IAAEM,KAAE,MAAKJ,IAAED,IAAE;AAAC,UAAMQ,KAAE,KAAK;AAAQ,QAAIN,KAAE;AAAG,QAAG,WAASM;AAAE,MAAAT,KAAE,EAAE,MAAKA,IAAEM,IAAE,CAAC,GAAEH,KAAE,CAACK,IAAER,EAAC,KAAGA,OAAI,KAAK,QAAMA,OAAI,GAAEG,OAAI,KAAK,OAAKH;AAAA,SAAO;AAAC,YAAMC,KAAED;AAAE,UAAIK,IAAED;AAAE,WAAIJ,KAAES,GAAE,CAAC,GAAEJ,KAAE,GAAEA,KAAEI,GAAE,SAAO,GAAEJ;AAAI,QAAAD,KAAE,EAAE,MAAKH,GAAEC,KAAEG,EAAC,GAAEC,IAAED,EAAC,GAAED,OAAI,MAAIA,KAAE,KAAK,KAAKC,EAAC,IAAGF,YAAI,CAACK,IAAEJ,EAAC,KAAGA,OAAI,KAAK,KAAKC,EAAC,IAAED,OAAI,IAAEJ,KAAE,IAAEA,OAAI,MAAIA,OAAII,MAAG,MAAIK,GAAEJ,KAAE,CAAC,IAAG,KAAK,KAAKA,EAAC,IAAED;AAAA,IAAC;AAAC,IAAAD,MAAG,CAACF,MAAG,KAAK,EAAED,EAAC;AAAA,EAAC;AAAA,EAAC,EAAEA,IAAE;AAAC,IAAAA,OAAI,IAAE,KAAK,QAAQ,gBAAgB,KAAK,IAAI,IAAE,KAAK,QAAQ,aAAa,KAAK,MAAKA,MAAG,EAAE;AAAA,EAAC;AAAC;AAAC,MAAM,UAAU,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,KAAK,OAAK;AAAA,EAAC;AAAA,EAAC,EAAEA,IAAE;AAAC,SAAK,QAAQ,KAAK,IAAI,IAAEA,OAAI,IAAE,SAAOA;AAAA,EAAC;AAAC;AAAC,MAAM,UAAU,EAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,KAAK,OAAK;AAAA,EAAC;AAAA,EAAC,EAAEA,IAAE;AAAC,SAAK,QAAQ,gBAAgB,KAAK,MAAK,CAAC,CAACA,MAAGA,OAAI,CAAC;AAAA,EAAC;AAAC;AAAC,MAAM,UAAU,EAAC;AAAA,EAAC,YAAYA,IAAEM,IAAEJ,IAAED,IAAEQ,IAAE;AAAC,UAAMT,IAAEM,IAAEJ,IAAED,IAAEQ,EAAC,GAAE,KAAK,OAAK;AAAA,EAAC;AAAA,EAAC,KAAKT,IAAEM,KAAE,MAAK;AAAC,SAAIN,KAAE,EAAE,MAAKA,IAAEM,IAAE,CAAC,KAAG,OAAK;AAAE;AAAO,UAAMJ,KAAE,KAAK,MAAKD,KAAED,OAAI,KAAGE,OAAI,KAAGF,GAAE,YAAUE,GAAE,WAASF,GAAE,SAAOE,GAAE,QAAMF,GAAE,YAAUE,GAAE,SAAQO,KAAET,OAAI,MAAIE,OAAI,KAAGD;AAAG,IAAAA,MAAG,KAAK,QAAQ,oBAAoB,KAAK,MAAK,MAAKC,EAAC,GAAEO,MAAG,KAAK,QAAQ,iBAAiB,KAAK,MAAK,MAAKT,EAAC,GAAE,KAAK,OAAKA;AAAA,EAAC;AAAA,EAAC,YAAYA,IAAE;AAAC,kBAAY,OAAO,KAAK,OAAK,KAAK,KAAK,KAAK,KAAK,SAAS,QAAM,KAAK,SAAQA,EAAC,IAAE,KAAK,KAAK,YAAYA,EAAC;AAAA,EAAC;AAAC;AAAC,MAAM,EAAC;AAAA,EAAC,YAAYA,IAAEM,IAAEJ,IAAE;AAAC,SAAK,UAAQF,IAAE,KAAK,OAAK,GAAE,KAAK,OAAK,QAAO,KAAK,OAAKM,IAAE,KAAK,UAAQJ;AAAA,EAAC;AAAA,EAAC,IAAI,OAAM;AAAC,WAAO,KAAK,KAAK;AAAA,EAAI;AAAA,EAAC,KAAKF,IAAE;AAAC,MAAE,MAAKA,EAAC;AAAA,EAAC;AAAC;AAAM,MAA6D,IAAEA,IAAE;AAAuB,IAAI,GAAE,CAAC,IAAGA,IAAE,oBAAFA,IAAE,kBAAkB,CAAE,IAAE,KAAK,OAAO;AAAE,MAAM,IAAE,CAACA,IAAEM,IAAEJ,OAAI;AAAC,QAAMD,KAAEC,IAAG,gBAAcI;AAAE,MAAIG,KAAER,GAAE;AAAW,MAAG,WAASQ,IAAE;AAAC,UAAMT,KAAEE,IAAG,gBAAc;AAAK,IAAAD,GAAE,aAAWQ,KAAE,IAAI,EAAEH,GAAE,aAAa,KAAIN,EAAC,GAAEA,IAAE,QAAOE,MAAG,CAAA,CAAE;AAAA,EAAC;AAAC,SAAOO,GAAE,KAAKT,EAAC,GAAES;AAAC;ACA16N,MAAMP,MAAE;UAAW,MAAM,UAAUF,IAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,KAAK,gBAAc,EAAC,MAAK,KAAI,GAAE,KAAK,OAAK;AAAA,EAAM;AAAA,EAAC,mBAAkB;;AAAC,UAAMA,KAAE,MAAM,iBAAgB;AAAG,YAAO,UAAK,eAAc,iBAAnB,GAAmB,eAAeA,GAAE,aAAWA;AAAA,EAAC;AAAA,EAAC,OAAOA,IAAE;AAAC,UAAMI,KAAE,KAAK,OAAM;AAAG,SAAK,eAAa,KAAK,cAAc,cAAY,KAAK,cAAa,MAAM,OAAOJ,EAAC,GAAE,KAAK,OAAKC,EAAEG,IAAE,KAAK,YAAW,KAAK,aAAa;AAAA,EAAC;AAAA,EAAC,oBAAmB;AAAC,UAAM,kBAAiB,GAAG,KAAK,MAAM,aAAa,IAAE;AAAA,EAAC;AAAA,EAAC,uBAAsB;AAAC,UAAM,qBAAsB,GAAC,KAAK,MAAM,aAAa,KAAE;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAOA;AAAAA,EAAC;AAAC;AAACE,IAAE,gBAAc,MAAGA,IAAE,WAAW,IAAE,MAAGJ,IAAE,2BAA2B,EAAC,YAAWI,IAAC,CAAC;AAAE,MAAMH,MAAED,IAAE;AAA0BC,MAAI,EAAC,YAAWG,IAAC,CAAC;AAAA,CAAwDJ,IAAE,uBAAFA,IAAE,qBAAqB,KAAI,KAAK,OAAO;ACA5xB,MAAMC,MAAE,EAAC,WAAU,MAAG,MAAK,QAAO,WAAUH,KAAE,SAAQ,OAAG,YAAWC,IAAC,GAAEG,MAAE,CAACJ,KAAEG,KAAEF,IAAEG,OAAI;AAAC,QAAK,EAAC,MAAKC,IAAE,UAASC,GAAC,IAAEF;AAAE,MAAIF,KAAE,WAAW,oBAAoB,IAAII,EAAC;AAAE,MAAG,WAASJ,MAAG,WAAW,oBAAoB,IAAII,IAAEJ,KAAE,oBAAI,KAAG,GAAE,aAAWG,QAAKL,KAAE,OAAO,OAAOA,EAAC,GAAG,UAAQ,OAAIE,GAAE,IAAIE,GAAE,MAAKJ,EAAC,GAAE,eAAaK,IAAE;AAAC,UAAK,EAAC,MAAKF,GAAC,IAAEC;AAAE,WAAM,EAAC,IAAIA,IAAE;AAAC,YAAMC,KAAEJ,GAAE,IAAI,KAAK,IAAI;AAAE,MAAAA,GAAE,IAAI,KAAK,MAAKG,EAAC,GAAE,KAAK,cAAcD,IAAEE,IAAEL,EAAC;AAAA,IAAC,GAAE,KAAKC,IAAE;AAAC,aAAO,WAASA,MAAG,KAAK,EAAEE,IAAE,QAAOH,IAAEC,EAAC,GAAEA;AAAA,IAAC,EAAC;AAAA,EAAC;AAAC,MAAG,aAAWI,IAAE;AAAC,UAAK,EAAC,MAAKF,GAAC,IAAEC;AAAE,WAAO,SAASA,IAAE;AAAC,YAAMC,KAAE,KAAKF,EAAC;AAAE,MAAAF,GAAE,KAAK,MAAKG,EAAC,GAAE,KAAK,cAAcD,IAAEE,IAAEL,EAAC;AAAA,IAAC;AAAA,EAAC;AAAC,QAAM,MAAM,qCAAmCK,EAAC;AAAC;AAAE,SAASA,IAAEL,IAAE;AAAC,SAAM,CAACC,IAAEE,OAAI,YAAU,OAAOA,KAAEC,IAAEJ,IAAEC,IAAEE,EAAC,KAAG,CAACH,IAAEC,IAAEE,OAAI;AAAC,UAAMC,KAAEH,GAAE,eAAeE,EAAC;AAAE,WAAOF,GAAE,YAAY,eAAeE,IAAEH,EAAC,GAAEI,KAAE,OAAO,yBAAyBH,IAAEE,EAAC,IAAE;AAAA,EAAM,GAAGH,IAAEC,IAAEE,EAAC;AAAC;ACAlyB,SAASC,IAAEA,IAAE;AAAC,SAAOJ,IAAE,EAAC,GAAGI,IAAE,OAAM,MAAG,WAAU,MAAE,CAAC;AAAC;ACWhD,MAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAO1B,YAAY,WAAmB;AAC7B,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,KAA4B;AAClC,WAAO,aAAa,QAAQ,GAAG,KAAK,SAAS,IAAI,GAAG,EAAE;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAQ,KAAa,OAAqB;AACxC,iBAAa,QAAQ,GAAG,KAAK,SAAS,IAAI,GAAG,IAAI,KAAK;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,KAAmB;AAC5B,iBAAa,WAAW,GAAG,KAAK,SAAS,IAAI,GAAG,EAAE;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACZ,aAASE,KAAI,GAAGA,KAAI,aAAa,QAAQA,MAAK;AACtC,YAAA,MAAM,aAAa,IAAIA,EAAC;AAC9B,UAAI,OAAO,IAAI,WAAW,GAAG,KAAK,SAAS,GAAG,GAAG;AAC/C,qBAAa,WAAW,GAAG;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AACF;AAEO,MAAM,eAAe;AAAA,EAC1B,cAAc;AAChB;AAEa,MAAA,UAAU,IAAI,eAAe,eAAe;;;;;;;;;;;;ACnElD,MAAM,gBAAgBc,IAAW;AAAA,EAAjC,cAAA;AAAA,UAAA,GAAA,SAAA;AAwDQ,SAAA,KAAA;AAGO,SAAA,WAAA;AAGC,SAAA,YAAA;AAAA,EAAA;AAAA,EAKb,YAAYnB,IAAU;AAC5B,IAAAA,GAAE,eAAe;AACjB,IAAAA,GAAE,gBAAgB;AAEZ,UAAA,QAAQ,IAAI,YAAY,SAAS;AAAA,MACrC,QAAQ;AAAA,QACN,IAAI,KAAK;AAAA,QACT,UAAU,CAAC,KAAK;AAAA,MAClB;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,IAAA,CACX;AACD,SAAK,cAAc,KAAK;AAExB,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ,KAAK,IAAI,CAAC,KAAK,QAAQ;AAAA,IACtC;AAAA,EACF;AAAA,EAEA,SAAS;AACA,WAAAoB;AAAAA;AAAAA,sBAEW,KAAK,EAAE;AAAA,gBACb,KAAK,YAAY,YAAY,EAAE;AAAA,kBAC7B,KAAK,QAAQ;AAAA,iBACd,KAAK,WAAW;AAAA,sBACX,KAAK,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,EAK3B;AACF;AAnGa,QACJ,SAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAuDhBC,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GAvDf,QAwDX,WAAA,MAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,SAAS;AAAA,GA1DhB,QA2DX,WAAA,YAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,SAAS;AAAA,GA7DhB,QA8DX,WAAA,aAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,UAAU;AAAA,GAhEjB,QAiEX,WAAA,WAAA,CAAA;AAoCF,IAAI,CAAC,eAAe,IAAI,cAAc,GAAG;AACxB,iBAAA,OAAO,gBAAgB,OAAO;AAC/C;;;;;ACvGA,MAAM,aAAa,CAAC,YAAiBH;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,MAc/B,OAAO;AAAA;AAAA;AAKN,MAAM,YAAY,WAAWI;AAAAA;AAAAA,CAEnC;AAEY,MAAA,WAAW,WAAWA,yCAA2C;AAEvE,MAAM,YAAY,WAAWA;AAAAA;AAAAA,CAEnC;AAEM,MAAM,YAAY,WAAWA;AAAAA;AAAAA,CAEnC;AAEM,MAAM,eAAe,WAAWA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAKtC;AAEM,MAAM,UAAUJ;AAAAA;AAAAA;AAAAA,qCAGc,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAevB,CAAC;AAAA;AAAA;AAAA;;;;;;;;;;;;ACvDb,MAAM,sBAAsBD,IAAW;AAAA,EA6C5C,cAAc;AACN;AAlBG,SAAA,WAAA;AAGM,SAAA,iBAAA;AAGjB,SAAA,WAAW,EAAE,KAAK,GAAG,MAAM;AAG3B,SAAA,eAAyB,SAAS;AAGP,SAAA,YAAA;AAAA,EAO3B;AAAA,EAEA,oBAAoB;AAClB,UAAM,kBAAkB;AAAA,EAC1B;AAAA,EAEQ,gBAAgB,IAAY,UAAmB;AACrD,QAAI,KAAK,cAAc;AAChB,WAAA,aAAa,IAAI,QAAQ;AAAA,IAChC;AAAA,EACF;AAAA,EAEA,SAAS;AACA,WAAAC;AAAAA,QACH,KAAK,WACHA;AAAAA;AAAAA;AAAAA,0BAGgB,KAAK,iBAAiB,SAAS,MAAM;AAAA,uBACxC,MACP,KAAK,gBAAgB,SAAS,KAAK,iBAAiB,SAAS,SAAS,QAAQ,IAAI,CAAC;AAAA;AAAA,gBAEnF,KAAK,iBAAiB,SAAS,SAAS,WAAW,SAAS;AAAA;AAAA;AAAA;AAAA,0BAIlD,KAAK,QAAQ;AAAA,2BACZ,IAAI;AAAA,uBACR,MAAM,KAAK,gBAAgB,YAAY,KAAK,WAAW,QAAQ,IAAI,CAAC;AAAA;AAAA,gBAE3E,KAAK,WAAW,YAAY,SAAS;AAAA;AAAA,cAG3CA;AAAAA;AAAAA;AAAAA,uBAGa,MAAM,KAAK,gBAAgB,eAAe,IAAI,CAAC;AAAA;AAAA,gBAEtD,YAAY;AAAA;AAAA,WAEjB;AAAA;AAAA,EAET;AACF;AA1Fa,cACJ,SAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AA2BhBC,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,SAAS;AAAA,GA3BhB,cA4BX,WAAA,YAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,SAAS;AAAA,GA9BhB,cA+BX,WAAA,kBAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GAjCf,cAkCX,WAAA,YAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GApCf,cAqCX,WAAA,gBAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GAvCf,cAwCX,WAAA,aAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,UAAU;AAAA,GA1CjB,cA2CX,WAAA,gBAAA,CAAA;AAiDF,IAAI,CAAC,eAAe,IAAI,oBAAoB,GAAG;AAC9B,iBAAA,OAAO,sBAAsB,aAAa;AAC3D;;;;;;;;;;;;;;;;AC1FO,MAAM,eAAeJ,IAAW;AAAA,EAAhC,cAAA;AAAA,UAAA,GAAA,SAAA;AAiDQ,SAAA,KAAA;AAGE,SAAA,OAAA;AAGO,SAAA,cAAA;AAGH,SAAA,WAAA;AAAA,EAAA;AAAA,EAKX,cAAc;AACpB,QAAI,KAAK,UAAU;AACZ,WAAA,SAAS,KAAK,EAAE;AAAA,IACvB;AAEK,SAAA;AAAA,MACH,IAAI,YAAY,iBAAiB;AAAA,QAC/B,QAAQ,EAAE,IAAI,KAAK,GAAG;AAAA,QACtB,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,SAAS;AACA,WAAAC;AAAAA,6CACkC,KAAK,WAAW;AAAA,mBAC1C,KAAK,QAAQ;AAAA,mCACG,KAAK,IAAI;AAAA,UAClC,KAAK,cAAcA,kCAAqC,KAAK,WAAW,SAAS,EAAE;AAAA;AAAA;AAAA,EAG3F;AACF;AAtFa,OACJ,SAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAgDhBC,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GAhDf,OAiDX,WAAA,MAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GAnDf,OAoDX,WAAA,QAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GAtDf,OAuDX,WAAA,eAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GAzDf,OA0DX,WAAA,YAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,UAAU;AAAA,GA5DjB,OA6DX,WAAA,YAAA,CAAA;AA2BK,MAAM,mBAAmBJ,IAAW;AAAA,EAApC,cAAA;AAAA,UAAA,GAAA,SAAA;AAuCL,SAAA,UAAwB;AAGd,SAAA,UAAA;AAGF,SAAA,QAAA;AAAA,EAAA;AAAA,EAKA,mBAAmBnB,IAAgB;AACzC,QAAI,KAAK,gBAAgB;AAClB,WAAA,eAAeA,GAAE,OAAO,EAAE;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,SAAS;AACP,QAAI,KAAK,SAAS;AACT,aAAAoB;AAAAA,IACT;AAEA,QAAI,KAAK,OAAO;AACP,aAAAA,uBAA0B,KAAK,KAAK;AAAA,IAC7C;AAEA,QAAI,CAAC,KAAK,WAAW,KAAK,QAAQ,WAAW,GAAG;AACvC,aAAAA;AAAAA,IACT;AAEM,UAAA,YACJ,KAAK,QAAQ,WAAW,IACpB,gBACA,KAAK,QAAQ,WAAW,IACtB,gBACA;AAED,WAAAA;AAAAA,gCACqB,SAAS;AAAA,UAC/B,KAAK,QAAQ;AAAA,MACb,CAAC,WAAuBA;AAAAA;AAAAA,mBAEf,OAAO,EAAE;AAAA,qBACP,OAAO,IAAI;AAAA,4BACJ,OAAO,eAAe,EAAE;AAAA,yBAC3B,OAAO,QAAQ;AAAA,+BACT,KAAK,kBAAkB;AAAA;AAAA;AAAA,IAAA,CAG7C;AAAA;AAAA;AAAA,EAGP;AACF;AA5Fa,WACJ,SAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAsChBC,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,OAAO;AAAA,GAtCd,WAuCX,WAAA,WAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,SAAS;AAAA,GAzChB,WA0CX,WAAA,WAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GA5Cf,WA6CX,WAAA,SAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,UAAU;AAAA,GA/CjB,WAgDX,WAAA,kBAAA,CAAA;AA+CF,IAAI,CAAC,eAAe,IAAI,YAAY,GAAG;AACtB,iBAAA,OAAO,cAAc,MAAM;AAC5C;AAEA,IAAI,CAAC,eAAe,IAAI,iBAAiB,GAAG;AAC3B,iBAAA,OAAO,mBAAmB,UAAU;AACrD;;;;;;;;;;;;;;;;;AC/LO,MAAM,oBAAoBJ,IAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAuFL,SAAA,UAAwB;AAGd,SAAA,UAAA;AAGF,SAAA,QAAA;AAGC,SAAA,SAAA;AAST,SAAQ,aAAa;AAAA,EAAA;AAAA,EAEb,mBAAmBnB,IAAgB;AACzC,QAAI,KAAK,gBAAgB;AAClB,WAAA,eAAeA,GAAE,OAAO,EAAE;AAAA,IACjC;AAAA,EACF;AAAA,EAEQ,cAAc;AACpB,QAAI,KAAK,SAAS;AAChB,WAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAAA,EAEA,MAAc,eAAe;AACvB,QAAA;AACF,WAAK,UAAU;AACT,YAAA,eAAe,MAAM,MAAM,GAAG,KAAK,UAAU,mBAAmB,KAAK,MAAM,EAAE;AAC7E,YAAA,WAAW,MAAM,aAAa;AACpC,YAAM,gBAAgB,SAAS,IAAI,CAAC,aAAkB;AAAA,QACpD,IAAI,QAAQ;AAAA,QACZ,MAAM,QAAQ,gBAAgB;AAAA,QAC9B,aAAa,QAAQ,gBAAgB;AAAA,QACrC,UACE,QAAQ,gBAAgB,cACxB;AAAA,MACF,EAAA;AACI,YAAA,kBAAkB,cAAc,OAAO,CAAC,WAAuB,CAAC,CAAC,OAAO,IAAI;AAC7E,WAAA,UAAU,CAAC,GAAG,eAAe;AAClC,WAAK,cAAc;AAAA,aACZ,KAAK;AACJ,cAAA,MAAM,gBAAgB,GAAG;AACjC,WAAK,QAAQ;AAAA,IAAA,UACb;AACA,WAAK,UAAU;AACf,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,oBAAoB;AAClB,UAAM,kBAAkB;AAGpB,QAAA,OAAO,iBAAiB,QAAQ;AAC7B,WAAA,SAAS,OAAO,gBAAgB;AAAA,IACvC;AAGA,SAAK,aAAa;AAEd,QAAA,KAAK,cAAc,KAAK,QAAQ;AAClC,WAAK,aAAa;AAAA,IAAA,OACb;AACL,WAAK,UAAU;AACf,WAAK,QAAQ;AAAA,IACf;AAAA,EACF;AAAA,EAEA,SAAS;AACA,WAAAoB;AAAAA,qCAC0B,KAAK,WAAW;AAAA;AAAA,8CAEP,KAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAOzC,KAAK,OAAO;AAAA,qBACZ,KAAK,OAAO;AAAA,mBACd,KAAK,KAAK;AAAA,2BACF,KAAK,kBAAkB;AAAA;AAAA;AAAA;AAAA,EAIhD;AACF;AAtLa,YACJ,SAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAsFhBC,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,OAAO;AAAA,GAtFd,YAuFX,WAAA,WAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,SAAS;AAAA,GAzFhB,YA0FX,WAAA,WAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GA5Ff,YA6FX,WAAA,SAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GA/Ff,YAgGX,WAAA,UAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,UAAU;AAAA,GAlGjB,YAmGX,WAAA,kBAAA,CAAA;AAGAD,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,UAAU;AAAA,GArGjB,YAsGX,WAAA,WAAA,CAAA;AAGQD,kBAAA;AAAA,EADPG,IAAM;AAAA,GAxGI,YAyGH,WAAA,cAAA,CAAA;AA+EV,IAAI,CAAC,eAAe,IAAI,kBAAkB,GAAG;AAC5B,iBAAA,OAAO,oBAAoB,WAAW;AACvD;;;;;AC7LO,MAA6OX,MAAE,CAAAZ,OAAG,WAASA,GAAE;ACApQ,MAAM,IAAE,EAAC,WAAU,GAAE,OAAM,GAAE,UAAS,GAAE,mBAAkB,GAAE,OAAM,GAAE,SAAQ,EAAC,GAAEF,MAAE,CAAAD,OAAG,IAAIC,QAAK,EAAC,iBAAgBD,IAAE,QAAOC,GAAC;AAAG,MAAMK,GAAC;AAAA,EAAC,YAAYN,IAAE;AAAA,EAAE;AAAA,EAAA,IAAI,OAAM;AAAC,WAAO,KAAK,KAAK;AAAA,EAAI;AAAA,EAAC,KAAKA,IAAEC,IAAEK,IAAE;AAAC,SAAK,OAAKN,IAAE,KAAK,OAAKC,IAAE,KAAK,OAAKK;AAAA,EAAC;AAAA,EAAC,KAAKN,IAAEC,IAAE;AAAC,WAAO,KAAK,OAAOD,IAAEC,EAAC;AAAA,EAAC;AAAA,EAAC,OAAOD,IAAEC,IAAE;AAAC,WAAO,KAAK,OAAO,GAAGA,EAAC;AAAA,EAAC;AAAC;ACAxS,MAAM,IAAE,CAACK,IAAEN,OAAI;AAAC,QAAMC,KAAEK,GAAE;AAAK,MAAG,WAASL;AAAE,WAAM;AAAG,aAAUK,MAAKL;AAAE,IAAAK,GAAE,OAAON,IAAE,KAAE,GAAE,EAAEM,IAAEN,EAAC;AAAE,SAAM;AAAE,GAAEG,MAAE,CAAAG,OAAG;AAAC,MAAIN,IAAEC;AAAE,KAAE;AAAC,QAAG,YAAUD,KAAEM,GAAE;AAAM;AAAM,IAAAL,KAAED,GAAE,MAAKC,GAAE,OAAOK,EAAC,GAAEA,KAAEN;AAAA,EAAC,SAAO,MAAIC,IAAG;AAAK,GAAE,IAAE,CAAAK,OAAG;AAAC,WAAQN,IAAEA,KAAEM,GAAE,MAAKA,KAAEN,IAAE;AAAC,QAAIC,KAAED,GAAE;AAAK,QAAG,WAASC;AAAE,MAAAD,GAAE,OAAKC,KAAE,oBAAI;AAAA,aAAYA,GAAE,IAAIK,EAAC;AAAE;AAAM,IAAAL,GAAE,IAAIK,EAAC,GAAE,EAAEN,EAAC;AAAA,EAAC;AAAC;AAAE,SAASS,IAAEH,IAAE;AAAC,aAAS,KAAK,QAAMH,IAAE,IAAI,GAAE,KAAK,OAAKG,IAAE,EAAE,IAAI,KAAG,KAAK,OAAKA;AAAC;AAAC,SAASD,IAAEC,IAAEN,KAAE,OAAGC,KAAE,GAAE;AAAC,QAAMG,KAAE,KAAK,MAAKK,KAAE,KAAK;AAAK,MAAG,WAASA,MAAG,MAAIA,GAAE;AAAK,QAAGT;AAAE,UAAG,MAAM,QAAQI,EAAC;AAAE,iBAAQE,KAAEL,IAAEK,KAAEF,GAAE,QAAOE;AAAI,YAAEF,GAAEE,EAAC,GAAE,KAAE,GAAEH,IAAEC,GAAEE,EAAC,CAAC;AAAA;AAAO,gBAAMF,OAAI,EAAEA,IAAE,KAAE,GAAED,IAAEC,EAAC;AAAA;AAAQ,QAAE,MAAKE,EAAC;AAAC;AAAC,MAAM,IAAE,CAAAA,OAAG;AAAC,EAAAA,GAAE,QAAML,EAAE,UAAQK,GAAE,SAAFA,GAAE,OAAOD,MAAEC,GAAE,SAAFA,GAAE,OAAOG;AAAE;AAAE,MAAM,UAAUT,GAAC;AAAA,EAAC,cAAa;AAAC,UAAM,GAAG,SAAS,GAAE,KAAK,OAAK;AAAA,EAAM;AAAA,EAAC,KAAKM,IAAEN,IAAEC,IAAE;AAAC,UAAM,KAAKK,IAAEN,IAAEC,EAAC,GAAE,EAAE,IAAI,GAAE,KAAK,cAAYK,GAAE;AAAA,EAAI;AAAA,EAAC,KAAKA,IAAEN,KAAE,MAAG;AAAC,IAAAM,OAAI,KAAK,gBAAc,KAAK,cAAYA,IAAEA,KAAE,KAAK,cAAW,IAAK,KAAK,eAAgB,IAAEN,OAAI,EAAE,MAAKM,EAAC,GAAEH,IAAE,IAAI;AAAA,EAAE;AAAA,EAAC,SAASH,IAAE;AAAC,QAAGM,IAAE,KAAK,IAAI;AAAE,WAAK,KAAK,KAAKN,IAAE,IAAI;AAAA,SAAM;AAAC,YAAMM,KAAE,CAAC,GAAG,KAAK,KAAK,IAAI;AAAE,MAAAA,GAAE,KAAK,IAAI,IAAEN,IAAE,KAAK,KAAK,KAAKM,IAAE,MAAK,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,eAAc;AAAA,EAAE;AAAA,EAAA,cAAa;AAAA,EAAE;AAAA;ACAjhC,MAAM,IAAE,MAAI,IAAI;AAAE,MAAM,EAAC;;AAAE,MAAM,IAAE,oBAAI,WAAQD,KAAEH,IAAE,cAAcI,EAAC;AAAA,EAAC,OAAOA,IAAE;AAAC,WAAON;AAAAA,EAAC;AAAA,EAAC,OAAOM,IAAE,CAACJ,EAAC,GAAE;AAAC,UAAMD,KAAEC,OAAI,KAAK;AAAE,WAAOD,MAAG,WAAS,KAAK,KAAG,KAAK,GAAG,MAAM,IAAGA,MAAG,KAAK,OAAK,KAAK,QAAM,KAAK,IAAEC,IAAE,KAAK,KAAGI,GAAE,SAAS,MAAK,KAAK,GAAG,KAAK,KAAGA,GAAE,OAAO,IAAGN;AAAAA,EAAC;AAAA,EAAC,GAAGA,IAAE;AAAC,QAAG,KAAK,gBAAcA,KAAE,SAAQ,cAAY,OAAO,KAAK,GAAE;AAAC,YAAMM,KAAE,KAAK,MAAI;AAAW,UAAIJ,KAAE,EAAE,IAAII,EAAC;AAAE,iBAASJ,OAAIA,KAAE,oBAAI,WAAQ,EAAE,IAAII,IAAEJ,EAAC,IAAG,WAASA,GAAE,IAAI,KAAK,CAAC,KAAG,KAAK,EAAE,KAAK,KAAK,IAAG,MAAM,GAAEA,GAAE,IAAI,KAAK,GAAEF,EAAC,GAAE,WAASA,MAAG,KAAK,EAAE,KAAK,KAAK,IAAGA,EAAC;AAAA,IAAC;AAAM,WAAK,EAAE,QAAMA;AAAA,EAAC;AAAA,EAAC,IAAI,KAAI;AAAC,WAAM,cAAY,OAAO,KAAK,IAAE,EAAE,IAAI,KAAK,MAAI,UAAU,GAAG,IAAI,KAAK,CAAC,IAAE,KAAK,GAAG;AAAA,EAAK;AAAA,EAAC,eAAc;AAAC,SAAK,OAAK,KAAK,MAAI,KAAK,GAAG,MAAM;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,SAAK,GAAG,KAAK,EAAE;AAAA,EAAC;AAAC,CAAC;;;;;;;;;;;;ACKrrB,MAAM,uBAAuBoB,IAAW;AAAA,EAAxC,cAAA;AAAA,UAAA,GAAA,SAAA;AAEL,SAAA,SAAqB,EAAE,SAAS,aAAa,QAAQ,GAAG,UAAU,CAAA;AAGlE,SAAQ,YAAoCO;AAE5C,SAAQ,WAAW;AACnB,SAAQ,iBAAgC;AAAA,EAAA;AAAA,EAgBxC,oBAAoB;AAClB,UAAM,kBAAkB;AACxB,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,uBAAuB;AACrB,UAAM,qBAAqB;AAC3B,SAAK,cAAc;AAAA,EACrB;AAAA,EAEQ,iBAAiB;AACvB,UAAM,UAAU,MAAM;AACpB,WAAK,cAAc;AACd,WAAA,iBAAiB,sBAAsB,OAAO;AAAA,IAAA;AAEhD,SAAA,iBAAiB,sBAAsB,OAAO;AAAA,EACrD;AAAA,EAEQ,gBAAgB;AACtB,QAAI,KAAK,gBAAgB;AACvB,2BAAqB,KAAK,cAAc;AACxC,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA,EAEQ,gBAAgB;AAChB,UAAA,SAAS,KAAK,UAAU;AAC9B,QAAI,CAAC;AAAQ;AAEP,UAAA,MAAM,OAAO,WAAW,IAAI;AAClC,QAAI,CAAC;AAAK;AAGJ,UAAA,MAAM,OAAO,oBAAoB;AACvC,UAAM,eAAe,OAAO;AAC5B,UAAM,gBAAgB,OAAO;AAG7B,WAAO,QAAQ,eAAe;AAC9B,WAAO,SAAS,gBAAgB;AAG5B,QAAA,MAAM,KAAK,GAAG;AAGlB,QAAI,UAAU,GAAG,GAAG,cAAc,aAAa;AAG/C,UAAM,MAAM;AACN,UAAA,WAAW,KAAK,IAAI,IAAI,gBAAgB,KAAK,WAAW,KAAK,OAAO,KAAK,QAAQ;AACvF,UAAM,eAAe,gBAAgB;AAG/B,UAAA,gBAAgB,KAAK,OAAO,YAAY,SAAS,KAAK,OAAO,SAAS,KAAK,OAAO;AAClF,UAAA,kBACJ,KAAK,OAAO,YAAY,SAAS,KAAK,OAAO,WAAW,KAAK,OAAO;AAEtE,QAAI,kBAAkB;AAAG;AAGzB,QAAI,oBAA8B,CAAA;AAC9B,QAAA,mBAAmB,gBAAgB,SAAS,GAAG;AACjD,YAAM,iBAAiB,gBAAgB;AACvC,YAAM,aAAa,KAAK,KAAK,iBAAiB,EAAE;AAChD,UAAI,iBAAiB,CAAA;AAErB,eAASrB,KAAI,GAAGA,KAAI,IAAIA,MAAK;AAC3B,cAAM,QAAQA,KAAI;AAClB,cAAM,MAAM,KAAK,KAAKA,KAAI,KAAK,YAAY,cAAc;AACzD,YAAI,eAAe;AACnB,iBAASsB,KAAI,OAAOA,KAAI,KAAKA,MAAK;AAChB,0BAAA,gBAAgBA,EAAC,KAAK;AAAA,QACxC;AACe,uBAAA,KAAK,EAAE,QAAQtB,IAAG,UAAU,OAAO,QAAQ,KAAK,QAAQ,aAAc,CAAA;AAAA,MACvF;AAEA,qBAAe,KAAK,CAACI,IAAGM,OAAMA,GAAE,SAASN,GAAE,MAAM;AACjD,YAAM,aAAa,eAAe,MAAM,GAAG,CAAC;AACtC,YAAA,WAAW,KAAK,IAAI,GAAG,WAAW,IAAI,CAACN,OAAMA,GAAE,QAAQ,CAAC;AACxD,YAAA,SAAS,KAAK,IAAI,GAAG,WAAW,IAAI,CAACA,OAAMA,GAAE,MAAM,CAAC;AAE1D,UAAI,SAAS,UAAU;AACrB,iBAASE,KAAI,GAAGA,KAAI,KAAK,UAAUA,MAAK;AACtC,gBAAM,WAAW,WAAYA,MAAK,KAAK,WAAW,MAAO,SAAS;AAC5D,gBAAA,QAAQ,KAAK,IAAI,iBAAiB,GAAG,KAAK,MAAM,QAAQ,CAAC;AAC/D,4BAAkBA,EAAC,IAAI,gBAAgB,KAAK,KAAK;AAAA,QACnD;AAAA,MAAA,OACK;AACL,iBAASA,KAAI,GAAGA,KAAI,KAAK,UAAUA,MAAK;AACtC,gBAAM,WAAYA,MAAK,KAAK,WAAW,MAAO,iBAAiB;AACzD,gBAAA,QAAQ,KAAK,IAAI,iBAAiB,GAAG,KAAK,MAAM,QAAQ,CAAC;AAC/D,4BAAkBA,EAAC,IAAI,gBAAgB,KAAK,KAAK;AAAA,QACnD;AAAA,MACF;AAEA,YAAM,mBAAmB,KAAK,IAAI,GAAG,mBAAmB,CAAC;AACzD,YAAM,0BAA0B,KAAK,OAAO,YAAY,SAAS,MAAM;AAEvE,0BAAoB,kBAAkB,IAAI,CAAC,OAAO,UAAU;AAC1D,cAAM,gBAAgB,QAAQ;AAC9B,cAAM,sBAAsB,0BAA2B,SAAS,KAAK,WAAW,KAAM;AACtF,eAAO,KAAK,IAAI,GAAG,gBAAgB,mBAAmB;AAAA,MAAA,CACvD;AAAA,IAAA,OACI;AACD,UAAA,KAAK,OAAO,YAAY,QAAQ;AAClC,iBAASA,KAAI,GAAGA,KAAI,KAAK,UAAUA,MAAK;AAChC,gBAAA,OAAO,KAAK,IAAA,IAAQ;AAC1B,gBAAM,QAAQ,MAAM,MAAM,KAAK,IAAI,OAAOA,KAAI,GAAG;AACjD,4BAAkBA,EAAC,IAAI;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAGA,aAASA,KAAI,GAAGA,KAAI,KAAK,UAAUA,MAAK;AAChC,YAAA,gBACJ,kBAAkB,SAAS,IACvB,kBAAkBA,EAAC,MAAM,SACvB,kBAAkBA,EAAC,IACnB,gBACF;AAEF,UAAA,KAAK,OAAO,YAAY,QAAQ;AAClC,YAAI,YAAY,sBAAsB,gBAAgB,MAAM,GAAG;AAAA,MAAA,OAC1D;AACL,YAAI,YAAY,uBAAuB,gBAAgB,MAAM,GAAG;AAAA,MAClE;AAEA,YAAM,YAAY,KAAK,IAAI,GAAG,gBAAgB,MAAM,YAAY;AAChE,YAAMY,KAAI,gBAAgB,KAAK,WAAWZ,OAAM,WAAW;AAC3D,YAAM,SAAS,WAAW;AAG1B,UAAI,UAAU;AACd,UAAI,OAAOY,KAAI,QAAQ,gBAAgB,IAAI,SAAS;AACpD,UAAI,OAAOA,KAAI,WAAW,QAAQ,gBAAgB,IAAI,SAAS;AAC3D,UAAA;AAAA,QACFA,KAAI;AAAA,QACJ,gBAAgB,IAAI;AAAA,QACpBA,KAAI;AAAA,QACJ,gBAAgB,IAAI,YAAY;AAAA,MAAA;AAElC,UAAI,OAAOA,KAAI,UAAU,gBAAgB,CAAC;AACtC,UAAA,OAAOA,IAAG,gBAAgB,CAAC;AAC/B,UAAI,OAAOA,IAAG,gBAAgB,IAAI,YAAY,MAAM;AAChD,UAAA;AAAA,QACFA;AAAA,QACA,gBAAgB,IAAI;AAAA,QACpBA,KAAI;AAAA,QACJ,gBAAgB,IAAI;AAAA,MAAA;AAEtB,UAAI,KAAK;AAGT,UAAI,UAAU;AACV,UAAA,OAAOA,IAAG,gBAAgB,CAAC;AAC/B,UAAI,OAAOA,KAAI,UAAU,gBAAgB,CAAC;AAC1C,UAAI,OAAOA,KAAI,UAAU,gBAAgB,IAAI,YAAY,MAAM;AAC3D,UAAA;AAAA,QACFA,KAAI;AAAA,QACJ,gBAAgB,IAAI;AAAA,QACpBA,KAAI,WAAW;AAAA,QACf,gBAAgB,IAAI;AAAA,MAAA;AAEtB,UAAI,OAAOA,KAAI,QAAQ,gBAAgB,IAAI,SAAS;AAChD,UAAA;AAAA,QACFA;AAAA,QACA,gBAAgB,IAAI;AAAA,QACpBA;AAAA,QACA,gBAAgB,IAAI,YAAY;AAAA,MAAA;AAE9B,UAAA,OAAOA,IAAG,gBAAgB,CAAC;AAC/B,UAAI,KAAK;AAAA,IACX;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAOG,aAAgBQ,GAAI,KAAK,SAAS,CAAC;AAAA,EAC5C;AACF;AA3Ma,eAUJ,SAASP;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AARhBC,kBAAA;AAAA,EADCC,IAAS,EAAE,MAAM,QAAQ;AAAA,GADf,eAEX,WAAA,UAAA,CAAA;AAGQD,kBAAA;AAAA,EADPG,IAAM;AAAA,GAJI,eAKH,WAAA,aAAA,CAAA;AAwMV,IAAI,CAAC,eAAe,IAAI,qBAAqB,GAAG;AAC/B,iBAAA,OAAO,uBAAuB,cAAc;AAC7D;;;;;;;;;;;;;;;;ACtNO,MAAM,kBAAkBN,IAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA;AAEL,SAAQ,aAAwB,MAAM,CAAC,EAAE,KAAK,KAAK;AAEnD,SAAQ,UAAU;AAClB,SAAQ,iBAAiB;AACzB,SAAQ,UAAU;AAClB,SAAQ,eAAe;AACvB,SAAQ,oBAAoB;AAC5B,SAAQ,gBAAgB;AACxB,SAAQ,gBAAgB;AACxB,SAAQ,QAAQ;AAChB,SAAQ,aAAuB;EAAC;AAAA,EA+BhC,oBAAoB;AAClB,UAAM,kBAAkB;AACxB,SAAK,eAAe;AAEpB,SAAK,MAAM,YAAY,sBAAsB,GAAG,KAAK,cAAc,IAAI;AACvE,SAAK,MAAM,YAAY,cAAc,GAAG,KAAK,OAAO,IAAI;AACxD,SAAK,MAAM,YAAY,eAAe,KAAK,KAAK;AAAA,EAClD;AAAA,EAEA,uBAAuB;AACrB,UAAM,qBAAqB;AAC3B,SAAK,cAAc;AAAA,EACrB;AAAA,EAEQ,iBAAiB;AACvB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEQ,gBAAgB;AACtB,SAAK,WAAW,QAAQ,CAAC,OAAO,OAAO,aAAa,EAAE,CAAC;AACvD,SAAK,aAAa;EACpB;AAAA,EAEQ,kBAAkB;AAExB,SAAK,aAAa,MAAM,KAAK,OAAO,EAAE,KAAK,KAAK;AAGhD,aAASd,KAAI,GAAGA,KAAI,KAAK,SAASA,MAAK;AACrC,YAAM,QAAQA,MAAK,KAAK,oBAAoB,KAAK;AAG3C,YAAA,gBAAgB,OAAO,WAAW,MAAM;AAC5C,aAAK,aAAa,CAAC,GAAG,KAAK,UAAU;AAChC,aAAA,WAAWA,EAAC,IAAI;AAGf,cAAA,cAAc,OAAO,WAAW,MAAM;AAC1C,eAAK,aAAa,CAAC,GAAG,KAAK,UAAU;AAChC,eAAA,WAAWA,EAAC,IAAI;AAAA,QAAA,GACpB,KAAK,iBAAiB;AAEpB,aAAA,WAAW,KAAK,WAAW;AAAA,SAC/B,KAAK;AAEH,WAAA,WAAW,KAAK,aAAa;AAAA,IACpC;AAGA,UAAM,iBAAiB,OAAO;AAAA,MAC5B,MAAM;AACJ,aAAK,gBAAgB;AAAA,MACvB;AAAA,MACA,KAAK,UAAU,KAAK,oBAAoB,KAAK,gBAAgB,KAAK;AAAA,IAAA;AAG/D,SAAA,WAAW,KAAK,cAAc;AAAA,EACrC;AAAA,EAEA,SAAS;AACA,WAAAe;AAAAA;AAAAA,UAED,KAAK,WAAW;AAAA,MAChB,CAAC,aAAaA;AAAAA;AAAAA;AAAAA,kCAGU,WAChB,eAAe,KAAK,YAAY,QAChC,eAAe;AAAA;AAAA;AAAA,IAAA,CAGxB;AAAA;AAAA;AAAA,EAGP;AACF;AAtHa,UAcJ,SAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAZRC,kBAAA;AAAA,EADPG,IAAM;AAAA,GADI,UAEH,WAAA,cAAA,CAAA;AAsHV,IAAI,CAAC,eAAe,IAAI,gBAAgB,GAAG;AAC1B,iBAAA,OAAO,kBAAkB,SAAS;AACnD;;;;;AC3HO,MAAM,wBAAwBN,IAAW;AAAA,EAkB9C,SAAS;AACA,WAAAC;AAAAA;AAAAA;AAAAA;AAAAA,EAIT;AACF;AAxBa,gBACJ,SAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAyBlB,IAAI,CAAC,eAAe,IAAI,sBAAsB,GAAG;AAChC,iBAAA,OAAO,wBAAwB,eAAe;AAC/D;;;;;;;;;;;;;;;;ACfO,MAAM,kBAAkBF,IAAW;AAAA,EAgCxC,cAAc;AACN;AAhCC,SAAQ,SAAS;AACjB,SAAQ,WAAW;AACnB,SAAQ,WAQI;AACZ,SAAQ,OAA8D;AACtE,SAAQ,QAAkB,SAAS;AACnC,SAAQ,oBAA0C;AAClD,SAAQ,kBAAkB;AAC1B,SAAQ,aAAa;AACrB,SAAQ,aAAa;AACrB,SAAQ,gBAAmC;AAC3C,SAAQ,SAAgF;AAAA,MAC/F,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU,CAAC;AAAA,IAAA;AAGb,SAAQ,eAA8B;AACtC,SAAQ,YAA2B;AACnC,SAAQ,UAAyB;AACjC,SAAQ,uBAA4B;AAEpC,SAAQ,qBAAoC;AAI1C,SAAK,iBAAiB;AAItB,UAAM,eAAe,MAAM;AACzB,UAAI,KAAK,iBAAiB,KAAK,gBAAgB,KAAK,aAAa,KAAK,SAAS;AAC7E,aAAK,gBAAgB;AAAA,MACvB;AAAA,IAAA;AAIK,WAAA,iBAAiB,gBAAgB,YAAY;AAC7C,WAAA,iBAAiB,YAAY,YAAY;AAAA,EAClD;AAAA;AAAA,EAGQ,mBAAmB;AACzB,QAAI,OAAO,iBAAiB;AAC1B,WAAK,SAAS,OAAO,gBAAgB,UAAU,KAAK;AACpD,WAAK,WAAW,OAAO,gBAAgB,YAAY,KAAK;AACxD,WAAK,OAAO,OAAO,gBAAgB,QAAQ,KAAK;AAG5C,UAAA,OAAO,gBAAgB,aAAa,QAAW;AAC5C,aAAA,WAAW,OAAO,gBAAgB;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAAA,EAkIA,MAAc,WAAW,cAAsB;AAE7C,QAAI,KAAK,eAAe;AACtB,cAAQ,IAAI,2BAA2B;AACvC;AAAA,IACF;AAEI,QAAA;AACI,YAAA,UAAU,IAAI,WAAW;AAAA,QAC7B,WAAW;AAAA,MAAA,CACZ;AACD,UAAI,CAAC,SAAS;AACZ,gBAAQ,MAAM,0BAA0B;AACxC,aAAK,QAAQ,SAAS;AACtB,aAAK,gBAAgB;AACrB;AAAA,MACF;AAEQ,cAAA,GAAG,gBAAgB,CAAC,SAAS;AACnC,aAAK,QAAQ,KAAK;AAEd,YAAA,KAAK,aAAa,SAAS,OAAO;AACpC,eAAK,oBAAoB,KAAK;AAAA,QAChC;AAAA,MAAA,CACD;AAEO,cAAA,GAAG,UAAU,CAAC,SAAS;AAC7B,aAAK,SAAS;AAAA,MAAA,CACf;AAGO,cAAA,GAAG,SAAS,CAAC,SAAS;AACpB,gBAAA,MAAM,kBAAkB,KAAK,KAAK;AAC1C,aAAK,QAAQ,SAAS;AACtB,aAAK,gBAAgB;AAAA,MAAA,CACtB;AAEK,YAAA,iBAAiB,MAAM,QAAQ;AAErC,UAAI,gBAAgB;AAClB,aAAK,eAAe;AACpB,aAAK,YAAY,eAAe;AAChC,aAAK,UAAU,eAAe;AAAA,MAChC;AAEA,WAAK,gBAAgB;AAAA,aACd,OAAO;AACN,cAAA,MAAM,4BAA4B,KAAK;AAC/C,WAAK,QAAQ,SAAS;AACtB,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,MAAc,mBAAmB,cAAsB;AAErD,QAAI,KAAK,eAAe;AACtB,cAAQ,IAAI,yDAAyD;AACrE;AAAA,IACF;AAEA,SAAK,kBAAkB;AACvB,SAAK,QAAQ,SAAS;AAChB,UAAA,KAAK,WAAW,YAAY;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc,uBAAuB;AAC/B,QAAA;AACF,YAAM,cAAc,KAAK;AAAA,QACvB,QAAQ,QAAQ,aAAa,YAAY,KAAK;AAAA,MAAA;AAEhD,YAAM,EAAE,cAAc,WAAW,SAAS,eAAe,SAAa,IAAA;AAEtE,UAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS;AAC3C;AAAA,MACF;AAGA,UAAI,eAAe;AACX,cAAA,aAAa,IAAI,KAAK,aAAa;AACrC,YAAA,aAAiB,oBAAA,QAAQ;AAC3B,eAAK,oBAAoB;AACzB;AAAA,QACF;AAAA,MACF;AAEA,WAAK,QAAQ,SAAS;AAGhB,YAAA,UAAU,IAAI,WAAW;AAAA,QAC7B,WAAW;AAAA,MAAA,CACZ;AAED,UAAI,CAAC,SAAS;AACZ,gBAAQ,MAAM,0BAA0B;AACxC,aAAK,QAAQ,SAAS;AACtB,aAAK,oBAAoB;AACzB;AAAA,MACF;AAEQ,cAAA,GAAG,gBAAgB,CAAC,SAAS;AACnC,aAAK,QAAQ,KAAK;AAEd,YAAA,KAAK,aAAa,SAAS,OAAO;AACpC,eAAK,oBAAoB,KAAK;AAAA,QAChC;AAAA,MAAA,CACD;AAEO,cAAA,GAAG,UAAU,CAAC,SAAS;AAC7B,aAAK,SAAS;AAAA,MAAA,CACf;AAGO,cAAA,GAAG,SAAS,CAAC,SAAS;AACpB,gBAAA,MAAM,kBAAkB,KAAK,KAAK;AAC1C,aAAK,QAAQ,SAAS;AACtB,aAAK,gBAAgB;AACrB,aAAK,oBAAoB;AAAA,MAAA,CAC1B;AAED,YAAM,cAAc,MAAM,QAAQ,UAAU,SAAS,WAAW,QAAQ;AAExE,UAAI,aAAa;AACf,aAAK,gBAAgB;AAErB,aAAK,eAAe;AACpB,aAAK,YAAY;AACjB,aAAK,UAAU;AACf,aAAK,QAAQ;AACb,aAAK,oBAAoB;AAAA,MAAA,OACpB;AAEL,aAAK,oBAAoB;AAAA,MAC3B;AAAA,aACO,OAAO;AACN,cAAA,MAAM,kCAAkC,KAAK;AACrD,WAAK,QAAQ,SAAS;AACtB,WAAK,oBAAoB;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,sBAAsB;AACpB,YAAA,WAAW,aAAa,YAAY;AAAA,EAC9C;AAAA,EAEA,oBAAoB;AAClB,UAAM,kBAAkB;AACxB,SAAK,iBAAiB;AAGjB,SAAA,aAAa,YAAY,KAAK,QAAQ;AAE3C,SAAK,uBAAuB,KAAK,gBAAgB,KAAK,IAAI;AACnD,WAAA,iBAAiB,gBAAgB,KAAK,oBAAoB;AAC1D,WAAA,iBAAiB,YAAY,KAAK,oBAAoB;AAE7D,SAAK,qBAAqB;AAAA,EAC5B;AAAA;AAAA,EAGQ,kBAAkB;AACxB,QAAI,CAAC,KAAK;AAAe;AACzB,QAAI,KAAK,gBAAgB,KAAK,aAAa,KAAK,SAAS;AACjD,YAAA,6BAAa;AACnB,aAAO,WAAW,OAAO,WAAW,IAAI,CAAC;AAEzC,YAAM,cAA2B;AAAA,QAC/B,cAAc,KAAK;AAAA,QACnB,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,UAAU,KAAK,qBAAqB,KAAK;AAAA,QACzC,eAAe,OAAO,YAAY;AAAA,MAAA;AAGpC,cAAQ,QAAQ,aAAa,cAAc,KAAK,UAAU,WAAW,CAAC;AAAA,IACxE;AAAA,EACF;AAAA,EAEA,uBAAuB;AACjB,QAAA,KAAK,uBAAuB,MAAM;AAC7B,aAAA,aAAa,KAAK,kBAAkB;AAAA,IAC7C;AAGA,QAAI,KAAK,sBAAsB;AACtB,aAAA,oBAAoB,gBAAgB,KAAK,oBAAoB;AAC7D,aAAA,oBAAoB,YAAY,KAAK,oBAAoB;AAAA,IAClE;AACA,UAAM,qBAAqB;AAAA,EAC7B;AAAA,EAEQ,mBAAmB;AACzB,SAAK,aAAa;AAClB,SAAK,aAAa;AAAA,EACpB;AAAA,EAEQ,mBAAmB;AACzB,SAAK,aAAa;AACd,QAAA,KAAK,uBAAuB,MAAM;AAC7B,aAAA,aAAa,KAAK,kBAAkB;AAAA,IAC7C;AACK,SAAA,qBAAqB,OAAO,WAAW,MAAM;AAC5C,UAAA,CAAC,KAAK,YAAY;AACpB,aAAK,aAAa;AAAA,MACpB;AACA,WAAK,qBAAqB;AAAA,OACzB,GAAG;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,mBAAmB;AACzB,SAAK,oBAAoB;AAEzB,SAAK,eAAe;AACpB,SAAK,YAAY;AACjB,SAAK,UAAU;AAGf,QAAI,KAAK,eAAe;AACtB,WAAK,cAAc;AACnB,WAAK,gBAAgB;AAAA,IACvB;AACA,SAAK,QAAQ,SAAS;AAAA,EACxB;AAAA,EAEQ,iBAAiB,IAAY,cAAuB;AAC1D,QAAI,OAAO,eAAe;AACxB,WAAK,kBAAkB;AACvB;AAAA,IACF;AAEMU,QAAA,CAAC,IAAI,YAAY,CAAC,EACrB,KAAK,CAAC,SAAS,IAAI,GAAG,MAAM;AAC3B,WAAK,eAAe;IACrB,CAAA,EACA,KAAK,CAAC,SAAS,KAAK,GAAG,MAAM;AAC5B,WAAK,eAAe;IACrB,CAAA,EACA,KAAK,CAAC,YAAY,KAAK,GAAG,MAAM;AAC/B,WAAK,iBAAiB;AAAA,IAAA,CACvB,EACA,UAAU,MAAM;AACf;AAAA,IAAA,CACD;AAAA,EACL;AAAA,EAEA,SAAS;AACP,SAAK,iBAAiB;AAEtB,QAAI,CAAC,KAAK;AAAiB,aAAAC;AAE3B,UAAM,cAAcD,IAAM,KAAK,KAAK,EACjC,KAAK,SAAS,SAAS,MAAMT,oCAAuC,EACpE,KAAK,SAAS,aAAa,MAAMA,gDAAmD,EACpF;AAAA,MACCW,IAAE,MAAM,SAAS,eAAe,SAAS,cAAc;AAAA,MACvD,MAAMX,iCAAoC,KAAK,MAAM;AAAA,IAAA,EAEtD,KAAK,SAAS,QAAQ,MAAM,OAAO,EACnC,UAAU,MAAM,OAAO;AAEnB,WAAAA;AAAAA;AAAAA,kCAEuB,KAAK,UAAU,SAAS,iBAClD,KAAK,UAAU,SAAS,iBACpB,UACA,EAAE,IAAI,KAAK,UAAU,SAAS,SAAS,KAAK,aAAa,YAAY,EAAE,IAAI,KAC5E,UAAU,SAAS,cAClB,gBACA,EAAE,IAAI,KAAK,UAAU,SAAS,gBAAgB,kBAAkB,EAAE;AAAA,sBACxD,KAAK,gBAAgB;AAAA,sBACrB,KAAK,gBAAgB;AAAA;AAAA,UAEjC,WAAW;AAAA,UACX,KAAK,cAAc,KAAK,UAAU,SAAS,cACzCA;AAAAA;AAAAA,4BAEgB,KAAK,UAAU,SAAS,KAAK;AAAA,4BAC7B,KAAK,QAAQ;AAAA;AAAA,gCAET,KAAK,KAAK;AAAA,gCACV,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAAA;AAAA,gBAGpDU,CAAO;AAAA;AAAA,QAEX,KAAK,kBACHV;AAAAA,uBACa,MAAO,KAAK,kBAAkB,KAAM;AAAA,8BAC7B,KAAK,mBAAmB,KAAK,IAAI,CAAC;AAAA,sBAC1C,KAAK,MAAM;AAAA,kCAEvBU,CAAO;AAAA;AAAA,EAEf;AACF;AA/ea,UA+DJ,SAAST;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AA9DC,gBAAA;AAAA,EAAhBI,IAAM;AAAA,GADI,UACM,WAAA,UAAA,CAAA;AACA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAFI,UAEM,WAAA,YAAA,CAAA;AACA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAHI,UAGM,WAAA,YAAA,CAAA;AASA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAZI,UAYM,WAAA,QAAA,CAAA;AACA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAbI,UAaM,WAAA,SAAA,CAAA;AACA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAdI,UAcM,WAAA,qBAAA,CAAA;AACA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAfI,UAeM,WAAA,mBAAA,CAAA;AACA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAhBI,UAgBM,WAAA,cAAA,CAAA;AACA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAjBI,UAiBM,WAAA,cAAA,CAAA;AACA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAlBI,UAkBM,WAAA,iBAAA,CAAA;AACA,gBAAA;AAAA,EAAhBA,IAAM;AAAA,GAnBI,UAmBM,WAAA,UAAA,CAAA;AA8dnB,IAAI,CAAC,eAAe,IAAI,YAAY,GAAG;AACtB,iBAAA,OAAO,cAAc,SAAS;AAC/C;;;;;","x_google_ignoreList":[0,1,2,3,4,5,12,13,14,15]}
|
package/dist/modular/core.js
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
import { A, E, O, S } from "./chunks/
|
|
2
|
-
import { ObiSession } from "./chunks/session-c3b70ffb.js";
|
|
3
|
-
import { ObiAssistant, ObiSDK } from "./index.js";
|
|
4
|
-
import "./chunks/mitt-3c1f932d.js";
|
|
1
|
+
import { A, E, a, O, S } from "./chunks/index-2d0b05af.js";
|
|
5
2
|
export {
|
|
6
3
|
A as API_BASE_URL,
|
|
7
4
|
E as EventType,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
O as ObiSDKConfigSchema,
|
|
11
|
-
ObiSession,
|
|
5
|
+
a as ObiSDKConfigSchema,
|
|
6
|
+
O as ObiSession,
|
|
12
7
|
S as SDKState
|
|
13
8
|
};
|
|
14
9
|
//# sourceMappingURL=core.js.map
|
package/dist/modular/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"core.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
package/dist/modular/index.js
CHANGED
|
@@ -1,237 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
this.state = SDKState.READY;
|
|
6
|
-
this.emitter = mitt();
|
|
7
|
-
this.voiceEnabled = false;
|
|
8
|
-
this.screenCaptureEnabled = false;
|
|
9
|
-
this.config = ObiSDKConfigSchema.parse(config);
|
|
10
|
-
if (this.config.debug) {
|
|
11
|
-
console.log("ObiSDK initialized with config:", this.config);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
async init() {
|
|
15
|
-
try {
|
|
16
|
-
if (this.config.enableVoice) {
|
|
17
|
-
await this.initVoice();
|
|
18
|
-
}
|
|
19
|
-
if (this.config.enableScreenCapture) {
|
|
20
|
-
await this.initScreenCapture();
|
|
21
|
-
}
|
|
22
|
-
this.setState(SDKState.READY);
|
|
23
|
-
this.emitter.emit(EventType.READY);
|
|
24
|
-
if (this.config.debug) {
|
|
25
|
-
console.log("ObiSDK ready");
|
|
26
|
-
}
|
|
27
|
-
} catch (error) {
|
|
28
|
-
const sdkError = {
|
|
29
|
-
code: "init_failed",
|
|
30
|
-
message: "Failed to initialize SDK",
|
|
31
|
-
details: error
|
|
32
|
-
};
|
|
33
|
-
this.handleError(sdkError);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
async initVoice() {
|
|
37
|
-
if (!window.navigator.mediaDevices || !window.navigator.mediaDevices.getUserMedia) {
|
|
38
|
-
throw new Error("Voice recording not supported in this browser");
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
await window.navigator.mediaDevices.getUserMedia({ audio: true });
|
|
42
|
-
this.voiceEnabled = true;
|
|
43
|
-
if (this.config.debug) {
|
|
44
|
-
console.log("Voice capabilities initialized");
|
|
45
|
-
}
|
|
46
|
-
} catch (error) {
|
|
47
|
-
throw new Error(`Microphone access denied: ${error}`);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async initScreenCapture() {
|
|
51
|
-
if (!window.navigator.mediaDevices || !window.navigator.mediaDevices.getDisplayMedia) {
|
|
52
|
-
throw new Error("Screen capture not supported in this browser");
|
|
53
|
-
}
|
|
54
|
-
this.screenCaptureEnabled = true;
|
|
55
|
-
if (this.config.debug) {
|
|
56
|
-
console.log("Screen capture capabilities initialized");
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Set the SDK state and emit state change event
|
|
61
|
-
*/
|
|
62
|
-
setState(newState) {
|
|
63
|
-
this.state = newState;
|
|
64
|
-
this.emitter.emit(EventType.STATE_CHANGE, newState);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Handle SDK errors
|
|
68
|
-
*/
|
|
69
|
-
handleError(error) {
|
|
70
|
-
this.setState(SDKState.ERROR);
|
|
71
|
-
this.emitter.emit(EventType.ERROR, error);
|
|
72
|
-
if (this.config.debug) {
|
|
73
|
-
console.error("ObiSDK error:", error);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Start voice recording
|
|
78
|
-
*/
|
|
79
|
-
async startVoiceRecording() {
|
|
80
|
-
if (!this.voiceEnabled) {
|
|
81
|
-
this.handleError({
|
|
82
|
-
code: "voice_disabled",
|
|
83
|
-
message: "Voice recording is not enabled or available"
|
|
84
|
-
});
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
try {
|
|
88
|
-
this.setState(SDKState.AGENT_SPEAKING);
|
|
89
|
-
this.emitter.emit(EventType.VOICE_START);
|
|
90
|
-
if (this.config.debug) {
|
|
91
|
-
console.log("Voice recording started");
|
|
92
|
-
}
|
|
93
|
-
} catch (error) {
|
|
94
|
-
this.handleError({
|
|
95
|
-
code: "voice_start_failed",
|
|
96
|
-
message: "Failed to start voice recording",
|
|
97
|
-
details: error
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Stop voice recording
|
|
103
|
-
*/
|
|
104
|
-
async stopVoiceRecording() {
|
|
105
|
-
if (this.state === SDKState.READY) {
|
|
106
|
-
return { transcript: void 0 };
|
|
107
|
-
}
|
|
108
|
-
try {
|
|
109
|
-
const result = { transcript: "Sample transcript" };
|
|
110
|
-
this.setState(SDKState.READY);
|
|
111
|
-
this.emitter.emit(EventType.VOICE_STOP, result);
|
|
112
|
-
if (this.config.debug) {
|
|
113
|
-
console.log("Voice recording stopped:", result);
|
|
114
|
-
}
|
|
115
|
-
return result;
|
|
116
|
-
} catch (error) {
|
|
117
|
-
this.handleError({
|
|
118
|
-
code: "voice_stop_failed",
|
|
119
|
-
message: "Failed to stop voice recording",
|
|
120
|
-
details: error
|
|
121
|
-
});
|
|
122
|
-
return { transcript: void 0 };
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Start screen capture
|
|
127
|
-
*/
|
|
128
|
-
async startScreenCapture() {
|
|
129
|
-
if (!this.screenCaptureEnabled) {
|
|
130
|
-
this.handleError({
|
|
131
|
-
code: "screen_capture_disabled",
|
|
132
|
-
message: "Screen capture is not enabled or available"
|
|
133
|
-
});
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
try {
|
|
137
|
-
this.setState(SDKState.AGENT_SPEAKING);
|
|
138
|
-
this.emitter.emit(EventType.SCREEN_CAPTURE_START);
|
|
139
|
-
if (this.config.debug) {
|
|
140
|
-
console.log("Screen capture started");
|
|
141
|
-
}
|
|
142
|
-
} catch (error) {
|
|
143
|
-
this.handleError({
|
|
144
|
-
code: "screen_capture_start_failed",
|
|
145
|
-
message: "Failed to start screen capture",
|
|
146
|
-
details: error
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Stop screen capture
|
|
152
|
-
*/
|
|
153
|
-
async stopScreenCapture() {
|
|
154
|
-
if (this.state === SDKState.READY) {
|
|
155
|
-
return { screenshot: void 0 };
|
|
156
|
-
}
|
|
157
|
-
try {
|
|
158
|
-
const result = { screenshot: "data:image/png;base64,..." };
|
|
159
|
-
this.setState(SDKState.READY);
|
|
160
|
-
this.emitter.emit(EventType.SCREEN_CAPTURE_STOP, result);
|
|
161
|
-
if (this.config.debug) {
|
|
162
|
-
console.log("Screen capture stopped");
|
|
163
|
-
}
|
|
164
|
-
return result;
|
|
165
|
-
} catch (error) {
|
|
166
|
-
this.handleError({
|
|
167
|
-
code: "screen_capture_stop_failed",
|
|
168
|
-
message: "Failed to stop screen capture",
|
|
169
|
-
details: error
|
|
170
|
-
});
|
|
171
|
-
return { screenshot: void 0 };
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Subscribe to SDK events
|
|
176
|
-
*/
|
|
177
|
-
on(event, handler) {
|
|
178
|
-
this.emitter.on(event, handler);
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Unsubscribe from SDK events
|
|
182
|
-
*/
|
|
183
|
-
off(event, handler) {
|
|
184
|
-
this.emitter.off(event, handler);
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Get current SDK state
|
|
188
|
-
*/
|
|
189
|
-
getState() {
|
|
190
|
-
return this.state;
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Cleanup and dispose SDK resources
|
|
194
|
-
*/
|
|
195
|
-
dispose() {
|
|
196
|
-
this.emitter.all.clear();
|
|
197
|
-
if (this.config.debug) {
|
|
198
|
-
console.log("ObiSDK disposed");
|
|
199
|
-
}
|
|
200
|
-
}
|
|
1
|
+
import { O as ObiWidget } from "./chunks/obi-widget-0970cbbe.js";
|
|
2
|
+
import { E, S } from "./chunks/index-2d0b05af.js";
|
|
3
|
+
if (!customElements.get("obi-widget")) {
|
|
4
|
+
customElements.define("obi-widget", ObiWidget);
|
|
201
5
|
}
|
|
202
|
-
|
|
203
|
-
if (!
|
|
204
|
-
customElements.define("obi-widget", ObiWidget);
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
class ObiAssistant {
|
|
208
|
-
/**
|
|
209
|
-
* Initialize the Obi Widget with the provided configuration
|
|
210
|
-
* This creates and mounts the widget to the page
|
|
211
|
-
*/
|
|
212
|
-
static init(config) {
|
|
213
|
-
registerWidget();
|
|
6
|
+
function mountWidget() {
|
|
7
|
+
if (!document.querySelector("obi-widget")) {
|
|
214
8
|
const widget = document.createElement("obi-widget");
|
|
215
|
-
if (config.apiKey) {
|
|
216
|
-
widget.apiKey = config.apiKey;
|
|
217
|
-
}
|
|
218
|
-
if (config.position) {
|
|
219
|
-
widget.position = config.position;
|
|
220
|
-
}
|
|
221
|
-
if (config.user) {
|
|
222
|
-
widget.user = config.user;
|
|
223
|
-
}
|
|
224
|
-
window.obiWidgetConfig = config;
|
|
225
9
|
document.body.appendChild(widget);
|
|
226
|
-
console.log("Obi Widget
|
|
227
|
-
return widget;
|
|
10
|
+
console.log("Obi Widget mounted");
|
|
228
11
|
}
|
|
229
12
|
}
|
|
13
|
+
function processQueue() {
|
|
14
|
+
const w = window;
|
|
15
|
+
if (w.ObiSDK && Array.isArray(w.ObiSDK.q)) {
|
|
16
|
+
w.ObiSDK.q.forEach((args) => {
|
|
17
|
+
const [command, config] = args;
|
|
18
|
+
if (command === "update" && config) {
|
|
19
|
+
w.obiWidgetConfig = {
|
|
20
|
+
...w.obiWidgetConfig,
|
|
21
|
+
...config
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
w.ObiSDK.q = [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function initializeObiWidget() {
|
|
29
|
+
mountWidget();
|
|
30
|
+
processQueue();
|
|
31
|
+
}
|
|
32
|
+
initializeObiWidget();
|
|
230
33
|
export {
|
|
231
|
-
EventType,
|
|
232
|
-
ObiAssistant,
|
|
233
|
-
ObiSDK,
|
|
34
|
+
E as EventType,
|
|
234
35
|
ObiWidget,
|
|
235
|
-
SDKState
|
|
36
|
+
S as SDKState
|
|
236
37
|
};
|
|
237
38
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/core/sdk.ts","../../src/core/assistant.ts"],"sourcesContent":["import mitt from \"mitt\"\n\nimport { EventType, ObiError, ObiSDKConfig, ObiSDKConfigSchema, SDKState } from \"./types\"\n\ntype Events = {\n [EventType.READY]: void\n [EventType.ERROR]: ObiError\n [EventType.VOICE_START]: void\n [EventType.VOICE_STOP]: { transcript?: string }\n [EventType.SCREEN_CAPTURE_START]: void\n [EventType.SCREEN_CAPTURE_STOP]: { screenshot?: string }\n [EventType.STATE_CHANGE]: SDKState\n}\n\nexport class ObiSDK {\n private config: ObiSDKConfig\n private state: SDKState = SDKState.READY\n private emitter = mitt<Events>()\n private voiceEnabled = false\n private screenCaptureEnabled = false\n\n constructor(config: Partial<ObiSDKConfig> = {}) {\n this.config = ObiSDKConfigSchema.parse(config)\n\n if (this.config.debug) {\n console.log(\"ObiSDK initialized with config:\", this.config)\n }\n }\n\n async init(): Promise<void> {\n try {\n if (this.config.enableVoice) {\n await this.initVoice()\n }\n\n if (this.config.enableScreenCapture) {\n await this.initScreenCapture()\n }\n\n this.setState(SDKState.READY)\n this.emitter.emit(EventType.READY)\n\n if (this.config.debug) {\n console.log(\"ObiSDK ready\")\n }\n } catch (error) {\n const sdkError: ObiError = {\n code: \"init_failed\",\n message: \"Failed to initialize SDK\",\n details: error,\n }\n this.handleError(sdkError)\n }\n }\n\n private async initVoice(): Promise<void> {\n // Check if browser supports required voice APIs\n if (!window.navigator.mediaDevices || !window.navigator.mediaDevices.getUserMedia) {\n throw new Error(\"Voice recording not supported in this browser\")\n }\n\n try {\n // Request microphone permissions\n await window.navigator.mediaDevices.getUserMedia({ audio: true })\n this.voiceEnabled = true\n\n if (this.config.debug) {\n console.log(\"Voice capabilities initialized\")\n }\n } catch (error) {\n throw new Error(`Microphone access denied: ${error}`)\n }\n }\n\n private async initScreenCapture(): Promise<void> {\n // Check if browser supports required screen capture APIs\n if (!window.navigator.mediaDevices || !window.navigator.mediaDevices.getDisplayMedia) {\n throw new Error(\"Screen capture not supported in this browser\")\n }\n\n this.screenCaptureEnabled = true\n\n if (this.config.debug) {\n console.log(\"Screen capture capabilities initialized\")\n }\n }\n\n /**\n * Set the SDK state and emit state change event\n */\n private setState(newState: SDKState): void {\n this.state = newState\n this.emitter.emit(EventType.STATE_CHANGE, newState)\n }\n\n /**\n * Handle SDK errors\n */\n private handleError(error: ObiError): void {\n this.setState(SDKState.ERROR)\n this.emitter.emit(EventType.ERROR, error)\n\n if (this.config.debug) {\n console.error(\"ObiSDK error:\", error)\n }\n }\n\n /**\n * Start voice recording\n */\n async startVoiceRecording(): Promise<void> {\n if (!this.voiceEnabled) {\n this.handleError({\n code: \"voice_disabled\",\n message: \"Voice recording is not enabled or available\",\n })\n return\n }\n\n try {\n this.setState(SDKState.AGENT_SPEAKING)\n this.emitter.emit(EventType.VOICE_START)\n\n if (this.config.debug) {\n console.log(\"Voice recording started\")\n }\n } catch (error) {\n this.handleError({\n code: \"voice_start_failed\",\n message: \"Failed to start voice recording\",\n details: error,\n })\n }\n }\n\n /**\n * Stop voice recording\n */\n async stopVoiceRecording(): Promise<{ transcript?: string }> {\n if (this.state === SDKState.READY) {\n return { transcript: undefined }\n }\n\n try {\n const result = { transcript: \"Sample transcript\" } // Placeholder for real implementation\n\n this.setState(SDKState.READY)\n this.emitter.emit(EventType.VOICE_STOP, result)\n\n if (this.config.debug) {\n console.log(\"Voice recording stopped:\", result)\n }\n\n return result\n } catch (error) {\n this.handleError({\n code: \"voice_stop_failed\",\n message: \"Failed to stop voice recording\",\n details: error,\n })\n return { transcript: undefined }\n }\n }\n\n /**\n * Start screen capture\n */\n async startScreenCapture(): Promise<void> {\n if (!this.screenCaptureEnabled) {\n this.handleError({\n code: \"screen_capture_disabled\",\n message: \"Screen capture is not enabled or available\",\n })\n return\n }\n\n try {\n this.setState(SDKState.AGENT_SPEAKING)\n this.emitter.emit(EventType.SCREEN_CAPTURE_START)\n\n if (this.config.debug) {\n console.log(\"Screen capture started\")\n }\n } catch (error) {\n this.handleError({\n code: \"screen_capture_start_failed\",\n message: \"Failed to start screen capture\",\n details: error,\n })\n }\n }\n\n /**\n * Stop screen capture\n */\n async stopScreenCapture(): Promise<{ screenshot?: string }> {\n if (this.state === SDKState.READY) {\n return { screenshot: undefined }\n }\n\n try {\n const result = { screenshot: \"data:image/png;base64,...\" } // Placeholder for real implementation\n\n this.setState(SDKState.READY)\n this.emitter.emit(EventType.SCREEN_CAPTURE_STOP, result)\n\n if (this.config.debug) {\n console.log(\"Screen capture stopped\")\n }\n\n return result\n } catch (error) {\n this.handleError({\n code: \"screen_capture_stop_failed\",\n message: \"Failed to stop screen capture\",\n details: error,\n })\n return { screenshot: undefined }\n }\n }\n\n /**\n * Subscribe to SDK events\n */\n on<E extends EventType>(event: E, handler: (data: Events[E]) => void): void {\n this.emitter.on(event, handler as any)\n }\n\n /**\n * Unsubscribe from SDK events\n */\n off<E extends EventType>(event: E, handler: (data: Events[E]) => void): void {\n this.emitter.off(event, handler as any)\n }\n\n /**\n * Get current SDK state\n */\n getState(): SDKState {\n return this.state\n }\n\n /**\n * Cleanup and dispose SDK resources\n */\n dispose(): void {\n this.emitter.all.clear()\n\n if (this.config.debug) {\n console.log(\"ObiSDK disposed\")\n }\n }\n}\n","/**\n * ObiAssistant provides a simple way to initialize the Obi Widget\n * with a single method call.\n */\n\nimport { ObiWidget } from \"../ui/components/obi-widget\"\n\n// Define the configuration interface\nexport interface ObiAssistantConfig {\n apiKey: string\n position?: \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\"\n user?: {\n id: string\n email?: string\n metadata?: Record<string, any>\n }\n}\n\n// Register the custom element if it hasn't been registered yet\nconst registerWidget = () => {\n if (!customElements.get(\"obi-widget\")) {\n customElements.define(\"obi-widget\", ObiWidget)\n }\n}\n\n/**\n * ObiAssistant class with static init method for easier initialization\n */\nexport class ObiAssistant {\n /**\n * Initialize the Obi Widget with the provided configuration\n * This creates and mounts the widget to the page\n */\n static init(config: ObiAssistantConfig): HTMLElement {\n // Make sure the widget is defined\n registerWidget()\n\n // Create widget instance\n const widget = document.createElement(\"obi-widget\") as ObiWidget\n\n // Set API key\n if (config.apiKey) {\n widget.apiKey = config.apiKey\n }\n\n // Set position if provided\n if (config.position) {\n widget.position = config.position\n }\n\n // Set user information if provided\n if (config.user) {\n widget.user = config.user\n }\n\n // Save config for access from anywhere\n window.obiWidgetConfig = config\n\n // Add the widget to the document body\n document.body.appendChild(widget)\n\n console.log(\"Obi Widget initialized and mounted\")\n\n return widget\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/core/init.ts"],"sourcesContent":["import { ObiWidget } from \"../ui/components/obi-widget\"\n\nif (!customElements.get(\"obi-widget\")) {\n customElements.define(\"obi-widget\", ObiWidget)\n}\n\n// Mount the widget if not already present\nfunction mountWidget() {\n if (!document.querySelector(\"obi-widget\")) {\n const widget = document.createElement(\"obi-widget\")\n document.body.appendChild(widget)\n console.log(\"Obi Widget mounted\")\n }\n}\n\n// Optionally process a queue if you want to support it\nfunction processQueue() {\n const w = window as any\n if (w.ObiSDK && Array.isArray(w.ObiSDK.q)) {\n // Process each command in the queue\n w.ObiSDK.q.forEach((args: any[]) => {\n const [command, config] = args\n if (command === \"update\" && config) {\n w.obiWidgetConfig = {\n ...w.obiWidgetConfig,\n ...config,\n }\n }\n })\n w.ObiSDK.q = []\n }\n}\n\n// Main init\nexport function initializeObiWidget() {\n mountWidget()\n processQueue()\n}\n\n// Auto-initialize\ninitializeObiWidget()\n"],"names":[],"mappings":";;AAEA,IAAI,CAAC,eAAe,IAAI,YAAY,GAAG;AACtB,iBAAA,OAAO,cAAc,SAAS;AAC/C;AAGA,SAAS,cAAc;AACrB,MAAI,CAAC,SAAS,cAAc,YAAY,GAAG;AACnC,UAAA,SAAS,SAAS,cAAc,YAAY;AACzC,aAAA,KAAK,YAAY,MAAM;AAChC,YAAQ,IAAI,oBAAoB;AAAA,EAClC;AACF;AAGA,SAAS,eAAe;AACtB,QAAM,IAAI;AACV,MAAI,EAAE,UAAU,MAAM,QAAQ,EAAE,OAAO,CAAC,GAAG;AAEzC,MAAE,OAAO,EAAE,QAAQ,CAAC,SAAgB;AAC5B,YAAA,CAAC,SAAS,MAAM,IAAI;AACtB,UAAA,YAAY,YAAY,QAAQ;AAClC,UAAE,kBAAkB;AAAA,UAClB,GAAG,EAAE;AAAA,UACL,GAAG;AAAA,QAAA;AAAA,MAEP;AAAA,IAAA,CACD;AACC,MAAA,OAAO,IAAI;EACf;AACF;AAGO,SAAS,sBAAsB;AACxB;AACC;AACf;AAGA,oBAAoB;"}
|