@tuki-io/tuki-widgets 0.0.219-dev.5 → 0.0.219-dev.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"tuki-io-tuki-widgets-users-list.mjs","sources":["../../../../projects/tuki/widgets/users-list/src/app.constants.ts","../../../../projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.ts","../../../../projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.html","../../../../projects/tuki/widgets/users-list/src/utils/common-functions.ts","../../../../projects/tuki/widgets/users-list/src/classes/simlified-user.ts","../../../../projects/tuki/widgets/users-list/src/utils/utils.service.ts","../../../../projects/tuki/widgets/users-list/src/services/api.service.ts","../../../../projects/tuki/widgets/users-list/src/services/api-webex.service.ts","../../../../projects/tuki/widgets/users-list/src/services/user.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/notification.ts","../../../../projects/tuki/widgets/users-list/src/services/notification.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/user-list.ts","../../../../projects/tuki/widgets/users-list/src/services/removeKynFromIBM.service.ts","../../../../projects/tuki/widgets/users-list/src/services/users-search.service.ts","../../../../projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.ts","../../../../projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.html","../../../../projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.ts","../../../../projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.component.html","../../../../projects/tuki/widgets/users-list/src/classes/line.ts","../../../../projects/tuki/widgets/users-list/src/services/dns.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/app-location.ts","../../../../projects/tuki/widgets/users-list/src/classes/move-user.ts","../../../../projects/tuki/widgets/users-list/src/services/site-settings.service.ts","../../../../projects/tuki/widgets/users-list/src/services/move-user.service.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.html","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.html","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.html","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.html","../../../../projects/tuki/widgets/users-list/src/components/table-toolbar/table-toolbar.component.ts","../../../../projects/tuki/widgets/users-list/src/components/table-toolbar/table-toolbar.component.html","../../../../projects/tuki/widgets/users-list/src/utils/notifications/notification.component.ts","../../../../projects/tuki/widgets/users-list/src/utils/notifications/notification.component.html","../../../../projects/tuki/widgets/users-list/src/users-list.component.ts","../../../../projects/tuki/widgets/users-list/src/users-list.component.html","../../../../projects/tuki/widgets/users-list/src/services/events-communication.service.ts","../../../../projects/tuki/widgets/users-list/src/material.module.ts","../../../../projects/tuki/widgets/users-list/src/users-list.module.ts","../../../../projects/tuki/widgets/users-list/tuki-io-tuki-widgets-users-list.ts"],"sourcesContent":["export const API = {\n USER_TOKEN: '/api/provision/:siteId/users/:userId/token',\n UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',\n PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',\n USER_BY_ID: '/api/provision/:siteId/users/:userId',\n QUICK_USERS_SEARCH: \"/api/search/quickusers\",\n DELETE_USER: \"/api/search/quickusers\",\n MOVE_USER: \"/api/migration/webex/singlemigration/features/PERSON\",\n AVAILABLE_DN_IN_RANGES: \"/api/sites/:siteId/available-dn-in-ranges\",\n DELETE_LINE: \"/api/provision/:siteId/deleteLine/:pkid/:token\",\n DISASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token\",\n CHECK_DELETE_LINE: \"/api/provision/:siteId/checklinedeletion\",\n ASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/createLineAssociation/:token\",\n CHECK_DESTINATION_NUMBER: \"/api/provision/:siteId/check-dn\",\n UPDATE_LINE_FIELDS: \"/api/provision/:siteId/lineFields/:pkid/:token\",\n UPDATE_DEVICE_FIELDS: \"/api/provision/:siteId/deviceFields/:deviceName/:token\",\n WEBEX_USERS: \"/api/webex/provisioning/customers/:customerId/users\",\n MIGRATED_USERS: \"/api/search/migratedusers\",\n QUICK_UPGRADE_STATUS_USERS: \"/api/webex-upgrade/customers/:customerId/user-upgrade\",\n REVERT_WEBEX_USER: \"/api/webex/provisioning/customers/:customerId/persons/:webexUUID/revertmigration\",\n PHONE_NUMBERS: \"/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers\",\n GET_LOCATIONS: \"/api/search/webex/customers/:customerId/locations\",\n PREPARE_PERSON_MIGRATION: \"/api/migration/webex/preparepersonmigration\",\n MIGRATION_FORM: \"/api/search/webex/customers/:customerId/migrationforms/:formId\",\n MIGRATION_FORM_ENTITIES_MIGRATED: \"/api/search/webex/customers/:customerId/migrationformentities/migrated\",\n START_MIGRATION: \"/api/migration/webex/startpersonmigration\",\n TRIGGER_FIRMWARE_MIGRATION: \"/api/migration/:migrationType/firmwaremigration/customer/:customerId/migration/:migrationFormId\",\n REMOVE_UCM_LICENSE: \"/api/migration/:controlHubType/removeucmlicense/customer/:customerId/migrationform/:migrationFormId\",\n WEBEX_REVERT: \"/api/webex/provisioning/customers/:customerId/persons/:personId/revertmigration\",\n REVERT: \"/api/webex/provisioning/customers/:customerId/persons/:personId/revertmigration\",\n SWAP_STATUSES: \"/api/cache/user/customer/:customerId/swap-status\",\n SITES: \"/api/customers/:customerId/sites\",\n};\nexport const REGEX_PATTERN = {\n EMAIL: '^(([^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+(\\\\.[^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+)*)|(\".+\"))' +\n '@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +\n '?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'\n};\n\nexport const PAGINATION_DEFAULTS = {\n SIZE: 10,\n INDEX: 0\n}\nexport const PAGINATION_SIZE_OPTIONS = [\n 10,\n 50,\n 100,\n 500\n];\nexport const CUCS_TO_IGNORE = [\n 189,\n 194,\n 191,\n 190\n];\nexport const CUCMS_TO_IGNORE = [\n 249,\n 255,\n 251,\n 250\n];\nexport const MAX_INTEGER = 2147483647;\n\nexport const CUSTOMER_DESTINATION = {\n MULTI_TENANT_ONLY: 'MULTI_TENANT_ONLY',\n DEDICATED_INSTANCE_ONLY: 'DEDICATED_INSTANCE_ONLY',\n HYBRID: 'HYBRID',\n ZOOM: 'ZOOM',\n MANAGE_ONLY: 'MANAGE_ONLY',\n MICROSOFT: 'MICROSOFT',\n};\n\nexport const USER_TYPES_MAP = {\n CUCM: 'CUCM',\n WEBEX: 'WEBEX',\n ONPREM: 'ONPREM',\n}\n\nexport type USER_TYPES_TYPE = keyof typeof USER_TYPES_MAP | null;\n\nexport const CUSTOMER_DESTINATION_MIGTATION_TYPE = {\n MULTI_TENANT_ONLY: 'webex',\n DEDICATED_INSTANCE_ONLY: 'webex',\n HYBRID: 'webex',\n ZOOM: 'zoom',\n MANAGE_ONLY: 'webex',\n MICROSOFT: 'teams',\n};\n\nexport const ON_PREM_ID = 2542;\n\nexport const MAX_INT = 2147483647;\n","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-info-dialog',\n templateUrl: './user-list-confirm-dialog.component.html',\n styleUrls: ['./user-list-confirm-dialog.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class UserListConfirmDialogComponent implements OnInit {\n public confirmButtonText = 'OK';\n public message = '';\n public title = '';\n\n constructor(\n public dialogRef: MatDialogRef<any>,\n @Inject(MAT_DIALOG_DATA) public data: InfoDialogConfig\n ) { }\n\n ngOnInit(): void {\n this.confirmButtonText = this.data.confirmButtonText || '';\n this.message = this.data.message || '';\n this.title = this.data.title || '';\n }\n\n public onClose(val: boolean): void {\n this.dialogRef.close(val);\n }\n}\n\nexport class InfoDialogConfig {\n message!: string;\n title!: string;\n confirmButtonText!: string;\n}\n","<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\n <div class=\"move_user_popup_icon\"></div>\n <div class=\"dialog-content-message\" [innerHTML]=\"message\"></div>\n </div>\n <div mat-dialog-actions class=\"flex-gap-container\">\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\n Cancel\n </button>\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\n {{confirmButtonText}}\n </button>\n </div>\n</div>\n","export const getSavableData = (model: any, exclude?: Array<string>) => {\n let result = Object.keys(model);\n if (exclude && exclude.length) {\n result = result.filter(key => !exclude.some(item => item === key));\n }\n return result.reduce((result, key) => {\n if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {\n (result as any)[key] = model[key].map((item: any) => item.getSavableData());\n } else if (model[key] instanceof Object && model[key].getSavableData) {\n (result as any)[key] = model[key].getSavableData();\n } else {\n (result as any)[key] = model[key];\n }\n return result;\n }, {});\n};\n\nexport const filterOptions = (options: any[], query: string, shownValue?: string, field?: string) => {\n if (!options) {\n return [];\n }\n if (!query) {\n return options;\n }\n return options.filter(option => {\n return (\n field ? String(option[field]).toLowerCase().includes(String(query).toLowerCase()) :\n String(option).toLowerCase().includes(String(query).toLowerCase()) ||\n (shownValue && shownValue === option)\n );\n });\n};\n","import { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { getSavableData } from '../utils/common-functions';\nimport { REGEX_PATTERN } from '../app.constants';\n\nexport class SimplifiedUser {\n userid!: string;\n email!: string;\n firstName!: string;\n lastName!: string;\n token!: string;\n viewMode!: string;\n hasModifiedCache!: boolean;\n newUserId?: string;\n editMode!: boolean;\n form!: FormGroup;\n\n constructor(user?: any) {\n if (user) {\n this.userid = user.userid;\n this.email = user.email;\n this.firstName = user.firstName;\n this.lastName = user.lastName;\n this.token = user.token;\n }\n this.initForm()\n }\n\n initForm() {\n const formBuilder = new FormBuilder();\n const formSettings = {\n userid: [{value: this.userid || '', disabled: true}, [Validators.required, Validators.maxLength(128)]],\n email: [{value: this.email || '', disabled: true}, [\n Validators.pattern(REGEX_PATTERN.EMAIL),\n Validators.required\n ]],\n firstName: [{value: this.firstName || '', disabled: true}],\n lastName: [{value: this.lastName || '', disabled: true}, Validators.required],\n };\n this.form = formBuilder.group(formSettings);\n }\n\n toggleEditMode() {\n this.editMode = !this.editMode;\n ['userid', 'email', 'firstName', 'lastName'].forEach(token => {\n if (this.editMode) {\n this.form.get(token)?.enable();\n } else {\n this.form.get(token)?.disable();\n }\n })\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache'];\n return getSavableData(this, excludedFields);\n }\n\n equal(userToCompare?: SimplifiedUser): boolean {\n if (!userToCompare) {\n return false;\n }\n return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());\n }\n\n}\n\nexport interface SimplifiedUserInterface {\n userid: string;\n email: string;\n firstName: string;\n lastName: string;\n form?: FormGroup;\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class UtilsService {\n\n static sortSortArrayByProperty(array: [], sortBy: string) {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (!a[sortBy] && !b[sortBy]) {\n return 0;\n }\n if (a[sortBy] && !b[sortBy]) {\n return 1;\n }\n if (!a[sortBy] && b[sortBy]) {\n return -1;\n }\n const positionA = a[sortBy];\n const positionB = b[sortBy];\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\n });\n }\n\n static diff(origObject: any, updatedObj: any, path: string, keysToIgnore?: string[]) {\n let result: any = [];\n if (Object.is(origObject, updatedObj)) {\n return undefined;\n }\n if (!updatedObj || typeof updatedObj !== 'object') {\n return updatedObj;\n }\n const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));\n const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;\n filter\n .forEach(key => {\n if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {\n if (UtilsService.differs(updatedObj[key], origObject[key])) {\n const newPath = `${path}${path ? '.' : ''}${key}`;\n const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);\n if (values !== undefined) {\n result = [...result, ...values];\n }\n }\n } else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {\n const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;\n result.push(`${path}${path ? '.' : ''}${key}=${value}`);\n }\n });\n return result;\n }\n\n static formatIfEmpty(value: any) {\n if (value) {\n return value;\n }\n switch (typeof value) {\n case 'boolean':\n return value;\n case 'string':\n return '';\n default:\n return null;\n }\n }\n\n static differs(obj1: any, obj2: any): boolean {\n return JSON.stringify(obj1) !== JSON.stringify(obj2);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { TableDataInterface } from '../classes/table-data';\nimport { Observable } from 'rxjs';\n\n\n\n@Injectable()\nexport class APIService {\n\n apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';\n\n public token: any;\n constructor(\n private httpClient: HttpClient\n ) {\n }\n\n fetch(url: string, params = {}, cache?: boolean) {\n const headers = this.getHeaders(cache);\n return this.httpClient.get(this.apiUrl + url, {params: this.prepareEncodedParams(params), headers});\n }\n\n post(url: string, body: any, params = {}): any {\n body = body || null;\n const headers = this.getHeaders();\n return this.httpClient.post(this.apiUrl + url, body, {params: this.prepareEncodedParams(params), headers});\n }\n\n // use when response extended data is necessary:\n postExtended(url: string, body = null, params = {}, headers = {}) {\n headers = headers || this.getHeaders();\n return this.httpClient.post(this.apiUrl + url, body, {\n headers,\n observe: 'response',\n params: this.prepareEncodedParams(params)\n });\n }\n\n put(url: string, body = null, params = {}) {\n const headers = this.getHeaders();\n return this.httpClient.put(this.apiUrl + url, body, {headers, params: this.prepareEncodedParams(params)});\n }\n\n delete(url: string, params = {}) {\n const headers = this.getHeaders();\n return this.httpClient.delete(this.apiUrl + url, {headers, params: this.prepareEncodedParams(params)});\n }\n\n fetchPagination(url: string, pageSize: number, pageNumber: number, additionalParams = {}, cache?: boolean): Observable<TableDataInterface> {\n const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));\n const params = Object.assign(copyAdditionalParams, {size: pageSize.toString(), page: pageNumber.toString()});\n return this.fetch(url, params, cache) as Observable<TableDataInterface>;\n }\n\n private prepareEncodedParams(params: any) {\n const result: any = {};\n\n if (!params) {\n return {};\n }\n for (const key of Object.keys(params)) {\n if (params[key]) {\n const stringParam = params[key].toString();\n result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;\n }\n }\n return result;\n }\n\n private getHeaders(cache?: boolean): HttpHeaders {\n let headers = new HttpHeaders();\n if (cache) {\n headers = headers.append('_Cache', 'true ');\n }\n const token = this.token || this.getParameterByName('token');\n headers = headers.append('Authorization', 'Bearer '+ token);\n return headers;\n }\n\n private getParameterByName(name: any, url = window.location.href) {\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { APIService } from './api.service';\n\n\n@Injectable()\nexport class ApiWebexService extends APIService {\n constructor(httpClient: HttpClient) {\n super(httpClient);\n //this.apiUrl = window.location.protocol + \"//\"+ window.location.hostname + environment.apiAuthUrl;\n this.apiUrl = 'https://webex.car-west.net/webex';\n // this.apiUrl = 'https://staging.tuki.io/webex';\n }\n}\n","import { Injectable, OnInit } from '@angular/core';\nimport { Observable, of, forkJoin, Subject } from 'rxjs';\nimport { SimplifiedUser } from '../classes/simlified-user';\nimport { API, CUSTOMER_DESTINATION, CUSTOMER_DESTINATION_MIGTATION_TYPE, USER_TYPES_TYPE } from '../app.constants';\nimport { APIService } from './api.service';\nimport { map } from 'rxjs/operators';\nimport { UtilsService } from '../utils/utils.service';\nimport { ListUser } from '../classes/user-list';\nimport { ApiWebexService } from './api-webex.service';\n\n@Injectable()\nexport class UserService implements OnInit {\n siteId: number = -1;\n userId: string = '';\n userIdExistPending = false;\n hasExistedUserId = false;\n user!: SimplifiedUser;\n originUser!: SimplifiedUser;\n moveUserPending = false;\n userMoved$ = new Subject<any>();\n\n public userTypeSelected$ = new Subject<USER_TYPES_TYPE>();\n\n constructor(\n private apiService: APIService,\n private apiWebexService: ApiWebexService\n ) {\n\n }\n\n ngOnInit(): void {\n console.log(this.siteId)\n }\n\n public fetchUserToken(siteId: number, userId: string): any {\n this.siteId = siteId;\n this.userId = userId;\n return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\n .pipe(map((result: any) => {\n const token = Object.keys(result)[0];\n this.setSimplifiedUser(Object.values(result)[0], token);\n }))\n // .pipe(this.handleError(false, true));\n }\n\n public updateUserFields(body: any): any {\n if (!this.userId || !this.siteId || !this.user?.token) {\n return;\n }\n return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body)\n // .pipe(this.handleError(false, true));\n }\n\n public moveUserToMT(customerId: any, user: ListUser): any {\n // return new Observable<boolean>(observer => {\n // setTimeout(() => {\n // observer.next(true);\n //\n // }, 1000);\n // });\n return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user))\n // .pipe(this.handleError(true, true));\n }\n\n public moveUserToDI(customerId: any, user: ListUser): any {\n // return new Observable<boolean>(observer => {\n // setTimeout(() => {\n // observer.next(true);\n //\n // }, 1000);\n // });\n const URL = API.REVERT_WEBEX_USER.replace(':customerId', customerId).replace(':webexUUID', String(user.webexUUID));\n return this.apiWebexService.post(URL, this.getMoveUserBody(customerId, user))\n // .pipe(this.handleError(true, true));\n }\n\n public getMigrationFormStatus(customerId: number, formId: number): any {\n const url = API.MIGRATION_FORM\n .replace(':customerId', String(customerId))\n .replace(':formId', String(formId));\n return this.apiWebexService.fetch(url);\n }\n\n public getMigratedMigrationFormEntities(\n customerId: number,\n webexUUID: string,\n feature: string = 'PERSON'\n ): Observable<any> {\n const url = API.MIGRATION_FORM_ENTITIES_MIGRATED\n .replace(':customerId', String(customerId));\n return this.apiWebexService.fetch(url, { webexUUID, feature });\n }\n\n private getMoveUserBody(customerId: any, user: ListUser): any {\n return {\n customerId: customerId,\n entities: {\n PERSON: [{ cucmId: user.cucmId, entityId: user.userid }]\n }\n };\n }\n\n public deleteUser(siteId: number, userId: string): Observable<any> {\n return this.apiService.delete(API.DELETE_USER.replace(':siteId', String(siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\n // .pipe(this.handleError(true, true));\n }\n\n public fetchUserById(id: string) {\n this.userIdExistPending = true;\n return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))\n .pipe(map(result => {\n this.userIdExistPending = false;\n return result;\n }));\n }\n\n public persistCacheChanges() {\n const params = {\n excludeDeviceExtraOptions: true\n };\n return this.processUserChangesToCache()\n .pipe(map((result: any) => {\n return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {}, params)\n .subscribe(() => {\n\n })\n // .pipe(map((user) => {\n // // this.setUser(user, false, this.user.token);\n // this.user.hasModifiedCache = false;\n // }))\n // .pipe(this.handleError(true, true));\n }));\n }\n\n public processUserChangesToCache(): any {\n const calls = [];\n const body = UtilsService.diff(this.originUser.getSavableData(), this.user.getSavableData(), 'user');\n if (body) {\n calls.push(this.updateUserFields(body));\n }\n if (!calls?.length) {\n return of(this.user);\n }\n\n return forkJoin(calls)\n .pipe(map((responses: any) => {\n // ApiUserResponse\n this.handleSaveUserResponse(responses);\n }))\n // .pipe(this.handleError(false, true));\n\n }\n\n public hasUnsavedChanges() {\n return !this.user.equal(this.originUser);\n }\n\n public setSimplifiedUser(user: any, token?: any): void {\n this.user = new SimplifiedUser(user);\n const copiedUser = JSON.parse(JSON.stringify(user));\n this.originUser = new SimplifiedUser(copiedUser);\n this.user.token = this.user.token || token;\n this.originUser.token = this.originUser.token || token;\n }\n\n private handleSaveUserResponse(responses: any) {\n if (!responses?.length) {\n return;\n }\n for (let len = responses.length, i = len - 1; i >= 0; i--) {\n if (responses[i] && responses[i].currentUpdatedUser) {\n // this.setUser(responses[i].currentUpdatedUser, false, this.user.token);\n this.user.hasModifiedCache = true;\n return;\n }\n }\n }\n\n public triggerFirmwareUpgrade(\n customerId: number,\n migrationFormId: number | null,\n deviceMap: Record<number, Record<string, string[]>>,\n customerType?: keyof typeof CUSTOMER_DESTINATION\n ): Observable<any> {\n // const migrationType = CUSTOMER_DESTINATION_MIGTATION_TYPE[customerType].toUpperCase();\n const url = API.TRIGGER_FIRMWARE_MIGRATION\n .replace(':migrationType', 'webex'.toUpperCase())\n .replace(':customerId', String(customerId))\n .replace(':migrationFormId', String(migrationFormId));\n\n return this.apiWebexService\n .post(url, deviceMap);\n // .pipe(this.handleError(true, true));\n }\n\n public revertMigration(customerId: number, personId: string): Observable<any> {\n const url = API.WEBEX_REVERT\n .replace(':customerId', String(customerId))\n .replace(':personId', personId);\n return this.apiWebexService.post(url, {});\n // .pipe(this.handleError(true, true));\n }\n\n public removeUcmLicense(\n customerId: number,\n migrationFormId: number | null,\n controlHubType: string = 'WEBEX'\n ): Observable<any> {\n const url = API.REMOVE_UCM_LICENSE\n .replace(':controlHubType', String(controlHubType))\n .replace(':customerId', String(customerId))\n .replace(':migrationFormId', String(migrationFormId));\n\n return this.apiWebexService.post(url, {});\n }\n\n public swapStatuses(customerId: number, email: string) {\n return this.apiService.put(API.SWAP_STATUSES.replace(':customerId', String(customerId)), null, { email });\n }\n}\n","const TTL_DEFAULT = 30000;\nconst TTL_LONG_DEFAULT = 45000;\n\nexport enum NotificationType {\n info = 'info',\n error = 'error',\n success = 'success',\n warning = 'warning'\n}\n\nexport class Notification {\n id?: number;\n type?: NotificationType;\n message?: string;\n ttl: number = TTL_DEFAULT;\n timerId?: any;\n\n constructor(data: any) {\n Object.assign(this, data || {});\n\n if(this.ttl === undefined) {\n this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;\n }\n }\n\n isInfo(): boolean {\n return this.type === NotificationType.info;\n }\n isError(): boolean {\n return this.type === NotificationType.error;\n }\n isSuccess(): boolean {\n return this.type === NotificationType.success;\n }\n isWarning(): boolean {\n return this.type === NotificationType.warning;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Notification } from '../classes/notification';\nimport { Subject } from 'rxjs';\nconst SUCCESS_TIME = 5000;\nconst INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';\nconst INACTIVE_SESSION = 'SESSION_INACTIVE';\n\n@Injectable()\nexport class NotificationService {\n\n public listChange = new Subject();\n\n private max = 0;\n private list: Notification[] = [];\n\n constructor(\n ) {\n }\n\n error(message: string, ttl?: number): void {\n this.notify('error', message, ttl);\n }\n\n success(message: string, ttl?: number): void {\n this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);\n }\n\n warning(message: string, ttl?: number): void {\n this.notify('warning', message, ttl);\n }\n\n info(message: string, ttl?: number): void {\n this.notify('info', message, ttl);\n }\n private notify(type: string, message: string, ttl?: number): void {\n const found = this.list.find((n: Notification) => n.message === message);\n if (found) {\n this.remove(found);\n }\n const notification = new Notification({\n id: ++this.max,\n type, message, ttl\n });\n if (notification.ttl > 0) {\n notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);\n }\n this.list.push(notification);\n this.listChange.next(this.list);\n }\n\n remove(notification: Notification, auto?: boolean): void {\n if (!auto && notification.timerId) {\n // clear timeout in case of manual remove\n clearInterval(notification.timerId);\n }\n this.list = this.list.filter(n => n.id !== notification.id);\n this.listChange.next(this.list);\n }\n\n private removeInactiveSessionError(): void {\n if (!this.list || !this.list.length) {\n return;\n }\n this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);\n this.listChange.next(this.list);\n }\n\n}\n","import { DeviceInterface } from './device';\nimport { LineInterface } from './line';\n\nexport class ListUser implements ListUserInterface {\n // @ts-ignore\n userid: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n telephoneNumber?: string;\n devices: DeviceInterface[] = [];\n deviceProfiles: DeviceInterface[] = [];\n lines?: LineInterface[];\n siteId?: number;\n siteName?: string;\n webexUUID?: string;\n cucmId?: number;\n roleName?: string;\n status?: string;\n ldapIntegrated!: boolean;\n isMigrated = false;\n isReadyToUpgrade = false;\n\n constructor(user?: ListUser, roleName?: string) {\n if (user) {\n Object.assign(this, user);\n }\n if (roleName) {\n this.roleName = roleName;\n }\n }\n}\n\nexport interface ListUserInterface {\n userid: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n telephoneNumber?: string;\n viewMode?: any;\n devices: DeviceInterface[];\n deviceProfiles: DeviceInterface[];\n lines?: LineInterface[];\n siteId?: number;\n siteName?: string;\n webexUUID?: string;\n cucmId?: number;\n}\n","import { Injectable } from '@angular/core';\nimport { CUCMS_TO_IGNORE, CUCS_TO_IGNORE } from '../app.constants';\n\n@Injectable()\nexport class RemoveKynFromIBMService {\n constructor() {\n }\n\n\n removeCUCMS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));\n }\n return date;\n }\n\n removeCUCS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));\n }\n return date;\n }\n\n\n}\n","import { Injectable, OnInit } from '@angular/core';\r\nimport { SimplifiedUser } from '../classes/simlified-user';\r\nimport { APIService } from './api.service';\r\nimport { ListUser, ListUserInterface } from '../classes/user-list';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { API, PAGINATION_DEFAULTS, PAGINATION_SIZE_OPTIONS, MAX_INTEGER, MAX_INT } from '../app.constants';\r\nimport { TableDataInterface } from '../classes/table-data';\r\nimport { map } from 'rxjs/operators';\r\nimport { RemoveKynFromIBMService } from './removeKynFromIBM.service';\r\nimport { PaginationDataDto } from '../classes/pagination';\r\nimport { ApiWebexService } from './api-webex.service';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class UsersSearchService {\r\n siteId: number = -1;\r\n userId: string = '';\r\n customerId!: number;\r\n siteid!: number;\r\n userIdExistPending = false;\r\n hasExistedUserId = false;\r\n pageSize = PAGINATION_DEFAULTS.SIZE;\r\n pageIndex = PAGINATION_DEFAULTS.SIZE;\r\n pageSizeOptions = PAGINATION_SIZE_OPTIONS;\r\n migratedUsersIds!: any;\r\n total!: number;\r\n migratedUsers!: any;\r\n searchParams!: any;\r\n foundUsers$!: any;\r\n quickUpgradeStatusUsers$!: any;\r\n usersUpgradeStatus!: any;\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private webexApiService: ApiWebexService,\r\n private removeKynFromIBMService: RemoveKynFromIBMService\r\n ) {\r\n this.foundUsers$ = new BehaviorSubject(null);\r\n this.quickUpgradeStatusUsers$ = new BehaviorSubject(null);\r\n\r\n }\r\n\r\n public getAllRegularUsers(searchParams?: any): Observable<ListUser[]> {\r\n const params = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, MAX_INTEGER, 0, params)\r\n .pipe(map((res: TableDataInterface) => {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n // /.map(user => new ListUser(user, user.webexUUID ? '' : 'Dedicated Instance Calling User')) : [];\r\n .map(user => new ListUser(user)) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n return users;\r\n }));\r\n }\r\n\r\n public getPagination(): PaginationDataDto {\r\n return {\r\n total: this.total,\r\n pageSizeOptions: this.pageSizeOptions,\r\n pageSize: this.pageSize,\r\n pageIndex: this.pageIndex\r\n };\r\n }\r\n\r\n public setDefaultValues() {\r\n this.total = 0;\r\n this.pageSize = PAGINATION_DEFAULTS.SIZE;\r\n this.pageIndex = PAGINATION_DEFAULTS.INDEX;\r\n this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;\r\n }\r\n public quickRegularUsersSearch(searchParams?: any, isMigratedUsersOnly?: boolean, pageSize?: number): any {\r\n console.log('searchParams = ', searchParams);\r\n this.searchParams = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n // this.searchParams['provisionType'] = 'CUCM';\r\n return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize ||this.pageIndex, this.searchParams)\r\n .pipe(map((res: TableDataInterface) => {\r\n // this.totals = this.totals || {};\r\n // this.totals['users'] = res.total;\r\n\r\n // this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));\r\n if (!isMigratedUsersOnly) {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => new ListUser(user)) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n this.total = res.total;\r\n this.foundUsers$.next(users);\r\n } else {\r\n this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => user.userid) : [];\r\n }\r\n }));\r\n // .pipe(this.handleError(true));\r\n }\r\n\r\n public quickWebexUsersSearch(searchParams?: any, isMigratedUsersOnly?: boolean, pageSize?: number): any {\r\n this.searchParams = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n // this.searchParams['provisionType'] = 'CUCM';\r\n return this.webexApiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize ||this.pageIndex, this.searchParams)\r\n .pipe(map((res: TableDataInterface) => {\r\n console.log('data: ', res);\r\n\r\n if (!isMigratedUsersOnly) {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => new ListUser(user)) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n this.total = res.total;\r\n this.foundUsers$.next(users);\r\n } else {\r\n this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => user.userid) : [];\r\n }\r\n }));\r\n // .pipe(this.handleError(true));\r\n }\r\n\r\n getMigratedUsers(customerId: number): any {\r\n this.migratedUsers = [];\r\n return of(this.migratedUsers);\r\n // return this.webexApiService.fetch(API.WEBEX_USERS.replace(':customerId', String(customerId)), {})\r\n // .pipe(map((result: any) => {\r\n // if (result && result.length) {\r\n // this.migratedUsers = result.filter((user: any) => user.webexUUID && user.devices && user.devices.length);\r\n // }\r\n // }))\r\n }\r\n\r\n getMigratedWebexUsers(customerId: number): any {\r\n const params = {customerid: customerId, type: 'PERSON'};\r\n return this.webexApiService.fetch(API.MIGRATED_USERS.replace(':customerId', String(customerId)), params, true)\r\n .pipe(map((result: any) => {\r\n }))\r\n }\r\n\r\n getUsersUpgradeStatus(customerId: number): any {\r\n const URL = API.QUICK_UPGRADE_STATUS_USERS.replace(':customerId', String(customerId));\r\n return this.webexApiService.fetchPagination(URL, MAX_INT, 0)\r\n .pipe(map((result: any) => {\r\n if (result?.content?.length) {\r\n this.usersUpgradeStatus = Object.fromEntries(\r\n result.content.map((item: any) => [\r\n item.userId,\r\n item.upgradeStatus === 'READY'\r\n ])\r\n );\r\n } else {\r\n this.usersUpgradeStatus = null;\r\n }\r\n this.quickUpgradeStatusUsers$.next();\r\n }))\r\n }\r\n\r\n setMigratedPropToUsers(users: any): void {\r\n // users.forEach((user: any) => {\r\n // const migratedUser = this.migratedUsers.filter((migratedUser: any) => migratedUser.userid === user.email);\r\n // if (migratedUser && migratedUser[0]) {\r\n // user.roleName = '';\r\n // user.isMigrated = true;\r\n // user.status = 'Migrated';\r\n // user.webexUUID = migratedUser[0].webexUUID;\r\n // } else {\r\n // user.roleName = 'Dedicated Instance Calling user';\r\n // user.isMigrated = false;\r\n // user.status = 'Active';\r\n // user.webexUUID = null;\r\n // }\r\n\r\n // if (user.webexUUID) {\r\n // user.roleName = 'Dedicated Instance Calling user';\r\n // } else {\r\n // user.roleName = '';\r\n // }\r\n // })\r\n // console.log('users ttt', users);\r\n }\r\n\r\n setUpgradeStatusToUsers(users: any[], upgradeStatusObj: any): void {\r\n if (users?.length && upgradeStatusObj) {\r\n users.forEach(user => {\r\n if (upgradeStatusObj[user.userid]) {\r\n user.isReadyToUpgrade = upgradeStatusObj[user.userid];\r\n }\r\n })\r\n }\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { PaginationDataDto } from '../../classes/pagination';\r\nimport { PAGINATION_SIZE_OPTIONS } from '../../app.constants';\r\n\r\n\r\n@Component({\r\n selector: 'app-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss'],\r\n})\r\nexport class PaginationComponent implements OnInit{\r\n @Input()\r\n public pagination!: PaginationDataDto;\r\n @Input()\r\n public showPageSizeOptions!: boolean;\r\n @Input()\r\n public showRefreshButton!: boolean;\r\n @Input()\r\n public lengthPending!: boolean;\r\n @Output()\r\n public pageEmitter = new EventEmitter();\r\n @Output()\r\n public pageNumberChangeEmitter = new EventEmitter<any>();\r\n public pageSizeOptions: number[] = PAGINATION_SIZE_OPTIONS;\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public pageEvent(event: any) {\r\n this.pageEmitter.emit(event);\r\n }\r\n\r\n public changePerPageNumber(event: any) {\r\n this.pageNumberChangeEmitter.emit(event.value);\r\n }\r\n\r\n}\r\n","<div class=\"flex-box pagination\">\r\n <div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions || [5, 10, 25, 100]\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\r\n </mat-spinner>\r\n </div>\r\n\r\n <div class=\"flex-box per-page-block\" style=\"justify-content: left;\" *ngIf=\"showPageSizeOptions\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './app-loader.component.html',\n styleUrls: ['./app-loader.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppLoaderComponent {\n constructor() {\n }\n\n}\n","<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"70\"\n strokeWidth=\"3\"></mat-progress-spinner>\n</div>\n","import { SiteShortDataInterface } from './device';\n\nexport interface LineInterface {\n description: string;\n pkid: string;\n entityChangeType: EntityChangeType;\n alertingName: string;\n asciiAlertingName: string;\n callingSearchSpace: string;\n voiceMailProfile: string;\n noAnswerRingDuration: number;\n autoAnswer: string;\n directoryNumber: LineDirectoryInterface;\n didPatterns: Array<TranslationPatternInterface>;\n mappedDids: Array<string>;\n aarSettings: LineAarInterface;\n callForwardAll: CallInterface;\n callForwardAllSecondaryCSS: CallInterface;\n callForwardBusyInternal: CallInterface;\n callForwardBusyExternal: CallInterface;\n callForwardNoAnswerInternal: CallInterface;\n callForwardNoAnswerExternal: CallInterface;\n callForwardNoCoverageInternal: CallInterface;\n callForwardNoCoverageExternal: CallInterface;\n callForwardOnCTIFailure: CallInterface;\n callForwardUnregisteredInternal: CallInterface;\n callForwardUnregisteredExternal: CallInterface;\n parkMonitoringExternal: LineParkMonitoringInterface;\n parkMonitoringInternal: LineParkMonitoringInterface;\n callPickupGroup: string;\n localId: string;\n urgentPriority: boolean;\n blfPresenceGroup: string;\n userHoldMOHAudioSourceId: string;\n userHoldMOHAudioSourceName: string;\n networkMOHAudioSourceId: string;\n networkMOHAudioSourceName: string;\n rejectAnonymousCall: boolean;\n enterpriseAltNum: AlternateNumberInterface;\n e164AltNum: AlternateNumberInterface;\n directoryUris: Array<DirectoryUriInterface>;\n callForwardAlternateParty: ParkMonitoringInterface;\n mlppNoAnswerRingDuration: number;\n confidentialAccessMode: string;\n confidentialAccessLevel: string;\n confidentialAccessLevelName: string;\n callControlAgentProfile: string;\n holdReversionRingDuration: number;\n holdReversionNotificationInterval: number;\n partyEntranceTone: string;\n pstnFailover: string;\n isExistingLine?: boolean;\n plarDestinationNumber: string;\n prefixDigits: string;\n plarDescription: string;\n plarEnabled: boolean;\n}\n\nexport enum EntityChangeType {\n added = 'added',\n updated = 'updated',\n existing = 'existing',\n removed = 'removed',\n unassociated = 'unassociated'\n}\nexport interface LineDirectoryInterface {\n directoryNumber: string;\n routePartitionName: string;\n pkid: string;\n dnType: string;\n subType?: string;\n templateDirectoryNumber?: string;\n}\nexport interface TranslationPatternInterface {\n pattern: string;\n calledPartyTransformationMask: string;\n description?: string;\n site?: SiteShortDataInterface;\n hasMultipleSites?: boolean;\n multipleSitesId?: string;\n}\nexport interface LineAarInterface {\n aarDestinationMask: string;\n aarGroup: string;\n aarVoiceMailEnabled: boolean;\n aarKeepCallHistory: boolean;\n}\nexport interface CallInterface {\n forwardToVoiceMail: boolean;\n destination: string;\n callingSearchSpace: string;\n}\nexport interface LineParkMonitoringInterface {\n voiceMail: boolean;\n destination: string;\n callingSearchSpace: string;\n}\nexport interface AlternateNumberInterface {\n numberMask: string;\n addLocalRoutePartition: boolean;\n routePartition: string;\n isUrgent: boolean;\n advertiseGloballyIls: boolean;\n}\nexport interface DirectoryUriInterface {\n primary: boolean;\n uri: string;\n routePartition: string;\n advertiseGloballyIls: boolean;\n}\nexport interface ParkMonitoringInterface {\n destination: string;\n callingSearchSpace: string;\n voiceMail: boolean;\n}\nexport interface AvailablePhoneNumberRangeInterface {\n phoneNumberRange: DnRangeInterface;\n usedNumbers: string[];\n requestedNumber: string;\n unUsedNumbersWithDids: any;\n}\nexport interface DnRangeInterface {\n from: string;\n to: string;\n prefix: string;\n routePartition: string;\n dnType: DnRangeType;\n tempIdx: number;\n\n getEditableData(): any;\n\n getUsedRangeEditableData(): any;\n}\nexport enum DnRangeType {\n extension = 'EXTENSION',\n cpg = 'CPG',\n callpark = 'CALLPARK',\n huntgroup = 'HUNTGROUP',\n meetme = 'MEETME',\n did = 'DID'\n}\nexport interface AvailableRangeInterface {\n availableNumberList: AvailablePhoneNumberRangeInterface[];\n}\n","import { Injectable } from '@angular/core';\nimport { API } from '../app.constants';\nimport { APIService } from './api.service';\nimport { map } from 'rxjs/operators';\nimport Big from 'big.js';\nimport { Observable } from 'rxjs';\nimport { ApiWebexService } from '../services/api-webex.service';\nimport { AvailablePhoneNumberRangeInterface, DnRangeType } from '../classes/line';\n\n\n@Injectable()\nexport class DnsService {\n availableNumbers = {};\n availableDidPatternsMappedToDn!: any;\n phoneNumbers: string[] = [];\n\n constructor(\n private apiService: APIService,\n private apiWebexService: ApiWebexService\n ) {\n\n }\n public getNumberRange(siteId: string, routePartition: string, withdids?: boolean, from?: string, pageSize?: number): any {\n // @ts-ignore\n if (this.availableNumbers[routePartition]?.length) {\n return new Observable<any>(observer => {\n // @ts-ignore\n observer.next(this.availableNumbers[routePartition]);\n });\n }\n\n this.availableDidPatternsMappedToDn = {};\n pageSize = pageSize ? pageSize : 20;\n const params = {dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0};\n if (withdids) {\n // @ts-ignore\n params['withdids'] = 'true';\n }\n if (from) {\n // @ts-ignore\n params['from'] = from;\n }\n // @ts-ignore\n this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];\n\n return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)\n .pipe(map((res: any) => {\n res.availableNumberList.forEach((availableNumber: AvailablePhoneNumberRangeInterface) => {\n this.setAvailableDidMappedToDn(availableNumber);\n // @ts-ignore\n this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];\n });\n })\n )\n // .pipe(this.handleError(true, false));\n }\n\n public setAvailableDidMappedToDn(availableNumber: any): void {\n if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {\n\n availableNumber.unUsedNumbersWithDids.forEach((numberWithDids: any) => {\n const dn = numberWithDids['unUsedNumber'];\n this.availableDidPatternsMappedToDn[dn] = [{}];\n if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {\n this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];\n if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];\n }\n }\n this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];\n });\n }\n }\n\n public getUnwrapNumberRange(availableNumber: any): string[] {\n let unwrapNumberRange = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to)\n .map((unwrappedNumber: string) => {\n const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;\n let str = dn;\n if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {\n if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {\n str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);\n }\n if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {\n str += ' In Use - VM';\n }\n }\n return str;\n });\n unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber: string) => !availableNumber.usedNumbers.includes(unwrappedNumber));\n return unwrapNumberRange;\n }\n\n public unwrapNumberRange(start: string, end: string): string[] {\n const regExp = /(^0+)/;\n let leadingZeros = '';\n const matches = start.match(regExp);\n if (matches) {\n leadingZeros = matches[1];\n }\n const startNumeric = new Big(start);\n const endNumeric = new Big(end);\n // @ts-ignore\n return Array.from({length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0))}, (v, k) => {\n const number = String(startNumeric.plus(new Big(k)).toFixed(0));\n if ((leadingZeros + number).length > start.length) {\n leadingZeros = leadingZeros.substr(1);\n }\n return leadingZeros + number;\n });\n }\n\n public fetchPhoneNumbers(customerId: number, locationId: string): any {\n const params = {\n available: true,\n numberType: 'NUMBER'\n };\n return this.apiWebexService.fetch(API.PHONE_NUMBERS.replace(':customerId', String(customerId)).replace(':locationId', locationId), params)\n .pipe(map((result: any) => {\n if (result?.length) {\n this.phoneNumbers = result.map((item: any) => item.phoneNumber);\n }\n return result;\n }));\n }\n}\n","export class AppLocation {\n id = '';\n name = '';\n timeZone = '';\n address = new LocationAddress();\n\n constructor(props?: any) {\n if (props) {\n this.id = props.id || '';\n this.name = props.name || '';\n this.timeZone = props.timeZone || '';\n this.address = new LocationAddress(props.address);\n }\n }\n}\n\n\nexport class LocationAddress {\n country = '';\n countryName = ''\n state = ''\n city = '';\n postalCode = '';\n address1 = '';\n address2 = '';\n\n\n constructor(props?: any) {\n if (props) {\n ['country', 'countryName', 'state', 'city', 'postalCode', 'address1', 'address2'].forEach(token => {\n // @ts-ignore\n this[token] = props[token] || '';\n })\n }\n }\n}\n","import { ListUser } from './user-list';\nimport { AppLocation } from './app-location';\nimport { getSavableData } from '../utils/common-functions';\n\nexport class PrepareMigrationData {\n customerId: number = 0;\n siteId: number = 0;\n cucmId: number = 0;\n entityId = '';\n\n devices: PrepareMigrationDevice[] = [];\n softDevices : PrepareMigrationDevice[] = [];\n notSupportedDevices: PrepareMigrationDevice[] = [];\n\n primaryExtension = '';\n newExtension = '';\n removeExtension = false;\n\n primaryPhoneNumber = '';\n newPhoneNumber = '';\n removePhoneNumber = false;\n\n newLocation: AppLocation | null = null;\n newLocationName = '';\n phoneNumberWithExtension: PhoneNumberWithExtension[] = [];\n moveType: MoveType = new MoveType();\n errors: string[] = [];\n\n pending = false;\n isConfirm = false;\n\n constructor(data?: any, originData?: PrepareMigrationData) {\n if (data) {\n this.customerId = data.customerId;\n this.siteId = data.siteId;\n this.cucmId = data.cucmId;\n this.entityId = data.entityId;\n this.primaryExtension = data.primaryExtension || '';\n this.primaryPhoneNumber = data.primaryPhoneNumber || '';\n this.newLocation = originData?.newLocation || new AppLocation(data.newLocation) || this.newLocation;\n this.errors = data.errors;\n\n this.phoneNumberWithExtension = data.phoneNumberWithExtension?.length ? data.phoneNumberWithExtension.map((item: any) => new PhoneNumberWithExtension(item)) : [];\n\n this.devices = data.devices?.length ? data.devices.map(\n (deviceData: any) => new PrepareMigrationDevice(deviceData, true, false, true)) : [];\n this.softDevices = data.softDevices?.length ? data.softDevices.map(\n (deviceData: any) => new PrepareMigrationDevice(deviceData, true, true, true)) : [];\n\n this.notSupportedDevices = data.notSupportedDevices?.length ? data.notSupportedDevices.map(\n (deviceData: any) => new PrepareMigrationDevice(deviceData, false,true, false)) : [];\n }\n if (originData) {\n this.moveType = originData.moveType;\n }\n\n }\n\n eligibleDevicesSize(): number {\n return this.devices.length + this.softDevices.length;\n }\n\n getSavableData() {\n return getSavableData(this, ['pending', 'isConfirm']);\n }\n}\n\nexport class PrepareMigrationDevice {\n id!: number | null;\n mac!: string;\n product!: string;\n model!: string;\n cisUuid!: string | null;\n deviceId!: string | null;\n personId!: string | null;\n workspaceId!: string | null;\n locationId!: string | null;\n toMigrate = false;\n isToMigrateDisabled = false;\n isEligible = false;\n name = '';\n\n constructor(data?: any, toMigrate?: boolean, isToMigrateDisabled?: boolean, isEligible?: boolean) {\n data = {\n ...data.device,\n ...data,\n }\n if (data) {\n this.id = data.id ?? null;\n this.mac = data.mac;\n this.name = data.name;\n this.product = data.product;\n this.model = data.model;\n this.cisUuid = data.cisUuid ?? null;\n this.deviceId = data.deviceId ?? null;\n this.personId = data.personId ?? null;\n this.workspaceId = data.workspaceId ?? null;\n this.locationId = data.locationId ?? null;\n }\n this.toMigrate = toMigrate || this.toMigrate;\n this.isToMigrateDisabled = isToMigrateDisabled || this.isToMigrateDisabled;\n this.isEligible = isEligible || this.isEligible;\n }\n\n getSavableData() {\n const excludedFields: string[] = ['toMigrate', 'isToMigrateDisabled'];\n return getSavableData(this, excludedFields);\n }\n}\n\nexport class PhoneNumberWithExtension {\n extension = '';\n phoneNumber = '';\n\n constructor(item: any) {\n this.extension = item.extension;\n this.phoneNumber = item.phoneNumber;\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n}\n\nexport class PrepareMigrationBody {\n customerId = 0;\n locationId = '';\n entities!: PrepareMigrationEntity;\n\n constructor(userList: ListUser, customerId: number, locationId: string) {\n this.customerId = customerId || this.customerId;\n this.locationId = locationId || this.locationId;\n this.entities = new PrepareMigrationEntity(userList.cucmId, userList.userid);\n }\n\n getSavableData() {\n return getSavableData(this);\n }\n}\nexport class PrepareMigrationEntity {\n PERSON: PersonMigrationEntity[] = [];\n\n constructor(cucmId: any, entityId: string) {\n this.PERSON.push(new PersonMigrationEntity(cucmId, entityId));\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n\n}\nexport class PersonMigrationEntity {\n cucmId!: any;\n entityId = '';\n\n constructor(cucmId: any, entityId: string) {\n this.cucmId = cucmId;\n this.entityId = entityId || this.entityId;\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n}\n\nexport class MigrationData {\n customerId = 0;\n siteId = 0;\n cucmId = 0;\n entityId= '';\n primaryExtension: string | null = '';\n primaryPhoneNumber: string | null = '';\n devices: string[] = [];\n phoneNumberWithExtension: PhoneNumberWithExtension[] = [];\n\n constructor(data: PrepareMigrationData) {\n this.customerId = data.customerId;\n this.siteId = data.siteId;\n this.cucmId = data.cucmId;\n this.entityId = data.entityId;\n\n if (data.newExtension) {\n this.primaryExtension = data.newExtension;\n } else if (data.removeExtension) {\n this.primaryExtension = null;\n } else {\n this.primaryExtension = data.primaryExtension;\n }\n\n if (data.newPhoneNumber) {\n this.primaryPhoneNumber = data.newPhoneNumber;\n } else if (data.removePhoneNumber) {\n this.primaryPhoneNumber = null;\n } else {\n this.primaryPhoneNumber = data.primaryPhoneNumber;\n }\n\n this.phoneNumberWithExtension = data.phoneNumberWithExtension;\n\n if (data.devices?.length) {\n data.devices.map(device => {\n if (device.toMigrate && device.mac) {\n this.devices.push(device.mac);\n }\n });\n }\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n\n}\n\nexport class MoveType {\n phoneNumber = '1';\n extension = '1';\n\n constructor(data?: any) {\n if (data) {\n this.phoneNumber = data.phoneNumber;\n this.extension = data.extension;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { API } from '../app.constants';\nimport { map } from 'rxjs/operators';\nimport { AppLocation } from '../classes/app-location';\nimport { ApiWebexService } from '../services/api-webex.service';\n\n@Injectable()\nexport class SiteSettingsService {\n locations: AppLocation[] = [];\n\n constructor(\n private apiWebexService: ApiWebexService\n ) {\n\n }\n\n getLocations(customerId: number): any {\n return this.apiWebexService.fetch(API.GET_LOCATIONS.replace(':customerId', String(customerId)), {})\n .pipe(map((result: any) => {\n if (result && result.length) {\n this.locations = result.map((location: any) => new AppLocation(location))\n }\n return result;\n }))\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { APIService } from './api.service';\r\nimport { ApiWebexService } from '../services/api-webex.service';\r\nimport { API } from '../app.constants';\r\nimport { map } from 'rxjs/operators';\r\nimport { MigrationData, PrepareMigrationBody, PrepareMigrationData } from '../classes/move-user';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class MoveUserService {\r\n prepareMigrationData!: PrepareMigrationData;\r\n originPrepareMigrationData!: PrepareMigrationData;\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService\r\n ) {\r\n\r\n }\r\n\r\n resetMigrationDataForNewLocation(): void {\r\n this.prepareMigrationData.newExtension = '';\r\n this.prepareMigrationData.newPhoneNumber = '';\r\n this.prepareMigrationData.newExtension = '';\r\n\r\n }\r\n\r\n setOriginPrepareMigrationData(): void {\r\n const data = JSON.parse(JSON.stringify(this.prepareMigrationData.getSavableData()));\r\n this.originPrepareMigrationData = new PrepareMigrationData(data);\r\n }\r\n\r\n fetchPrepareMigrationData(data: PrepareMigrationBody): any {\r\n return this.apiWebexService.post(API.PREPARE_PERSON_MIGRATION, data.getSavableData())\r\n .pipe(map((result: any) => {\r\n if (result) {\r\n this.prepareMigrationData = new PrepareMigrationData(result, this.originPrepareMigrationData);\r\n }\r\n return result;\r\n }));\r\n // .pipe(this.handleError(false, true));\r\n }\r\n\r\n startMigration(data: MigrationData): any {\r\n /* return new Observable<boolean>(observer => {\r\n setTimeout(() => {\r\n observer.next(true);\r\n\r\n }, 2000);\r\n });*/\r\n return this.apiWebexService.post(API.START_MIGRATION, data.getSavableData())\r\n .pipe(map((result: any) => {\r\n if (data) {\r\n this.prepareMigrationData = new PrepareMigrationData(data);\r\n }\r\n }));\r\n // .pipe(this.handleError(false, true));\r\n }\r\n}\r\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { PrepareMigrationDevice } from '../../../classes/move-user';\nimport { AppLocation } from '../../../classes/app-location';\nimport { DnsService } from '../../../services/dns.service';\nimport { UserService } from '../../../services/user.service';\nimport { SiteSettingsService } from '../../../services/site-settings.service';\n@Component({\n selector: 'app-device-move-user-wizard',\n templateUrl: './device-move-user-wizard.component.html',\n styleUrls: ['./device-move-user-wizard.component.scss']\n\n})\nexport class DeviceMoveUserWizardComponent implements OnInit {\n @Input()\n device!: PrepareMigrationDevice;\n\n\n get moveUserPending(): boolean {\n return this.userService.moveUserPending;\n }\n\n get locations(): AppLocation[] {\n return this.siteSettingsService.locations;\n }\n\n constructor(\n public dnsService: DnsService,\n public userService: UserService,\n public siteSettingsService: SiteSettingsService\n ) {\n }\n\n ngOnInit() {\n\n }\n\n onMigrateDeviceChecked(event: any): void {\n\n }\n\n\n private resetMoveTypePhoneNUmber(): void {\n this.dnsService.phoneNumbers = [];\n }\n\n}\n","<form>\n <div class=\"device-item-panel-container\">\n <div class=\"device-left\">\n <div\n class=\"device-migration-status\"\n [ngClass]=\"{'--checked': device.toMigrate}\"\n >\n <mat-checkbox\n class=\"rounded\"\n [checked]=\"device.toMigrate\"\n ></mat-checkbox>\n </div>\n </div>\n <div class=\"device-right\">\n <div class=\"device-header\">\n <div class=\"device-name\">{{ device.name }}</div>\n <div class=\"device-migrate\" *ngIf=\"device.isEligible\">\n <mat-checkbox name=\"toMigrate\"\n [(ngModel)]=\"device.toMigrate\"\n >Migrate this device</mat-checkbox>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"device-info\">\n <div *ngIf=\"device.product\" class=\"device-info__item\">\n <div class=\"key\">Device type</div>\n <div class=\"value\">{{ device.product }}</div>\n </div>\n <div *ngIf=\"device.mac\" class=\"device-info__item\">\n <div class=\"key\">MAC address</div>\n <div class=\"value\">{{ device.mac }}</div>\n </div>\n\n </div>\n </div>\n </div>\n</form>\n","import { Component, OnInit } from \"@angular/core\";\nimport { PrepareMigrationData } from '../../../classes/move-user';\nimport { MoveUserService } from '../../../services/move-user.service';\n@Component({\n selector: 'app-devices-move-user-tab',\n templateUrl: './devices-move-user-wizard-tab.component.html',\n styleUrls: ['./devices-move-user-wizard-tab.component.scss']\n\n})\nexport class DevicesMoveUserWizardTabComponent implements OnInit {\n\n get prepareMigrationData(): PrepareMigrationData {\n return this.moveUserService.prepareMigrationData;\n }\n\n constructor(\n public moveUserService: MoveUserService,\n ) {\n }\n\n ngOnInit() {\n\n }\n\n\n}\n","<div *ngIf=\"prepareMigrationData.eligibleDevicesSize\"\n class=\"devices-move-user-box eligible-devices-section\" >\n <div class=\"section-title\">Eligible devices ({{ prepareMigrationData.eligibleDevicesSize() }})</div>\n <div class=\"section-content\">\n <div *ngIf=\"prepareMigrationData.devices?.length\" class=\"device-group\">\n <div class=\"group-title\">IP Phones</div>\n <ng-container *ngFor=\"let device of prepareMigrationData.devices\">\n <app-device-move-user-wizard [device]=\"device\"></app-device-move-user-wizard>\n </ng-container>\n </div>\n\n <div *ngIf=\"prepareMigrationData.softDevices?.length\" class=\"device-group\">\n <div class=\"group-title\">Soft Devices</div>\n <ng-container *ngFor=\"let device of prepareMigrationData.softDevices\">\n <app-device-move-user-wizard [device]=\"device\"></app-device-move-user-wizard>\n </ng-container>\n </div>\n </div>\n</div>\n<mat-divider *ngIf=\"prepareMigrationData.notSupportedDevices.length\"></mat-divider>\n<div *ngIf=\"prepareMigrationData.notSupportedDevices.length\" class=\"ineligible-devices-section\">\n <div class=\"section-title\">Ineligible devices ({{ prepareMigrationData.notSupportedDevices.length }})</div>\n <div class=\"section-content\">\n <div class=\"device-group\">\n <ng-container *ngFor=\"let device of prepareMigrationData.notSupportedDevices\">\n <app-device-move-user-wizard [device]=\"device\"></app-device-move-user-wizard>\n </ng-container>\n </div>\n </div>\n</div>\n\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { DnsService } from '../../services/dns.service';\r\nimport { MatStepper } from \"@angular/material/stepper\";\r\nimport { UserService } from '../../services/user.service';\r\nimport { AppLocation } from '../../classes/app-location';\r\nimport { SiteSettingsService } from '../../services/site-settings.service';\r\nimport { filterOptions } from '../../utils/common-functions';\r\nimport { MigrationData, PrepareMigrationBody, PrepareMigrationData } from '../../classes/move-user';\r\nimport { MoveUserService } from '../../services/move-user.service';\r\nimport { NotificationService } from '../../services/notification.service';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\n// for test only\r\nconst LOCATION = 'Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzE2YjY0NjljLTBjZmQtNDJjMS1iOWJjLTUyN2FlZTNhN2RlOQ';\r\n\r\n@Component({\r\n selector: 'app-move-user-stepper',\r\n templateUrl: './move-user-stepper.component.html',\r\n styleUrls: ['./move-user-stepper.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MoveUserStepperComponent implements OnInit {\r\n @ViewChild('nextAfterMoveBtn') nextAfterMoveBtn: any;\r\n @ViewChild('stepper') stepper!: MatStepper;\r\n\r\n @Output()\r\n done = new EventEmitter();\r\n @Input()\r\n user: any;\r\n @Input()\r\n customerId!: number;\r\n @Output()\r\n runMoveUser = new EventEmitter();\r\n @Output()\r\n cancel = new EventEmitter();\r\n isLinear = false;\r\n phoneNumberPending = false;\r\n filteredLocations: AppLocation[] = [];\r\n filteredPhoneNumbers: any;\r\n dataPending = false;\r\n\r\n get moveUserPending(): boolean {\r\n return this.userService.moveUserPending;\r\n }\r\n\r\n get currentNumber(): string {\r\n if (this.user?.devices?.length && this.user.devices[0]?.lineAssociations && this.user.devices[0].lineAssociations[0]) {\r\n return this.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber;\r\n }\r\n return '';\r\n }\r\n\r\n get locations(): AppLocation[] {\r\n return this.siteSettingsService.locations;\r\n }\r\n\r\n get prepareMigrationData(): PrepareMigrationData {\r\n return this.moveUserService.prepareMigrationData;\r\n }\r\n\r\n constructor(\r\n public dnsService: DnsService,\r\n public userService: UserService,\r\n public siteSettingsService: SiteSettingsService,\r\n private notificationService: NotificationService,\r\n public moveUserService: MoveUserService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.moveUserService.prepareMigrationData = new PrepareMigrationData();\r\n this.getData();\r\n }\r\n\r\n displayLocation(location?: AppLocation): string {\r\n return location?.name || '';\r\n }\r\n\r\n onLocationAutocomplete(event: any): void {\r\n const value = (event.target as HTMLInputElement).value;\r\n\r\n if (this.locations?.length) {\r\n this.filteredLocations = filterOptions(this.locations, value || '', '', 'name');\r\n }\r\n }\r\n\r\n onNumberAutocomplete(): void {\r\n if (this.dnsService.phoneNumbers?.length) {\r\n this.filteredPhoneNumbers = filterOptions(this.dnsService.phoneNumbers, this.prepareMigrationData.newPhoneNumber);\r\n }\r\n }\r\n\r\n onMoveUser(stepper: MatStepper): void {\r\n this.stepper = stepper;\r\n this.runMoveUser.emit();\r\n }\r\n\r\n onStepChange(event: any): void {\r\n }\r\n\r\n selectPhoneNumberMigrationType(event: any): void {\r\n if (event.value && event.value === '2') {\r\n this.getPhoneNumbers();\r\n }\r\n this.moveUserService.prepareMigrationData.removePhoneNumber = event.value && event.value === '3';\r\n }\r\n\r\n selectExtensionMigrationType(event: any): void {\r\n this.moveUserService.prepareMigrationData.removeExtension = event.value && event.value === '3';\r\n }\r\n\r\n onPhoneNumberChange(event: any): void {\r\n console.log('new phone number = ', this.prepareMigrationData.newPhoneNumber);\r\n }\r\n\r\n onLocationChange(event: MatAutocompleteSelectedEvent): void {\r\n this.moveUserService.prepareMigrationData.newLocation = event.option.value;\r\n this.moveUserService.resetMigrationDataForNewLocation();\r\n\r\n if (this.prepareMigrationData.moveType.phoneNumber === '2') {\r\n this.getPhoneNumbers();\r\n }\r\n this.getPrepareUserData();\r\n }\r\n\r\n onExtensionChange(event: any): void {\r\n console.log('new newExtension = ', this.prepareMigrationData.newExtension);\r\n }\r\n\r\n getPhoneNumbers(): void {\r\n if (!this.prepareMigrationData.newLocation?.id) {\r\n return;\r\n }\r\n this.phoneNumberPending = true;\r\n this.dnsService.fetchPhoneNumbers(this.customerId, this.prepareMigrationData.newLocation.id)\r\n .subscribe(() => {\r\n this.phoneNumberPending = false;\r\n this.filteredPhoneNumbers = this.dnsService.phoneNumbers.slice();\r\n }, () => this.phoneNumberPending = false);\r\n }\r\n\r\n isNextFromSelectLocationDisabled(): boolean {\r\n if (!this.prepareMigrationData?.newLocation?.id || !this.prepareMigrationData.entityId) {\r\n return true;\r\n }\r\n if (this.prepareMigrationData.moveType.phoneNumber === '2' && !this.prepareMigrationData.newPhoneNumber) {\r\n return true;\r\n }\r\n if (this.prepareMigrationData.moveType.extension === '2' && !this.prepareMigrationData.newExtension) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n goNextStep(stepper: MatStepper) {\r\n\r\n }\r\n\r\n startMigration(): void {\r\n const migrationData = new MigrationData(this.prepareMigrationData);\r\n this.dataPending = true;\r\n this.moveUserService.startMigration(migrationData)\r\n .subscribe((result: any) => {\r\n this.dataPending = false;\r\n if (this.stepper) {\r\n this.stepper.next();\r\n }\r\n }, () => {\r\n this.dataPending = false;\r\n })\r\n }\r\n\r\n getData(): void {\r\n if (!this.user) {\r\n return;\r\n }\r\n this.dataPending = true;\r\n this.siteSettingsService.getLocations(this.customerId)\r\n .subscribe(() => {\r\n if (this.locations?.length) {\r\n this.filteredLocations = this.locations.slice();\r\n }\r\n this.dataPending = false;\r\n }, () => this.dataPending = false)\r\n }\r\n\r\n private getPrepareUserData() {\r\n if (this.prepareMigrationData?.newLocation?.id) {\r\n this.moveUserService.setOriginPrepareMigrationData();\r\n const prepareMigrationBody = new PrepareMigrationBody(this.user, this.customerId, this.prepareMigrationData.newLocation.id);\r\n this.moveUserService.prepareMigrationData.pending = true;\r\n this.moveUserService.fetchPrepareMigrationData(prepareMigrationBody)\r\n .subscribe(() => {\r\n\r\n }, () => {\r\n this.moveUserService.prepareMigrationData.pending = false;\r\n this.notificationService.error('Move user attempt is failed');\r\n });\r\n }\r\n\r\n }\r\n\r\n private resetMoveTypePhoneNUmber(): void {\r\n this.dnsService.phoneNumbers = [];\r\n }\r\n\r\n}\r\n","<app-loader *ngIf=\"prepareMigrationData.pending || moveUserPending || dataPending\"></app-loader>\r\n<div id=\"move-user-stepper\">\r\n <mat-stepper *ngIf=\"prepareMigrationData?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n <!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <form>\r\n <div class=\"move-user-tab-content-box\">\r\n <mat-label class=\"mat-label\">Select a new location</mat-label>\r\n <mat-form-field class=\"app-autocomplete-input\" appearance=\"outline\">\r\n <input placeholder=\"Select location\" [matAutocomplete]=\"auto\" matInput\r\n (input)=\"onLocationAutocomplete($event)\"/>\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayLocation\"\r\n (optionSelected)=\"onLocationChange($event)\">\r\n <mat-option *ngFor=\"let location of filteredLocations\" [value]=\"location\">\r\n {{ location.name }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div *ngIf=\"!dataPending && !locations?.length\" class=\"mat-error\">\r\n Locations are not available\r\n </div>\r\n\r\n <ng-container *ngIf=\"prepareMigrationData?.newLocation?.id\">\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"moveTypePhoneNumber\"\r\n [(ngModel)]=\"prepareMigrationData.moveType.phoneNumber\" name=\"phoneNumber\"\r\n (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"1\"\r\n color=\"primary\">\r\n Keep current number\r\n {{ prepareMigrationData.primaryPhoneNumber || currentNumber }}\r\n </mat-radio-button>\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"2\"\r\n color=\"primary\"\r\n [disabled]=\"!prepareMigrationData.newLocation?.id\">\r\n Select a new number\r\n </mat-radio-button>\r\n\r\n <div *ngIf=\"prepareMigrationData.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\" class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"70\" strokeWidth=\"3\"></mat-progress-spinner>\r\n\r\n <mat-form-field class=\"app-autocomplete-input\" appearance=\"outline\">\r\n <input placeholder=\"Select number\" [(ngModel)]=\"prepareMigrationData.newPhoneNumber\"\r\n [matAutocomplete]=\"autoPh\" matInput name=\"newPhoneNumber\"\r\n (input)=\"onNumberAutocomplete()\"/>\r\n <mat-autocomplete #autoPh=\"matAutocomplete\" (optionSelected)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let number of filteredPhoneNumbers\" [value]=\"number\">\r\n {{ number }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div *ngIf=\"!phoneNumberPending && !dnsService.phoneNumbers?.length\" class=\"mat-error\">\r\n Phone numbers are not available for this location\r\n </div>\r\n </div>\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"3\"\r\n color=\"primary\"\r\n [disabled]=\"prepareMigrationData.removeExtension\">\r\n Remove number\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"moveTypeExtension\"\r\n (change)=\"selectExtensionMigrationType($event)\"\r\n [(ngModel)]=\"prepareMigrationData.moveType.extension\">\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"1\"\r\n color=\"primary\">\r\n Keep current extension {{ prepareMigrationData.primaryExtension }}\r\n </mat-radio-button>\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"2\"\r\n color=\"primary\">\r\n Select a new extension\r\n </mat-radio-button>\r\n\r\n <div *ngIf=\"prepareMigrationData.moveType.extension === '2'\" class=\"input-container\">\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n type=\"text\"\r\n name=\"newExtension\"\r\n (change)=\"onExtensionChange($event)\"\r\n [(ngModel)]=\"prepareMigrationData.newExtension\"\r\n [placeholder]=\"'Enter extension'\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"3\"\r\n color=\"primary\"\r\n [disabled]=\"prepareMigrationData.removePhoneNumber\">Remove extension\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </ng-container>\r\n </div>\r\n </form>\r\n\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext\r\n [disabled]=\"isNextFromSelectLocationDisabled()\" (click)=\"goNextStep(stepper)\">\r\n Next\r\n </button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <div class=\"move-user-tab-content-box\">\r\n <app-devices-move-user-tab></app-devices-move-user-tab>\r\n </div>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">\r\n Next\r\n </button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>\r\n Previous\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n\r\n <div class=\"devices-move-user-box\">\r\n <mat-label class=\"mat-label\">Validation</mat-label>\r\n <div *ngIf=\"!prepareMigrationData.errors?.length\">\r\n <ng-container *ngTemplateOutlet=\"validationSuccess\">\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"prepareMigrationData.errors?.length\">\r\n <ng-container *ngTemplateOutlet=\"validationFailed\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n <button #nextAfterMoveBtn mat-button class=\"invisible-next-btn\" matStepperNext\r\n (click)=\"goNextStep(stepper)\"></button>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\"\r\n [disabled]=\"prepareMigrationData && prepareMigrationData.errors && prepareMigrationData.errors.length > 0 || !prepareMigrationData.isConfirm\"\r\n (click)=\"startMigration()\">\r\n Upgrade\r\n </button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>\r\n Previous\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 4: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n\r\n <div class=\"devices-move-user-box\">\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location {{prepareMigrationData.newLocation?.name}}\r\n <br/>\r\n For the progress of move, please visit the\r\n <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-done\" (click)=\"done.emit(true)\">\r\n Done\r\n </button>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n</div>\r\n\r\n<ng-template #validationSuccess>\r\n <p class=\"validation-text\">\r\n Validation has completed successfully. The user can be moved to the\r\n new location. Please be aware of the potential impact of the changes\r\n below.\r\n </p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Cisco 6941 device (SEP987987987987) will not be migrated</li>\r\n <li>\r\n The user will be removed from the Call Pickup Group:\r\n 1675090334-Paris_pickup\r\n </li>\r\n <li>\r\n If Webex App is currently in use, the user will to sign in again to\r\n update the service.\r\n </li>\r\n </ul>\r\n <form>\r\n <mat-checkbox class=\"checkbox\" name=\"isConfirm\" [(ngModel)]=\"prepareMigrationData.isConfirm\"\r\n color=\"primary\">\r\n I confirm that I understand these conditions. I acknowledge the\r\n changes.\r\n </mat-checkbox>\r\n </form>\r\n\r\n</ng-template>\r\n\r\n<ng-template #validationFailed>\r\n <p class=\"validation-text\">\r\n Validation is failed. User migration is not available\r\n </p>\r\n <ul>\r\n <li *ngFor=\"let error of prepareMigrationData.errors\">{{ error }}</li>\r\n </ul>\r\n</ng-template>\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { DnsService } from '../services/dns.service';\n\n\n@Component({\n selector: 'app-move-user-wizard',\n templateUrl: './move-user-wizard.component.html',\n styleUrls: ['./move-user-wizard.component.scss']\n})\nexport class MoveUserWizardComponent {\n @Input()\n user: any;\n @Input()\n customerId!: number;\n @Output()\n closeMoveUserWizard = new EventEmitter();\n @Output()\n done = new EventEmitter();\n @Output()\n runMoveUser = new EventEmitter();\n dataPending = false;\n\n constructor(\n public dnsService: DnsService\n ) {\n\n }\n\n onClose(): void {\n this.closeMoveUserWizard.emit();\n }\n\n onRunMoveUser(): void {\n this.runMoveUser.emit();\n }\n}\n","<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"move-user-stepper-container\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">Upgrade User {{user.userid}}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon icon-white-close\" (click)=\"onClose()\"></span>\r\n </div>\r\n </header>\r\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\"\r\n [user]=\"user\" (cancel)=\"onClose()\" (done)=\"done.emit()\"\r\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { USER_TYPES_TYPE } from \"../../app.constants\";\r\n\r\n@Component({\r\n selector: 'tk-users-table-toolbar',\r\n templateUrl: './table-toolbar.component.html',\r\n styleUrls: ['./table-toolbar.component.scss']\r\n})\r\nexport class TableToolbarComponent {\r\n @Input() totalUsersCount!: number;\r\n @Input() searchValue = '';\r\n @Input() selectedUserType: USER_TYPES_TYPE = null;\r\n @Output() readonly searchChange = new EventEmitter<string>();\r\n @Output() readonly searchByType = new EventEmitter<USER_TYPES_TYPE>();\r\n @Output() readonly addUser = new EventEmitter<void>();\r\n\r\n private timerId!: number;\r\n\r\n onSearchInputChange(event: Event): void {\r\n const value = (event.target as HTMLInputElement).value.trim().toLowerCase() || '';\r\n\r\n if (this.timerId) window.clearTimeout(this.timerId);\r\n\r\n this.timerId = window.setTimeout(() => this.searchChange.emit(value), 1500);\r\n }\r\n\r\n public onTypeChange(event: Event): void {\r\n const value = (event.target as HTMLSelectElement).value as USER_TYPES_TYPE;\r\n\r\n this.searchByType.emit(value);\r\n }\r\n\r\n onAddUser(): void {\r\n this.addUser.emit();\r\n }\r\n}","<header style=\"margin-bottom: 1rem\">\r\n <div\r\n style=\"display: flex; align-items: center; justify-content: space-between\"\r\n >\r\n <div class=\"collection-header-left\">\r\n <div style=\"display: flex; align-items: center; gap: 12px\">\r\n <!-- Search Input -->\r\n <div style=\"position: relative; width: fit-content; min-width: 200px\">\r\n <input\r\n [value]=\"searchValue\"\r\n (input)=\"onSearchInputChange($event)\"\r\n type=\"text\"\r\n placeholder=\"Search by display name, email\"\r\n style=\"\r\n width: 100%;\r\n height: 34px;\r\n border-radius: 0.5rem;\r\n font-size: 16px;\r\n padding: 6px 12px 6px 44px;\r\n border: 1px solid #00000080;\r\n background: #fff;\r\n color: #222;\r\n outline: none;\r\n box-sizing: border-box;\r\n min-width: 280px;\r\n \"\r\n />\r\n <span\r\n style=\"\r\n position: absolute;\r\n left: 12px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n color: #757575;\r\n font-size: 18px;\r\n font-weight: normal;\r\n pointer-events: none;\r\n \"\r\n >\r\n <i\r\n class=\"material-icons\"\r\n style=\"font-size: 18px; font-weight: normal\"\r\n >search</i\r\n >\r\n </span>\r\n </div>\r\n <span style=\"margin: 0 4px; color: #757575; font-size: 1rem\">or</span>\r\n <!-- Filter Select -->\r\n <div\r\n style=\"\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n width: fit-content;\r\n min-width: 200px;\r\n \"\r\n >\r\n <span\r\n style=\"\r\n position: absolute;\r\n left: 12px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n color: #757575;\r\n font-size: 18px;\r\n font-weight: normal;\r\n pointer-events: none;\r\n \"\r\n >\r\n <i\r\n class=\"material-icons\"\r\n style=\"font-size: 18px; font-weight: normal\"\r\n >filter_list</i\r\n >\r\n </span>\r\n <select\r\n style=\"\r\n height: 34px;\r\n border-radius: 0.5rem;\r\n font-size: 16px;\r\n padding: 6px 32px 6px 44px;\r\n border: 1px solid #00000080;\r\n background: #fff;\r\n min-width: 200px;\r\n width: fit-content;\r\n color: #222;\r\n appearance: none;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n background-image: url(&quot;data:image/svg+xml;utf8,<svg fill='%23757575' height='20' viewBox='0 0 24 24' width='20' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>&quot;);\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n background-size: 20px 20px;\r\n \"\r\n >\r\n <option>Filter</option>\r\n </select>\r\n </div>\r\n <span style=\"margin: 0 4px; color: #757575; font-size: 1rem\">or</span>\r\n <!-- Location Select -->\r\n <select\r\n style=\"\r\n height: 34px;\r\n border-radius: 0.5rem;\r\n font-size: 16px;\r\n padding: 6px 32px 6px 12px;\r\n border: 1px solid #00000080;\r\n background: #fff;\r\n min-width: 200px;\r\n width: fit-content;\r\n color: #222;\r\n appearance: none;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n background-image: url(&quot;data:image/svg+xml;utf8,<svg fill='%23757575' height='20' viewBox='0 0 24 24' width='20' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>&quot;);\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n background-size: 20px 20px;\r\n \"\r\n >\r\n <option>Select a Location</option>\r\n </select>\r\n\r\n <select\r\n [value]=\"selectedUserType || ''\"\r\n style=\"\r\n height: 34px;\r\n border-radius: 0.5rem;\r\n font-size: 16px;\r\n padding: 6px 32px 6px 12px;\r\n border: 1px solid #00000080;\r\n background: #fff;\r\n min-width: 200px;\r\n width: fit-content;\r\n color: #222;\r\n appearance: none;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n background-image: url(&quot;data:image/svg+xml;utf8,<svg fill='%23757575' height='20' viewBox='0 0 24 24' width='20' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>&quot;);\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n background-size: 20px 20px;\r\n \"\r\n (change)=\"onTypeChange($event)\"\r\n >\r\n <option value=\"null\" disabled hidden>Select type</option>\r\n <option value=\"\">All</option>\r\n <option value=\"CUCM\">Webex Calling DI</option>\r\n <option value=\"WEBEX\">Webex Calling</option>\r\n <option value=\"ONPREM\">UCM</option>\r\n </select>\r\n <span\r\n style=\"\r\n margin-left: 8px;\r\n color: #757575;\r\n font-size: 1rem;\r\n white-space: nowrap;\r\n \"\r\n >{{ totalUsersCount }} users</span\r\n >\r\n </div>\r\n </div>\r\n <div style=\"display: flex; gap: 1rem\">\r\n <button class=\"btn mu\" (click)=\"onAddUser()\">Add user</button>\r\n </div>\r\n </div>\r\n</header>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NotificationService } from '../../services/notification.service';\nimport { Notification } from '../../classes/notification';\n\n@Component({\n selector: 'app-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationsComponent implements OnInit, OnDestroy {\n public list!: Notification[];\n public isReadMore!: boolean;\n private listSubscription!: Subscription;\n\n constructor(\n public notificationService: NotificationService,\n private ref: ChangeDetectorRef\n ) {\n }\n\n ngOnInit() {\n this.listChangeSubscribe();\n }\n\n ngOnDestroy() {\n this.listSubscription.unsubscribe();\n }\n\n public readMore(): void {\n this.isReadMore = !this.isReadMore;\n }\n\n public removeNotification(notification: Notification): void {\n this.notificationService.remove(notification);\n }\n\n private listChangeSubscribe(): void {\n this.listSubscription = this.notificationService.listChange\n .subscribe((list: any) => {\n this.list = list;\n this.ref.detectChanges();\n });\n }\n}\n","<div class=\"notification-block\" role=\"alert\" aria-live=\"assertive\">\n <div\n class=\"notification\"\n *ngFor=\"let notification of list\"\n [ngClass]=\"{\n error: notification.isError(),\n success: notification.isSuccess(),\n }\"\n >\n <div class=\"flex-box\">\n <div class=\"notification-icons-block\">\n <i\n *ngIf=\"notification.isError()\"\n class=\"fa fa-exclamation-triangle\"\n ></i>\n <i *ngIf=\"notification.isWarning()\" class=\"fa fa-hand-paper-o\"></i>\n <i *ngIf=\"notification.isSuccess()\" class=\"fa fa-check\"></i>\n <i *ngIf=\"notification.isInfo()\" class=\"fa fa-info-circle\"></i>\n </div>\n <div *ngIf=\"!isReadMore\" class=\"message-block\">\n {{ notification.message }}\n </div>\n <div *ngIf=\"isReadMore\" class=\"message-block\">\n {{ notification.message }}\n </div>\n </div>\n <div\n class=\"read-more-error link clickable\"\n *ngIf=\"notification.message && notification.message.length > 93\"\n (click)=\"readMore()\"\n >\n {{ isReadMore ? \"Collapse\" : \"Read more\" }}\n </div>\n <button\n class=\"close\"\n mat-icon-button\n matTooltip=\"Close notification\"\n (click)=\"removeNotification(notification)\"\n >\n <img\n class=\"notification-icon-close\"\n src=\"assets/icons/close_icon_modal.svg\"\n alt=\"\"\n />\n </button>\n </div>\n</div>\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { UserService } from './services/user.service';\r\nimport { APIService } from './services/api.service';\r\nimport { NotificationService } from './services/notification.service';\r\nimport { debounceTime, EMPTY, map, Observable, Subject, Subscription, switchMap, takeUntil, takeWhile, timer } from 'rxjs';\r\nimport { UsersSearchService } from './services/users-search.service';\r\nimport { ListUser } from './classes/user-list';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { ApiWebexService } from './services/api-webex.service';\r\nimport { API, CUSTOMER_DESTINATION, MAX_INTEGER, ON_PREM_ID, USER_TYPES_MAP, USER_TYPES_TYPE } from './app.constants';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { UserListConfirmDialogComponent } from './user-list-confirm-dialog/user-list-confirm-dialog.component';\r\n\r\nconst DISPLAYED_COLS = [\r\n 'name',\r\n 'email',\r\n 'status',\r\n 'last-active-time',\r\n 'role',\r\n 'source',\r\n 'actions',\r\n];\r\nconst LOCAL_STORAGE = {\r\n USER_IN_MIGRATION: 'userIdInMigration',\r\n MIGRATION_FORM_ID: 'migrationFormId',\r\n};\r\n\r\ntype FirmwareDeviceMap = Record<number, Record<string, string[]>>;\r\n\r\ninterface MigratedEntityLike {\r\n id?: number | string | null;\r\n cucmId?: number | string | null;\r\n devices?: unknown[];\r\n sourceSite?: {\r\n id?: number | string | null;\r\n name?: string | null;\r\n } | null;\r\n webexMigrationDevices?: unknown[];\r\n}\r\n\r\ninterface MigratedDeviceLike {\r\n device?: MigratedDeviceLike;\r\n id?: number | string | null;\r\n name?: string | null;\r\n mac?: string | null;\r\n deviceId?: string | null;\r\n cisUuid?: string | null;\r\n cucmId?: number | string | null;\r\n isRegistered?: boolean | null;\r\n deviceToUpgrade?: boolean | null;\r\n isEligible?: boolean | null;\r\n lineAssociations?: Array<{\r\n directoryNumber?: {\r\n directoryNumber?: string | null;\r\n templateDirectoryNumber?: string | null;\r\n } | null;\r\n e164Mask?: string | null;\r\n }>;\r\n lines?: Array<{\r\n directoryNumber?: {\r\n directoryNumber?: string | null;\r\n templateDirectoryNumber?: string | null;\r\n } | null;\r\n }>;\r\n}\r\n\r\n@Component({\r\n selector: 'app-users-list',\r\n templateUrl: './users-list.component.html',\r\n styleUrls: ['./users-list.component.scss'],\r\n})\r\nexport class UsersListComponent implements OnInit, OnDestroy {\r\n @Input() token!: string;\r\n @Input() customerId!: number;\r\n @Input() siteId!: number;\r\n\r\n @Output() openUser = new EventEmitter();\r\n @Output() userMoved = new EventEmitter();\r\n @Output() switchToWizard = new EventEmitter();\r\n @Output() createUserRequested = new EventEmitter<void>();\r\n\r\n @Input() host!: string;\r\n\r\n dataPending!: boolean;\r\n moveInProgressUserId!: string;\r\n users!: ListUser[];\r\n private baseUsers: ListUser[] = [];\r\n dataSource!: MatTableDataSource<ListUser>;\r\n displayedColumns = DISPLAYED_COLS;\r\n moveUser: any;\r\n moveUserIndex: any;\r\n showMoveUserWizard = false;\r\n moveUserPending = false;\r\n private subscriptions: Subscription[] = [];\r\n\r\n activeSearchToken = '';\r\n activeUserType: USER_TYPES_TYPE = null;\r\n\r\n public readonly ON_PREM_ID = ON_PREM_ID;\r\n\r\n totalUsersCount: number = 0;\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n getTodayShortDate(): string {\r\n const now = new Date();\r\n const month = now.getMonth() + 1;\r\n const day = now.getDate();\r\n const year = now.getFullYear() % 100;\r\n return `${month}/${day}/${year.toString().padStart(2, '0')}`;\r\n }\r\n\r\n private isMigrationStatusCompleted(status: string | null | undefined): boolean {\r\n const normalized = (status || '').toUpperCase();\r\n return normalized === 'COMPLETED';\r\n }\r\n\r\n private isMigrationStatusCompletedWithErrors(status: string | null | undefined): boolean {\r\n const normalized = (status || '').toUpperCase();\r\n return normalized === 'COMPLETED_WITH_ERRORS';\r\n }\r\n\r\n private refreshUsersAfterOperation(delayMs: number = 0): void {\r\n if (delayMs > 0) {\r\n window.setTimeout(() => this.getMigratedUsers(), delayMs);\r\n return;\r\n }\r\n this.getMigratedUsers();\r\n }\r\n\r\n private handleCompletedWithErrorsByUserId(userId: string): void {\r\n const index = this.getUserIndexById(userId);\r\n this.removeUserInMigrationProgress();\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'Completed with errors');\r\n window.setTimeout(() => this.setStatusToUser(index, 'Inactive'), 5000);\r\n this.refreshUsersAfterOperation(5000);\r\n }\r\n }\r\n\r\n private isMigrationStatusFailed(status: string | null | undefined): boolean {\r\n const normalized = (status || '').toUpperCase();\r\n return normalized === 'FAILED' || normalized === 'ERROR';\r\n }\r\n\r\n get form(): FormGroup {\r\n return this.userService?.user?.form;\r\n }\r\n\r\n constructor(\r\n public userService: UserService,\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService,\r\n private notifications: NotificationService,\r\n public usersSearchService: UsersSearchService,\r\n private dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.usersSearchService.setDefaultValues();\r\n this.usersSearchService.customerId = this.customerId;\r\n this.usersSearchService.siteId = this.siteId;\r\n this.apiService.token = this.token;\r\n this.apiWebexService.token = this.token;\r\n this.apiService.apiUrl = this.host + '/dcp';\r\n this.apiWebexService.apiUrl = this.host + '/webex';\r\n\r\n /*this.usersSearchService.getUsersUpgradeStatus(this.usersSearchService.customerId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe();*/\r\n\r\n this.getMigratedUsers();\r\n const subscription = this.usersSearchService.foundUsers$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (users: ListUser[]) => {\r\n if (this.usersSearchService.usersUpgradeStatus?.length) {\r\n this.initializeDataSource(users);\r\n } else {\r\n this.subscribeToUpgradeUsersStatus(users);\r\n }\r\n },\r\n );\r\n this.subscriptions.push(subscription);\r\n\r\n console.log('users list paris 7773');\r\n }\r\n\r\n ngOnDestroy() {\r\n this.usersSearchService.usersUpgradeStatus = null;\r\n if (this.subscriptions?.length) {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n }\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n pageNumberChangeEvent(perPageNumber: number): void {\r\n this.usersSearchService.pageSize = perPageNumber;\r\n this.usersSearchService.pageIndex = 0;\r\n this.runSearch();\r\n }\r\n\r\n closeMoveUserWizard(afterUserMove?: boolean): void {\r\n this.moveUser = null;\r\n this.moveUserIndex = null;\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n localStorage.removeItem(LOCAL_STORAGE.MIGRATION_FORM_ID);\r\n this.showMoveUserWizard = false;\r\n this.switchToWizard.emit(false);\r\n if (afterUserMove) {\r\n this.getMigratedUsers();\r\n }\r\n }\r\n\r\n pageEvent(event: PageEvent): void {\r\n this.usersSearchService.pageSize = event.pageSize;\r\n this.usersSearchService.pageIndex = event.pageIndex;\r\n this.runSearch();\r\n }\r\n\r\n onUserClick(user: ListUser): void {\r\n localStorage.setItem('isWebex', String(!!user.webexUUID));\r\n localStorage.setItem('webexUUID', 'null');\r\n if (user.webexUUID) {\r\n localStorage.setItem('webexUUID', String(user.webexUUID));\r\n }\r\n this.openUser.emit(user);\r\n }\r\n\r\n moveUserToMT(user: ListUser): void {\r\n if (user && user.siteId && user.userid) {\r\n this.moveUserPending = true;\r\n this.moveInProgressUserId = user.userid;\r\n const currentIndex = this.getUserIndexById(user.userid);\r\n if (currentIndex > -1) {\r\n this.setStatusToUser(currentIndex, 'In Progress');\r\n }\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);\r\n\r\n const subscription = this.userService\r\n .moveUserToMT(this.customerId, user)\r\n .subscribe(\r\n (formId: number) => {\r\n this.moveUser = null;\r\n this.moveUserIndex = null;\r\n if (formId) {\r\n localStorage.setItem(LOCAL_STORAGE.MIGRATION_FORM_ID, String(formId));\r\n this.pollMigrationFormStatusByUserId(formId, user.userid, () => {\r\n this.notifications.success(`${user.userid} successfully upgraded`);\r\n this.getMigratedUsers();\r\n });\r\n } else {\r\n this.notifications.success(`${user.userid} successfully upgraded`);\r\n this.getMigratedUsers();\r\n }\r\n },\r\n () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(this.getUserIndexById(user.userid), 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n },\r\n );\r\n this.subscriptions.push(subscription);\r\n }\r\n }\r\n\r\n moveUserToDI(user: ListUser, index: number): void {\r\n if (user && user.siteId && user.webexUUID) {\r\n this.moveUserPending = true;\r\n this.moveInProgressUserId = user.userid;\r\n this.users[index].status = 'In Progress';\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);\r\n\r\n const subscription = this.userService\r\n .moveUserToDI(this.customerId, user)\r\n .subscribe(\r\n () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Active');\r\n this.users[index].webexUUID = '';\r\n if (\r\n this.usersSearchService.migratedUsers &&\r\n this.usersSearchService.migratedUsers.length\r\n ) {\r\n this.usersSearchService.migratedUsers =\r\n this.usersSearchService.migratedUsers.filter(\r\n (migratedUser: any) => migratedUser.userid !== user.email,\r\n );\r\n }\r\n this.getMigratedUsers();\r\n },\r\n () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n },\r\n );\r\n\r\n this.subscriptions.push(subscription);\r\n }\r\n }\r\n\r\n private removeUserInMigrationProgress(): void {\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n localStorage.removeItem(LOCAL_STORAGE.MIGRATION_FORM_ID);\r\n this.moveInProgressUserId = '';\r\n this.moveUserPending = false;\r\n }\r\n\r\n private setStatusToUser(index: number, status: string): void {\r\n if (this.users && this.users[index]) {\r\n this.users[index].status = status;\r\n // if (status === 'Migrated') {\r\n // this.users[index].roleName = '';\r\n // this.users[index].isMigrated = true;\r\n // this.users[index].status = status;\r\n // } else {\r\n // this.users[index].roleName = 'Dedicated Instance Calling user';\r\n // this.users[index].isMigrated = false;\r\n // this.users[index].status = status;\r\n // }\r\n }\r\n this.dataSource = new MatTableDataSource(this.users);\r\n }\r\n\r\n private initializeDataSource(users: ListUser[]): void {\r\n const safeUsers = Array.isArray(users) ? users : [];\r\n // this.setRandomUserRole(users);\r\n this.baseUsers = safeUsers;\r\n this.users = safeUsers;\r\n // set total rows count for toolbar/pagination from server-side pagination when available\r\n this.totalUsersCount = this.usersSearchService?.total || safeUsers.length;\r\n this.setUserMigrationProgress();\r\n this.usersSearchService.setMigratedPropToUsers(this.users);\r\n // this.usersSearchService.setUpgradeStatusToUsers(this.users, this.usersSearchService.usersUpgradeStatus);\r\n this.dataSource = new MatTableDataSource(this.users);\r\n this.applyActiveFilter();\r\n }\r\n\r\n private setUserRole(): void {\r\n if (this.users?.length) {\r\n this.users.forEach((user) => {\r\n if (!user.isMigrated) {\r\n user.roleName = 'Dedicated Instance Calling user';\r\n }\r\n });\r\n }\r\n }\r\n\r\n private setRandomUserRole(users: ListUser[]): void {\r\n const max = Math.round(\r\n this.usersSearchService.pageSize - this.usersSearchService.pageSize / 4,\r\n );\r\n const min = Math.round(this.usersSearchService.pageSize / 2);\r\n const randomAmount = Math.round(Math.random() * (max - min) + min);\r\n const indexes = this.getArrayOfRandomUserIndexes(randomAmount);\r\n indexes.forEach((index) => {\r\n if (users[index]) {\r\n users[index].roleName = 'Dedicated Instance Calling user';\r\n }\r\n });\r\n }\r\n\r\n private getArrayOfRandomUserIndexes(randomAmount: number): number[] {\r\n const indexes = [];\r\n while (randomAmount > 0) {\r\n const index = Math.round(\r\n Math.random() * (this.usersSearchService.pageSize - 1),\r\n );\r\n indexes.push(index);\r\n randomAmount--;\r\n }\r\n return indexes;\r\n }\r\n\r\n private runSearch(): void {\r\n this.dataPending = true;\r\n this.usersSearchService.quickRegularUsersSearch().subscribe(\r\n () => {\r\n this.dataPending = false;\r\n },\r\n () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n },\r\n );\r\n }\r\n\r\n private setUserMigrationProgress(): void {\r\n const userIdInMigration = localStorage.getItem(\r\n LOCAL_STORAGE.USER_IN_MIGRATION,\r\n );\r\n const migrationFormId = localStorage.getItem(\r\n LOCAL_STORAGE.MIGRATION_FORM_ID,\r\n );\r\n if (userIdInMigration) {\r\n const index = this.users.findIndex(\r\n (user) => user.userid === userIdInMigration,\r\n );\r\n this.moveInProgressUserId = index > -1 ? this.users[index].userid : '';\r\n this.moveUserPending = index > -1;\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'In Progress');\r\n }\r\n if (migrationFormId) {\r\n this.pollMigrationFormStatus(Number(migrationFormId), index, () => this.getMigratedUsers());\r\n }\r\n }\r\n }\r\n\r\n private getMigratedUsers(): void {\r\n this.dataPending = true;\r\n const searchParams = {\r\n customerid: this.customerId,\r\n siteid: this.siteId,\r\n 'cloud-only': 'true',\r\n };\r\n // this.usersSearchService.quickWebexUsersSearch(searchParams, true, MAX_INTEGER)\r\n this.usersSearchService\r\n .getMigratedUsers(this.customerId)\r\n // this.usersSearchService.getMigratedWebexUsers(this.customerId)\r\n .subscribe(\r\n () => {\r\n const userIdInMigration = localStorage.getItem(\r\n LOCAL_STORAGE.USER_IN_MIGRATION,\r\n );\r\n if (\r\n userIdInMigration &&\r\n this.usersSearchService.migratedUsers.filter(\r\n (migratedUser: any) => migratedUser.userid === userIdInMigration,\r\n )\r\n ) {\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n localStorage.removeItem(LOCAL_STORAGE.MIGRATION_FORM_ID);\r\n }\r\n this.runSearch();\r\n },\r\n () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n },\r\n );\r\n }\r\n\r\n onMoveUser(user: ListUser, index: number, type: string, title: string): void {\r\n const dialogRef = this.dialog.open(UserListConfirmDialogComponent, {\r\n data: {\r\n title: `Upgrade user ${user.userid} to Multi Tenant?`,\r\n message: `<p>Upgrading this user will prepare the account for migration to Multi Tenant.</p>\r\n <p>During this process, the user configuration will be copied to the Multi Tenant environment.\r\n The user will remain active on the current system until the Activate step is completed.</p>\r\n <p>Do you want to continue?</p>`,\r\n confirmButtonText: 'Yes, upgrade',\r\n },\r\n });\r\n dialogRef.beforeClosed().subscribe((result: any) => {\r\n if (result) {\r\n switch (type) {\r\n case 'QuickMove':\r\n this.moveUserToMT(user);\r\n break;\r\n case 'MT':\r\n this.moveUser = user;\r\n this.moveUserIndex = index;\r\n this.showMoveUserWizard = true;\r\n this.switchToWizard.emit(true);\r\n break;\r\n case 'DI':\r\n this.moveUserToDI(user, index);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n runMoveUserToMT(): void {\r\n if (this.moveUser && this.moveUser.siteId && this.moveUser.userid) {\r\n this.userService.moveUserPending = true;\r\n this.moveInProgressUserId = this.moveUser.userid;\r\n this.setStatusToUser(this.moveUserIndex, 'In Progress');\r\n localStorage.setItem(\r\n LOCAL_STORAGE.USER_IN_MIGRATION,\r\n this.moveUser.userid,\r\n );\r\n }\r\n\r\n const subscription = this.userService\r\n .moveUserToMT(this.customerId, this.moveUser)\r\n .subscribe(\r\n (formId: number) => {\r\n if (formId) {\r\n localStorage.setItem(LOCAL_STORAGE.MIGRATION_FORM_ID, String(formId));\r\n this.pollMigrationFormStatus(formId, this.moveUserIndex, () => {\r\n this.userService.userMoved$.next(true);\r\n });\r\n } else {\r\n this.userService.userMoved$.next(true);\r\n }\r\n },\r\n () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(this.moveUserIndex, 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n },\r\n );\r\n\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n searchUsers(token: string, type?: USER_TYPES_TYPE): void {\r\n const normalizedToken = (token || '').trim();\r\n const normalizedType = type || null;\r\n\r\n // if token is empty — restore current page datasource\r\n if (!normalizedToken && !normalizedType) {\r\n this.activeSearchToken = '';\r\n this.activeUserType = null;\r\n this.users = this.baseUsers;\r\n this.dataSource = new MatTableDataSource(this.users);\r\n this.totalUsersCount = this.usersSearchService?.total || this.users.length;\r\n return;\r\n }\r\n\r\n if (normalizedType) {\r\n this.activeUserType = normalizedType;\r\n this.activeSearchToken = '';\r\n } else {\r\n this.activeSearchToken = normalizedToken;\r\n this.activeUserType = null;\r\n }\r\n\r\n // fetch all users (server-side) and filter locally across the whole dataset\r\n this.dataPending = true;\r\n const subscription = this.usersSearchService.getAllRegularUsers()\r\n .subscribe(\r\n (allUsers: ListUser[]) => {\r\n let filtered: ListUser[];\r\n if (normalizedType === null) {\r\n filtered = this.filterByToken(allUsers, normalizedToken);\r\n } else {\r\n filtered = this.filterByType(allUsers, normalizedType);\r\n }\r\n this.users = filtered;\r\n this.dataSource = new MatTableDataSource(this.users);\r\n this.totalUsersCount = filtered.length;\r\n this.dataPending = false;\r\n },\r\n () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n },\r\n );\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n searchByType(userType: USER_TYPES_TYPE) {\r\n const normalizedType = userType || null;\r\n if (!normalizedType) {\r\n this.searchUsers('');\r\n return;\r\n }\r\n this.searchUsers('', normalizedType);\r\n }\r\n\r\n private applyActiveFilter(): void {\r\n if (this.activeSearchToken) {\r\n this.searchUsers(this.activeSearchToken);\r\n return;\r\n }\r\n if (this.activeUserType) {\r\n this.searchUsers('', this.activeUserType);\r\n }\r\n }\r\n\r\n onCreateUserRequested(): void {\r\n this.createUserRequested.emit();\r\n }\r\n\r\n private filterByToken(users: ListUser[], token: string): ListUser[] {\r\n const tok = (token || '').toLowerCase();\r\n const filtered = (users || []).filter((user: ListUser) => {\r\n const firstName = (user?.firstName || '').toLowerCase();\r\n const lastName = (user?.lastName || '').toLowerCase();\r\n const fullName = `${firstName} ${lastName}`.trim();\r\n const email = (user?.email || '').toLowerCase();\r\n return (\r\n firstName.includes(tok) ||\r\n lastName.includes(tok) ||\r\n fullName.includes(tok) ||\r\n email.includes(tok)\r\n );\r\n });\r\n\r\n return filtered;\r\n }\r\n\r\n private filterByType(users: ListUser[], userType: USER_TYPES_TYPE): ListUser[] {\r\n let filteredUsers: ListUser[];\r\n if (userType === USER_TYPES_MAP.CUCM) {\r\n filteredUsers = users.filter((user) => !user.webexUUID && user.cucmId != ON_PREM_ID);\r\n } else if (userType === USER_TYPES_MAP.WEBEX) {\r\n filteredUsers = users.filter((user) => user.webexUUID !== null && user.webexUUID !== undefined);\r\n } else if (userType === USER_TYPES_MAP.ONPREM) {\r\n filteredUsers = users.filter((user) => !user.webexUUID && user.cucmId == ON_PREM_ID);\r\n } else {\r\n filteredUsers = [];\r\n }\r\n\r\n return filteredUsers;\r\n }\r\n\r\n public isValidWebexUuid(user: ListUser): boolean {\r\n const value = user?.webexUUID;\r\n return value !== null && value !== undefined && String(value).trim().length > 0;\r\n }\r\n\r\n private buildFirmwareDeviceMap(\r\n entity: MigratedEntityLike | null,\r\n user: ListUser,\r\n cucmIdBySiteId: Map<number, number>\r\n ): FirmwareDeviceMap {\r\n const deviceMap: FirmwareDeviceMap = {};\r\n const mappedDevices = this.getActivationDevices(entity, user);\r\n\r\n console.log(mappedDevices)\r\n\r\n const devices: any = [];\r\n\r\n const siteId = Number(entity?.sourceSite?.id ?? user?.siteId ?? 0);\r\n const cucmId = cucmIdBySiteId.get(siteId) || 0;\r\n\r\n mappedDevices.forEach((rawDevice: any) => {\r\n const device = rawDevice;\r\n // @ts-ignore\r\n const isEligible = device.isRegistered || device.deviceToUpgrade || device.isEligible;\r\n\r\n devices.push({\r\n userId: user.userid,\r\n deviceName: device.name.includes('SEP') ? device.name : 'SEP' + device.name || '',\r\n deviceType: device.product || device.model || '',\r\n status: isEligible ? 'ELIGIBLE_TO_UPGRADE' : 'UNREGISTERED',\r\n errorDescription: '',\r\n cucmId,\r\n feature: 'PERSON',\r\n selectable: true,\r\n disabledReason: false ? 'FIRMWARE_UPGRADE.DEVICE_NOT_MIGRATED' : '',\r\n });\r\n });\r\n\r\n if (!Object.keys(deviceMap).length) {\r\n console.debug('Firmware activation: no usable devices found to build deviceMap.');\r\n }\r\n\r\n\r\n devices.forEach((device: any) => {\r\n if (!deviceMap[device.cucmId]) {\r\n deviceMap[device.cucmId] = {};\r\n }\r\n if (!deviceMap[device.cucmId][device.feature]) {\r\n deviceMap[device.cucmId][device.feature] = [];\r\n }\r\n deviceMap[device.cucmId][device.feature].push(device.deviceName)\r\n });\r\n\r\n console.log(\"dev map ==> \", deviceMap);\r\n\r\n\r\n return deviceMap;\r\n }\r\n\r\n private fetchCucmIdBySiteId(): Observable<Map<number, number>> {\r\n const sitesUrl = API.SITES.replace(':customerId', String(this.customerId));\r\n return this.apiService.fetchPagination(sitesUrl, 10000, 0, {}, false).pipe(\r\n map((sitesRes: any) => {\r\n const sites = sitesRes?.pageData || [];\r\n const cucmIdBySiteId = new Map<number, number>();\r\n sites.forEach((site: any) => {\r\n const siteId = Number(site?.id);\r\n const cucmId = Number(site?.cucm?.id);\r\n if (Number.isFinite(siteId) && Number.isFinite(cucmId)) {\r\n cucmIdBySiteId.set(siteId, cucmId);\r\n }\r\n });\r\n return cucmIdBySiteId;\r\n })\r\n );\r\n }\r\n\r\n private getActivationDevices(entity: MigratedEntityLike | null, user: ListUser): unknown[] {\r\n const migratedEntityDevices: unknown[] = Array.isArray(entity?.devices)\r\n ? (entity?.devices ?? [])\r\n : [];\r\n\r\n const entityDevices: unknown[] = Array.isArray(entity?.webexMigrationDevices)\r\n ? (entity?.webexMigrationDevices ?? [])\r\n : [];\r\n\r\n const allEntityDevices = [...migratedEntityDevices, ...entityDevices];\r\n if (allEntityDevices.length) {\r\n return allEntityDevices;\r\n }\r\n\r\n // Fallback for partial responses where only list-user devices are available.\r\n return [\r\n ...(Array.isArray(user?.devices) ? user.devices : []),\r\n ...(Array.isArray(user?.deviceProfiles) ? user.deviceProfiles : []),\r\n ];\r\n }\r\n\r\n private unwrapMigratedDevice(rawDevice: unknown): MigratedDeviceLike {\r\n const candidate = rawDevice as MigratedDeviceLike;\r\n if (candidate?.device) {\r\n return {\r\n ...candidate.device,\r\n ...candidate,\r\n };\r\n }\r\n return candidate || {};\r\n }\r\n\r\n private isMigratedDeviceEligible(device: MigratedDeviceLike): boolean {\r\n const hasEligibilitySignal = device?.isRegistered !== undefined\r\n || device?.deviceToUpgrade !== undefined\r\n || device?.isEligible !== undefined;\r\n\r\n if (!hasEligibilitySignal) {\r\n return true;\r\n }\r\n\r\n return !!(device?.isRegistered || device?.deviceToUpgrade || device?.isEligible);\r\n }\r\n\r\n private extractCucmId(\r\n entity: MigratedEntityLike | null,\r\n device: MigratedDeviceLike,\r\n user: ListUser\r\n ): number | null {\r\n const deviceCucmId = Number(device?.cucmId);\r\n if (Number.isFinite(deviceCucmId) && deviceCucmId > 0) {\r\n return deviceCucmId;\r\n }\r\n\r\n const userCucmId = Number(user?.cucmId);\r\n if (Number.isFinite(userCucmId)) {\r\n return userCucmId;\r\n }\r\n\r\n const entityCucmId = Number(entity?.cucmId);\r\n if (Number.isFinite(entityCucmId)) {\r\n return entityCucmId;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private resolveMigratedDeviceKey(device: MigratedDeviceLike): string {\r\n return String(\r\n device?.name ||\r\n device?.mac ||\r\n device?.deviceId ||\r\n device?.cisUuid ||\r\n device?.id ||\r\n ''\r\n ).trim();\r\n }\r\n\r\n private extractMigratedDeviceLines(device: MigratedDeviceLike): string[] {\r\n const values = new Set<string>();\r\n\r\n const lineAssociations = Array.isArray(device?.lineAssociations) ? device.lineAssociations : [];\r\n lineAssociations.forEach((lineAssociation) => {\r\n const directoryNumber = lineAssociation?.directoryNumber?.directoryNumber;\r\n const templateDirectoryNumber = lineAssociation?.directoryNumber?.templateDirectoryNumber;\r\n const e164Mask = lineAssociation?.e164Mask;\r\n\r\n [directoryNumber, templateDirectoryNumber, e164Mask].forEach((value) => {\r\n const normalized = String(value || '').trim();\r\n if (normalized) {\r\n values.add(normalized);\r\n }\r\n });\r\n });\r\n\r\n const lines = Array.isArray(device?.lines) ? device.lines : [];\r\n lines.forEach((line) => {\r\n const directoryNumber = line?.directoryNumber?.directoryNumber;\r\n const templateDirectoryNumber = line?.directoryNumber?.templateDirectoryNumber;\r\n [directoryNumber, templateDirectoryNumber].forEach((value) => {\r\n const normalized = String(value || '').trim();\r\n if (normalized) {\r\n values.add(normalized);\r\n }\r\n });\r\n });\r\n\r\n return Array.from(values);\r\n }\r\n\r\n onFirmwareUpgradeClicked(user: ListUser) {\r\n if (!this.isValidWebexUuid(user) || user.status !== 'Inactive') {\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(UserListConfirmDialogComponent, {\r\n data: {\r\n title: `Activate user ${user.userid} on Multi Tenant?`,\r\n message: `<p>Activating this user will perform the cutover to Multi Tenant and complete the migration process.</p>\r\n <p>After activation, the user will become active on Multi Tenant and the original user will become inactive.</p>\r\n <p>Do you want to continue?</p>`,\r\n confirmButtonText: 'Activate',\r\n },\r\n });\r\n\r\n dialogRef.beforeClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.setUserPendingStatus(user, 'Pending Activation');\r\n this.userService\r\n .getMigratedMigrationFormEntities(this.customerId, user.webexUUID || '', 'PERSON')\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n map((entities: any[]) => {\r\n return Array.isArray(entities) ? entities[0] : entities || null;\r\n }),\r\n switchMap((entity: any) => {\r\n const formId = entity?.migrationFormId ?? entity?.id ?? null;\r\n if (!formId) {\r\n this.setUserPendingStatus(user, 'Inactive');\r\n this.notifications.error('Activation failed. Migration form not found.');\r\n return EMPTY;\r\n }\r\n\r\n return this.fetchCucmIdBySiteId().pipe(\r\n map((cucmIdBySiteId) => ({\r\n formId,\r\n deviceMap: this.buildFirmwareDeviceMap(\r\n entity as MigratedEntityLike,\r\n user,\r\n cucmIdBySiteId\r\n )\r\n }))\r\n );\r\n }),\r\n switchMap(({ formId, deviceMap }) => {\r\n console.log('device map ==> ', deviceMap);\r\n return this.userService\r\n .triggerFirmwareUpgrade(this.customerId, Number(formId), deviceMap)\r\n .pipe(map(() => formId));\r\n })\r\n )\r\n .subscribe({\r\n next: (formId: number) => {\r\n window.setTimeout(() => {\r\n this.pollMigrationFormStatusByUserId(formId, user.userid, () => {\r\n this.setUserPendingStatus(user, 'Active');\r\n this.setOriginalUserStatus(user.email, 'Inactive');\r\n this.userService\r\n .removeUcmLicense(this.customerId, formId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: () => {\r\n console.log('Remove finished...');\r\n },\r\n error: () => {\r\n this.notifications.error('UCM license removal failed.');\r\n }\r\n });\r\n // this.notifications.success(`${user.userid} successfully activated`);\r\n this.refreshUsersAfterOperation();\r\n });\r\n }, 5000);\r\n },\r\n error: () => {\r\n this.setUserPendingStatus(user, 'Inactive');\r\n this.notifications.error('Activation failed. Please try again.');\r\n this.refreshUsersAfterOperation();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n onRevertClicked(user: ListUser) {\r\n if (user?.webexUUID) {\r\n this.setUserPendingStatus(user, 'Pending Deactivation');\r\n this.userService.revertMigration(this.customerId, user.webexUUID)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n switchMap(() => timer(2000))\r\n )\r\n .subscribe({\r\n next: () => {\r\n this.setUserPendingStatus(user, 'Inactive');\r\n this.setOriginalUserStatus(user.email, 'Active');\r\n // this.notifications.success(`${user.userid} successfully deactivated`);\r\n this.refreshUsersAfterOperation();\r\n },\r\n error: () => {\r\n this.setUserPendingStatus(user, 'Active');\r\n this.refreshUsersAfterOperation();\r\n }\r\n });\r\n }\r\n }\r\n\r\n private setUserPendingStatus(user: ListUser, status: string) {\r\n user.status = status;\r\n }\r\n\r\n private pollMigrationFormStatus(\r\n formId: number,\r\n index: number,\r\n onCompleted: () => void,\r\n ): void {\r\n const subscription = timer(0, 5000)\r\n .pipe(\r\n switchMap(() => this.userService.getMigrationFormStatus(this.customerId, formId)),\r\n takeUntil(this.destroy$),\r\n takeWhile((response: any) => {\r\n const status = response?.status;\r\n return !this.isMigrationStatusCompleted(status)\r\n && !this.isMigrationStatusFailed(status)\r\n && !this.isMigrationStatusCompletedWithErrors(status);\r\n }, true),\r\n )\r\n .subscribe({\r\n next: (response: any) => {\r\n const status = response?.status;\r\n const userId = this.users?.[index]?.userid || '';\r\n if (this.isMigrationStatusCompletedWithErrors(status) && userId) {\r\n this.handleCompletedWithErrorsByUserId(userId);\r\n return;\r\n }\r\n if (this.isMigrationStatusFailed(status)) {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n return;\r\n }\r\n if (this.isMigrationStatusCompleted(status)) {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Active');\r\n this.refreshUsersAfterOperation();\r\n onCompleted();\r\n }\r\n },\r\n error: () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n },\r\n });\r\n\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n private pollMigrationFormStatusByUserId(\r\n formId: number,\r\n userId: string,\r\n onCompleted: () => void,\r\n ): void {\r\n const subscription = timer(0, 5000)\r\n .pipe(\r\n switchMap(() => this.userService.getMigrationFormStatus(this.customerId, formId)),\r\n takeUntil(this.destroy$),\r\n takeWhile((response: any) => {\r\n const status = response?.status;\r\n return !this.isMigrationStatusCompleted(status)\r\n && !this.isMigrationStatusFailed(status)\r\n && !this.isMigrationStatusCompletedWithErrors(status);\r\n }, true),\r\n )\r\n .subscribe({\r\n next: (response: any) => {\r\n const status = response?.status;\r\n const index = this.getUserIndexById(userId);\r\n if (this.isMigrationStatusCompletedWithErrors(status)) {\r\n this.handleCompletedWithErrorsByUserId(userId);\r\n return;\r\n }\r\n if (this.isMigrationStatusFailed(status)) {\r\n this.removeUserInMigrationProgress();\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'Migration Error');\r\n }\r\n this.refreshUsersAfterOperation();\r\n return;\r\n }\r\n if (this.isMigrationStatusCompleted(status)) {\r\n this.removeUserInMigrationProgress();\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'Active');\r\n }\r\n this.refreshUsersAfterOperation();\r\n onCompleted();\r\n }\r\n },\r\n error: () => {\r\n const index = this.getUserIndexById(userId);\r\n this.removeUserInMigrationProgress();\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'Migration Error');\r\n }\r\n this.refreshUsersAfterOperation();\r\n },\r\n });\r\n\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n private getUserIndexById(userId: string): number {\r\n return this.users?.findIndex((user) => user.userid === userId) ?? -1;\r\n }\r\n\r\n private setOriginalUserStatus(email = '', status: string) {\r\n const originalUser = this.users.find((user) => user.email === email && !user.webexUUID);\r\n if (originalUser) {\r\n originalUser.status = status;\r\n }\r\n }\r\n\r\n private subscribeToUpgradeUsersStatus(users: ListUser[]): void {\r\n this.usersSearchService.quickUpgradeStatusUsers$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.initializeDataSource(users)\r\n });\r\n }\r\n}\r\n","<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<app-notification></app-notification>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <tk-users-table-toolbar\r\n [totalUsersCount]=\"totalUsersCount\"\r\n [searchValue]=\"activeSearchToken\"\r\n [selectedUserType]=\"activeUserType\"\r\n (searchChange)=\"searchUsers($event)\"\r\n (searchByType)=\"searchByType($event)\"\r\n (addUser)=\"onCreateUserRequested()\"\r\n ></tk-users-table-toolbar>\r\n <table\r\n class=\"webex-table\"\r\n mat-table\r\n *ngIf=\"users?.length\"\r\n #table\r\n [dataSource]=\"dataSource\"\r\n >\r\n <!-- <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container> -->\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 60px\"\r\n >\r\n Display name\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <div class=\"display-name-wrapper\">\r\n <span\r\n class=\"user-name-text\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n >\r\n {{ user.firstName }} {{ user.lastName }}\r\n </span>\r\n <span class=\"icon-webex-box\"\r\n ><span class=\"icon-webex icon-webex-user\"></span\r\n ></span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Status\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n [matTooltip]=\"\r\n user.status !== 'Active' && user.webexUUID\r\n ? 'Pending cutover to MT. Please contact your administrator for details.'\r\n : ''\r\n \"\r\n matTooltipPosition=\"above\"\r\n >\r\n <span\r\n class=\"icon-user-status\"\r\n [ngClass]=\"{ 'icon-user-status-active': user.status === 'Active' }\"\r\n ></span\r\n >{{ user.status }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 24px; padding-top: 4px\"\r\n >\r\n <img src=\"assets/icons/settings-regular.svg\" width=\"16\" alt=\"\" />\r\n </th>\r\n <td\r\n class=\"user-site actions-cell\"\r\n mat-cell\r\n *matCellDef=\"let user; let i = index\"\r\n style=\"position: relative\"\r\n >\r\n <mat-progress-spinner\r\n class=\"field-spinner\"\r\n [diameter]=\"30\"\r\n strokeWidth=\"3\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"\r\n user.status === 'In Progress' ||\r\n user.status === 'Pending Activation' ||\r\n user.status === 'Pending Deactivation'\r\n \"\r\n ></mat-progress-spinner>\r\n <button\r\n *ngIf=\"\r\n !(\r\n user.status === 'In Progress' ||\r\n user.status === 'Pending Activation' ||\r\n user.status === 'Pending Deactivation'\r\n ) &&\r\n !(\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === user?.userid\r\n )\r\n \"\r\n class=\"button-action-dot\"\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n >\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button\r\n *ngIf=\"!user.webexUUID && user.cucmId == ON_PREM_ID\"\r\n mat-menu-item\r\n [disabled]=\"true\"\r\n matTooltip=\"Coming soon\"\r\n matTooltipPosition=\"right\"\r\n >\r\n Enable AI Transcribe\r\n </button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'QuickMove', 'MT')\"\r\n >\r\n<!-- for TU-4960 !user.isReadyToUpgrade ||-->\r\n Quick Upgrade User to MT\r\n </button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'MT', 'MT')\"\r\n >\r\n Upgrade User to MT\r\n </button>\r\n <button\r\n *ngIf=\"user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'DI', 'DI')\"\r\n >\r\n Revert User to UCM/DI\r\n </button>\r\n <button\r\n mat-menu-item\r\n [disabled]=\"!isValidWebexUuid(user) || user.status !== 'Inactive'\"\r\n (click)=\"onFirmwareUpgradeClicked(user)\"\r\n >\r\n Activate User\r\n </button>\r\n <button\r\n mat-menu-item\r\n [disabled]=\"!user.webexUUID || user.status !== 'Active'\"\r\n (click)=\"onRevertClicked(user)\"\r\n >\r\n Revert\r\n </button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Admin roles\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.roleName || \"-\" }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Provisioning Type\r\n </th>\r\n <td\r\n class=\"user-provisioning-type\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <ng-container *ngIf=\"user.webexUUID\">\r\n <span class=\"icon-wrapper\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!user.webexUUID\">\r\n <span *ngIf=\"user.cucmId == ON_PREM_ID\" class=\"icon-wrapper\"\r\n ><img\r\n src=\"assets/icons/local_24.svg\"\r\n width=\"20\"\r\n alt=\"\"\r\n [matTooltip]=\"'UCM'\"\r\n matTooltipPosition=\"right\"\r\n /></span>\r\n <span *ngIf=\"user.cucmId != ON_PREM_ID\" class=\"icon-wrapper\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"last-active-time\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Last active time\r\n <!-- <mat-icon class=\"info-icon\">info</mat-icon> -->\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ getTodayShortDate() }}\r\n </td>\r\n /\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n [ngClass]=\"{\r\n 'disabled-user-row':\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === row?.userid,\r\n 'inactive-user-row': row.status !== 'Active',\r\n }\"\r\n ></tr>\r\n </table>\r\n\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\"\r\n >\r\n </app-pagination>\r\n</div>\r\n\r\n<app-move-user-wizard\r\n *ngIf=\"showMoveUserWizard\"\r\n [user]=\"moveUser\"\r\n (done)=\"closeMoveUserWizard(true)\"\r\n [customerId]=\"customerId\"\r\n (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard(false)\"\r\n></app-move-user-wizard>\r\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class EventsCommunicationService {\n public onSuccessfulLoginEvent = new Subject();\n\n constructor() {\n }\n\n}\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n DragDropModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatInputModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatTreeModule,\r\n MatTreeModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatSidenavModule,\r\n MatFormFieldModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatCardModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n MatSlideToggleModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatRadioModule,\r\n MatIconModule\r\n ],\r\n exports: [\r\n DragDropModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatInputModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatTreeModule,\r\n MatTreeModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatSidenavModule,\r\n MatFormFieldModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatSelectModule,\r\n MatSlideToggleModule,\r\n MatProgressSpinnerModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatRadioModule,\r\n MatIconModule\r\n ],\r\n})\r\nexport class MaterialModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UsersListComponent } from './users-list.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { MaterialModule } from './material.module';\r\nimport { PaginationComponent } from './utils/pagination/pagination.component';\r\nimport { UserService } from './services/user.service';\r\nimport { APIService } from './services/api.service';\r\nimport { EventsCommunicationService } from './services/events-communication.service';\r\nimport { UsersSearchService } from './services/users-search.service';\r\nimport { NotificationService } from './services/notification.service';\r\nimport { RemoveKynFromIBMService } from './services/removeKynFromIBM.service';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ApiWebexService } from './services/api-webex.service';\r\nimport { AppLoaderComponent } from './utils/app-loader/app-loader';\r\nimport { MoveUserWizardComponent } from './move-user-wizard/move-user-wizard.component';\r\nimport { MoveUserStepperComponent } from './move-user-wizard/move-user-stepper/move-user-stepper.component';\r\nimport { UserListConfirmDialogComponent } from './user-list-confirm-dialog/user-list-confirm-dialog.component';\r\nimport { DnsService } from './services/dns.service';\r\nimport { SiteSettingsService } from './services/site-settings.service';\r\nimport { MoveUserService } from './services/move-user.service';\r\nimport {\r\n DevicesMoveUserWizardTabComponent\r\n} from './move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component';\r\nimport {\r\n DeviceMoveUserWizardComponent\r\n} from './move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component';\r\nimport { TableToolbarComponent } from './components/table-toolbar/table-toolbar.component';\r\nimport { NotificationsComponent } from './utils/notifications/notification.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n UsersListComponent,\r\n PaginationComponent,\r\n AppLoaderComponent,\r\n MoveUserWizardComponent,\r\n MoveUserStepperComponent,\r\n UserListConfirmDialogComponent,\r\n DevicesMoveUserWizardTabComponent,\r\n DeviceMoveUserWizardComponent,\r\n TableToolbarComponent,\r\n NotificationsComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n MaterialModule\r\n ],\r\n providers: [\r\n UserService,\r\n APIService,\r\n EventsCommunicationService,\r\n UsersSearchService,\r\n NotificationService,\r\n RemoveKynFromIBMService,\r\n ApiWebexService,\r\n DnsService,\r\n SiteSettingsService,\r\n MoveUserService\r\n ],\r\n exports: [UsersListComponent]\r\n})\r\nexport class UsersListModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.APIService","i2.ApiWebexService","i3.RemoveKynFromIBMService","i2","i3","i1.ApiWebexService","i1.DnsService","i2.UserService","i3.SiteSettingsService","i4","i5","i6","i7","i1.MoveUserService","i4.DeviceMoveUserWizardComponent","i4.NotificationService","i5.MoveUserService","i13","i15","i17.AppLoaderComponent","i18.DevicesMoveUserWizardTabComponent","i3.AppLoaderComponent","i4.MoveUserStepperComponent","i1.NotificationService","map","i1.UserService","i2.APIService","i3.ApiWebexService","i5.UsersSearchService","i10","i11","i12","i13.PaginationComponent","i14.AppLoaderComponent","i15.MoveUserWizardComponent","i16.TableToolbarComponent","i17.NotificationsComponent"],"mappings":"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"}
1
+ {"version":3,"file":"tuki-io-tuki-widgets-users-list.mjs","sources":["../../../../projects/tuki/widgets/users-list/src/app.constants.ts","../../../../projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.ts","../../../../projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.html","../../../../projects/tuki/widgets/users-list/src/utils/common-functions.ts","../../../../projects/tuki/widgets/users-list/src/classes/simlified-user.ts","../../../../projects/tuki/widgets/users-list/src/utils/utils.service.ts","../../../../projects/tuki/widgets/users-list/src/services/api.service.ts","../../../../projects/tuki/widgets/users-list/src/services/api-webex.service.ts","../../../../projects/tuki/widgets/users-list/src/services/user.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/notification.ts","../../../../projects/tuki/widgets/users-list/src/services/notification.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/user-list.ts","../../../../projects/tuki/widgets/users-list/src/services/removeKynFromIBM.service.ts","../../../../projects/tuki/widgets/users-list/src/services/users-search.service.ts","../../../../projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.ts","../../../../projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.html","../../../../projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.ts","../../../../projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.component.html","../../../../projects/tuki/widgets/users-list/src/classes/line.ts","../../../../projects/tuki/widgets/users-list/src/services/dns.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/app-location.ts","../../../../projects/tuki/widgets/users-list/src/classes/move-user.ts","../../../../projects/tuki/widgets/users-list/src/services/site-settings.service.ts","../../../../projects/tuki/widgets/users-list/src/services/move-user.service.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.html","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.html","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.html","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.html","../../../../projects/tuki/widgets/users-list/src/components/table-toolbar/table-toolbar.component.ts","../../../../projects/tuki/widgets/users-list/src/components/table-toolbar/table-toolbar.component.html","../../../../projects/tuki/widgets/users-list/src/utils/notifications/notification.component.ts","../../../../projects/tuki/widgets/users-list/src/utils/notifications/notification.component.html","../../../../projects/tuki/widgets/users-list/src/users-list.component.ts","../../../../projects/tuki/widgets/users-list/src/users-list.component.html","../../../../projects/tuki/widgets/users-list/src/services/events-communication.service.ts","../../../../projects/tuki/widgets/users-list/src/material.module.ts","../../../../projects/tuki/widgets/users-list/src/users-list.module.ts","../../../../projects/tuki/widgets/users-list/tuki-io-tuki-widgets-users-list.ts"],"sourcesContent":["export const API = {\n USER_TOKEN: '/api/provision/:siteId/users/:userId/token',\n UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',\n PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',\n USER_BY_ID: '/api/provision/:siteId/users/:userId',\n QUICK_USERS_SEARCH: \"/api/search/quickusers\",\n DELETE_USER: \"/api/search/quickusers\",\n MOVE_USER: \"/api/migration/webex/singlemigration/features/PERSON\",\n AVAILABLE_DN_IN_RANGES: \"/api/sites/:siteId/available-dn-in-ranges\",\n DELETE_LINE: \"/api/provision/:siteId/deleteLine/:pkid/:token\",\n DISASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token\",\n CHECK_DELETE_LINE: \"/api/provision/:siteId/checklinedeletion\",\n ASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/createLineAssociation/:token\",\n CHECK_DESTINATION_NUMBER: \"/api/provision/:siteId/check-dn\",\n UPDATE_LINE_FIELDS: \"/api/provision/:siteId/lineFields/:pkid/:token\",\n UPDATE_DEVICE_FIELDS: \"/api/provision/:siteId/deviceFields/:deviceName/:token\",\n WEBEX_USERS: \"/api/webex/provisioning/customers/:customerId/users\",\n MIGRATED_USERS: \"/api/search/migratedusers\",\n QUICK_UPGRADE_STATUS_USERS: \"/api/webex-upgrade/customers/:customerId/user-upgrade\",\n REVERT_WEBEX_USER: \"/api/webex/provisioning/customers/:customerId/persons/:webexUUID/revertmigration\",\n PHONE_NUMBERS: \"/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers\",\n GET_LOCATIONS: \"/api/search/webex/customers/:customerId/locations\",\n PREPARE_PERSON_MIGRATION: \"/api/migration/webex/preparepersonmigration\",\n MIGRATION_FORM: \"/api/search/webex/customers/:customerId/migrationforms/:formId\",\n MIGRATION_FORM_ENTITIES_MIGRATED: \"/api/search/webex/customers/:customerId/migrationformentities/migrated\",\n START_MIGRATION: \"/api/migration/webex/startpersonmigration\",\n TRIGGER_FIRMWARE_MIGRATION: \"/api/migration/:migrationType/firmwaremigration/customer/:customerId/migration/:migrationFormId\",\n REMOVE_UCM_LICENSE: \"/api/migration/:controlHubType/removeucmlicense/customer/:customerId/migrationform/:migrationFormId\",\n WEBEX_REVERT: \"/api/webex/provisioning/customers/:customerId/persons/:personId/revertmigration\",\n REVERT: \"/api/webex/provisioning/customers/:customerId/persons/:personId/revertmigration\",\n SWAP_STATUSES: \"/api/cache/user/customer/:customerId/swap-status\",\n SITES: \"/api/customers/:customerId/sites\",\n};\nexport const REGEX_PATTERN = {\n EMAIL: '^(([^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+(\\\\.[^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+)*)|(\".+\"))' +\n '@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +\n '?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'\n};\n\nexport const PAGINATION_DEFAULTS = {\n SIZE: 10,\n INDEX: 0\n}\nexport const PAGINATION_SIZE_OPTIONS = [\n 10,\n 50,\n 100,\n 500\n];\nexport const CUCS_TO_IGNORE = [\n 189,\n 194,\n 191,\n 190\n];\nexport const CUCMS_TO_IGNORE = [\n 249,\n 255,\n 251,\n 250\n];\nexport const MAX_INTEGER = 2147483647;\n\nexport const CUSTOMER_DESTINATION = {\n MULTI_TENANT_ONLY: 'MULTI_TENANT_ONLY',\n DEDICATED_INSTANCE_ONLY: 'DEDICATED_INSTANCE_ONLY',\n HYBRID: 'HYBRID',\n ZOOM: 'ZOOM',\n MANAGE_ONLY: 'MANAGE_ONLY',\n MICROSOFT: 'MICROSOFT',\n};\n\nexport const USER_TYPES_MAP = {\n CUCM: 'CUCM',\n WEBEX: 'WEBEX',\n ONPREM: 'ONPREM',\n}\n\nexport type USER_TYPES_TYPE = keyof typeof USER_TYPES_MAP | null;\n\nexport const CUSTOMER_DESTINATION_MIGTATION_TYPE = {\n MULTI_TENANT_ONLY: 'webex',\n DEDICATED_INSTANCE_ONLY: 'webex',\n HYBRID: 'webex',\n ZOOM: 'zoom',\n MANAGE_ONLY: 'webex',\n MICROSOFT: 'teams',\n};\n\nexport const ON_PREM_ID = 2542;\n\nexport const MAX_INT = 2147483647;\n","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-info-dialog',\n templateUrl: './user-list-confirm-dialog.component.html',\n styleUrls: ['./user-list-confirm-dialog.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class UserListConfirmDialogComponent implements OnInit {\n public confirmButtonText = 'OK';\n public message = '';\n public title = '';\n\n constructor(\n public dialogRef: MatDialogRef<any>,\n @Inject(MAT_DIALOG_DATA) public data: InfoDialogConfig\n ) { }\n\n ngOnInit(): void {\n this.confirmButtonText = this.data.confirmButtonText || '';\n this.message = this.data.message || '';\n this.title = this.data.title || '';\n }\n\n public onClose(val: boolean): void {\n this.dialogRef.close(val);\n }\n}\n\nexport class InfoDialogConfig {\n message!: string;\n title!: string;\n confirmButtonText!: string;\n}\n","<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\n <div class=\"move_user_popup_icon\"></div>\n <div class=\"dialog-content-message\" [innerHTML]=\"message\"></div>\n </div>\n <div mat-dialog-actions class=\"flex-gap-container\">\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\n Cancel\n </button>\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\n {{confirmButtonText}}\n </button>\n </div>\n</div>\n","export const getSavableData = (model: any, exclude?: Array<string>) => {\n let result = Object.keys(model);\n if (exclude && exclude.length) {\n result = result.filter(key => !exclude.some(item => item === key));\n }\n return result.reduce((result, key) => {\n if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {\n (result as any)[key] = model[key].map((item: any) => item.getSavableData());\n } else if (model[key] instanceof Object && model[key].getSavableData) {\n (result as any)[key] = model[key].getSavableData();\n } else {\n (result as any)[key] = model[key];\n }\n return result;\n }, {});\n};\n\nexport const filterOptions = (options: any[], query: string, shownValue?: string, field?: string) => {\n if (!options) {\n return [];\n }\n if (!query) {\n return options;\n }\n return options.filter(option => {\n return (\n field ? String(option[field]).toLowerCase().includes(String(query).toLowerCase()) :\n String(option).toLowerCase().includes(String(query).toLowerCase()) ||\n (shownValue && shownValue === option)\n );\n });\n};\n","import { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { getSavableData } from '../utils/common-functions';\nimport { REGEX_PATTERN } from '../app.constants';\n\nexport class SimplifiedUser {\n userid!: string;\n email!: string;\n firstName!: string;\n lastName!: string;\n token!: string;\n viewMode!: string;\n hasModifiedCache!: boolean;\n newUserId?: string;\n editMode!: boolean;\n form!: FormGroup;\n\n constructor(user?: any) {\n if (user) {\n this.userid = user.userid;\n this.email = user.email;\n this.firstName = user.firstName;\n this.lastName = user.lastName;\n this.token = user.token;\n }\n this.initForm()\n }\n\n initForm() {\n const formBuilder = new FormBuilder();\n const formSettings = {\n userid: [{value: this.userid || '', disabled: true}, [Validators.required, Validators.maxLength(128)]],\n email: [{value: this.email || '', disabled: true}, [\n Validators.pattern(REGEX_PATTERN.EMAIL),\n Validators.required\n ]],\n firstName: [{value: this.firstName || '', disabled: true}],\n lastName: [{value: this.lastName || '', disabled: true}, Validators.required],\n };\n this.form = formBuilder.group(formSettings);\n }\n\n toggleEditMode() {\n this.editMode = !this.editMode;\n ['userid', 'email', 'firstName', 'lastName'].forEach(token => {\n if (this.editMode) {\n this.form.get(token)?.enable();\n } else {\n this.form.get(token)?.disable();\n }\n })\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache'];\n return getSavableData(this, excludedFields);\n }\n\n equal(userToCompare?: SimplifiedUser): boolean {\n if (!userToCompare) {\n return false;\n }\n return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());\n }\n\n}\n\nexport interface SimplifiedUserInterface {\n userid: string;\n email: string;\n firstName: string;\n lastName: string;\n form?: FormGroup;\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class UtilsService {\n\n static sortSortArrayByProperty(array: [], sortBy: string) {\n if (!array) {\n return null;\n }\n return array.sort((a, b) => {\n if (!a[sortBy] && !b[sortBy]) {\n return 0;\n }\n if (a[sortBy] && !b[sortBy]) {\n return 1;\n }\n if (!a[sortBy] && b[sortBy]) {\n return -1;\n }\n const positionA = a[sortBy];\n const positionB = b[sortBy];\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\n });\n }\n\n static diff(origObject: any, updatedObj: any, path: string, keysToIgnore?: string[]) {\n let result: any = [];\n if (Object.is(origObject, updatedObj)) {\n return undefined;\n }\n if (!updatedObj || typeof updatedObj !== 'object') {\n return updatedObj;\n }\n const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));\n const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;\n filter\n .forEach(key => {\n if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {\n if (UtilsService.differs(updatedObj[key], origObject[key])) {\n const newPath = `${path}${path ? '.' : ''}${key}`;\n const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);\n if (values !== undefined) {\n result = [...result, ...values];\n }\n }\n } else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {\n const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;\n result.push(`${path}${path ? '.' : ''}${key}=${value}`);\n }\n });\n return result;\n }\n\n static formatIfEmpty(value: any) {\n if (value) {\n return value;\n }\n switch (typeof value) {\n case 'boolean':\n return value;\n case 'string':\n return '';\n default:\n return null;\n }\n }\n\n static differs(obj1: any, obj2: any): boolean {\n return JSON.stringify(obj1) !== JSON.stringify(obj2);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { TableDataInterface } from '../classes/table-data';\nimport { Observable } from 'rxjs';\n\n\n\n@Injectable()\nexport class APIService {\n\n apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';\n\n public token: any;\n constructor(\n private httpClient: HttpClient\n ) {\n }\n\n fetch(url: string, params = {}, cache?: boolean) {\n const headers = this.getHeaders(cache);\n return this.httpClient.get(this.apiUrl + url, {params: this.prepareEncodedParams(params), headers});\n }\n\n post(url: string, body: any, params = {}): any {\n body = body || null;\n const headers = this.getHeaders();\n return this.httpClient.post(this.apiUrl + url, body, {params: this.prepareEncodedParams(params), headers});\n }\n\n // use when response extended data is necessary:\n postExtended(url: string, body = null, params = {}, headers = {}) {\n headers = headers || this.getHeaders();\n return this.httpClient.post(this.apiUrl + url, body, {\n headers,\n observe: 'response',\n params: this.prepareEncodedParams(params)\n });\n }\n\n put(url: string, body = null, params = {}) {\n const headers = this.getHeaders();\n return this.httpClient.put(this.apiUrl + url, body, {headers, params: this.prepareEncodedParams(params)});\n }\n\n delete(url: string, params = {}) {\n const headers = this.getHeaders();\n return this.httpClient.delete(this.apiUrl + url, {headers, params: this.prepareEncodedParams(params)});\n }\n\n fetchPagination(url: string, pageSize: number, pageNumber: number, additionalParams = {}, cache?: boolean): Observable<TableDataInterface> {\n const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));\n const params = Object.assign(copyAdditionalParams, {size: pageSize.toString(), page: pageNumber.toString()});\n return this.fetch(url, params, cache) as Observable<TableDataInterface>;\n }\n\n private prepareEncodedParams(params: any) {\n const result: any = {};\n\n if (!params) {\n return {};\n }\n for (const key of Object.keys(params)) {\n if (params[key]) {\n const stringParam = params[key].toString();\n result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;\n }\n }\n return result;\n }\n\n private getHeaders(cache?: boolean): HttpHeaders {\n let headers = new HttpHeaders();\n if (cache) {\n headers = headers.append('_Cache', 'true ');\n }\n const token = this.token || this.getParameterByName('token');\n headers = headers.append('Authorization', 'Bearer '+ token);\n return headers;\n }\n\n private getParameterByName(name: any, url = window.location.href) {\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { APIService } from './api.service';\n\n\n@Injectable()\nexport class ApiWebexService extends APIService {\n constructor(httpClient: HttpClient) {\n super(httpClient);\n //this.apiUrl = window.location.protocol + \"//\"+ window.location.hostname + environment.apiAuthUrl;\n this.apiUrl = 'https://webex.car-west.net/webex';\n // this.apiUrl = 'https://staging.tuki.io/webex';\n }\n}\n","import { Injectable, OnInit } from '@angular/core';\nimport { Observable, of, forkJoin, Subject } from 'rxjs';\nimport { SimplifiedUser } from '../classes/simlified-user';\nimport { API, CUSTOMER_DESTINATION, CUSTOMER_DESTINATION_MIGTATION_TYPE, USER_TYPES_TYPE } from '../app.constants';\nimport { APIService } from './api.service';\nimport { map } from 'rxjs/operators';\nimport { UtilsService } from '../utils/utils.service';\nimport { ListUser } from '../classes/user-list';\nimport { ApiWebexService } from './api-webex.service';\n\n@Injectable()\nexport class UserService implements OnInit {\n siteId: number = -1;\n userId: string = '';\n userIdExistPending = false;\n hasExistedUserId = false;\n user!: SimplifiedUser;\n originUser!: SimplifiedUser;\n moveUserPending = false;\n userMoved$ = new Subject<any>();\n\n public userTypeSelected$ = new Subject<USER_TYPES_TYPE>();\n\n constructor(\n private apiService: APIService,\n private apiWebexService: ApiWebexService\n ) {\n\n }\n\n ngOnInit(): void {\n console.log(this.siteId)\n }\n\n public fetchUserToken(siteId: number, userId: string): any {\n this.siteId = siteId;\n this.userId = userId;\n return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\n .pipe(map((result: any) => {\n const token = Object.keys(result)[0];\n this.setSimplifiedUser(Object.values(result)[0], token);\n }))\n // .pipe(this.handleError(false, true));\n }\n\n public updateUserFields(body: any): any {\n if (!this.userId || !this.siteId || !this.user?.token) {\n return;\n }\n return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body)\n // .pipe(this.handleError(false, true));\n }\n\n public moveUserToMT(customerId: any, user: ListUser): any {\n // return new Observable<boolean>(observer => {\n // setTimeout(() => {\n // observer.next(true);\n //\n // }, 1000);\n // });\n return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user))\n // .pipe(this.handleError(true, true));\n }\n\n public moveUserToDI(customerId: any, user: ListUser): any {\n // return new Observable<boolean>(observer => {\n // setTimeout(() => {\n // observer.next(true);\n //\n // }, 1000);\n // });\n const URL = API.REVERT_WEBEX_USER.replace(':customerId', customerId).replace(':webexUUID', String(user.webexUUID));\n return this.apiWebexService.post(URL, this.getMoveUserBody(customerId, user))\n // .pipe(this.handleError(true, true));\n }\n\n public getMigrationFormStatus(customerId: number, formId: number): any {\n const url = API.MIGRATION_FORM\n .replace(':customerId', String(customerId))\n .replace(':formId', String(formId));\n return this.apiWebexService.fetch(url);\n }\n\n public getMigratedMigrationFormEntities(\n customerId: number,\n webexUUID: string,\n feature: string = 'PERSON'\n ): Observable<any> {\n const url = API.MIGRATION_FORM_ENTITIES_MIGRATED\n .replace(':customerId', String(customerId));\n return this.apiWebexService.fetch(url, { webexUUID, feature });\n }\n\n private getMoveUserBody(customerId: any, user: ListUser): any {\n return {\n customerId: customerId,\n entities: {\n PERSON: [{ cucmId: user.cucmId, entityId: user.userid }]\n }\n };\n }\n\n public deleteUser(siteId: number, userId: string): Observable<any> {\n return this.apiService.delete(API.DELETE_USER.replace(':siteId', String(siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\n // .pipe(this.handleError(true, true));\n }\n\n public fetchUserById(id: string) {\n this.userIdExistPending = true;\n return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))\n .pipe(map(result => {\n this.userIdExistPending = false;\n return result;\n }));\n }\n\n public persistCacheChanges() {\n const params = {\n excludeDeviceExtraOptions: true\n };\n return this.processUserChangesToCache()\n .pipe(map((result: any) => {\n return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {}, params)\n .subscribe(() => {\n\n })\n // .pipe(map((user) => {\n // // this.setUser(user, false, this.user.token);\n // this.user.hasModifiedCache = false;\n // }))\n // .pipe(this.handleError(true, true));\n }));\n }\n\n public processUserChangesToCache(): any {\n const calls = [];\n const body = UtilsService.diff(this.originUser.getSavableData(), this.user.getSavableData(), 'user');\n if (body) {\n calls.push(this.updateUserFields(body));\n }\n if (!calls?.length) {\n return of(this.user);\n }\n\n return forkJoin(calls)\n .pipe(map((responses: any) => {\n // ApiUserResponse\n this.handleSaveUserResponse(responses);\n }))\n // .pipe(this.handleError(false, true));\n\n }\n\n public hasUnsavedChanges() {\n return !this.user.equal(this.originUser);\n }\n\n public setSimplifiedUser(user: any, token?: any): void {\n this.user = new SimplifiedUser(user);\n const copiedUser = JSON.parse(JSON.stringify(user));\n this.originUser = new SimplifiedUser(copiedUser);\n this.user.token = this.user.token || token;\n this.originUser.token = this.originUser.token || token;\n }\n\n private handleSaveUserResponse(responses: any) {\n if (!responses?.length) {\n return;\n }\n for (let len = responses.length, i = len - 1; i >= 0; i--) {\n if (responses[i] && responses[i].currentUpdatedUser) {\n // this.setUser(responses[i].currentUpdatedUser, false, this.user.token);\n this.user.hasModifiedCache = true;\n return;\n }\n }\n }\n\n public triggerFirmwareUpgrade(\n customerId: number,\n migrationFormId: number | null,\n deviceMap: Record<number, Record<string, string[]>>,\n customerType?: keyof typeof CUSTOMER_DESTINATION\n ): Observable<any> {\n // const migrationType = CUSTOMER_DESTINATION_MIGTATION_TYPE[customerType].toUpperCase();\n const url = API.TRIGGER_FIRMWARE_MIGRATION\n .replace(':migrationType', 'webex'.toUpperCase())\n .replace(':customerId', String(customerId))\n .replace(':migrationFormId', String(migrationFormId));\n\n return this.apiWebexService\n .post(url, deviceMap);\n // .pipe(this.handleError(true, true));\n }\n\n public revertMigration(customerId: number, personId: string): Observable<any> {\n const url = API.WEBEX_REVERT\n .replace(':customerId', String(customerId))\n .replace(':personId', personId);\n return this.apiWebexService.post(url, {});\n // .pipe(this.handleError(true, true));\n }\n\n public removeUcmLicense(\n customerId: number,\n migrationFormId: number | null,\n controlHubType: string = 'WEBEX'\n ): Observable<any> {\n const url = API.REMOVE_UCM_LICENSE\n .replace(':controlHubType', String(controlHubType))\n .replace(':customerId', String(customerId))\n .replace(':migrationFormId', String(migrationFormId));\n\n return this.apiWebexService.post(url, {});\n }\n\n public swapStatuses(customerId: number, email: string) {\n return this.apiService.put(API.SWAP_STATUSES.replace(':customerId', String(customerId)), null, { email });\n }\n}\n","const TTL_DEFAULT = 30000;\nconst TTL_LONG_DEFAULT = 45000;\n\nexport enum NotificationType {\n info = 'info',\n error = 'error',\n success = 'success',\n warning = 'warning'\n}\n\nexport class Notification {\n id?: number;\n type?: NotificationType;\n message?: string;\n ttl: number = TTL_DEFAULT;\n timerId?: any;\n\n constructor(data: any) {\n Object.assign(this, data || {});\n\n if(this.ttl === undefined) {\n this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;\n }\n }\n\n isInfo(): boolean {\n return this.type === NotificationType.info;\n }\n isError(): boolean {\n return this.type === NotificationType.error;\n }\n isSuccess(): boolean {\n return this.type === NotificationType.success;\n }\n isWarning(): boolean {\n return this.type === NotificationType.warning;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Notification } from '../classes/notification';\nimport { Subject } from 'rxjs';\nconst SUCCESS_TIME = 5000;\nconst INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';\nconst INACTIVE_SESSION = 'SESSION_INACTIVE';\n\n@Injectable()\nexport class NotificationService {\n\n public listChange = new Subject();\n\n private max = 0;\n private list: Notification[] = [];\n\n constructor(\n ) {\n }\n\n error(message: string, ttl?: number): void {\n this.notify('error', message, ttl);\n }\n\n success(message: string, ttl?: number): void {\n this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);\n }\n\n warning(message: string, ttl?: number): void {\n this.notify('warning', message, ttl);\n }\n\n info(message: string, ttl?: number): void {\n this.notify('info', message, ttl);\n }\n private notify(type: string, message: string, ttl?: number): void {\n const found = this.list.find((n: Notification) => n.message === message);\n if (found) {\n this.remove(found);\n }\n const notification = new Notification({\n id: ++this.max,\n type, message, ttl\n });\n if (notification.ttl > 0) {\n notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);\n }\n this.list.push(notification);\n this.listChange.next(this.list);\n }\n\n remove(notification: Notification, auto?: boolean): void {\n if (!auto && notification.timerId) {\n // clear timeout in case of manual remove\n clearInterval(notification.timerId);\n }\n this.list = this.list.filter(n => n.id !== notification.id);\n this.listChange.next(this.list);\n }\n\n private removeInactiveSessionError(): void {\n if (!this.list || !this.list.length) {\n return;\n }\n this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);\n this.listChange.next(this.list);\n }\n\n}\n","import { DeviceInterface } from './device';\nimport { LineInterface } from './line';\n\nexport class ListUser implements ListUserInterface {\n // @ts-ignore\n userid: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n telephoneNumber?: string;\n devices: DeviceInterface[] = [];\n deviceProfiles: DeviceInterface[] = [];\n lines?: LineInterface[];\n siteId?: number;\n siteName?: string;\n webexUUID?: string;\n cucmId?: number;\n roleName?: string;\n status?: string;\n ldapIntegrated!: boolean;\n isMigrated = false;\n isReadyToUpgrade = false;\n\n constructor(user?: ListUser, roleName?: string) {\n if (user) {\n Object.assign(this, user);\n }\n if (roleName) {\n this.roleName = roleName;\n }\n }\n}\n\nexport interface ListUserInterface {\n userid: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n telephoneNumber?: string;\n viewMode?: any;\n devices: DeviceInterface[];\n deviceProfiles: DeviceInterface[];\n lines?: LineInterface[];\n siteId?: number;\n siteName?: string;\n webexUUID?: string;\n cucmId?: number;\n}\n","import { Injectable } from '@angular/core';\nimport { CUCMS_TO_IGNORE, CUCS_TO_IGNORE } from '../app.constants';\n\n@Injectable()\nexport class RemoveKynFromIBMService {\n constructor() {\n }\n\n\n removeCUCMS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));\n }\n return date;\n }\n\n removeCUCS(date: any, customerId: number) {\n if (customerId === 8) {\n return date.filter((val: any) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));\n }\n return date;\n }\n\n\n}\n","import { Injectable, OnInit } from '@angular/core';\r\nimport { SimplifiedUser } from '../classes/simlified-user';\r\nimport { APIService } from './api.service';\r\nimport { ListUser, ListUserInterface } from '../classes/user-list';\r\nimport { BehaviorSubject, Observable, of } from 'rxjs';\r\nimport { API, PAGINATION_DEFAULTS, PAGINATION_SIZE_OPTIONS, MAX_INTEGER, MAX_INT } from '../app.constants';\r\nimport { TableDataInterface } from '../classes/table-data';\r\nimport { map } from 'rxjs/operators';\r\nimport { RemoveKynFromIBMService } from './removeKynFromIBM.service';\r\nimport { PaginationDataDto } from '../classes/pagination';\r\nimport { ApiWebexService } from './api-webex.service';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class UsersSearchService {\r\n siteId: number = -1;\r\n userId: string = '';\r\n customerId!: number;\r\n siteid!: number;\r\n userIdExistPending = false;\r\n hasExistedUserId = false;\r\n pageSize = PAGINATION_DEFAULTS.SIZE;\r\n pageIndex = PAGINATION_DEFAULTS.SIZE;\r\n pageSizeOptions = PAGINATION_SIZE_OPTIONS;\r\n migratedUsersIds!: any;\r\n total!: number;\r\n migratedUsers!: any;\r\n searchParams!: any;\r\n foundUsers$!: any;\r\n quickUpgradeStatusUsers$!: any;\r\n usersUpgradeStatus!: any;\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private webexApiService: ApiWebexService,\r\n private removeKynFromIBMService: RemoveKynFromIBMService\r\n ) {\r\n this.foundUsers$ = new BehaviorSubject(null);\r\n this.quickUpgradeStatusUsers$ = new BehaviorSubject(null);\r\n\r\n }\r\n\r\n public getAllRegularUsers(searchParams?: any): Observable<ListUser[]> {\r\n const params = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, MAX_INTEGER, 0, params)\r\n .pipe(map((res: TableDataInterface) => {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n // /.map(user => new ListUser(user, user.webexUUID ? '' : 'Dedicated Instance Calling User')) : [];\r\n .map(user => new ListUser(user)) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n return users;\r\n }));\r\n }\r\n\r\n public getPagination(): PaginationDataDto {\r\n return {\r\n total: this.total,\r\n pageSizeOptions: this.pageSizeOptions,\r\n pageSize: this.pageSize,\r\n pageIndex: this.pageIndex\r\n };\r\n }\r\n\r\n public setDefaultValues() {\r\n this.total = 0;\r\n this.pageSize = PAGINATION_DEFAULTS.SIZE;\r\n this.pageIndex = PAGINATION_DEFAULTS.INDEX;\r\n this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;\r\n }\r\n public quickRegularUsersSearch(searchParams?: any, isMigratedUsersOnly?: boolean, pageSize?: number): any {\r\n console.log('searchParams = ', searchParams);\r\n this.searchParams = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n // this.searchParams['provisionType'] = 'CUCM';\r\n return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize ||this.pageIndex, this.searchParams)\r\n .pipe(map((res: TableDataInterface) => {\r\n // this.totals = this.totals || {};\r\n // this.totals['users'] = res.total;\r\n\r\n // this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));\r\n if (!isMigratedUsersOnly) {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => new ListUser(user)) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n this.total = res.total;\r\n this.foundUsers$.next(users);\r\n } else {\r\n this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => user.userid) : [];\r\n }\r\n }));\r\n // .pipe(this.handleError(true));\r\n }\r\n\r\n public quickWebexUsersSearch(searchParams?: any, isMigratedUsersOnly?: boolean, pageSize?: number): any {\r\n this.searchParams = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n // this.searchParams['provisionType'] = 'CUCM';\r\n return this.webexApiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize ||this.pageIndex, this.searchParams)\r\n .pipe(map((res: TableDataInterface) => {\r\n console.log('data: ', res);\r\n\r\n if (!isMigratedUsersOnly) {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => new ListUser(user)) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n this.total = res.total;\r\n this.foundUsers$.next(users);\r\n } else {\r\n this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => user.userid) : [];\r\n }\r\n }));\r\n // .pipe(this.handleError(true));\r\n }\r\n\r\n getMigratedUsers(customerId: number): any {\r\n this.migratedUsers = [];\r\n return of(this.migratedUsers);\r\n // return this.webexApiService.fetch(API.WEBEX_USERS.replace(':customerId', String(customerId)), {})\r\n // .pipe(map((result: any) => {\r\n // if (result && result.length) {\r\n // this.migratedUsers = result.filter((user: any) => user.webexUUID && user.devices && user.devices.length);\r\n // }\r\n // }))\r\n }\r\n\r\n getMigratedWebexUsers(customerId: number): any {\r\n const params = {customerid: customerId, type: 'PERSON'};\r\n return this.webexApiService.fetch(API.MIGRATED_USERS.replace(':customerId', String(customerId)), params, true)\r\n .pipe(map((result: any) => {\r\n }))\r\n }\r\n\r\n getUsersUpgradeStatus(customerId: number): any {\r\n const URL = API.QUICK_UPGRADE_STATUS_USERS.replace(':customerId', String(customerId));\r\n return this.webexApiService.fetchPagination(URL, MAX_INT, 0)\r\n .pipe(map((result: any) => {\r\n if (result?.content?.length) {\r\n this.usersUpgradeStatus = Object.fromEntries(\r\n result.content.map((item: any) => [\r\n item.userId,\r\n item.upgradeStatus === 'READY'\r\n ])\r\n );\r\n } else {\r\n this.usersUpgradeStatus = null;\r\n }\r\n this.quickUpgradeStatusUsers$.next();\r\n }))\r\n }\r\n\r\n setMigratedPropToUsers(users: any): void {\r\n // users.forEach((user: any) => {\r\n // const migratedUser = this.migratedUsers.filter((migratedUser: any) => migratedUser.userid === user.email);\r\n // if (migratedUser && migratedUser[0]) {\r\n // user.roleName = '';\r\n // user.isMigrated = true;\r\n // user.status = 'Migrated';\r\n // user.webexUUID = migratedUser[0].webexUUID;\r\n // } else {\r\n // user.roleName = 'Dedicated Instance Calling user';\r\n // user.isMigrated = false;\r\n // user.status = 'Active';\r\n // user.webexUUID = null;\r\n // }\r\n\r\n // if (user.webexUUID) {\r\n // user.roleName = 'Dedicated Instance Calling user';\r\n // } else {\r\n // user.roleName = '';\r\n // }\r\n // })\r\n // console.log('users ttt', users);\r\n }\r\n\r\n setUpgradeStatusToUsers(users: any[], upgradeStatusObj: any): void {\r\n if (users?.length && upgradeStatusObj) {\r\n users.forEach(user => {\r\n if (upgradeStatusObj[user.userid]) {\r\n user.isReadyToUpgrade = upgradeStatusObj[user.userid];\r\n }\r\n })\r\n }\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { PaginationDataDto } from '../../classes/pagination';\r\nimport { PAGINATION_SIZE_OPTIONS } from '../../app.constants';\r\n\r\n\r\n@Component({\r\n selector: 'app-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss'],\r\n})\r\nexport class PaginationComponent implements OnInit{\r\n @Input()\r\n public pagination!: PaginationDataDto;\r\n @Input()\r\n public showPageSizeOptions!: boolean;\r\n @Input()\r\n public showRefreshButton!: boolean;\r\n @Input()\r\n public lengthPending!: boolean;\r\n @Output()\r\n public pageEmitter = new EventEmitter();\r\n @Output()\r\n public pageNumberChangeEmitter = new EventEmitter<any>();\r\n public pageSizeOptions: number[] = PAGINATION_SIZE_OPTIONS;\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public pageEvent(event: any) {\r\n this.pageEmitter.emit(event);\r\n }\r\n\r\n public changePerPageNumber(event: any) {\r\n this.pageNumberChangeEmitter.emit(event.value);\r\n }\r\n\r\n}\r\n","<div class=\"flex-box pagination\">\r\n <div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions || [5, 10, 25, 100]\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\r\n </mat-spinner>\r\n </div>\r\n\r\n <div class=\"flex-box per-page-block\" style=\"justify-content: left;\" *ngIf=\"showPageSizeOptions\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './app-loader.component.html',\n styleUrls: ['./app-loader.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AppLoaderComponent {\n constructor() {\n }\n\n}\n","<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"70\"\n strokeWidth=\"3\"></mat-progress-spinner>\n</div>\n","import { SiteShortDataInterface } from './device';\n\nexport interface LineInterface {\n description: string;\n pkid: string;\n entityChangeType: EntityChangeType;\n alertingName: string;\n asciiAlertingName: string;\n callingSearchSpace: string;\n voiceMailProfile: string;\n noAnswerRingDuration: number;\n autoAnswer: string;\n directoryNumber: LineDirectoryInterface;\n didPatterns: Array<TranslationPatternInterface>;\n mappedDids: Array<string>;\n aarSettings: LineAarInterface;\n callForwardAll: CallInterface;\n callForwardAllSecondaryCSS: CallInterface;\n callForwardBusyInternal: CallInterface;\n callForwardBusyExternal: CallInterface;\n callForwardNoAnswerInternal: CallInterface;\n callForwardNoAnswerExternal: CallInterface;\n callForwardNoCoverageInternal: CallInterface;\n callForwardNoCoverageExternal: CallInterface;\n callForwardOnCTIFailure: CallInterface;\n callForwardUnregisteredInternal: CallInterface;\n callForwardUnregisteredExternal: CallInterface;\n parkMonitoringExternal: LineParkMonitoringInterface;\n parkMonitoringInternal: LineParkMonitoringInterface;\n callPickupGroup: string;\n localId: string;\n urgentPriority: boolean;\n blfPresenceGroup: string;\n userHoldMOHAudioSourceId: string;\n userHoldMOHAudioSourceName: string;\n networkMOHAudioSourceId: string;\n networkMOHAudioSourceName: string;\n rejectAnonymousCall: boolean;\n enterpriseAltNum: AlternateNumberInterface;\n e164AltNum: AlternateNumberInterface;\n directoryUris: Array<DirectoryUriInterface>;\n callForwardAlternateParty: ParkMonitoringInterface;\n mlppNoAnswerRingDuration: number;\n confidentialAccessMode: string;\n confidentialAccessLevel: string;\n confidentialAccessLevelName: string;\n callControlAgentProfile: string;\n holdReversionRingDuration: number;\n holdReversionNotificationInterval: number;\n partyEntranceTone: string;\n pstnFailover: string;\n isExistingLine?: boolean;\n plarDestinationNumber: string;\n prefixDigits: string;\n plarDescription: string;\n plarEnabled: boolean;\n}\n\nexport enum EntityChangeType {\n added = 'added',\n updated = 'updated',\n existing = 'existing',\n removed = 'removed',\n unassociated = 'unassociated'\n}\nexport interface LineDirectoryInterface {\n directoryNumber: string;\n routePartitionName: string;\n pkid: string;\n dnType: string;\n subType?: string;\n templateDirectoryNumber?: string;\n}\nexport interface TranslationPatternInterface {\n pattern: string;\n calledPartyTransformationMask: string;\n description?: string;\n site?: SiteShortDataInterface;\n hasMultipleSites?: boolean;\n multipleSitesId?: string;\n}\nexport interface LineAarInterface {\n aarDestinationMask: string;\n aarGroup: string;\n aarVoiceMailEnabled: boolean;\n aarKeepCallHistory: boolean;\n}\nexport interface CallInterface {\n forwardToVoiceMail: boolean;\n destination: string;\n callingSearchSpace: string;\n}\nexport interface LineParkMonitoringInterface {\n voiceMail: boolean;\n destination: string;\n callingSearchSpace: string;\n}\nexport interface AlternateNumberInterface {\n numberMask: string;\n addLocalRoutePartition: boolean;\n routePartition: string;\n isUrgent: boolean;\n advertiseGloballyIls: boolean;\n}\nexport interface DirectoryUriInterface {\n primary: boolean;\n uri: string;\n routePartition: string;\n advertiseGloballyIls: boolean;\n}\nexport interface ParkMonitoringInterface {\n destination: string;\n callingSearchSpace: string;\n voiceMail: boolean;\n}\nexport interface AvailablePhoneNumberRangeInterface {\n phoneNumberRange: DnRangeInterface;\n usedNumbers: string[];\n requestedNumber: string;\n unUsedNumbersWithDids: any;\n}\nexport interface DnRangeInterface {\n from: string;\n to: string;\n prefix: string;\n routePartition: string;\n dnType: DnRangeType;\n tempIdx: number;\n\n getEditableData(): any;\n\n getUsedRangeEditableData(): any;\n}\nexport enum DnRangeType {\n extension = 'EXTENSION',\n cpg = 'CPG',\n callpark = 'CALLPARK',\n huntgroup = 'HUNTGROUP',\n meetme = 'MEETME',\n did = 'DID'\n}\nexport interface AvailableRangeInterface {\n availableNumberList: AvailablePhoneNumberRangeInterface[];\n}\n","import { Injectable } from '@angular/core';\nimport { API } from '../app.constants';\nimport { APIService } from './api.service';\nimport { map } from 'rxjs/operators';\nimport Big from 'big.js';\nimport { Observable } from 'rxjs';\nimport { ApiWebexService } from '../services/api-webex.service';\nimport { AvailablePhoneNumberRangeInterface, DnRangeType } from '../classes/line';\n\n\n@Injectable()\nexport class DnsService {\n availableNumbers = {};\n availableDidPatternsMappedToDn!: any;\n phoneNumbers: string[] = [];\n\n constructor(\n private apiService: APIService,\n private apiWebexService: ApiWebexService\n ) {\n\n }\n public getNumberRange(siteId: string, routePartition: string, withdids?: boolean, from?: string, pageSize?: number): any {\n // @ts-ignore\n if (this.availableNumbers[routePartition]?.length) {\n return new Observable<any>(observer => {\n // @ts-ignore\n observer.next(this.availableNumbers[routePartition]);\n });\n }\n\n this.availableDidPatternsMappedToDn = {};\n pageSize = pageSize ? pageSize : 20;\n const params = {dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0};\n if (withdids) {\n // @ts-ignore\n params['withdids'] = 'true';\n }\n if (from) {\n // @ts-ignore\n params['from'] = from;\n }\n // @ts-ignore\n this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];\n\n return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)\n .pipe(map((res: any) => {\n res.availableNumberList.forEach((availableNumber: AvailablePhoneNumberRangeInterface) => {\n this.setAvailableDidMappedToDn(availableNumber);\n // @ts-ignore\n this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];\n });\n })\n )\n // .pipe(this.handleError(true, false));\n }\n\n public setAvailableDidMappedToDn(availableNumber: any): void {\n if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {\n\n availableNumber.unUsedNumbersWithDids.forEach((numberWithDids: any) => {\n const dn = numberWithDids['unUsedNumber'];\n this.availableDidPatternsMappedToDn[dn] = [{}];\n if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {\n this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];\n if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];\n }\n }\n this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];\n });\n }\n }\n\n public getUnwrapNumberRange(availableNumber: any): string[] {\n let unwrapNumberRange = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to)\n .map((unwrappedNumber: string) => {\n const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;\n let str = dn;\n if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {\n if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {\n str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);\n }\n if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {\n str += ' In Use - VM';\n }\n }\n return str;\n });\n unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber: string) => !availableNumber.usedNumbers.includes(unwrappedNumber));\n return unwrapNumberRange;\n }\n\n public unwrapNumberRange(start: string, end: string): string[] {\n const regExp = /(^0+)/;\n let leadingZeros = '';\n const matches = start.match(regExp);\n if (matches) {\n leadingZeros = matches[1];\n }\n const startNumeric = new Big(start);\n const endNumeric = new Big(end);\n // @ts-ignore\n return Array.from({length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0))}, (v, k) => {\n const number = String(startNumeric.plus(new Big(k)).toFixed(0));\n if ((leadingZeros + number).length > start.length) {\n leadingZeros = leadingZeros.substr(1);\n }\n return leadingZeros + number;\n });\n }\n\n public fetchPhoneNumbers(customerId: number, locationId: string): any {\n const params = {\n available: true,\n numberType: 'NUMBER'\n };\n return this.apiWebexService.fetch(API.PHONE_NUMBERS.replace(':customerId', String(customerId)).replace(':locationId', locationId), params)\n .pipe(map((result: any) => {\n if (result?.length) {\n this.phoneNumbers = result.map((item: any) => item.phoneNumber);\n }\n return result;\n }));\n }\n}\n","export class AppLocation {\n id = '';\n name = '';\n timeZone = '';\n address = new LocationAddress();\n\n constructor(props?: any) {\n if (props) {\n this.id = props.id || '';\n this.name = props.name || '';\n this.timeZone = props.timeZone || '';\n this.address = new LocationAddress(props.address);\n }\n }\n}\n\n\nexport class LocationAddress {\n country = '';\n countryName = ''\n state = ''\n city = '';\n postalCode = '';\n address1 = '';\n address2 = '';\n\n\n constructor(props?: any) {\n if (props) {\n ['country', 'countryName', 'state', 'city', 'postalCode', 'address1', 'address2'].forEach(token => {\n // @ts-ignore\n this[token] = props[token] || '';\n })\n }\n }\n}\n","import { ListUser } from './user-list';\nimport { AppLocation } from './app-location';\nimport { getSavableData } from '../utils/common-functions';\n\nexport class PrepareMigrationData {\n customerId: number = 0;\n siteId: number = 0;\n cucmId: number = 0;\n entityId = '';\n\n devices: PrepareMigrationDevice[] = [];\n softDevices : PrepareMigrationDevice[] = [];\n notSupportedDevices: PrepareMigrationDevice[] = [];\n\n primaryExtension = '';\n newExtension = '';\n removeExtension = false;\n\n primaryPhoneNumber = '';\n newPhoneNumber = '';\n removePhoneNumber = false;\n\n newLocation: AppLocation | null = null;\n newLocationName = '';\n phoneNumberWithExtension: PhoneNumberWithExtension[] = [];\n moveType: MoveType = new MoveType();\n errors: string[] = [];\n\n pending = false;\n isConfirm = false;\n\n constructor(data?: any, originData?: PrepareMigrationData) {\n if (data) {\n this.customerId = data.customerId;\n this.siteId = data.siteId;\n this.cucmId = data.cucmId;\n this.entityId = data.entityId;\n this.primaryExtension = data.primaryExtension || '';\n this.primaryPhoneNumber = data.primaryPhoneNumber || '';\n this.newLocation = originData?.newLocation || new AppLocation(data.newLocation) || this.newLocation;\n this.errors = data.errors;\n\n this.phoneNumberWithExtension = data.phoneNumberWithExtension?.length ? data.phoneNumberWithExtension.map((item: any) => new PhoneNumberWithExtension(item)) : [];\n\n this.devices = data.devices?.length ? data.devices.map(\n (deviceData: any) => new PrepareMigrationDevice(deviceData, true, false, true)) : [];\n this.softDevices = data.softDevices?.length ? data.softDevices.map(\n (deviceData: any) => new PrepareMigrationDevice(deviceData, true, true, true)) : [];\n\n this.notSupportedDevices = data.notSupportedDevices?.length ? data.notSupportedDevices.map(\n (deviceData: any) => new PrepareMigrationDevice(deviceData, false,true, false)) : [];\n }\n if (originData) {\n this.moveType = originData.moveType;\n }\n\n }\n\n eligibleDevicesSize(): number {\n return this.devices.length + this.softDevices.length;\n }\n\n getSavableData() {\n return getSavableData(this, ['pending', 'isConfirm']);\n }\n}\n\nexport class PrepareMigrationDevice {\n id!: number | null;\n mac!: string;\n product!: string;\n model!: string;\n cisUuid!: string | null;\n deviceId!: string | null;\n personId!: string | null;\n workspaceId!: string | null;\n locationId!: string | null;\n toMigrate = false;\n isToMigrateDisabled = false;\n isEligible = false;\n name = '';\n\n constructor(data?: any, toMigrate?: boolean, isToMigrateDisabled?: boolean, isEligible?: boolean) {\n data = {\n ...data.device,\n ...data,\n }\n if (data) {\n this.id = data.id ?? null;\n this.mac = data.mac;\n this.name = data.name;\n this.product = data.product;\n this.model = data.model;\n this.cisUuid = data.cisUuid ?? null;\n this.deviceId = data.deviceId ?? null;\n this.personId = data.personId ?? null;\n this.workspaceId = data.workspaceId ?? null;\n this.locationId = data.locationId ?? null;\n }\n this.toMigrate = toMigrate || this.toMigrate;\n this.isToMigrateDisabled = isToMigrateDisabled || this.isToMigrateDisabled;\n this.isEligible = isEligible || this.isEligible;\n }\n\n getSavableData() {\n const excludedFields: string[] = ['toMigrate', 'isToMigrateDisabled'];\n return getSavableData(this, excludedFields);\n }\n}\n\nexport class PhoneNumberWithExtension {\n extension = '';\n phoneNumber = '';\n\n constructor(item: any) {\n this.extension = item.extension;\n this.phoneNumber = item.phoneNumber;\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n}\n\nexport class PrepareMigrationBody {\n customerId = 0;\n locationId = '';\n entities!: PrepareMigrationEntity;\n\n constructor(userList: ListUser, customerId: number, locationId: string) {\n this.customerId = customerId || this.customerId;\n this.locationId = locationId || this.locationId;\n this.entities = new PrepareMigrationEntity(userList.cucmId, userList.userid);\n }\n\n getSavableData() {\n return getSavableData(this);\n }\n}\nexport class PrepareMigrationEntity {\n PERSON: PersonMigrationEntity[] = [];\n\n constructor(cucmId: any, entityId: string) {\n this.PERSON.push(new PersonMigrationEntity(cucmId, entityId));\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n\n}\nexport class PersonMigrationEntity {\n cucmId!: any;\n entityId = '';\n\n constructor(cucmId: any, entityId: string) {\n this.cucmId = cucmId;\n this.entityId = entityId || this.entityId;\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n}\n\nexport class MigrationData {\n customerId = 0;\n siteId = 0;\n cucmId = 0;\n entityId= '';\n primaryExtension: string | null = '';\n primaryPhoneNumber: string | null = '';\n devices: string[] = [];\n phoneNumberWithExtension: PhoneNumberWithExtension[] = [];\n\n constructor(data: PrepareMigrationData) {\n this.customerId = data.customerId;\n this.siteId = data.siteId;\n this.cucmId = data.cucmId;\n this.entityId = data.entityId;\n\n if (data.newExtension) {\n this.primaryExtension = data.newExtension;\n } else if (data.removeExtension) {\n this.primaryExtension = null;\n } else {\n this.primaryExtension = data.primaryExtension;\n }\n\n if (data.newPhoneNumber) {\n this.primaryPhoneNumber = data.newPhoneNumber;\n } else if (data.removePhoneNumber) {\n this.primaryPhoneNumber = null;\n } else {\n this.primaryPhoneNumber = data.primaryPhoneNumber;\n }\n\n this.phoneNumberWithExtension = data.phoneNumberWithExtension;\n\n if (data.devices?.length) {\n data.devices.map(device => {\n if (device.toMigrate && device.mac) {\n this.devices.push(device.mac);\n }\n });\n }\n }\n\n getSavableData() {\n const excludedFields: string[] = ['form'];\n return getSavableData(this, excludedFields);\n }\n\n}\n\nexport class MoveType {\n phoneNumber = '1';\n extension = '1';\n\n constructor(data?: any) {\n if (data) {\n this.phoneNumber = data.phoneNumber;\n this.extension = data.extension;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { API } from '../app.constants';\nimport { map } from 'rxjs/operators';\nimport { AppLocation } from '../classes/app-location';\nimport { ApiWebexService } from '../services/api-webex.service';\n\n@Injectable()\nexport class SiteSettingsService {\n locations: AppLocation[] = [];\n\n constructor(\n private apiWebexService: ApiWebexService\n ) {\n\n }\n\n getLocations(customerId: number): any {\n return this.apiWebexService.fetch(API.GET_LOCATIONS.replace(':customerId', String(customerId)), {})\n .pipe(map((result: any) => {\n if (result && result.length) {\n this.locations = result.map((location: any) => new AppLocation(location))\n }\n return result;\n }))\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport { APIService } from './api.service';\r\nimport { ApiWebexService } from '../services/api-webex.service';\r\nimport { API } from '../app.constants';\r\nimport { map } from 'rxjs/operators';\r\nimport { MigrationData, PrepareMigrationBody, PrepareMigrationData } from '../classes/move-user';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class MoveUserService {\r\n prepareMigrationData!: PrepareMigrationData;\r\n originPrepareMigrationData!: PrepareMigrationData;\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService\r\n ) {\r\n\r\n }\r\n\r\n resetMigrationDataForNewLocation(): void {\r\n this.prepareMigrationData.newExtension = '';\r\n this.prepareMigrationData.newPhoneNumber = '';\r\n this.prepareMigrationData.newExtension = '';\r\n\r\n }\r\n\r\n setOriginPrepareMigrationData(): void {\r\n const data = JSON.parse(JSON.stringify(this.prepareMigrationData.getSavableData()));\r\n this.originPrepareMigrationData = new PrepareMigrationData(data);\r\n }\r\n\r\n fetchPrepareMigrationData(data: PrepareMigrationBody): any {\r\n return this.apiWebexService.post(API.PREPARE_PERSON_MIGRATION, data.getSavableData())\r\n .pipe(map((result: any) => {\r\n if (result) {\r\n this.prepareMigrationData = new PrepareMigrationData(result, this.originPrepareMigrationData);\r\n }\r\n return result;\r\n }));\r\n // .pipe(this.handleError(false, true));\r\n }\r\n\r\n startMigration(data: MigrationData): any {\r\n /* return new Observable<boolean>(observer => {\r\n setTimeout(() => {\r\n observer.next(true);\r\n\r\n }, 2000);\r\n });*/\r\n return this.apiWebexService.post(API.START_MIGRATION, data.getSavableData())\r\n .pipe(map((result: any) => {\r\n if (data) {\r\n this.prepareMigrationData = new PrepareMigrationData(data);\r\n }\r\n }));\r\n // .pipe(this.handleError(false, true));\r\n }\r\n}\r\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { PrepareMigrationDevice } from '../../../classes/move-user';\nimport { AppLocation } from '../../../classes/app-location';\nimport { DnsService } from '../../../services/dns.service';\nimport { UserService } from '../../../services/user.service';\nimport { SiteSettingsService } from '../../../services/site-settings.service';\n@Component({\n selector: 'app-device-move-user-wizard',\n templateUrl: './device-move-user-wizard.component.html',\n styleUrls: ['./device-move-user-wizard.component.scss']\n\n})\nexport class DeviceMoveUserWizardComponent implements OnInit {\n @Input()\n device!: PrepareMigrationDevice;\n\n\n get moveUserPending(): boolean {\n return this.userService.moveUserPending;\n }\n\n get locations(): AppLocation[] {\n return this.siteSettingsService.locations;\n }\n\n constructor(\n public dnsService: DnsService,\n public userService: UserService,\n public siteSettingsService: SiteSettingsService\n ) {\n }\n\n ngOnInit() {\n\n }\n\n onMigrateDeviceChecked(event: any): void {\n\n }\n\n\n private resetMoveTypePhoneNUmber(): void {\n this.dnsService.phoneNumbers = [];\n }\n\n}\n","<form>\n <div class=\"device-item-panel-container\">\n <div class=\"device-left\">\n <div\n class=\"device-migration-status\"\n [ngClass]=\"{'--checked': device.toMigrate}\"\n >\n <mat-checkbox\n class=\"rounded\"\n [checked]=\"device.toMigrate\"\n ></mat-checkbox>\n </div>\n </div>\n <div class=\"device-right\">\n <div class=\"device-header\">\n <div class=\"device-name\">{{ device.name }}</div>\n <div class=\"device-migrate\" *ngIf=\"device.isEligible\">\n <mat-checkbox name=\"toMigrate\"\n [(ngModel)]=\"device.toMigrate\"\n >Migrate this device</mat-checkbox>\n </div>\n </div>\n <mat-divider></mat-divider>\n <div class=\"device-info\">\n <div *ngIf=\"device.product\" class=\"device-info__item\">\n <div class=\"key\">Device type</div>\n <div class=\"value\">{{ device.product }}</div>\n </div>\n <div *ngIf=\"device.mac\" class=\"device-info__item\">\n <div class=\"key\">MAC address</div>\n <div class=\"value\">{{ device.mac }}</div>\n </div>\n\n </div>\n </div>\n </div>\n</form>\n","import { Component, OnInit } from \"@angular/core\";\nimport { PrepareMigrationData } from '../../../classes/move-user';\nimport { MoveUserService } from '../../../services/move-user.service';\n@Component({\n selector: 'app-devices-move-user-tab',\n templateUrl: './devices-move-user-wizard-tab.component.html',\n styleUrls: ['./devices-move-user-wizard-tab.component.scss']\n\n})\nexport class DevicesMoveUserWizardTabComponent implements OnInit {\n\n get prepareMigrationData(): PrepareMigrationData {\n return this.moveUserService.prepareMigrationData;\n }\n\n constructor(\n public moveUserService: MoveUserService,\n ) {\n }\n\n ngOnInit() {\n\n }\n\n\n}\n","<div *ngIf=\"prepareMigrationData.eligibleDevicesSize\"\n class=\"devices-move-user-box eligible-devices-section\" >\n <div class=\"section-title\">Eligible devices ({{ prepareMigrationData.eligibleDevicesSize() }})</div>\n <div class=\"section-content\">\n <div *ngIf=\"prepareMigrationData.devices?.length\" class=\"device-group\">\n <div class=\"group-title\">IP Phones</div>\n <ng-container *ngFor=\"let device of prepareMigrationData.devices\">\n <app-device-move-user-wizard [device]=\"device\"></app-device-move-user-wizard>\n </ng-container>\n </div>\n\n <div *ngIf=\"prepareMigrationData.softDevices?.length\" class=\"device-group\">\n <div class=\"group-title\">Soft Devices</div>\n <ng-container *ngFor=\"let device of prepareMigrationData.softDevices\">\n <app-device-move-user-wizard [device]=\"device\"></app-device-move-user-wizard>\n </ng-container>\n </div>\n </div>\n</div>\n<mat-divider *ngIf=\"prepareMigrationData.notSupportedDevices.length\"></mat-divider>\n<div *ngIf=\"prepareMigrationData.notSupportedDevices.length\" class=\"ineligible-devices-section\">\n <div class=\"section-title\">Ineligible devices ({{ prepareMigrationData.notSupportedDevices.length }})</div>\n <div class=\"section-content\">\n <div class=\"device-group\">\n <ng-container *ngFor=\"let device of prepareMigrationData.notSupportedDevices\">\n <app-device-move-user-wizard [device]=\"device\"></app-device-move-user-wizard>\n </ng-container>\n </div>\n </div>\n</div>\n\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { DnsService } from '../../services/dns.service';\r\nimport { MatStepper } from \"@angular/material/stepper\";\r\nimport { UserService } from '../../services/user.service';\r\nimport { AppLocation } from '../../classes/app-location';\r\nimport { SiteSettingsService } from '../../services/site-settings.service';\r\nimport { filterOptions } from '../../utils/common-functions';\r\nimport { MigrationData, PrepareMigrationBody, PrepareMigrationData } from '../../classes/move-user';\r\nimport { MoveUserService } from '../../services/move-user.service';\r\nimport { NotificationService } from '../../services/notification.service';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\n// for test only\r\nconst LOCATION = 'Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzE2YjY0NjljLTBjZmQtNDJjMS1iOWJjLTUyN2FlZTNhN2RlOQ';\r\n\r\n@Component({\r\n selector: 'app-move-user-stepper',\r\n templateUrl: './move-user-stepper.component.html',\r\n styleUrls: ['./move-user-stepper.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MoveUserStepperComponent implements OnInit {\r\n @ViewChild('nextAfterMoveBtn') nextAfterMoveBtn: any;\r\n @ViewChild('stepper') stepper!: MatStepper;\r\n\r\n @Output()\r\n done = new EventEmitter();\r\n @Input()\r\n user: any;\r\n @Input()\r\n customerId!: number;\r\n @Output()\r\n runMoveUser = new EventEmitter();\r\n @Output()\r\n cancel = new EventEmitter();\r\n isLinear = false;\r\n phoneNumberPending = false;\r\n filteredLocations: AppLocation[] = [];\r\n filteredPhoneNumbers: any;\r\n dataPending = false;\r\n\r\n get moveUserPending(): boolean {\r\n return this.userService.moveUserPending;\r\n }\r\n\r\n get currentNumber(): string {\r\n if (this.user?.devices?.length && this.user.devices[0]?.lineAssociations && this.user.devices[0].lineAssociations[0]) {\r\n return this.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber;\r\n }\r\n return '';\r\n }\r\n\r\n get locations(): AppLocation[] {\r\n return this.siteSettingsService.locations;\r\n }\r\n\r\n get prepareMigrationData(): PrepareMigrationData {\r\n return this.moveUserService.prepareMigrationData;\r\n }\r\n\r\n constructor(\r\n public dnsService: DnsService,\r\n public userService: UserService,\r\n public siteSettingsService: SiteSettingsService,\r\n private notificationService: NotificationService,\r\n public moveUserService: MoveUserService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.moveUserService.prepareMigrationData = new PrepareMigrationData();\r\n this.getData();\r\n }\r\n\r\n displayLocation(location?: AppLocation): string {\r\n return location?.name || '';\r\n }\r\n\r\n onLocationAutocomplete(event: any): void {\r\n const value = (event.target as HTMLInputElement).value;\r\n\r\n if (this.locations?.length) {\r\n this.filteredLocations = filterOptions(this.locations, value || '', '', 'name');\r\n }\r\n }\r\n\r\n onNumberAutocomplete(): void {\r\n if (this.dnsService.phoneNumbers?.length) {\r\n this.filteredPhoneNumbers = filterOptions(this.dnsService.phoneNumbers, this.prepareMigrationData.newPhoneNumber);\r\n }\r\n }\r\n\r\n onMoveUser(stepper: MatStepper): void {\r\n this.stepper = stepper;\r\n this.runMoveUser.emit();\r\n }\r\n\r\n onStepChange(event: any): void {\r\n }\r\n\r\n selectPhoneNumberMigrationType(event: any): void {\r\n if (event.value && event.value === '2') {\r\n this.getPhoneNumbers();\r\n }\r\n this.moveUserService.prepareMigrationData.removePhoneNumber = event.value && event.value === '3';\r\n }\r\n\r\n selectExtensionMigrationType(event: any): void {\r\n this.moveUserService.prepareMigrationData.removeExtension = event.value && event.value === '3';\r\n }\r\n\r\n onPhoneNumberChange(event: any): void {\r\n console.log('new phone number = ', this.prepareMigrationData.newPhoneNumber);\r\n }\r\n\r\n onLocationChange(event: MatAutocompleteSelectedEvent): void {\r\n this.moveUserService.prepareMigrationData.newLocation = event.option.value;\r\n this.moveUserService.resetMigrationDataForNewLocation();\r\n\r\n if (this.prepareMigrationData.moveType.phoneNumber === '2') {\r\n this.getPhoneNumbers();\r\n }\r\n this.getPrepareUserData();\r\n }\r\n\r\n onExtensionChange(event: any): void {\r\n console.log('new newExtension = ', this.prepareMigrationData.newExtension);\r\n }\r\n\r\n getPhoneNumbers(): void {\r\n if (!this.prepareMigrationData.newLocation?.id) {\r\n return;\r\n }\r\n this.phoneNumberPending = true;\r\n this.dnsService.fetchPhoneNumbers(this.customerId, this.prepareMigrationData.newLocation.id)\r\n .subscribe(() => {\r\n this.phoneNumberPending = false;\r\n this.filteredPhoneNumbers = this.dnsService.phoneNumbers.slice();\r\n }, () => this.phoneNumberPending = false);\r\n }\r\n\r\n isNextFromSelectLocationDisabled(): boolean {\r\n if (!this.prepareMigrationData?.newLocation?.id || !this.prepareMigrationData.entityId) {\r\n return true;\r\n }\r\n if (this.prepareMigrationData.moveType.phoneNumber === '2' && !this.prepareMigrationData.newPhoneNumber) {\r\n return true;\r\n }\r\n if (this.prepareMigrationData.moveType.extension === '2' && !this.prepareMigrationData.newExtension) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n goNextStep(stepper: MatStepper) {\r\n\r\n }\r\n\r\n startMigration(): void {\r\n const migrationData = new MigrationData(this.prepareMigrationData);\r\n this.dataPending = true;\r\n this.moveUserService.startMigration(migrationData)\r\n .subscribe((result: any) => {\r\n this.dataPending = false;\r\n if (this.stepper) {\r\n this.stepper.next();\r\n }\r\n }, () => {\r\n this.dataPending = false;\r\n })\r\n }\r\n\r\n getData(): void {\r\n if (!this.user) {\r\n return;\r\n }\r\n this.dataPending = true;\r\n this.siteSettingsService.getLocations(this.customerId)\r\n .subscribe(() => {\r\n if (this.locations?.length) {\r\n this.filteredLocations = this.locations.slice();\r\n }\r\n this.dataPending = false;\r\n }, () => this.dataPending = false)\r\n }\r\n\r\n private getPrepareUserData() {\r\n if (this.prepareMigrationData?.newLocation?.id) {\r\n this.moveUserService.setOriginPrepareMigrationData();\r\n const prepareMigrationBody = new PrepareMigrationBody(this.user, this.customerId, this.prepareMigrationData.newLocation.id);\r\n this.moveUserService.prepareMigrationData.pending = true;\r\n this.moveUserService.fetchPrepareMigrationData(prepareMigrationBody)\r\n .subscribe(() => {\r\n\r\n }, () => {\r\n this.moveUserService.prepareMigrationData.pending = false;\r\n this.notificationService.error('Move user attempt is failed');\r\n });\r\n }\r\n\r\n }\r\n\r\n private resetMoveTypePhoneNUmber(): void {\r\n this.dnsService.phoneNumbers = [];\r\n }\r\n\r\n}\r\n","<app-loader *ngIf=\"prepareMigrationData.pending || moveUserPending || dataPending\"></app-loader>\r\n<div id=\"move-user-stepper\">\r\n <mat-stepper *ngIf=\"prepareMigrationData?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n <!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <form>\r\n <div class=\"move-user-tab-content-box\">\r\n <mat-label class=\"mat-label\">Select a new location</mat-label>\r\n <mat-form-field class=\"app-autocomplete-input\" appearance=\"outline\">\r\n <input placeholder=\"Select location\" [matAutocomplete]=\"auto\" matInput\r\n (input)=\"onLocationAutocomplete($event)\"/>\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayLocation\"\r\n (optionSelected)=\"onLocationChange($event)\">\r\n <mat-option *ngFor=\"let location of filteredLocations\" [value]=\"location\">\r\n {{ location.name }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div *ngIf=\"!dataPending && !locations?.length\" class=\"mat-error\">\r\n Locations are not available\r\n </div>\r\n\r\n <ng-container *ngIf=\"prepareMigrationData?.newLocation?.id\">\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"moveTypePhoneNumber\"\r\n [(ngModel)]=\"prepareMigrationData.moveType.phoneNumber\" name=\"phoneNumber\"\r\n (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"1\"\r\n color=\"primary\">\r\n Keep current number\r\n {{ prepareMigrationData.primaryPhoneNumber || currentNumber }}\r\n </mat-radio-button>\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"2\"\r\n color=\"primary\"\r\n [disabled]=\"!prepareMigrationData.newLocation?.id\">\r\n Select a new number\r\n </mat-radio-button>\r\n\r\n <div *ngIf=\"prepareMigrationData.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\" class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"70\" strokeWidth=\"3\"></mat-progress-spinner>\r\n\r\n <mat-form-field class=\"app-autocomplete-input\" appearance=\"outline\">\r\n <input placeholder=\"Select number\" [(ngModel)]=\"prepareMigrationData.newPhoneNumber\"\r\n [matAutocomplete]=\"autoPh\" matInput name=\"newPhoneNumber\"\r\n (input)=\"onNumberAutocomplete()\"/>\r\n <mat-autocomplete #autoPh=\"matAutocomplete\" (optionSelected)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let number of filteredPhoneNumbers\" [value]=\"number\">\r\n {{ number }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <div *ngIf=\"!phoneNumberPending && !dnsService.phoneNumbers?.length\" class=\"mat-error\">\r\n Phone numbers are not available for this location\r\n </div>\r\n </div>\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"3\"\r\n color=\"primary\"\r\n [disabled]=\"prepareMigrationData.removeExtension\">\r\n Remove number\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"moveTypeExtension\"\r\n (change)=\"selectExtensionMigrationType($event)\"\r\n [(ngModel)]=\"prepareMigrationData.moveType.extension\">\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"1\"\r\n color=\"primary\">\r\n Keep current extension {{ prepareMigrationData.primaryExtension }}\r\n </mat-radio-button>\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"2\"\r\n color=\"primary\">\r\n Select a new extension\r\n </mat-radio-button>\r\n\r\n <div *ngIf=\"prepareMigrationData.moveType.extension === '2'\" class=\"input-container\">\r\n <mat-form-field appearance=\"outline\">\r\n <input\r\n matInput\r\n type=\"text\"\r\n name=\"newExtension\"\r\n (change)=\"onExtensionChange($event)\"\r\n [(ngModel)]=\"prepareMigrationData.newExtension\"\r\n [placeholder]=\"'Enter extension'\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <mat-radio-button\r\n class=\"radio-button\"\r\n value=\"3\"\r\n color=\"primary\"\r\n [disabled]=\"prepareMigrationData.removePhoneNumber\">Remove extension\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </ng-container>\r\n </div>\r\n </form>\r\n\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext\r\n [disabled]=\"isNextFromSelectLocationDisabled()\" (click)=\"goNextStep(stepper)\">\r\n Next\r\n </button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <div class=\"move-user-tab-content-box\">\r\n <app-devices-move-user-tab></app-devices-move-user-tab>\r\n </div>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">\r\n Next\r\n </button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>\r\n Previous\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n\r\n <div class=\"devices-move-user-box\">\r\n <mat-label class=\"mat-label\">Validation</mat-label>\r\n <div *ngIf=\"!prepareMigrationData.errors?.length\">\r\n <ng-container *ngTemplateOutlet=\"validationSuccess\">\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"prepareMigrationData.errors?.length\">\r\n <ng-container *ngTemplateOutlet=\"validationFailed\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n <button #nextAfterMoveBtn mat-button class=\"invisible-next-btn\" matStepperNext\r\n (click)=\"goNextStep(stepper)\"></button>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\"\r\n [disabled]=\"prepareMigrationData && prepareMigrationData.errors && prepareMigrationData.errors.length > 0 || !prepareMigrationData.isConfirm\"\r\n (click)=\"startMigration()\">\r\n Upgrade\r\n </button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>\r\n Previous\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 4: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n\r\n <div class=\"devices-move-user-box\">\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location {{prepareMigrationData.newLocation?.name}}\r\n <br/>\r\n For the progress of move, please visit the\r\n <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </div>\r\n\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-done\" (click)=\"done.emit(true)\">\r\n Done\r\n </button>\r\n </div>\r\n </mat-step>\r\n </mat-stepper>\r\n</div>\r\n\r\n<ng-template #validationSuccess>\r\n <p class=\"validation-text\">\r\n Validation has completed successfully. The user can be moved to the\r\n new location. Please be aware of the potential impact of the changes\r\n below.\r\n </p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Cisco 6941 device (SEP987987987987) will not be migrated</li>\r\n <li>\r\n The user will be removed from the Call Pickup Group:\r\n 1675090334-Paris_pickup\r\n </li>\r\n <li>\r\n If Webex App is currently in use, the user will to sign in again to\r\n update the service.\r\n </li>\r\n </ul>\r\n <form>\r\n <mat-checkbox class=\"checkbox\" name=\"isConfirm\" [(ngModel)]=\"prepareMigrationData.isConfirm\"\r\n color=\"primary\">\r\n I confirm that I understand these conditions. I acknowledge the\r\n changes.\r\n </mat-checkbox>\r\n </form>\r\n\r\n</ng-template>\r\n\r\n<ng-template #validationFailed>\r\n <p class=\"validation-text\">\r\n Validation is failed. User migration is not available\r\n </p>\r\n <ul>\r\n <li *ngFor=\"let error of prepareMigrationData.errors\">{{ error }}</li>\r\n </ul>\r\n</ng-template>\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { DnsService } from '../services/dns.service';\n\n\n@Component({\n selector: 'app-move-user-wizard',\n templateUrl: './move-user-wizard.component.html',\n styleUrls: ['./move-user-wizard.component.scss']\n})\nexport class MoveUserWizardComponent {\n @Input()\n user: any;\n @Input()\n customerId!: number;\n @Output()\n closeMoveUserWizard = new EventEmitter();\n @Output()\n done = new EventEmitter();\n @Output()\n runMoveUser = new EventEmitter();\n dataPending = false;\n\n constructor(\n public dnsService: DnsService\n ) {\n\n }\n\n onClose(): void {\n this.closeMoveUserWizard.emit();\n }\n\n onRunMoveUser(): void {\n this.runMoveUser.emit();\n }\n}\n","<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"move-user-stepper-container\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">Upgrade User {{user.userid}}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon icon-white-close\" (click)=\"onClose()\"></span>\r\n </div>\r\n </header>\r\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\"\r\n [user]=\"user\" (cancel)=\"onClose()\" (done)=\"done.emit()\"\r\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { USER_TYPES_TYPE } from \"../../app.constants\";\r\n\r\n@Component({\r\n selector: 'tk-users-table-toolbar',\r\n templateUrl: './table-toolbar.component.html',\r\n styleUrls: ['./table-toolbar.component.scss']\r\n})\r\nexport class TableToolbarComponent {\r\n @Input() totalUsersCount!: number;\r\n @Input() searchValue = '';\r\n @Input() selectedUserType: USER_TYPES_TYPE = null;\r\n @Output() readonly searchChange = new EventEmitter<string>();\r\n @Output() readonly searchByType = new EventEmitter<USER_TYPES_TYPE>();\r\n @Output() readonly addUser = new EventEmitter<void>();\r\n\r\n private timerId!: number;\r\n\r\n onSearchInputChange(event: Event): void {\r\n const value = (event.target as HTMLInputElement).value.trim().toLowerCase() || '';\r\n\r\n if (this.timerId) window.clearTimeout(this.timerId);\r\n\r\n this.timerId = window.setTimeout(() => this.searchChange.emit(value), 1500);\r\n }\r\n\r\n public onTypeChange(event: Event): void {\r\n const value = (event.target as HTMLSelectElement).value as USER_TYPES_TYPE;\r\n\r\n this.searchByType.emit(value);\r\n }\r\n\r\n onAddUser(): void {\r\n this.addUser.emit();\r\n }\r\n}","<header style=\"margin-bottom: 1rem\">\r\n <div\r\n style=\"display: flex; align-items: center; justify-content: space-between\"\r\n >\r\n <div class=\"collection-header-left\">\r\n <div style=\"display: flex; align-items: center; gap: 12px\">\r\n <!-- Search Input -->\r\n <div style=\"position: relative; width: fit-content; min-width: 200px\">\r\n <input\r\n [value]=\"searchValue\"\r\n (input)=\"onSearchInputChange($event)\"\r\n type=\"text\"\r\n placeholder=\"Search by display name, email\"\r\n style=\"\r\n width: 100%;\r\n height: 34px;\r\n border-radius: 0.5rem;\r\n font-size: 16px;\r\n padding: 6px 12px 6px 44px;\r\n border: 1px solid #00000080;\r\n background: #fff;\r\n color: #222;\r\n outline: none;\r\n box-sizing: border-box;\r\n min-width: 280px;\r\n \"\r\n />\r\n <span\r\n style=\"\r\n position: absolute;\r\n left: 12px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n color: #757575;\r\n font-size: 18px;\r\n font-weight: normal;\r\n pointer-events: none;\r\n \"\r\n >\r\n <i\r\n class=\"material-icons\"\r\n style=\"font-size: 18px; font-weight: normal\"\r\n >search</i\r\n >\r\n </span>\r\n </div>\r\n <span style=\"margin: 0 4px; color: #757575; font-size: 1rem\">or</span>\r\n <!-- Filter Select -->\r\n <div\r\n style=\"\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n width: fit-content;\r\n min-width: 200px;\r\n \"\r\n >\r\n <span\r\n style=\"\r\n position: absolute;\r\n left: 12px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n color: #757575;\r\n font-size: 18px;\r\n font-weight: normal;\r\n pointer-events: none;\r\n \"\r\n >\r\n <i\r\n class=\"material-icons\"\r\n style=\"font-size: 18px; font-weight: normal\"\r\n >filter_list</i\r\n >\r\n </span>\r\n <select\r\n style=\"\r\n height: 34px;\r\n border-radius: 0.5rem;\r\n font-size: 16px;\r\n padding: 6px 32px 6px 44px;\r\n border: 1px solid #00000080;\r\n background: #fff;\r\n min-width: 200px;\r\n width: fit-content;\r\n color: #222;\r\n appearance: none;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n background-image: url(&quot;data:image/svg+xml;utf8,<svg fill='%23757575' height='20' viewBox='0 0 24 24' width='20' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>&quot;);\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n background-size: 20px 20px;\r\n \"\r\n >\r\n <option>Filter</option>\r\n </select>\r\n </div>\r\n <span style=\"margin: 0 4px; color: #757575; font-size: 1rem\">or</span>\r\n <!-- Location Select -->\r\n <select\r\n style=\"\r\n height: 34px;\r\n border-radius: 0.5rem;\r\n font-size: 16px;\r\n padding: 6px 32px 6px 12px;\r\n border: 1px solid #00000080;\r\n background: #fff;\r\n min-width: 200px;\r\n width: fit-content;\r\n color: #222;\r\n appearance: none;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n background-image: url(&quot;data:image/svg+xml;utf8,<svg fill='%23757575' height='20' viewBox='0 0 24 24' width='20' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>&quot;);\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n background-size: 20px 20px;\r\n \"\r\n >\r\n <option>Select a Location</option>\r\n </select>\r\n\r\n <select\r\n [value]=\"selectedUserType || ''\"\r\n style=\"\r\n height: 34px;\r\n border-radius: 0.5rem;\r\n font-size: 16px;\r\n padding: 6px 32px 6px 12px;\r\n border: 1px solid #00000080;\r\n background: #fff;\r\n min-width: 200px;\r\n width: fit-content;\r\n color: #222;\r\n appearance: none;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n background-image: url(&quot;data:image/svg+xml;utf8,<svg fill='%23757575' height='20' viewBox='0 0 24 24' width='20' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>&quot;);\r\n background-repeat: no-repeat;\r\n background-position: right 12px center;\r\n background-size: 20px 20px;\r\n \"\r\n (change)=\"onTypeChange($event)\"\r\n >\r\n <option value=\"null\" disabled hidden>Select type</option>\r\n <option value=\"\">All</option>\r\n <option value=\"CUCM\">Webex Calling DI</option>\r\n <option value=\"WEBEX\">Webex Calling</option>\r\n <option value=\"ONPREM\">UCM</option>\r\n </select>\r\n <span\r\n style=\"\r\n margin-left: 8px;\r\n color: #757575;\r\n font-size: 1rem;\r\n white-space: nowrap;\r\n \"\r\n >{{ totalUsersCount }} users</span\r\n >\r\n </div>\r\n </div>\r\n <div style=\"display: flex; gap: 1rem\">\r\n <button class=\"btn mu\" (click)=\"onAddUser()\">Add user</button>\r\n </div>\r\n </div>\r\n</header>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NotificationService } from '../../services/notification.service';\nimport { Notification } from '../../classes/notification';\n\n@Component({\n selector: 'app-notification',\n templateUrl: './notification.component.html',\n styleUrls: ['./notification.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NotificationsComponent implements OnInit, OnDestroy {\n public list!: Notification[];\n public isReadMore!: boolean;\n private listSubscription!: Subscription;\n\n constructor(\n public notificationService: NotificationService,\n private ref: ChangeDetectorRef\n ) {\n }\n\n ngOnInit() {\n this.listChangeSubscribe();\n }\n\n ngOnDestroy() {\n this.listSubscription.unsubscribe();\n }\n\n public readMore(): void {\n this.isReadMore = !this.isReadMore;\n }\n\n public removeNotification(notification: Notification): void {\n this.notificationService.remove(notification);\n }\n\n private listChangeSubscribe(): void {\n this.listSubscription = this.notificationService.listChange\n .subscribe((list: any) => {\n this.list = list;\n this.ref.detectChanges();\n });\n }\n}\n","<div class=\"notification-block\" role=\"alert\" aria-live=\"assertive\">\n <div\n class=\"notification\"\n *ngFor=\"let notification of list\"\n [ngClass]=\"{\n error: notification.isError(),\n success: notification.isSuccess(),\n }\"\n >\n <div class=\"flex-box\">\n <div class=\"notification-icons-block\">\n <i\n *ngIf=\"notification.isError()\"\n class=\"fa fa-exclamation-triangle\"\n ></i>\n <i *ngIf=\"notification.isWarning()\" class=\"fa fa-hand-paper-o\"></i>\n <i *ngIf=\"notification.isSuccess()\" class=\"fa fa-check\"></i>\n <i *ngIf=\"notification.isInfo()\" class=\"fa fa-info-circle\"></i>\n </div>\n <div *ngIf=\"!isReadMore\" class=\"message-block\">\n {{ notification.message }}\n </div>\n <div *ngIf=\"isReadMore\" class=\"message-block\">\n {{ notification.message }}\n </div>\n </div>\n <div\n class=\"read-more-error link clickable\"\n *ngIf=\"notification.message && notification.message.length > 93\"\n (click)=\"readMore()\"\n >\n {{ isReadMore ? \"Collapse\" : \"Read more\" }}\n </div>\n <button\n class=\"close\"\n mat-icon-button\n matTooltip=\"Close notification\"\n (click)=\"removeNotification(notification)\"\n >\n <img\n class=\"notification-icon-close\"\n src=\"assets/icons/close_icon_modal.svg\"\n alt=\"\"\n />\n </button>\n </div>\n</div>\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { UserService } from './services/user.service';\r\nimport { APIService } from './services/api.service';\r\nimport { NotificationService } from './services/notification.service';\r\nimport { debounceTime, EMPTY, map, Observable, Subject, Subscription, switchMap, takeUntil, takeWhile, timer } from 'rxjs';\r\nimport { UsersSearchService } from './services/users-search.service';\r\nimport { ListUser } from './classes/user-list';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { ApiWebexService } from './services/api-webex.service';\r\nimport { API, CUSTOMER_DESTINATION, MAX_INTEGER, ON_PREM_ID, USER_TYPES_MAP, USER_TYPES_TYPE } from './app.constants';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { UserListConfirmDialogComponent } from './user-list-confirm-dialog/user-list-confirm-dialog.component';\r\n\r\nconst DISPLAYED_COLS = [\r\n 'name',\r\n 'email',\r\n 'status',\r\n 'last-active-time',\r\n 'role',\r\n 'source',\r\n 'actions',\r\n];\r\nconst LOCAL_STORAGE = {\r\n USER_IN_MIGRATION: 'userIdInMigration',\r\n MIGRATION_FORM_ID: 'migrationFormId',\r\n};\r\n\r\ntype FirmwareDeviceMap = Record<number, Record<string, string[]>>;\r\n\r\ninterface MigratedEntityLike {\r\n id?: number | string | null;\r\n cucmId?: number | string | null;\r\n devices?: unknown[];\r\n sourceSite?: {\r\n id?: number | string | null;\r\n name?: string | null;\r\n } | null;\r\n webexMigrationDevices?: unknown[];\r\n}\r\n\r\ninterface MigratedDeviceLike {\r\n device?: MigratedDeviceLike;\r\n id?: number | string | null;\r\n name?: string | null;\r\n mac?: string | null;\r\n deviceId?: string | null;\r\n cisUuid?: string | null;\r\n cucmId?: number | string | null;\r\n isRegistered?: boolean | null;\r\n deviceToUpgrade?: boolean | null;\r\n isEligible?: boolean | null;\r\n lineAssociations?: Array<{\r\n directoryNumber?: {\r\n directoryNumber?: string | null;\r\n templateDirectoryNumber?: string | null;\r\n } | null;\r\n e164Mask?: string | null;\r\n }>;\r\n lines?: Array<{\r\n directoryNumber?: {\r\n directoryNumber?: string | null;\r\n templateDirectoryNumber?: string | null;\r\n } | null;\r\n }>;\r\n}\r\n\r\n@Component({\r\n selector: 'app-users-list',\r\n templateUrl: './users-list.component.html',\r\n styleUrls: ['./users-list.component.scss'],\r\n})\r\nexport class UsersListComponent implements OnInit, OnDestroy {\r\n @Input() token!: string;\r\n @Input() customerId!: number;\r\n @Input() siteId!: number;\r\n\r\n @Output() openUser = new EventEmitter();\r\n @Output() userMoved = new EventEmitter();\r\n @Output() switchToWizard = new EventEmitter();\r\n @Output() createUserRequested = new EventEmitter<void>();\r\n\r\n @Input() host!: string;\r\n\r\n dataPending!: boolean;\r\n moveInProgressUserId!: string;\r\n users!: ListUser[];\r\n private baseUsers: ListUser[] = [];\r\n dataSource!: MatTableDataSource<ListUser>;\r\n displayedColumns = DISPLAYED_COLS;\r\n moveUser: any;\r\n moveUserIndex: any;\r\n showMoveUserWizard = false;\r\n moveUserPending = false;\r\n private subscriptions: Subscription[] = [];\r\n\r\n activeSearchToken = '';\r\n activeUserType: USER_TYPES_TYPE = null;\r\n\r\n public readonly ON_PREM_ID = ON_PREM_ID;\r\n\r\n totalUsersCount: number = 0;\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n getTodayShortDate(): string {\r\n const now = new Date();\r\n const month = now.getMonth() + 1;\r\n const day = now.getDate();\r\n const year = now.getFullYear() % 100;\r\n return `${month}/${day}/${year.toString().padStart(2, '0')}`;\r\n }\r\n\r\n private isMigrationStatusCompleted(status: string | null | undefined): boolean {\r\n const normalized = (status || '').toUpperCase();\r\n return normalized === 'COMPLETED';\r\n }\r\n\r\n private isMigrationStatusCompletedWithErrors(status: string | null | undefined): boolean {\r\n const normalized = (status || '').toUpperCase();\r\n return normalized === 'COMPLETED_WITH_ERRORS';\r\n }\r\n\r\n private refreshUsersAfterOperation(delayMs: number = 0): void {\r\n if (delayMs > 0) {\r\n window.setTimeout(() => this.getMigratedUsers(), delayMs);\r\n return;\r\n }\r\n this.getMigratedUsers();\r\n }\r\n\r\n private handleCompletedWithErrorsByUserId(userId: string): void {\r\n const index = this.getUserIndexById(userId);\r\n this.removeUserInMigrationProgress();\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'Completed with errors');\r\n window.setTimeout(() => this.setStatusToUser(index, 'Inactive'), 5000);\r\n this.refreshUsersAfterOperation(5000);\r\n }\r\n }\r\n\r\n private isMigrationStatusFailed(status: string | null | undefined): boolean {\r\n const normalized = (status || '').toUpperCase();\r\n return normalized === 'FAILED' || normalized === 'ERROR';\r\n }\r\n\r\n get form(): FormGroup {\r\n return this.userService?.user?.form;\r\n }\r\n\r\n constructor(\r\n public userService: UserService,\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService,\r\n private notifications: NotificationService,\r\n public usersSearchService: UsersSearchService,\r\n private dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.usersSearchService.setDefaultValues();\r\n this.usersSearchService.customerId = this.customerId;\r\n this.usersSearchService.siteId = this.siteId;\r\n this.apiService.token = this.token;\r\n this.apiWebexService.token = this.token;\r\n this.apiService.apiUrl = this.host + '/dcp';\r\n this.apiWebexService.apiUrl = this.host + '/webex';\r\n\r\n /*this.usersSearchService.getUsersUpgradeStatus(this.usersSearchService.customerId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe();*/\r\n\r\n this.getMigratedUsers();\r\n const subscription = this.usersSearchService.foundUsers$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (users: ListUser[]) => {\r\n if (this.usersSearchService.usersUpgradeStatus?.length) {\r\n this.initializeDataSource(users);\r\n } else {\r\n this.subscribeToUpgradeUsersStatus(users);\r\n }\r\n },\r\n );\r\n this.subscriptions.push(subscription);\r\n\r\n console.log('users list paris 7773');\r\n }\r\n\r\n ngOnDestroy() {\r\n this.usersSearchService.usersUpgradeStatus = null;\r\n if (this.subscriptions?.length) {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n }\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n pageNumberChangeEvent(perPageNumber: number): void {\r\n this.usersSearchService.pageSize = perPageNumber;\r\n this.usersSearchService.pageIndex = 0;\r\n this.runSearch();\r\n }\r\n\r\n closeMoveUserWizard(afterUserMove?: boolean): void {\r\n this.moveUser = null;\r\n this.moveUserIndex = null;\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n localStorage.removeItem(LOCAL_STORAGE.MIGRATION_FORM_ID);\r\n this.showMoveUserWizard = false;\r\n this.switchToWizard.emit(false);\r\n if (afterUserMove) {\r\n this.getMigratedUsers();\r\n }\r\n }\r\n\r\n pageEvent(event: PageEvent): void {\r\n this.usersSearchService.pageSize = event.pageSize;\r\n this.usersSearchService.pageIndex = event.pageIndex;\r\n this.runSearch();\r\n }\r\n\r\n onUserClick(user: ListUser): void {\r\n localStorage.setItem('isWebex', String(!!user.webexUUID));\r\n localStorage.setItem('webexUUID', 'null');\r\n if (user.webexUUID) {\r\n localStorage.setItem('webexUUID', String(user.webexUUID));\r\n }\r\n this.openUser.emit(user);\r\n }\r\n\r\n moveUserToMT(user: ListUser): void {\r\n if (user && user.siteId && user.userid) {\r\n this.moveUserPending = true;\r\n this.moveInProgressUserId = user.userid;\r\n const currentIndex = this.getUserIndexById(user.userid);\r\n if (currentIndex > -1) {\r\n this.setStatusToUser(currentIndex, 'In Progress');\r\n }\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);\r\n\r\n const subscription = this.userService\r\n .moveUserToMT(this.customerId, user)\r\n .subscribe(\r\n (formId: number) => {\r\n this.moveUser = null;\r\n this.moveUserIndex = null;\r\n if (formId) {\r\n localStorage.setItem(LOCAL_STORAGE.MIGRATION_FORM_ID, String(formId));\r\n this.pollMigrationFormStatusByUserId(formId, user.userid, () => {\r\n this.notifications.success(`${user.userid} successfully upgraded`);\r\n this.getMigratedUsers();\r\n });\r\n } else {\r\n this.notifications.success(`${user.userid} successfully upgraded`);\r\n this.getMigratedUsers();\r\n }\r\n },\r\n () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(this.getUserIndexById(user.userid), 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n },\r\n );\r\n this.subscriptions.push(subscription);\r\n }\r\n }\r\n\r\n moveUserToDI(user: ListUser, index: number): void {\r\n if (user && user.siteId && user.webexUUID) {\r\n this.moveUserPending = true;\r\n this.moveInProgressUserId = user.userid;\r\n this.users[index].status = 'In Progress';\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);\r\n\r\n const subscription = this.userService\r\n .moveUserToDI(this.customerId, user)\r\n .subscribe(\r\n () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Active');\r\n this.users[index].webexUUID = '';\r\n if (\r\n this.usersSearchService.migratedUsers &&\r\n this.usersSearchService.migratedUsers.length\r\n ) {\r\n this.usersSearchService.migratedUsers =\r\n this.usersSearchService.migratedUsers.filter(\r\n (migratedUser: any) => migratedUser.userid !== user.email,\r\n );\r\n }\r\n this.getMigratedUsers();\r\n },\r\n () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n },\r\n );\r\n\r\n this.subscriptions.push(subscription);\r\n }\r\n }\r\n\r\n private removeUserInMigrationProgress(): void {\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n localStorage.removeItem(LOCAL_STORAGE.MIGRATION_FORM_ID);\r\n this.moveInProgressUserId = '';\r\n this.moveUserPending = false;\r\n }\r\n\r\n private setStatusToUser(index: number, status: string): void {\r\n if (this.users && this.users[index]) {\r\n this.users[index].status = status;\r\n // if (status === 'Migrated') {\r\n // this.users[index].roleName = '';\r\n // this.users[index].isMigrated = true;\r\n // this.users[index].status = status;\r\n // } else {\r\n // this.users[index].roleName = 'Dedicated Instance Calling user';\r\n // this.users[index].isMigrated = false;\r\n // this.users[index].status = status;\r\n // }\r\n }\r\n this.dataSource = new MatTableDataSource(this.users);\r\n }\r\n\r\n private initializeDataSource(users: ListUser[]): void {\r\n const safeUsers = Array.isArray(users) ? users : [];\r\n // this.setRandomUserRole(users);\r\n this.baseUsers = safeUsers;\r\n this.users = safeUsers;\r\n // set total rows count for toolbar/pagination from server-side pagination when available\r\n this.totalUsersCount = this.usersSearchService?.total || safeUsers.length;\r\n this.setUserMigrationProgress();\r\n this.usersSearchService.setMigratedPropToUsers(this.users);\r\n // this.usersSearchService.setUpgradeStatusToUsers(this.users, this.usersSearchService.usersUpgradeStatus);\r\n this.dataSource = new MatTableDataSource(this.users);\r\n this.applyActiveFilter();\r\n }\r\n\r\n private setUserRole(): void {\r\n if (this.users?.length) {\r\n this.users.forEach((user) => {\r\n if (!user.isMigrated) {\r\n user.roleName = 'Dedicated Instance Calling user';\r\n }\r\n });\r\n }\r\n }\r\n\r\n private setRandomUserRole(users: ListUser[]): void {\r\n const max = Math.round(\r\n this.usersSearchService.pageSize - this.usersSearchService.pageSize / 4,\r\n );\r\n const min = Math.round(this.usersSearchService.pageSize / 2);\r\n const randomAmount = Math.round(Math.random() * (max - min) + min);\r\n const indexes = this.getArrayOfRandomUserIndexes(randomAmount);\r\n indexes.forEach((index) => {\r\n if (users[index]) {\r\n users[index].roleName = 'Dedicated Instance Calling user';\r\n }\r\n });\r\n }\r\n\r\n private getArrayOfRandomUserIndexes(randomAmount: number): number[] {\r\n const indexes = [];\r\n while (randomAmount > 0) {\r\n const index = Math.round(\r\n Math.random() * (this.usersSearchService.pageSize - 1),\r\n );\r\n indexes.push(index);\r\n randomAmount--;\r\n }\r\n return indexes;\r\n }\r\n\r\n private runSearch(): void {\r\n this.dataPending = true;\r\n this.usersSearchService.quickRegularUsersSearch().subscribe(\r\n () => {\r\n this.dataPending = false;\r\n },\r\n () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n },\r\n );\r\n }\r\n\r\n private setUserMigrationProgress(): void {\r\n const userIdInMigration = localStorage.getItem(\r\n LOCAL_STORAGE.USER_IN_MIGRATION,\r\n );\r\n const migrationFormId = localStorage.getItem(\r\n LOCAL_STORAGE.MIGRATION_FORM_ID,\r\n );\r\n if (userIdInMigration) {\r\n const index = this.users.findIndex(\r\n (user) => user.userid === userIdInMigration,\r\n );\r\n this.moveInProgressUserId = index > -1 ? this.users[index].userid : '';\r\n this.moveUserPending = index > -1;\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'In Progress');\r\n }\r\n if (migrationFormId) {\r\n this.pollMigrationFormStatus(Number(migrationFormId), index, () => this.getMigratedUsers());\r\n }\r\n }\r\n }\r\n\r\n private getMigratedUsers(): void {\r\n this.dataPending = true;\r\n const searchParams = {\r\n customerid: this.customerId,\r\n siteid: this.siteId,\r\n 'cloud-only': 'true',\r\n };\r\n // this.usersSearchService.quickWebexUsersSearch(searchParams, true, MAX_INTEGER)\r\n this.usersSearchService\r\n .getMigratedUsers(this.customerId)\r\n // this.usersSearchService.getMigratedWebexUsers(this.customerId)\r\n .subscribe(\r\n () => {\r\n const userIdInMigration = localStorage.getItem(\r\n LOCAL_STORAGE.USER_IN_MIGRATION,\r\n );\r\n if (\r\n userIdInMigration &&\r\n this.usersSearchService.migratedUsers.filter(\r\n (migratedUser: any) => migratedUser.userid === userIdInMigration,\r\n )\r\n ) {\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n localStorage.removeItem(LOCAL_STORAGE.MIGRATION_FORM_ID);\r\n }\r\n this.runSearch();\r\n },\r\n () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n },\r\n );\r\n }\r\n\r\n onMoveUser(user: ListUser, index: number, type: string, title: string): void {\r\n const dialogRef = this.dialog.open(UserListConfirmDialogComponent, {\r\n data: {\r\n title: `Upgrade user ${user.userid} to Multi Tenant?`,\r\n message: `<p>Upgrading this user will prepare the account for migration to Multi Tenant.</p>\r\n <p>During this process, the user configuration will be copied to the Multi Tenant environment.\r\n The user will remain active on the current system until the Activate step is completed.</p>\r\n <p>Do you want to continue?</p>`,\r\n confirmButtonText: 'Yes, upgrade',\r\n },\r\n });\r\n dialogRef.beforeClosed().subscribe((result: any) => {\r\n if (result) {\r\n switch (type) {\r\n case 'QuickMove':\r\n this.moveUserToMT(user);\r\n break;\r\n case 'MT':\r\n this.moveUser = user;\r\n this.moveUserIndex = index;\r\n this.showMoveUserWizard = true;\r\n this.switchToWizard.emit(true);\r\n break;\r\n case 'DI':\r\n this.moveUserToDI(user, index);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n runMoveUserToMT(): void {\r\n if (this.moveUser && this.moveUser.siteId && this.moveUser.userid) {\r\n this.userService.moveUserPending = true;\r\n this.moveInProgressUserId = this.moveUser.userid;\r\n this.setStatusToUser(this.moveUserIndex, 'In Progress');\r\n localStorage.setItem(\r\n LOCAL_STORAGE.USER_IN_MIGRATION,\r\n this.moveUser.userid,\r\n );\r\n }\r\n\r\n const subscription = this.userService\r\n .moveUserToMT(this.customerId, this.moveUser)\r\n .subscribe(\r\n (formId: number) => {\r\n if (formId) {\r\n localStorage.setItem(LOCAL_STORAGE.MIGRATION_FORM_ID, String(formId));\r\n this.pollMigrationFormStatus(formId, this.moveUserIndex, () => {\r\n this.userService.userMoved$.next(true);\r\n });\r\n } else {\r\n this.userService.userMoved$.next(true);\r\n }\r\n },\r\n () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(this.moveUserIndex, 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n },\r\n );\r\n\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n searchUsers(token: string, type?: USER_TYPES_TYPE): void {\r\n const normalizedToken = (token || '').trim();\r\n const normalizedType = type || null;\r\n\r\n // if token is empty — restore current page datasource\r\n if (!normalizedToken && !normalizedType) {\r\n this.activeSearchToken = '';\r\n this.activeUserType = null;\r\n this.users = this.baseUsers;\r\n this.dataSource = new MatTableDataSource(this.users);\r\n this.totalUsersCount = this.usersSearchService?.total || this.users.length;\r\n return;\r\n }\r\n\r\n if (normalizedType) {\r\n this.activeUserType = normalizedType;\r\n this.activeSearchToken = '';\r\n } else {\r\n this.activeSearchToken = normalizedToken;\r\n this.activeUserType = null;\r\n }\r\n\r\n // fetch all users (server-side) and filter locally across the whole dataset\r\n this.dataPending = true;\r\n const subscription = this.usersSearchService.getAllRegularUsers()\r\n .subscribe(\r\n (allUsers: ListUser[]) => {\r\n let filtered: ListUser[];\r\n if (normalizedType === null) {\r\n filtered = this.filterByToken(allUsers, normalizedToken);\r\n } else {\r\n filtered = this.filterByType(allUsers, normalizedType);\r\n }\r\n this.users = filtered;\r\n this.dataSource = new MatTableDataSource(this.users);\r\n this.totalUsersCount = filtered.length;\r\n this.dataPending = false;\r\n },\r\n () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n },\r\n );\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n searchByType(userType: USER_TYPES_TYPE) {\r\n const normalizedType = userType || null;\r\n if (!normalizedType) {\r\n this.searchUsers('');\r\n return;\r\n }\r\n this.searchUsers('', normalizedType);\r\n }\r\n\r\n private applyActiveFilter(): void {\r\n if (this.activeSearchToken) {\r\n this.searchUsers(this.activeSearchToken);\r\n return;\r\n }\r\n if (this.activeUserType) {\r\n this.searchUsers('', this.activeUserType);\r\n }\r\n }\r\n\r\n onCreateUserRequested(): void {\r\n this.createUserRequested.emit();\r\n }\r\n\r\n private filterByToken(users: ListUser[], token: string): ListUser[] {\r\n const tok = (token || '').toLowerCase();\r\n const filtered = (users || []).filter((user: ListUser) => {\r\n const firstName = (user?.firstName || '').toLowerCase();\r\n const lastName = (user?.lastName || '').toLowerCase();\r\n const fullName = `${firstName} ${lastName}`.trim();\r\n const email = (user?.email || '').toLowerCase();\r\n return (\r\n firstName.includes(tok) ||\r\n lastName.includes(tok) ||\r\n fullName.includes(tok) ||\r\n email.includes(tok)\r\n );\r\n });\r\n\r\n return filtered;\r\n }\r\n\r\n private filterByType(users: ListUser[], userType: USER_TYPES_TYPE): ListUser[] {\r\n let filteredUsers: ListUser[];\r\n if (userType === USER_TYPES_MAP.CUCM) {\r\n filteredUsers = users.filter((user) => !user.webexUUID && user.cucmId != ON_PREM_ID);\r\n } else if (userType === USER_TYPES_MAP.WEBEX) {\r\n filteredUsers = users.filter((user) => user.webexUUID !== null && user.webexUUID !== undefined);\r\n } else if (userType === USER_TYPES_MAP.ONPREM) {\r\n filteredUsers = users.filter((user) => !user.webexUUID && user.cucmId == ON_PREM_ID);\r\n } else {\r\n filteredUsers = [];\r\n }\r\n\r\n return filteredUsers;\r\n }\r\n\r\n public isValidWebexUuid(user: ListUser): boolean {\r\n const value = user?.webexUUID;\r\n return value !== null && value !== undefined && String(value).trim().length > 0;\r\n }\r\n\r\n private buildFirmwareDeviceMap(\r\n entity: MigratedEntityLike | null,\r\n user: ListUser,\r\n cucmIdBySiteId: Map<number, number>\r\n ): FirmwareDeviceMap {\r\n const deviceMap: FirmwareDeviceMap = {};\r\n const mappedDevices = this.getActivationDevices(entity, user);\r\n\r\n console.log(mappedDevices)\r\n\r\n const devices: any = [];\r\n\r\n const siteId = Number(entity?.sourceSite?.id ?? user?.siteId ?? 0);\r\n const cucmId = cucmIdBySiteId.get(siteId) || 0;\r\n\r\n mappedDevices.forEach((rawDevice: any) => {\r\n const device = rawDevice;\r\n // @ts-ignore\r\n const isEligible = device.isRegistered || device.deviceToUpgrade || device.isEligible;\r\n\r\n devices.push({\r\n userId: user.userid,\r\n deviceName: device.name.includes('SEP') ? device.name : 'SEP' + device.name || '',\r\n deviceType: device.product || device.model || '',\r\n status: isEligible ? 'ELIGIBLE_TO_UPGRADE' : 'UNREGISTERED',\r\n errorDescription: '',\r\n cucmId,\r\n feature: 'PERSON',\r\n selectable: true,\r\n disabledReason: false ? 'FIRMWARE_UPGRADE.DEVICE_NOT_MIGRATED' : '',\r\n });\r\n });\r\n\r\n if (!Object.keys(deviceMap).length) {\r\n console.debug('Firmware activation: no usable devices found to build deviceMap.');\r\n }\r\n\r\n\r\n devices.forEach((device: any) => {\r\n if (!deviceMap[device.cucmId]) {\r\n deviceMap[device.cucmId] = {};\r\n }\r\n if (!deviceMap[device.cucmId][device.feature]) {\r\n deviceMap[device.cucmId][device.feature] = [];\r\n }\r\n deviceMap[device.cucmId][device.feature].push(device.deviceName)\r\n });\r\n\r\n console.log(\"dev map ==> \", deviceMap);\r\n\r\n\r\n return deviceMap;\r\n }\r\n\r\n private fetchCucmIdBySiteId(): Observable<Map<number, number>> {\r\n const sitesUrl = API.SITES.replace(':customerId', String(this.customerId));\r\n return this.apiService.fetchPagination(sitesUrl, 10000, 0, {}, false).pipe(\r\n map((sitesRes: any) => {\r\n const sites = sitesRes?.pageData || [];\r\n const cucmIdBySiteId = new Map<number, number>();\r\n sites.forEach((site: any) => {\r\n const siteId = Number(site?.id);\r\n const cucmId = Number(site?.cucm?.id);\r\n if (Number.isFinite(siteId) && Number.isFinite(cucmId)) {\r\n cucmIdBySiteId.set(siteId, cucmId);\r\n }\r\n });\r\n return cucmIdBySiteId;\r\n })\r\n );\r\n }\r\n\r\n private getActivationDevices(entity: MigratedEntityLike | null, user: ListUser): unknown[] {\r\n const migratedEntityDevices: unknown[] = Array.isArray(entity?.devices)\r\n ? (entity?.devices ?? [])\r\n : [];\r\n\r\n const entityDevices: unknown[] = Array.isArray(entity?.webexMigrationDevices)\r\n ? (entity?.webexMigrationDevices ?? [])\r\n : [];\r\n\r\n const allEntityDevices = [...migratedEntityDevices, ...entityDevices];\r\n if (allEntityDevices.length) {\r\n return allEntityDevices;\r\n }\r\n\r\n // Fallback for partial responses where only list-user devices are available.\r\n return [\r\n ...(Array.isArray(user?.devices) ? user.devices : []),\r\n ...(Array.isArray(user?.deviceProfiles) ? user.deviceProfiles : []),\r\n ];\r\n }\r\n\r\n private unwrapMigratedDevice(rawDevice: unknown): MigratedDeviceLike {\r\n const candidate = rawDevice as MigratedDeviceLike;\r\n if (candidate?.device) {\r\n return {\r\n ...candidate.device,\r\n ...candidate,\r\n };\r\n }\r\n return candidate || {};\r\n }\r\n\r\n private isMigratedDeviceEligible(device: MigratedDeviceLike): boolean {\r\n const hasEligibilitySignal = device?.isRegistered !== undefined\r\n || device?.deviceToUpgrade !== undefined\r\n || device?.isEligible !== undefined;\r\n\r\n if (!hasEligibilitySignal) {\r\n return true;\r\n }\r\n\r\n return !!(device?.isRegistered || device?.deviceToUpgrade || device?.isEligible);\r\n }\r\n\r\n private extractCucmId(\r\n entity: MigratedEntityLike | null,\r\n device: MigratedDeviceLike,\r\n user: ListUser\r\n ): number | null {\r\n const deviceCucmId = Number(device?.cucmId);\r\n if (Number.isFinite(deviceCucmId) && deviceCucmId > 0) {\r\n return deviceCucmId;\r\n }\r\n\r\n const userCucmId = Number(user?.cucmId);\r\n if (Number.isFinite(userCucmId)) {\r\n return userCucmId;\r\n }\r\n\r\n const entityCucmId = Number(entity?.cucmId);\r\n if (Number.isFinite(entityCucmId)) {\r\n return entityCucmId;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private resolveMigratedDeviceKey(device: MigratedDeviceLike): string {\r\n return String(\r\n device?.name ||\r\n device?.mac ||\r\n device?.deviceId ||\r\n device?.cisUuid ||\r\n device?.id ||\r\n ''\r\n ).trim();\r\n }\r\n\r\n private extractMigratedDeviceLines(device: MigratedDeviceLike): string[] {\r\n const values = new Set<string>();\r\n\r\n const lineAssociations = Array.isArray(device?.lineAssociations) ? device.lineAssociations : [];\r\n lineAssociations.forEach((lineAssociation) => {\r\n const directoryNumber = lineAssociation?.directoryNumber?.directoryNumber;\r\n const templateDirectoryNumber = lineAssociation?.directoryNumber?.templateDirectoryNumber;\r\n const e164Mask = lineAssociation?.e164Mask;\r\n\r\n [directoryNumber, templateDirectoryNumber, e164Mask].forEach((value) => {\r\n const normalized = String(value || '').trim();\r\n if (normalized) {\r\n values.add(normalized);\r\n }\r\n });\r\n });\r\n\r\n const lines = Array.isArray(device?.lines) ? device.lines : [];\r\n lines.forEach((line) => {\r\n const directoryNumber = line?.directoryNumber?.directoryNumber;\r\n const templateDirectoryNumber = line?.directoryNumber?.templateDirectoryNumber;\r\n [directoryNumber, templateDirectoryNumber].forEach((value) => {\r\n const normalized = String(value || '').trim();\r\n if (normalized) {\r\n values.add(normalized);\r\n }\r\n });\r\n });\r\n\r\n return Array.from(values);\r\n }\r\n\r\n onFirmwareUpgradeClicked(user: ListUser) {\r\n if (!this.isValidWebexUuid(user) || user.status !== 'Inactive') {\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(UserListConfirmDialogComponent, {\r\n data: {\r\n title: `Activate user ${user.userid} on Multi Tenant?`,\r\n message: `<p>Activating this user will perform the cutover to Multi Tenant and complete the migration process.</p>\r\n <p>After activation, the user will become active on Multi Tenant and the original user will become inactive.</p>\r\n <p>Do you want to continue?</p>`,\r\n confirmButtonText: 'Activate',\r\n },\r\n });\r\n\r\n dialogRef.beforeClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.setUserPendingStatus(user, 'Pending Activation');\r\n this.userService\r\n .getMigratedMigrationFormEntities(this.customerId, user.webexUUID || '', 'PERSON')\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n map((entities: any[]) => {\r\n return Array.isArray(entities) ? entities[0] : entities || null;\r\n }),\r\n switchMap((entity: any) => {\r\n const formId = entity?.migrationFormId ?? entity?.id ?? null;\r\n if (!formId) {\r\n this.setUserPendingStatus(user, 'Inactive');\r\n this.notifications.error('Activation failed. Migration form not found.');\r\n return EMPTY;\r\n }\r\n\r\n return this.fetchCucmIdBySiteId().pipe(\r\n map((cucmIdBySiteId) => ({\r\n formId,\r\n deviceMap: this.buildFirmwareDeviceMap(\r\n entity as MigratedEntityLike,\r\n user,\r\n cucmIdBySiteId\r\n )\r\n }))\r\n );\r\n }),\r\n switchMap(({ formId, deviceMap }) => {\r\n console.log('device map ==> ', deviceMap);\r\n return this.userService\r\n .triggerFirmwareUpgrade(this.customerId, Number(formId), deviceMap)\r\n .pipe(map(() => formId));\r\n })\r\n )\r\n .subscribe({\r\n next: (formId: number) => {\r\n window.setTimeout(() => {\r\n this.pollMigrationFormStatusByUserId(formId, user.userid, () => {\r\n this.setUserPendingStatus(user, 'Active');\r\n this.setOriginalUserStatus(user.email, 'Inactive');\r\n this.userService\r\n .removeUcmLicense(this.customerId, formId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: () => {\r\n console.log('Remove finished...');\r\n },\r\n error: () => {\r\n this.notifications.error('UCM license removal failed.');\r\n }\r\n });\r\n // this.notifications.success(`${user.userid} successfully activated`);\r\n this.refreshUsersAfterOperation();\r\n });\r\n }, 10000);\r\n },\r\n error: () => {\r\n this.setUserPendingStatus(user, 'Inactive');\r\n this.notifications.error('Activation failed. Please try again.');\r\n this.refreshUsersAfterOperation();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n onRevertClicked(user: ListUser) {\r\n if (user?.webexUUID) {\r\n this.setUserPendingStatus(user, 'Pending Deactivation');\r\n this.userService.revertMigration(this.customerId, user.webexUUID)\r\n .pipe(\r\n takeUntil(this.destroy$),\r\n switchMap(() => timer(2000))\r\n )\r\n .subscribe({\r\n next: () => {\r\n this.setUserPendingStatus(user, 'Inactive');\r\n this.setOriginalUserStatus(user.email, 'Active');\r\n // this.notifications.success(`${user.userid} successfully deactivated`);\r\n this.refreshUsersAfterOperation();\r\n },\r\n error: () => {\r\n this.setUserPendingStatus(user, 'Active');\r\n this.refreshUsersAfterOperation();\r\n }\r\n });\r\n }\r\n }\r\n\r\n private setUserPendingStatus(user: ListUser, status: string) {\r\n user.status = status;\r\n }\r\n\r\n private pollMigrationFormStatus(\r\n formId: number,\r\n index: number,\r\n onCompleted: () => void,\r\n ): void {\r\n const subscription = timer(0, 5000)\r\n .pipe(\r\n switchMap(() => this.userService.getMigrationFormStatus(this.customerId, formId)),\r\n takeUntil(this.destroy$),\r\n takeWhile((response: any) => {\r\n const status = response?.status;\r\n return !this.isMigrationStatusCompleted(status)\r\n && !this.isMigrationStatusFailed(status)\r\n && !this.isMigrationStatusCompletedWithErrors(status);\r\n }, true),\r\n )\r\n .subscribe({\r\n next: (response: any) => {\r\n const status = response?.status;\r\n const userId = this.users?.[index]?.userid || '';\r\n if (this.isMigrationStatusCompletedWithErrors(status) && userId) {\r\n this.handleCompletedWithErrorsByUserId(userId);\r\n return;\r\n }\r\n if (this.isMigrationStatusFailed(status)) {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n return;\r\n }\r\n if (this.isMigrationStatusCompleted(status)) {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Active');\r\n this.refreshUsersAfterOperation();\r\n onCompleted();\r\n }\r\n },\r\n error: () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n this.refreshUsersAfterOperation();\r\n },\r\n });\r\n\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n private pollMigrationFormStatusByUserId(\r\n formId: number,\r\n userId: string,\r\n onCompleted: () => void,\r\n ): void {\r\n const subscription = timer(0, 5000)\r\n .pipe(\r\n switchMap(() => this.userService.getMigrationFormStatus(this.customerId, formId)),\r\n takeUntil(this.destroy$),\r\n takeWhile((response: any) => {\r\n const status = response?.status;\r\n return !this.isMigrationStatusCompleted(status)\r\n && !this.isMigrationStatusFailed(status)\r\n && !this.isMigrationStatusCompletedWithErrors(status);\r\n }, true),\r\n )\r\n .subscribe({\r\n next: (response: any) => {\r\n const status = response?.status;\r\n const index = this.getUserIndexById(userId);\r\n if (this.isMigrationStatusCompletedWithErrors(status)) {\r\n this.handleCompletedWithErrorsByUserId(userId);\r\n return;\r\n }\r\n if (this.isMigrationStatusFailed(status)) {\r\n this.removeUserInMigrationProgress();\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'Migration Error');\r\n }\r\n this.refreshUsersAfterOperation();\r\n return;\r\n }\r\n if (this.isMigrationStatusCompleted(status)) {\r\n this.removeUserInMigrationProgress();\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'Active');\r\n }\r\n this.refreshUsersAfterOperation();\r\n onCompleted();\r\n }\r\n },\r\n error: () => {\r\n const index = this.getUserIndexById(userId);\r\n this.removeUserInMigrationProgress();\r\n if (index > -1) {\r\n this.setStatusToUser(index, 'Migration Error');\r\n }\r\n this.refreshUsersAfterOperation();\r\n },\r\n });\r\n\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n private getUserIndexById(userId: string): number {\r\n return this.users?.findIndex((user) => user.userid === userId) ?? -1;\r\n }\r\n\r\n private setOriginalUserStatus(email = '', status: string) {\r\n const originalUser = this.users.find((user) => user.email === email && !user.webexUUID);\r\n if (originalUser) {\r\n originalUser.status = status;\r\n }\r\n }\r\n\r\n private subscribeToUpgradeUsersStatus(users: ListUser[]): void {\r\n this.usersSearchService.quickUpgradeStatusUsers$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.initializeDataSource(users)\r\n });\r\n }\r\n}\r\n","<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<app-notification></app-notification>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <tk-users-table-toolbar\r\n [totalUsersCount]=\"totalUsersCount\"\r\n [searchValue]=\"activeSearchToken\"\r\n [selectedUserType]=\"activeUserType\"\r\n (searchChange)=\"searchUsers($event)\"\r\n (searchByType)=\"searchByType($event)\"\r\n (addUser)=\"onCreateUserRequested()\"\r\n ></tk-users-table-toolbar>\r\n <table\r\n class=\"webex-table\"\r\n mat-table\r\n *ngIf=\"users?.length\"\r\n #table\r\n [dataSource]=\"dataSource\"\r\n >\r\n <!-- <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container> -->\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 60px\"\r\n >\r\n Display name\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <div class=\"display-name-wrapper\">\r\n <span\r\n class=\"user-name-text\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n >\r\n {{ user.firstName }} {{ user.lastName }}\r\n </span>\r\n <span class=\"icon-webex-box\"\r\n ><span class=\"icon-webex icon-webex-user\"></span\r\n ></span>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Status\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n [matTooltip]=\"\r\n user.status !== 'Active' && user.webexUUID\r\n ? 'Pending cutover to MT. Please contact your administrator for details.'\r\n : ''\r\n \"\r\n matTooltipPosition=\"above\"\r\n >\r\n <span\r\n class=\"icon-user-status\"\r\n [ngClass]=\"{ 'icon-user-status-active': user.status === 'Active' }\"\r\n ></span\r\n >{{ user.status }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"webex-table-th\"\r\n style=\"padding-left: 24px; padding-top: 4px\"\r\n >\r\n <img src=\"assets/icons/settings-regular.svg\" width=\"16\" alt=\"\" />\r\n </th>\r\n <td\r\n class=\"user-site actions-cell\"\r\n mat-cell\r\n *matCellDef=\"let user; let i = index\"\r\n style=\"position: relative\"\r\n >\r\n <mat-progress-spinner\r\n class=\"field-spinner\"\r\n [diameter]=\"30\"\r\n strokeWidth=\"3\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"\r\n user.status === 'In Progress' ||\r\n user.status === 'Pending Activation' ||\r\n user.status === 'Pending Deactivation'\r\n \"\r\n ></mat-progress-spinner>\r\n <button\r\n *ngIf=\"\r\n !(\r\n user.status === 'In Progress' ||\r\n user.status === 'Pending Activation' ||\r\n user.status === 'Pending Deactivation'\r\n ) &&\r\n !(\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === user?.userid\r\n )\r\n \"\r\n class=\"button-action-dot\"\r\n mat-icon-button\r\n [matMenuTriggerFor]=\"menu\"\r\n >\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button\r\n *ngIf=\"!user.webexUUID && user.cucmId == ON_PREM_ID\"\r\n mat-menu-item\r\n [disabled]=\"true\"\r\n matTooltip=\"Coming soon\"\r\n matTooltipPosition=\"right\"\r\n >\r\n Enable AI Transcribe\r\n </button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'QuickMove', 'MT')\"\r\n >\r\n<!-- for TU-4960 !user.isReadyToUpgrade ||-->\r\n Quick Upgrade User to MT\r\n </button>\r\n <button\r\n [disabled]=\"user.webexUUID || user.status !== 'Active'\"\r\n *ngIf=\"!user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'MT', 'MT')\"\r\n >\r\n Upgrade User to MT\r\n </button>\r\n <button\r\n *ngIf=\"user.isMigrated\"\r\n mat-menu-item\r\n (click)=\"onMoveUser(user, i, 'DI', 'DI')\"\r\n >\r\n Revert User to UCM/DI\r\n </button>\r\n <button\r\n mat-menu-item\r\n [disabled]=\"!isValidWebexUuid(user) || user.status !== 'Inactive'\"\r\n (click)=\"onFirmwareUpgradeClicked(user)\"\r\n >\r\n Activate User\r\n </button>\r\n <button\r\n mat-menu-item\r\n [disabled]=\"!user.webexUUID || user.status !== 'Active'\"\r\n (click)=\"onRevertClicked(user)\"\r\n >\r\n Revert\r\n </button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Admin roles\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ user.roleName || \"-\" }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n Provisioning Type\r\n </th>\r\n <td\r\n class=\"user-provisioning-type\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n <ng-container *ngIf=\"user.webexUUID\">\r\n <span class=\"icon-wrapper\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n <ng-container *ngIf=\"!user.webexUUID\">\r\n <span *ngIf=\"user.cucmId == ON_PREM_ID\" class=\"icon-wrapper\"\r\n ><img\r\n src=\"assets/icons/local_24.svg\"\r\n width=\"20\"\r\n alt=\"\"\r\n [matTooltip]=\"'UCM'\"\r\n matTooltipPosition=\"right\"\r\n /></span>\r\n <span *ngIf=\"user.cucmId != ON_PREM_ID\" class=\"icon-wrapper\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"last-active-time\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">\r\n <span class=\"header-with-info\">\r\n Last active time\r\n <!-- <mat-icon class=\"info-icon\">info</mat-icon> -->\r\n <img src=\"assets/icons/info-circle-regular.svg\" width=\"16\" alt=\"\" />\r\n </span>\r\n </th>\r\n <td\r\n class=\"user-site\"\r\n mat-cell\r\n *matCellDef=\"let user\"\r\n [ngClass]=\"{ 'inactive-user-row': user.status !== 'Active' }\"\r\n (click)=\"onUserClick(user)\"\r\n >\r\n {{ getTodayShortDate() }}\r\n </td>\r\n /\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n [ngClass]=\"{\r\n 'disabled-user-row':\r\n moveUserPending &&\r\n moveInProgressUserId &&\r\n moveInProgressUserId === row?.userid,\r\n 'inactive-user-row': row.status !== 'Active',\r\n }\"\r\n ></tr>\r\n </table>\r\n\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\"\r\n >\r\n </app-pagination>\r\n</div>\r\n\r\n<app-move-user-wizard\r\n *ngIf=\"showMoveUserWizard\"\r\n [user]=\"moveUser\"\r\n (done)=\"closeMoveUserWizard(true)\"\r\n [customerId]=\"customerId\"\r\n (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard(false)\"\r\n></app-move-user-wizard>\r\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class EventsCommunicationService {\n public onSuccessfulLoginEvent = new Subject();\n\n constructor() {\n }\n\n}\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n DragDropModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatInputModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatTreeModule,\r\n MatTreeModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatSidenavModule,\r\n MatFormFieldModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatCardModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n MatSlideToggleModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatRadioModule,\r\n MatIconModule\r\n ],\r\n exports: [\r\n DragDropModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatInputModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatTreeModule,\r\n MatTreeModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatSidenavModule,\r\n MatFormFieldModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatSelectModule,\r\n MatSlideToggleModule,\r\n MatProgressSpinnerModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatRadioModule,\r\n MatIconModule\r\n ],\r\n})\r\nexport class MaterialModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UsersListComponent } from './users-list.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { MaterialModule } from './material.module';\r\nimport { PaginationComponent } from './utils/pagination/pagination.component';\r\nimport { UserService } from './services/user.service';\r\nimport { APIService } from './services/api.service';\r\nimport { EventsCommunicationService } from './services/events-communication.service';\r\nimport { UsersSearchService } from './services/users-search.service';\r\nimport { NotificationService } from './services/notification.service';\r\nimport { RemoveKynFromIBMService } from './services/removeKynFromIBM.service';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ApiWebexService } from './services/api-webex.service';\r\nimport { AppLoaderComponent } from './utils/app-loader/app-loader';\r\nimport { MoveUserWizardComponent } from './move-user-wizard/move-user-wizard.component';\r\nimport { MoveUserStepperComponent } from './move-user-wizard/move-user-stepper/move-user-stepper.component';\r\nimport { UserListConfirmDialogComponent } from './user-list-confirm-dialog/user-list-confirm-dialog.component';\r\nimport { DnsService } from './services/dns.service';\r\nimport { SiteSettingsService } from './services/site-settings.service';\r\nimport { MoveUserService } from './services/move-user.service';\r\nimport {\r\n DevicesMoveUserWizardTabComponent\r\n} from './move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component';\r\nimport {\r\n DeviceMoveUserWizardComponent\r\n} from './move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component';\r\nimport { TableToolbarComponent } from './components/table-toolbar/table-toolbar.component';\r\nimport { NotificationsComponent } from './utils/notifications/notification.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n UsersListComponent,\r\n PaginationComponent,\r\n AppLoaderComponent,\r\n MoveUserWizardComponent,\r\n MoveUserStepperComponent,\r\n UserListConfirmDialogComponent,\r\n DevicesMoveUserWizardTabComponent,\r\n DeviceMoveUserWizardComponent,\r\n TableToolbarComponent,\r\n NotificationsComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n MaterialModule\r\n ],\r\n providers: [\r\n UserService,\r\n APIService,\r\n EventsCommunicationService,\r\n UsersSearchService,\r\n NotificationService,\r\n RemoveKynFromIBMService,\r\n ApiWebexService,\r\n DnsService,\r\n SiteSettingsService,\r\n MoveUserService\r\n ],\r\n exports: [UsersListComponent]\r\n})\r\nexport class UsersListModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.APIService","i2.ApiWebexService","i3.RemoveKynFromIBMService","i2","i3","i1.ApiWebexService","i1.DnsService","i2.UserService","i3.SiteSettingsService","i4","i5","i6","i7","i1.MoveUserService","i4.DeviceMoveUserWizardComponent","i4.NotificationService","i5.MoveUserService","i13","i15","i17.AppLoaderComponent","i18.DevicesMoveUserWizardTabComponent","i3.AppLoaderComponent","i4.MoveUserStepperComponent","i1.NotificationService","map","i1.UserService","i2.APIService","i3.ApiWebexService","i5.UsersSearchService","i10","i11","i12","i13.PaginationComponent","i14.AppLoaderComponent","i15.MoveUserWizardComponent","i16.TableToolbarComponent","i17.NotificationsComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,GAAG,GAAG;AACjB,IAAA,UAAU,EAAE,4CAA4C;AACxD,IAAA,kBAAkB,EAAE,0CAA0C;AAC9D,IAAA,kBAAkB,EAAE,wCAAwC;AAC5D,IAAA,UAAU,EAAE,sCAAsC;AAClD,IAAA,kBAAkB,EAAE,wBAAwB;AAC5C,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,SAAS,EAAE,sDAAsD;AACjE,IAAA,sBAAsB,EAAE,2CAA2C;AACnE,IAAA,WAAW,EAAE,gDAAgD;AAC7D,IAAA,iBAAiB,EAAE,2EAA2E;AAC9F,IAAA,iBAAiB,EAAE,0CAA0C;AAC7D,IAAA,cAAc,EAAE,iEAAiE;AACjF,IAAA,wBAAwB,EAAE,iCAAiC;AAC3D,IAAA,kBAAkB,EAAE,gDAAgD;AACpE,IAAA,oBAAoB,EAAE,wDAAwD;AAC9E,IAAA,WAAW,EAAE,qDAAqD;AAClE,IAAA,cAAc,EAAE,2BAA2B;AAC3C,IAAA,0BAA0B,EAAE,uDAAuD;AACnF,IAAA,iBAAiB,EAAE,kFAAkF;AACrG,IAAA,aAAa,EAAE,4EAA4E;AAC3F,IAAA,aAAa,EAAE,mDAAmD;AAClE,IAAA,wBAAwB,EAAE,6CAA6C;AACvE,IAAA,cAAc,EAAE,gEAAgE;AAChF,IAAA,gCAAgC,EAAE,wEAAwE;AAC1G,IAAA,eAAe,EAAE,2CAA2C;AAC5D,IAAA,0BAA0B,EAAE,iGAAiG;AAC7H,IAAA,kBAAkB,EAAE,qGAAqG;AACzH,IAAA,YAAY,EAAE,iFAAiF;AAC/F,IAAA,MAAM,EAAE,iFAAiF;AACzF,IAAA,aAAa,EAAE,kDAAkD;AACjE,IAAA,KAAK,EAAE,kCAAkC;CAC1C,CAAC;AACK,MAAM,aAAa,GAAG;AAC3B,IAAA,KAAK,EAAE,0EAA0E;QAC/E,+CAA+C;QAC/C,yDAAyD;CAC5D,CAAC;AAEK,MAAM,mBAAmB,GAAG;AACjC,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,KAAK,EAAE,CAAC;CACT,CAAA;AACM,MAAM,uBAAuB,GAAG;IACrC,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;CACJ,CAAC;AACK,MAAM,cAAc,GAAG;IAC5B,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC;AACK,MAAM,eAAe,GAAG;IAC7B,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC;AACK,MAAM,WAAW,GAAG,UAAU,CAAC;AAE/B,MAAM,oBAAoB,GAAG;AAClC,IAAA,iBAAiB,EAAE,mBAAmB;AACtC,IAAA,uBAAuB,EAAE,yBAAyB;AAClD,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,SAAS,EAAE,WAAW;CACvB,CAAC;AAEK,MAAM,cAAc,GAAG;AAC5B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;CACjB,CAAA;AAIM,MAAM,mCAAmC,GAAG;AACjD,IAAA,iBAAiB,EAAE,OAAO;AAC1B,IAAA,uBAAuB,EAAE,OAAO;AAChC,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,SAAS,EAAE,OAAO;CACnB,CAAC;AAEK,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,OAAO,GAAG,UAAU;;MClFpB,8BAA8B,CAAA;IAKzC,WACS,CAAA,SAA4B,EACH,IAAsB,EAAA;AAD/C,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAmB;AACH,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;AANjD,QAAA,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AACzB,QAAA,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AACb,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;KAKb;IAEL,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;KACpC;AAEM,IAAA,OAAO,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC3B;;AAlBU,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,8CAO/B,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAPd,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,uDCT3C,usBAeA,EAAA,MAAA,EAAA,CAAA,g3RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDNa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;+BACE,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,usBAAA,EAAA,MAAA,EAAA,CAAA,g3RAAA,CAAA,EAAA,CAAA;;;8BASlC,MAAM;+BAAC,eAAe,CAAA;;;MAcd,gBAAgB,CAAA;AAI5B;;AElCM,MAAM,cAAc,GAAG,CAAC,KAAU,EAAE,OAAuB,KAAI;IACpE,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,IAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;QAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACpE,KAAA;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;QACnC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE;YACnF,MAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAC7E,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE;YACnE,MAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACpD,SAAA;AAAM,aAAA;YACJ,MAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAEK,MAAM,aAAa,GAAG,CAAC,OAAc,EAAE,KAAa,EAAE,UAAmB,EAAE,KAAc,KAAI;IAClG,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;IACD,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,OAAO,CAAC;AAChB,KAAA;AACD,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,IAAG;QAC7B,QACE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/E,YAAA,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,iBAAC,UAAU,IAAI,UAAU,KAAK,MAAM,CAAC,EACvC;AACJ,KAAC,CAAC,CAAC;AACL,CAAC;;MC1BY,cAAc,CAAA;AAYzB,IAAA,WAAA,CAAY,IAAU,EAAA;AACpB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,SAAA;QACD,IAAI,CAAC,QAAQ,EAAE,CAAA;KAChB;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,MAAM,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACtG,YAAA,KAAK,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE;AACjD,oBAAA,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AACvC,oBAAA,UAAU,CAAC,QAAQ;iBACpB,CAAC;AACF,YAAA,SAAS,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC1D,YAAA,QAAQ,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;SAC9E,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAC7C;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;;YAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,CAAC;AAChC,aAAA;AAAM,iBAAA;gBACL,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AACjC,aAAA;AACH,SAAC,CAAC,CAAA;KACH;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,cAAc,GAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC/F,QAAA,OAAO,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAC7C;AAED,IAAA,KAAK,CAAC,aAA8B,EAAA;QAClC,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;KACjG;AAEF;;MC9DY,YAAY,CAAA;AAEvB,IAAA,OAAO,uBAAuB,CAAC,KAAS,EAAE,MAAc,EAAA;QACtD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACzB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AAC5B,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;YACD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;YACD,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;gBAC3B,OAAO,CAAC,CAAC,CAAC;AACX,aAAA;AACD,YAAA,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5B,YAAA,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC;AACxE,SAAC,CAAC,CAAC;KACJ;IAED,OAAO,IAAI,CAAC,UAAe,EAAE,UAAe,EAAE,IAAY,EAAE,YAAuB,EAAA;QACjF,IAAI,MAAM,GAAQ,EAAE,CAAC;QACrB,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;AACrC,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACjD,YAAA,OAAO,UAAU,CAAC;AACnB,SAAA;AACD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzG,MAAM,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;QACzF,MAAM;aACH,OAAO,CAAC,GAAG,IAAG;AACb,YAAA,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC9E,gBAAA,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1D,oBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,IAAI,CAAA,EAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAG,EAAA,GAAG,EAAE,CAAC;oBAClD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;oBAC1F,IAAI,MAAM,KAAK,SAAS,EAAE;wBACxB,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;AACjC,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3H,gBAAA,MAAM,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC9E,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAG,EAAA,IAAI,GAAG,GAAG,GAAG,EAAE,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AACzD,aAAA;AACH,SAAC,CAAC,CAAC;AACL,QAAA,OAAO,MAAM,CAAC;KACf;IAED,OAAO,aAAa,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,QAAQ,OAAO,KAAK;AAClB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,KAAK,CAAC;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,EAAE,CAAC;AACZ,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACF;AAED,IAAA,OAAO,OAAO,CAAC,IAAS,EAAE,IAAS,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACtD;;0GAlEU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAZ,YAAY,EAAA,CAAA,CAAA;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;MCME,UAAU,CAAA;AAKrB,IAAA,WAAA,CACU,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAJhC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC;KAM5E;AAED,IAAA,KAAK,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE,EAAE,KAAe,EAAA;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,CAAC,CAAC;KACrG;AAED,IAAA,IAAI,CAAC,GAAW,EAAE,IAAS,EAAE,MAAM,GAAG,EAAE,EAAA;AACtC,QAAA,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,CAAC,CAAC;KAC5G;;AAGD,IAAA,YAAY,CAAC,GAAW,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAA;AAC9D,QAAA,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE;YACnD,OAAO;AACP,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAC1C,SAAA,CAAC,CAAC;KACJ;IAED,GAAG,CAAC,GAAW,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;KAC3G;AAED,IAAA,MAAM,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE,EAAA;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;KACxG;IAED,eAAe,CAAC,GAAW,EAAE,QAAgB,EAAE,UAAkB,EAAE,gBAAgB,GAAG,EAAE,EAAE,KAAe,EAAA;AACvG,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC;QAC7G,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAmC,CAAC;KACzE;AAEO,IAAA,oBAAoB,CAAC,MAAW,EAAA;QACtC,MAAM,MAAM,GAAQ,EAAE,CAAC;QAEvB,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;gBACf,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AACzF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,UAAU,CAAC,KAAe,EAAA;AAChC,QAAA,IAAI,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAChC,QAAA,IAAI,KAAK,EAAE;YACT,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAE,KAAK,CAAC,CAAC;AAC5D,QAAA,OAAO,OAAO,CAAC;KAChB;IAEO,kBAAkB,CAAC,IAAS,EAAE,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAA;QAC9D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,mBAAmB,CAAC,EACzD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;AAC3B,QAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;KAC3D;;wGA/EU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,CAAA,CAAA;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACDL,MAAO,eAAgB,SAAQ,UAAU,CAAA;AAC7C,IAAA,WAAA,CAAY,UAAsB,EAAA;QAChC,KAAK,CAAC,UAAU,CAAC,CAAC;;AAElB,QAAA,IAAI,CAAC,MAAM,GAAG,kCAAkC,CAAC;;KAElD;;6GANU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAf,eAAe,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;MCME,WAAW,CAAA;IAYtB,WACU,CAAA,UAAsB,EACtB,eAAgC,EAAA;AADhC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAb1C,QAAA,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC,CAAC;AACpB,QAAA,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;AACpB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAGzB,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAO,CAAC;AAEzB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAmB,CAAC;KAOzD;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACzB;IAEM,cAAc,CAAC,MAAc,EAAE,MAAc,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpJ,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SACzD,CAAC,CAAC,CAAA;;KAEN;AAEM,IAAA,gBAAgB,CAAC,IAAS,EAAA;;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAC,MAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAE;YACrD,OAAO;AACR,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;;KAErI;IAEM,YAAY,CAAC,UAAe,EAAE,IAAc,EAAA;;;;;;;AAOjD,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;;KAExF;IAEM,YAAY,CAAC,UAAe,EAAE,IAAc,EAAA;;;;;;;QAOjD,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnH,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;;KAE9E;IAEM,sBAAsB,CAAC,UAAkB,EAAE,MAAc,EAAA;AAC9D,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc;AAC3B,aAAA,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;aAC1C,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACxC;AAEM,IAAA,gCAAgC,CACrC,UAAkB,EAClB,SAAiB,EACjB,UAAkB,QAAQ,EAAA;AAE1B,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,gCAAgC;aAC7C,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;KAChE;IAEO,eAAe,CAAC,UAAe,EAAE,IAAc,EAAA;QACrD,OAAO;AACL,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,QAAQ,EAAE;AACR,gBAAA,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACzD,aAAA;SACF,CAAC;KACH;IAEM,UAAU,CAAC,MAAc,EAAE,MAAc,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;;KAErJ;AAEM,IAAA,aAAa,CAAC,EAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChJ,aAAA,IAAI,CAAC,GAAG,CAAC,MAAM,IAAG;AACjB,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACP;IAEM,mBAAmB,GAAA;AACxB,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,yBAAyB,EAAE,IAAI;SAChC,CAAC;QACF,OAAO,IAAI,CAAC,yBAAyB,EAAE;AACpC,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AACxB,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;iBACvI,SAAS,CAAC,MAAK;AAEhB,aAAC,CAAC,CAAA;;;;;;SAML,CAAC,CAAC,CAAC;KACP;IAEM,yBAAyB,GAAA;QAC9B,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;AACrG,QAAA,IAAI,IAAI,EAAE;YACR,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,SAAA;QACD,IAAI,EAAC,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,SAAA;QAED,OAAO,QAAQ,CAAC,KAAK,CAAC;AACnB,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,SAAc,KAAI;;AAE3B,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;SACxC,CAAC,CAAC,CAAA;;KAGN;IAEM,iBAAiB,GAAA;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC1C;IAEM,iBAAiB,CAAC,IAAS,EAAE,KAAW,EAAA;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC;KACxD;AAEO,IAAA,sBAAsB,CAAC,SAAc,EAAA;QAC3C,IAAI,EAAC,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,EAAE;YACtB,OAAO;AACR,SAAA;AACD,QAAA,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACzD,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE;;AAEnD,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAClC,OAAO;AACR,aAAA;AACF,SAAA;KACF;AAEM,IAAA,sBAAsB,CAC3B,UAAkB,EAClB,eAA8B,EAC9B,SAAmD,EACnD,YAAgD,EAAA;;AAGhD,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,0BAA0B;AACvC,aAAA,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;AAChD,aAAA,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;aAC1C,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC,eAAe;AACxB,aAAA,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;;KAEzB;IAEM,eAAe,CAAC,UAAkB,EAAE,QAAgB,EAAA;AACzD,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY;AACzB,aAAA,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1C,aAAA,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;;KAE3C;AAEM,IAAA,gBAAgB,CACrB,UAAkB,EAClB,eAA8B,EAC9B,iBAAyB,OAAO,EAAA;AAEhC,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,kBAAkB;AAC/B,aAAA,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AAClD,aAAA,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;aAC1C,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;KAC3C;IAEM,YAAY,CAAC,UAAkB,EAAE,KAAa,EAAA;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3G;;yGA/MU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAX,WAAW,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;ACVX,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,IAAY,gBAKX,CAAA;AALD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACvB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAK3B,EAAA,CAAA,CAAA,CAAA;MAEY,YAAY,CAAA;AAOvB,IAAA,WAAA,CAAY,IAAS,EAAA;AAHrB,QAAA,IAAG,CAAA,GAAA,GAAW,WAAW,CAAC;QAIxB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAG,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AACzB,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAC7G,SAAA;KACF;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,CAAC;KAC5C;IACD,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,CAAC;KAC7C;IACD,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,CAAC;KAC/C;IACD,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,CAAC;KAC/C;AACF;;AClCD,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,wBAAwB,GAAG,6DAA6D,CAAC;AAC/F,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;MAG/B,mBAAmB,CAAA;AAO9B,IAAA,WAAA,GAAA;AALO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AAE1B,QAAA,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC;AACR,QAAA,IAAI,CAAA,IAAA,GAAmB,EAAE,CAAC;KAIjC;IAED,KAAK,CAAC,OAAe,EAAE,GAAY,EAAA;QACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;KACpC;IAED,OAAO,CAAC,OAAe,EAAE,GAAY,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,YAAY,GAAG,GAAG,CAAC,CAAC;KAC9D;IAED,OAAO,CAAC,OAAe,EAAE,GAAY,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;KACtC;IAED,IAAI,CAAC,OAAe,EAAE,GAAY,EAAA;QAChC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;KACnC;AACO,IAAA,MAAM,CAAC,IAAY,EAAE,OAAe,EAAE,GAAY,EAAA;AACxD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAe,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;AACzE,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;AACpC,YAAA,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG;YACd,IAAI,EAAE,OAAO,EAAE,GAAG;AACnB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE;YACxB,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AAC5F,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,MAAM,CAAC,YAA0B,EAAE,IAAc,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,OAAO,EAAE;;AAEjC,YAAA,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,SAAA;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAEO,0BAA0B,GAAA;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACnC,OAAO;AACR,SAAA;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,wBAAwB,IAAI,CAAC,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC;QAC5G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;;iHAzDU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCJE,QAAQ,CAAA;IAoBnB,WAAY,CAAA,IAAe,EAAE,QAAiB,EAAA;AAb9C,QAAA,IAAO,CAAA,OAAA,GAAsB,EAAE,CAAC;AAChC,QAAA,IAAc,CAAA,cAAA,GAAsB,EAAE,CAAC;AASvC,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAGvB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3B,SAAA;AACD,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1B,SAAA;KACF;AACF;;MC3BY,uBAAuB,CAAA;AAClC,IAAA,WAAA,GAAA;KACC;IAGD,WAAW,CAAC,IAAS,EAAE,UAAkB,EAAA;QACvC,IAAI,UAAU,KAAK,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,UAAU,CAAC,IAAS,EAAE,UAAkB,EAAA;QACtC,IAAI,UAAU,KAAK,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;qHAjBU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yHAAvB,uBAAuB,EAAA,CAAA,CAAA;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;MCYE,kBAAkB,CAAA;AAkB7B,IAAA,WAAA,CACU,UAAsB,EACtB,eAAgC,EAChC,uBAAgD,EAAA;AAFhD,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;AApB1D,QAAA,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC,CAAC;AACpB,QAAA,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;AAGpB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACrC,QAAA,IAAe,CAAA,eAAA,GAAG,uBAAuB,CAAC;QAcxC,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,wBAAwB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;KAE3D;AAEM,IAAA,kBAAkB,CAAC,YAAkB,EAAA;AAC1C,QAAA,MAAM,MAAM,GAAG,YAAY,IAAI,EAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;AAClF,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC;AACnF,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAuB,KAAI;;AACpC,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;;AAE7D,iBAAA,GAAG,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC,YAAA,IAAI,MAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACjC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpC,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CAAC,CAAC;KACP;IAEM,aAAa,GAAA;QAClB,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;KACH;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,uBAAuB,CAAC;KAChD;AACM,IAAA,uBAAuB,CAAC,YAAkB,EAAE,mBAA6B,EAAE,QAAiB,EAAA;AACjG,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,EAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;;QAEvF,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;AACxH,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAuB,KAAI;;;;;YAKpC,IAAI,CAAC,mBAAmB,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;AAC7D,qBAAA,GAAG,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC,gBAAA,IAAI,MAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACjC,oBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AACD,gBAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;AACvE,qBAAA,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAClC,aAAA;SACF,CAAC,CAAC,CAAC;;KAEP;AAEM,IAAA,qBAAqB,CAAC,YAAkB,EAAE,mBAA6B,EAAE,QAAiB,EAAA;AAC/F,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,EAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;;QAEvF,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;AAC7H,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAuB,KAAI;;AACpC,YAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAE3B,IAAI,CAAC,mBAAmB,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;AAC7D,qBAAA,GAAG,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC,gBAAA,IAAI,MAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACjC,oBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AACD,gBAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;AACvE,qBAAA,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAClC,aAAA;SACF,CAAC,CAAC,CAAC;;KAEP;AAED,IAAA,gBAAgB,CAAC,UAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;;;;;;;KAO/B;AAED,IAAA,qBAAqB,CAAC,UAAkB,EAAA;QACtC,MAAM,MAAM,GAAG,EAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAC,CAAC;QACxD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;AAC3G,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;SACzB,CAAC,CAAC,CAAA;KACN;AAED,IAAA,qBAAqB,CAAC,UAAkB,EAAA;AACtC,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,0BAA0B,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AACzD,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;;YACxB,IAAI,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AAC3B,gBAAA,IAAI,CAAC,kBAAkB,GAAI,MAAM,CAAC,WAAW,CAC3C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK;AAChC,oBAAA,IAAI,CAAC,MAAM;oBACX,IAAI,CAAC,aAAa,KAAK,OAAO;AAC/B,iBAAA,CAAC,CACH,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAChC,aAAA;AACD,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;SACtC,CAAC,CAAC,CAAA;KACN;AAED,IAAA,sBAAsB,CAAC,KAAU,EAAA;;;;;;;;;;;;;;;;;;;;;KAsBhC;IAED,uBAAuB,CAAC,KAAY,EAAE,gBAAqB,EAAA;QACzD,IAAI,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,MAAM,KAAI,gBAAgB,EAAE;AACrC,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,gBAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBACjC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,iBAAA;AACH,aAAC,CAAC,CAAA;AACH,SAAA;KACF;;gHA9KU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAlB,kBAAkB,EAAA,CAAA,CAAA;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;MCJE,mBAAmB,CAAA;AAe9B,IAAA,WAAA,GAAA;AALO,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAO,CAAC;AAClD,QAAA,IAAe,CAAA,eAAA,GAAa,uBAAuB,CAAC;KAI1D;IAED,QAAQ,GAAA;KACP;AAEM,IAAA,SAAS,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAEM,IAAA,mBAAmB,CAAC,KAAU,EAAA;QACnC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAChD;;iHA5BU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,6SCVhC,8qCA0BA,EAAA,MAAA,EAAA,CAAA,qfAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDhBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,8qCAAA,EAAA,MAAA,EAAA,CAAA,qfAAA,CAAA,EAAA,CAAA;0EAMnB,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAGC,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAGC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAGC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAGC,WAAW,EAAA,CAAA;sBADjB,MAAM;gBAGA,uBAAuB,EAAA,CAAA;sBAD7B,MAAM;;;MEbI,kBAAkB,CAAA;AAC7B,IAAA,WAAA,GAAA;KACC;;gHAFU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,kDCR/B,0LAOA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,0LAAA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA,CAAA;;;AEoDvC,IAAY,gBAMX,CAAA;AAND,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC/B,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,GAM3B,EAAA,CAAA,CAAA,CAAA;AAqED,IAAY,WAOX,CAAA;AAPD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACb,CAAC,EAPW,WAAW,KAAX,WAAW,GAOtB,EAAA,CAAA,CAAA;;MCjIY,UAAU,CAAA;IAKrB,WACU,CAAA,UAAsB,EACtB,eAAgC,EAAA;AADhC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAN1C,QAAA,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AAEtB,QAAA,IAAY,CAAA,YAAA,GAAa,EAAE,CAAC;KAO3B;IACM,cAAc,CAAC,MAAc,EAAE,cAAsB,EAAE,QAAkB,EAAE,IAAa,EAAE,QAAiB,EAAA;;;QAEhH,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AACjD,YAAA,OAAO,IAAI,UAAU,CAAM,QAAQ,IAAG;;gBAEpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;AACvD,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,8BAA8B,GAAG,EAAE,CAAC;QACzC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,EAAC,MAAM,EAAE,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;AACxG,QAAA,IAAI,QAAQ,EAAE;;AAEZ,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;AAC7B,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;;AAER,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACvB,SAAA;;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAEpF,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;AACxF,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAI;YACnB,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,eAAmD,KAAI;AACtF,gBAAA,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC;;gBAEhD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC;AACpI,aAAC,CAAC,CAAC;SACJ,CAAC,CACH,CAAA;;KAEJ;AAEM,IAAA,yBAAyB,CAAC,eAAoB,EAAA;QACnD,IAAI,eAAe,CAAC,qBAAqB,IAAI,eAAe,CAAC,qBAAqB,CAAC,MAAM,EAAE;YAEzF,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,cAAmB,KAAI;AACpE,gBAAA,MAAM,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;gBAC1C,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/C,gBAAA,IAAI,cAAc,CAAC,wBAAwB,CAAC,IAAI,cAAc,CAAC,wBAAwB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnG,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAAC;AACnF,oBAAA,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChE,oBAAA,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3E,wBAAA,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;AACzF,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEM,IAAA,oBAAoB,CAAC,eAAoB,EAAA;AAC9C,QAAA,IAAI,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,gBAAgB,CAAC,EAAE,CAAC;AACvH,aAAA,GAAG,CAAC,CAAC,eAAuB,KAAI;YAC/B,MAAM,EAAE,GAAG,eAAe,CAAC,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC;YACrE,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,YAAA,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACjG,gBAAA,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnI,GAAG,IAAI,gBAAgB,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU;AACzG,wBAAA,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBACpD,GAAG,IAAI,qBAAqB,CAAC;AAC9B,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC;QACL,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,eAAuB,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAClI,QAAA,OAAO,iBAAiB,CAAC;KAC1B;IAEM,iBAAiB,CAAC,KAAa,EAAE,GAAW,EAAA;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC;QACvB,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;;AAEhC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;YACjG,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,YAAY,GAAG,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AACjD,gBAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvC,aAAA;YACD,OAAO,YAAY,GAAG,MAAM,CAAC;AAC/B,SAAC,CAAC,CAAC;KACJ;IAEM,iBAAiB,CAAC,UAAkB,EAAE,UAAkB,EAAA;AAC7D,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,QAAQ;SACrB,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC;AACvI,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AACxB,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE;AAClB,gBAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;AACjE,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACP;;wGAnHU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,CAAA,CAAA;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;MCVE,WAAW,CAAA;AAMtB,IAAA,WAAA,CAAY,KAAW,EAAA;AALvB,QAAA,IAAE,CAAA,EAAA,GAAG,EAAE,CAAC;AACR,QAAA,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AACV,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AACd,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;AAG9B,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACnD,SAAA;KACF;AACF,CAAA;MAGY,eAAe,CAAA;AAU1B,IAAA,WAAA,CAAY,KAAW,EAAA;AATvB,QAAA,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AACb,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAA;AAChB,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAA;AACV,QAAA,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AACV,QAAA,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AAChB,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AACd,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AAIZ,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;;gBAEhG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACnC,aAAC,CAAC,CAAA;AACH,SAAA;KACF;AACF;;MC/BY,oBAAoB,CAAA;IA2B/B,WAAY,CAAA,IAAU,EAAE,UAAiC,EAAA;;AA1BzD,QAAA,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;AACvB,QAAA,IAAM,CAAA,MAAA,GAAY,CAAC,CAAC;AACpB,QAAA,IAAM,CAAA,MAAA,GAAY,CAAC,CAAC;AACpB,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AAEd,QAAA,IAAO,CAAA,OAAA,GAA6B,EAAE,CAAC;AACvC,QAAA,IAAW,CAAA,WAAA,GAA8B,EAAE,CAAC;AAC5C,QAAA,IAAmB,CAAA,mBAAA,GAA6B,EAAE,CAAC;AAEnD,QAAA,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AACtB,QAAA,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AAClB,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAExB,QAAA,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;AACxB,QAAA,IAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AACpB,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAE1B,QAAA,IAAW,CAAA,WAAA,GAAuB,IAAI,CAAC;AACvC,QAAA,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AACrB,QAAA,IAAwB,CAAA,wBAAA,GAA+B,EAAE,CAAC;AAC1D,QAAA,IAAA,CAAA,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;AACpC,QAAA,IAAM,CAAA,MAAA,GAAa,EAAE,CAAC;AAEtB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAGhB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAClC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,WAAW,GAAG,CAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,WAAW,KAAI,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC;AACpG,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE1B,YAAA,IAAI,CAAC,wBAAwB,GAAG,CAAA,MAAA,IAAI,CAAC,wBAAwB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,IAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAElK,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,IAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CACpD,CAAC,UAAe,KAAK,IAAI,sBAAsB,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AACvF,YAAA,IAAI,CAAC,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,IAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAChE,CAAC,UAAe,KAAK,IAAI,sBAAsB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAEtF,YAAA,IAAI,CAAC,mBAAmB,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,mBAAmB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,IAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CACxF,CAAC,UAAe,KAAK,IAAI,sBAAsB,CAAC,UAAU,EAAE,KAAK,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;AACxF,SAAA;AACD,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AACrC,SAAA;KAEF;IAED,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KACtD;IAED,cAAc,GAAA;QACZ,OAAO,cAAc,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;KACvD;AACF,CAAA;MAEY,sBAAsB,CAAA;AAejC,IAAA,WAAA,CAAY,IAAU,EAAE,SAAmB,EAAE,mBAA6B,EAAE,UAAoB,EAAA;;AALhG,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AAGR,QAAA,IAAI,mCACC,IAAI,CAAC,MAAM,CACX,EAAA,IAAI,CACR,CAAA;AACD,QAAA,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,EAAE,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACpB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;YACtC,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;YACtC,IAAI,CAAC,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;YAC5C,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;AAC3C,SAAA;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC;QAC3E,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;KACjD;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,cAAc,GAAa,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;AACtE,QAAA,OAAO,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAC7C;AACF,CAAA;MAEY,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAY,IAAS,EAAA;AAHrB,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AACf,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAGf,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;KACrC;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,cAAc,GAAa,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,OAAO,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAC7C;AACF,CAAA;MAEY,oBAAoB,CAAA;AAK/B,IAAA,WAAA,CAAY,QAAkB,EAAE,UAAkB,EAAE,UAAkB,EAAA;AAJtE,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QAId,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAsB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;KAC9E;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7B;AACF,CAAA;MACY,sBAAsB,CAAA;IAGjC,WAAY,CAAA,MAAW,EAAE,QAAgB,EAAA;AAFzC,QAAA,IAAM,CAAA,MAAA,GAA4B,EAAE,CAAC;AAGnC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;KAC/D;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,cAAc,GAAa,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,OAAO,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAC7C;AAEF,CAAA;MACY,qBAAqB,CAAA;IAIhC,WAAY,CAAA,MAAW,EAAE,QAAgB,EAAA;AAFzC,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AAGZ,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;KAC3C;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,cAAc,GAAa,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,OAAO,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAC7C;AACF,CAAA;MAEY,aAAa,CAAA;AAUxB,IAAA,WAAA,CAAY,IAA0B,EAAA;;AATtC,QAAA,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AACf,QAAA,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;AACX,QAAA,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;AACX,QAAA,IAAQ,CAAA,QAAA,GAAE,EAAE,CAAC;AACb,QAAA,IAAgB,CAAA,gBAAA,GAAkB,EAAE,CAAC;AACrC,QAAA,IAAkB,CAAA,kBAAA,GAAkB,EAAE,CAAC;AACvC,QAAA,IAAO,CAAA,OAAA,GAAa,EAAE,CAAC;AACvB,QAAA,IAAwB,CAAA,wBAAA,GAA+B,EAAE,CAAC;AAGxD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC;AAC3C,SAAA;aAAO,IAAI,IAAI,CAAC,eAAe,EAAE;AAChC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC9B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC;AAC/C,SAAA;aAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAClC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAChC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACnD,SAAA;AAED,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAE9D,QAAA,IAAI,MAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AACxB,gBAAA,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,GAAG,EAAE;oBAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/B,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,cAAc,GAAa,CAAC,MAAM,CAAC,CAAC;AAC1C,QAAA,OAAO,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAC7C;AAEF,CAAA;MAEY,QAAQ,CAAA;AAInB,IAAA,WAAA,CAAY,IAAU,EAAA;AAHtB,QAAA,IAAW,CAAA,WAAA,GAAG,GAAG,CAAC;AAClB,QAAA,IAAS,CAAA,SAAA,GAAG,GAAG,CAAC;AAGd,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACpC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACjC,SAAA;KACF;AACF;;MC7NY,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CACU,eAAgC,EAAA;AAAhC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAH1C,QAAA,IAAS,CAAA,SAAA,GAAkB,EAAE,CAAC;KAM7B;AAED,IAAA,YAAY,CAAC,UAAkB,EAAA;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC;AAChG,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AACxB,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AAC3B,gBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAa,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC1E,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAA;KACN;;iHAjBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCGE,eAAe,CAAA;IAI1B,WACU,CAAA,UAAsB,EACtB,eAAgC,EAAA;AADhC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KAGzC;IAED,gCAAgC,GAAA;AAC9B,QAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,GAAG,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,GAAG,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,GAAG,EAAE,CAAC;KAE7C;IAED,6BAA6B,GAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,0BAA0B,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;KAClE;AAED,IAAA,yBAAyB,CAAC,IAA0B,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAClF,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AACxB,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC/F,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;;KAEP;AAED,IAAA,cAAc,CAAC,IAAmB,EAAA;AACjC;;;;;AAKM;AACL,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AACzE,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AACxB,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC5D,aAAA;SACF,CAAC,CAAC,CAAC;;KAEP;;6GAhDU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAf,eAAe,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;MCIE,6BAA6B,CAAA;AAKxC,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;KACzC;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;KAC3C;AAED,IAAA,WAAA,CACS,UAAsB,EACtB,WAAwB,EACxB,mBAAwC,EAAA;AAFxC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;KAEhD;IAED,QAAQ,GAAA;KAEP;AAED,IAAA,sBAAsB,CAAC,KAAU,EAAA;KAEhC;IAGO,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,EAAE,CAAC;KACnC;;2HA/BU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,iGCZ1C,6rCAqCA,EAAA,MAAA,EAAA,CAAA,wnEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDzBa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,6rCAAA,EAAA,MAAA,EAAA,CAAA,wnEAAA,CAAA,EAAA,CAAA;oJAOvC,MAAM,EAAA,CAAA;sBADL,KAAK;;;MEJK,iCAAiC,CAAA;AAE5C,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;KAClD;AAED,IAAA,WAAA,CACS,eAAgC,EAAA;AAAhC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KAExC;IAED,QAAQ,GAAA;KAEP;;+HAbU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,iCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,iECT9C,yhDA+BA,EAAA,MAAA,EAAA,CAAA,uYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,6BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDtBa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,yhDAAA,EAAA,MAAA,EAAA,CAAA,uYAAA,CAAA,EAAA,CAAA;;;AEQvC;AACA,MAAM,QAAQ,GAAG,oFAAoF,CAAC;MAQzF,wBAAwB,CAAA;AAoBnC,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;KACzC;AAED,IAAA,IAAI,aAAa,GAAA;;AACf,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAI,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,gBAAgB,CAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AACpH,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC;AACjF,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;KAC3C;AAED,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;KAClD;IAED,WACS,CAAA,UAAsB,EACtB,WAAwB,EACxB,mBAAwC,EACvC,mBAAwC,EACzC,eAAgC,EAAA;AAJhC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACvC,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACzC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAvCzC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAM1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5B,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAiB,CAAA,iBAAA,GAAkB,EAAE,CAAC;AAEtC,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;KA4BnB;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvE,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;AAED,IAAA,eAAe,CAAC,QAAsB,EAAA;QACpC,OAAO,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,IAAI,KAAI,EAAE,CAAC;KAC7B;AAED,IAAA,sBAAsB,CAAC,KAAU,EAAA;;AAC/B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;AAEvD,QAAA,IAAI,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AACjF,SAAA;KACF;IAED,oBAAoB,GAAA;;QAClB,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACxC,YAAA,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AACnH,SAAA;KACF;AAED,IAAA,UAAU,CAAC,OAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;KACtB;AAED,IAAA,8BAA8B,CAAC,KAAU,EAAA;QACvC,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;YACtC,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;KAClG;AAED,IAAA,4BAA4B,CAAC,KAAU,EAAA;AACrC,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,eAAe,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC;KAChG;AAED,IAAA,mBAAmB,CAAC,KAAU,EAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;KAC9E;AAED,IAAA,gBAAgB,CAAC,KAAmC,EAAA;AAClD,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3E,QAAA,IAAI,CAAC,eAAe,CAAC,gCAAgC,EAAE,CAAC;QAExD,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,KAAK,GAAG,EAAE;YAC1D,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;KAC5E;IAED,eAAe,GAAA;;QACb,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,EAAE;YAC9C,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;aACzF,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;SAClE,EAAE,MAAM,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC;KAC7C;IAED,gCAAgC,GAAA;;AAC9B,QAAA,IAAI,EAAC,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,0CAAE,EAAE,CAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;AACtF,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE;AACvG,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;AACnG,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,UAAU,CAAC,OAAmB,EAAA;KAE7B;IAED,cAAc,GAAA;QACZ,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,aAAa,CAAC;AAC/C,aAAA,SAAS,CAAC,CAAC,MAAW,KAAI;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACrB,aAAA;SACF,EAAE,MAAK;AACN,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,SAAC,CAAC,CAAA;KACL;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;aACnD,SAAS,CAAC,MAAK;;AACd,YAAA,IAAI,MAAA,IAAI,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;gBAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACjD,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B,EAAE,MAAM,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAA;KACrC;IAEO,kBAAkB,GAAA;;QACxB,IAAI,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,EAAE;AAC9C,YAAA,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,CAAC;YACrD,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC5H,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC;AACzD,YAAA,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,oBAAoB,CAAC;iBACjE,SAAS,CAAC,MAAK;aAEf,EAAE,MAAK;gBACN,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,OAAO,GAAG,KAAK,CAAC;AAC1D,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAChE,aAAC,CAAC,CAAC;AACN,SAAA;KAEF;IAEO,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,GAAG,EAAE,CAAC;KACnC;;sHAvLU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,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,SAAA,EAAA,IAAA,EAAA,wBAAwB,qYCrBrC,6gUA8NA,EAAA,MAAA,EAAA,CAAA,o9HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDzMa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,uBAAuB,EAAA,aAAA,EAGlB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,6gUAAA,EAAA,MAAA,EAAA,CAAA,o9HAAA,CAAA,EAAA,CAAA;8MAGN,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB,CAAA;gBACP,OAAO,EAAA,CAAA;sBAA5B,SAAS;uBAAC,SAAS,CAAA;gBAGpB,IAAI,EAAA,CAAA;sBADH,MAAM;gBAGP,IAAI,EAAA,CAAA;sBADH,KAAK;gBAGN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAGN,WAAW,EAAA,CAAA;sBADV,MAAM;gBAGP,MAAM,EAAA,CAAA;sBADL,MAAM;;;MExBI,uBAAuB,CAAA;AAahC,IAAA,WAAA,CACS,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AARjC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAE,CAAC;AAEzC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAE1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AACjC,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;KAMjB;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;KACjC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;;qHAzBQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,mNCTpC,upBAYA,EAAA,MAAA,EAAA,CAAA,4sGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDHa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,sBAAsB,EAAA,QAAA,EAAA,upBAAA,EAAA,MAAA,EAAA,CAAA,4sGAAA,CAAA,EAAA,CAAA;8FAMlC,IAAI,EAAA,CAAA;sBADH,KAAK;gBAGN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAGN,mBAAmB,EAAA,CAAA;sBADlB,MAAM;gBAGP,IAAI,EAAA,CAAA;sBADH,MAAM;gBAGP,WAAW,EAAA,CAAA;sBADV,MAAM;;;METI,qBAAqB,CAAA;AALlC,IAAA,WAAA,GAAA;AAOa,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AACjB,QAAA,IAAgB,CAAA,gBAAA,GAAoB,IAAI,CAAC;AAC/B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAmB,CAAC;AACnD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAQ,CAAC;KAqBzD;AAjBG,IAAA,mBAAmB,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;QAElF,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;KAC/E;AAEM,IAAA,YAAY,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAwB,CAAC;AAE3E,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACvB;;mHA1BQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,6QCTlC,4kMAuKA,EAAA,MAAA,EAAA,CAAA,sjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD9Ja,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACI,wBAAwB,EAAA,QAAA,EAAA,4kMAAA,EAAA,MAAA,EAAA,CAAA,sjBAAA,CAAA,EAAA,CAAA;8BAKzB,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACa,YAAY,EAAA,CAAA;sBAA9B,MAAM;gBACY,YAAY,EAAA,CAAA;sBAA9B,MAAM;gBACY,OAAO,EAAA,CAAA;sBAAzB,MAAM;;;MEJE,sBAAsB,CAAA;IAKjC,WACS,CAAA,mBAAwC,EACvC,GAAsB,EAAA;AADvB,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACvC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;KAE/B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;KACrC;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;KACpC;AAEM,IAAA,kBAAkB,CAAC,YAA0B,EAAA;AAClD,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KAC/C;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU;AACxD,aAAA,SAAS,CAAC,CAAC,IAAS,KAAI;AACvB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACN;;oHAjCU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAwB,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,wDCXnC,69CA+CA,EAAA,MAAA,EAAA,CAAA,0oDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;4FDpCa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,69CAAA,EAAA,MAAA,EAAA,CAAA,0oDAAA,CAAA,EAAA,CAAA;;;AEajD,MAAM,cAAc,GAAG;IACrB,MAAM;IACN,OAAO;IACP,QAAQ;IACR,kBAAkB;IAClB,MAAM;IACN,QAAQ;IACR,SAAS;CACV,CAAC;AACF,MAAM,aAAa,GAAG;AACpB,IAAA,iBAAiB,EAAE,mBAAmB;AACtC,IAAA,iBAAiB,EAAE,iBAAiB;CACrC,CAAC;MA8CW,kBAAkB,CAAA;IAgC7B,iBAAiB,GAAA;AACf,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjC,QAAA,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;AACrC,QAAA,OAAO,GAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;KAC9D;AAEO,IAAA,0BAA0B,CAAC,MAAiC,EAAA;QAClE,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;QAChD,OAAO,UAAU,KAAK,WAAW,CAAC;KACnC;AAEO,IAAA,oCAAoC,CAAC,MAAiC,EAAA;QAC5E,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;QAChD,OAAO,UAAU,KAAK,uBAAuB,CAAC;KAC/C;IAEO,0BAA0B,CAAC,UAAkB,CAAC,EAAA;QACpD,IAAI,OAAO,GAAG,CAAC,EAAE;AACf,YAAA,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;YAC1D,OAAO;AACR,SAAA;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;AAEO,IAAA,iCAAiC,CAAC,MAAc,EAAA;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AACrD,YAAA,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACvC,SAAA;KACF;AAEO,IAAA,uBAAuB,CAAC,MAAiC,EAAA;QAC/D,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AAChD,QAAA,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,OAAO,CAAC;KAC1D;AAED,IAAA,IAAI,IAAI,GAAA;;QACN,OAAO,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC;KACrC;IAED,WACS,CAAA,WAAwB,EACvB,UAAsB,EACtB,eAAgC,EAChC,aAAkC,EACnC,kBAAsC,EACrC,MAAiB,EAAA;AALlB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACvB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAqB;AACnC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACrC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AA9EjB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAOjD,QAAA,IAAS,CAAA,SAAA,GAAe,EAAE,CAAC;AAEnC,QAAA,IAAgB,CAAA,gBAAA,GAAG,cAAc,CAAC;AAGlC,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAE3C,QAAA,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;AACvB,QAAA,IAAc,CAAA,cAAA,GAAoB,IAAI,CAAC;AAEvB,QAAA,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;AAExC,QAAA,IAAe,CAAA,eAAA,GAAW,CAAC,CAAC;AACX,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;KAsD3C;IAEL,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;QAC3C,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACrD,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AAEnD;;AAEiB;QAEjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW;AACrD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,CACR,CAAC,KAAiB,KAAI;;YACpB,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACtD,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAC3C,aAAA;AACH,SAAC,CACF,CAAC;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEtC,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;KACtC;IAED,WAAW,GAAA;;AACT,QAAA,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAClD,QAAA,IAAI,MAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1E,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;AAED,IAAA,qBAAqB,CAAC,aAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED,IAAA,mBAAmB,CAAC,aAAuB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACzD,QAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF;AAED,IAAA,SAAS,CAAC,KAAgB,EAAA;QACxB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAClD,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED,IAAA,WAAW,CAAC,IAAc,EAAA;AACxB,QAAA,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,QAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3D,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,IAAc,EAAA;QACzB,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACtC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC;YACxC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxD,YAAA,IAAI,YAAY,GAAG,CAAC,CAAC,EAAE;AACrB,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACnD,aAAA;YACD,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAEnE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW;AAClC,iBAAA,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;AACnC,iBAAA,SAAS,CACR,CAAC,MAAc,KAAI;AACjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,gBAAA,IAAI,MAAM,EAAE;AACV,oBAAA,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtE,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAK;wBAC7D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAAwB,sBAAA,CAAA,CAAC,CAAC;wBACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,qBAAC,CAAC,CAAC;AACJ,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAG,EAAA,IAAI,CAAC,MAAM,CAAwB,sBAAA,CAAA,CAAC,CAAC;oBACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,iBAAA;aACF,EACD,MAAK;gBACH,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC;gBAC5E,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACpC,aAAC,CACF,CAAC;AACJ,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,SAAA;KACF;IAED,YAAY,CAAC,IAAc,EAAE,KAAa,EAAA;QACxC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;YACzC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAEnE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW;AAClC,iBAAA,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;iBACnC,SAAS,CACR,MAAK;gBACH,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;AACjC,gBAAA,IACE,IAAI,CAAC,kBAAkB,CAAC,aAAa;AACrC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,EAC5C;oBACA,IAAI,CAAC,kBAAkB,CAAC,aAAa;wBACnC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAC1C,CAAC,YAAiB,KAAK,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAC1D,CAAC;AACL,iBAAA;gBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB,EACD,MAAK;gBACH,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;gBAC/C,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACpC,aAAC,CACF,CAAC;AAEJ,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,SAAA;KACF;IAEO,6BAA6B,GAAA;AACnC,QAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACzD,QAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;IAEO,eAAe,CAAC,KAAa,EAAE,MAAc,EAAA;QACnD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;;;;;;;;;;AAUnC,SAAA;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtD;AAEO,IAAA,oBAAoB,CAAC,KAAiB,EAAA;;AAC5C,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;;AAEpD,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;;AAEvB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAA,MAAA,IAAI,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,KAAI,SAAS,CAAC,MAAM,CAAC;QAC1E,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;QAE3D,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAEO,WAAW,GAAA;;AACjB,QAAA,IAAI,MAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,oBAAA,IAAI,CAAC,QAAQ,GAAG,iCAAiC,CAAC;AACnD,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEO,IAAA,iBAAiB,CAAC,KAAiB,EAAA;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CACxE,CAAC;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC7D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;AAC/D,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACxB,YAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,gBAAA,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,iCAAiC,CAAC;AAC3D,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,2BAA2B,CAAC,YAAoB,EAAA;QACtD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,YAAY,GAAG,CAAC,EAAE;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,CACvD,CAAC;AACF,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpB,YAAA,YAAY,EAAE,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC,SAAS,CACzD,MAAK;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B,EACD,MAAK;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC3D,SAAC,CACF,CAAC;KACH;IAEO,wBAAwB,GAAA;QAC9B,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAC5C,aAAa,CAAC,iBAAiB,CAChC,CAAC;QACF,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAC1C,aAAa,CAAC,iBAAiB,CAChC,CAAC;AACF,QAAA,IAAI,iBAAiB,EAAE;AACrB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAChC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,iBAAiB,CAC5C,CAAC;YACF,IAAI,CAAC,oBAAoB,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;AACvE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAClC,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC5C,aAAA;AACD,YAAA,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC7F,aAAA;AACF,SAAA;KACF;IAEO,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,MAAM,YAAY,GAAG;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,YAAY,EAAE,MAAM;SACrB,CAAC;;AAEF,QAAA,IAAI,CAAC,kBAAkB;AACpB,aAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;;aAEjC,SAAS,CACR,MAAK;YACH,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAC5C,aAAa,CAAC,iBAAiB,CAChC,CAAC;AACF,YAAA,IACE,iBAAiB;AACjB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAC1C,CAAC,YAAiB,KAAK,YAAY,CAAC,MAAM,KAAK,iBAAiB,CACjE,EACD;AACA,gBAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACzD,gBAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAC1D,aAAA;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB,EACD,MAAK;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC3D,SAAC,CACF,CAAC;KACL;AAED,IAAA,UAAU,CAAC,IAAc,EAAE,KAAa,EAAE,IAAY,EAAE,KAAa,EAAA;QACnE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACjE,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,CAAA,aAAA,EAAgB,IAAI,CAAC,MAAM,CAAmB,iBAAA,CAAA;AACrD,gBAAA,OAAO,EAAE,CAAA;;;AAGyB,yCAAA,CAAA;AAClC,gBAAA,iBAAiB,EAAE,cAAc;AAClC,aAAA;AACF,SAAA,CAAC,CAAC;QACH,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AACjD,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,QAAQ,IAAI;AACV,oBAAA,KAAK,WAAW;AACd,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;wBACxB,MAAM;AACR,oBAAA,KAAK,IAAI;AACP,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,wBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,wBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/B,MAAM;AACR,oBAAA,KAAK,IAAI;AACP,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC/B,MAAM;AACT,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACjE,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC;YACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACxD,YAAA,YAAY,CAAC,OAAO,CAClB,aAAa,CAAC,iBAAiB,EAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CACrB,CAAC;AACH,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW;aAClC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC5C,aAAA,SAAS,CACR,CAAC,MAAc,KAAI;AACjB,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAK;oBAC5D,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,aAAA;SACF,EACD,MAAK;YACH,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;YAC5D,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACpC,SAAC,CACF,CAAC;AAEJ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;IAED,WAAW,CAAC,KAAa,EAAE,IAAsB,EAAA;;QAC/C,MAAM,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC7C,QAAA,MAAM,cAAc,GAAG,IAAI,IAAI,IAAI,CAAC;;AAGpC,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,cAAc,EAAE;AACvC,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,eAAe,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC3E,OAAO;AACR,SAAA;AAED,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACrC,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC7B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC;AACzC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,SAAA;;AAGD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;AAC9D,aAAA,SAAS,CACR,CAAC,QAAoB,KAAI;AACvB,YAAA,IAAI,QAAoB,CAAC;YACzB,IAAI,cAAc,KAAK,IAAI,EAAE;gBAC3B,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC1D,aAAA;AAAM,iBAAA;gBACL,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACxD,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC;AACvC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B,EACD,MAAK;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC3D,SAAC,CACF,CAAC;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;AAED,IAAA,YAAY,CAAC,QAAyB,EAAA;AACpC,QAAA,MAAM,cAAc,GAAG,QAAQ,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACrB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;KACtC;IAEO,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACzC,OAAO;AACR,SAAA;QACD,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3C,SAAA;KACF;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;KACjC;IAEO,aAAa,CAAC,KAAiB,EAAE,KAAa,EAAA;QACpD,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AACxC,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,IAAc,KAAI;AACvD,YAAA,MAAM,SAAS,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,SAAS,KAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AACxD,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,QAAQ,KAAI,EAAE,EAAE,WAAW,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,QAAQ,CAAE,CAAA,CAAC,IAAI,EAAE,CAAC;AACnD,YAAA,MAAM,KAAK,GAAG,CAAC,CAAA,IAAI,aAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,KAAK,KAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AAChD,YAAA,QACE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;AACvB,gBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtB,gBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AACtB,gBAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EACnB;AACJ,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,QAAQ,CAAC;KACjB;IAEO,YAAY,CAAC,KAAiB,EAAE,QAAyB,EAAA;AAC/D,QAAA,IAAI,aAAyB,CAAC;AAC9B,QAAA,IAAI,QAAQ,KAAK,cAAc,CAAC,IAAI,EAAE;YACpC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;AACtF,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,cAAc,CAAC,KAAK,EAAE;YAC5C,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AACjG,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,cAAc,CAAC,MAAM,EAAE;YAC7C,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;AACtF,SAAA;AAAM,aAAA;YACL,aAAa,GAAG,EAAE,CAAC;AACpB,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;KACtB;AAEM,IAAA,gBAAgB,CAAC,IAAc,EAAA;QACpC,MAAM,KAAK,GAAG,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,SAAS,CAAC;AAC9B,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;KACjF;AAEO,IAAA,sBAAsB,CAC5B,MAAiC,EACjC,IAAc,EACd,cAAmC,EAAA;;QAEnC,MAAM,SAAS,GAAsB,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAE9D,QAAA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAE1B,MAAM,OAAO,GAAQ,EAAE,CAAC;QAExB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAE/C,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,SAAc,KAAI;YACvC,MAAM,MAAM,GAAG,SAAS,CAAC;;AAEzB,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,UAAU,CAAC;YAEtF,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE;gBACjF,UAAU,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChD,MAAM,EAAE,UAAU,GAAG,qBAAqB,GAAG,cAAc;AAC3D,gBAAA,gBAAgB,EAAE,EAAE;gBACpB,MAAM;AACN,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,UAAU,EAAE,IAAI;gBAChB,cAAc,EAAE,KAAK,GAAG,sCAAsC,GAAG,EAAE;AACpE,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;AAClC,YAAA,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;AACnF,SAAA;AAGD,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAW,KAAI;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC7B,gBAAA,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAC/B,aAAA;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AAC7C,gBAAA,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC/C,aAAA;AACD,YAAA,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AAClE,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAGvC,QAAA,OAAO,SAAS,CAAC;KAClB;IAEO,mBAAmB,GAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CACxEe,KAAG,CAAC,CAAC,QAAa,KAAI;AACpB,YAAA,MAAM,KAAK,GAAG,CAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,QAAQ,KAAI,EAAE,CAAC;AACvC,YAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AACjD,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;;AAC1B,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,EAAE,CAAC,CAAC;AAChC,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC,CAAC;AACtC,gBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACtD,oBAAA,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpC,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,cAAc,CAAC;SACvB,CAAC,CACH,CAAC;KACH;IAEO,oBAAoB,CAAC,MAAiC,EAAE,IAAc,EAAA;;AAC5E,QAAA,MAAM,qBAAqB,GAAc,KAAK,CAAC,OAAO,CAAC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,CAAC;AACrE,eAAG,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE;cACtB,EAAE,CAAC;AAEP,QAAA,MAAM,aAAa,GAAc,KAAK,CAAC,OAAO,CAAC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,qBAAqB,CAAC;AAC3E,eAAG,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,qBAAqB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE;cACpC,EAAE,CAAC;QAEP,MAAM,gBAAgB,GAAG,CAAC,GAAG,qBAAqB,EAAE,GAAG,aAAa,CAAC,CAAC;QACtE,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC3B,YAAA,OAAO,gBAAgB,CAAC;AACzB,SAAA;;QAGD,OAAO;YACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,cAAc,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;SACpE,CAAC;KACH;AAEO,IAAA,oBAAoB,CAAC,SAAkB,EAAA;QAC7C,MAAM,SAAS,GAAG,SAA+B,CAAC;AAClD,QAAA,IAAI,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,MAAM,EAAE;AACrB,YAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACK,SAAS,CAAC,MAAM,CAAA,EAChB,SAAS,CACZ,CAAA;AACH,SAAA;QACD,OAAO,SAAS,IAAI,EAAE,CAAC;KACxB;AAEO,IAAA,wBAAwB,CAAC,MAA0B,EAAA;QACzD,MAAM,oBAAoB,GAAG,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,YAAY,MAAK,SAAS;eAC1D,CAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,eAAe,MAAK,SAAS;eACrC,CAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,UAAU,MAAK,SAAS,CAAC;QAEtC,IAAI,CAAC,oBAAoB,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,CAAC,EAAE,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,YAAY,MAAI,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,eAAe,CAAA,KAAI,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,UAAU,CAAA,CAAC,CAAC;KAClF;AAEO,IAAA,aAAa,CACnB,MAAiC,EACjC,MAA0B,EAC1B,IAAc,EAAA;AAEd,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE;AACrD,YAAA,OAAO,YAAY,CAAC;AACrB,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,MAAM,CAAC,CAAC;AACxC,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC/B,YAAA,OAAO,UAAU,CAAC;AACnB,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,MAAM,CAAC,CAAC;AAC5C,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AACjC,YAAA,OAAO,YAAY,CAAC;AACrB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,wBAAwB,CAAC,MAA0B,EAAA;QACzD,OAAO,MAAM,CACX,CAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI;AACZ,aAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,GAAG,CAAA;AACX,aAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,QAAQ,CAAA;AAChB,aAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,OAAO,CAAA;AACf,aAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,EAAE,CAAA;AACV,YAAA,EAAE,CACH,CAAC,IAAI,EAAE,CAAC;KACV;AAEO,IAAA,0BAA0B,CAAC,MAA0B,EAAA;AAC3D,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QAEjC,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,gBAAgB,CAAC,GAAG,MAAM,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAChG,QAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,KAAI;;AAC3C,YAAA,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,CAAC;AAC1E,YAAA,MAAM,uBAAuB,GAAG,CAAA,EAAA,GAAA,eAAe,KAAf,IAAA,IAAA,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,uBAAuB,CAAC;YAC1F,MAAM,QAAQ,GAAG,eAAe,KAAA,IAAA,IAAf,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,QAAQ,CAAC;AAE3C,YAAA,CAAC,eAAe,EAAE,uBAAuB,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBACrE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,gBAAA,IAAI,UAAU,EAAE;AACd,oBAAA,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxB,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;AAC/D,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;AACrB,YAAA,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAe,CAAC;AAC/D,YAAA,MAAM,uBAAuB,GAAG,CAAA,EAAA,GAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAAE,eAAe,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,uBAAuB,CAAC;YAC/E,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,gBAAA,IAAI,UAAU,EAAE;AACd,oBAAA,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxB,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3B;AAED,IAAA,wBAAwB,CAAC,IAAc,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;YAC9D,OAAO;AACR,SAAA;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACjE,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,CAAA,cAAA,EAAiB,IAAI,CAAC,MAAM,CAAmB,iBAAA,CAAA;AACtD,gBAAA,OAAO,EAAE,CAAA;;AAEyB,yCAAA,CAAA;AAClC,gBAAA,iBAAiB,EAAE,UAAU;AAC9B,aAAA;AACF,SAAA,CAAC,CAAC;QAEH,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AACjD,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,WAAW;AACb,qBAAA,gCAAgC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,CAAC;AACjF,qBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxBA,KAAG,CAAC,CAAC,QAAe,KAAI;AACtB,oBAAA,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,CAAC;AAClE,iBAAC,CAAC,EACF,SAAS,CAAC,CAAC,MAAW,KAAI;;oBACxB,MAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,eAAe,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,EAAE,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;oBAC7D,IAAI,CAAC,MAAM,EAAE;AACX,wBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC5C,wBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACzE,wBAAA,OAAO,KAAK,CAAC;AACd,qBAAA;AAED,oBAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CACpCA,KAAG,CAAC,CAAC,cAAc,MAAM;wBACvB,MAAM;wBACN,SAAS,EAAE,IAAI,CAAC,sBAAsB,CACpC,MAA4B,EAC5B,IAAI,EACJ,cAAc,CACf;qBACF,CAAC,CAAC,CACJ,CAAC;iBACH,CAAC,EACF,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAI;AAClC,oBAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;oBAC1C,OAAO,IAAI,CAAC,WAAW;yBACpB,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;yBAClE,IAAI,CAACA,KAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;AAC7B,iBAAC,CAAC,CACH;AACA,qBAAA,SAAS,CAAC;AACT,oBAAA,IAAI,EAAE,CAAC,MAAc,KAAI;AACvB,wBAAA,MAAM,CAAC,UAAU,CAAC,MAAK;4BACrB,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAK;AAC7D,gCAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gCAC1C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACnD,gCAAA,IAAI,CAAC,WAAW;AACb,qCAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;AACzC,qCAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,qCAAA,SAAS,CAAC;oCACT,IAAI,EAAE,MAAK;AACT,wCAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;qCACnC;oCACD,KAAK,EAAE,MAAK;AACV,wCAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;qCACzD;AACF,iCAAA,CAAC,CAAC;;gCAEL,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACpC,6BAAC,CAAC,CAAC;yBACJ,EAAE,KAAK,CAAC,CAAC;qBACX;oBACD,KAAK,EAAE,MAAK;AACV,wBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC5C,wBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;wBACjE,IAAI,CAAC,0BAA0B,EAAE,CAAC;qBACnC;AACF,iBAAA,CAAC,CAAC;AACN,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,eAAe,CAAC,IAAc,EAAA;AAC5B,QAAA,IAAI,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;AAC9D,iBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAC7B;AACA,iBAAA,SAAS,CAAC;gBACT,IAAI,EAAE,MAAK;AACT,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oBAC5C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;;oBAEjD,IAAI,CAAC,0BAA0B,EAAE,CAAC;iBACnC;gBACD,KAAK,EAAE,MAAK;AACV,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAC1C,IAAI,CAAC,0BAA0B,EAAE,CAAC;iBACnC;AACF,aAAA,CAAC,CAAC;AACN,SAAA;KACF;IAEO,oBAAoB,CAAC,IAAc,EAAE,MAAc,EAAA;AACzD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;AAEO,IAAA,uBAAuB,CAC7B,MAAc,EACd,KAAa,EACb,WAAuB,EAAA;AAEvB,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;AAChC,aAAA,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,EACjF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,SAAS,CAAC,CAAC,QAAa,KAAI;YAC1B,MAAM,MAAM,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM,CAAC;AAChC,YAAA,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC;AAC1C,mBAAA,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;AACrC,mBAAA,CAAC,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,CAAC;SACzD,EAAE,IAAI,CAAC,CACT;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAAa,KAAI;;gBACtB,MAAM,MAAM,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM,CAAC;AAChC,gBAAA,MAAM,MAAM,GAAG,CAAA,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,KAAI,EAAE,CAAC;gBACjD,IAAI,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE;AAC/D,oBAAA,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;oBAC/C,OAAO;AACR,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE;oBACxC,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,oBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;oBAC/C,IAAI,CAAC,0BAA0B,EAAE,CAAC;oBAClC,OAAO;AACR,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE;oBAC3C,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,oBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACtC,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAClC,oBAAA,WAAW,EAAE,CAAC;AACf,iBAAA;aACF;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;gBAC/C,IAAI,CAAC,0BAA0B,EAAE,CAAC;aACnC;AACF,SAAA,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;AAEO,IAAA,+BAA+B,CACrC,MAAc,EACd,MAAc,EACd,WAAuB,EAAA;AAEvB,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;AAChC,aAAA,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,EACjF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EACxB,SAAS,CAAC,CAAC,QAAa,KAAI;YAC1B,MAAM,MAAM,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM,CAAC;AAChC,YAAA,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC;AAC1C,mBAAA,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;AACrC,mBAAA,CAAC,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,CAAC;SACzD,EAAE,IAAI,CAAC,CACT;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,QAAa,KAAI;gBACtB,MAAM,MAAM,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC5C,gBAAA,IAAI,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,EAAE;AACrD,oBAAA,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;oBAC/C,OAAO;AACR,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE;oBACxC,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,oBAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAChD,qBAAA;oBACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;oBAClC,OAAO;AACR,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE;oBAC3C,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,oBAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,wBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvC,qBAAA;oBACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAClC,oBAAA,WAAW,EAAE,CAAC;AACf,iBAAA;aACF;YACD,KAAK,EAAE,MAAK;gBACV,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC5C,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,gBAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAChD,iBAAA;gBACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;aACnC;AACF,SAAA,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;AAEO,IAAA,gBAAgB,CAAC,MAAc,EAAA;;QACrC,OAAO,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC,CAAC;KACtE;AAEO,IAAA,qBAAqB,CAAC,KAAK,GAAG,EAAE,EAAE,MAAc,EAAA;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxF,QAAA,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,SAAA;KACF;AAEO,IAAA,6BAA6B,CAAC,KAAiB,EAAA;QACrD,IAAI,CAAC,kBAAkB,CAAC,wBAAwB;AAC7C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;AAClC,SAAC,CAAC,CAAC;KACN;;gHA17BU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAjB,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,qRChF/B,g5UAkTA,EAAA,MAAA,EAAA,CAAA,ynVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDlOa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,g5UAAA,EAAA,MAAA,EAAA,CAAA,ynVAAA,CAAA,EAAA,CAAA;qOAKjB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBAEE,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MEtFK,0BAA0B,CAAA;AAGrC,IAAA,WAAA,GAAA;AAFO,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAE,CAAC;KAG7C;;wHAJU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4HAA1B,0BAA0B,EAAA,CAAA,CAAA;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;;MC4FE,cAAc,CAAA;;4GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YA/DvB,cAAc;QACd,eAAe;QACf,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,eAAe;QACf,iBAAiB;QACjB,oBAAoB;QACpB,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,cAAc;AACd,QAAA,aAAa,aAGb,cAAc;QACd,eAAe;QACf,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,oBAAoB;QACpB,wBAAwB;QACxB,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,cAAc;QACd,aAAa,CAAA,EAAA,CAAA,CAAA;AAGJ,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YA/DvB,cAAc;QACd,eAAe;QACf,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,eAAe;QACf,iBAAiB;QACjB,oBAAoB;QACpB,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,cAAc;AACd,QAAA,aAAa,EAGb,cAAc;QACd,eAAe;QACf,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,oBAAoB;QACpB,wBAAwB;QACxB,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,cAAc;QACd,aAAa,CAAA,EAAA,CAAA,CAAA;4FAGJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjE1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,wBAAwB;wBACxB,kBAAkB;wBAClB,cAAc;wBACd,cAAc;wBACd,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB;wBACrB,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,gBAAgB;wBAChB,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,oBAAoB;wBACpB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,eAAe;wBACf,cAAc;wBACd,aAAa;AACd,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,wBAAwB;wBACxB,kBAAkB;wBAClB,cAAc;wBACd,cAAc;wBACd,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB;wBACrB,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,gBAAgB;wBAChB,aAAa;wBACb,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,oBAAoB;wBACpB,wBAAwB;wBACxB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,eAAe;wBACf,cAAc;wBACd,aAAa;AACd,qBAAA;iBACF,CAAA;;;MC5BY,eAAe,CAAA;;6GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAhCxB,kBAAkB;QAClB,mBAAmB;QACnB,kBAAkB;QAClB,uBAAuB;QACvB,wBAAwB;QACxB,8BAA8B;QAC9B,iCAAiC;QACjC,6BAA6B;QAC7B,qBAAqB;AACrB,QAAA,sBAAsB,aAGtB,aAAa;QACb,WAAW;QACX,mBAAmB;QACnB,gBAAgB;QAChB,cAAc,aAcN,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEjB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAdf,SAAA,EAAA;QACT,WAAW;QACX,UAAU;QACV,0BAA0B;QAC1B,kBAAkB;QAClB,mBAAmB;QACnB,uBAAuB;QACvB,eAAe;QACf,UAAU;QACV,mBAAmB;QACnB,eAAe;KAChB,EAAA,OAAA,EAAA,CAjBC,aAAa;QACb,WAAW;QACX,mBAAmB;QACnB,gBAAgB;QAChB,cAAc,CAAA,EAAA,CAAA,CAAA;4FAgBL,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlC3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,mBAAmB;wBACnB,kBAAkB;wBAClB,uBAAuB;wBACvB,wBAAwB;wBACxB,8BAA8B;wBAC9B,iCAAiC;wBACjC,6BAA6B;wBAC7B,qBAAqB;wBACrB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,cAAc;AACf,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,WAAW;wBACX,UAAU;wBACV,0BAA0B;wBAC1B,kBAAkB;wBAClB,mBAAmB;wBACnB,uBAAuB;wBACvB,eAAe;wBACf,UAAU;wBACV,mBAAmB;wBACnB,eAAe;AAChB,qBAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B,CAAA;;;ACjED;;AAEG;;;;"}