tas-uell-sdk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +304 -0
- package/esm2020/lib/components/tas-btn/tas-btn.component.mjs +123 -0
- package/esm2020/lib/components/tas-floating-call/tas-floating-call.component.mjs +79 -0
- package/esm2020/lib/components/tas-videocall/tas-videocall.component.mjs +160 -0
- package/esm2020/lib/interfaces/tas.interfaces.mjs +2 -0
- package/esm2020/lib/services/tas.service.mjs +265 -0
- package/esm2020/lib/tas.config.mjs +14 -0
- package/esm2020/lib/tas.module.mjs +73 -0
- package/esm2020/public-api.mjs +16 -0
- package/esm2020/tas-uell-sdk.mjs +5 -0
- package/fesm2015/tas-uell-sdk.mjs +705 -0
- package/fesm2015/tas-uell-sdk.mjs.map +1 -0
- package/fesm2020/tas-uell-sdk.mjs +697 -0
- package/fesm2020/tas-uell-sdk.mjs.map +1 -0
- package/lib/components/tas-btn/tas-btn.component.d.ts +24 -0
- package/lib/components/tas-floating-call/tas-floating-call.component.d.ts +19 -0
- package/lib/components/tas-videocall/tas-videocall.component.d.ts +32 -0
- package/lib/interfaces/tas.interfaces.d.ts +31 -0
- package/lib/services/tas.service.d.ts +65 -0
- package/lib/tas.config.d.ts +51 -0
- package/lib/tas.module.d.ts +34 -0
- package/package.json +50 -0
- package/public-api.d.ts +7 -0
- package/tas-uell-sdk.d.ts +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tas-uell-sdk.mjs","sources":["../../src/lib/tas.config.ts","../../src/lib/services/tas.service.ts","../../src/lib/components/tas-videocall/tas-videocall.component.ts","../../src/lib/components/tas-videocall/tas-videocall.component.html","../../src/lib/components/tas-btn/tas-btn.component.ts","../../src/lib/components/tas-btn/tas-btn.component.html","../../src/lib/components/tas-floating-call/tas-floating-call.component.ts","../../src/lib/components/tas-floating-call/tas-floating-call.component.html","../../src/lib/tas.module.ts","../../src/public-api.ts","../../src/tas-uell-sdk.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\n/**\n * Configuration interface for the TAS SDK\n */\nexport interface TasConfig {\n /**\n * TokBox/Vonage API Key\n */\n tokBoxApiKey: string;\n\n /**\n * Base URL for the TAS API endpoints\n */\n apiBaseUrl: string;\n}\n\n/**\n * Interface for HTTP client that the SDK will use.\n * Implement this interface in your app and provide it to the SDK.\n */\nexport interface TasHttpClient {\n post<T>(\n url: string,\n body: any,\n options?: { headers?: Record<string, string> }\n ): Observable<T>;\n}\n\n/**\n * User data interface required by TasButtonComponent\n */\nexport interface TasUserData {\n id: string | number;\n name: string;\n surname: string;\n}\n\n/**\n * User data provider interface - implement this to provide user data to the SDK\n */\nexport interface TasUserDataProvider {\n getUserData(): TasUserData | null;\n getTenantId(): string | null;\n}\n\n/**\n * Injection token for TAS configuration\n */\nexport const TAS_CONFIG = new InjectionToken<TasConfig>(\"TAS_CONFIG\");\n\n/**\n * Injection token for HTTP client\n */\nexport const TAS_HTTP_CLIENT = new InjectionToken<TasHttpClient>(\n \"TAS_HTTP_CLIENT\"\n);\n\n/**\n * Injection token for user data provider\n */\nexport const TAS_USER_DATA_PROVIDER = new InjectionToken<TasUserDataProvider>(\n \"TAS_USER_DATA_PROVIDER\"\n);\n","import { Injectable, Inject, Optional } from \"@angular/core\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { catchError, map } from \"rxjs/operators\";\nimport * as OT from \"@opentok/client\";\nimport {\n TAS_CONFIG,\n TAS_HTTP_CLIENT,\n TasConfig,\n TasHttpClient,\n} from \"../tas.config\";\nimport {\n CreateRoomRequest,\n CreateRoomResponse,\n GenerateTokenRequest,\n GenerateTokenResponse,\n} from \"../interfaces/tas.interfaces\";\n\nexport enum CallState {\n IDLE = \"IDLE\",\n CONNECTING = \"CONNECTING\",\n CONNECTED = \"CONNECTED\",\n DISCONNECTED = \"DISCONNECTED\",\n ERROR = \"ERROR\",\n}\n\nexport enum ViewMode {\n FULLSCREEN = \"FULLSCREEN\",\n PIP = \"PIP\",\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class TasService {\n private session: OT.Session | null = null;\n private publisher: OT.Publisher | null = null;\n private subscribers: OT.Subscriber[] = [];\n\n private callStateSubject = new BehaviorSubject<CallState>(CallState.IDLE);\n public callState$ = this.callStateSubject.asObservable();\n\n private viewModeSubject = new BehaviorSubject<ViewMode>(ViewMode.FULLSCREEN);\n public viewMode$ = this.viewModeSubject.asObservable();\n\n private isMutedSubject = new BehaviorSubject<boolean>(false);\n public isMuted$ = this.isMutedSubject.asObservable();\n\n // Session info for PiP mode restoration\n private currentSessionId: string | null = null;\n private currentToken: string | null = null;\n\n constructor(\n @Optional() @Inject(TAS_CONFIG) private config: TasConfig | null,\n @Optional() @Inject(TAS_HTTP_CLIENT) private httpClient: TasHttpClient | null\n ) {\n if (!this.config || !this.httpClient) {\n console.warn(\n \"TasService: Configuration not provided. Make sure to use TasModule.forRoot()\"\n );\n }\n }\n\n // Getters\n public get currentSession(): OT.Session | null {\n return this.session;\n }\n\n public get currentPublisher(): OT.Publisher | null {\n return this.publisher;\n }\n\n public get currentSubscribers(): OT.Subscriber[] {\n return this.subscribers;\n }\n\n public get sessionId(): string | null {\n return this.currentSessionId;\n }\n\n public get token(): string | null {\n return this.currentToken;\n }\n\n public get isMuted(): boolean {\n return this.isMutedSubject.getValue();\n }\n\n // View Mode Methods\n public setViewMode(mode: ViewMode): void {\n this.viewModeSubject.next(mode);\n }\n\n public enterPipMode(): void {\n this.viewModeSubject.next(ViewMode.PIP);\n }\n\n public exitPipMode(): void {\n this.viewModeSubject.next(ViewMode.FULLSCREEN);\n }\n\n public isPipMode(): boolean {\n return this.viewModeSubject.getValue() === ViewMode.PIP;\n }\n\n // Audio Control\n public toggleMute(): void {\n if (this.publisher) {\n const newMuteState = !this.isMutedSubject.getValue();\n this.publisher.publishAudio(!newMuteState);\n this.isMutedSubject.next(newMuteState);\n }\n }\n\n public setMute(muted: boolean): void {\n if (this.publisher) {\n this.publisher.publishAudio(!muted);\n this.isMutedSubject.next(muted);\n }\n }\n\n // Session Management\n public disconnectSession(): void {\n if (this.session) {\n this.session.disconnect();\n this.session = null;\n }\n this.publisher = null;\n this.subscribers = [];\n this.currentSessionId = null;\n this.currentToken = null;\n this.isMutedSubject.next(false);\n this.viewModeSubject.next(ViewMode.FULLSCREEN);\n this.callStateSubject.next(CallState.DISCONNECTED);\n }\n\n public isCallActive(): boolean {\n return this.callStateSubject.getValue() === CallState.CONNECTED;\n }\n\n // API Methods\n public createRoom(\n payload: CreateRoomRequest\n ): Observable<CreateRoomResponse> {\n if (!this.config || !this.httpClient) {\n throw new Error(\"TasService not configured. Use TasModule.forRoot()\");\n }\n const url = `${this.config.apiBaseUrl}/v2/room`;\n return this.httpClient.post<CreateRoomResponse>(url, payload).pipe(\n map((response) => response as CreateRoomResponse),\n catchError((error) => {\n console.error(\"TAS Service: createRoom failed\", error);\n throw error;\n })\n );\n }\n\n public generateToken(\n payload: GenerateTokenRequest\n ): Observable<GenerateTokenResponse> {\n if (!this.config || !this.httpClient) {\n throw new Error(\"TasService not configured. Use TasModule.forRoot()\");\n }\n const url = `${this.config.apiBaseUrl}/v2/room/token`;\n return this.httpClient.post<GenerateTokenResponse>(url, payload).pipe(\n map((response: any) => response as GenerateTokenResponse),\n catchError((error) => {\n console.error(\"TAS Service: generateToken failed\", error);\n throw error;\n })\n );\n }\n\n /**\n * Connects to a TokBox video session\n */\n public connectSession(\n sessionId: string,\n token: string,\n publisherElement: string,\n subscriberElement: string\n ): Promise<void> {\n this.callStateSubject.next(CallState.CONNECTING);\n this.currentSessionId = sessionId;\n this.currentToken = token;\n\n return new Promise((resolve, reject) => { \n if (!this.config) {\n this.callStateSubject.next(CallState.ERROR);\n reject(new Error(\"TasService not configured. Use TasModule.forRoot()\"));\n return;\n }\n\n if (!OT.checkSystemRequirements()) {\n this.callStateSubject.next(CallState.ERROR);\n reject(new Error(\"Browser not compatible with TokBox\"));\n return;\n }\n\n this.session = OT.initSession(this.config.tokBoxApiKey, sessionId);\n\n // Handle new streams (remote participants joining)\n this.session.on(\"streamCreated\", (event) => {\n const subscriber = this.session?.subscribe(\n event.stream,\n subscriberElement,\n {\n insertMode: \"append\",\n width: \"100%\",\n height: \"100%\",\n },\n (error) => {\n if (error) {\n console.error(\"Error subscribing to stream:\", error);\n }\n }\n );\n if (subscriber) {\n this.subscribers.push(subscriber);\n }\n });\n\n // Handle streams ending (remote participants leaving)\n this.session.on(\"streamDestroyed\", (event) => {\n this.subscribers = this.subscribers.filter(\n (sub) => sub.stream?.streamId !== event.stream.streamId\n );\n });\n\n // Handle session disconnection\n this.session.on(\"sessionDisconnected\", () => {\n this.callStateSubject.next(CallState.DISCONNECTED);\n });\n\n // Connect to session\n this.session.connect(token, (error) => {\n if (error) {\n console.error(\"Error connecting to session:\", error);\n this.callStateSubject.next(CallState.ERROR);\n reject(error);\n return;\n }\n\n // Initialize publisher (local video)\n this.publisher = OT.initPublisher(\n publisherElement,\n {\n insertMode: \"append\",\n width: \"100%\",\n height: \"100%\",\n },\n (err) => {\n if (err) {\n console.error(\"Error initializing publisher:\", err);\n this.callStateSubject.next(CallState.ERROR);\n reject(err);\n return;\n }\n\n // Publish to session\n this.session?.publish(this.publisher!, (pubErr) => {\n if (pubErr) {\n console.error(\"Error publishing stream:\", pubErr);\n this.callStateSubject.next(CallState.ERROR);\n reject(pubErr);\n } else {\n this.callStateSubject.next(CallState.CONNECTED);\n resolve();\n }\n });\n }\n );\n });\n });\n }\n\n // Video Element Movement Methods\n public movePublisherTo(newContainerId: string): void {\n if (!this.publisher) return;\n\n const publisherElement = this.publisher.element;\n const newContainer = document.getElementById(newContainerId);\n\n if (publisherElement && newContainer) {\n newContainer.appendChild(publisherElement);\n }\n }\n\n public moveSubscribersTo(newContainerId: string): void {\n const newContainer = document.getElementById(newContainerId);\n if (!newContainer) return;\n\n this.subscribers.forEach((subscriber) => {\n const subscriberElement = subscriber.element;\n if (subscriberElement) {\n newContainer.appendChild(subscriberElement);\n }\n });\n }\n\n /**\n * Moves the main video (subscriber if available, otherwise publisher) to a container.\n * Used for PiP mode to show only one video.\n */\n public moveMainVideoTo(newContainerId: string): void {\n const newContainer = document.getElementById(newContainerId);\n if (!newContainer) return;\n\n // Prefer remote video (subscriber) as main\n if (this.subscribers.length > 0 && this.subscribers[0].element) {\n newContainer.appendChild(this.subscribers[0].element);\n return;\n }\n\n // Fall back to local video (publisher)\n if (this.publisher?.element) {\n newContainer.appendChild(this.publisher.element);\n }\n }\n\n /**\n * Moves videos back to fullscreen containers\n */\n public moveVideosToFullscreen(): void {\n this.moveSubscribersTo(\"subscriber-container\");\n this.movePublisherTo(\"publisher-container\");\n }\n}\n","import {\n Component,\n OnInit,\n OnDestroy,\n Input,\n ViewChild,\n ElementRef,\n AfterViewInit,\n} from \"@angular/core\";\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\nimport { TasService, CallState, ViewMode } from \"../../services/tas.service\";\nimport { Subscription } from \"rxjs\";\nimport interact from \"interactjs\";\n\n@Component({\n selector: \"tas-videocall\",\n templateUrl: \"./tas-videocall.component.html\",\n styleUrls: [\"./tas-videocall.component.scss\"],\n})\nexport class TasVideocallComponent implements OnInit, OnDestroy, AfterViewInit {\n @Input() sessionId!: string;\n @Input() token!: string;\n @Input() isReturningFromPip: boolean = false;\n\n @ViewChild(\"publisherContainer\") publisherContainer!: ElementRef;\n @ViewChild(\"subscriberContainer\") subscriberContainer!: ElementRef;\n\n public isPublisherSmall = true;\n public callState = CallState.IDLE;\n public isMuted = false;\n\n private subscriptions = new Subscription();\n\n constructor(\n public activeModal: NgbActiveModal,\n private tasService: TasService\n ) {}\n\n ngOnInit(): void {\n this.setupSubscriptions();\n this.initializeCall();\n }\n\n ngAfterViewInit(): void {\n this.initInteract();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n\n if (!this.tasService.isPipMode()) {\n this.tasService.disconnectSession();\n }\n\n interact(\".publisher-view\").unset();\n }\n\n // Public Methods\n hangUp(): void {\n this.tasService.disconnectSession();\n }\n\n toggleMute(): void {\n this.tasService.toggleMute();\n }\n\n minimize(): void {\n this.tasService.moveMainVideoTo(\"pip-main-video\");\n setTimeout(() => this.tasService.enterPipMode(), 50);\n }\n\n toggleSwap(): void {\n this.isPublisherSmall = !this.isPublisherSmall;\n this.resetVideoPositions();\n setTimeout(() => this.initInteract());\n }\n\n onDoubleClick(): void {\n this.toggleSwap();\n }\n\n // Private Methods\n private setupSubscriptions(): void {\n this.subscriptions.add(\n this.tasService.callState$.subscribe((state) => {\n this.callState = state;\n if (state === CallState.DISCONNECTED) {\n this.activeModal.close(\"hangup\");\n }\n })\n );\n\n this.subscriptions.add(\n this.tasService.viewMode$.subscribe((mode) => {\n if (mode === ViewMode.PIP) {\n this.activeModal.close(\"pip\");\n }\n })\n );\n\n this.subscriptions.add(\n this.tasService.isMuted$.subscribe((muted) => {\n this.isMuted = muted;\n })\n );\n }\n\n private initializeCall(): void {\n if (this.isReturningFromPip) {\n setTimeout(() => this.tasService.moveVideosToFullscreen(), 100);\n } else if (this.sessionId && this.token) {\n this.tasService\n .connectSession(\n this.sessionId,\n this.token,\n \"publisher-container\",\n \"subscriber-container\"\n )\n .catch((err) => {\n console.error(\"Error connecting to video call:\", err);\n });\n }\n }\n\n private resetVideoPositions(): void {\n const publisherEl = this.publisherContainer?.nativeElement as HTMLElement;\n const subscriberEl = this.subscriberContainer?.nativeElement as HTMLElement;\n\n if (publisherEl) {\n publisherEl.removeAttribute(\"style\");\n publisherEl.removeAttribute(\"data-x\");\n publisherEl.removeAttribute(\"data-y\");\n }\n\n if (subscriberEl) {\n subscriberEl.removeAttribute(\"style\");\n subscriberEl.removeAttribute(\"data-x\");\n subscriberEl.removeAttribute(\"data-y\");\n }\n }\n\n private initInteract(): void {\n interact(\".publisher-view\").unset();\n\n interact(\".publisher-view\")\n .draggable({\n inertia: true,\n modifiers: [\n interact.modifiers.restrictRect({\n restriction: \"parent\",\n endOnly: true,\n }),\n ],\n autoScroll: true,\n listeners: {\n move: (event) => {\n const target = event.target;\n const x =\n (parseFloat(target.getAttribute(\"data-x\")) || 0) + event.dx;\n const y =\n (parseFloat(target.getAttribute(\"data-y\")) || 0) + event.dy;\n\n target.style.transform = `translate(${x}px, ${y}px)`;\n target.setAttribute(\"data-x\", String(x));\n target.setAttribute(\"data-y\", String(y));\n },\n },\n })\n .resizable({\n edges: { left: false, right: true, bottom: true, top: false },\n listeners: {\n move: (event) => {\n const target = event.target;\n let x = parseFloat(target.getAttribute(\"data-x\")) || 0;\n let y = parseFloat(target.getAttribute(\"data-y\")) || 0;\n\n target.style.width = `${event.rect.width}px`;\n target.style.height = `${event.rect.height}px`;\n\n x += event.deltaRect.left;\n y += event.deltaRect.top;\n\n target.style.transform = `translate(${x}px, ${y}px)`;\n target.setAttribute(\"data-x\", String(x));\n target.setAttribute(\"data-y\", String(y));\n },\n },\n modifiers: [\n interact.modifiers.restrictEdges({ outer: \"parent\" }),\n interact.modifiers.restrictSize({ min: { width: 150, height: 100 } }),\n interact.modifiers.aspectRatio({ ratio: \"preserve\" }),\n ],\n inertia: true,\n });\n }\n}\n","<div class=\"tas-videocall-container\">\n <div\n id=\"subscriber-container\"\n [class.subscriber-view]=\"isPublisherSmall\"\n [class.publisher-view]=\"!isPublisherSmall\"\n #subscriberContainer\n (dblclick)=\"onDoubleClick()\"\n ></div>\n\n <div\n id=\"publisher-container\"\n [class.publisher-view]=\"isPublisherSmall\"\n [class.subscriber-view]=\"!isPublisherSmall\"\n #publisherContainer\n (dblclick)=\"onDoubleClick()\"\n ></div>\n\n <div class=\"controls-container\">\n <button class=\"btn swap-btn\" (click)=\"toggleSwap()\" title=\"Cambiar vista\">\n <i class=\"fa fa-refresh\"></i>\n </button>\n <button\n class=\"btn pip-btn\"\n (click)=\"minimize()\"\n title=\"Minimizar (Picture in Picture)\"\n >\n <i class=\"fa fa-compress\"></i>\n </button>\n <button\n class=\"btn mute-btn\"\n [class.muted]=\"isMuted\"\n (click)=\"toggleMute()\"\n [title]=\"isMuted ? 'Activar micrófono' : 'Silenciar micrófono'\"\n >\n <i\n class=\"fa\"\n [class.fa-microphone]=\"!isMuted\"\n [class.fa-microphone-slash]=\"isMuted\"\n ></i>\n </button>\n <button class=\"btn hangup-btn\" (click)=\"hangUp()\" title=\"Colgar\">\n <i class=\"fa fa-phone\" style=\"transform: rotate(135deg)\"></i>\n </button>\n </div>\n</div>\n","import { Component, OnInit, OnDestroy, Inject, Optional } from \"@angular/core\";\nimport { TasService, ViewMode } from \"../../services/tas.service\";\nimport {\n TAS_USER_DATA_PROVIDER,\n TasUserDataProvider,\n TasUserData,\n} from \"../../tas.config\";\nimport { NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\nimport { TasVideocallComponent } from \"../tas-videocall/tas-videocall.component\";\nimport { Subscription } from \"rxjs\";\nimport { switchMap } from \"rxjs/operators\";\n\n@Component({\n selector: \"tas-btn\",\n templateUrl: \"./tas-btn.component.html\",\n styleUrls: [\"./tas-btn.component.scss\"],\n})\nexport class TasButtonComponent implements OnInit, OnDestroy {\n isLoading = false;\n\n private userData: TasUserData | null = null;\n private tenantId: string | null = null;\n private subscriptions = new Subscription();\n private currentModalRef: NgbModalRef | null = null;\n\n constructor(\n private tasService: TasService,\n private modalService: NgbModal,\n @Optional()\n @Inject(TAS_USER_DATA_PROVIDER)\n private userDataProvider: TasUserDataProvider | null\n ) {}\n\n ngOnInit(): void {\n this.loadUserData();\n this.setupViewModeSubscription();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n onClick(): void {\n if (!this.userData || !this.tenantId) {\n console.error(\"User data or tenant ID not available\");\n return;\n }\n\n this.isLoading = true;\n\n this.subscriptions.add(\n this.tasService\n .createRoom({\n tenant: this.tenantId,\n userId: this.userData.id.toString(),\n product: \"Uell\",\n record: true,\n roomType: \"TAS\",\n type: \"SPONTANEOUS\",\n })\n .pipe(\n switchMap((response) => {\n const sessionId = response.content.sessionId;\n return this.tasService\n .generateToken({\n sessionId: sessionId,\n name: this.userData!.name,\n lastname: this.userData!.surname,\n })\n .pipe(\n switchMap((tokenResponse) => {\n return [\n {\n sessionId,\n token: tokenResponse.content.token,\n },\n ];\n })\n );\n })\n )\n .subscribe({\n next: ({ sessionId, token }) => {\n this.isLoading = false;\n this.openVideoCallModal(sessionId, token);\n },\n error: (err) => {\n console.error(\"Error starting video call:\", err);\n this.isLoading = false;\n },\n })\n );\n }\n\n // Private Methods\n private loadUserData(): void {\n if (!this.userDataProvider) {\n console.warn(\"TasButtonComponent: UserDataProvider not configured\");\n return;\n }\n this.userData = this.userDataProvider.getUserData();\n this.tenantId = this.userDataProvider.getTenantId();\n }\n\n private setupViewModeSubscription(): void {\n this.subscriptions.add(\n this.tasService.viewMode$.subscribe((mode) => {\n if (\n mode === ViewMode.FULLSCREEN &&\n this.tasService.isCallActive() &&\n !this.currentModalRef\n ) {\n const sessionId = this.tasService.sessionId;\n const token = this.tasService.token;\n if (sessionId && token) {\n this.openVideoCallModal(sessionId, token, true);\n }\n }\n })\n );\n }\n\n private openVideoCallModal(\n sessionId: string,\n token: string,\n isReturningFromPip: boolean = false\n ): void {\n this.currentModalRef = this.modalService.open(TasVideocallComponent, {\n size: \"xl\",\n windowClass: \"tas-video-modal\",\n backdrop: \"static\",\n keyboard: false,\n });\n\n this.currentModalRef.componentInstance.sessionId = sessionId;\n this.currentModalRef.componentInstance.token = token;\n this.currentModalRef.componentInstance.isReturningFromPip =\n isReturningFromPip;\n\n this.currentModalRef.result.then(\n () => {\n this.currentModalRef = null;\n },\n () => {\n this.currentModalRef = null;\n }\n );\n }\n}\n","<button\n type=\"button\"\n class=\"btn btn-primary boton\"\n (click)=\"onClick()\"\n [disabled]=\"isLoading\"\n>\n <i class=\"fa fa-video-camera\" aria-hidden=\"true\" *ngIf=\"!isLoading\"></i>\n <span *ngIf=\"!isLoading\"> Iniciar TAS</span>\n <span *ngIf=\"isLoading\"> Processing...</span>\n</button>\n","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { TasService, CallState, ViewMode } from \"../../services/tas.service\";\nimport { Subscription } from \"rxjs\";\nimport interact from \"interactjs\";\n\n@Component({\n selector: \"tas-floating-call\",\n templateUrl: \"./tas-floating-call.component.html\",\n styleUrls: [\"./tas-floating-call.component.scss\"],\n})\nexport class TasFloatingCallComponent implements OnInit, OnDestroy {\n public isVisible = false;\n public isMuted = false;\n\n private subscriptions = new Subscription();\n\n constructor(private tasService: TasService) {}\n\n ngOnInit(): void {\n this.setupSubscriptions();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n interact(\".tas-floating-container\").unset();\n }\n\n // Public Methods\n onExpand(): void {\n this.tasService.exitPipMode();\n }\n\n onHangUp(): void {\n this.tasService.disconnectSession();\n }\n\n toggleMute(): void {\n this.tasService.toggleMute();\n }\n\n // Private Methods\n private setupSubscriptions(): void {\n this.subscriptions.add(\n this.tasService.callState$.subscribe((state) => {\n if (state === CallState.DISCONNECTED) {\n this.isVisible = false;\n }\n })\n );\n\n this.subscriptions.add(\n this.tasService.viewMode$.subscribe((mode) => {\n this.isVisible =\n mode === ViewMode.PIP && this.tasService.isCallActive();\n if (this.isVisible) {\n setTimeout(() => this.initInteract(), 100);\n }\n })\n );\n\n this.subscriptions.add(\n this.tasService.isMuted$.subscribe((muted) => {\n this.isMuted = muted;\n })\n );\n }\n\n private initInteract(): void {\n interact(\".tas-floating-container\").unset();\n\n interact(\".tas-floating-container\").draggable({\n inertia: true,\n modifiers: [\n interact.modifiers.restrictRect({\n restriction: \"body\",\n endOnly: true,\n }),\n ],\n autoScroll: false,\n listeners: {\n move: (event) => {\n const target = event.target;\n const x = (parseFloat(target.getAttribute(\"data-x\")) || 0) + event.dx;\n const y = (parseFloat(target.getAttribute(\"data-y\")) || 0) + event.dy;\n\n target.style.transform = `translate(${x}px, ${y}px)`;\n target.setAttribute(\"data-x\", String(x));\n target.setAttribute(\"data-y\", String(y));\n },\n },\n });\n }\n}\n","<div class=\"tas-floating-container\" [class.visible]=\"isVisible\">\n <div class=\"floating-content\">\n <div id=\"pip-main-video\" class=\"pip-main-video\"></div>\n\n <div class=\"floating-controls\">\n <button\n class=\"action-btn expand-btn\"\n (click)=\"onExpand()\"\n title=\"Expandir a pantalla completa\"\n >\n <i class=\"fa fa-expand\"></i>\n </button>\n <button\n class=\"action-btn mute-btn\"\n [class.muted]=\"isMuted\"\n (click)=\"toggleMute()\"\n [title]=\"isMuted ? 'Activar micrófono' : 'Silenciar micrófono'\"\n >\n <i\n class=\"fa\"\n [class.fa-microphone]=\"!isMuted\"\n [class.fa-microphone-slash]=\"isMuted\"\n ></i>\n </button>\n <button\n class=\"action-btn hangup-btn\"\n (click)=\"onHangUp()\"\n title=\"Colgar llamada\"\n >\n <i class=\"fa fa-phone\" style=\"transform: rotate(135deg)\"></i>\n </button>\n </div>\n </div>\n</div>\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgbModalModule } from \"@ng-bootstrap/ng-bootstrap\";\n\nimport { TasButtonComponent } from \"./components/tas-btn/tas-btn.component\";\nimport { TasVideocallComponent } from \"./components/tas-videocall/tas-videocall.component\";\nimport { TasFloatingCallComponent } from \"./components/tas-floating-call/tas-floating-call.component\";\nimport {\n TAS_CONFIG,\n TAS_HTTP_CLIENT,\n TAS_USER_DATA_PROVIDER,\n TasConfig,\n TasHttpClient,\n TasUserDataProvider,\n} from \"./tas.config\";\n\nexport interface TasModuleConfig {\n config: TasConfig;\n httpClient?: new (...args: any[]) => TasHttpClient;\n userDataProvider?: new (...args: any[]) => TasUserDataProvider;\n}\n\n@NgModule({\n declarations: [\n TasButtonComponent,\n TasVideocallComponent,\n TasFloatingCallComponent,\n ],\n imports: [CommonModule, NgbModalModule],\n exports: [\n TasButtonComponent,\n TasVideocallComponent,\n TasFloatingCallComponent,\n ],\n})\nexport class TasModule {\n /**\n * Use this method in your app module to configure the TAS SDK\n *\n * @example\n * ```typescript\n * TasModule.forRoot({\n * config: {\n * tokBoxApiKey: environment.tokBox,\n * apiBaseUrl: environment.apiUrl\n * },\n * httpClient: MyHttpClientAdapter,\n * userDataProvider: MyUserDataProvider\n * })\n * ```\n */\n static forRoot(\n moduleConfig: TasModuleConfig\n ): ModuleWithProviders<TasModule> {\n const providers: any[] = [\n {\n provide: TAS_CONFIG,\n useValue: moduleConfig.config,\n },\n ];\n\n if (moduleConfig.httpClient) {\n providers.push({\n provide: TAS_HTTP_CLIENT,\n useClass: moduleConfig.httpClient,\n });\n }\n\n if (moduleConfig.userDataProvider) {\n providers.push({\n provide: TAS_USER_DATA_PROVIDER,\n useClass: moduleConfig.userDataProvider,\n });\n }\n\n return {\n ngModule: TasModule,\n providers,\n };\n }\n}\n","/*\n * Public API Surface of tas-uell-sdk\n */\n\n// Module\nexport * from \"./lib/tas.module\";\n\n// Configuration\nexport * from \"./lib/tas.config\";\n\n// Services\nexport * from \"./lib/services/tas.service\";\n\n// Components\nexport * from \"./lib/components/tas-btn/tas-btn.component\";\nexport * from \"./lib/components/tas-videocall/tas-videocall.component\";\nexport * from \"./lib/components/tas-floating-call/tas-floating-call.component\";\n\n// Interfaces\nexport * from \"./lib/interfaces/tas.interfaces\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.TasService","i1.TasService"],"mappings":";;;;;;;;;;;AA+CA;;AAEG;MACU,UAAU,GAAG,IAAI,cAAc,CAAY,YAAY,EAAE;AAEtE;;AAEG;MACU,eAAe,GAAG,IAAI,cAAc,CAC/C,iBAAiB,EACjB;AAEF;;AAEG;MACU,sBAAsB,GAAG,IAAI,cAAc,CACtD,wBAAwB;;AC9Cd,IAAA,UAMX;AAND,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,SAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC7B,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EANW,SAAS,KAAT,SAAS,GAMpB,EAAA,CAAA,CAAA,CAAA;AAEW,IAAA,SAGX;AAHD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACb,CAAC,EAHW,QAAQ,KAAR,QAAQ,GAGnB,EAAA,CAAA,CAAA,CAAA;MAGY,UAAU,CAAA;IAkBrB,WAC0C,CAAA,MAAwB,EACnB,UAAgC,EAAA;AADrC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;AACnB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAsB;AAnBvE,QAAA,IAAO,CAAA,OAAA,GAAsB,IAAI,CAAC;AAClC,QAAA,IAAS,CAAA,SAAA,GAAwB,IAAI,CAAC;AACtC,QAAA,IAAW,CAAA,WAAA,GAAoB,EAAE,CAAC;QAElC,IAAgB,CAAA,gBAAA,GAAG,IAAI,eAAe,CAAY,SAAS,CAAC,IAAI,CAAC,CAAC;QACnE,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAEjD,IAAe,CAAA,eAAA,GAAG,IAAI,eAAe,CAAW,QAAQ,CAAC,UAAU,CAAC,CAAC;QACtE,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QAE/C,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QACtD,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;;AAG7C,QAAA,IAAgB,CAAA,gBAAA,GAAkB,IAAI,CAAC;AACvC,QAAA,IAAY,CAAA,YAAA,GAAkB,IAAI,CAAC;QAMzC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,OAAO,CAAC,IAAI,CACV,8EAA8E,CAC/E,CAAC;AACH,SAAA;KACF;;AAGD,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAW,kBAAkB,GAAA;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KACvC;;AAGM,IAAA,WAAW,CAAC,IAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAEM,YAAY,GAAA;QACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KACzC;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KAChD;IAEM,SAAS,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,GAAG,CAAC;KACzD;;IAGM,UAAU,GAAA;QACf,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxC,SAAA;KACF;AAEM,IAAA,OAAO,CAAC,KAAc,EAAA;QAC3B,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,SAAA;KACF;;IAGM,iBAAiB,GAAA;QACtB,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;KACpD;IAEM,YAAY,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,SAAS,CAAC;KACjE;;AAGM,IAAA,UAAU,CACf,OAA0B,EAAA;QAE1B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACvE,SAAA;QACD,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA,QAAA,CAAU,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAqB,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAChE,GAAG,CAAC,CAAC,QAAQ,KAAK,QAA8B,CAAC,EACjD,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;AACvD,YAAA,MAAM,KAAK,CAAC;SACb,CAAC,CACH,CAAC;KACH;AAEM,IAAA,aAAa,CAClB,OAA6B,EAAA;QAE7B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACvE,SAAA;QACD,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA,cAAA,CAAgB,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAwB,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CACnE,GAAG,CAAC,CAAC,QAAa,KAAK,QAAiC,CAAC,EACzD,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;AAC1D,YAAA,MAAM,KAAK,CAAC;SACb,CAAC,CACH,CAAC;KACH;AAED;;AAEG;AACI,IAAA,cAAc,CACnB,SAAiB,EACjB,KAAa,EACb,gBAAwB,EACxB,iBAAyB,EAAA;QAEzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5C,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;gBACxE,OAAO;AACR,aAAA;AAED,YAAA,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,EAAE;gBACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5C,gBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;gBACxD,OAAO;AACR,aAAA;AAED,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;;YAGnE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,KAAI;;AACzC,gBAAA,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,SAAS,CACxC,KAAK,CAAC,MAAM,EACZ,iBAAiB,EACjB;AACE,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,MAAM,EAAE,MAAM;iBACf,EACD,CAAC,KAAK,KAAI;AACR,oBAAA,IAAI,KAAK,EAAE;AACT,wBAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;AACtD,qBAAA;AACH,iBAAC,CACF,CAAC;AACF,gBAAA,IAAI,UAAU,EAAE;AACd,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,iBAAA;AACH,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAK,KAAI;AAC3C,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACxC,CAAC,GAAG,KAAK,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,MAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAA,EAAA,CACxD,CAAC;AACJ,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAK;gBAC1C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AACrD,aAAC,CAAC,CAAC;;YAGH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,KAAI;AACpC,gBAAA,IAAI,KAAK,EAAE;AACT,oBAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;oBACrD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAC5C,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;AACR,iBAAA;;gBAGD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,aAAa,CAC/B,gBAAgB,EAChB;AACE,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,MAAM,EAAE,MAAM;iBACf,EACD,CAAC,GAAG,KAAI;;AACN,oBAAA,IAAI,GAAG,EAAE;AACP,wBAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;wBACpD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;wBACZ,OAAO;AACR,qBAAA;;AAGD,oBAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,CAAC,IAAI,CAAC,SAAU,EAAE,CAAC,MAAM,KAAI;AAChD,wBAAA,IAAI,MAAM,EAAE;AACV,4BAAA,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;4BAClD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;4BAC5C,MAAM,CAAC,MAAM,CAAC,CAAC;AAChB,yBAAA;AAAM,6BAAA;4BACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAChD,4BAAA,OAAO,EAAE,CAAC;AACX,yBAAA;AACH,qBAAC,CAAC,CAAC;AACL,iBAAC,CACF,CAAC;AACJ,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;;AAGM,IAAA,eAAe,CAAC,cAAsB,EAAA;QAC3C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;AAE5B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,gBAAgB,IAAI,YAAY,EAAE;AACpC,YAAA,YAAY,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAC5C,SAAA;KACF;AAEM,IAAA,iBAAiB,CAAC,cAAsB,EAAA;QAC7C,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACtC,YAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC;AAC7C,YAAA,IAAI,iBAAiB,EAAE;AACrB,gBAAA,YAAY,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAC7C,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGG;AACI,IAAA,eAAe,CAAC,cAAsB,EAAA;;QAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY;YAAE,OAAO;;AAG1B,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC9D,YAAA,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE;YAC3B,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAClD,SAAA;KACF;AAED;;AAEG;IACI,sBAAsB,GAAA;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC;KAC7C;;uGApSU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAmBC,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACV,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AApB1B,UAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cADG,MAAM,EAAA,CAAA,CAAA;2FACnB,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;8BAoB7B,QAAQ;;8BAAI,MAAM;+BAAC,UAAU,CAAA;;8BAC7B,QAAQ;;8BAAI,MAAM;+BAAC,eAAe,CAAA;;;;MChC1B,qBAAqB,CAAA;IAchC,WACS,CAAA,WAA2B,EAC1B,UAAsB,EAAA;AADvB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;AAC1B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAbvB,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;AAKtC,QAAA,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEf,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;KAKvC;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE;AAChC,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;AACrC,SAAA;AAED,QAAA,QAAQ,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;KACrC;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;KACrC;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;KAC9B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;AAClD,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;KACtD;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KACvC;IAED,aAAa,GAAA;QACX,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;;IAGO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC7C,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,KAAK,KAAK,SAAS,CAAC,YAAY,EAAE;AACpC,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClC,aAAA;SACF,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC3C,YAAA,IAAI,IAAI,KAAK,QAAQ,CAAC,GAAG,EAAE;AACzB,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/B,aAAA;SACF,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3C,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,CAAC,CACH,CAAC;KACH;IAEO,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE,GAAG,CAAC,CAAC;AACjE,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU;AACZ,iBAAA,cAAc,CACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,EACV,qBAAqB,EACrB,sBAAsB,CACvB;AACA,iBAAA,KAAK,CAAC,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;AACxD,aAAC,CAAC,CAAC;AACN,SAAA;KACF;IAEO,mBAAmB,GAAA;;QACzB,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAA4B,CAAC;QAC1E,MAAM,YAAY,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,mBAAmB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAA4B,CAAC;AAE5E,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACrC,YAAA,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACtC,YAAA,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,YAAA,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAA,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAA;KACF;IAEO,YAAY,GAAA;AAClB,QAAA,QAAQ,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEpC,QAAQ,CAAC,iBAAiB,CAAC;AACxB,aAAA,SAAS,CAAC;AACT,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,SAAS,EAAE;AACT,gBAAA,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC;AAC9B,oBAAA,WAAW,EAAE,QAAQ;AACrB,oBAAA,OAAO,EAAE,IAAI;iBACd,CAAC;AACH,aAAA;AACD,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE;AACT,gBAAA,IAAI,EAAE,CAAC,KAAK,KAAI;AACd,oBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5B,oBAAA,MAAM,CAAC,GACL,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;AAC9D,oBAAA,MAAM,CAAC,GACL,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAE9D,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,GAAA,CAAK,CAAC;oBACrD,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1C;AACF,aAAA;SACF,CAAC;AACD,aAAA,SAAS,CAAC;AACT,YAAA,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE;AAC7D,YAAA,SAAS,EAAE;AACT,gBAAA,IAAI,EAAE,CAAC,KAAK,KAAI;AACd,oBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5B,oBAAA,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AACvD,oBAAA,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvD,oBAAA,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC;AAC7C,oBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAA,EAAA,CAAI,CAAC;AAE/C,oBAAA,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,oBAAA,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;oBAEzB,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,GAAA,CAAK,CAAC;oBACrD,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1C;AACF,aAAA;AACD,YAAA,SAAS,EAAE;gBACT,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACrD,gBAAA,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBACrE,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACtD,aAAA;AACD,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC,CAAC;KACN;;kHA/KU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0XCnBlC,u1CA6CA,EAAA,MAAA,EAAA,CAAA,o6EAAA,CAAA,EAAA,CAAA,CAAA;2FD1Ba,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,u1CAAA,EAAA,MAAA,EAAA,CAAA,o6EAAA,CAAA,EAAA,CAAA;2HAKhB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAE2B,kBAAkB,EAAA,CAAA;sBAAlD,SAAS;uBAAC,oBAAoB,CAAA;gBACG,mBAAmB,EAAA,CAAA;sBAApD,SAAS;uBAAC,qBAAqB,CAAA;;;MERrB,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,CACU,UAAsB,EACtB,YAAsB,EAGtB,gBAA4C,EAAA;AAJ5C,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAU;AAGtB,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA4B;AAZtD,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAEV,QAAA,IAAQ,CAAA,QAAA,GAAuB,IAAI,CAAC;AACpC,QAAA,IAAQ,CAAA,QAAA,GAAkB,IAAI,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;AACnC,QAAA,IAAe,CAAA,eAAA,GAAuB,IAAI,CAAC;KAQ/C;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KAClC;IAED,OAAO,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpC,YAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAEtB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,UAAU;AACZ,aAAA,UAAU,CAAC;YACV,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE;AACnC,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,IAAI,EAAE,aAAa;SACpB,CAAC;AACD,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,QAAQ,KAAI;AACrB,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;YAC7C,OAAO,IAAI,CAAC,UAAU;AACnB,iBAAA,aAAa,CAAC;AACb,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAS,CAAC,IAAI;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAS,CAAC,OAAO;aACjC,CAAC;AACD,iBAAA,IAAI,CACH,SAAS,CAAC,CAAC,aAAa,KAAI;gBAC1B,OAAO;AACL,oBAAA;wBACE,SAAS;AACT,wBAAA,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK;AACnC,qBAAA;iBACF,CAAC;aACH,CAAC,CACH,CAAC;AACN,SAAC,CAAC,CACH;AACA,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAI;AAC7B,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC3C;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aACxB;AACF,SAAA,CAAC,CACL,CAAC;KACH;;IAGO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACpE,OAAO;AACR,SAAA;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;KACrD;IAEO,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC3C,YAAA,IACE,IAAI,KAAK,QAAQ,CAAC,UAAU;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;gBAC9B,CAAC,IAAI,CAAC,eAAe,EACrB;AACA,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;AAC5C,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBACpC,IAAI,SAAS,IAAI,KAAK,EAAE;oBACtB,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACjD,iBAAA;AACF,aAAA;SACF,CAAC,CACH,CAAC;KACH;AAEO,IAAA,kBAAkB,CACxB,SAAiB,EACjB,KAAa,EACb,qBAA8B,KAAK,EAAA;QAEnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACnE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,WAAW,EAAE,iBAAiB;AAC9B,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7D,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;AACrD,QAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,kBAAkB;AACvD,YAAA,kBAAkB,CAAC;QAErB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAC9B,MAAK;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC7B,EACD,MAAK;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC9B,SAAC,CACF,CAAC;KACH;;AAlIU,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iEAYnB,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAZrB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,+CCjB/B,2TAUA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDOa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,2TAAA,EAAA,MAAA,EAAA,CAAA,yOAAA,CAAA,EAAA,CAAA;;;8BAehB,QAAQ;;8BACR,MAAM;+BAAC,sBAAsB,CAAA;;;;MEnBrB,wBAAwB,CAAA;AAMnC,IAAA,WAAA,CAAoB,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AALnC,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEf,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;KAEG;IAE9C,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AACjC,QAAA,QAAQ,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;KAC7C;;IAGD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;KACrC;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;KAC9B;;IAGO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC7C,YAAA,IAAI,KAAK,KAAK,SAAS,CAAC,YAAY,EAAE;AACpC,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,aAAA;SACF,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC3C,YAAA,IAAI,CAAC,SAAS;gBACZ,IAAI,KAAK,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5C,aAAA;SACF,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3C,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,CAAC,CACH,CAAC;KACH;IAEO,YAAY,GAAA;AAClB,QAAA,QAAQ,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;AAE5C,QAAA,QAAQ,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC;AAC5C,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,SAAS,EAAE;AACT,gBAAA,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC;AAC9B,oBAAA,WAAW,EAAE,MAAM;AACnB,oBAAA,OAAO,EAAE,IAAI;iBACd,CAAC;AACH,aAAA;AACD,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,SAAS,EAAE;AACT,gBAAA,IAAI,EAAE,CAAC,KAAK,KAAI;AACd,oBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5B,oBAAA,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;AACtE,oBAAA,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAEtE,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,GAAA,CAAK,CAAC;oBACrD,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1C;AACF,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;;qHAjFU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,yDCVrC,0hCAkCA,EAAA,MAAA,EAAA,CAAA,q2DAAA,CAAA,EAAA,CAAA,CAAA;2FDxBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,0hCAAA,EAAA,MAAA,EAAA,CAAA,q2DAAA,CAAA,EAAA,CAAA;;;ME6BlB,SAAS,CAAA;AACpB;;;;;;;;;;;;;;AAcG;IACH,OAAO,OAAO,CACZ,YAA6B,EAAA;AAE7B,QAAA,MAAM,SAAS,GAAU;AACvB,YAAA;AACE,gBAAA,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,YAAY,CAAC,MAAM;AAC9B,aAAA;SACF,CAAC;QAEF,IAAI,YAAY,CAAC,UAAU,EAAE;YAC3B,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,OAAO,EAAE,eAAe;gBACxB,QAAQ,EAAE,YAAY,CAAC,UAAU;AAClC,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,YAAY,CAAC,gBAAgB,EAAE;YACjC,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,OAAO,EAAE,sBAAsB;gBAC/B,QAAQ,EAAE,YAAY,CAAC,gBAAgB;AACxC,aAAA,CAAC,CAAC;AACJ,SAAA;QAED,OAAO;AACL,YAAA,QAAQ,EAAE,SAAS;YACnB,SAAS;SACV,CAAC;KACH;;sGA5CU,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,iBAXlB,kBAAkB;QAClB,qBAAqB;AACrB,QAAA,wBAAwB,CAEhB,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,cAAc,aAEpC,kBAAkB;QAClB,qBAAqB;QACrB,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAGf,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,EAPX,OAAA,EAAA,CAAA,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA,EAAA,CAAA,CAAA;2FAO5B,SAAS,EAAA,UAAA,EAAA,CAAA;kBAbrB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,qBAAqB;wBACrB,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC;AACvC,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,qBAAqB;wBACrB,wBAAwB;AACzB,qBAAA;iBACF,CAAA;;;AClCD;;AAEG;;ACFH;;AAEG;;;;"}
|