obi-sdk 0.1.10 → 0.2.0

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.
@@ -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]}
@@ -1,14 +1,9 @@
1
- import { A, E, O, S } from "./chunks/obi-widget-ff350828.js";
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
- ObiAssistant,
9
- ObiSDK,
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
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"core.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,237 +1,29 @@
1
- import { S as SDKState, O as ObiSDKConfigSchema, E as EventType, b as ObiWidget } from "./chunks/obi-widget-ff350828.js";
2
- import { m as mitt } from "./chunks/mitt-3c1f932d.js";
3
- class ObiSDK {
4
- constructor(config = {}) {
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
- const registerWidget = () => {
203
- if (!customElements.get("obi-widget")) {
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 initialized and mounted");
227
- return widget;
10
+ console.log("Obi Widget mounted");
11
+ }
12
+ }
13
+ function processQueue() {
14
+ const w = window;
15
+ if (w.ObiSDK && Array.isArray(w.ObiSDK.q)) {
16
+ w.ObiSDK.q = [];
228
17
  }
229
18
  }
19
+ function initializeObiWidget() {
20
+ mountWidget();
21
+ processQueue();
22
+ }
23
+ initializeObiWidget();
230
24
  export {
231
- EventType,
232
- ObiAssistant,
233
- ObiSDK,
25
+ E as EventType,
234
26
  ObiWidget,
235
- SDKState
27
+ S as SDKState
236
28
  };
237
29
  //# 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 commands as needed...\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;AAEvC,MAAA,OAAO,IAAI;EACf;AACF;AAGO,SAAS,sBAAsB;AACxB;AACC;AACf;AAGA,oBAAoB;"}