tango-app-ui-manage-users 3.7.1-alpha.0-test5 → 3.7.1-alpha.0-test7
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":"tango-app-ui-manage-users.mjs","sources":["../../../projects/tango-manage-users/src/lib/services-v2/manage-users.service.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.html","../../../projects/tango-manage-users/src/lib/services/user.service.ts","../../../projects/tango-manage-users/src/lib/components-v2/custom-select/custom-select.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/custom-select/custom-select.component.html","../../../projects/tango-manage-users/src/lib/components-v2/add-users/add-users.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/add-users/add-users.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/add-user-popup/add-user-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/add-user-popup/add-user-popup.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/group-select/group-select.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/group-select/group-select.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.html","../../../projects/tango-manage-users/src/lib/services/excel.service.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/user-table.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/user-table.component.html","../../../projects/tango-manage-users/src/lib/components-v2/chip-select/chip-select.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/chip-select/chip-select.component.html","../../../projects/tango-manage-users/src/lib/components-v2/teams-creation/teams-creation.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/teams-creation/teams-creation.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/roles-permission-table/roles-permission-table.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/roles-permission-table/roles-permission-table.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/brand-user/brand-user.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/brand-user/brand-user.component.html","../../../projects/tango-manage-users/src/lib/components-v2/users-list/users-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/users-list/users-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/action-popup/action-popup.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/action-popup/action-popup.component.html","../../../projects/tango-manage-users/src/lib/components-v2/viewteams-list/viewteams-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/viewteams-list/viewteams-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/teams-list/teams-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/teams-list/teams-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/users-manage/users-manage.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/users-manage/users-manage.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component.html","../../../projects/tango-manage-users/src/lib/tango-manage-users-routing.module.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/tango-manage-users.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/tango-manage-users.component.html","../../../projects/tango-manage-users/src/lib/tango-manage-users.module.ts","../../../projects/tango-manage-users/src/public-api.ts","../../../projects/tango-manage-users/src/tango-app-ui-manage-users.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, BehaviorSubject, catchError, map, throwError } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ManageUsersService {\r\n dropDownTrigger = new BehaviorSubject(null)\r\n tabChange = new BehaviorSubject(null)\r\n private userApiUrl:string = '';\r\n middlewareApiUrl: any;\r\n teamsApiUrl: any;\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.middlewareApiUrl = env.middlewareApiUrl;\r\n this.teamsApiUrl = env.teamsApiUrl;\r\n this.userApiUrl = env.userApiUrl;\r\n }\r\n })\r\n }\r\n\r\n private handleError(error: HttpErrorResponse): Observable<never> {\r\n return throwError(\r\n () => new Error(\"Something bad happened; please try again later\")\r\n );\r\n }\r\n getAllCountries(): Observable<any> {\r\n return this.http.get(`${this.middlewareApiUrl}/get-countries`);\r\n }\r\n\r\n getallusersList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/get-allusers`, params);\r\n }\r\n\r\n getTeamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/list`, params);\r\n }\r\n\r\n deleteAllteams(data: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/delete-teams`,data)\r\n }\r\n\r\n getTeamsListExport(data: any) {\r\n return this.http.post(`${this.teamsApiUrl}/list`, data, { responseType: 'arraybuffer' as 'json' });\r\n }\r\n \r\n deleteTeam(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/delete`, params);\r\n }\r\n getviewteamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/view`, params);\r\n }\r\n getviewteamsListExport(data: any) {\r\n return this.http.post(`${this.teamsApiUrl}/view`, data, { responseType: 'arraybuffer' as 'json' });\r\n }\r\n createTeams(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/create`, params);\r\n }\r\n editTeamsdata(data: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.teamsApiUrl}/get`, { params: { teamId: data._id }})\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n updateTeam(data: any): Observable<any> {\r\n return this.http\r\n .put<any>(`${this.teamsApiUrl}/update/${data.teamId}`, data)\r\n .pipe(\r\n map((response: any) => response),\r\n );\r\n }\r\n getAllTeamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/AllteamsList`, params);\r\n }\r\n teamBulkUpload(storesBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.teamsApiUrl}/teamBulkUpload`, storesBodyReq)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n updateUsers(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/update-users`, userBody)\r\n .pipe(\r\n map((response: any) => response) \r\n );\r\n }\r\n\r\n getUserTeams(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.teamsApiUrl}/get-user-teams`, userBody)\r\n .pipe(\r\n map((response: any) => response) \r\n );\r\n }\r\n\r\n private viewTeamsSubject = new BehaviorSubject<boolean>(false);\r\n \r\n // Expose an observable for components to subscribe to\r\n viewTeams$ = this.viewTeamsSubject.asObservable();\r\n\r\n // Method to toggle the view\r\n setViewTeam(value: boolean) {\r\n this.viewTeamsSubject.next(value);\r\n }\r\n\r\n changeTab(data: any) {\r\n this.tabChange.next(data)\r\n }\r\n\r\n teamsBulkUpload(data: any): Observable<any> {\r\n return this.http.post(`${this.teamsApiUrl}/bulk-upload`,data)\r\n }\r\n\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ManageUsersService } from '../../../../services-v2/manage-users.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\n\r\n@Component({\r\n selector: 'lib-alert-popup',\r\n templateUrl: './alert-popup.component.html',\r\n styleUrl: './alert-popup.component.scss'\r\n})\r\nexport class AlertPopupComponent {\r\n @Input() user: any;\r\n constructor(\r\n private activeModal: NgbActiveModal,private service : ManageUsersService,\r\n private cd: ChangeDetectorRef, private router:Router,private route:ActivatedRoute,private ts: ToastService,\r\n ) { }\r\n\r\n cancel() {\r\n this.activeModal.close('close');\r\n }\r\n\r\n onSubmit() {\r\n if (this.user?.lastOne) {\r\n this.activeModal.close();\r\n if(this.user?.teamName?.length > 0){\r\n this.service.changeTab( 'teams');\r\n }else{\r\n this.router.navigate(['/manage/stores'], { queryParams: { type: 'clusters' } });\r\n }\r\n } else {\r\n this.activeModal.close('submit');\r\n }\r\n }\r\n\r\n onSubmit1() {\r\n this.activeModal.close(\"submit\");\r\n }\r\n\r\n onSubmit2() {\r\n if (this.user?.teamLastOne) { \r\n this.activeModal.close();\r\n this.service.changeTab( 'teams');\r\n } else {\r\n this.activeModal.close('submit');\r\n }\r\n }\r\n}\r\n","<div class=\"card group-delete py-0\">\r\n <div *ngIf=\"(user?.isActive || !user?.isActive) && (!user?.lastOne && !user?.roleStatus)\" class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure1?</a>\r\n <span *ngIf=\"user?.isActive\" class=\"sub-title fw-normal mt-2\">Do you want to active the user<b> {{user?.userName}}</b> ?</span>\r\n <span *ngIf=\"!user?.isActive\" class=\"sub-title fw-normal mt-2\">Do you want to deactive the user<b> {{user?.userName}}</b> ?</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button *ngIf=\"user?.isActive\" id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit1()\">Active</button>\r\n <button *ngIf=\"!user?.isActive\" id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onSubmit1()\">Deactive </button>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div *ngIf=\"!user?.isActive && user?.lastOne && !user?.roleStatus\" class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a *ngIf=\"user?.teamName?.length && user?.clusterName?.length ===0\" class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">You are about to deactivate the user assigned as a lead to the {{user?.teamName.length > 1? 'teams':'team'}} <span *ngFor=\"let team of user?.teamName;let last = last\">{{team}}<span *ngIf=\"!last\">,</span></span>.</a>\r\n <a *ngIf=\"user?.teamName?.length && user?.clusterName?.length\" class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">You are about to deactivate the user assigned as a lead to the {{user?.teamName.length > 1? 'teams':'team'}} <span *ngFor=\"let team of user?.teamName;let last = last\">{{team}}<span *ngIf=\"!last\">,</span></span> and {{user?.clusterName.length > 1? 'clusters':'cluster'}} <span *ngFor=\"let cluster of user?.clusterName;let last = last\">{{cluster}}<span *ngIf=\"!last\">,</span></span>.</a>\r\n <a *ngIf=\"user?.clusterName?.length && user?.teamName?.length ===0\" class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">You are about to deactivate the user assigned as a lead to the {{user?.clusterName.length > 1? 'clusters':'cluster'}} <span *ngFor=\"let cluster of user?.clusterName;let last = last\">{{cluster}}<span *ngIf=\"!last\">,</span></span>.</a>\r\n <span class=\"sub-title fw-normal mt-2\">You have to assign another user as lead for the respective cluster/teams to deactivate this user.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit()\">Assign New Lead</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"user?.roleStatus== 'up'\" class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Upgrading User to an Admin</a>\r\n <span class=\"sub-title fw-normal mt-2\">You are about to promote an user of the team {{user?.teams}} to an Admin. This leads to remove the user from the respective team.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit1()\">Yes, proceed</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"user?.roleStatus== 'down'\" class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Downgrading Admin to a User</a>\r\n <span *ngIf=\"user?.teamLastOne\" class=\"sub-title fw-normal mt-2\">You are about to de-promote the last admin of the team {{user?.teams}} to a user. So you have to assign another user as lead for the respective teams to downgrade.</span>\r\n <span *ngIf=\"!user?.teamLastOne\" class=\"sub-title fw-normal mt-2\">You are about to de-promote an admin who is the lead of the team {{user?.teams}} to a user. This leads to remove the user from the respective team.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit2()\">{{ user?.teamLastOne? 'Assign New Lead' : 'Yes, Proceed' }}</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n</div>","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, BehaviorSubject, catchError, map, throwError } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class UserService {\r\n private userApiUrl: string = '';\r\n private roleApiUrl: string = '';\r\n private storeApiUrl: string = '';\r\n private groupApiUrl: string = '';\r\n private auditWalletApiUrl: string = '';\r\n dataSubject = new BehaviorSubject<any>(null);\r\n rolesComms = new BehaviorSubject<any>(null);\r\n dropDownTrigger = new BehaviorSubject<any>(null)\r\n private clusterApiUrl:string = '';\r\n private teamsApiUrl:string=''\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.userApiUrl = env.userApiUrl;\r\n this.roleApiUrl = env.roleApiUrl;\r\n this.storeApiUrl = env.storeApiUrl;\r\n this.groupApiUrl = env.groupApiUrl;\r\n this.clusterApiUrl = env.clusterApiUrl;\r\n this.teamsApiUrl = env.teamsApiUrl;\r\n this.auditWalletApiUrl = env.auditWalletApiUrl\r\n }\r\n });\r\n }\r\n\r\n private handleError(error: HttpErrorResponse): Observable<never> {\r\n return throwError(\r\n () => new Error(\"Something bad happened; please try again later\")\r\n );\r\n }\r\n\r\n getUserList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/get-list-v2`, params);\r\n }\r\n getUserListExport(data: any) {\r\n return this.http.post(`${this.userApiUrl}/get-list-v2`, data, { responseType: 'arraybuffer' })\r\n }\r\n getUser(userEmail: string): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.userApiUrl}/get-user-details`, {\r\n params: { email: userEmail },\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getRoles(req: any): Observable<any> {\r\n return this.http.post<any>(`${this.roleApiUrl}/get-roles`, req).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createUser(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/create-user`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n\r\n updateUser(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/update-user`, userBody)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n\r\n userBulkUpload(usersBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/create-users`, usersBodyReq)\r\n // .pipe(\r\n // map((response: any) => response),\r\n // catchError(this.handleError)\r\n // );\r\n }\r\n\r\n getPersmissions(filter: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.roleApiUrl}/get-permission`, filter)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAssignStores(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.storeApiUrl}/store-assign-list`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAssignGroups(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.groupApiUrl}/group-assign-list`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n assignData(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/assignData`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n bulkUserAssign(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/bulk-assign-data`, data)\r\n }\r\n\r\n bulkstoreAssign(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/bulk-store-data`, data)\r\n }\r\n\r\n assignStores(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/assign-store`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getAssignclusters(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/AllclusterList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getAssignteams(data: any) {\r\n return this.http.post<any>(`${this.teamsApiUrl}/AllteamsList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n reAssignStores(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/reassign-store`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n getUserAssignDetails(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.userApiUrl}/get-assign-stores`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n getUserAssignData(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.userApiUrl}/get-assign-Data`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n private messageSource = new BehaviorSubject<any>(\"default message\");\r\n currentMessage = this.messageSource.asObservable();\r\n\r\n changeMessage(message: any) {\r\n this.messageSource.next(message);\r\n }\r\n createSingleUsers(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/createUser`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n createBulkUpload(usersBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/createUsers`, usersBodyReq)\r\n // .pipe(\r\n // map((response: any) => response),\r\n // catchError(this.handleError)\r\n // );\r\n }\r\n getClusterList(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/getClusterList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getProductList(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/getproductList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n getAuditWallet(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-user-summary`, { params: data })\r\n }\r\n\r\n ExportgetAuditWallet(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-user-summary`, { params: data, responseType: 'arraybuffer' as 'json', })\r\n }\r\n\r\n getAuditUserDetails(data: string) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/get-audit-user-details?userEmail=${data}`)\r\n }\r\n\r\n getConsolidatedCard(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/consolidated-card`, { params: data })\r\n }\r\n\r\n getAuditWalletSummary(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-wallet-summary`, { params: data })\r\n }\r\n\r\n ExportWalletAummary(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-wallet-summary`, { params: data, responseType: 'arraybuffer' as 'json', })\r\n }\r\n\r\n getGenerateReport(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/generate-report`, { params: data })\r\n }\r\n\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'team-select',\r\n templateUrl: './custom-select.component.html',\r\n styleUrl: './custom-select.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomSelectComponent implements OnChanges, OnInit {\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n\r\n @Output() selected = new EventEmitter<any>()\r\n @Output() deselected = new EventEmitter<any>()\r\n @Output() deselectedAll = new EventEmitter<any>()\r\n\r\n\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n\r\n\r\n constructor(private cd: ChangeDetectorRef, private authService: ManageUsersService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e) => {\r\n if (e !== this.instanceId) {\r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (changes['items']) {\r\n if (this.items?.length) {\r\n this.initializeItems();\r\n } else {\r\n this.filteredValues = []\r\n }\r\n\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) {\r\n this.updateSelectedValues();\r\n }\r\n }\r\n\r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n\r\n updateSelectedValues() {\r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n openDropdown(event: any) {\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event.target.value.toLowerCase();\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].toLowerCase().includes(searchTerm)\r\n );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n\r\n onSelect(event: any, item: any) {\r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item);\r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n this.deselected.emit(item);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element: any) => {\r\n if (element[this.idField] !== item[this.idField]) {\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n }\r\n\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n\r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n\r\n }\r\n\r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n\r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.deselectedAll.emit(this.selectedValues);\r\n this.selectedValues = [];\r\n }\r\n\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n\r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n\r\n\r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n\r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> \r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 2\">+{{selectedValues?.length -2}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, Subscription, takeUntil } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { UserService } from '../../services/user.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AlertPopupComponent } from '../../components/tango-manage-users/user-table/alert-popup/alert-popup.component';\r\nimport * as CryptoJS from 'crypto-js';\r\n\r\nconst SECRET_KEY = CryptoJS.enc.Utf8.parse(\r\n CryptoJS.SHA256(\"t@ng0-ret@il-@pi-v3\")\r\n .toString(CryptoJS.enc.Base64)\r\n .substring(0, 32)\r\n);\r\n\r\n@Component({\r\n selector: 'lib-add-users',\r\n templateUrl: './add-users.component.html',\r\n styleUrl: './add-users.component.scss'\r\n})\r\nexport class AddUsersComponent implements OnDestroy, OnInit {\r\n private readonly destroy = new Subject();\r\n @Input() type: any;\r\n @Input() user: any;\r\n @Input() userType: any;\r\n @Input() data: any;\r\n userForm: FormGroup;\r\n operationType: string = 'add';\r\n teamList: any = []\r\n countryList: any;\r\n selectedUser: any = [];\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n user_data: any;\r\n $headerFilters: any;\r\n private readonly destroy$ = new Subject();\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Store\", isAdd: false, isEdit: false },\r\n { name: \"User\", isAdd: false, isEdit: false },\r\n { name: \"Camera\", isAdd: false, isEdit: false },\r\n { name: \"Configuration\", isAdd: false, isEdit: false },\r\n { name: \"Subscription\", isAdd: false, isEdit: false },\r\n { name: \"Billing\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoEye\",\r\n modules: [\r\n\r\n { name: \"ZoneTag\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoTrax\",\r\n modules: [\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tickets\",\r\n modules: [\r\n {\r\n name: 'creator', isAdd: true, isEdit: true,\r\n },\r\n {\r\n name: 'reviewer', isAdd: false, isEdit: false,\r\n },\r\n {\r\n name: \"approver\", isAdd: false, isEdit: false,\r\n }\r\n ]\r\n }\r\n\r\n ];\r\n\r\n handleViewChange(modules: FormGroup | any): void {\r\n if (!modules.get(\"isAdd\")?.value) {\r\n modules.get(\"isDelete\")?.setValue(false);\r\n modules.get(\"isEdit\")?.setValue(false);\r\n }\r\n }\r\n handleEditChange(modules: FormGroup | any): void {\r\n if (!modules.get(\"isEdit\")?.value) {\r\n modules.get(\"isDelete\")?.setValue(false);\r\n }\r\n }\r\n\r\n constructor(private service: ManageUsersService,\r\n private cd: ChangeDetectorRef,\r\n public activeModal: NgbActiveModal,\r\n private fb: FormBuilder,\r\n private userService: UserService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService,\r\n public modalService: NgbModal\r\n ) {\r\n\r\n }\r\n ngOnDestroy(): void {\r\n\r\n this.destroy.next(false);\r\n this.destroy.complete();\r\n\r\n }\r\n // must match backend\r\n \r\ndecrypt(encryptedText: string): string {\r\n const [ivHex, encrypted] = encryptedText.split(':');\r\n\r\n const iv = CryptoJS.enc.Hex.parse(ivHex);\r\n const ciphertext = CryptoJS.enc.Hex.parse(encrypted);\r\n\r\n const cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext });\r\n\r\n const decrypted = CryptoJS.AES.decrypt(cipherParams, SECRET_KEY, {\r\n iv: iv,\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7\r\n });\r\n\r\n return decrypted.toString(CryptoJS.enc.Utf8);\r\n}\r\n\r\n ngOnInit(): void {\r\n let data: any;\r\n if (\"header-filters\" in localStorage) {\r\n data = JSON.parse(localStorage.getItem('header-filters') || '');\r\n }\r\n this.user_data = JSON?.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = data ? data : this.user_data;\r\n \r\n this.getRoles();\r\n this.getAllTeamsList()\r\n if (this.type === \"view\" || (this.type === \"edit\")) {\r\n this.loadUserForm();\r\n } else {\r\n this.initUserForm();\r\n }\r\n this.getCountryCodes();\r\n }\r\n\r\n getRoles() {\r\n if (this.userType === 'tango') {\r\n this.permissionArray.push({\r\n featureName: \"TangoAdmin\",\r\n modules: [\r\n {\r\n name: \"invoiceApproval\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"EditBilling\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"TicketConfiguration\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"Reports\", isAdd: false,\r\n isEdit: false\r\n },\r\n ]\r\n },)\r\n }\r\n }\r\n\r\n omit_special_char(event: any) {\r\n var k;\r\n k = event.charCode;\r\n return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n }\r\n\r\n onRoleChange(role: string) {\r\n this.getUserPermissionData(role, this.user_data.userType);\r\n }\r\n getCountryCodes() {\r\n this.service.getAllCountries().subscribe({\r\n next: (res) => {\r\n this.countryList = res.data\r\n this.cd.detectChanges()\r\n },\r\n error: (err) => {\r\n\r\n }\r\n })\r\n }\r\n onrolechange(event: any) {\r\n if (event.target.value === 'user') {\r\n this.populatePermission(this.permissionArray);\r\n }\r\n\r\n }\r\n onStoreSelect(event: any) {\r\n this.selectedUser = event\r\n const teamLeadArray = this.userForm.get('teamLead') as FormArray;\r\n teamLeadArray.clear(); // Clears existing values\r\n\r\n this.selectedUser.forEach((user: any) => {\r\n teamLeadArray.push(new FormControl(user)); // Adds each user in selectedUser array\r\n });\r\n ;\r\n // this.setTeamLeads(event);\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close('submit');\r\n const triggerButton = document.querySelector('#triggerButtonId') as HTMLElement;\r\n triggerButton?.focus();\r\n }\r\n\r\n maskEmail(value: string): string {\r\n if (!value || !value.includes('@')) return '';\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(3, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n \r\n maskMobile(value: string): string {\r\n if (!value || value.length <= 4) return '*'.repeat(value.length);\r\n const first2 = value.slice(0, 2);\r\n const last2 = value.slice(-2);\r\n const maskedMiddle = '*'.repeat(value.length - 4);\r\n return `${first2}${maskedMiddle}${last2}`;\r\n }\r\n loadUserForm() {\r\n // this.userService.getUser(this.decrypt(this.user.email)).pipe(takeUntil(this.destroy$)).subscribe({\r\n this.userService.getUser(this.user.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data.result) {\r\n const userData = res.data.result;\r\n const isViewMode = this.type === 'view';\r\n const isSuperadmin = this.user_data?.role === 'superadmin';\r\n \r\n const email = (isViewMode && !isSuperadmin) ? this.maskEmail(userData.email) : userData.email;\r\n const mobile = (isViewMode && !isSuperadmin) ? this.maskMobile(userData.mobileNumber) : userData.mobileNumber;\r\n this.originalEmail = userData.email;\r\n this.originalMobile = userData.mobileNumber; \r\n this.userForm = this.fb.group({\r\n userName: [res.data.result.userName, Validators.required],\r\n email: [email, Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,6}$\"),\r\n ])],\r\n mobileNumber: [mobile, [Validators.required, Validators.minLength(8),Validators.maxLength(13)] ],\r\n role: [res.data.result.role, Validators.required],\r\n userType: [res.data.result.userType, Validators.required],\r\n rolespermission: this.fb.array([], Validators.required),\r\n teamLead: this.fb.array([]),\r\n countryCode: [res.data.result.countryCode, Validators.required],\r\n });\r\n this.updateTangouserField(res.data.result.tangoUserType);\r\n if (this.type == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.selectedUser = res.data.teamsList\r\n if (this.selectedUser.length) {\r\n this.setTeamLeads(this.selectedUser);\r\n }\r\n // Promise.resolve().then(() => {\r\n // this.userForm.get('teamLead')?.setValue();\r\n this.populatePermission(res?.data?.result?.rolespermission);\r\n // });\r\n\r\n if (this.operationType == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.cd.detectChanges();\r\n // this.getUserPermissionData(res.data.result.role,res.data.result.userType);\r\n } else {\r\n this.initUserForm();\r\n }\r\n },\r\n error: () => {\r\n this.initUserForm();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n updateTangouserField(tangoUserType:any) {\r\n if (this.userType === 'tango') {\r\n if (!this.userForm.contains('tangoUserType')) {\r\n this.userForm.addControl('tangoUserType', this.fb.control(tangoUserType || 'dashboard', Validators.required));\r\n }\r\n } else {\r\n if (this.userForm.contains('tangoUserType')) {\r\n this.userForm.removeControl('tangoUserType');\r\n }\r\n }\r\n }\r\n\r\n initUserForm() {\r\n this.userForm = this.fb.group({\r\n userName: [\"\", Validators.required],\r\n email: [\"\", Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,6}$\")\r\n ])],\r\n mobileNumber: [\"\", [Validators.required, Validators.minLength(8), Validators.maxLength(13)]],\r\n role: [\"user\", Validators.required],\r\n userType: [this.userType, Validators.required],\r\n rolespermission: this.fb.array([], Validators.required),\r\n teamLead: this.fb.array([]),\r\n countryCode: [\"91\", Validators.required],\r\n });\r\n\r\n if (this.userType === 'tango') {\r\n if (!this.userForm.contains('tangoUserType')) {\r\n this.userForm.addControl('tangoUserType', this.fb.control('dashboard', Validators.required));\r\n }\r\n } else {\r\n if (this.userForm.contains('tangoUserType')) {\r\n this.userForm.removeControl('tangoUserType');\r\n }\r\n }\r\n this.getUserPermissionData(\"user\", this.user_data.userType);\r\n }\r\n populatePermission(permissionsData: any[]) {\r\n const permissions = this.userForm.get(\"rolespermission\") as FormArray;\r\n permissions.clear(); // Clear existing entries\r\n\r\n permissionsData.forEach((rolespermission: any) => {\r\n const featureGroup = this.fb.group({\r\n featureName: [rolespermission?.featureName],\r\n modules: this.fb.array([]), // Initialize modules as a FormArray\r\n });\r\n\r\n const modulesArray = featureGroup.get(\"modules\") as FormArray;\r\n rolespermission.modules.forEach((module: any) => {\r\n const moduleGroup = this.fb.group({\r\n name: [module.name],\r\n isAdd: [{ value: module.isAdd, disabled: this.type === 'view' }], // Set disabled based on type\r\n isEdit: [{ value: module.isEdit, disabled: this.type === 'view' }], // Set disabled based on type\r\n // isDelete: [module.isDelete],\r\n });\r\n modulesArray.push(moduleGroup); // Add each module to modules array\r\n });\r\n\r\n permissions.push(featureGroup); // Add each feature group to permissions\r\n });\r\n\r\n // Trigger validation after populating\r\n permissions.updateValueAndValidity();\r\n }\r\n\r\n getPermissions(): FormArray {\r\n return this.userForm.get(\"rolespermission\") as FormArray;\r\n }\r\n\r\n getFeaturePermissions(rolespermission: FormGroup | any): FormArray {\r\n return rolespermission.get(\"modules\") as FormArray;\r\n }\r\n\r\n getUserPermissionData(roleName: string, userType: string) {\r\n (this.userForm?.get(\"rolespermission\") as FormArray).clear();\r\n this.populatePermission(this.permissionArray);\r\n }\r\n\r\n camelCaseToText(input: string): string {\r\n return input.replace(/([A-Z])/g, ' $1')\r\n .replace(/^./, (str) => str.toUpperCase())\r\n .trim();\r\n }\r\n\r\n originalEmail: string = '';\r\n originalMobile: string = '';\r\naddUserSubmit() {\r\n let value = this.updatePermissionsBasedOnUserType(this.userForm.value);\r\n const updatedData = this.removeNullValues(value);\r\n\r\n const clientId = this.$headerFilters.client ? this.$headerFilters.client : this.user_data.clientId;\r\n\r\n this.userService.createSingleUsers({ ...updatedData, clientId }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"User created successfully.\");\r\n this.activeModal.close('submit');\r\n this.gs.manageRefreshTrigger.next(true);\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create User!\");\r\n this.activeModal.close('submit');\r\n }\r\n },\r\n error: (err: any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to create User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => {}\r\n });\r\n}\r\n\r\n onSubmit() {\r\n if (this.type == \"edit\") {\r\n this.userUpdate();\r\n } else {\r\n this.addUserSubmit();\r\n }\r\n }\r\n userUpdate() {\r\nthis.userForm.get(\"email\")?.enable();\r\nlet user: any = this.userForm.value;\r\nif (!user.mobileNumber || user.mobileNumber.includes('*')) {\r\n user.mobileNumber = this.originalMobile;\r\n} else {\r\n user.mobileNumber;\r\n}\r\n\r\nuser.email = this.originalEmail;\r\nthis.userForm.get(\"email\")?.disable();\r\n\r\ntype Role = 'user' | 'admin' | 'superadmin';\r\nlet mapping: Record<Role, number> = {\r\n user: 1,\r\n admin: 2,\r\n superadmin: 3,\r\n};\r\n\r\nlet oldRole: Role = this.user.role;\r\nlet updatedRole: Role = user.role;\r\n\r\nif(user?.role && mapping[oldRole]<mapping[updatedRole]){\r\nthis.user[\"roleStatus\"] = \"up\"\r\n this.service.getUserTeams({email:user.email, type:\"user\"}).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data?.result?.length > 0) { \r\n this.user[\"teams\"] = res.data.result\r\n // this.activeModal.close();\r\nconst modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.user = this.user\r\n\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n user.teamLead = []\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n });\r\n } else {\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n\r\n}else if(user?.role && mapping[oldRole]>mapping[updatedRole]){\r\nthis.user[\"roleStatus\"] = \"down\"\r\n\r\nif(!this.user.lastOne){\r\n this.service.getUserTeams({email:user.email, type:\"lead\"}).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data.result?.length > 0) {\r\n \r\n this.user[\"teams\"] = res.data.result\r\n // this.activeModal.close();\r\n // console.log({user:this.user, role1:mapping[oldRole], role2:mapping[updatedRole],mesg:\".............2\", role:user?.role})\r\nconst modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.user = this.user\r\n\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n // user.teamLead = []\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err:any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n });\r\n } else {\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n}else{\r\n // this.activeModal.close();\r\nconst modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.user = this.user\r\n\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n // user.teamLead = []\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err:any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n });\r\n \r\n \r\n}\r\n\r\n\r\n}\r\nelse{\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n}\r\n \r\n }\r\n updatePermissionsBasedOnUserType(user: any) {\r\n user.rolespermission.forEach((feature: any) => {\r\n feature.modules.forEach((modules: any) => {\r\n if (user.userType === \"users\") {\r\n modules.isAdd = false;\r\n modules.isEdit = false;\r\n }\r\n });\r\n });\r\n return user;\r\n }\r\n removeNullValues = (data: any) => {\r\n if (!Array.isArray(data.rolespermission)) {\r\n throw new Error(\"Permission is not an array\");\r\n }\r\n\r\n // Map through the permissions and products to remove null values\r\n return {\r\n ...data,\r\n rolespermission: data.rolespermission.map((feature: any) => {\r\n return {\r\n ...feature,\r\n modules: feature.modules.map((modules: any) => {\r\n const newProduct: { [key: string]: any } = {};\r\n for (const [key, value] of Object.entries(modules)) {\r\n if (value !== null) {\r\n newProduct[key] = value;\r\n }\r\n }\r\n return newProduct;\r\n })\r\n };\r\n })\r\n };\r\n };\r\n getAllTeamsList() {\r\n this.service.getAllTeamsList({ clientId: this.$headerFilters.client }).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamList = res.data.result\r\n }\r\n })\r\n }\r\n editUser() {\r\n if (this.user?.isActive) {\r\n this.type = \"edit\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n } else if (this.user?.status === 'active') {\r\n this.type = \"view\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n }\r\n }\r\n isButtonDisabled(): boolean {\r\n const { teamLead, ...controlsToCheck } = this.userForm.controls;\r\n return Object.values(controlsToCheck).some(control => control.invalid);\r\n }\r\n setTeamLeads(teamList: any[]) {\r\n const teamLeadArray = this.userForm.get('teamLead') as FormArray;\r\n teamList.forEach(team => {\r\n // Push each team object as a new FormGroup into the teamLead FormArray\r\n if (team.clientId) {\r\n teamLeadArray.push(this.fb.group({\r\n _id: new FormControl(team._id),\r\n clientId: new FormControl(team.clientId),\r\n teamName: new FormControl(team.teamName),\r\n usersCount: new FormControl(team.usersCount)\r\n }));\r\n }\r\n\r\n });\r\n }\r\n\r\n omitSpecialChar(event: KeyboardEvent) {\r\n const key = event.key;\r\n const regex = /^[a-zA-Z0-9 _-]$/;\r\n if (!regex.test(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n omitSpecialCharPaste(event: ClipboardEvent) {\r\n const clipboardData = event.clipboardData || (window as any)['clipboardData'];;\r\n const pastedText = clipboardData.getData('text');\r\n const regex = /^[a-zA-Z0-9 _-]*$/;\r\n if (!regex.test(pastedText)) {\r\n event.preventDefault();\r\n this.ts.getErrorToast(\"Special characters are not allowed.\");\r\n }\r\n }\r\n \r\n preventClose(event: Event) {\r\n event.preventDefault();\r\n }\r\n\r\n}","<div class=\"card pt-0 pb-3 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5 d-flex\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/add-store-icon.svg\">\r\n </div>\r\n \r\n </div>\r\n <div class=\"row w-100\">\r\n <div *ngIf=\"type!=='view' && type!=='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Add\r\n User</a>\r\n <div class=\"sub-title\">Please add your user details</div>\r\n </div>\r\n <div *ngIf=\"type==='view' && type !=='edit'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">View your user details</div>\r\n </div>\r\n <ng-container *ngIf=\"operationType!=='view'\">\r\n <div *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit && type ==='view' && type !=='edit' && user?.role !== 'superadmin' && user?.isActive === true\" class=\"col-md-3 text-end px-0\" (click)=\"editUser()\">\r\n <button class=\"btn btn-outline\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3833_85908)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3833_85908\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></button>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"type==='edit' && type !=='view'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">Edit your user details</div>\r\n </div>\r\n <div class=\"w-100 h-0px scroll\">\r\n <div class=\"mt-5\" *ngIf=\"userForm\">\r\n <form [formGroup]=\"userForm\" novalidate=\"novalidate\" (keydown.enter)=\"preventClose($event)\" class=\"\">\r\n <div class=\"row px-0 me-3\">\r\n <!-- User Name Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"username\" class=\"form-label\">User Name <span class=\"alert-required text-danger\">*</span></label>\r\n <input type=\"text\" class=\"form-control\" id=\"username\" formControlName=\"userName\" autocomplete=\"off\" (keypress)=\"omitSpecialChar($event)\" (paste)=\"omitSpecialCharPaste($event)\">\r\n <div *ngIf=\"userForm.get('userName')?.invalid && (userForm.get('userName')?.dirty)\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('userName')?.errors?.['required']\">User Name is required.</small>\r\n </div>\r\n </div>\r\n \r\n <!-- Email Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Email <span class=\"alert-required text-danger\">*</span></label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" formControlName=\"email\" autocomplete=\"off\">\r\n <div *ngIf=\"userForm.get('email')?.invalid && userForm.get('email')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('email')?.errors?.['required']\">Email is required.</small>\r\n <small *ngIf=\"userForm.get('email')?.errors?.['pattern']\">Invalid email format.</small>\r\n </div>\r\n </div>\r\n \r\n <!-- Contact Number Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Contact Number <span class=\"alert-required text-danger\">*</span></label>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-4 col-xl-4\">\r\n <select class=\"form-select ps-3 pe-8\" id=\"inputGroupSelect01\" formControlName=\"countryCode\">\r\n <option *ngFor=\"let country of countryList\" [value]=\"country.phonecode\">\r\n {{country.name}} ({{country.phonecode}})\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-8 col-xl-8\">\r\n <input type=\"text\" class=\"form-control\" (keypress)=\"omit_special_char($event)\"\r\n id=\"mobileNumber\" autocomplete=\"off\" formControlName=\"mobileNumber\" minlength=\"8\" maxlength=\"13\">\r\n <div *ngIf=\"userForm.get('mobileNumber')?.invalid && userForm.get('mobileNumber')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['required']\">Contact Number is required.</small>\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['minlength']\">Contact Number must be at least 8 digits.</small>\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['maxlength']\">Contact Number cannot exceed 13 digits.</small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Role Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"role\" class=\"form-label\">Role <span class=\"alert-required text-danger\">*</span></label>\r\n <select class=\"form-select\" formControlName=\"role\" (change)=\"onRoleChange(userForm.get('role')?.value)\">\r\n <option value=\"admin\">Admin</option>\r\n <option value=\"user\">User</option>\r\n </select>\r\n <div *ngIf=\"userForm.get('role')?.invalid && userForm.get('role')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('role')?.errors?.['required']\">Role is required.</small>\r\n </div>\r\n </div>\r\n \r\n <!-- Add to Team Field -->\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\" *ngIf=\"this.userType !=='tango'\">\r\n <label for=\"teamLead\" class=\"form-label teams-title\">Add to a team</label>\r\n <team-select [items]=\"teamList\" [multi]=\"true\" [searchField]=\"'teamName'\" [idField]=\"'_id'\" [disabled]=\"type === 'view' ? true : false\"\r\n (selected)=\"onStoreSelect($event)\" [selectedValues]=\"selectedUser\"></team-select>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"userForm.get('role')?.value === 'admin'\">\r\n\r\n <h3 class=\"teams-title\" *ngIf=\"getPermissions().length\">Access for Admin</h3>\r\n <ng-container *ngIf=\"getPermissions().length\">\r\n <ng-container formArrayName=\"rolespermission\">\r\n <ng-container *ngFor=\"let rolespermission of getPermissions().controls; let i = index\" [formGroupName]=\"i\">\r\n <div class=\"table-responsive my-2 me-3\">\r\n <div class=\"row w-100\">\r\n <div class=\"title-header mt-4 ms-2\">\r\n {{ camelCaseToText(rolespermission.get('featureName')?.value) }}\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"rolespermission.get('modules')\" formArrayName=\"modules\">\r\n <ng-container *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\" [formGroupName]=\"j\">\r\n <table class=\"w-100\">\r\n <tbody>\r\n <tr *ngIf=\"rolespermission.get('featureName')?.value !== 'TangoAdmin'\">\r\n <td class=\"w-50\">{{ camelCaseToText(modules.get('name')?.value) }}</td>\r\n <td class=\"text-start\">\r\n <div class=\"d-inline-flex align-items-center\">\r\n <input type=\"checkbox\" formControlName=\"isAdd\" class=\"cursor-pointer\" (change)=\"handleViewChange(modules)\">\r\n <label class=\"global-label ms-2 mt-auto\">Add</label>\r\n </div>\r\n </td>\r\n <td class=\"text-start\">\r\n <div class=\"d-inline-flex align-items-center\">\r\n <input formControlName=\"isEdit\" type=\"checkbox\" class=\"cursor-pointer\" (change)=\"handleEditChange(modules)\">\r\n <label class=\"global-label ms-2 mt-auto\">Edit</label>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n <div *ngIf=\"rolespermission.get('featureName')?.value === 'TangoAdmin'\" class=\"row w-100 text-nowrap\">\r\n <div class=\"col-md-4\" *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\" [formGroupName]=\"j\">\r\n <div class=\"d-inline-flex mt-3\">\r\n <input type=\"checkbox\" class=\"cursor-pointer\" formControlName=\"isEdit\">\r\n <label class=\"global-label mb-5 mx-2 mt-1\" style=\"text-wrap:nowrap\">\r\n {{ camelCaseToText(modules.get('name')?.value) }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n <div *ngIf=\"type!=='view'\" class=\"d-flex my-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\"\r\n (click)=\"onSubmit()\" [disabled]=\"userForm.invalid || type === 'view'\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal, NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport Swal from \"sweetalert2\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\"\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { AddUsersComponent } from \"../../../components-v2/add-users/add-users.component\";\r\n\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"lib-add-user-popup\",\r\n templateUrl: \"./add-user-popup.component.html\",\r\n styleUrl: \"./add-user-popup.component.scss\",\r\n})\r\nexport class AddUserPopupComponent implements OnInit, OnDestroy {\r\n @Input() type: string;\r\n @Input() user: any;\r\n @Input() userType: any;\r\n @Output() dataTosingleuser: EventEmitter<string> = new EventEmitter<string>();\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Store\", isAdd: false, isEdit: false },\r\n { name: \"User\", isAdd: false, isEdit: false },\r\n { name: \"Camera\", isAdd: false, isEdit: false },\r\n { name: \"Configuration\", isAdd: false, isEdit: false },\r\n { name: \"Subscription\", isAdd: false, isEdit: false },\r\n { name: \"Billing\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoEye\",\r\n modules: [\r\n\r\n { name: \"ZoneTag\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoTrax\",\r\n modules: [\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n\r\n ];\r\n userForm: FormGroup;\r\n operationType: string;\r\n expandedItems: string[] = [];\r\n showsingleuser: boolean = false;\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp =/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/;\r\n userData: string;\r\n isExpanded: boolean[] = [];\r\n $headerFilters: any;\r\n private readonly destroy$ = new Subject();\r\n user_data: any;\r\n handleAddChange(product: FormGroup | any): void {\r\n if (!product.get(\"isAdd\")?.value) {\r\n product.get(\"isDelete\")?.setValue(false);\r\n product.get(\"isEdit\")?.setValue(false);\r\n }\r\n }\r\n handleEditChange(product: FormGroup | any): void {\r\n if (!product.get(\"isEdit\")?.value) {\r\n // product.get('isDownload')?.setValue(false);\r\n product.get(\"isDelete\")?.setValue(false);\r\n }\r\n }\r\n constructor(\r\n public activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef, public modalService: NgbModal,\r\n private fb: FormBuilder,\r\n private userService: UserService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n let data: any = JSON.parse(localStorage.getItem('header-filters') || '');\r\n this.user_data = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = data ? data : this.user_data;\r\n this.operationType = this.type;\r\n this.userService.dataSubject.subscribe({\r\n next: (data: any) => {\r\n if (data) {\r\n this.userData = data;\r\n // this.userType = data == \"Tango User\" ? \"tango\" : \"client\";\r\n }\r\n },\r\n });\r\n if (this.type === \"view\" || (this.type === \"edit\" && this.user.email)) {\r\n this.addSingleUser();\r\n this.loadUserForm();\r\n } else {\r\n this.initUserForm();\r\n this.showsingleuser = false;\r\n }\r\n if (this.userType === 'tango') {\r\n this.permissionArray.push({\r\n featureName: \"TangoAdmin\",\r\n modules: [\r\n {\r\n name: \"invoiceApproval\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"EditBilling\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"TicketConfiguration\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"Reports\", isAdd: false,\r\n isEdit: false\r\n },\r\n ]\r\n },)\r\n }\r\n }\r\n\r\n initUserForm() {\r\n this.userForm = this.fb.group({\r\n userName: [\"\", Validators.required],\r\n email: [\"\", Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,6}$\"),\r\n ])],\r\n mobileNumber: [\"\", [Validators.required, Validators.minLength(7), Validators.maxLength(13)]],\r\n role: [\"user\", Validators.required],\r\n userType: [this.userType],\r\n tangoUserType: [\"dashboard\", Validators.required],\r\n permission: this.fb.array([], Validators.required),\r\n });\r\n this.getUserPermissionData(\"user\", this.userType);\r\n }\r\n maskEmail(value: string): string {\r\n if (!value || !value.includes('@')) return '';\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(5, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n \r\n maskMobile(value: string): string {\r\n if (!value || value.length <= 4) return '*'.repeat(value.length);\r\n const first2 = value.slice(0, 2);\r\n const last2 = value.slice(-2);\r\n const maskedMiddle = '*'.repeat(value.length - 4);\r\n return `${first2}${maskedMiddle}${last2}`;\r\n }\r\n \r\n loadUserForm() {\r\n this.userService.getUser(this.user.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200 && res.data.result) {\r\n const userData = res.data.result;\r\n const isViewMode = this.operationType === 'view';\r\n const isSuperadmin = userData.role === 'superadmin';\r\n \r\n const email = (isViewMode && !isSuperadmin) ? this.maskEmail(userData.email) : userData.email;\r\n const mobile = (isViewMode && !isSuperadmin) ? this.maskMobile(userData.mobileNumber) : userData.mobileNumber;\r\n \r\n this.userForm = this.fb.group({\r\n userName: [userData.userName, Validators.required],\r\n email: [email, Validators.compose([\r\n Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,6}$\"),\r\n ])],\r\n mobileNumber: [mobile, [Validators.required, Validators.minLength(7), Validators.maxLength(13)]],\r\n role: [userData.role, Validators.required],\r\n userType: [userData.userType, Validators.required],\r\n tangoUserType: [userData.tangoUserType, Validators.required],\r\n permission: this.fb.array([], Validators.required),\r\n });\r\n \r\n this.populatePermission(userData.permission);\r\n \r\n if (isViewMode) {\r\n this.userForm.disable(); // disable entire form\r\n }\r\n \r\n this.userForm.get(\"email\")?.disable(); // email is always disabled\r\n \r\n this.cd.detectChanges();\r\n } else {\r\n this.initUserForm();\r\n }\r\n },\r\n error: () => {\r\n this.initUserForm();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n toggleCollapse(index: number): void {\r\n this.isExpanded[index] = !this.isExpanded[index];\r\n }\r\n\r\n\r\n addSingleUser() {\r\n let obj = {\r\n type: 'add'\r\n }\r\n\r\n const modalRef = this.modalService.open(AddUsersComponent, { centered: true, size: 'lg', backdrop: 'static' });\r\n modalRef.componentInstance.data = obj;\r\n modalRef.componentInstance.userType = this.userType\r\n modalRef.result.then((result) => {\r\n this.activeModal.close('submit');\r\n })\r\n const data = \"single user\";\r\n this.dataTosingleuser.emit(data);\r\n }\r\n\r\n addUserSubmit() {\r\n this.userService.createUser({ ...this.userForm.value, ...{ clientId: this.$headerFilters.client ? this.$headerFilters.client : this.user_data.clientId } }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"User created successfully.\");\r\n this.activeModal.close('submit');\r\n this.gs.manageRefreshTrigger.next(true)\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err: any) => {\r\n console.log(err)\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to create User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close('submit');\r\n }\r\n\r\n editUser() {\r\n if (this.user.isActive) {\r\n this.operationType = \"edit\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n }\r\n }\r\n\r\n populatePermission(permissionsData: any[]) {\r\n const permissions = this.userForm.get(\"permission\") as FormArray;\r\n permissions.clear();\r\n permissionsData.forEach((permission: any) => {\r\n const featureGroup = this.fb.group({\r\n featureName: [permission?.featureName],\r\n product: this.fb.array([]),\r\n });\r\n\r\n const products = featureGroup.get(\"product\") as FormArray;\r\n permission.product.forEach((product: any) => {\r\n const productGroup = this.fb.group({\r\n name: [product.name],\r\n isView: [product.isView],\r\n isEdit: [product.isEdit],\r\n // isDownload: [product.isDownload],\r\n // isDelete: [product.isDelete],\r\n });\r\n products.push(productGroup);\r\n });\r\n\r\n permissions.push(featureGroup);\r\n });\r\n for (let i = 0; i < this.getPermissions().length; i++) {\r\n this.isExpanded.push(true);\r\n }\r\n }\r\n\r\n getProducts(featureName: string): FormArray {\r\n return this.userForm\r\n .get(\"permission\")\r\n ?.value.find((permission: any) => permission.featureName === featureName)\r\n .product;\r\n }\r\n\r\n getUserPermissionData(roleName: string, userType: string) {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n this.cd.detectChanges();\r\n this.userService\r\n .getPersmissions({\r\n roleName: roleName,\r\n userType: userType,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n if (res.code == 200) {\r\n this.populatePermission(res.data.result[0]?.permission);\r\n } else {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n }\r\n } else {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n }\r\n },\r\n error: (error: any) => {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n },\r\n complete: () => { },\r\n });\r\n this.cd.detectChanges();\r\n }\r\n\r\n omit_special_char(event: any) {\r\n var k;\r\n k = event.charCode; // k = event.keyCode; (Both can be used)\r\n return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n }\r\n\r\n getPermissions(): FormArray {\r\n return this.userForm.get(\"permission\") as FormArray;\r\n }\r\n\r\n getFeaturePermissions(permission: FormGroup | any): FormArray {\r\n return permission.get(\"product\") as FormArray;\r\n }\r\nhasInvalidChars(value: string): boolean {\r\n const regex = /^[a-zA-Z0-9 _-]*$/;\r\n return !regex.test(value);\r\n}\r\n onUpload(e: any) {\r\n let data: any[];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.ts.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n this.ts.getErrorToast('Please Upload the Valid File');\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n data = utils.sheet_to_json(ws);\r\n };\r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n this.inputFile.nativeElement.value = \"\";\r\n errMsgs.push(this.validateField(data[i].UserName, \"User name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].Email, \"Email\", i, this.emailRegex)\r\n );\r\n if (this.hasInvalidChars(data[i].UserName)) {\r\n errMsgs.push(`Row ${i + 1}: UserName : ${data[i].UserName} has invalid characters.`);\r\n }\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].Contact,\r\n \"Contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n // errMsgs.push(this.validateField(data[i].Role, \"Role\", i));\r\n }\r\n\r\n errMsgs = errMsgs.filter((x) => x != null);\r\n if (errMsgs.length > 0) {\r\n let errors = errMsgs.join(\"<br>\");\r\n Swal.fire({\r\n icon: \"error\",\r\n html: errors,\r\n customClass: {\r\n htmlContainer: \"error-htmlcontainer-class\",\r\n },\r\n heightAuto: false,\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonColor: \"#009EF7\",\r\n confirmButtonText: \"OK\",\r\n }).then((result) => { });\r\n return;\r\n }\r\n\r\n console.log('data', data)\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n userName: data[i].UserName,\r\n email: data[i].Email,\r\n mobileNumber: data[i].Contact.toString(),\r\n tangoUserType: data[i].UserType,\r\n role: 'user',\r\n rolespermission: this.permissionArray\r\n });\r\n }\r\n\r\n if (processedArray.length == 0) {\r\n return this.ts.getErrorToast(\"No user entered in CSV\")\r\n }\r\n\r\n\r\n this.userService\r\n .createBulkUpload(\r\n {\r\n users: processedArray,\r\n userType: this.userType,\r\n ...(this.userType == 'client') ? { clientId: this.$headerFilters.client } : {}\r\n }\r\n )\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res.code == 200) {\r\n this.activeModal.close('submit');\r\n this.ts.getSuccessToast('Users have been uploaded Successfully!');\r\n }\r\n },\r\n error: (error: any) => {\r\n if (error) {\r\n this.inputFile.nativeElement.value = \"\";\r\n this.ts.getErrorToast(error.error.error ? error.error.error : 'Unable to create multiple Users!');\r\n // } else {\r\n // this.ts.getErrorToast('Unable to create multiple Users!');\r\n }\r\n },\r\n });\r\n };\r\n $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }else {\r\n this.ts.getErrorToast(\"Please Upload a Valid File\");\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n }\r\n\r\n validateField(\r\n value: string | undefined | null | number,\r\n fieldName: string,\r\n row: number,\r\n regex?: RegExp\r\n ): string | null {\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n const defaultValue = `please enter the ${fieldName\r\n .toLowerCase()\r\n .replace(/\\b\\w/g, (l) => l.toUpperCase())}`;\r\n if (!value) {\r\n return `Please enter ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (typeof value == \"string\") {\r\n if (value.trim() === defaultValue.trim()) {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (regex && !regex.test(value.trim())) {\r\n console.log({regex:regex,email:value, value:regex.test(value.trim()), msg:\".........1\"});\r\n \r\n return `Please enter valid ${fieldName.toLowerCase()} in row ${row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onRoleChange(role: string) {\r\n this.getUserPermissionData(role, this.userType);\r\n }\r\n\r\n userUpdate() {\r\n this.userForm.get(\"email\")?.enable();\r\n let user: any = this.userForm.value;\r\n this.userForm.get(\"email\")?.disable();\r\n this.userService.updateUser(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n onSubmit() {\r\n if (this.operationType == \"edit\") {\r\n this.userUpdate();\r\n } else {\r\n this.addUserSubmit();\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n camelCaseToText(input: string): string {\r\n return input.replace(/([A-Z])/g, ' $1')\r\n .replace(/^./, (str) => str.toUpperCase())\r\n .trim();\r\n }\r\n}\r\n","<div class=\"card py-0 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <!-- <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/add-store-icon.svg\">\r\n </div> -->\r\n </div>\r\n <div class=\"row w-100\">\r\n <div *ngIf=\"operationType==='add'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Add\r\n User</a>\r\n <div class=\"sub-title\">Please add your user details</div>\r\n </div>\r\n <!-- <div *ngIf=\"operationType==='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit User Details</a>\r\n <div class=\"sub-title\">Please Edit your user details</div>\r\n </div> -->\r\n <div *ngIf=\"operationType==='view'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">View your user details</div>\r\n </div>\r\n <!-- @if ((gs.userAccess | async)?.Global_User_isEdit) { -->\r\n <div *ngIf=\"operationType==='view' && (gs.userAccess | async)?.Global_User_isEdit\"\r\n class=\"col-md-3 text-end px-0\" (click)=\"editUser()\">\r\n <button class=\"btn btn-outline\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3833_85908)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3833_85908\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></button>\r\n </div>\r\n <!-- } -->\r\n </div>\r\n <div class=\"fw-bold text-gray-500 my-6\" *ngIf=\"!showsingleuser && this.operationType ==='add'\">\r\n <ul class=\"text-gray-400 fw-bold fs-6\">\r\n <li>Use the template to upload multiple users at once.</li>\r\n <li>Download the template here -\r\n <a [attr.href]=\"userType ==='tango' ? '../../../assets/files/TangoUsersTemplate.xlsx' : '../../../assets/files/UsersTemplate.xlsx'\"\r\n download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li>Add your data to the Template File</li>\r\n <li>Upload it below for processing</li>\r\n\r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-wrap mb-5 w-100\" *ngIf=\"!showsingleuser && this.operationType ==='add'\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUpload($event)\" value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline bg-primary btn-outline-default rounded-3 w-100 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"text-white mx-2 single-user\">Add Multiple Users</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"mx-2 orval\">Or </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"addSingleUser()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-100 p-4 mt-3\"><span class=\"fw-bold fs-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M17.1663 17.5V15.8333C17.1663 14.9493 16.8152 14.1014 16.19 13.4763C15.5649 12.8512 14.7171 12.5 13.833 12.5H7.16634C6.28229 12.5 5.43444 12.8512 4.80932 13.4763C4.1842 14.1014 3.83301 14.9493 3.83301 15.8333V17.5M13.833 5.83333C13.833 7.67428 12.3406 9.16667 10.4997 9.16667C8.65873 9.16667 7.16634 7.67428 7.16634 5.83333C7.16634 3.99238 8.65873 2.5 10.4997 2.5C12.3406 2.5 13.833 3.99238 13.833 5.83333Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span id=\"triggerButtonId\" class=\"mx-2 single-user fw-bold\">Add Single\r\n User</span></span></label>\r\n </div>\r\n\r\n <div class=\"w-100 h-500px scroll\" *ngIf=\"showsingleuser\">\r\n <div class=\"mt-5\" *ngIf=\"userForm\">\r\n <form [formGroup]=\"userForm\" novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0 me-3\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"username\" class=\"form-label\">User Name</label>\r\n <input type=\"text\" class=\"form-control\" id=\"username\" formControlName=\"userName\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Email</label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" formControlName=\"email\"\r\n autocomplete=\"off\" required>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Contact Number</label>\r\n <input type=\"text\" class=\"form-control\" id=\"contact\" formControlName=\"mobileNumber\"\r\n autocomplete=\"off\" required minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"role\" class=\"form-label\">Role</label>\r\n <select class=\"form-select\" formControlName=\"role\"\r\n (change)=\"onRoleChange(userForm.get('role')?.value)\">\r\n <option value=\"superadmin\">Super Admin</option>\r\n <option value=\"admin\">Admin</option>\r\n <option value=\"user\">User</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"userType === 'tango'\" class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"tangoUserType\" class=\"form-label\">User Type</label>\r\n <select class=\"form-select\" formControlName=\"tangoUserType\"\r\n (change)=\"onRoleChange(userForm.get('tangoUserType')?.value)\">\r\n <option value=\"dashboard\">Dashboard</option>\r\n <option value=\"audit\">Audit</option>\r\n </select>\r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\">Access for\r\n {{userForm.get('role')?.value | titlecase}}</a>\r\n <div class=\"sub-title font-sub\">{{userForm.get('role')?.value | titlecase}} can access respective\r\n enabled features and products</div>\r\n <ng-container *ngIf=\"getPermissions().length\">\r\n <ng-container formArrayName=\"permission\">\r\n <ng-container *ngFor=\"let permission of getPermissions().controls; let i = index\"\r\n [formGroupName]=\"i\">\r\n <div class=\"my-6\">\r\n <div class=\"row me-3\">\r\n <div class=\"col-6\">\r\n <div class=\"title fw-semibold\">\r\n {{ permission.get('featureName')?.value | titlecase }}\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-6 d-flex justify-content-end\" (click)=\"toggleCollapse(i)\">\r\n <div class=\"text-end\">\r\n @if (!isExpanded[i]) {\r\n <svg width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1.5 1.5L6.5 6.5L11.5 1.5\" stroke=\"#667085\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n } @else {\r\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M11 6.5L6 1.5L1 6.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{ 'collapsed': !isExpanded[i] }\">\r\n <div class=\"table-responsive my-2 me-3\">\r\n <table class=\"w-100\">\r\n <thead>\r\n <tr>\r\n <th>Modules</th>\r\n <th>View</th>\r\n <th>Edit</th>\r\n <th>Download</th>\r\n <th>Delete</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"permission.get('product')\"\r\n formArrayName=\"product\">\r\n <ng-container\r\n *ngFor=\"let product of getFeaturePermissions(permission)?.controls;let j=index;\"\r\n [formGroupName]=\"j\">\r\n <tr>\r\n <td>{{ camelCaseToText(product.get('name')?.value) }}\r\n </td>\r\n <td><input formControlName=\"isView\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n (change)=\"handleAddChange(product)\"></td>\r\n <td><input formControlName=\"isEdit\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n (change)=\"handleEditChange(product)\"></td>\r\n <td><input formControlName=\"isDownload\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n [disabled]=\"!product.get('isEdit')?.value || !product.get('isView')?.value\">\r\n </td>\r\n <td><input formControlName=\"isDelete\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n [disabled]=\"!product.get('isEdit')?.value || !product.get('isView')?.value\">\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div *ngIf=\"operationType!=='view'\" class=\"d-flex my-14\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 mx-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 mx-3\" [disabled]=\"userForm.invalid\" id=\"alert-toast\"\r\n (click)=\"onSubmit()\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { UserService } from '../../../services/user.service';\r\n@Component({\r\n selector: 'lib-group-select',\r\n templateUrl: './group-select.component.html',\r\n styleUrl: './group-select.component.scss'\r\n})\r\nexport class GroupSelectComponent {\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n \r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n @Output() selected = new EventEmitter<any>()\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n \r\n \r\n constructor(private cd: ChangeDetectorRef, private userService:UserService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.userService.dropDownTrigger.subscribe((e)=>{ \r\n if(e !== this.instanceId){ \r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n if (changes['items'] && this.items?.length) {\r\n this.initializeItems();\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) { \r\n this.updateSelectedValues();\r\n }\r\n }\r\n \r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n \r\n updateSelectedValues() { \r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n \r\n }\r\n \r\n openDropdown(event: any) {\r\n this.userService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n \r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event.target.value.toLowerCase();\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].toLowerCase().includes(searchTerm)\r\n );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n \r\n onSelect(event: any, item: any) { \r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item ); \r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element:any) => {\r\n if(element[this.idField] !== item[this.idField]){\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n \r\n }\r\n \r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n \r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.selectedValues = [];\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n \r\n \r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n \r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}\r\n","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <!-- <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> -->\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">+{{selectedValues?.length -1}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\" >\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n Input,\r\n OnInit, ViewChild,ElementRef\r\n} from \"@angular/core\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { NgbActiveModal, NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\n\r\n@Component({\r\n selector: \"lib-assign-store-popup\",\r\n templateUrl: \"./assign-store-popup.component.html\",\r\n styleUrl: \"./assign-store-popup.component.scss\",\r\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\r\n host: {\r\n '(document:click)': 'onClick($event)',\r\n },\r\n})\r\nexport class AssignStorePopupComponent implements OnInit {\r\n @Input() user: any;\r\n select: string = \"stores\";\r\n stores: any[] = [];\r\n clusters: any[] = [];\r\n teams:any[]=[];\r\n $headerFilters: any;\r\n modalRef: NgbModalRef;\r\n userData: any;\r\n userType: string;\r\n selectedTextstores:any\r\n selectedTextclusters:any\r\n selectedTextteams: any\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n @ViewChild('afterValidation') afterValidation: any;\r\n\r\n uploadPopUp: any;\r\n\r\n constructor(\r\n private userService: UserService,\r\n private cd: ChangeDetectorRef,\r\n private ts: ToastService,\r\n public activeModal: NgbActiveModal,\r\n private modalService: NgbModal\r\n ) {\r\n this.userService.dataSubject.subscribe({\r\n next: (data: any) => {\r\n this.userData = data;\r\n this.userType = data == \"Tango User\" ? \"tango\" : \"client\";\r\n },\r\n });\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n if (data) {\r\n this.$headerFilters = data;\r\n } else if(!data){\r\n let user: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = user;\r\n this.$headerFilters.client = user.clientId;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getAssignStoreList();\r\n this.getclusterList();\r\n this.getteamsList() \r\n }\r\n\r\n loadUserAssignDetails() {\r\n this.userService\r\n .getUserAssignData({\r\n email: this.user.email, \r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.loadSelectedStores(res.data.stores);\r\n this.loadSelectedclusters(res.data.clusters);\r\n this.loadSelectedteams(res.data.teams);\r\n\r\n this.cd.detectChanges();\r\n } \r\n },\r\n error: () => { \r\n this.cd.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n getAssignStoreList() {\r\n this.userService\r\n .getAssignStores({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[0].Stores = res.data.result;\r\n this.loadUserAssignDetails();\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[0].Stores = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n getclusterList() {\r\n this.userService\r\n .getAssignclusters({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[1].clusters = res.data.result;\r\n \r\n }\r\n },\r\n error: () => {\r\n this.dataObject[1].clusters = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n getteamsList() {\r\n this.userService\r\n .getAssignteams({ clientId: this.$headerFilters.client, userEmail:this.user?.email })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[2].teams = res.data.result;\r\n \r\n // if (this.user.assignedValue) {\r\n // this.loadSelectedteams(this.user.assignedValue);\r\n // }\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[2].clusters = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n storesType(e: any) {\r\n this.Opendropdown = false;\r\n // this.resetclusters();\r\n // this.resetStore();\r\n if (this.select == \"stores\") {\r\n if(this.selectedValuesArray[0].length==0){\r\n this.selectedTextstores = \"Select Stores\";\r\n }else{\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n } else if(this.select =='clusters') {\r\n if(this.selectedValuesArray[1].length==0){\r\n this.selectedTextclusters = \"Select Clusters\";\r\n }else{\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n } \r\n }else if(this.select =='teams') {\r\n if(this.selectedValuesArray[2].length==0){\r\n this.selectedTextteams = \"Select Teams\";\r\n }else{\r\n this.selectedTextteams = `${this.selectedValuesArray[2].length} Teams Selected`;\r\n } \r\n }\r\n }\r\n\r\n resetStore() {\r\n this.dataObject[0].Stores = [];\r\n this.stores = [];\r\n this.selectedValuesArray[0] = [];\r\n }\r\n\r\n resetclusters() {\r\n this.dataObject[1].clusters = [];\r\n this.clusters = [];\r\n this.selectedValuesArray[1] = [];\r\n }\r\n resetTeams() {\r\n this.dataObject[2].teams = [];\r\n this.teams = [];\r\n this.selectedValuesArray[2] = [];\r\n }\r\n Opendropdown: boolean = false;\r\n dataObject: any[] = [\r\n { Description: \"Stores\", Stores: [] },\r\n { Description: \"Clusters\", clusters: [] },\r\n { Description: \"Teams\", teams: [] },\r\n\r\n ];\r\n selectedValuesArray: any[] = [[], [],[]];\r\n selectedText: string;\r\n\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest(\".dropdown1\")) {\r\n this.Opendropdown = false;\r\n }\r\n if (!target.closest(\".dropdown-content\")) {\r\n this.dataObject.forEach((item: any, i: any) => {\r\n item.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n Dropdown(value: any, index: number, event: MouseEvent) {\r\n event.stopPropagation();\r\n this.dataObject.forEach((item: any, i: any) => {\r\n if (i !== index) {\r\n item.isOpen = false;\r\n }\r\n });\r\n this.dataObject[index].isOpen = !this.dataObject[index].isOpen;\r\n }\r\n\r\n toggleCheckboxStores(\r\n event: any,\r\n store: any,\r\n index: number,\r\n subIndex: number\r\n ) {\r\n const stores = this.dataObject[0].Stores;\r\n this.selectedValuesArray[0] = this.selectedValuesArray[0] || [];\r\n\r\n if (store === \"Select All\") {\r\n const checked = event.target.checked;\r\n stores.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[0] = checked ? [...stores] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[0].findIndex(\r\n (item: any) => item.storeName === store.storeName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[0].push(store)\r\n : this.selectedValuesArray[0].splice(storeIndex, 1);\r\n this.dataObject[index].Stores[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = stores.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${store.storeName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[0]);\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n toggleCheckboxTeams(\r\n event: any,\r\n team: any,\r\n index: number,\r\n subIndex: number\r\n ) {\r\n \r\n const teams = this.dataObject[2].teams;\r\n this.selectedValuesArray[2] = this.selectedValuesArray[2] || [];\r\n\r\n if (team === \"Select All\") {\r\n const checked = event.target.checked;\r\n teams.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[2] = checked ? [...teams] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[2].findIndex(\r\n (item: any) => item.userName === team.userName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[2].push(team)\r\n : this.selectedValuesArray[2].splice(storeIndex, 1);\r\n this.dataObject[index].teams[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = teams.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${teams.storeName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[2]);\r\n this.selectedTextteams = `${this.selectedValuesArray[2].length} Teams Selected`;\r\n }\r\n\r\n loadTable(values: any[]) {\r\n if (this.select == \"stores\") {\r\n this.stores = values;\r\n } else if(this.select == \"clusters\") {\r\n this.clusters = values;\r\n }else if(this.select == \"teams\") {\r\n this.teams = values;\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n onstoreSelect(event: any) {\r\n this.selectedValuesArray[0] = event\r\n this.cd.detectChanges();\r\n }\r\n ongroupSelect(event: any) {\r\n this.selectedValuesArray[1] = event\r\n this.cd.detectChanges();\r\n } \r\n onTeamsSelect(event: any) {\r\n this.selectedValuesArray[2] = event\r\n this.cd.detectChanges();\r\n }\r\n \r\n\r\n onSubmit() {\r\n if (this.user.assignedValue && this.user.assignedValue.length) {\r\n this.reAssignSubmit();\r\n } else {\r\n this.assignSubmit();\r\n }\r\n }\r\n\r\n excelError: any;\r\n excelData: any = []\r\n validatedOutput: any = [];\r\n\r\n getStoreCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(data?.map((item: any) => item['Store Name/Store Id']));\r\n return uniqueUserNames.size;\r\n\r\n }\r\n\r\n fileError: boolean = false;\r\n apiData: any = [];\r\n\r\n onUpload(e:any) {\r\n let data: any = [];\r\n let error: any = [];\r\n let sheetName: any = '';\r\n\r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.ts.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n\r\n data = utils.sheet_to_json(ws, {defval: \"\",raw:true});\r\n this.excelData = data;\r\n sheetName = wb.SheetNames[0];\r\n };\r\n \r\n reader.readAsBinaryString(target.files[0]);\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n \r\n if (sheetName != \"StoreData\") {\r\n this.fileError = true\r\n this.ts.getErrorToast(\"Can you confirm whether the sheet name is StoreData ?\");\r\n return\r\n }\r\n if (!data?.length) {\r\n this.ts.getErrorToast(\"Please upload a valid file\");\r\n return\r\n }\r\n\r\n const requiredKeys = ['Store Name/Store Id'] // Must always be present\r\n // const optionalKeys = ['userPhone', 'city'] : ['city'];\r\n \r\n const isValid = data.some((item: any) => {\r\n const keys = Object.keys(item);\r\n const hasRequiredKeys = requiredKeys.every(key => keys.includes(key));\r\n const allKeysAreAllowed = keys.every(key => \r\n requiredKeys.includes(key)\r\n // || optionalKeys.includes(key)\r\n );\r\n return hasRequiredKeys && allKeysAreAllowed;\r\n });\r\n\r\n if (!isValid) {\r\n this.ts.getErrorToast('Please upload a valid file.');\r\n return;\r\n }\r\n\r\n data?.forEach((element: any, index: any) => {\r\n if ( !element?.['Store Name/Store Id'] || element?.['Store Name/Store Id'] == '' || element?.['Store Name/Store Id'] == null) {\r\n error.push(`Invalid Store Name/Store Id - A${index + 2}`)\r\n } else {\r\n processedArray.push({\r\n value: data[index]['Store Name/Store Id']\r\n }) \r\n } \r\n })\r\n if (error.length) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: error\r\n }\r\n this.afterUplload(popupcontent)\r\n return;\r\n }\r\n\r\n if(this.fileError){\r\n return\r\n }\r\n \r\n processedArray = processedArray.map((el: any) => { return { store: el?.value } });\r\n \r\n this.userService\r\n .bulkstoreAssign({\r\n userEmail:this.user.email,\r\n data: processedArray\r\n })\r\n .subscribe({\r\n next: (res: any) => { \r\n if (res && res.code == 200) {\r\n this.apiData = res?.data?.result;\r\n this.selectedValuesArray[0] = res?.data?.result.map((el: any) => {\r\n const stores = this.dataObject?.[0]?.Stores;\r\n const match = stores?.find((val: any) => val._id === el?._id);\r\n if (match) {\r\n match.checked = true;\r\n return match;\r\n }\r\n return null;\r\n }).filter((item:any) => item !== null);\r\n\r\n this.afterUplload();\r\n }else{\r\n this.ts.getErrorToast(\"The given Store not associated with this brand\");\r\n }\r\n },\r\n error: (err: any) => {\r\n if (err.error.code == 400) { // this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: err.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile.nativeElement.value = \"\";\r\n } else {\r\n this.ts.getErrorToast(err.error.error);\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n },\r\n });\r\n };\r\n // $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }\r\n }\r\n\r\n proceedSubmit() {\r\n this.loadTable(this.selectedValuesArray[0]);\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n\r\n closeactivepopup() {\r\n // this.modalService.dismissAll();\r\n }\r\n\r\n afterUplload(data?: any) {\r\n this.excelError = data;\r\n if (this.uploadPopUp) {\r\n this.uploadPopUp.dismiss();\r\n }\r\n this.uploadPopUp = this.modalService.open(this.afterValidation, { centered: true, backdrop: 'static', size: 'lg', windowClass: 'custom-modal-width' })\r\n }\r\n\r\n assignSubmit() {\r\n \r\n this.apiData = this.selectedValuesArray[0].map((el: any) => {\r\n return {\r\n _id: el?._id,\r\n storeName:el?.storeName,\r\n storeId:el?.storeId\r\n }\r\n })\r\n\r\n let payload = {\r\n data: [{\r\n userEmail: this.user.email,\r\n stores: this.apiData,\r\n clusters:this.selectedValuesArray[1],\r\n teams:this.selectedValuesArray[2] \r\n }]\r\n // userId:this.user._id,\r\n // clientId: this.$headerFilters.client,\r\n // userType: this.userType,\r\n } \r\n this.userService\r\n .assignData(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(`Stores Assigned to User Successfully!`);\r\n } else {\r\n this.ts.getErrorToast(`Unable to assign Stores to User!`)\r\n }\r\n this.activeModal.close('submit');\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n reAssignSubmit() {\r\n let payload= {\r\n userId:this.user._id,\r\n clientId: this.$headerFilters.client,\r\n userEmail: this.user.email,\r\n userType: this.userType,\r\n stores:this.selectedValuesArray[0],\r\n clusters:this.selectedValuesArray[1],\r\n teams:this.selectedValuesArray[2]\r\n }\r\n this.userService\r\n .reAssignStores(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(`Stores Assigned to User Successfully!`);\r\n } else {\r\n this.ts.getErrorToast(`Unable to Assign Stores to User!`)\r\n }\r\n this.activeModal.close('submit');\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n loadSelectedStores(stores: any[]) {\r\n this.selectedValuesArray[0] = [];\r\n this.dataObject[0].Stores.forEach((store: any) => {\r\n const exists = stores.some( ( obj:any ) => obj.storeId === store.storeId );\r\n if (exists) { \r\n store.checked = true;\r\n this.selectedValuesArray[0].push(store);\r\n }\r\n });\r\n this.stores = this.selectedValuesArray[0];\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n loadSelectedteams(teams: any[]){\r\n this.selectedValuesArray[2] = [];\r\n this.dataObject[2].teams.forEach((team: any) => {\r\n const exists = teams.some( ( obj:any ) => obj._id === team._id );\r\n if (exists) {\r\n team.checked = true;\r\n this.selectedValuesArray[2].push(team);\r\n this.teams.push(team._id)\r\n }\r\n });\r\n this.selectedTextteams = `${this.selectedValuesArray[1].length} Teams Selected`;\r\n }\r\n loadSelectedclusters(clusters: any[]) {\r\n this.selectedValuesArray[1] = [];\r\n this.dataObject[1].clusters.forEach((cluster: any) => {\r\n const exists = clusters.some( ( obj:any ) => obj._id === cluster._id );\r\n if (exists) {\r\n cluster.checked = true;\r\n this.selectedValuesArray[1].push(cluster);\r\n this.clusters.push(cluster._id)\r\n }\r\n });\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n }\r\n\r\n closeModal() {\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card assign-store py-0 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <!-- <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/assign-adduser.svg\">\r\n </div> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n<rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\"/>\r\n<rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\"/>\r\n<path d=\"M32 37V35C32 33.9391 31.5786 32.9217 30.8284 32.1716C30.0783 31.4214 29.0609 31 28 31H21C19.9391 31 18.9217 31.4214 18.1716 32.1716C17.4214 32.9217 17 33.9391 17 35V37M36 24V30M39 27H33M28.5 23C28.5 25.2091 26.7091 27 24.5 27C22.2909 27 20.5 25.2091 20.5 23C20.5 20.7909 22.2909 19 24.5 19C26.7091 19 28.5 20.7909 28.5 23Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </div>\r\n <a class=\"title mb-3\">Assign {{(select ==='clusters' ? 'as lead to' : 'as user to') | titlecase}}</a>\r\n <!-- <span class=\"sub-title my-2\">Please assign the {{select === 'stores' ? 'store' :(select ==='users' ? 'user' : 'cluster')}}</span> -->\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap \">\r\n\r\n <li class=\"nav-item nav-item1\" (click)=\"select='stores'; storesType($event)\">\r\n <a [ngClass]=\"select === 'stores' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Stores</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"select='clusters'; storesType($event)\"><a\r\n [ngClass]=\"select === 'clusters' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Cluster</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"select='teams'; storesType($event)\"><a\r\n [ngClass]=\"select === 'teams' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Teams</a>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"select ==='stores'\" class=\"w-100 my-5\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(dataObject[0]?.Stores?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-group-select [items]=\"dataObject[0]?.Stores\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onstoreSelect($event)\"\r\n [selectedValues]=\"selectedValuesArray[0]\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"select ==='clusters'\" class=\"w-100 my-5\"> \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(dataObject[1]?.clusters?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"dataObject[1]?.clusters\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'clusterName'\"\r\n [idField]=\"'clusterName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"selectedValuesArray[1]\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"select ==='teams'\" class=\"w-100 my-5\"> \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(dataObject[2]?.teams?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-group-select [items]=\"dataObject[2]?.teams\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'teamName'\"\r\n [idField]=\"'teamName'\" (selected)=\"onTeamsSelect($event)\"\r\n [selectedValues]=\"selectedValuesArray[2]\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n\r\n <h2 class=\"store-info fw-bold\">\r\n @if(select ==='stores') {\r\n Store \r\n } @else if(select ==='clusters') {\r\n Cluster\r\n }@else if(select ==='teams') {\r\n Teams\r\n }\r\n Information\r\n </h2>\r\n\r\n <section *ngIf=\"select ==='stores'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th>SPOC Name</th>\r\n <th>Store ID</th>\r\n <th>Application ID</th>\r\n <th>Location</th>\r\n </tr>\r\n </thead>\r\n <tbody> \r\n <tr *ngFor=\"let store of stores;let i=index\">\r\n <td>{{store?.spocName}}</td>\r\n <td>{{store?.storeId}}</td>\r\n <td>{{store?.appId}}</td>\r\n <td>{{store?.location}}</td>\r\n </tr> \r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[0].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned to the above stores.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='clusters'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th class=\"ms-5\">Cluster Name</th>\r\n <th>Stores</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let cluster of this.selectedValuesArray[1];let i=index;\">\r\n <td class=\"ms-5\">{{cluster?.clusterName}}</td>\r\n <td>{{cluster?.storeNames}} <span *ngIf=\"cluster?.storeListCount > 2\" class=\"justify-content-center align-items-center blend-mode ms-3\">+{{cluster?.storeListCount - 2}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[1].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned as a member to the above\r\n clusters.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='teams'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th class=\"ms-5\">Team Name</th>\r\n <th>Users</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let team of this.selectedValuesArray[2];let i=index;\">\r\n <td class=\"ms-5\">{{team?.teamName}}</td>\r\n <td>{{team?.userNames}} <span *ngIf=\"team?.userListCount > 2\" class=\"justify-content-center align-items-center blend-mode ms-3\">+{{team?.userListCount - 2}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[2].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned as a member to the above\r\n teams.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='stores'\" class=\"w-100\">\r\n <div class=\"position-relative my-5\">\r\n <hr class=\"hr m-0 border border-gray-400 border-1\">\r\n <div class=\"position-absolute position-or px-10\">or</div>\r\n </div>\r\n <div class=\"d-flex justify-content-start align-items-center\">\r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ol class=\"custom-ordered-list text-gray-400 fw-bold fs-6\">\r\n <li class=\"user-text\">Use the template to upload multiple stores to users at once.</li>\r\n <li class=\"user-text my-2\"><span class=\"user-text\">Download the template here - </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/storeListTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li> \r\n </ol>\r\n </div>\r\n </div>\r\n <div class=\"mt-3 ms-3 right-bar py-5 d-flex justify-content-center align-items-center flex-column\" >\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\" value=\"personal\"\r\n class=\"btn-check\"\r\n (change)=\"onUpload($event)\"\r\n ng-reflect-value=\"persona\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\" class=\" w-50 p-4\"><span\r\n class=\"fw-bold text-center w-100 fs-4\">\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\"\r\n stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4047_40566)\">\r\n <path\r\n d=\"M26.3333 26.3334L23 23M23 23L19.6666 26.3334M23 23V30.5M29.9916 28.325C30.8044 27.8819 31.4465 27.1808 31.8165 26.3322C32.1866 25.4837 32.2635 24.5361 32.0351 23.6389C31.8068 22.7418 31.2862 21.9463 30.5555 21.3779C29.8248 20.8095 28.9257 20.5006 28 20.5H26.95C26.6977 19.5244 26.2276 18.6186 25.5749 17.8509C24.9222 17.0831 24.104 16.4732 23.1817 16.0672C22.2594 15.6612 21.2571 15.4695 20.2501 15.5066C19.243 15.5437 18.2575 15.8086 17.3676 16.2814C16.4777 16.7542 15.7066 17.4226 15.1122 18.2363C14.5177 19.0501 14.1155 19.988 13.9358 20.9795C13.756 21.9711 13.8034 22.9905 14.0743 23.9611C14.3452 24.9317 14.8327 25.8282 15.5 26.5834\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4047_40566\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"nodata-title\"><span class=\"click-upload cursor-pointer\">Click to\r\n upload</span>\r\n <!-- <span class=\"ms-2\">or drag and drop</span> -->\r\n </div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </span>\r\n </label>\r\n </div>\r\n </section>\r\n\r\n <div class=\"d-flex mb-10 w-100 mt-10\" role=\"cluster\">\r\n <button class=\"btn btn-outline w-100 mx-3\" (click)=\"closeModal()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 mx-3\" (click)=\"onSubmit()\">Submit</button>\r\n </div>\r\n\r\n\r\n </div>\r\n</div>\r\n\r\n<ng-template #afterValidation let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"card-title mt-3\"><span class=\"config-heading fw-semibold w-auto\">Bulk Assign</span></div>\r\n </div>\r\n <div class=\"card-body pt-0 popup-scroll\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{getStoreCounts(excelData)}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Total Records</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{excelData?.length}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Rows processed</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error w-100 error-heading' \r\n : 'fw-semibold w-100 config-heading'\">\r\n {{ excelError?.error?.length || 0 }}\r\n </div>\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error mt-1 excel-error' \r\n : 'fw-semibold subtitle mt-1'\">\r\n Error\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!excelError\" class=\"table-header mt-5\" style=\"font-weight: 400;\">\r\n <div >You're about to assign {{getStoreCounts(excelData)}} {{getStoreCounts(excelData) > 1 ? 'Stores' : 'Store'}}. Are you sure want to proceed?</div>\r\n \r\n </div>\r\n <div *ngIf=\"excelError\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Invalid Details !</div>\r\n <div class=\"subtitle mt-5\">Please provide correct information.</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of excelError?.error; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify-content-end flex-wrap gap-2 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"closeactivepopup();model.close()\">Cancel</button>\r\n <button *ngIf=\"!excelError\" class=\"btn btn-md py-3 btn-default ms-3 btn-primary\" (click)=\"proceedSubmit();model.close()\">Proceed</button>\r\n <button *ngIf=\"excelError\" class=\"btn py-3 btn-md btn-default ms-3 btn-danger\" (click)=\"file1.click();\">Reupload</button>\r\n <input style=\"display: none;;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUpload($event)\" />\r\n </div>\r\n </div>\r\n</ng-template>","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExcelService {\r\n\r\n \r\n constructor() { }\r\n\r\n public exportAsExcelFile(json: any[], excelFileName: string): void {\r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n\r\n public saveAsExcelFile(buffer: any, fileName: string): void {\r\n console.log(buffer, fileName);\r\n \r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + 'list'+ EXCEL_EXTENSION);\r\n }\r\n \r\n private saveAsTemplate(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { AssignStorePopupComponent } from \"../assign-store-popup/assign-store-popup.component\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { AlertPopupComponent } from \"./alert-popup/alert-popup.component\";\r\nimport { AddUsersComponent } from \"../../../components-v2/add-users/add-users.component\";\r\n\r\n@Component({\r\n selector: \"lib-user-table\",\r\n templateUrl: \"./user-table.component.html\",\r\n styleUrl: \"./user-table.component.scss\",\r\n})\r\nexport class UserTableComponent implements OnInit, OnDestroy {\r\n\r\n // @Output() dataTouserlist: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n userData: string;\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private readonly destroy$ = new Subject();\r\n roles: any[] = [];\r\n rolesCount: number;\r\n receivedData: any = '';\r\n SelectedTab: any;\r\n userListStatus: any;\r\n userRole: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n constructor(\r\n public modalService: NgbModal, private pageInfo: PageInfoService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private userService: UserService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n // this.initSearch();\r\n }\r\n\r\n // initSearch() {\r\n // console.log(678);\r\n\r\n // this.searchInput.valueChanges\r\n // .pipe(debounceTime(1000), distinctUntilChanged())\r\n // .subscribe((e) => {\r\n // if(e) {\r\n\r\n // this.userList_req.searchValue = e;\r\n // }\r\n // this.loadTable();\r\n // });\r\n // }\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Tango Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs: any[] = [];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs = [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs = [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n }\r\n ngOnInit() {\r\n\r\n let userInfo: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.userRole = userInfo?.role;\r\n console.log('userRole', this.userRole, userInfo)\r\n // this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n // next:(data:any)=>{\r\n // if(data) {\r\n // this.$headerFilters = data;\r\n // this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe((type: any) => {\r\n // this.userData = type;\r\n this.userType = \"tango\";\r\n this.userList_req = {\r\n // clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.loadTable();\r\n this.getRoles();\r\n this.setPageData();\r\n // });\r\n // }\r\n // }\r\n // });\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n } else {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n }\r\n Viewusers(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUsersComponent, { centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n\r\n users(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.searchValue = '';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.loadTable();\r\n this.getRoles();\r\n }\r\n });\r\n }\r\n\r\n // searchData() {\r\n // this.loadTable();\r\n // }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n } else {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n } else {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n\r\n assignStore(user: any) {\r\n const modalRef = this.modalService.open(AssignStorePopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userList_req = {\r\n // clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: '',\r\n };\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n this.pagination.totalCount = 0;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n exportXLSX() {\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export: true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Tango Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n } else {\r\n this.userList_req = {\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export: true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Tango Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n\r\n }\r\n userStatusChange(user: any, i: number) {\r\n const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.status = user.isActive\r\n modalRef.componentInstance.userName = user?.userName\r\n modalRef.result.then((result) => {\r\n if (result) {\r\n if (result === 'submit') {\r\n this.userService.updateUser({ email: user?.email, isActive: user.isActive }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n if (user.isActive) {\r\n this.toastService.getSuccessToast('User Status Activated!');\r\n } else {\r\n this.toastService.getSuccessToast('User Status Deactivated!');\r\n }\r\n } else {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive = !user.isActive;\r\n }\r\n },\r\n error: () => {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive = !user.isActive;\r\n },\r\n complete: () => { }\r\n })\r\n } else if (result === 'close') {\r\n this.userList[i].isActive = !user.isActive;\r\n }\r\n }\r\n })\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n getRoles() {\r\n let data = {\r\n userType: 'tango'\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n userDetials(role: any) {\r\n let obj = {\r\n role: role,\r\n userType: 'Tango User',\r\n receivedData: \"Role Value\"\r\n }\r\n this.userService.rolesComms.next(obj);\r\n this.receivedData = 'Role Value';\r\n }\r\n receiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n }\r\n onSort(column: string) {\r\n this.userList_req.export = false;\r\n if (this.userList_req?.sortColumName === column) {\r\n this.userList_req.sortBy = this.userList_req.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.userList_req.sortColumName = column;\r\n this.userList_req.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n\r\n applyFilters(event: any) {\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.userList_req.offset = 1;\r\n this.userList_req.limit = 10;\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userList_req.export = false;\r\n this.loadTable()\r\n }\r\n}","<div *ngIf=\"receivedData ===''\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <div class=\"d-flex overflow-auto h-50px\">\r\n <ul\r\n class=\"nav nav-stretch w-100 nav-line-tabs nav-line-tabs-2x border-bottom-2 fs-5 fw-bolder flex-nowrap\">\r\n <li class=\"nav-item activated cursor-pointer bg-light-primary px-5 text-center me-5\"><a\r\n class=\"nav-link me-0 text-active-primary\">Users</a>\r\n </li>\r\n <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && userRole === 'superadmin'\"\r\n class=\"nav-item cursor-pointer me-5\"><a routerLink=\"/manage/users/tango/audit\"\r\n class=\"nav-link text-active-primary\">Audit Users\r\n Summary</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"text-sub mb-2 mt-5\">{{pagination?.totalCount}} total users</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default px-4 py-3 rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16774 13.7347 6.0862 13.7036 6.01005C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37332 9.06609 1.32749 8.98994 1.29639C8.91379 1.26529 8.83225 1.24952 8.75 1.25H2.5C2.16848 1.25 1.85054 1.38169 1.61612 1.61611C1.3817 1.85053 1.25 2.16847 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89946 7.86612 7.13388C8.10054 7.3683 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <!-- } -->\r\n }\r\n @if ((gs.userAccess | async)?.Global_User_isAdd) {\r\n <button type=\"button\" (click)=\"users('add')\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'userName' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'email' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th >Roles\r\n <!-- class=\"cursor-pointer\" (click)=\"onSort('role')\" -->\r\n <!-- <svg [ngClass]=\"userList_req?.sortColumName === 'role' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> -->\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assigned')\">Clients Assigned\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'assigned' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'assigned' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'mobileNumber' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td *ngIf=\"user?.role ==='superadmin'\">Super Admin</td>\r\n <td *ngIf=\"user?.role !=='superadmin'\">{{user?.role | titlecase}}</td>\r\n <td>{{user?.assigned || 0}}</td>\r\n <td>{{user?.mobileNumber}}</td>\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"form-check form-switch mx-6\">\r\n <input class=\"form-check-input mt-3 cursor-pointer\" type=\"checkbox\"\r\n [disabled]=\"!((gs.userAccess | async)?.Global_User_isEdit)\"\r\n (change)=\"userStatusChange(user,i)\" [(ngModel)]=\"userList[i].isActive\"\r\n role=\"switch\" checked=\"\">\r\n @if (userList[i].isActive) {\r\n Active\r\n } @else {\r\n Deactive\r\n }\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div *ngIf=\"receivedData ===''\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles\">\r\n <a *ngIf=\"obj.roleName ==='superadmin'\" class=\"role-title my-2 cursor-pointer\" >Super Admin</a>\r\n <a *ngIf=\"obj.roleName !=='superadmin'\" class=\"role-title my-2 cursor-pointer\" >{{obj.roleName |\r\n titlecase}}</a>\r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n<!--begin::Row-->\r\n<!-- <div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\"> -->\r\n<!--begin::Col-->\r\n<!-- <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\"> -->\r\n<!-- <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table> -->\r\n<!-- </div> -->\r\n<!--end::Col-->\r\n<!-- </div> -->\r\n<!--end::Row-->","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\n\r\n@Component({\r\n selector: 'lib-chip-select',\r\n templateUrl: './chip-select.component.html',\r\n styleUrl: './chip-select.component.scss'\r\n})\r\nexport class ChipSelectComponent implements OnInit, OnChanges {\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n \r\n @Input() items: any\r\n @Input() searchField:any[]\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n @Input() badgeValue: string\r\n @Input() searchKey: any;\r\n \r\n @Output() selected = new EventEmitter<any>()\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n \r\n \r\n constructor(private cd: ChangeDetectorRef, private authService: ManageUsersService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e)=>{ \r\n if(e !== this.instanceId){ \r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n if (changes['items'] && this.items?.length) {\r\n this.initializeItems();\r\n }\r\n \r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue)) { \r\n this.updateSelectedValues();\r\n }\r\n }\r\n \r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n \r\n updateSelectedValues() { \r\n this.filteredValues?.forEach((filteredItem: any) => {\r\n filteredItem.isSelected = false;\r\n });\r\n \r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n }\r\n \r\n openDropdown(event: any) {\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n \r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event?.target?.value.toLowerCase();\r\n this.filteredValues = this.items?.filter((item: any) => \r\n this.searchField.some(field => item[field]?.toLowerCase().includes(searchTerm.toLowerCase()))\r\n );\r\n // this.filteredValues = this.items?.filter((item: any) =>\r\n // item[this.searchField]?.toLowerCase().includes(searchTerm)\r\n // );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n \r\n onSelect(event: any, item: any) { \r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item ); \r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element:any) => {\r\n if(element[this.idField] !== item[this.idField]){\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n \r\n }\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n \r\n }\r\n \r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n \r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.selectedValues = [];\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n \r\n \r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n \r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n \r\n removeBadge(data:any, index:any) {\r\n // this.removed.emit([data._id])\r\n this.selectedValues = this.selectedValues.reduce((acc: any[], item: any) => {\r\n if (item._id !== data._id) {\r\n acc.push(item);\r\n }\r\n return acc;\r\n }, []);\r\n this.emitSelectedValues(this.selectedValues);\r\n this.updateSelectedValues();\r\n }\r\n\r\n}\r\n","<div class=\"chip-box\">\r\n <div class=\"outer-container d-flex align-items-center position-relative w-100\">\r\n <div class=\"input-container form-control\">\r\n <ng-container *ngFor=\"let item of selectedValues;let i=index\">\r\n <span *ngIf=\"i <= 9\" class=\"chip\">\r\n <span class=\"me-3\">{{item?.[searchKey[0]] || item?.[searchKey[1]]}}</span>\r\n <span (click)=\"removeBadge(item,i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <span *ngIf=\"selectedValues?.length > 9\" class=\"chip\"> +{{selectedValues?.length - 9}}</span>\r\n <input style=\"min-height: 44px;\" type=\"text\" class=\"form-control dropdown-input ps-3 me-3\" [(ngModel)]=\"searchValue\" (click)=\"openDropdown($event)\" (input)=\"onInput($event)\" id=\"searchInput\">\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-chip dropdown\" >\r\n <!-- <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div> -->\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\">\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n <!-- {{item[searchKey[0]] || item?.[searchKey[1]]}} -->\r\n {{item[searchField[0] || item?.[searchField[1]]]}}\r\n </span> <span class=\"badge-value ms-5\">\r\n {{item[badgeValue]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { Component, ChangeDetectorRef, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, Subscription, takeUntil, debounceTime, distinctUntilChanged, } from \"rxjs\";\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { FormControl } from '@angular/forms';\r\n\r\ndeclare var $: any;\r\n@Component({\r\n selector: 'lib-teams-creation',\r\n templateUrl: './teams-creation.component.html',\r\n styleUrl: './teams-creation.component.scss'\r\n})\r\nexport class TeamsCreationComponent implements OnInit, OnDestroy {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n @ViewChild('afterValidation') afterValidation: any;\r\n @ViewChild('confirmDelete') confirmDelete: any;\r\n private readonly destroy = new Subject();\r\n searchInput = new FormControl(\"\");\r\n excelError: any;\r\n excelData: any = []\r\n @Input() teamData: any;\r\n @Input() type: any;\r\n @Input() teamsUsers: any;\r\n teamleadList: any[] = [];\r\n userList: any[] = [];\r\n selectedTeam: any = [];\r\n selectedUsers: any = [];\r\n $headerFilters: any;\r\n teamName: any;\r\n isEdit: boolean = false\r\n description: any;\r\n fileerror: boolean = false\r\n uploadPopUp: any;\r\n constructor(private ts: ToastService, private router: Router, public activeModal: NgbActiveModal,\r\n private userService: ManageUsersService, public gs: GlobalStateService, private cd: ChangeDetectorRef,public modalService: NgbModal\r\n ) {\r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy.next(true);\r\n this.destroy.complete();\r\n\r\n }\r\n ngOnInit(): void {\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n } else {\r\n this.$headerFilters = data;\r\n }\r\n }\r\n });\r\n this.getuserList();\r\n\r\n }\r\n getTeamData(data: any) {\r\n this.userService.editTeamsdata(data).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.isEdit = true\r\n if (res.data.length > 0) {\r\n this.teamName = res.data[0].teamName\r\n this.description = res.data[0].description\r\n this.selectedTeam = res.data[0].Teamlead\r\n this.selectedUsers = res.data[0].users\r\n\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.teamleadList)\r\n this.userList = this.userList.filter((item2: any) =>\r\n !this.selectedTeam.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.userList)\r\n\r\n }\r\n }\r\n })\r\n }\r\n getuserList() {\r\n\r\n let payload = {\r\n clientId: this.$headerFilters.client\r\n }\r\n this.userService.getallusersList(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamleadList = res.data.filter((e: any) => e.role != 'superadmin');\r\n this.userList = res.data.filter((e: any) => e.role != 'superadmin'); \r\n\r\n if (this.teamData) {\r\n this.getTeamData(this.teamData)\r\n }\r\n \r\n\r\n if (this.teamsUsers && this.teamsUsers.length > 0 && !this.isEdit) {\r\n console.log(this.teamsUsers)\r\n const updatedusers = this.teamsUsers.map((user: any) => {\r\n return {\r\n email: user.email,\r\n userId: user.userId\r\n };\r\n });\r\n this.selectedUsers = updatedusers\r\n this.markCheckedStores();\r\n }\r\n }\r\n })\r\n }\r\n\r\n filteredUsers: any;\r\n markCheckedStores(): void {\r\n const clusterStoreIds = this.teamsUsers?.map((user: any) => user._id);\r\n this.userList = this.userList?.map(user => {\r\n user.checked = clusterStoreIds.includes(user.userId);\r\n return user;\r\n });\r\n this.selectedUsers = this.userList.filter(user => user.checked);\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n \r\n }\r\n TeamUnselectAll(event:any){\r\n this.userList = [...this.userList,...event]\r\n console.log(\"teamlead unselectall\", this.userList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n\r\n TeamUnselect(event:any){\r\n this.userList.push(event)\r\n console.log(\"teamlead unselect\", this.userList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n UserUnselect(event:any){\r\n console.log(\"user unselect\", event)\r\n this.teamleadList.push(event)\r\n this.cd.detectChanges();\r\n\r\n }\r\n UserUnselectAll(event:any){\r\n this.teamleadList = [...this.teamleadList,...event]\r\n console.log(\"user unselectall\", this.teamleadList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n onTeamSelect(event: any) {\r\n console.log(\"teamlead select\", event)\r\n this.selectedTeam = event \r\n if(this.selectedTeam.length>0){\r\n this.userList = this.userList.filter((item2: any) =>\r\n !this.selectedTeam.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n }\r\n this.cd.detectChanges();\r\n }\r\n onUserSelect(event: any) { \r\n this.selectedUsers = event\r\n if(this.selectedUsers.length>0){\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.teamleadList)\r\n }\r\n \r\n \r\n }\r\n cancel() {\r\n this.teamsUsers = []\r\n this.activeModal.close()\r\n }\r\n\r\n onCreateTeam() {\r\n let admincount = this.selectedUsers.filter((user: any) => user.role == 'admin').length\r\n let leadUsercount = this.selectedTeam.filter((user: any) => user.role == 'user').length\r\n if (admincount > 0 && leadUsercount > 0) {\r\n return this.ts.getErrorToast('User cannot be team lead when admins as a users')\r\n } else {\r\n let payload: any = {\r\n clientId: this.$headerFilters.client,\r\n teamName: this.teamName,\r\n description: this.description,\r\n users: this.selectedUsers,\r\n Teamlead: this.selectedTeam,\r\n }\r\n if (this.isEdit) {\r\n payload.teamId = this.teamData?._id\r\n this.userService.updateTeam(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast(\"Team Updated Successfully\")\r\n this.activeModal.close('submit')\r\n }\r\n },(error: any) => {\r\n console.log(\"error\", error);\r\n\r\n this.ts.getErrorToast(error?.error?.error?.error || error?.error?.error)\r\n })\r\n } else {\r\n this.userService.createTeams(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast(\"Team Created Successfully\")\r\n this.activeModal.close('submit')\r\n }\r\n }, (error: any) => {\r\n console.log(\"error\", error);\r\n\r\n this.ts.getErrorToast(error?.error?.error?.error || error?.error?.error )\r\n })\r\n }\r\n }\r\n\r\n }\r\n\r\n afterUpload: any = [];\r\n uploadErrors: any = [];\r\n\r\n onUploadTemplate(e: any) {\r\n let data: any[] = [];\r\n let error: any = [];\r\n let sheetName: any = '';\r\n\r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.ts.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n\r\n data = utils.sheet_to_json(ws);\r\n this.excelData = data;\r\n sheetName = wb.SheetNames[0];\r\n };\r\n reader.readAsBinaryString(target.files[0]);\r\n reader.onloadend = async (e) => {\r\n\r\n if (sheetName != \"Users\") {\r\n this.fileerror = true\r\n this.ts.getErrorToast(\"Can you confirm whether the sheet name is Users ?\");\r\n return;\r\n }\r\n\r\n if (!data?.length) {\r\n this.ts.getErrorToast(\"Please upload a valid file.\");\r\n return\r\n }\r\n \r\n const requiredKeys = ['User Name/Email Id'] // Must always be present\r\n \r\n const isValid = data.some((item: any) => {\r\n const keys = Object.keys(item);\r\n const hasRequiredKeys = requiredKeys.every(key => keys.includes(key));\r\n const allKeysAreAllowed = keys.every(key => \r\n requiredKeys.includes(key)\r\n );\r\n return hasRequiredKeys && allKeysAreAllowed;\r\n });\r\n\r\n if (!isValid) {\r\n this.ts.getErrorToast('Please upload a valid file.');\r\n return;\r\n }\r\n\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n data?.forEach((element: any, index: any) => {\r\n if (element?.['User Name/Email Id'] == '' || element?.['User Name/Email Id'] == null) {\r\n error.push(`Invalid User Name/Email Id - C${index + 2}`)\r\n }\r\n \r\n processedArray.push({\r\n value: data[index]['User Name/Email Id'],\r\n })\r\n \r\n })\r\n\r\n if(this.fileerror){\r\n return\r\n }\r\n\r\n if (error.length) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: error\r\n }\r\n this.afterUplload(popupcontent)\r\n return;\r\n } else {\r\n this.userService\r\n .teamBulkUpload({\r\n users: processedArray,\r\n clientId: this.$headerFilters?.client ? this.$headerFilters?.client : this.$headerFilters?.clientId,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.excelError = []\r\n this.uploadErrors = []\r\n this.afterUpload = res?.data?.result;\r\n this.afterUplload();\r\n } else {\r\n this.ts.getErrorToast(\"The given User not associated with this brand\");\r\n }\r\n },\r\n error: (err: any) => {\r\n if (err.error.code == 400) { // this.modalService.dismissAll();\r\n if (err.error.error.duplicate) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: err.error.error.duplicate\r\n }\r\n this.uploadErrors = err.error.error;\r\n this.afterUplload(popupcontent)\r\n } else {\r\n this.uploadErrors = err.error.error;\r\n this.afterUplload()\r\n }\r\n this.inputFile.nativeElement.value = \"\";\r\n } else {\r\n this.ts.getErrorToast(err.error.error);\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n\r\n },\r\n });\r\n } \r\n };\r\n\r\n }\r\n }\r\n omitSpecialChar(event: KeyboardEvent) {\r\n const key = event.key;\r\n const regex = /^[a-zA-Z0-9 _-]$/;\r\n if (!regex.test(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n afterUplload(data?: any) {\r\n this.excelError = data;\r\n if (this.uploadPopUp) {\r\n this.uploadPopUp.dismiss();\r\n }\r\n this.uploadPopUp = this.modalService.open(this.afterValidation, { centered: true, backdrop: 'static', size: 'lg', windowClass: 'custom-modal-width' });\r\n }\r\n\r\n getStoreCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(data?.map((item: any) => item['User Name/Email Id']));\r\n return uniqueUserNames.size;\r\n\r\n }\r\nvalidateDetails(data?: any) {this.selectedUsers=[];\r\n if (this.afterUpload) {\r\n // Remove duplicates from the uploaded user list\r\n const uniqueUploadedUsers = this.afterUpload.filter(\r\n (item: any, index: number, self: any[]) =>\r\n index === self.findIndex((t: any) => t.userId === item.userId)\r\n );\r\n\r\n // Merge new uploaded users with existing selectedUsers (avoid clearing it)\r\n const combinedUsers = [...this.selectedUsers, ...uniqueUploadedUsers];\r\n\r\n // Final deduplicated list\r\n const finalUniqueUsers = combinedUsers.filter(\r\n (item: any, index: number, self: any[]) =>\r\n index === self.findIndex((t: any) => t.userId === item.userId)\r\n );\r\n\r\n this.selectedUsers = finalUniqueUsers;\r\n\r\n // Optional: If you have a userList and want to mark checkboxes\r\n if (this.userList) {\r\n this.userList = this.userList.map((user: any) => ({\r\n ...user,\r\n checked: this.selectedUsers.some((u: any) => u.userId === user.userId)\r\n }));\r\n }\r\n }\r\n}\r\n\r\n\r\n // validateDetails(data?: any) {\r\n // if (this.afterUpload) {\r\n // const uniqueUsers = this.afterUpload.filter((item: { userId: string }, index: number, self: { userId: string }[]) =>\r\n // index === self.findIndex((t) => t.userId === item.userId)\r\n // );\r\n // this.selectedUsers = uniqueUsers\r\n // }\r\n // }\r\n\r\n closeactivepopup() {\r\n this.modalService.dismissAll();\r\n }\r\n\r\n removedChip(data: any) {\r\n \r\n }\r\n\r\n preventClose(event: Event) {\r\n event.preventDefault(); // Stops the modal from closing\r\n}\r\n\r\n}\r\n","<div class=\"card pt-0 pb-3 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M20.5 23.6816C18.8425 23.6816 17.5 22.2133 17.5 20.4004C17.5 18.5875 18.8425 17.1191 20.5 17.1191C22.1575 17.1191 23.5 18.5875 23.5 20.4004C23.5 22.2133 22.1575 23.6816 20.5 23.6816ZM35.6483 23.6816C33.9908 23.6816 32.6483 22.2133 32.6483 20.4004C32.6483 18.5875 33.9908 17.1191 35.6483 17.1191C37.3058 17.1191 38.6483 18.5875 38.6483 20.4004C38.6483 22.2133 37.3058 23.6816 35.6483 23.6816ZM31.509 26.3066C31.509 28.4805 29.8965 30.2441 27.909 30.2441C25.9215 30.2441 24.309 28.4805 24.309 26.3066C24.309 24.1328 25.9215 22.3691 27.909 22.3691C29.8965 22.3691 31.509 24.1328 31.509 26.3066Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M20.0013 25.7559C17.7925 25.7559 16 27.7164 16 30.1322C16 30.6121 16.36 31.0059 16.7988 31.0059H24.8013H24.8275C23.8338 30.042 23.2038 28.6352 23.2038 27.0684C23.2038 26.7566 23.2263 26.449 23.275 26.1537C22.765 25.8994 22.1988 25.7559 21.6025 25.7559H20.0013Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M31.1725 31.0059H31.1987H39.2012C39.64 31.0059 40 30.6162 40 30.1322C40 27.7164 38.2075 25.7559 35.9987 25.7559H34.3975C33.8012 25.7559 33.235 25.8953 32.725 26.1537C32.77 26.4531 32.7963 26.7566 32.7963 27.0684C32.7963 28.6352 32.17 30.042 31.1725 31.0059Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M25.7988 32.3183C23.0388 32.3183 20.8 34.767 20.8 37.7857C20.8 38.3928 21.25 38.8809 21.8013 38.8809H34.1987C34.7537 38.8809 35.2 38.3887 35.2 37.7857C35.2 34.767 32.9613 32.3183 30.2013 32.3183H25.7988Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\" *ngIf=\"type === 'create'\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Create Team</a>\r\n <div class=\"sub-title\">Group multiple users to create a team for easier management</div>\r\n </div>\r\n <div class=\"col-md-12\" *ngIf=\"type === 'edit'\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit Team</a>\r\n <div class=\"sub-title\">Group multiple users to edit a team for easier management</div>\r\n </div>\r\n\r\n\r\n <div class=\"w-100 h-500px scroll\">\r\n <div class=\"mt-5\">\r\n <form (keydown.enter)=\"preventClose($event)\">\r\n <div class=\"row px-0 me-3\">\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-7\">\r\n <label for=\"teamName\" class=\"form-label\">Team Name<span class=\"mandtryclr ms-1\">*</span></label>\r\n <input type=\"text\" [(ngModel)]=\"teamName\" [ngModelOptions]=\"{standalone: true}\"\r\n class=\"form-control\" id=\"teamName\" autocomplete=\"off\" (keypress)=\"omitSpecialChar($event)\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"teamlead\" class=\"form-label\">Team Lead Email<span class=\"mandtryclr ms-1\">*</span></label>\r\n <lib-chip-select [items]=\"teamleadList\" [multi]=\"true\" [searchField]=\"['userName']\" [searchKey]=\"['email']\"\r\n [idField]=\"'userId'\" (selected)=\"onTeamSelect($event)\" (removed)=\"removedChip($event)\"\r\n [selectedValues]=\"selectedTeam\"></lib-chip-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"userlead\" class=\"form-label\">Select Users<span class=\"mandtryclr ms-1\">*</span>\r\n </label>\r\n <team-select [items]=\"userList\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userId'\" (selected)=\"onUserSelect($event)\" (deselected)=\"UserUnselect($event)\" (deselectedAll)=\"UserUnselectAll($event)\"\r\n [selectedValues]=\"selectedUsers\"></team-select>\r\n </div>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"line-bg \"><svg width=\"280\" height=\"2\" viewBox=\"0 0 280 2\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"280\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span><span class=\"mx-15 or-color\">Or </span> <span class=\"line-bg \"><svg width=\"280\"\r\n height=\"2\" viewBox=\"0 0 280 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"280\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span>\r\n </p>\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ol class=\"custom-ordered-list text-gray-400 fw-bold fs-6\">\r\n <li class=\"user-text\">Use the template to upload multiple users at once.</li>\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here -\r\n </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/teamsUploadTemplate.xlsx\"\r\n download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li>\r\n </ol>\r\n </div>\r\n </div>\r\n <div\r\n class=\"mt-3 ms-3 right-bar py-10 d-flex justify-content-center align-items-center flex-column\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_account_team_size_select_upload\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" (change)=\"onUploadTemplate($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_account_team_size_select_upload\" class=\" w-50 p-4\"><span\r\n class=\"fw-bold text-center w-100 fs-4\">\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\"\r\n stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4047_40566)\">\r\n <path\r\n d=\"M26.3333 26.3334L23 23M23 23L19.6666 26.3334M23 23V30.5M29.9916 28.325C30.8044 27.8819 31.4465 27.1808 31.8165 26.3322C32.1866 25.4837 32.2635 24.5361 32.0351 23.6389C31.8068 22.7418 31.2862 21.9463 30.5555 21.3779C29.8248 20.8095 28.9257 20.5006 28 20.5H26.95C26.6977 19.5244 26.2276 18.6186 25.5749 17.8509C24.9222 17.0831 24.104 16.4732 23.1817 16.0672C22.2594 15.6612 21.2571 15.4695 20.2501 15.5066C19.243 15.5437 18.2575 15.8086 17.3676 16.2814C16.4777 16.7542 15.7066 17.4226 15.1122 18.2363C14.5177 19.0501 14.1155 19.988 13.9358 20.9795C13.756 21.9711 13.8034 22.9905 14.0743 23.9611C14.3452 24.9317 14.8327 25.8282 15.5 26.5834\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4047_40566\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"nodata-title\"><span class=\"click-upload cursor-pointer\">Click to\r\n upload</span>\r\n <!-- <span class=\"ms-2\">or drag and drop</span> -->\r\n </div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </span>\r\n </label>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5 mt-5\">\r\n <label for=\"userlead\" class=\"form-label\">Description (optional)</label>\r\n <textarea id=\"description\" [(ngModel)]=\"description\"\r\n [ngModelOptions]=\"{standalone: true}\" name=\"description\" class=\"form-control\"\r\n rows=\"5\" cols=\"50\" placeholder=\"Enter a description...\"></textarea>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"d-flex my-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" *ngIf=\"!isEdit\"\r\n (click)=\"onCreateTeam()\" [disabled]=\"!selectedUsers.length||!selectedTeam.length|| !teamName\">Create\r\n Team</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" *ngIf=\"isEdit\"\r\n (click)=\"onCreateTeam()\" [disabled]=\"!selectedUsers.length ||!selectedTeam.length||!teamName\">Update\r\n Team</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #afterValidation let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"card-title mt-3\"><span class=\"config-heading fw-semibold w-auto\">Add Users</span></div>\r\n </div>\r\n <div class=\"card-body popup-scroll pt-0\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{getStoreCounts(excelData)}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Total Records</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{excelData?.length}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Rows processed</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error w-100 error-heading' \r\n : 'fw-semibold w-100 config-heading'\">\r\n {{ uploadErrors?.doesNotExists?.length +uploadErrors?.duplicate?.length +uploadErrors?.inActive?.length || 0 }}\r\n </div>\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error mt-1 excel-error' \r\n : 'fw-semibold subtitle mt-1'\">\r\n Error\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!excelError\" class=\"table-header mt-5\" style=\"font-weight: 400;\">\r\n <div >You're about to add {{getStoreCounts(excelData)}} {{getStoreCounts(excelData) > 1 ? 'Users' : 'User'}}. Are you sure want to proceed?</div>\r\n \r\n </div>\r\n <div *ngIf=\"excelError?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Invalid Details !</div>\r\n <div class=\"subtitle mt-5\">Please provide correct information.</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of excelError?.error; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.doesNotExists?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">User doesn't exists !</div>\r\n <!-- <div class=\"subtitle mt-5\">Please provide correct information.</div> -->\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.doesNotExists; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.duplicate?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Duplicate records found !</div>\r\n <!-- <div class=\"subtitle mt-5\">Please provide correct information.</div> -->\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.duplicate; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.inActive?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">User is inactive !</div>\r\n <!-- <div class=\"subtitle mt-5\">Please provide correct information.</div> -->\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.inActive; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify-content-end flex-wrap gap-2 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"closeactivepopup()\">Cancel</button>\r\n <button *ngIf=\"!excelError\" class=\"btn btn-md py-3 btn-default ms-3 btn-primary\" (click)=\"validateDetails();model.close()\">Proceed</button>\r\n <button *ngIf=\"excelError\" class=\"btn py-3 btn-md btn-default ms-3 btn-danger\" (click)=\"file1.click()\">Reupload</button>\r\n <input style=\"display: none;\" #file1 type=\"file\" id=\"kt_account_team_size_select_upload\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUploadTemplate($event)\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\"\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\n\r\n@Component({\r\n selector: \"lib-roles-permission-table\",\r\n templateUrl: \"./roles-permission-table.component.html\",\r\n styleUrl: \"./roles-permission-table.component.scss\",\r\n})\r\nexport class RolesPermissionTableComponent implements OnInit,OnDestroy {\r\n @Output() dataEvent = new EventEmitter<string>();\r\n\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean;\r\n noData: boolean;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n userCount: number;\r\n roleName: string;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n public gs: GlobalStateService,\r\n private userService: UserService,\r\n private excelService: ExcelService,\r\n private modalService:NgbModal\r\n ) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n this.userService.rolesComms.subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n console.log(data)\r\n this.userType = data.userType\r\n this.roleName = data.role.roleName;\r\n }\r\n }\r\n })\r\n }\r\n \r\n ngOnInit() {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n this.$headerFilters = data;\r\n }\r\n }\r\n });\r\n this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe({\r\n next:(type:any)=>{\r\n this.userType = (this.userType=='Tango User') ? 'tango' : 'client';\r\n if(this.$headerFilters && this.$headerFilters?.client) {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n role: this.roleName\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n }\r\n\r\n backToUser() {\r\n const dataToUser = \"\";\r\n this.userService.dataSubject.next((this.userType =='tango') ? 'Tango User' : 'Brand User');\r\n this.dataEvent.emit(dataToUser);\r\n }\r\n\r\n searchData() {\r\n if (this.searchValue) {\r\n this.userList_req.searchValue = this.searchValue;\r\n } else {\r\n delete this.userList_req[\"searchValue\"];\r\n }\r\n this.loadTable();\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = pageSize;\r\n this.pagination.limit = pageSize;\r\n this.loadTable();\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n \r\n loadTable() {\r\n this.loading = true;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.loading=false;\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n this.userCount = res.data.count;\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n ...(this.searchValue != \"\"\r\n ? { searchValue: this.searchValue }\r\n : {}),\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n this.changeDetector.detectChanges();\r\n } else {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n }\r\n },\r\n error: (err:any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n exportXLSX() {\r\n if (this.pagination.totalCount > 10000) {\r\n Swal.fire({\r\n title: \"Export Failed!\",\r\n heightAuto: false,\r\n icon: \"error\",\r\n html: `Looks Like the Data Is Huge, You Can Select a Smaller Date Range, or Please Reach Out to Tango <a href=\"${this.supportEmail}\">${this.supportEmail}</a> for Further Assistance.`,\r\n showCloseButton: true,\r\n });\r\n return;\r\n }\r\n let excelData: any = [];\r\n var req: any = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userList_req.userType,\r\n role:this.userList_req.role\r\n };\r\n this.userService.getUserList(req).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.data && res.data.result && res.data.result.length) {\r\n res.data.result.forEach((element: any) => {\r\n excelData.push({\r\n UserName: element.userName,\r\n Email: element.email,\r\n StoreAssigned: element?.Assigned,\r\n });\r\n });\r\n this.excelService.exportAsExcelFile(excelData, \"User\");\r\n }\r\n },\r\n error: () => {},\r\n complete: () => {},\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n users(type: any,user?: any) {\r\n // const data = \"add stores\";\r\n // this.dataTouserlist.emit(data);\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n });\r\n }\r\n}\r\n","<div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-3\">\r\n <div class=\"d-flex align-items-center card-title flex-grow-1\">\r\n <!--begin::Avatar-->\r\n <div class=\"symbol symbol-45px me-3\">\r\n <button type=\"button\" (click)=\"backToUser()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M16.3333 9.99996H4.66663M4.66663 9.99996L10.5 15.8333M4.66663 9.99996L10.5 4.16663\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> </button>\r\n </div>\r\n <!--end::Avatar-->\r\n\r\n <!--begin::Info-->\r\n <div class=\"d-flex flex-column\">\r\n <span *ngIf=\"roleName !=='superadmin'\" class=\"card-label\">{{roleName | titlecase}}</span>\r\n <span *ngIf=\"roleName ==='superadmin'\" class=\"card-label\">Super Admin</span>\r\n <span class=\"text-sub mb-2\">{{userCount || 0}} users in this role</span>\r\n </div>\r\n <!--end::Info-->\r\n </div>\r\n @if (!loading && !noData) {\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n @if ((gs.userAccess |async)?.Global_User_isEdit) {\r\n <button type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n @if (!loading && !noData) {\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Users</th>\r\n <th>Email</th>\r\n <th>Stores Assigned</th>\r\n <th class=\"text-end\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td>{{user?.assigned || 0}}</td>\r\n\r\n <td class=\"text-end\">\r\n <span (click)=\"users('view',user)\" class=\"mx-6 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- <span class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3 4.99996H4.66667M4.66667 4.99996H18M4.66667 4.99996V16.6666C4.66667 17.1087 4.84226 17.5326 5.15482 17.8451C5.46738 18.1577 5.89131 18.3333 6.33333 18.3333H14.6667C15.1087 18.3333 15.5326 18.1577 15.8452 17.8451C16.1577 17.5326 16.3333 17.1087 16.3333 16.6666V4.99996H4.66667ZM7.16667 4.99996V3.33329C7.16667 2.89127 7.34226 2.46734 7.65482 2.15478C7.96738 1.84222 8.39131 1.66663 8.83333 1.66663H12.1667C12.6087 1.66663 13.0326 1.84222 13.3452 2.15478C13.6577 2.46734 13.8333 2.89127 13.8333 3.33329V4.99996M8.83333 9.16663V14.1666M12.1667 9.16663V14.1666\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span> -->\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n } @else if (loading) {\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else if (noData) {\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit ,EventEmitter, Output, ViewChild, ElementRef} from '@angular/core';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { AssignStorePopupComponent } from \"../assign-store-popup/assign-store-popup.component\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged, Observable } from \"rxjs\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { FormControl } from \"@angular/forms\";\r\n// import { AlertPopupComponent } from '../user-table/alert-bulpopup/alert-popup.component';\r\nimport { AlertPopupComponent } from '../user-table/alert-popup/alert-popup.component';\r\nimport { AddUsersComponent } from '../../../components-v2/add-users/add-users.component';\r\nimport { TeamsCreationComponent } from '../../../components-v2/teams-creation/teams-creation.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n// import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport * as CryptoJS from 'crypto-js';\r\n\r\nconst SECRET_KEY = CryptoJS.enc.Utf8.parse(\r\n CryptoJS.SHA256(\"t@ng0-ret@il-@pi-v3\")\r\n .toString(CryptoJS.enc.Base64)\r\n .substring(0, 32)\r\n);\r\n@Component({\r\n selector: 'lib-brand-user',\r\n templateUrl: './brand-user.component.html',\r\n styleUrl: './brand-user.component.scss'\r\n})\r\nexport class BrandUserComponent implements OnInit,OnDestroy {\r\n @Output() dataToParent = new EventEmitter<string>();\r\n // @Output() dataTouserlist: EventEmitter<string> = new EventEmitter<string>();\r\n @ViewChild('bulkUpload') bulkUpload: any;\r\n @ViewChild(\"inputFile1\") inputFile1: ElementRef;\r\n @ViewChild('afterValidation') afterValidation: any;\r\n receivedData:any='';\r\n userData: string;\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private readonly destroy$ = new Subject();\r\n roles: any;\r\n fileError: boolean = false;\r\n stores: any =[];\r\n rolesCount: any;\r\n SelectedTab: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n userInfo: any;\r\n constructor(\r\n public modalService: NgbModal,private pageInfo: PageInfoService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n // public activeModal: NgbActiveModal,\r\n private userService: UserService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n }); \r\n }\r\n\r\n // must match backend\r\n \r\ndecrypt(encryptedText: string): string {\r\n const [ivHex, encrypted] = encryptedText.split(':');\r\n\r\n const iv = CryptoJS.enc.Hex.parse(ivHex);\r\n const ciphertext = CryptoJS.enc.Hex.parse(encrypted);\r\n\r\n const cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext });\r\n\r\n const decrypted = CryptoJS.AES.decrypt(cipherParams, SECRET_KEY, {\r\n iv: iv,\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7\r\n });\r\n\r\n return decrypted.toString(CryptoJS.enc.Utf8);\r\n}\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs : any[]=[];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n}\r\n ngOnInit() {\r\n this.userInfo = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n \r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next:(data:any)=>{\r\n if(data === null ) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n this.userData = \"client\";\r\n this.userType = \"client\";\r\n if(userData?.clientId){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n this.setPageData();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.userData = \"client\";\r\n this.userType = \"client\";\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n this.setPageData();\r\n } \r\n }\r\n });\r\n\r\n \r\n }\r\n getMaskedValue(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || !value.includes('@')) return '';\r\n\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(5, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n getMaskedMobile(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || value.length <= 4) return '*'.repeat(value.length);\r\n \r\n const first2 = value.slice(0, 2);\r\n const last2 = value.slice(-2);\r\n const maskedMiddle = '*'.repeat(value.length - 4);\r\n \r\n return `${first2}${maskedMiddle}${last2}`;\r\n }\r\n \r\n searchData() {\r\n this.pagination.offset =1;\r\n this.pagination.limit =10;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n }\r\n users(type: any,user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n if(result ==='submit'){\r\n this.searchValue ='';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userService.dataSubject.next(this.userData);\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n }\r\n });\r\n }\r\n Viewusers(type: any, user?: any) {\r\n let modalOptions: any = {\r\n centered: true,\r\n size: 'lg'\r\n };\r\n if (user.role === 'admin' && user.isActive == true && this.gs?.userAccess?.value?.Global_User_isEdit ) {\r\n modalOptions.backdrop = 'static';\r\n }\r\n \r\n const modalRef = this.modalService.open(AddUsersComponent, modalOptions);\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n // searchData() {\r\n // this.loadTable();\r\n // }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType, \r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.createTeam = false;\r\n this.selectedUsers = [];\r\n this.selectAllChecked =false;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType, \r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.createTeam = false;\r\n this.selectedUsers = [];\r\n this.selectAllChecked =false;\r\n this.loadTable();\r\n }\r\n\r\n assignStore(user: any) {\r\n const modalRef = this.modalService.open(AssignStorePopupComponent, {\r\n centered: true,\r\n backdrop:'static',\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if(result ==='submit'){\r\n this.searchValue ='';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userService.dataSubject.next(this.userData);\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount =0;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n \r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.userService.changeMessage(this.pagination.limit);\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else { \r\n\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n exportXLSX() {\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n export:true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n \r\n \r\n\r\n }\r\n \r\n bulkAssignasxlsx() {\r\n this.modalService.open(this.bulkUpload,{centered: true})\r\n }\r\n\r\n addSingleUser() {\r\n \r\n }\r\n \r\n excelError: any;\r\n excelData: any = []\r\n validatedOutput: any = [];\r\n\r\n getStoreCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(data?.map((item: any) => item['Store Name/Store Id']));\r\n return uniqueUserNames.size;\r\n\r\n }\r\n\r\n getEmailCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(data?.map((item: any) => item['Email']));\r\n return uniqueUserNames.size;\r\n\r\n }\r\n\r\n onUpload1(e: any) {\r\n let data: any[];\r\n let error: any = [];\r\n let storeName: any = '';\r\n\r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.toastService.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile1.nativeElement.value = \"\";\r\n return;\r\n }\r\n\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile1.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n data = utils.sheet_to_json(ws);\r\n this.excelData = data;\r\n storeName = wb.SheetNames[0];\r\n };\r\n reader.readAsBinaryString(target.files[0]);\r\n reader.onloadend = async (e) => {\r\n\r\n if (storeName !== \"Users\") {\r\n this.toastService.getErrorToast(\"Can you confirm whether the sheet name is Users ?\");\r\n return;\r\n }\r\n\r\n if (!data?.length) {\r\n this.toastService.getErrorToast(\"Please upload a valid file.\");\r\n return\r\n }\r\n const requiredKeys = ['Store Name/Store Id','Email'] // Must always be present\r\n // const optionalKeys = ['userPhone', 'city'] : ['city'];\r\n \r\n const isValid = data.some((item: any) => {\r\n const keys = Object.keys(item);\r\n const hasRequiredKeys = requiredKeys.every(key => keys.includes(key));\r\n const allKeysAreAllowed = keys.every(key => \r\n requiredKeys.includes(key)\r\n // || optionalKeys.includes(key)\r\n );\r\n return hasRequiredKeys && allKeysAreAllowed;\r\n });\r\n\r\n if (!isValid) {\r\n this.toastService.getErrorToast('Please upload a valid file.');\r\n return;\r\n }\r\n\r\n data?.forEach((element: any, index: any) => {\r\n if (element?.Email) {\r\n element.Email = element?.Email.replace(/\\s/g, '');\r\n }\r\n if ( !element?.['Store Name/Store Id'] || element?.['Store Name/Store Id'] == '' || element?.['Store Name/Store Id'] == null) {\r\n error.push(`Invalid Store Name/Store Id - B${index + 2}`)\r\n }\r\n if (!element?.Email || element?.Email?.trim() == '' || element.Email == null) {\r\n error.push(`Invalid Email - A${index + 2}`)\r\n }\r\n if (element?.Email && !element.Email.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)) {\r\n error.push(`Invalid Email - A${index + 2}`)\r\n }\r\n })\r\n\r\n if (error.length) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: error\r\n }\r\n this.afterUplload(popupcontent)\r\n return;\r\n }\r\n \r\n const apiData = this.excelData.map((el: any) =>{\r\n return {store : el?.['Store Name/Store Id'],\r\n email : el?.Email}\r\n })\r\n\r\n this.userService\r\n .bulkUserAssign({\r\n data: apiData\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n if (res.status==='error'&&res.error.error.length) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: res.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile1.nativeElement.value = \"\";\r\n return;\r\n }else{\r\n this.afterUplload();\r\n this.validatedOutput = res?.data?.result;\r\n this.inputFile1.nativeElement.value = \"\";\r\n }\r\n }\r\n },\r\n error:(err:any)=> {\r\n if (err.error.code === 400) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error:err.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile1.nativeElement.value = \"\";\r\n } else {\r\n this.toastService.getErrorToast(err.error.error);\r\n this.inputFile1.nativeElement.value = \"\";\r\n }\r\n },\r\n });\r\n };\r\n // $(\"#kt_create_account_form_account_type_personal\")?.val(\"\");\r\n }\r\n }\r\n\r\n Reupload() {\r\n\r\n }\r\n\r\n proceedSubmit() {\r\n let payload = {data:this.validatedOutput} \r\n this.userService\r\n .assignData(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.toastService.getSuccessToast(`Stores Assigned to User Successfully!`);\r\n } else {\r\n this.toastService.getErrorToast(`Unable to Assign Stores to User!`)\r\n }\r\n this.modalService.dismissAll('submit');\r\n },\r\n error: () => {\r\n this.toastService.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.modalService.dismissAll();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n\r\n closeactivepopup() {\r\n this.modalService.dismissAll();\r\n }\r\n\r\n afterUplload(data?: any) {\r\n this.excelError = data;\r\n this.modalService.open(this.afterValidation, { centered: true, backdrop: 'static', size: 'lg', windowClass: 'custom-modal-width' })\r\n }\r\n\r\n userStatusChange(user: any, i: number) {\r\n const modalRef = this.modalService.open(AlertPopupComponent,{ centered: true, size: 'md',backdrop:\"static\" }); \r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if (result) {\r\n if (result ==='submit') {\r\n this.userService.updateUser({ email: user?.email, isActive: user.isActive}).subscribe({\r\n next:(res:any)=> {\r\n if(res && res.code==200) {\r\n if(user.isActive) {\r\n this.toastService.getSuccessToast('User Status Activated!');\r\n } else {\r\n this.toastService.getSuccessToast('User Status Deactivated!');\r\n }\r\n } else {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive=!user.isActive;\r\n }\r\n },\r\n error:()=>{\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive=!user.isActive;\r\n },\r\n complete:()=>{}\r\n })\r\n } else if(result ==='close') {\r\n this.userList[i].isActive=!user.isActive;\r\n }\r\n}\r\n})\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n getRoles() {\r\n var data = { \r\n userType: 'client',\r\n clientId: this.$headerFilters?.client\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n}\r\nuserDetials(role: any) {\r\n let obj ={\r\n role:role,\r\n userType :'Brand User',\r\n receivedData:\"Role Value\"\r\n }\r\n this.userService.rolesComms.next(obj);\r\n this.receivedData ='Role Value';\r\n}\r\nreceiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n}\r\n\r\nonSort(column: string) {\r\n this.userList_req.export = false;\r\n if (this.userList_req?.sortColumName === column) {\r\n this.userList_req.sortBy = this.userList_req.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.userList_req.sortColumName = column;\r\n this.userList_req.sortBy = 1;\r\n }\r\n this.loadTable()\r\n}\r\n\r\napplyFilters(event:any){\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.userList_req.offset = 1;\r\n this.userList_req.limit=10;\r\n this.userList_req.export = false;\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable()\r\n}\r\nselectAllChecked: boolean = false;\r\nselectedUsers: any[] = []; \r\ncreateTeam: boolean = false;\r\nonSelectAll() {\r\n this.selectAllChecked = !this.selectAllChecked; \r\n\r\n this.userList.forEach(user => {\r\n user.checked = this.selectAllChecked; \r\n });\r\n if (this.selectAllChecked) {\r\n this.selectedUsers = [...this.userList];\r\n this.createTeam = true;\r\n } else {\r\n this.selectedUsers = [];\r\n this.createTeam = false;\r\n }\r\n}\r\n\r\n\r\nonSelectedTeams(user: any,index:any) {\r\n user.checked = !user.checked;\r\n if (user.checked) {\r\n this.selectedUsers.push(user);\r\n } else if(user.checked ===false) {\r\n const storeIndex = this.selectedUsers.findIndex(selectedUser => selectedUser._id === user._id);\r\n if (storeIndex !== -1) {\r\n this.selectedUsers.splice(storeIndex, 1);\r\n }\r\n }\r\n this.selectAllChecked = this.userList.every(store => store.checked);\r\n this.createTeam = this.selectedUsers.length > 0;\r\n }\r\n\r\n createTeams(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg',backdrop:'static' }); \r\n modalRef.componentInstance.teamsUsers = this.selectedUsers;\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n this.selectAllChecked =false;\r\n this.createTeam = false;\r\n this.selectedUsers = []\r\n })\r\n }\r\n}","<div *ngIf=\"receivedData !=='Role Value'\">\r\n <div class=\"\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n </h3>\r\n <div class=\"card-toolbar rightcorner \">\r\n <div *ngIf=\"!createTeam\" class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n\r\n <button *ngIf=\"!loading && !noData\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n \r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" type=\"button\" (click)=\"bulkAssignasxlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><span class=\"ms-2\">Bulk Assign</span> </button>\r\n\r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\" type=\"button\" (click)=\"users('add')\"\r\n class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"createTeam\" class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\" (click)=\"createTeams()\"\r\n class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\" class=\"cursor-pointer\"><span\r\n class=\"inputcheck\"><input type=\"checkbox\" (click)=\"onSelectAll()\"\r\n [(ngModel)]=\"selectAllChecked\" class=\"cursor-pointer\"></span>\r\n\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'userName' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'email' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'mobileNumber' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th >Roles\r\n <!-- class=\"cursor-pointer\" (click)=\"onSort('role')\" -->\r\n <!-- <svg [ngClass]=\"userList_req?.sortColumName === 'role' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> -->\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Assigned To </th>\r\n <th style=\"line-height: 21px !important;\">As a Lead To </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\"><span class=\"inputcheck\"><input\r\n type=\"checkbox\" class=\"cursor-pointer mt-2\" [(ngModel)]=\"user.checked\"\r\n (click)=\"onSelectedTeams(user,i)\"></span></td>\r\n <td>{{user?.userName}}</td>\r\n <td>{{ getMaskedValue(user?.email, userInfo?.role) }}</td>\r\n <td>{{ getMaskedMobile(user?.mobileNumber, userInfo?.role) }}</td>\r\n <td *ngIf=\"user?.role ==='superadmin'\">Super Admin</td>\r\n <td *ngIf=\"user?.role !=='superadmin'\">{{user?.role | titlecase}}</td>\r\n <td><span class=\"badge badge-light-primary me-1\">{{user?.assignedStores||0}} Stores</span> <span class=\"badge badge-light-info\">{{user?.teamCount||0}} Teams</span></td>\r\n <td><span class=\"badge badge-light-purple me-1\">{{user?.clusterCount||0}} Clusters</span> <span class=\"badge badge-light-info\">{{user?.teamlead||0}} Teams</span></td>\r\n\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"mx-3 cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n @if ((gs.userAccess | async)?.Global_User_isEdit) {\r\n <span class=\"mx-3 cursor-pointer\" *ngIf=\"userInfo.role!=='user'\">\r\n <button type=\"button\" (click)=\"assignStore(user)\"\r\n [disabled]=\"!user?.isActive || user?.role ==='superadmin'\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span class=\"mx-2\">Assign</span>\r\n </button>\r\n </span>\r\n }\r\n <span class=\"form-check form-switch\" *ngIf=\"userInfo.role!=='user'\">\r\n <input class=\"form-check-input mt-3\" type=\"checkbox\" role=\"switch\" id=\"support\"\r\n [disabled]=\"!((gs.userAccess | async)?.Global_User_isEdit)\"\r\n (change)=\"userStatusChange(user,i)\" [(ngModel)]=\"userList[i].isActive\">\r\n @if (userList[i].isActive) {\r\n Active\r\n } @else {\r\n Deactive\r\n }\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<ng-template #bulkUpload let-modal>\r\n <div class=\"card-body flex-column p-9\">\r\n <div class=\"header-title\">Bulk Assign</div>\r\n <div class=\"d-flex justify-content-start align-items-center\">\r\n <div class=\"fw-bold text-gray-500 mt-6\">\r\n <ol class=\"custom-ordered-list text-gray-400 fw-bold px-5 fs-6\">\r\n <li class=\"user-text\">Use the template below to assign multiple users to multiple stores at once.</li>\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here - </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/BulkAssignTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li> \r\n </ol>\r\n </div>\r\n </div>\r\n <div class=\" w-100 right-bar d-flex justify-content-center align-items-center flex-column\" >\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal1\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\" value=\"personal1\"\r\n class=\"btn-check\"\r\n (change)=\"onUpload1($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile1 />\r\n <label for=\"kt_create_account_form_account_type_personal1\" class=\" w-1-0 p-4\"><span\r\n class=\"fw-bold text-center w-100 fs-4\">\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\"\r\n stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4047_40566)\">\r\n <path\r\n d=\"M26.3333 26.3334L23 23M23 23L19.6666 26.3334M23 23V30.5M29.9916 28.325C30.8044 27.8819 31.4465 27.1808 31.8165 26.3322C32.1866 25.4837 32.2635 24.5361 32.0351 23.6389C31.8068 22.7418 31.2862 21.9463 30.5555 21.3779C29.8248 20.8095 28.9257 20.5006 28 20.5H26.95C26.6977 19.5244 26.2276 18.6186 25.5749 17.8509C24.9222 17.0831 24.104 16.4732 23.1817 16.0672C22.2594 15.6612 21.2571 15.4695 20.2501 15.5066C19.243 15.5437 18.2575 15.8086 17.3676 16.2814C16.4777 16.7542 15.7066 17.4226 15.1122 18.2363C14.5177 19.0501 14.1155 19.988 13.9358 20.9795C13.756 21.9711 13.8034 22.9905 14.0743 23.9611C14.3452 24.9317 14.8327 25.8282 15.5 26.5834\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4047_40566\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"nodata-title mb-3\"><span class=\"click-upload cursor-pointer\">Click to\r\n upload</span>\r\n </div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </span>\r\n </label>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #afterValidation let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"card-title mt-3\"><span class=\"config-heading fw-semibold w-auto\">Bulk Assign</span></div>\r\n </div>\r\n <div class=\"card-body pt-0 popup-scroll\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{getEmailCounts(excelData)}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Total Records</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{excelData?.length}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Rows processed</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error w-100 error-heading' \r\n : 'fw-semibold w-100 config-heading'\">\r\n {{ excelError?.error?.length || 0 }}\r\n </div>\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error mt-1 excel-error' \r\n : 'fw-semibold subtitle mt-1'\">\r\n Error\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!excelError\" class=\"table-header mt-5\" style=\"font-weight: 400;\">\r\n <div >You're about to assign {{getEmailCounts(excelData)}} {{getEmailCounts(excelData) > 1 ? 'Users' : 'User'}}. Are you sure want to proceed?</div>\r\n \r\n </div>\r\n <div *ngIf=\"excelError\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Invalid Details !</div>\r\n <div class=\"subtitle mt-5\">Please provide correct information.</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of excelError?.error; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify-content-end flex-wrap gap-2 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"closeactivepopup()\">Cancel</button>\r\n <button *ngIf=\"!excelError\" class=\"btn btn-md py-3 btn-default btn-primary\" (click)=\"proceedSubmit()\">Proceed</button>\r\n <button *ngIf=\"excelError\" class=\"btn py-3 btn-md btn-default ms-3 btn-danger\" (click)=\"file1.click();\">Reupload</button>\r\n <input style=\"display: none;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUpload1($event)\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { AddUsersComponent } from '../add-users/add-users.component';\r\nimport { UserService } from '../../services/user.service';\r\ndeclare var $: any;\r\n@Component({\r\n selector: 'lib-users-list',\r\n templateUrl: './users-list.component.html',\r\n styleUrl: './users-list.component.scss'\r\n})\r\nexport class UsersListComponent implements OnInit {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n @Output() dataToParent = new EventEmitter<string>();\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Configuration\", isAdd: false },\r\n { name: \"invoice\", isAdd: false },\r\n { name: \"billing\", isAdd: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Eye\",\r\n modules: [\r\n { name: \"stores\", isAdd: false, isEdit: false },\r\n { name: \"users\", isAdd: false, isEdit: false },\r\n { name: \"camera\", isAdd: false, isEdit: false },\r\n { name: \"zone\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Trax\",\r\n modules: [\r\n { name: \"store\", isAdd: false, isEdit: false },\r\n { name: \"users\", isAdd: false, isEdit: false },\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Admin\",\r\n modules: [\r\n { name: \"Lead Approval\", isAdd: false },\r\n { name: \"invoice Approval\", isAdd: false },\r\n { name: \"Edit billing\", isAdd: false },\r\n { name: \"Ticket Configuration\", isAdd: false },\r\n { name: \"Ticket Assigning\", isAdd: false },\r\n ]\r\n },\r\n ];\r\n userListData: any;\r\nconstructor(private ts: ToastService,private router: Router,public modalService: NgbModal,private userService: UserService){\r\n\r\n \r\n}\r\n\r\n\r\n\r\nngOnInit() {\r\n this.userService.currentMessage.subscribe((message:any) =>{\r\n this.userListData = message;\r\n\r\n })\r\n \r\n}\r\nonUpload(e: any) {\r\n alert('in')\r\n let data: any[];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n // this.ts.getErrorToast('Please Upload the Valid File');\r\n return;\r\n }\r\n data = utils.sheet_to_json(ws);\r\n };\r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n errMsgs.push(this.validateField(data[i].UserName, \"User name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].Email, \"Email\", i, this.emailRegex)\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].Contact,\r\n \"Contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n errMsgs.push(this.validateField(data[i].Role, \"Role\", i));\r\n }\r\n\r\n errMsgs = errMsgs.filter((x) => x != null);\r\n if (errMsgs.length > 0) {\r\n let errors = errMsgs.join(\"<br>\");\r\n \r\n return;\r\n }\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n userName: data[i].UserName,\r\n email: data[i].Email,\r\n mobileNumber: data[i].Contact.toString(),\r\n role: data[i].Role,\r\n rolespermission:this.permissionArray\r\n });\r\n }\r\n // this.userService\r\n // .userBulkUpload(\r\n // { \r\n // users: processedArray, \r\n // userType: this.userType, \r\n // ...(this.userType=='client') ? {clientId: this.$headerFilters.client } : {}\r\n // }\r\n // )\r\n // .subscribe({\r\n // next: (res: any) => {\r\n // if (res.code == 200) {\r\n // this.activeModal.close('submit');\r\n // this.ts.getSuccessToast('Users have been uploaded Successfully!');\r\n // }\r\n // },\r\n // error: (error: any) => {\r\n // console.log(error)\r\n // if (error) {\r\n // this.ts.getErrorToast(error.error.error ? error.error.error:'Unable to create multiple Users!');\r\n // // } else {\r\n // // this.ts.getErrorToast('Unable to create multiple Users!');\r\n // }\r\n // },\r\n // });\r\n };\r\n $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }\r\n}\r\nvalidateField(\r\n value: string | undefined | null | number,\r\n fieldName: string,\r\n row: number,\r\n regex?: RegExp\r\n): string | null {\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n const defaultValue = `please enter the ${fieldName\r\n .toLowerCase()\r\n .replace(/\\b\\w/g, (l) => l.toUpperCase())}`;\r\n if (!value) {\r\n return `Please enter ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (typeof value == \"string\") {\r\n if (value.trim() === defaultValue.trim()) {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (regex && !regex.test(value.trim())) {\r\n return `Please enter valid ${fieldName.toLowerCase()} in row ${\r\n row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n}\r\naddSingleUser(){\r\n let obj = {\r\n label: 'add',\r\n }\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.data = obj;\r\n modalRef.result.then((result) => {\r\n })\r\n}\r\n\r\nusers(type:any){\r\n\r\n}\r\nonSort(type:any){\r\n\r\n}\r\nassignStore(){\r\n\r\n}\r\nuserCount: string;\r\n\r\nreceiveData(data: string) {\r\n this.userCount = data; // Store data from the child\r\n this.dataToParent.emit(this.userCount ); \r\n}\r\n}\r\n","\r\n <div *ngIf=\"userListData === 0\" class=\"card-body d-flex flex-center flex-column p-9\">\r\n \r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 24V32M24 28H32M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n \r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\"> Upload to add users </a>\r\n \r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ul class=\"text-gray-400 fw-bold fs-6\">\r\n <!-- <li class=\"user-text\">Use the template to upload multiple users at once.</li> -->\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here - </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/UsersTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li>\r\n \r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-wrap mb-5\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\"\r\n (change)=\"onUpload($event)\" value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline bg-primary btn-outline-default rounded-3 w-100 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"text-white mx-2 single-user\">Add Multiple Users</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"mx-2 orval\">Or </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"addSingleUser()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-100 p-4 mt-3\"><span class=\"fw-bold fs-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M17.1663 17.5V15.8333C17.1663 14.9493 16.8152 14.1014 16.19 13.4763C15.5649 12.8512 14.7171 12.5 13.833 12.5H7.16634C6.28229 12.5 5.43444 12.8512 4.80932 13.4763C4.1842 14.1014 3.83301 14.9493 3.83301 15.8333V17.5M13.833 5.83333C13.833 7.67428 12.3406 9.16667 10.4997 9.16667C8.65873 9.16667 7.16634 7.67428 7.16634 5.83333C7.16634 3.99238 8.65873 2.5 10.4997 2.5C12.3406 2.5 13.833 3.99238 13.833 5.83333Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-2 single-user fw-bold\">Add Single User</span></span></label>\r\n \r\n </div>\r\n </div>\r\n\r\n<lib-brand-user *ngIf=\"userListData !== 0\" (dataToParent)=\"receiveData($event)\"></lib-brand-user>\r\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'lib-action-popup',\r\n templateUrl: './action-popup.component.html',\r\n styleUrl: './action-popup.component.scss'\r\n})\r\nexport class ActionPopupComponent {\r\n @Input() teamData:any;\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n cancel(){\r\n this.activeModal.close('close');\r\n }\r\n\r\n onSubmit(){\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEE4E2\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FEF3F2\" stroke-width=\"8\"/>\r\n <path d=\"M28 24V28M28 32H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\" stroke=\"#D92D20\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Delete {{teamData?.teamName}} team?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Are you sure you want to delete this team? This action cannot be undone.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onSubmit()\">Delete</button> \r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>","\r\nimport { ChangeDetectorRef, Component,Input, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ExcelService } from '../../services/excel.service';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUsersComponent } from '../add-users/add-users.component';\r\nimport { TeamsCreationComponent } from '../teams-creation/teams-creation.component';\r\n@Component({\r\n selector: 'lib-viewteams-list',\r\n templateUrl: './viewteams-list.component.html',\r\n styleUrl: './viewteams-list.component.scss'\r\n})\r\nexport class ViewteamsListComponent implements OnInit {\r\n @Input() teamData: any;\r\n $headerFilters: any;\r\n searchValue: any;\r\n viewteamsList: any = [];\r\n reqdata: any = {}\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n viewTeams:boolean =true\r\n private readonly destroy$ = new Subject();\r\n selectedTeam: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n leadData: any=[];\r\n\r\n\r\n constructor(private changeDetector: ChangeDetectorRef, public userService: ManageUsersService,\r\n public gs: GlobalStateService, private excelService: ExcelService,public modalService: NgbModal,\r\n ) {\r\n }\r\n users:any;\r\n ngOnInit() {\r\n setTimeout(() => {\r\n this.users = JSON.parse(localStorage.getItem('user-info') || '{}')\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n if (userData?.clientId) {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n TeamId:this.teamData?._id,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n TeamId:this.teamData?._id,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n }, 100);\r\n\r\n\r\n }\r\n\r\n getMaskedValue(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || !value.includes('@')) return '';\r\n\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(3, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n getMaskedMobile(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || value.length <= 4) return '*'.repeat(value.length);\r\n \r\n const first2 = value.slice(0, 2);\r\n const last2 = value.slice(-2);\r\n const maskedMiddle = '*'.repeat(value.length - 4);\r\n \r\n return `${first2}${maskedMiddle}${last2}`;\r\n }\r\n exportXLSX() {\r\n let obj = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n export:true,\r\n TeamId:this.teamData?._id,\r\n searchValue: this.searchValue,\r\n\r\n };\r\n this.userService\r\n .getviewteamsListExport(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Teams View')\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n \r\n });\r\n }\r\n\r\n Viewusers(type: any,user?: any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.componentInstance.operationType ='view';\r\n\r\n modalRef.result.then((result) => {\r\n \r\n })\r\n }\r\n \r\n applyFilters(event:any){\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.reqdata.offset = 1;\r\n this.reqdata.limit=10;\r\n this.reqdata.export = false;\r\n this.reqdata.filterByRoles = this.filterByRoles;\r\n this.reqdata.filterByStatus = this.filterByStatus;\r\n this.loadTable()\r\n }\r\n\r\n\r\n onSort(column: string) {\r\n this.reqdata.export = false;\r\n if (this.reqdata?.sortColumName === column) {\r\n this.reqdata.sortBy = this.reqdata.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.reqdata.sortColumName = column;\r\n this.reqdata.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n backteamsList(){\r\n this.userService.setViewTeam(false);\r\n }\r\n loadTable() {\r\n this.viewteamsList =[];\r\n this.loading = true;\r\n this.noData = false;\r\n this.pagination.totalCount = 0;\r\n this.userService.getviewteamsList(this.reqdata).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.viewteamsList = res.data.result; \r\n this.leadData = res.data.teamlead\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = res?.data?.result?.length < 1 ? true : false;\r\n this.loading = false;\r\n } else {\r\n this.viewteamsList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.viewteamsList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.reqdata.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n onPageSizeChange(pageSize: number) {\r\n this.reqdata.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.reqdata.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n viewTeamsdata(data:any) {\r\n this.selectedTeam = data\r\n this.viewTeams = true\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n TeamId:this.teamData?._id,\r\n export: false\r\n };\r\n this.loadTable();\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false,\r\n TeamId:this.teamData?._id,\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n Configure(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.teamData = this.teamData;\r\n modalRef.componentInstance.type = 'edit';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n viewUser(data:any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = data;\r\n modalRef.componentInstance.type = 'view';\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n })\r\n }\r\n}\r\n","<div *ngIf=\"viewTeams\" class=\"card border-0 p-5\">\r\n <div class=\"card-header border-0 px-0\">\r\n <h3 class=\"card-title align-items-start d-flex align-items-center\">\r\n <span class=\"cursor-pointer\" (click)=\"backteamsList()\"> <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_1029_22185)\">\r\n <rect x=\"2\" y=\"1\" width=\"44\" height=\"44\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"43\" height=\"43\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M29.8334 22.9998H18.1667M18.1667 22.9998L24 28.8332M18.1667 22.9998L24 17.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_1029_22185\" x=\"0\" y=\"0\" width=\"48\" height=\"48\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1029_22185\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_1029_22185\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg></span>\r\n <div class=\"ms-3\">\r\n <div class=\"card-label mb-2\">{{teamData?.teamName}}</div>\r\n <div class=\"text-sub mb-2\">{{pagination?.totalCount ? pagination?.totalCount :'0'}} total users</div>\r\n </div>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n\r\n <button *ngIf=\"!loading && !noData\" type=\"button\"\r\n (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <button *ngIf=\"!loading && (!noData || leadData?.length > 0) && (gs.userAccess |async)?.Global_User_isEdit\" class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" \r\n (click)=\"Configure()\">Configure</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"border-0 px-0 d-flex\" *ngIf=\"leadData?.length\">\r\n <div class=\"d-flex mt-5 mx-5 w-100 overflow-auto\">\r\n <div class=\"p-3 pt-7 text-nowrap\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"users\">\r\n <path id=\"Icon\"\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n <span class=\"heading ms-2\">Lead By</span>\r\n </div>\r\n <div class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val1 ms-4\"\r\n *ngFor=\"let obj of leadData\">\r\n <span class=\"heading \">{{obj.userName}}</span>\r\n <span *ngIf=\"obj?.role\" class=\"blue-badge ms-2\">{{obj?.role | titlecase}}</span>\r\n <div class=\"sub-header mt-2\">{{getMaskedValue(obj.email,users?.role)}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0 mt-10\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Username\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'userName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'email' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'mobileNumber' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('role')\">Roles\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'role' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assignedStores')\">Stores Assigned\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'assignedStores' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\">Clusters\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'clusterCount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'clusterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamCount')\">Teams\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'teamCount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'teamCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n <!-- <th class=\"cursor-pointer\" (click)=\"onSort('description')\">Assigned Type\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'description' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'description' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th> -->\r\n <!-- <th style=\"line-height: 21px !important;\">Actions</th> -->\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of viewteamsList;let i=index;\">\r\n <tr>\r\n <!-- <td><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\"></span></td> -->\r\n <td>{{user?.userName}}</td>\r\n <td>{{getMaskedValue(user?.email,users.role)}}</td>\r\n <td>{{getMaskedMobile(user?.mobileNumber,users.role)}}</td>\r\n <td>{{user?.role |titlecase}}</td>\r\n <td>{{user?.assignedStores}}</td>\r\n <td>{{user?.clusterCount}}</td>\r\n <td>{{user?.teamCount}}</td>\r\n <td>\r\n <div class=\"d-flex\" (click)=\"Viewusers('view',user)\">\r\n <span class=\"cursor-pointer\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10C0.833374 10 4.16671 3.33334 10 3.33334C15.8334 3.33334 19.1667 10 19.1667 10C19.1667 10 15.8334 16.6667 10 16.6667C4.16671 16.6667 0.833374 10 0.833374 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5C11.3808 12.5 12.5 11.3807 12.5 10C12.5 8.6193 11.3808 7.50001 10 7.50001C8.61933 7.50001 7.50004 8.6193 7.50004 10C7.50004 11.3807 8.61933 12.5 10 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n </div>\r\n </td>\r\n <!-- <td>store</td> -->\r\n <!-- <td>\r\n <span class=\"me-3 cursor-pointer\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10.0002C0.833374 10.0002 4.16671 3.3335 10 3.3335C15.8334 3.3335 19.1667 10.0002 19.1667 10.0002C19.1667 10.0002 15.8334 16.6668 10 16.6668C4.16671 16.6668 0.833374 10.0002 0.833374 10.0002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5002C11.3808 12.5002 12.5 11.3809 12.5 10.0002C12.5 8.61945 11.3808 7.50016 10 7.50016C8.61933 7.50016 7.50004 8.61945 7.50004 10.0002C7.50004 11.3809 8.61933 12.5002 10 12.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n\r\n </td> -->\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"viewteamsList.length!==0\" [itemsPerPage]=\"pagination.limit\"\r\n [currentPage]=\"pagination.offset\" [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"d-flex justify-content-center align-items-center mb-2\">\r\n <img class=\"w-10\" src=\"assets/tango/Icons/no-record.svg\" alt=\"\">\r\n </div>\r\n <div class=\"text-center\">\r\n <span class=\"heading d-flex justify-content-center align-items-center\">No Users found</span>\r\n <div class=\"sub-header1 mt-1\">To add a user to this cluster, please click the</div>\r\n <div class=\"sub-header1\">configure button above</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component,ChangeDetectorRef, OnInit, EventEmitter, Output, ViewChild, ElementRef } from '@angular/core';\r\nimport { TeamsCreationComponent } from '../teams-creation/teams-creation.component';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal, NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ActionPopupComponent } from '../action-popup/action-popup.component';\r\nimport { ExcelService } from '../../services/excel.service';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\n@Component({\r\n selector: 'lib-teams-list',\r\n templateUrl: './teams-list.component.html',\r\n styleUrl: './teams-list.component.scss'\r\n})\r\nexport class TeamsListComponent implements OnInit {\r\n @Output() dataTo = new EventEmitter<any>();\r\n @ViewChild('tooltipContent') tooltipContent!: NgbTooltip;\r\n @ViewChild('tooltipContents') tooltipContents!: NgbTooltip;\r\n @ViewChild('inputFile') inputFile: ElementRef;\r\n @ViewChild('afterValidation') afterValidation: any;\r\n @ViewChild('confirmDelete') confirmDelete: any;\r\n\r\n showcreatebutton: boolean = false;\r\n excelError: any;\r\n excelData: any = []\r\n $headerFilters: any;\r\n searchValue: any;\r\n teamsList: any[] = [];\r\n reqdata: any = {}\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n viewTeams:boolean =false\r\n private readonly destroy$ = new Subject();\r\n selectedTeam: any;\r\n\r\n \r\n\r\n \r\n \r\n\r\n constructor(private changeDetector: ChangeDetectorRef, public userService: ManageUsersService, private excelService: ExcelService,\r\n public gs: GlobalStateService,private ts: ToastService,private router: Router,public modalService: NgbModal\r\n ) {\r\n\r\n }\r\n users:any;\r\n ngOnInit() {\r\n \r\n this.userService.setViewTeam(false);\r\n this.userService.viewTeams$.subscribe((value: boolean) => {\r\n this.viewTeams = value;\r\n if(value){\r\n this.loadTable()\r\n }\r\n });\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n if (userData?.clientId) {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n exportXLSX() {\r\n let obj = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n export:true,\r\n searchValue: this.searchValue,\r\n };\r\n this.userService\r\n .getTeamsListExport(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Teams ')\r\n \r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n \r\n });\r\n \r\n }\r\n\r\n getMaskedValue(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || !value.includes('@')) return '';\r\n\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(3, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n\r\n createTeam(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true,backdrop:'static', size: 'lg' }); \r\n modalRef.componentInstance.type = 'create'; \r\n modalRef.result.then((result) => {\r\n if (result) {\r\n this.viewTeams = false;\r\n this.showcreatebutton = false;\r\n this.loadTable();\r\n }\r\n })\r\n }\r\n\r\n openTeam() {\r\n this.showcreatebutton = true\r\n this.viewTeams = true\r\n }\r\n \r\n editTeamsdata(data:any){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true,backdrop:'static', size: 'lg' });\r\n modalRef.componentInstance.teamData = data;\r\n modalRef.componentInstance.type = 'edit';\r\n modalRef.result.then((result) => {\r\n if (result) {\r\n this.viewTeams = false;\r\n this.showcreatebutton = false;\r\n this.loadTable();\r\n }\r\n })\r\n }\r\n deleteTeam(data:any){\r\n const modalRef = this.modalService.open(ActionPopupComponent,{ centered: true, size: 'md',backdrop:\"static\" });\r\n modalRef.componentInstance.teamData = data;\r\n modalRef.result.then((result) => {\r\n if(result === 'submit'){\r\n this.userService.deleteTeam({teamId:data._id}).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast('Team Deleted Successfully')\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata.offset =1\r\n this.loadTable();\r\n }})\r\n }\r\n \r\n })\r\n }\r\n\r\n\r\n onSort(column: string) {\r\n this.reqdata.export = false;\r\n if (this.reqdata?.sortColumName === column) {\r\n this.reqdata.sortBy = this.reqdata.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.reqdata.sortColumName = column;\r\n this.reqdata.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n\r\n loadTable() {\r\n this.users = JSON.parse(localStorage.getItem('user-info') || '{}')\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount = 0;\r\n this.userService.getTeamsList(this.reqdata).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n if(res.data.result.length){\r\n this.teamsList = res.data.result;\r\n this.showcreatebutton = false \r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n this.dataTo.emit( this.pagination.totalCount); \r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n }else{\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.showcreatebutton = true\r\n this.noData = true;\r\n this.loading = false;\r\n }\r\n \r\n }else {\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.reqdata.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n onPageSizeChange(pageSize: number) {\r\n this.reqdata.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.reqdata.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n viewTeamsdata(data:any) {\r\n this.selectedTeam = data\r\n this.viewTeams = true;\r\n this.userService.setViewTeam(true);\r\n this.loading =false;\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n\r\n export: false\r\n };\r\n this.loadTable();\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n\r\n uploadErrors: any = [];\r\n processedArray: any = [];\r\n\r\n onUpload(e: any) {\r\n let data: any[] = [];\r\n let error: any = [];\r\n let storeName: any = '';\r\n this.processedArray = [];\r\n \r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.ts.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n \r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n data = utils.sheet_to_json(ws);\r\n this.excelData = data;\r\n storeName = wb.SheetNames[0];\r\n };\r\n \r\n reader.readAsBinaryString(target.files[0]);\r\n reader.onloadend = async (e) => {\r\n if (storeName !== \"teams\") {\r\n this.ts.getErrorToast(\"Can you confirm whether the sheet name is teams ?\");\r\n return false;\r\n }\r\n if (!data?.length) {\r\n this.ts.getErrorToast(\"Please upload a valid file\");\r\n return\r\n }\r\n\r\n const requiredKeys = ['Team Name','Lead Email','User Email/User Name'] // Must always be present\r\n // const optionalKeys = ['userPhone', 'city'] : ['city'];\r\n \r\n const isValid = data.some((item: any) => {\r\n const keys = Object.keys(item);\r\n const hasRequiredKeys = requiredKeys.every(key => keys.includes(key));\r\n const allKeysAreAllowed = keys.every(key => \r\n requiredKeys.includes(key)\r\n // || optionalKeys.includes(key)\r\n );\r\n return hasRequiredKeys && allKeysAreAllowed;\r\n });\r\n\r\n if (!isValid) {\r\n this.ts.getErrorToast('Please upload a valid file.');\r\n return;\r\n }\r\n\r\n data?.forEach((element: any, index: any) => {\r\n if (element?.['Lead Email']) {\r\n element['Lead Email'] = element?.['Lead Email'].replace(/\\s/g, '');\r\n }\r\n if (element?.['Team Name'] == '' || element?.['Team Name'] == null) {\r\n error.push(`Invalid Team Name - A${index + 2}`)\r\n }\r\n if (element?.['Team Name'] && /[^a-zA-Z0-9 _-]/.test(element['Team Name'])) {\r\n error.push(`Special characters are not allowed in team name - A${index + 2}`)\r\n }\r\n\r\n if (element?.['Lead Email'] == '' || element?.['Lead Email'] == null) {\r\n error.push(`Invalid Lead Email - B${index + 2}`)\r\n }\r\n if (element?.['Lead Email'] && !element?.['Lead Email'].match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)) {\r\n error.push(`Invalid Lead Email - B${index + 2}`)\r\n }\r\n if (element?.['User Email/User Name'] == '' || element?.['User Email/User Name'] == null) {\r\n error.push(`Invalid User Email/User Name - C${index + 2}`)\r\n }\r\n \r\n this.processedArray.push({\r\n teamName: data[index]['Team Name'],\r\n leadEmail: data[index]['Lead Email'],\r\n userName: data[index]['User Email/User Name']\r\n })\r\n \r\n })\r\n\r\n if (error.length) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: error\r\n }\r\n this.afterUplload(popupcontent)\r\n return;\r\n } else {\r\n this.userService\r\n .teamsBulkUpload({\r\n users: this.processedArray,\r\n clientId: this.$headerFilters?.client\r\n ? this.$headerFilters?.client\r\n : this.$headerFilters?.clientId,\r\n isChecked:true\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n if (res.status==='error'&&res.error.error.length) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: res.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n } else {\r\n \r\n this.afterUplload()\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n }\r\n },\r\n error: (err: any) => {\r\n if (err.error.code === 400) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error', \r\n error: err.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile.nativeElement.value = \"\";\r\n } else if (err.error.code === 500) {\r\n this.ts.getErrorToast(err.error.error)\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n this.inputFile.nativeElement.value = \"\";\r\n },\r\n });\r\n } \r\n \r\n \r\n };\r\n // $(\"#kt_create_account_form_account_type_personal\")?.val(\"\");\r\n }\r\n }\r\n\r\n selectAllChecked: boolean = false;\r\nselectedUsers: any[] = []; \r\n createcluster: boolean = false;\r\n \r\nonSelectAll() {\r\n this.selectAllChecked = !this.selectAllChecked; \r\n\r\n this.teamsList.forEach(user => {\r\n user.isChecked = this.selectAllChecked; \r\n this.clustersAllselect?.length ? this.clustersAllselect[user._id].isChecked = this.selectAllChecked : '';\r\n });\r\n if (this.selectAllChecked) {\r\n this.selectedUsers = [...this.teamsList];\r\n this.createcluster = true;\r\n } else {\r\n this.selectedUsers = [];\r\n this.createcluster = false;\r\n }\r\n}\r\n\r\n onSelectedTeam(user: any,index:any) {\r\n user.isChecked = !user.isChecked;\r\n this.clustersAllselect ? this.clustersAllselect[user._id].isChecked = user.isChecked : ''; \r\n if (user.isChecked) {\r\n this.selectedUsers.push(user);\r\n } else if (user.isChecked === false) {\r\n\r\n const storeIndex = this.selectedUsers.findIndex(selectedStore => selectedStore._id === user._id);\r\n if (storeIndex !== -1) {\r\n this.selectedUsers.splice(storeIndex, 1);\r\n }\r\n }\r\n this.selectAllChecked = this.teamsList.every(store => store.isChecked);\r\n this.createcluster = this.selectedUsers.length > 0;\r\n }\r\n\r\n clustersAllselect: any;\r\n\r\n selectAllClusters(value: any) {\r\n this.selectedUsers = [];\r\n value === 'selectAll' ? this.reqdata.isAll = true : this.reqdata.isAll = false;\r\n this.loading = true;\r\n this.noData = false;\r\n this.userService.getTeamsList(this.reqdata).subscribe({\r\n next: (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n if (value === 'selectAll') {\r\n this.clustersAllselect = res?.data?.result;\r\n Object.keys(this.clustersAllselect).forEach(key => {\r\n this.clustersAllselect[key].isChecked = true;\r\n }); \r\n \r\n this.teamsList?.forEach(obj => {\r\n if (this.clustersAllselect?.hasOwnProperty(obj._id)) {\r\n obj.isChecked = this.clustersAllselect[obj._id]?.isChecked;\r\n }\r\n this.selectedUsers.push(obj);\r\n });\r\n \r\n } else {\r\n Object.keys(this.clustersAllselect).forEach(key => {\r\n this.clustersAllselect[key].isChecked = false;\r\n });\r\n \r\n this.teamsList?.forEach(obj => {\r\n // if (this.clustersAllselect?.hasOwnProperty(obj._id)) {\r\n // obj.isChecked = this.clustersAllselect[obj._id]?.isChecked;\r\n // }\r\n obj.isChecked = false;\r\n this.selectedUsers = [];\r\n });\r\n }\r\n this.selectAllChecked = this.teamsList.every(store => store.isChecked);\r\n \r\n this.changeDetector.detectChanges();\r\n }\r\n },\r\n error: () => {\r\n \r\n },\r\n complete: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\ngetCheckedClusterCount(clusterMap: { [key: string]: any }): number {\r\n return Object.values(clusterMap).filter(item => item.isChecked === true).length;\r\n }\r\n \r\n teamId: any = [];\r\n\r\n DeleteAllTeam() {\r\n if (this.clustersAllselect) {\r\n this.teamId = Object.keys(this.clustersAllselect).filter(key => this.clustersAllselect[key].isChecked == true).map((key:any) => key)\r\n } else if (this.selectedUsers?.length) {\r\n this.teamId = this.selectedUsers.map((el: any) => el?._id)\r\n }\r\n let payload = {\r\n teamId: this.teamId\r\n }\r\n\r\n const modatRef = this.modalService.open(this.confirmDelete, { centered: true, size: 'md' });\r\n \r\n modatRef.closed.subscribe((result) => {\r\n if (result) {\r\n this.userService.deleteAllteams(payload).subscribe({\r\n next:(res:any)=> {\r\n if (res && res?.code == 200) {\r\n this.ts.getSuccessToast(res?.message);\r\n this.showcreatebutton = false;\r\n this.selectedUsers = [];\r\n this.loadTable();\r\n }\r\n },\r\n error:(err:any)=> {\r\n this.ts.getErrorToast(err?.error?.error)\r\n },\r\n }) \r\n }\r\n })\r\n }\r\n\r\n afterUplload(data?: any) {\r\n console.log('this.excelError',this.excelError)\r\n this.excelError = data;\r\n this.modalService.open(this.afterValidation, { centered: true, backdrop: 'static', size: 'lg', windowClass: 'custom-modal-width' })\r\n }\r\n\r\n getStoreCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(\r\n data?.map((item: any) => item['Team Name']?.toLowerCase())\r\n);\r\n return uniqueUserNames.size;\r\n\r\n }\r\n\r\n validateDetails() {\r\n \r\n this.userService\r\n .teamsBulkUpload({\r\n users: this.processedArray,\r\n clientId: this.$headerFilters?.client\r\n ? this.$headerFilters?.client\r\n : this.$headerFilters?.clientId\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast('Teams has been created successfully')\r\n this.modalService.dismissAll();\r\n this.viewTeams = false;\r\n this.loadTable();\r\n }\r\n },\r\n error: (err: any) => {\r\n if (err.error.code === 400) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error', \r\n error: err.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n } else if (err.error.code === 500) {\r\n this.modalService.dismissAll();\r\n this.ts.getErrorToast(err.error.error)\r\n }else{\r\n this.modalService.dismissAll();\r\n this.ts.getErrorToast(err.error.error)\r\n }\r\n this.inputFile.nativeElement.value = \"\";\r\n },\r\n });\r\n }\r\n\r\n closeactivepopup() {\r\n this.modalService.dismissAll();\r\n }\r\n\r\n}\r\n","<div>\r\n <div class=\"\" *ngIf=\"!loading && !viewTeams&&!showcreatebutton\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n </h3>\r\n <div class=\"card-toolbar rightcorner\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 \">\r\n <span *ngIf=\"!selectedUsers?.length\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"!selectedUsers?.length\" type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n\r\n\r\n <button *ngIf=\"!loading && !noData&& !selectedUsers?.length \" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline px-4 py-3 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd && teamsList.length>0 && !selectedUsers?.length\" type=\"button\" (click)=\"openTeam()\" class=\"btn btn-sm py-3 btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n <div *ngIf=\"selectedUsers?.length\" class=\"btn-delete cursor-pointer px-5 mx-2 rounded-3 text-nowrap\" (click)=\"DeleteAllTeam()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 4.99996H4.16667M4.16667 4.99996H17.5M4.16667 4.99996V16.6666C4.16667 17.1087 4.34226 17.5326 4.65482 17.8451C4.96738 18.1577 5.39131 18.3333 5.83333 18.3333H14.1667C14.6087 18.3333 15.0326 18.1577 15.3452 17.8451C15.6577 17.5326 15.8333 17.1087 15.8333 16.6666V4.99996H4.16667ZM6.66667 4.99996V3.33329C6.66667 2.89127 6.84226 2.46734 7.15482 2.15478C7.46738 1.84222 7.89131 1.66663 8.33333 1.66663H11.6667C12.1087 1.66663 12.5326 1.84222 12.8452 2.15478C13.1577 2.46734 13.3333 2.89127 13.3333 3.33329V4.99996M8.33333 9.16663V14.1666M11.6667 9.16663V14.1666\" stroke=\"#B42318\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Delete All</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"card-header border-0 pt-3 left-move\">\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 \">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n\r\n\r\n <button *ngIf=\"!loading && !noData \" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <button type=\"button\" (click)=\"createTeam()\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <div *ngIf=\"!loading && !noData && !viewTeams&&teamsList.length>0\" class=\"card-body p-0\">\r\n <div *ngIf=\"selectedUsers?.length\" class=\"alert-box\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"37\" height=\"36\" viewBox=\"0 0 37 36\" fill=\"none\">\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\"/>\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\"/>\r\n <g clip-path=\"url(#clip0_12293_6263)\">\r\n <path d=\"M25.1666 17.3866V18C25.1658 19.4376 24.7003 20.8364 23.8395 21.9878C22.9787 23.1393 21.7688 23.9816 20.3902 24.3892C19.0115 24.7968 17.5381 24.7479 16.1896 24.2497C14.841 23.7515 13.6897 22.8307 12.9072 21.6247C12.1248 20.4186 11.7531 18.992 11.8477 17.5575C11.9423 16.123 12.4981 14.7575 13.4321 13.6647C14.3662 12.5718 15.6284 11.8102 17.0307 11.4934C18.433 11.1766 19.9001 11.3215 21.2133 11.9066M25.1666 12.6666L18.4999 19.34L16.4999 17.34\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12293_6263\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(10.5 10)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span><span>{{selectedUsers.length === teamsList.length ? 'All ' : 'Totally '}}</span>{{selectedUsers.length}} {{ selectedUsers.length > 1 ? 'Clusters' : 'Cluster'}} on this page are selected.</span><span *ngIf=\"!clustersAllselect || getCheckedClusterCount(this.clustersAllselect) < pagination.totalCount\" class=\"selectAll\" (click)=\"selectAllClusters('selectAll')\">Select all {{pagination.totalCount}} Clusters filtered</span>\r\n <span *ngIf=\"clustersAllselect && getCheckedClusterCount(this.clustersAllselect) === pagination.totalCount\" class=\"selectAll\" (click)=\"selectAllClusters('unselect')\">Unselect all {{pagination.totalCount}} Clusters filtered</span>\r\n <span></span>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"cursor-pointer\"><span class=\"inputcheck\"><input type=\"checkbox\" (click)=\"onSelectAll()\" [(ngModel)]=\"selectAllChecked\"\r\n class=\"cursor-pointer\"></span>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamName')\">Team Name\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'teamName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'teamName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userscount')\">Users\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'userscount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'userscount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Lead Name\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Lead Email\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('description')\">Description\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'description' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'description' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of teamsList;let i=index;\">\r\n <tr>\r\n <td *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\"><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\" [(ngModel)]=\"user.isChecked\" (click)=\"onSelectedTeam(user,i)\"></span></td>\r\n <td>{{user?.teamName}}</td>\r\n <td>{{user?.userscount}}</td>\r\n <td><div class=\"mx-2\">\r\n <div class=\"table-title\">\r\n <span class=\"camerastatus\">\r\n <span>\r\n {{ user?.leadName[0]?user?.leadName[0]:\"--\" }}\r\n </span>\r\n <span *ngIf=\"user?.leadName.length > 1\">\r\n +{{ user.leadName.length - 1 }}\r\n </span>\r\n </span>\r\n\r\n </div>\r\n </div></td>\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label badge-light-primary text-symbol\" *ngIf=\"user?.leademail.length>0\">\r\n <span class=\"text-primary fs-4 badge badge-light-primary fw-normal\">\r\n {{ user?.leademail[0]?.substring(0, 2) | uppercase }}\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"mx-2\">\r\n <div class=\"table-title\">\r\n <span class=\"camerastatus\">\r\n <span>\r\n {{ getMaskedValue(user?.leademail[0] ,users?.role) }}\r\n </span>\r\n <span *ngIf=\"user?.leademail.length > 1\">\r\n +{{ user.leademail.length - 1 }}\r\n </span>\r\n </span>\r\n\r\n </div>\r\n </div>\r\n <span *ngIf=\"user?.Teamleadcount>0\">+{{user?.Teamleadcount}}</span>\r\n </div>\r\n </td>\r\n <td class=\"description\">{{user?.description ? user?.description : \"--\"}}</td>\r\n <td>\r\n <span class=\"me-3 cursor-pointer\" (click)=\"viewTeamsdata(user)\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10.0002C0.833374 10.0002 4.16671 3.3335 10 3.3335C15.8334 3.3335 19.1667 10.0002 19.1667 10.0002C19.1667 10.0002 15.8334 16.6668 10 16.6668C4.16671 16.6668 0.833374 10.0002 0.833374 10.0002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5002C11.3808 12.5002 12.5 11.3809 12.5 10.0002C12.5 8.61945 11.3808 7.50016 10 7.50016C8.61933 7.50016 7.50004 8.61945 7.50004 10.0002C7.50004 11.3809 8.61933 12.5002 10 12.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"me-3 cursor-pointer\" (click)=\"editTeamsdata(user)\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_2181_11160)\">\r\n <path\r\n d=\"M24.1666 12.4999C24.3855 12.2811 24.6453 12.1074 24.9313 11.989C25.2173 11.8705 25.5238 11.8096 25.8333 11.8096C26.1428 11.8096 26.4493 11.8705 26.7353 11.989C27.0213 12.1074 27.2811 12.2811 27.5 12.4999C27.7188 12.7188 27.8924 12.9786 28.0109 13.2646C28.1294 13.5506 28.1903 13.8571 28.1903 14.1666C28.1903 14.4761 28.1294 14.7826 28.0109 15.0686C27.8924 15.3546 27.7188 15.6144 27.5 15.8333L16.25 27.0833L11.6666 28.3333L12.9166 23.7499L24.1666 12.4999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2181_11160\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"cursor-pointer\" (click)=\"deleteTeam(user)\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12.5 14.9998H14.1667M14.1667 14.9998H27.5M14.1667 14.9998V26.6665C14.1667 27.1085 14.3423 27.5325 14.6548 27.845C14.9674 28.1576 15.3913 28.3332 15.8333 28.3332H24.1667C24.6087 28.3332 25.0326 28.1576 25.3452 27.845C25.6577 27.5325 25.8333 27.1085 25.8333 26.6665V14.9998H14.1667ZM16.6667 14.9998V13.3332C16.6667 12.8911 16.8423 12.4672 17.1548 12.1547C17.4674 11.8421 17.8913 11.6665 18.3333 11.6665H21.6667C22.1087 11.6665 22.5326 11.8421 22.8452 12.1547C23.1577 12.4672 23.3333 12.8911 23.3333 13.3332V14.9998M18.3333 19.1665V24.1665M21.6667 19.1665V24.1665\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData && !viewTeams&&teamsList.length>0\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"teamsList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"noData&&!showcreatebutton\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"card-body d-flex flex-center flex-column p-9\" *ngIf=\"showcreatebutton\">\r\n <div class=\"mb-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\" stroke-width=\"8\"/>\r\n <path d=\"M28 24V32M24 28H32M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\"> Add teams </a>\r\n <div class=\"fw-bold text-gray-800 my-6\">\r\n <ul class=\"custom-ordered-list text-gray-800 fw-bold fs-6\">\r\n <li class=\"user-text mb-2\">Use the template to upload multiple Teams at once.</li>\r\n <li class=\"user-text mb-2\">Download the template here -\r\n <a href=\"./../../assets/files/teamsBulkUploadTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text mb-2\">Add your data to the Template File</li>\r\n <li class=\"user-text mb-2\">Upload it below for processing</li>\r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-column mb-5\" style=\"width: 57% !important;\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\" value=\"personal\"\r\n class=\"btn-check\" ng-reflect-name=\"accountType\" ng-reflect-form-control-name=\"accountType\"\r\n (change)=\"onUpload($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline btn-primary bg-primary btn-outline-default rounded-3 w-50 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n <span class=\"text-white mx-2\">Upload To Add Multiple Teams</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 124 2\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"123.333\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span><span class=\"mx-2\">Or </span> <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 124 2\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"123.333\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"createTeam()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-50 p-4 mt-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99984 4.16675V15.8334M4.1665 10.0001H15.8332\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"fw-bold fs-4 mx-2\">\r\n Add Single Team</span></label>\r\n </div>\r\n \r\n \r\n</div>\r\n</div>\r\n\r\n<div *ngIf=\"viewTeams && !showcreatebutton\">\r\n <lib-viewteams-list [teamData]=\"this.selectedTeam\"></lib-viewteams-list>\r\n</div>\r\n\r\n<ng-template #afterValidation let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"card-title mt-3\"><span class=\"config-heading fw-semibold w-auto\">Add Teams</span></div>\r\n </div>\r\n <div class=\"card-body pt-0 popup-scroll\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-80px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{getStoreCounts(excelData)}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Total Records</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-80px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{excelData?.length}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Rows processed</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-80px\">\r\n <div [ngClass]=\"excelError?.error?.length \r\n ? 'fw-semibold text-error w-100 error-heading' \r\n : 'fw-semibold w-100 config-heading'\">\r\n {{ excelError?.error?.length || 0 }}\r\n </div>\r\n <div [ngClass]=\"excelError?.error?.length \r\n ? 'fw-semibold text-error mt-1 excel-error' \r\n : 'fw-semibold subtitle mt-1'\">\r\n Error\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!excelError?.error?.length\" class=\"table-header mt-5\" style=\"font-weight: 400;\">\r\n <div >You're about to add {{getStoreCounts(excelData)}} {{getStoreCounts(excelData) >1 ?'Teams':'Team'}}. Are you sure want to proceed?</div>\r\n \r\n </div>\r\n <div *ngIf=\"excelError?.error?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Invalid Details !</div>\r\n <div class=\"subtitle mt-5\">Please provide correct information.</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of excelError?.error; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.doesNotExists?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Data not exists !</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.doesNotExists; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.inActive?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Data inactive !</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.inActive; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify-content-end flex-wrap gap-2 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"closeactivepopup()\">Cancel</button>\r\n <button *ngIf=\"!excelError?.error?.length\" class=\"btn btn-md py-3 btn-default ms-3 btn-primary\" (click)=\"validateDetails()\">Proceed</button>\r\n <button *ngIf=\"excelError?.error?.length\" class=\"btn py-3 btn-md btn-default ms-3 btn-danger\" (click)=\"file1.click()\">Reupload</button>\r\n <input style=\"display: none;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUpload($event)\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #confirmDelete let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"mt-3\">\r\n <div class=\"mt-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEE4E2\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FEF3F2\" stroke-width=\"8\"/>\r\n <path d=\"M28 24V28M28 32H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\" stroke=\"#D92D20\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"config-heading fw-semibold mt-3 w-auto\">Delete {{teamId?.length}} {{teamId?.length > 1 ? 'Teams' : 'Team'}}? </div></div>\r\n </div>\r\n <div class=\"card-body pt-0 popup-scroll\">\r\n <div class=\"mt-5\">\r\n <div class=\"subtitle\" style=\"font-weight: 400;\">Are you sure you want to delete the selected team? This action cannot be undone.</div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify justify-content-between pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline w-50 me-2\" (click)=\"model.close()\">Cancel</button>\r\n <button class=\"btn btn-md py-3 btn-default btn-danger w-50 ms-2\" (click)=\"model.close('submit')\">Delete</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { Component, OnChanges, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\n@Component({\r\n selector: 'lib-users-manage',\r\n templateUrl: './users-manage.component.html',\r\n styleUrl: './users-manage.component.scss'\r\n})\r\nexport class UsersManageComponent implements OnInit,OnDestroy {\r\n private readonly destroy = new Subject();\r\n selectedTab: any ='users';\r\n teamCount:any =''\r\n private readonly destroy$ = new Subject();\r\n searchValue: any;\r\n $headerFilters: any;\r\n constructor(public userService: ManageUsersService,private router: ActivatedRoute ){\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy.next(true);\r\n this.destroy.complete();\r\n }\r\n ngOnInit(): void {\r\n this.userService.tabChange.subscribe((data) =>\r\n data === 'teams' ? this.selectedTabs('teams') : this.selectedTabs('users'))\r\n this.loadTable()\r\n }\r\n selectedTabs(type: any) {\r\n this.selectedTab = type;\r\n }\r\n userCount: string;\r\n\r\n receiveData(data: string) {\r\n this.userCount = data; // Store data from the child\r\n }\r\n receive(data: any) {\r\n this.teamCount = data; // Store data from the child\r\n }\r\n loadTable() {\r\n let user = JSON.parse(localStorage.getItem('header-filters') || '{}')\r\n let payload = {\r\n clientId: user.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.userService.getTeamsList(payload).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamCount = res.data.count;\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <div class=\"d-flex overflow-auto mb-2\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs flex-nowrap \" style=\"border-bottom: white!important;overflow-y: hidden;\">\r\n \r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('users')\">\r\n <a [ngClass]=\"selectedTab ==='users' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Users <span class=\"blue-badge mx-2\" >{{ userCount ? userCount : '0'}}</span></a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('teams')\"><a\r\n [ngClass]=\"selectedTab ==='teams' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6 \">Teams <span class=\"blue-badge mx-2\" >{{ teamCount ? teamCount : '0'}}</span></a>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n <!-- <div class=\"card-header my-3 min-h-55px\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs flex-nowrap \">\r\n\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('users')\" >\r\n <a [ngClass]=\"selectedTab ==='users' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Users <span class=\"blue-badge mx-2\">{{ userCount ? userCount : '0'}}</span></a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('teams')\"><a\r\n [ngClass]=\"selectedTab ==='teams' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Teams <span class=\"blue-badge mx-2\">{{ teamCount ? teamCount : '0'}}</span></a>\r\n </li>\r\n\r\n </ul>\r\n </div> -->\r\n <div class=\"card-card pt-2 pb-1 \">\r\n <lib-users-list *ngIf=\"selectedTab ==='users'\" (dataToParent)=\"receiveData($event)\"></lib-users-list>\r\n <lib-teams-list *ngIf=\"selectedTab ==='teams'\" (dataTo)=\"receive($event)\"></lib-teams-list>\r\n </div>\r\n</div>","import { Component, OnDestroy, OnInit, Input, ChangeDetectorRef, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { UserService } from '../../../../services/user.service';\r\nimport { ExcelService } from '../../../../services/excel.service';\r\n\r\n@Component({\r\n selector: 'lib-audit-user-list',\r\n templateUrl: './audit-user-list.component.html',\r\n styleUrl: './audit-user-list.component.scss'\r\n})\r\nexport class AuditUserListComponent implements OnInit, OnDestroy {\r\n\r\n @Input() viewuser: any;\r\n @Input() userDetails: any;\r\n userData: any;\r\n @Output() dataEmitter: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n };\r\n totalCount: any;\r\n sortColumName: any;\r\n searchValue: any = '';\r\n sortBy: any = -1;\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n headerFilter: any;\r\n consolidatedData: any;\r\n userList: any;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n public modalService: NgbModal,\r\n private changeDetector: ChangeDetectorRef, private toast: ToastService,\r\n public gs: GlobalStateService, private service: UserService,\r\n private excelService: ExcelService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data: any) => {\r\n if (data != null) {\r\n this.headerFilter = data\r\n this.loadTable();\r\n this.consolidatedCard();\r\n this.getuserDetails();\r\n }\r\n })\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n\r\n consolidatedCard() {\r\n const payload = {\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email\r\n }\r\n this.service.getConsolidatedCard(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code === 200) {\r\n this.consolidatedData = res?.data?.result;\r\n }\r\n },\r\n })\r\n\r\n }\r\n\r\n getuserDetails() {\r\n this.service.getAuditUserDetails(this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userData = res?.data?.result;\r\n }\r\n },\r\n })\r\n }\r\n\r\n loadTable() {\r\n const payload = {\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email,\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: this.pagination.limit,\r\n offset: this.pagination.offset,\r\n isExport: false,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.loading = true;\r\n this.noData = false;\r\n this.service.getAuditWalletSummary(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userList = res?.data?.result;\r\n this.totalCount = res?.data?.count;\r\n if (this.totalCount < 10) {\r\n this.paginationSizes = [this.totalCount];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n error:(err:any)=> {\r\n this.loading = false;\r\n this.noData = true;\r\n },\r\n })\r\n }\r\n\r\n exportXLSX() {\r\n\r\n const payload = {\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email,\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: 10000,\r\n offset: this.pagination.offset,\r\n isExport: true,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.service.ExportWalletAummary(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Audit Wallet Summary')\r\n },\r\n error: (err: any) => {\r\n this.toast.getErrorToast(err?.error?.error)\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n })\r\n\r\n }\r\n\r\n onSort(key: any) {\r\n this.sortColumName = key;\r\n this.sortBy *= -1;\r\n this.loadTable();\r\n }\r\n\r\n // Viewusers(data: any, key: any) {\r\n // this.viewuser = true;\r\n // }\r\n\r\n paginationSize(): number {\r\n if (this.totalCount < 10) {\r\n return this.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pagination.offset = event;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(event: any) {\r\n this.pagination.limit = event;\r\n this.pagination.offset = 1;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n\r\n backTosummary() {\r\n this.viewuser = false;\r\n this.searchValue = '';\r\n this.dataEmitter.emit(this.viewuser)\r\n }\r\n}\r\n","<div class=\"card p-0 rounded-3 mb-5\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title m-0\">\r\n <div class=\"d-flex align-items-center\">\r\n <span (click)=\"backTosummary()\" class=\"btn me-3 px-2 py-2 btn-outline\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 10H4.1665M4.1665 10L9.99984 15.8333M4.1665 10L9.99984 4.16667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"userData?.userName\" class=\"me-3 fw-bold\">{{(userDetails?.userName ? userDetails?.userName : userDetails?.userName) | titlecase}}</span> <span\r\n class=\"badge me-3 badge-light-default\">{{userData?.tangoUserType | titlecase}}</span><span\r\n class=\"badge me-3 badge-light-success\">{{userData?.role | titlecase}}</span>\r\n <span *ngIf=\"userData?.email\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M14.6668 4.00001C14.6668 3.26667 14.0668 2.66667 13.3335 2.66667H2.66683C1.9335 2.66667 1.3335 3.26667 1.3335 4.00001M14.6668 4.00001V12C14.6668 12.7333 14.0668 13.3333 13.3335 13.3333H2.66683C1.9335 13.3333 1.3335 12.7333 1.3335 12V4.00001M14.6668 4.00001L8.00016 8.66667L1.3335 4.00001\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"ms-2 top-list\">{{userData?.email}}</span></span>\r\n <span *ngIf=\"userData?.mobileNumber\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_8096_7888)\">\r\n <path\r\n d=\"M16.5001 12.69V14.94C16.5009 15.1489 16.4581 15.3556 16.3745 15.547C16.2908 15.7384 16.168 15.9102 16.0141 16.0514C15.8602 16.1926 15.6785 16.3001 15.4806 16.367C15.2828 16.4339 15.0731 16.4588 14.8651 16.44C12.5572 16.1892 10.3403 15.4006 8.39257 14.1375C6.58044 12.986 5.04407 11.4496 3.89257 9.6375C2.62506 7.6809 1.83625 5.45324 1.59007 3.135C1.57133 2.9276 1.59598 2.71857 1.66245 2.52121C1.72892 2.32386 1.83575 2.14251 1.97615 1.98871C2.11654 1.83491 2.28743 1.71203 2.47792 1.62789C2.6684 1.54375 2.87433 1.50019 3.08257 1.5H5.33257C5.69655 1.49641 6.04942 1.62531 6.32539 1.86265C6.60137 2.09999 6.78163 2.42958 6.83257 2.79C6.92754 3.51005 7.10366 4.21704 7.35757 4.8975C7.45848 5.16594 7.48032 5.45768 7.4205 5.73816C7.36069 6.01863 7.22172 6.27608 7.02007 6.48L6.06757 7.4325C7.13524 9.31016 8.68991 10.8648 10.5676 11.9325L11.5201 10.98C11.724 10.7783 11.9814 10.6394 12.2619 10.5796C12.5424 10.5197 12.8341 10.5416 13.1026 10.6425C13.783 10.8964 14.49 11.0725 15.2101 11.1675C15.5744 11.2189 15.9071 11.4024 16.145 11.6831C16.3828 11.9638 16.5092 12.3222 16.5001 12.69Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8096_7888\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> <span class=\"ms-2 top-list\">{{userData?.mobileNumber }}</span></span>\r\n <span *ngIf=\"userData?.clientAssigned\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12.75 15.75V14.25C12.75 13.4544 12.4339 12.6913 11.8713 12.1287C11.3087 11.5661 10.5456 11.25 9.75 11.25H3.75C2.95435 11.25 2.19129 11.5661 1.62868 12.1287C1.06607 12.6913 0.75 13.4544 0.75 14.25V15.75M17.25 15.75V14.25C17.2495 13.5853 17.0283 12.9396 16.621 12.4142C16.2138 11.8889 15.6436 11.5137 15 11.3475M12 2.3475C12.6453 2.51273 13.2173 2.88803 13.6257 3.41423C14.0342 3.94044 14.2559 4.58762 14.2559 5.25375C14.2559 5.91988 14.0342 6.56706 13.6257 7.09327C13.2173 7.61947 12.6453 7.99477 12 8.16M9.75 5.25C9.75 6.90685 8.40685 8.25 6.75 8.25C5.09315 8.25 3.75 6.90685 3.75 5.25C3.75 3.59315 5.09315 2.25 6.75 2.25C8.40685 2.25 9.75 3.59315 9.75 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 top-list\">Clients Assigned:{{userData?.clientAssigned ?? 0}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"card p-3 rounded-3 mb-5\">\r\n <div class=\"w-100 p-5 bg-highlighted d-flex align-items-center\">\r\n <span class=\"fw-bold text-highlighted\">₹ {{consolidatedData?.totalCredit ? consolidatedData?.totalCredit.toFixed(2) : 0}}</span><span\r\n class=\"fw-semibold text-sub ms-3\">{{consolidatedData?.message}}\r\n <!-- {{headerFilter?.date?.startDate}} – {{headerFilter?.date?.endDate}} -->\r\n </span>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center px-5 py-5\">\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalFiles ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Files</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalBC ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">Before Count</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalAC ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">After Count</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalEarnings ? consolidatedData?.totalEarnings.toFixed(2) : 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Earnings</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalReducedAmount ? consolidatedData?.totalReducedAmount.toFixed(2) : 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Reduced Amount</div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3 mb-5\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title\">Summary Table</div>\r\n <div class=\"text-sub\">Based on {{headerFilter?.date?.startDate | date:'dd MMM, yyyy'}} – {{headerFilter?.date?.endDate | date:'dd MMM, yyyy'}}</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default px-4 py-3 mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16775 13.7347 6.08621 13.7036 6.01006C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37333 9.06609 1.3275 8.98994 1.2964C8.91379 1.26529 8.83225 1.24953 8.75 1.25H2.5C2.16848 1.25 1.85054 1.3817 1.61612 1.61612C1.3817 1.85054 1.25 2.16848 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <!-- } -->\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDate')\">File Date\r\n <svg [ngClass]=\"sortColumName === 'fileDate' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalFilesCount')\">Total Files\r\n <svg [ngClass]=\"sortColumName === 'totalFilesCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalFilesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalBeforeCount')\">Total BC\r\n <svg [ngClass]=\"sortColumName === 'totalBeforeCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalBeforeCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalAfterCount')\">Total AC\r\n <svg [ngClass]=\"sortColumName === 'totalAfterCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalAfterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalEarn')\">Total Earnings(Rs)\r\n <svg [ngClass]=\"sortColumName === 'totalEarn' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalEarn' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByMinimumTarget')\">Deduction by Minimum\r\n Target\r\n <svg [ngClass]=\"sortColumName === 'deductionByMinimumTarget' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByMinimumTarget' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByMapping')\">Deduction by Mapping\r\n <svg [ngClass]=\"sortColumName === 'deductionByMapping' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByMapping' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByLateLogin')\">Deduction by Late Login\r\n <svg [ngClass]=\"sortColumName === 'deductionByLateLogin' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByLateLogin' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalReducedAmount')\">Total Reduced Amount\r\n <svg [ngClass]=\"sortColumName === 'totalReducedAmount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalReducedAmount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalCredit')\">Total Credit\r\n <svg [ngClass]=\"sortColumName === 'totalCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.fileDate ?? '--'}}</td>\r\n <td>{{user?.totalFilesCount ?? '--'}}</td>\r\n <td>{{user?.totalBeforeCount ?? '--'}}</td>\r\n <td>{{user?.totalAfterCount ?? '--'}}</td>\r\n <td>{{user?.totalEarn ? user?.totalEarn.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionByMinimumTarget ? user?.deductionByMinimumTarget.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionByMapping ? user?.deductionByMapping.toFixed(2) : 0}}</td>\r\n <td>{{user.deductionByLateLogin ? user.deductionByLateLogin.toFixed(2) : 0}}\r\n </td>\r\n <td>{{user?.totalReducedAmount ? user?.totalReducedAmount.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalCredit ? user?.totalCredit.toFixed(2) : 0}}</td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit, viewChild } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { AddUserPopupComponent } from '../../add-user-popup/add-user-popup.component';\r\nimport { UserService } from '../../../../services/user.service';\r\nimport { ExcelService } from '../../../../services/excel.service';\r\n\r\n@Component({\r\n selector: 'lib-audit-user-earnings',\r\n templateUrl: './audit-user-earnings.component.html',\r\n styleUrl: './audit-user-earnings.component.scss'\r\n})\r\nexport class AuditUserEarningsComponent implements OnInit, OnDestroy {\r\n\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n sortColumName: any;\r\n searchValue: any = '';\r\n sortBy: any = -1;\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n userList: any;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n public modalService: NgbModal,\r\n private changeDetector: ChangeDetectorRef,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private service: UserService, private excelService: ExcelService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data: any) => {\r\n if (data != null) {\r\n this.$headerFilters = data\r\n this.loadTable();\r\n }\r\n })\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n searchData() {\r\n this.searchValue = this.searchValue;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.loadTable();\r\n }\r\n\r\n loadTable() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: this.pagination.limit,\r\n offset: this.pagination.offset,\r\n isExport: false,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.loading = true;\r\n this.noData = false;\r\n this.service.getAuditWallet(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userList = res?.data?.result;\r\n this.pagination.totalCount = res?.data?.count;\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res?.data?.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n error:(err:any)=> {\r\n this.loading = false;\r\n this.noData = true; \r\n },\r\n })\r\n }\r\n\r\n exportXLSX() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: 10000,\r\n offset: this.pagination.offset,\r\n isExport: true,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.service.ExportgetAuditWallet(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Audit Users Summary')\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error)\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n })\r\n }\r\n\r\n generateReport() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate\r\n }\r\n this.service.getGenerateReport(payload).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.toastService.getSuccessToast('Report Generated Successfully')\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error.error)\r\n },\r\n })\r\n }\r\n\r\n\r\n viewuser: boolean = false;\r\n userDetails: any;\r\n\r\n Viewusers(type: any, user?: any) {\r\n this.viewuser = true;\r\n this.searchValue = '';\r\n this.userDetails = user;\r\n }\r\n\r\n addUsers(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.searchValue = '';\r\n this.pagination.limit = 10;\r\n this.pagination.offset = 1;\r\n // this.sortColumName = 'userName';\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n onSort(key: any) {\r\n this.sortColumName = key;\r\n this.sortBy *= -1;\r\n this.loadTable();\r\n }\r\n\r\n receivedData(event: any) {\r\n this.viewuser = event;\r\n this.searchValue = '';\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pagination.offset = event;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(event: any) {\r\n this.pagination.limit = event;\r\n this.pagination.offset = 1;\r\n this.sortBy = -1;\r\n this.sortColumName = undefined;\r\n this.loadTable();\r\n }\r\n\r\n}\r\n","<div *ngIf=\"!viewuser\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <div class=\"d-flex overflow-auto h-50px\">\r\n <ul\r\n class=\"nav nav-stretch w-100 nav-line-tabs nav-line-tabs-2x border-bottom-2 fs-5 fw-bolder flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer px-5 me-5 text-center\"><a routerLink=\"/manage/users/tango\"\r\n class=\"nav-link mx-0 text-active-primary\">Users</a>\r\n </li>\r\n <li class=\"nav-item activated px-5 me-5 bg-light-primary cursor-pointer\"><a\r\n class=\"nav-link text-active-primary mx-0\">Audit Users\r\n Summary</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"text-sub mb-2 mt-5\">{{pagination?.totalCount}} total users</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn py-3 px-4 btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16775 13.7347 6.08621 13.7036 6.01006C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37333 9.06609 1.3275 8.98994 1.2964C8.91379 1.26529 8.83225 1.24953 8.75 1.25H2.5C2.16848 1.25 1.85054 1.3817 1.61612 1.61612C1.3817 1.85054 1.25 2.16848 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <!-- <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"generateReport()\"\r\n class=\"btn py-3 px-4 btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><span\r\n class=\"ms-2\">Generate</span> </button> -->\r\n\r\n\r\n <!-- } -->\r\n }\r\n @if ((gs.userAccess | async)?.Global_User_isAdd) {\r\n <button type=\"button\" (click)=\"addUsers('add')\"\r\n class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"sortColumName === 'userName' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDateFrom')\">File Date From\r\n <svg [ngClass]=\"sortColumName === 'fileDateFrom' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDateFrom' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDateTo')\">File Date To\r\n <svg [ngClass]=\"sortColumName === 'fileDateTo' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDateTo' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('noOfDays')\">No.of Days\r\n <svg [ngClass]=\"sortColumName === 'noOfDays' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'noOfDays' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalFiles')\">Total Files\r\n <svg [ngClass]=\"sortColumName === 'totalFiles' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalFiles' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalBC')\">Total BC\r\n <svg [ngClass]=\"sortColumName === 'totalBC' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalBC' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalAC')\">Total AC\r\n <svg [ngClass]=\"sortColumName === 'totalAC' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalAC' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalEarnings')\">Total Earnings(Rs)\r\n <svg [ngClass]=\"sortColumName === 'totalEarnings' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalEarnings' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('bcCredit')\">BC Credit\r\n <svg [ngClass]=\"sortColumName === 'bcCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'bcCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('acCredit')\">AC Credit\r\n <svg [ngClass]=\"sortColumName === 'acCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'acCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyMinimumTarget')\">Deduction by Minimum\r\n Target\r\n <svg [ngClass]=\"sortColumName === 'deductionbyMinimumTarget' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyMinimumTarget' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyMapping')\">Deduction by Mapping\r\n <svg [ngClass]=\"sortColumName === 'deductionbyMapping' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyMapping' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyLateLogin')\">Deduction by Late Login\r\n <svg [ngClass]=\"sortColumName === 'deductionbyLateLogin' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyLateLogin' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalReducedAmount')\">Total Reduced Amount\r\n <svg [ngClass]=\"sortColumName === 'totalReducedAmount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalReducedAmount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalCredit')\">Total Credit\r\n <svg [ngClass]=\"sortColumName === 'totalCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName ? user?.userName : '--'}}</td>\r\n <td>{{user?.fileDateFrom ? user?.fileDateFrom : '--'}}</td>\r\n <td>{{user?.fileDateTo ? user?.fileDateTo : '--'}}</td>\r\n <td>{{user?.noOfDays ? user?.noOfDays : 0}}</td>\r\n <td>{{user?.totalFiles ?? '--'}}</td>\r\n <td>{{user?.totalBC ?? '--'}}</td>\r\n <td>{{user?.totalAC ?? '--'}}</td>\r\n <td>{{user?.totalEarnings ? user?.totalEarnings.toFixed(2) : 0}}</td>\r\n <td>{{user.bcCredit ? user.bcCredit.toFixed(2) : 0}}</td>\r\n <td>{{user?.acCredit ? user?.acCredit.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyMinimumTarget ? user?.deductionbyMinimumTarget.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyMapping ? user?.deductionbyMapping.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyLateLogin ? user?.deductionbyLateLogin.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalReducedAmount ? user?.totalReducedAmount.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalCredit ? user?.totalCredit.toFixed(2) : 0}}</td>\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</div>\r\n<div *ngIf=\"viewuser\">\r\n <lib-audit-user-list (dataEmitter)=\"receivedData($event)\" [viewuser]=\"viewuser\"\r\n [userDetails]=\"userDetails\"></lib-audit-user-list>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { UserTableComponent } from './components/tango-manage-users/user-table/user-table.component';\r\nimport { BrandUserComponent } from './components/tango-manage-users/brand-user/brand-user.component';\r\nimport { UsersManageComponent } from './components-v2/users-manage/users-manage.component';\r\nimport { TeamsCreationComponent } from './components-v2/teams-creation/teams-creation.component';\r\nimport { AuditUserEarningsComponent } from './components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component';\r\n\r\nconst routes: Routes = [\r\n // {\r\n // path:'client',\r\n // component:BrandUserComponent\r\n // },\r\n {\r\n path: 'tango',\r\n component: UserTableComponent,\r\n },\r\n {\r\n path: 'tango/audit',\r\n component: AuditUserEarningsComponent\r\n },\r\n {\r\n path: 'client',\r\n component: UsersManageComponent\r\n },\r\n {\r\n path: 'teams',\r\n component: TeamsCreationComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TangoManageUsersRoutingModule { }\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { PageInfoService,GlobalStateService } from \"tango-app-ui-global\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n@Component({\r\n selector: \"lib-tango-manage-users\",\r\n templateUrl: \"./tango-manage-users.component.html\",\r\n styleUrl: \"./tango-manage-users.component.scss\",\r\n})\r\nexport class TangoManageUsersComponent implements OnInit,OnDestroy {\r\n receivedData: any = \"\";\r\n userData: string;\r\n roles: any[] = [];\r\n rolesCount: number;\r\n $headerFilters: any;\r\n userType: string;\r\n USER: any;\r\n setTab: string;\r\n private readonly destroy$ = new Subject();\r\n \r\n constructor(\r\n private pageInfo: PageInfoService,\r\n private userService: UserService,\r\n private cd: ChangeDetectorRef,\r\n private gs: GlobalStateService,private route: ActivatedRoute\r\n ) {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (data: any) => {\r\n let user: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n if(user && user.userType) {\r\n this.USER = user;\r\n }\r\n this.userType = this.USER.userType ? this.USER.userType : 'client';\r\n this.route?.queryParams\r\n ?.pipe(takeUntil(this.destroy$))\r\n .subscribe((params) => {\r\n if (params.type === \"client\") this.userData = \"Brand User\";\r\n else\r\n this.userData = this.setTab\r\n ? this.setTab\r\n : this.userType == \"client\"\r\n ? \"Brand User\"\r\n : \"Tango User\";\r\n });\r\n this.setTab = this.userData;\r\n this.$headerFilters = data;\r\n this.getRoles();\r\n this.userService.dataSubject.next(this.userData);\r\n },\r\n });\r\n }\r\n \r\n ngOnInit(): void {\r\n this.userService?.rolesComms?.subscribe(value => {\r\n this.receivedData = value?.receivedData\r\n });\r\n this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe(()=>{\r\n this.getRoles();\r\n })\r\n this.setPageData();\r\n this.receivedData = \"\";\r\n }\r\n\r\n receiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n }\r\n\r\n userValue(e: any) {\r\n this.userData = e.target.innerHTML;\r\n this.setTab = this.userData;\r\n this.userType = this.userData == \"Brand User\" ? \"client\" : \"tango\";\r\n \r\n // this.userType = this.userData == \"Tango User\" ? \"tango\" : \"client\";\r\n this.getRoles();\r\n this.userService.dataSubject.next(this.userData);\r\n this.receivedData = \"\";\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs : any[]=[];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n }\r\n\r\n getRoles() {\r\n \r\n let data \r\n\r\n if(this.userType === 'tango'){\r\n data = { \r\n userType: this.userType\r\n }\r\n }\r\n\r\n if(this.userType === 'client'){\r\n data = { \r\n userType: this.userType,\r\n clientId: this.$headerFilters?.client\r\n }\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.cd.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n // userDetials(role: any) {\r\n // this.userService.rolesComms.next(role);\r\n // this.receivedData = \"Role Value\";\r\n // }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<!-- Users subhead start -->\r\n<div class=\"card mb-5\">\r\n @if (USER?.userType==='tango') {\r\n <div class=\"card-body pt-2 pb-1\">\r\n <div class=\"d-flex overflow-auto mb-2\">\r\n <ul \r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li (click)=\"userValue('Brand User')\" class=\"nav-item\" [routerLink]=\"['/manage/users']\" [queryParams]=\"{ type: 'client' }\">\r\n <a [ngClass]=\"userData ==='Brand User' ? 'active' :''\"\r\n class=\"nav-link text-active-primary cursor-pointer me-6\">Brand User</a>\r\n </li>\r\n <li (click)=\"userValue('Tango User')\" class=\"nav-item\" [routerLink]=\"['/manage/users']\" [queryParams]=\"{ type: 'tango' }\">\r\n <a [ngClass]=\"userData ==='Tango User' ? 'active' :''\"\r\n class=\"nav-link text-active-primary cursor-pointer no-border me-6 \">Tango User</a>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<!-- Users subhead end -->\r\n<!-- *ngIf=\"userdata =='Tango User'\" -->\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData !=='Role Value' && (userData ==='Tango User' || userData ==='Brand User')\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <!-- (dataTouserlist)=\"receiveData($event)\" -->\r\n <lib-user-table *ngIf=\"userData ==='Tango User'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 mb-5 mb-xl-1\"></lib-user-table>\r\n <lib-brand-user *ngIf=\"userData ==='Brand User'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 mb-5 mb-xl-1\"></lib-brand-user>\r\n\r\n </div>\r\n <!-- <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles;let i=index\">\r\n <a class=\"role-title my-2 cursor-pointer\" (click)=\"userDetials(obj)\">{{obj.roleName |\r\n titlecase}}</a>\r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<!-- <div *ngFor=\"let obj of values\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"obj.value\">\r\n </div> -->","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TangoManageUsersRoutingModule } from './tango-manage-users-routing.module';\r\nimport { TangoManageUsersComponent } from './components/tango-manage-users/tango-manage-users.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\nimport { UserTableComponent } from './components/tango-manage-users/user-table/user-table.component';\r\nimport { RolesPermissionTableComponent } from './components/tango-manage-users/roles-permission-table/roles-permission-table.component';\r\nimport { AddUserPopupComponent } from './components/tango-manage-users/add-user-popup/add-user-popup.component';\r\nimport { NgbAccordionModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { AssignStorePopupComponent } from './components/tango-manage-users/assign-store-popup/assign-store-popup.component';\r\nimport { BrandUserComponent } from './components/tango-manage-users/brand-user/brand-user.component';\r\nimport { AlertPopupComponent } from './components/tango-manage-users/user-table/alert-popup/alert-popup.component';\r\nimport { AddUsersComponent } from './components-v2/add-users/add-users.component';\r\nimport { UsersListComponent } from './components-v2/users-list/users-list.component';\r\nimport { TeamsListComponent } from './components-v2/teams-list/teams-list.component';\r\nimport { TeamsCreationComponent } from './components-v2/teams-creation/teams-creation.component';\r\nimport { UsersManageComponent } from './components-v2/users-manage/users-manage.component';\r\nimport { CustomSelectComponent } from './components-v2/custom-select/custom-select.component';\r\nimport { ViewteamsListComponent } from './components-v2/viewteams-list/viewteams-list.component';\r\nimport { ActionPopupComponent } from './components-v2/action-popup/action-popup.component';\r\nimport { GroupSelectComponent } from './components/tango-manage-users/group-select/group-select.component';\r\nimport { AuditUserEarningsComponent } from './components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component';\r\nimport { AuditUserListComponent } from './components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component';\r\nimport { ChipSelectComponent } from './components-v2/chip-select/chip-select.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TangoManageUsersComponent,\r\n UserTableComponent,\r\n RolesPermissionTableComponent,\r\n AddUserPopupComponent,\r\n AssignStorePopupComponent,\r\n BrandUserComponent,\r\n AlertPopupComponent,\r\n AddUsersComponent,\r\n UsersListComponent,\r\n TeamsListComponent,\r\n TeamsCreationComponent,\r\n UsersManageComponent,\r\n CustomSelectComponent,\r\n ViewteamsListComponent,\r\n ActionPopupComponent,\r\n GroupSelectComponent,\r\n AuditUserEarningsComponent,\r\n AuditUserListComponent,\r\n ChipSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TangoManageUsersRoutingModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxPaginationModule,\r\n NgbAccordionModule,\r\n CommonSharedModule,\r\n NgbTooltipModule\r\n ],\r\n})\r\nexport class TangoManageUsersModule { }\r\n","/*\r\n * Public API Surface of tango-manage-users\r\n */\r\n\r\nexport * from './lib/tango-manage-users.module';\r\n\r\nexport * from './lib/components/tango-manage-users/tango-manage-users.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.ManageUsersService","i5","i1.ManageUsersService","i2","i3","SECRET_KEY","i4.UserService","i6","i7","i8.CustomSelectComponent","i3.UserService","i1.UserService","i4","i5.GroupSelectComponent","i3.ExcelService","i5.UserService","i8","i4.ManageUsersService","i9.ChipSelectComponent","i2.UserService","i9.RolesPermissionTableComponent","i6.BrandUserComponent","i2.ExcelService","i9.ViewteamsListComponent","i4.UsersListComponent","i5.TeamsListComponent","i5.ExcelService","i9.AuditUserListComponent","i5.UserTableComponent","i6.RolesPermissionTableComponent","i7.BrandUserComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;MAOa,kBAAkB,CAAA;AAMT,IAAA,IAAA;AAA0B,IAAA,EAAA;AAL9C,IAAA,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;AAC3C,IAAA,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;IAC7B,UAAU,GAAU,EAAE;AAC9B,IAAA,gBAAgB;AAChB,IAAA,WAAW;IACX,WAAA,CAAoB,IAAgB,EAAU,EAAsB,EAAA;QAAhD,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,EAAE,GAAF,EAAE;QAC9C,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACpC,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB;AAC5C,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;AAClC,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AACjC,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,WAAW,CAAC,KAAwB,EAAA;QAC1C,OAAO,UAAU,CACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAClE;IACH;IACA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAA,cAAA,CAAgB,CAAC;IAChE;AAEA,IAAA,eAAe,CAAC,MAAW,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,aAAA,CAAe,EAAE,MAAM,CAAC;IACxE;AAEA,IAAA,YAAY,CAAC,MAAW,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,KAAA,CAAO,EAAE,MAAM,CAAC;IAChE;AAEA,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,aAAA,CAAe,EAAC,IAAI,CAAC;IACrE;AAEA,IAAA,kBAAkB,CAAC,IAAS,EAAA;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,OAAO,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,aAAuB,EAAE,CAAC;IACpG;AAEA,IAAA,UAAU,CAAC,MAAW,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,OAAA,CAAS,EAAE,MAAM,CAAC;IAClE;AACA,IAAA,gBAAgB,CAAC,MAAW,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,KAAA,CAAO,EAAE,MAAM,CAAC;IAChE;AACA,IAAA,sBAAsB,CAAC,IAAS,EAAA;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,OAAO,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,aAAuB,EAAE,CAAC;IACpG;AACA,IAAA,WAAW,CAAC,MAAW,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,OAAA,CAAS,EAAE,MAAM,CAAC;IAClE;AACA,IAAA,aAAa,CAAC,IAAS,EAAA;QACrB,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,IAAA,CAAM,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC;AACnE,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACL;AACA,IAAA,UAAU,CAAC,IAAS,EAAA;QAClB,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAA,CAAE,EAAE,IAAI;aAC1D,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,CACjC;IACL;AACA,IAAA,eAAe,CAAC,MAAW,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,aAAA,CAAe,EAAE,MAAM,CAAC;IACxE;AACA,IAAA,cAAc,CAAC,aAAkB,EAAA;QAC/B,OAAO,IAAI,CAAC;aACT,IAAI,CAAM,GAAG,IAAI,CAAC,WAAW,CAAA,eAAA,CAAiB,EAAE,aAAa;aAC7D,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,CACjC;IACL;AACA,IAAA,WAAW,CAAC,QAAa,EAAA;QACvB,OAAO,IAAI,CAAC;aACT,IAAI,CAAM,GAAG,IAAI,CAAC,UAAU,CAAA,aAAA,CAAe,EAAE,QAAQ;aACrD,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,CACjC;IACL;AAEC,IAAA,YAAY,CAAC,QAAa,EAAA;QACzB,OAAO,IAAI,CAAC;aACT,IAAI,CAAM,GAAG,IAAI,CAAC,WAAW,CAAA,eAAA,CAAiB,EAAE,QAAQ;aACxD,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,CACjC;IACL;AAEQ,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;;AAG9D,IAAA,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;AAGjD,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAEA,IAAA,SAAS,CAAC,IAAS,EAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,eAAe,CAAC,IAAS,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,YAAA,CAAc,EAAC,IAAI,CAAC;IAC/D;wGA9GW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCKY,mBAAmB,CAAA;AAGpB,IAAA,WAAA;AAAoC,IAAA,OAAA;AACpC,IAAA,EAAA;AAA+B,IAAA,MAAA;AAAsB,IAAA,KAAA;AAA6B,IAAA,EAAA;AAHnF,IAAA,IAAI;IACb,WAAA,CACU,WAA2B,EAAS,OAA4B,EAChE,EAAqB,EAAU,MAAa,EAAS,KAAoB,EAAS,EAAgB,EAAA;QADlG,IAAA,CAAA,WAAW,GAAX,WAAW;QAAyB,IAAA,CAAA,OAAO,GAAP,OAAO;QAC3C,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,MAAM,GAAN,MAAM;QAAgB,IAAA,CAAA,KAAK,GAAL,KAAK;QAAwB,IAAA,CAAA,EAAE,GAAF,EAAE;IAC1F;IAEJ,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;IACnC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YACxB,IAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAC;AACnC,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAE,OAAO,CAAC;AAC/B,YAAA;AAAI,iBAAA;AACH,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC;AAChF,YAAA;AACF,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,QAAA;IACH;IAEE,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;IACpC;IAEE,SAAS,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAE,OAAO,CAAC;AACjC,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,QAAA;IACH;wGAnCW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,iFCXhC,oxUAmGM,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,CAAA,EAAA,CAAA;;4FDxFO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,oxUAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;gOAKlB,IAAI,EAAA,CAAA;sBAAZ;;;MEJU,WAAW,CAAA;AAWF,IAAA,IAAA;AAA0B,IAAA,EAAA;IAVtC,UAAU,GAAW,EAAE;IACvB,UAAU,GAAW,EAAE;IACvB,WAAW,GAAW,EAAE;IACxB,WAAW,GAAW,EAAE;IACxB,iBAAiB,GAAW,EAAE;AACtC,IAAA,WAAW,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;AAC5C,IAAA,UAAU,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;AAC3C,IAAA,eAAe,GAAG,IAAI,eAAe,CAAM,IAAI,CAAC;IACxC,aAAa,GAAU,EAAE;IACzB,WAAW,GAAQ,EAAE;IAC7B,WAAA,CAAoB,IAAgB,EAAU,EAAsB,EAAA;QAAhD,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,EAAE,GAAF,EAAE;QAC9C,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACpC,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AAChC,gBAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;AAChC,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;AAClC,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;AAClC,gBAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa;AACtC,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;AAClC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB;AAC/C,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,WAAW,CAAC,KAAwB,EAAA;QAC1C,OAAO,UAAU,CACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAClE;IACH;AAEA,IAAA,WAAW,CAAC,MAAW,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,YAAA,CAAc,EAAE,MAAM,CAAC;IACtE;AACA,IAAA,iBAAiB,CAAC,IAAS,EAAA;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,cAAc,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;IAChG;AACA,IAAA,OAAO,CAAC,SAAiB,EAAA;QACvB,OAAO,IAAI,CAAC;AACT,aAAA,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,mBAAmB,EAAE;AAC/C,YAAA,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;SAC7B;AACA,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACL;AAEA,IAAA,QAAQ,CAAC,GAAQ,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,UAAA,CAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAClE,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AAEA,IAAA,UAAU,CAAC,QAAa,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,YAAA,CAAc,EAAE,QAAQ,CAAC;;;;IAIxE;AAEA,IAAA,UAAU,CAAC,QAAa,EAAA;QACtB,OAAO,IAAI,CAAC;aACT,IAAI,CAAM,GAAG,IAAI,CAAC,UAAU,CAAA,YAAA,CAAc,EAAE,QAAQ;aACpD,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,CACjC;IACL;AAEA,IAAA,cAAc,CAAC,YAAiB,EAAA;QAC9B,OAAO,IAAI,CAAC;aACT,IAAI,CAAM,GAAG,IAAI,CAAC,UAAU,CAAA,aAAA,CAAe,EAAE,YAAY,CAAC;;;;;IAK/D;AAEA,IAAA,eAAe,CAAC,MAAW,EAAA;QACzB,OAAO,IAAI,CAAC;aACT,IAAI,CAAM,GAAG,IAAI,CAAC,UAAU,CAAA,eAAA,CAAiB,EAAE,MAAM;AACrD,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACL;AAEA,IAAA,eAAe,CAAC,MAAW,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACzF,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AAEA,IAAA,eAAe,CAAC,MAAW,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACzF,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AACA,IAAA,UAAU,CAAC,IAAS,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,WAAA,CAAa,EAAE,IAAI,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AAEA,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,iBAAA,CAAmB,EAAE,IAAI,CAAC;IACzE;AAEA,IAAA,eAAe,CAAC,IAAS,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,gBAAA,CAAkB,EAAE,IAAI,CAAC;IACxE;AAEA,IAAA,YAAY,CAAC,IAAS,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,aAAA,CAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AACA,IAAA,iBAAiB,CAAC,IAAS,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,eAAA,CAAiB,EAAE,IAAI,CAAC,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AACA,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,aAAA,CAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CACvE,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AAEA,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,eAAA,CAAiB,EAAE,IAAI,CAAC,CAAC,IAAI,CACxE,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AAEA,IAAA,oBAAoB,CAAC,MAAW,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACxF,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AACA,IAAA,iBAAiB,CAAC,MAAW,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACtF,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AAEQ,IAAA,aAAa,GAAG,IAAI,eAAe,CAAM,iBAAiB,CAAC;AACnE,IAAA,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAElD,IAAA,aAAa,CAAC,OAAY,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;IAClC;AACA,IAAA,iBAAiB,CAAC,QAAa,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,WAAA,CAAa,EAAE,QAAQ,CAAC;;;;IAIvE;AACA,IAAA,gBAAgB,CAAC,YAAiB,EAAA;QAChC,OAAO,IAAI,CAAC;aACT,IAAI,CAAM,GAAG,IAAI,CAAC,UAAU,CAAA,YAAA,CAAc,EAAE,YAAY,CAAC;;;;;IAK9D;AACA,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,eAAA,CAAiB,EAAE,IAAI,CAAC,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AACA,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,aAAa,CAAA,eAAA,CAAiB,EAAE,IAAI,CAAC,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,QAAa,KAAK,QAAQ,CAAC,EAChC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC7B;IACH;AAEA,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,IAAI,CAAC,iBAAiB,CAAA,mBAAA,CAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC7F;AAEA,IAAA,oBAAoB,CAAC,IAAS,EAAA;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,mBAAA,CAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,aAAuB,GAAG,CAAC;IACrI;AAEA,IAAA,mBAAmB,CAAC,IAAY,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,kCAAA,EAAqC,IAAI,CAAA,CAAE,CAAC;IACjG;AAEA,IAAA,mBAAmB,CAAC,IAAS,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,IAAI,CAAC,iBAAiB,CAAA,kBAAA,CAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5F;AAEA,IAAA,qBAAqB,CAAC,IAAS,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,IAAI,CAAC,iBAAiB,CAAA,qBAAA,CAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC/F;AAEA,IAAA,mBAAmB,CAAC,IAAS,EAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,qBAAA,CAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,aAAuB,GAAG,CAAC;IACvI;AAEA,IAAA,iBAAiB,CAAC,IAAS,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,IAAI,CAAC,iBAAiB,CAAA,gBAAA,CAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1F;wGAtNW,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA;;4FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCGY,qBAAqB,CAAA;AA6BZ,IAAA,EAAA;AAA+B,IAAA,WAAA;AA1BnD,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;AAES,IAAA,KAAK;AACL,IAAA,WAAW;AACX,IAAA,KAAK;AACL,IAAA,OAAO;IACP,cAAc,GAAQ,EAAE;AACxB,IAAA,QAAQ;AACR,IAAA,KAAK;AAEJ,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;AAClC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAO;AACpC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAO;IAGjD,cAAc,GAAQ,EAAE;AACxB,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,UAAU;IAGV,WAAA,CAAoB,EAAqB,EAAU,WAA+B,EAAA;QAA9D,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,WAAW,GAAX,WAAW;IAAwB;IACtF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE;QACrC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AAC/C,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AACzB,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAEhC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;gBACtB,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACzB,YAAA;AAEF,QAAA;AACD,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE;YAC5L,IAAI,CAAC,oBAAoB,EAAE;AAC5B,QAAA;IACH;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;QAClB,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,YAAiB,KAAI;AACjD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,YAAiB,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5H,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACvB,YAAA;AACH,QAAA,CAAC,CAAC;IAEJ;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACrB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACtD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA;AAAM,aAAA;YACL,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;AACnD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,KAChD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1D;AACF,QAAA;QACD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAEA,QAAQ,CAAC,KAAU,EAAE,IAAS,EAAA;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1G,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AAC3C,gBAAA,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAChD,oBAAA,OAAO,CAAC,UAAU,GAAG,KAAK;AAC3B,gBAAA;AACH,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAU,KAAI;AAC1D,YAAA,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE;YACjC,OAAO,YAAY,CAAC,UAAU;AAC9B,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IAEvC;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAEvE,QAAA,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC/C,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5C,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACzB,QAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAU,KAAI;YAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK;AAC7C,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IACvC;AAGA,IAAA,kBAAkB,CAAC,MAAa,EAAA;QAC9B,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA;IACH;IAEA,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,CAAC;IAClE;wGArJW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,uYCVlC,8+FA2CM,EAAA,MAAA,EAAA,CAAA,guFAAA,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,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,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDjCO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BAEE,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8+FAAA,EAAA,MAAA,EAAA,CAAA,guFAAA,CAAA,EAAA;oHAK/C,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAQjC,KAAK,EAAA,CAAA;sBAAb;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAES,QAAQ,EAAA,CAAA;sBAAjB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,aAAa,EAAA,CAAA;sBAAtB;;;AElBH,MAAMC,YAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CACxC,QAAQ,CAAC,MAAM,CAAC,qBAAqB;AAClC,KAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;AAC5B,KAAA,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB;MAOY,iBAAiB,CAAA;AAuER,IAAA,OAAA;AACV,IAAA,EAAA;AACD,IAAA,WAAA;AACC,IAAA,EAAA;AACA,IAAA,WAAA;AACA,IAAA,EAAA;AACD,IAAA,EAAA;AACA,IAAA,YAAA;AA7EQ,IAAA,OAAO,GAAG,IAAI,OAAO,EAAE;AAC/B,IAAA,IAAI;AACJ,IAAA,IAAI;AACJ,IAAA,QAAQ;AACR,IAAA,IAAI;AACb,IAAA,QAAQ;IACR,aAAa,GAAW,KAAK;IAC7B,QAAQ,GAAQ,EAAE;AAClB,IAAA,WAAW;IACX,YAAY,GAAQ,EAAE;IACtB,UAAU,GAAW,kBAAkB;IACvC,UAAU,GAAW,4BAA4B;AACjD,IAAA,SAAS;AACT,IAAA,cAAc;AACG,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;AACzC,IAAA,eAAe,GAAG;AAChB,QAAA;AACE,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC7C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC/C,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBACtD,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBACrD,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD;AACF,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,OAAO,EAAE;gBAEP,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD;AACF,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAClD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AAC9C;AACF,SAAA;AACA,QAAA;AACC,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,OAAO,EAAE;AACP,gBAAA;oBACE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;AAC3C,iBAAA;AACD,gBAAA;oBACE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;AAC9C,iBAAA;AACD,gBAAA;oBACE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;AAC9C;AACF;AACF;KAEF;AAED,IAAA,gBAAgB,CAAC,OAAwB,EAAA;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;AACvC,QAAA;IACH;AACA,IAAA,gBAAgB,CAAC,OAAwB,EAAA;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE;YACjC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;AACzC,QAAA;IACH;AAEA,IAAA,WAAA,CAAoB,OAA2B,EACrC,EAAqB,EACtB,WAA2B,EAC1B,EAAe,EACf,WAAwB,EACxB,EAAgB,EACjB,EAAsB,EACtB,YAAsB,EAAA;QAPX,IAAA,CAAA,OAAO,GAAP,OAAO;QACjB,IAAA,CAAA,EAAE,GAAF,EAAE;QACH,IAAA,CAAA,WAAW,GAAX,WAAW;QACV,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,EAAE,GAAF,EAAE;QACH,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,YAAY,GAAZ,YAAY;IAGrB;IACA,WAAW,GAAA;AAET,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAEzB;;AAGF,IAAA,OAAO,CAAC,aAAqB,EAAA;AAC3B,QAAA,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAEnD,QAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;AAEpD,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;QAErE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAEA,YAAU,EAAE;AAC/D,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG;AACvB,YAAA,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC;AACvB,SAAA,CAAC;QAEF,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9C;IAEE,QAAQ,GAAA;AACN,QAAA,IAAI,IAAS;QACb,IAAI,gBAAgB,IAAI,YAAY,EAAE;AACpC,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAChE,QAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACrE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS;QAElD,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE;YAClD,IAAI,CAAC,YAAY,EAAE;AACpB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,EAAE;AACpB,QAAA;QACD,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,gBAAA,WAAW,EAAE,YAAY;AACzB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK;AACrC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK;AACjC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK;AACzC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK;AAC7B,wBAAA,MAAM,EAAE;AACT,qBAAA;AACF;AACF,aAAA,CAAE;AACJ,QAAA;IACH;AAEA,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC;AACL,QAAA,CAAC,GAAG,KAAK,CAAC,QAAQ;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAClD;AAEA,IAAA,YAAY,CAAC,IAAY,EAAA;QACvB,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC3D;IACA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC;AACvC,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI;AAC3B,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YACzB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;YAEf;AACD,SAAA,CAAC;IACJ;AACA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,EAAE;AACjC,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC;AAC9C,QAAA;IAEH;AACA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAc;AAChE,QAAA,aAAa,CAAC,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;YACtC,aAAa,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,QAAA,CAAC,CAAC;QACF;;IAEF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAgB;QAC/E,aAAa,EAAE,KAAK,EAAE;IACxB;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;AAC7C,QAAA,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;AACjD,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAC3D,QAAA,OAAO,GAAG,WAAW,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,MAAM,EAAE;IAChD;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,QAAA,OAAO,GAAG,MAAM,CAAA,EAAG,YAAY,CAAA,EAAG,KAAK,EAAE;IAC3C;IACA,YAAY,GAAA;;QAER,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACnF,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;AAC7C,oBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;AAChC,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM;oBACvC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,KAAK,YAAY;oBAE1D,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK;oBAC7F,MAAM,MAAM,GAAG,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,YAAY;AAC7G,oBAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,KAAK;AACnC,oBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,YAAY;oBAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC5B,wBAAA,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;wBACzD,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;AACpD,gCAAA,UAAU,CAAC,OAAO,CAAC,kDAAkD,CAAC;AACzE,6BAAA,CAAC,CAAC;wBACD,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAE;AAChG,wBAAA,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACjD,wBAAA,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;AACzD,wBAAA,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;wBACvD,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3B,wBAAA,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;AAChE,qBAAA,CAAC;oBACF,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AACxD,oBAAA,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE;AACvB,wBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACxB,oBAAA;oBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE;oBACrC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS;AACtC,oBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC5B,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AACrC,oBAAA;;;oBAGD,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC;;AAG3D,oBAAA,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,EAAE;AAChC,wBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACxB,oBAAA;oBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE;AACrC,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;AAExB,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,YAAY,EAAE;AACpB,gBAAA;YACH,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,YAAY,EAAE;YACrB,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,SAAA,CAAC;IACJ;AAEA,IAAA,oBAAoB,CAAC,aAAiB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC5C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,IAAI,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9G,YAAA;AACF,QAAA;AAAM,aAAA;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC;AAC7C,YAAA;AACF,QAAA;IACH;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC5B,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YACnC,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;AACpD,oBAAA,UAAU,CAAC,OAAO,CAAC,kDAAkD;AACnE,iBAAA,CAAC,CAAC;YACH,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC;YACnC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC9C,YAAA,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YACvD,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3B,YAAA,WAAW,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACzC,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;gBAC5C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC7F,YAAA;AACF,QAAA;AAAM,aAAA;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC;AAC7C,YAAA;AACF,QAAA;QACD,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC7D;AACA,IAAA,kBAAkB,CAAC,eAAsB,EAAA;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAc;AACrE,QAAA,WAAW,CAAC,KAAK,EAAE,CAAC;AAEpB,QAAA,eAAe,CAAC,OAAO,CAAC,CAAC,eAAoB,KAAI;AAC/C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACjC,gBAAA,WAAW,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;gBAC3C,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3B,aAAA,CAAC;YAEF,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAc;YAC7D,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAW,KAAI;AAC9C,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAChC,oBAAA,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,oBAAA,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;AAChE,oBAAA,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;;AAEnE,iBAAA,CAAC;AACF,gBAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjC,YAAA,CAAC,CAAC;AAEF,YAAA,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACjC,QAAA,CAAC,CAAC;;QAGF,WAAW,CAAC,sBAAsB,EAAE;IACtC;IAEA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAc;IAC1D;AAEA,IAAA,qBAAqB,CAAC,eAAgC,EAAA;AACpD,QAAA,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAc;IACpD;IAEA,qBAAqB,CAAC,QAAgB,EAAE,QAAgB,EAAA;AACtD,QAAA,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,iBAAiB,CAAe,EAAC,KAAK,EAAE;AAC5D,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC;IAC/C;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK;AACnC,aAAA,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE;AACxC,aAAA,IAAI,EAAE;IACX;IAEA,aAAa,GAAW,EAAE;IAC1B,cAAc,GAAW,EAAE;IAC7B,aAAa,GAAA;AACX,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtE,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAEhD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ;AAElG,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC;AACzE,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,4BAA4B,CAAC;AACrD,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;oBAChC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AAC/C,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;gBAClB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC1B,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE;AAClB,SAAA,CAAC;IACJ;IAEE,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE;YACvB,IAAI,CAAC,UAAU,EAAE;AAClB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,aAAa,EAAE;AACrB,QAAA;IACH;IACA,UAAU,GAAA;QACZ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;AACpC,QAAA,IAAI,IAAI,GAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc;AACxC,QAAA;AAAM,aAAA;YACN,IAAI,CAAC,YAAY;AACjB,QAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE;AAGrC,QAAA,IAAI,OAAO,GAAyB;AAClC,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,UAAU,EAAE,CAAC;SACd;AAED,QAAA,IAAI,OAAO,GAAS,IAAI,CAAC,IAAI,CAAC,IAAI;AAClC,QAAA,IAAI,WAAW,GAAS,IAAI,CAAC,IAAI;AAEjC,QAAA,IAAG,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC,WAAW,CAAC,EAAC;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAC,KAAK,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC,SAAS,CAAC;AAClE,gBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,oBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;wBAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;;wBAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;wBAC5G,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;wBAE1C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;4BAC/B,IAAI,MAAM,KAAK,QAAQ,EAAE;AACtB,gCAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;gCACxB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACtC,oCAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,wCAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,4CAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CACrB,oCAAoC,CACrC;AACD,4CAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,wCAAA;AAAM,6CAAA;AACL,4CAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AAC/C,4CAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACzB,wCAAA;oCACH,CAAC;AACD,oCAAA,KAAK,EAAE,CAAC,GAAG,KAAI;wCACb,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,wCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;oCAC1B,CAAC;AACD,oCAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,iCAAA,CAAC;AACC,4BAAA;AACH,wBAAA,CAAC,CAAC;AACG,oBAAA;AAAM,yBAAA;wBACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC/C,4BAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gCAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oCAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CACrB,oCAAoC,CACrC;AACD,oCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,gCAAA;AAAM,qCAAA;AACL,oCAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AAC/C,oCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACzB,gCAAA;4BACH,CAAC;AACD,4BAAA,KAAK,EAAE,CAAC,GAAG,KAAI;gCACb,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,gCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;4BAC1B,CAAC;AACD,4BAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,yBAAA,CAAC;AACG,oBAAA;gBACH,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,GAAG,KAAI;oBACb,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;gBAC1B,CAAC;AACD,gBAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,aAAA,CAAC;AAEL,QAAA;AAAK,aAAA,IAAG,IAAI,EAAE,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,GAAC,OAAO,CAAC,WAAW,CAAC,EAAC;AAC7D,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM;AAEhC,YAAA,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAC;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAC,KAAK,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAC,MAAM,EAAC,CAAC,CAAC,SAAS,CAAC;AACnE,oBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,wBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;4BAEzD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;;;4BAG9C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;4BAC5G,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;4BAE1C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;gCAC/B,IAAI,MAAM,KAAK,QAAQ,EAAE;;oCAE5B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACtC,wCAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,4CAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,gDAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CACrB,oCAAoC,CACrC;AACD,gDAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,4CAAA;AAAM,iDAAA;AACL,gDAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AAC/C,gDAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACzB,4CAAA;wCACH,CAAC;AACD,wCAAA,KAAK,EAAE,CAAC,GAAO,KAAI;4CACjB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,4CAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;wCAC1B,CAAC;AACD,wCAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,qCAAA,CAAC;AACC,gCAAA;AACH,4BAAA,CAAC,CAAC;AACG,wBAAA;AAAM,6BAAA;4BACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC/C,gCAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,oCAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,wCAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CACrB,oCAAoC,CACrC;AACD,wCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,oCAAA;AAAM,yCAAA;AACL,wCAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AAC/C,wCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACzB,oCAAA;gCACH,CAAC;AACD,gCAAA,KAAK,EAAE,CAAC,GAAG,KAAI;oCACb,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,oCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;gCAC1B,CAAC;AACD,gCAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,6BAAA,CAAC;AACG,wBAAA;oBACH,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,GAAG,KAAI;wBACb,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,wBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;oBAC1B,CAAC;AACD,oBAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,iBAAA,CAAC;AACL,YAAA;AAAI,iBAAA;;gBAEL,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBAC5G,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;gBAEzC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;oBAChC,IAAI,MAAM,KAAK,QAAQ,EAAE;;wBAE5B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACtC,4BAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gCAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oCAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CACrB,oCAAoC,CACrC;AACD,oCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,gCAAA;AAAM,qCAAA;AACL,oCAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AAC/C,oCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACzB,gCAAA;4BACH,CAAC;AACD,4BAAA,KAAK,EAAE,CAAC,GAAO,KAAI;gCACjB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,gCAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;4BAC1B,CAAC;AACD,4BAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,yBAAA,CAAC;AACC,oBAAA;AACH,gBAAA,CAAC,CAAC;AAGL,YAAA;AAGA,QAAA;AACG,aAAA;YACF,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACrC,gBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,oBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,wBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CACrB,oCAAoC,CACrC;AACD,wBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,oBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AAC/C,wBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACzB,oBAAA;gBACH,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,GAAG,KAAI;oBACb,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;gBAC1B,CAAC;AACD,gBAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,aAAA,CAAC;AACL,QAAA;IAEC;AACA,IAAA,gCAAgC,CAAC,IAAS,EAAA;QACxC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;YAC5C,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AACvC,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC7B,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK;AACrB,oBAAA,OAAO,CAAC,MAAM,GAAG,KAAK;AACvB,gBAAA;AACH,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACb;AACA,IAAA,gBAAgB,GAAG,CAAC,IAAS,KAAI;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AACxC,YAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;AAC9C,QAAA;;QAGD,OAAO;AACL,YAAA,GAAG,IAAI;YACP,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAY,KAAI;gBACzD,OAAO;AACL,oBAAA,GAAG,OAAO;oBACV,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAY,KAAI;wBAC5C,MAAM,UAAU,GAA2B,EAAE;AAC7C,wBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;4BAClD,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,gCAAA,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK;AACxB,4BAAA;AACF,wBAAA;AACD,wBAAA,OAAO,UAAU;AACnB,oBAAA,CAAC;iBACF;AACH,YAAA,CAAC;SACF;AACH,IAAA,CAAC;IACD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAC5G,CAAC,GAAQ,KAAI;AACX,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;gBAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;AAChC,YAAA;AACH,QAAA,CAAC,CAAC;IACN;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE;AACtC,QAAA;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,EAAE;AACzC,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE;AACtC,QAAA;IACH;IACA,gBAAgB,GAAA;AACd,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAC/D,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IACxE;AACA,IAAA,YAAY,CAAC,QAAe,EAAA;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAc;AAChE,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;;YAEtB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC/B,oBAAA,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9B,oBAAA,QAAQ,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,oBAAA,QAAQ,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,oBAAA,UAAU,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU;AAC5C,iBAAA,CAAC,CAAC;AACJ,YAAA;AAEH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,KAAoB,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;QACrB,MAAM,KAAK,GAAG,kBAAkB;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE;AACvB,QAAA;IACH;AAEE,IAAA,oBAAoB,CAAC,KAAqB,EAAA;QAC5C,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAM,MAAc,CAAC,eAAe,CAAC;QAAC;QAC/E,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;QAChD,MAAM,KAAK,GAAG,mBAAmB;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC3B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qCAAqC,CAAC;AAC7D,QAAA;IACD;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;IACxB;wGA1qBW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,iICvB9B,o9aAqKU,EAAA,MAAA,EAAA,CAAA,spDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,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,EAAAJ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,qBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FD9IG,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,o9aAAA,EAAA,MAAA,EAAA,CAAA,spDAAA,CAAA,EAAA;2RAMhB,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MEAU,qBAAqB,CAAA;AA0DvB,IAAA,WAAA;AACC,IAAA,EAAA;AAA8B,IAAA,YAAA;AAC9B,IAAA,EAAA;AACA,IAAA,WAAA;AACA,IAAA,EAAA;AACD,IAAA,EAAA;AA9DA,IAAA,IAAI;AACJ,IAAA,IAAI;AACJ,IAAA,QAAQ;AACP,IAAA,gBAAgB,GAAyB,IAAI,YAAY,EAAU;AACrD,IAAA,SAAS;AACjC,IAAA,eAAe,GAAG;AAChB,QAAA;AACE,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC7C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC/C,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBACtD,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBACrD,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD;AACF,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,OAAO,EAAE;gBAEP,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD;AACF,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAClD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AAC9C;AACF,SAAA;KAEF;AACD,IAAA,QAAQ;AACR,IAAA,aAAa;IACb,aAAa,GAAa,EAAE;IAC5B,cAAc,GAAY,KAAK;IAC/B,UAAU,GAAW,kBAAkB;IACvC,UAAU,GAAU,iDAAiD;AACrE,IAAA,QAAQ;IACR,UAAU,GAAc,EAAE;AAC1B,IAAA,cAAc;AACG,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;AACzC,IAAA,SAAS;AACT,IAAA,eAAe,CAAC,OAAwB,EAAA;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;AACvC,QAAA;IACH;AACA,IAAA,gBAAgB,CAAC,OAAwB,EAAA;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE;;YAEjC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;AACzC,QAAA;IACH;AACA,IAAA,WAAA,CACS,WAA2B,EAC1B,EAAqB,EAAS,YAAsB,EACpD,EAAe,EACf,WAAwB,EACxB,EAAgB,EACjB,EAAsB,EAAA;QALtB,IAAA,CAAA,WAAW,GAAX,WAAW;QACV,IAAA,CAAA,EAAE,GAAF,EAAE;QAA4B,IAAA,CAAA,YAAY,GAAZ,YAAY;QAC1C,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,EAAE,GAAF,EAAE;QACH,IAAA,CAAA,EAAE,GAAF,EAAE;IACP;IAEJ,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS;AAClD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,EAAE,CAAC,IAAS,KAAI;AAClB,gBAAA,IAAI,IAAI,EAAE;AACR,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAErB,gBAAA;YACH,CAAC;AACF,SAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACrE,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,YAAY,EAAE;AACpB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC5B,QAAA;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,gBAAA,WAAW,EAAE,YAAY;AACzB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK;AACrC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK;AACjC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK;AACzC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK;AAC7B,wBAAA,MAAM,EAAE;AACT,qBAAA;AACF;AACF,aAAA,CAAE;AACJ,QAAA;IACH;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC5B,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YACnC,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;AACnD,oBAAA,UAAU,CAAC,OAAO,CAAC,kDAAkD,CAAC;AACrE,iBAAA,CAAC,CAAC;YACH,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,YAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzB,YAAA,aAAa,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;AACjD,YAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnD,SAAA,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;IACnD;AACA,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;AAC7C,QAAA,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;AACjD,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAC3D,QAAA,OAAO,GAAG,WAAW,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,MAAM,EAAE;IAChD;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,QAAA,OAAO,GAAG,MAAM,CAAA,EAAG,YAAY,CAAA,EAAG,KAAK,EAAE;IAC3C;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9C,oBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;AAChC,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,KAAK,MAAM;AAChD,oBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,KAAK,YAAY;oBAEnD,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK;oBAC7F,MAAM,MAAM,GAAG,CAAC,UAAU,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,YAAY;oBAE7G,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;wBAC5B,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;AAClD,wBAAA,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;AAChC,gCAAA,UAAU,CAAC,QAAQ;AACnB,gCAAA,UAAU,CAAC,OAAO,CAAC,kDAAkD,CAAC;AACvE,6BAAA,CAAC,CAAC;wBACH,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;wBAChG,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;wBAC1C,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;wBAClD,aAAa,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC5D,wBAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnD,qBAAA,CAAC;AAEF,oBAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC;AAE5C,oBAAA,IAAI,UAAU,EAAE;AACd,wBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACzB,oBAAA;AAED,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;AAEtC,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,YAAY,EAAE;AACpB,gBAAA;YACH,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,YAAY,EAAE;YACrB,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAClD;IAGA,aAAa,GAAA;AACX,QAAA,IAAI,GAAG,GAAG;AACR,YAAA,IAAI,EAAE;SACP;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC9G,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,GAAG;QACrC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QACnD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClC,QAAA,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,aAAa;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC;AACpK,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,4BAA4B,CAAC;AACrD,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;oBAChC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AAC/C,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACzB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC1B,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,SAAA,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE;AACtC,QAAA;IACH;AAEA,IAAA,kBAAkB,CAAC,eAAsB,EAAA;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAc;QAChE,WAAW,CAAC,KAAK,EAAE;AACnB,QAAA,eAAe,CAAC,OAAO,CAAC,CAAC,UAAe,KAAI;AAC1C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACjC,gBAAA,WAAW,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;gBACtC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3B,aAAA,CAAC;YAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAc;YACzD,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AAC1C,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACjC,oBAAA,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;AACpB,oBAAA,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;AACxB,oBAAA,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;;;AAGzB,iBAAA,CAAC;AACF,gBAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7B,YAAA,CAAC,CAAC;AAEF,YAAA,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AAChC,QAAA,CAAC,CAAC;AACF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA;IACH;AAEA,IAAA,WAAW,CAAC,WAAmB,EAAA;QAC7B,OAAO,IAAI,CAAC;aACT,GAAG,CAAC,YAAY;AACjB,cAAE,KAAK,CAAC,IAAI,CAAC,CAAC,UAAe,KAAK,UAAU,CAAC,WAAW,KAAK,WAAW;AACvE,aAAA,OAAO;IACZ;IAEA,qBAAqB,CAAC,QAAgB,EAAE,QAAgB,EAAA;QACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAe,CAAC,KAAK,EAAE;AACtD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvB,QAAA,IAAI,CAAC;AACF,aAAA,eAAe,CAAC;AACf,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,QAAQ;SACnB;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,EAAE;AACP,oBAAA,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AACnB,wBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AACxD,oBAAA;AAAM,yBAAA;wBACJ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAe,CAAC,KAAK,EAAE;AACvD,oBAAA;AACF,gBAAA;AAAM,qBAAA;oBACJ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAe,CAAC,KAAK,EAAE;AACvD,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAU,KAAI;gBACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAe,CAAC,KAAK,EAAE;YACxD,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,SAAA,CAAC;AACJ,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC;AACL,QAAA,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;AACnB,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAClD;IAEA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAc;IACrD;AAEA,IAAA,qBAAqB,CAAC,UAA2B,EAAA;AAC/C,QAAA,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAc;IAC/C;AACF,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,MAAM,KAAK,GAAG,mBAAmB;AACjC,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;AACE,IAAA,QAAQ,CAAC,CAAM,EAAA;AACb,QAAA,IAAI,IAAW;AACf,QAAA,MAAM,MAAM,GAA+B,CAAC,CAAC,MAAM;AACnD,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,QAAA;QACC,MAAM,IAAI,GAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,QAAA,MAAM,YAAY,GAAG;YACnB,mEAAmE;YACnE,0BAA0B;YAC1B,UAAU;YACV,iBAAiB;SAClB;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3E,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wCAAwC,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACvC;AACD,QAAA;AACC,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAChD,YAAA,MAAM,MAAM,GAAe,IAAI,UAAU,EAAE;AAC3C,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,gBAAA,MAAM,IAAI,GAAW,CAAC,CAAC,MAAM,CAAC,MAAM;AACpC,gBAAA,MAAM,EAAE,GAAa,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACnD,MAAM,MAAM,GAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBACvC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;AAC/B,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,8BAA8B,CAAC;oBAClD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;oBAC1C;AACD,gBAAA;AACD,gBAAA,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;AAChC,YAAA,CAAC;YAED,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE1C,YAAA,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,KAAI;gBAC7B,IAAI,cAAc,GAAU,EAAE;gBAC9B,IAAI,OAAO,GAAU,EAAE;AACvB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACjC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AAC1C,oBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;oBAClE,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAC/D;oBACY,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC7D,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAA,IAAA,EAAO,CAAC,GAAG,CAAC,CAAA,aAAA,EAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA,wBAAA,CAA0B,CAAC;AACrF,oBAAA;oBACK,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,aAAa,CAChB,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EACf,SAAS,EACT,CAAC,EACD,IAAI,CAAC,UAAU,CAChB,CACF;;AAEF,gBAAA;AAED,gBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC1C,gBAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtB,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC;AACR,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,WAAW,EAAE;AACX,4BAAA,aAAa,EAAE,2BAA2B;AAC3C,yBAAA;AACD,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,iBAAiB,EAAE,IAAI;AACvB,wBAAA,kBAAkB,EAAE,SAAS;AAC7B,wBAAA,iBAAiB,EAAE,IAAI;qBACxB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI,EAAG,CAAC,CAAC;oBACxB;AACD,gBAAA;AAED,gBAAA,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AAEzB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACpC,cAAc,CAAC,IAAI,CAAC;AAClB,wBAAA,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;AAC1B,wBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;wBACpB,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;AACxC,wBAAA,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;AAC/B,wBAAA,IAAI,EAAE,MAAM;wBACZ,eAAe,EAAE,IAAI,CAAC;AACvB,qBAAA,CAAC;AACH,gBAAA;AAED,gBAAA,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC9B,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AACvD,gBAAA;AAGD,gBAAA,IAAI,CAAC;AACF,qBAAA,gBAAgB,CACf;AACE,oBAAA,KAAK,EAAE,cAAc;oBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG;iBAC7E;AAEF,qBAAA,SAAS,CAAC;AACT,oBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,wBAAA,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AACnB,4BAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AAChC,4BAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,wCAAwC,CAAC;AAClE,wBAAA;oBACH,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,KAAU,KAAI;AACpB,wBAAA,IAAI,KAAK,EAAE;4BACN,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;4BAC1C,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,kCAAkC,CAAC;;;AAGlG,wBAAA;oBACH,CAAC;AACF,iBAAA,CAAC;AACN,YAAA,CAAC;YACD,CAAC,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3D,QAAA;AAAK,aAAA;AACJ,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,4BAA4B,CAAC;YACnD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,QAAA;IACH;AAEA,IAAA,aAAa,CACX,KAAyC,EACzC,SAAiB,EACjB,GAAW,EACX,KAAc,EAAA;QAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC1D,OAAO,CAAA,kBAAA,EAAqB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAC,CAAA,CAAE;AACxE,QAAA;QACD,MAAM,YAAY,GAAG,CAAA,iBAAA,EAAoB;AACtC,aAAA,WAAW;AACX,aAAA,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;QAC7C,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,CAAA,aAAA,EAAgB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAC,CAAA,CAAE;AACnE,QAAA;AACD,QAAA,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;YAC5B,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,YAAY,CAAC,IAAI,EAAE,EAAE;gBACxC,OAAO,CAAA,kBAAA,EAAqB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAC,CAAA,CAAE;AACxE,YAAA;AACD,YAAA,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;AACtC,gBAAA,OAAO,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAE,KAAK,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAC,YAAY,EAAC,CAAC;gBAExF,OAAO,CAAA,mBAAA,EAAsB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CACnE,CAAA,CAAE;AACL,YAAA;AACF,QAAA;AACD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,YAAY,CAAC,IAAY,EAAA;QACvB,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;IACjD;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE;AACpC,QAAA,IAAI,IAAI,GAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE;QACrC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CACrB,oCAAoC,CACrC;AACD,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC;AAC/C,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACzB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;gBACb,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,wBAAwB,CAAC;AACvF,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC1B,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,EAAE;YAChC,IAAI,CAAC,UAAU,EAAE;AAClB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,aAAa,EAAE;AACrB,QAAA;IACH;IACA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK;AACnC,aAAA,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE;AACxC,aAAA,IAAI,EAAE;IACX;wGAxgBW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,mRC5BlC,2jiBA0NM,EAAA,MAAA,EAAA,CAAA,0mEAAA,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,EAAAE,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FD9LO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,2jiBAAA,EAAA,MAAA,EAAA,CAAA,0mEAAA,CAAA,EAAA;6PAKrB,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACS,gBAAgB,EAAA,CAAA;sBAAzB;gBACuB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;;;ME1BX,oBAAoB,CAAA;AAuBX,IAAA,EAAA;AAA+B,IAAA,WAAA;AArBnD,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;AAES,IAAA,KAAK;AACL,IAAA,WAAW;AACX,IAAA,KAAK;AACL,IAAA,OAAO;IACP,cAAc,GAAQ,EAAE;AACxB,IAAA,QAAQ;AACR,IAAA,KAAK;AACJ,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;IAC5C,cAAc,GAAQ,EAAE;AACxB,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,UAAU;IAGV,WAAA,CAAoB,EAAqB,EAAU,WAAuB,EAAA;QAAtD,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,WAAW,GAAX,WAAW;IAAgB;IAC9E,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE;QACrC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG;AAC9C,YAAA,IAAG,CAAC,KAAK,IAAI,CAAC,UAAU,EAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAEhC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;YAC1C,IAAI,CAAC,eAAe,EAAE;AACvB,QAAA;AACD,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE;YAC5L,IAAI,CAAC,oBAAoB,EAAE;AAC5B,QAAA;IACH;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;QAClB,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,YAAiB,KAAI;AACjD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,YAAiB,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5H,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACvB,YAAA;AACH,QAAA,CAAC,CAAC;IAEJ;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACrB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACtD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA;AAAM,aAAA;YACL,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;AACnD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAS,KAChD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1D;AACF,QAAA;QACD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAEA,QAAQ,CAAC,KAAU,EAAE,IAAS,EAAA;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAE;AAChC,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3G,YAAA;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAW,KAAI;AAC1C,gBAAA,IAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC;AAC9C,oBAAA,OAAO,CAAC,UAAU,GAAG,KAAK;AAC3B,gBAAA;AACH,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAU,KAAI;AAC1D,YAAA,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE;YACjC,OAAO,YAAY,CAAC,UAAU;AAC9B,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IAEvC;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAEvE,QAAA,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC/C,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACzB,QAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAU,KAAI;YAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK;AAC7C,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IACvC;AAGA,IAAA,kBAAkB,CAAC,MAAa,EAAA;QAC9B,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA;IACH;IAEA,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,CAAC;IAClE;wGAxIW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,kVCPjC,o/FA2CM,EAAA,MAAA,EAAA,CAAA,guFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,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,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,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,CAAA,EAAA,CAAA;;4FDpCO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,o/FAAA,EAAA,MAAA,EAAA,CAAA,guFAAA,CAAA,EAAA;6GAM5B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAQjC,KAAK,EAAA,CAAA;sBAAb;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACS,QAAQ,EAAA,CAAA;sBAAjB;;;MEFU,yBAAyB,CAAA;AAmB1B,IAAA,WAAA;AACA,IAAA,EAAA;AACA,IAAA,EAAA;AACD,IAAA,WAAA;AACC,IAAA,YAAA;AAtBD,IAAA,IAAI;IACb,MAAM,GAAW,QAAQ;IACzB,MAAM,GAAU,EAAE;IAClB,QAAQ,GAAU,EAAE;IACpB,KAAK,GAAO,EAAE;AACd,IAAA,cAAc;AACd,IAAA,QAAQ;AACR,IAAA,QAAQ;AACR,IAAA,QAAQ;AACR,IAAA,kBAAkB;AAClB,IAAA,oBAAoB;AACpB,IAAA,iBAAiB;AACO,IAAA,SAAS;AACH,IAAA,eAAe;AAE7C,IAAA,WAAW;IAEX,WAAA,CACU,WAAwB,EACxB,EAAqB,EACrB,EAAgB,EACjB,WAA2B,EAC1B,YAAsB,EAAA;QAJtB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,EAAE,GAAF,EAAE;QACH,IAAA,CAAA,WAAW,GAAX,WAAW;QACV,IAAA,CAAA,YAAY,GAAZ,YAAY;AAEpB,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,EAAE,CAAC,IAAS,KAAI;AAClB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,YAAY,GAAG,OAAO,GAAG,QAAQ;YAC3D,CAAC;AACF,SAAA,CAAC;AACF,QAAA,IAAI,IAAI,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AACxE,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC3B,QAAA;aAAM,IAAG,CAAC,IAAI,EAAC;AACd,YAAA,IAAI,IAAI,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACnE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;YAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ;AAC3C,QAAA;IACH;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC;AACF,aAAA,iBAAiB,CAAC;AACjB,YAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;SACvB;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;oBAC1B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBACxC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC5C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAEtC,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,gBAAA;YACH,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YACzB,CAAC;AACF,SAAA,CAAC;IACN;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC;aACF,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACxD,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;oBAC3C,IAAI,CAAC,qBAAqB,EAAE;AAC7B,gBAAA;YACH,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE;YAChC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACN;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC;aACF,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC1D,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;AAE9C,gBAAA;YACH,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE;YAClC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACN;IACA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC;AACF,aAAA,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AACnF,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;;;;AAK3C,gBAAA;YACH,CAAC;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE;YAClC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACN;AAEA,IAAA,UAAU,CAAC,CAAM,EAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;;AAGzB,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE;YAC3B,IAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,IAAE,CAAC,EAAC;AACvC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,eAAe;AAC1C,YAAA;AAAI,iBAAA;AACH,gBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,kBAAkB;AAClF,YAAA;AACF,QAAA;AAAM,aAAA,IAAG,IAAI,CAAC,MAAM,IAAG,UAAU,EAAE;YAClC,IAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,IAAE,CAAC,EAAC;AACvC,gBAAA,IAAI,CAAC,oBAAoB,GAAG,iBAAiB;AAC9C,YAAA;AAAI,iBAAA;AACH,gBAAA,IAAI,CAAC,oBAAoB,GAAG,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,oBAAoB;AACtF,YAAA;AACF,QAAA;AAAK,aAAA,IAAG,IAAI,CAAC,MAAM,IAAG,OAAO,EAAE;YAC9B,IAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,IAAE,CAAC,EAAC;AACvC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,cAAc;AACxC,YAAA;AAAI,iBAAA;AACH,gBAAA,IAAI,CAAC,iBAAiB,GAAG,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,iBAAiB;AAChF,YAAA;AACF,QAAA;IACH;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,EAAE;IAClC;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClB,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,EAAE;IAClC;IACA,UAAU,GAAA;QACR,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,EAAE;IAClC;IACA,YAAY,GAAY,KAAK;AAC7B,IAAA,UAAU,GAAU;AAClB,QAAA,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;AACrC,QAAA,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;AACzC,QAAA,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;KAEpC;IACD,mBAAmB,GAAU,CAAC,EAAE,EAAE,EAAE,EAAC,EAAE,CAAC;AACxC,IAAA,YAAY;AAEZ,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;YACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,CAAM,KAAI;AAC5C,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACrB,YAAA,CAAC,CAAC;AACH,QAAA;IACH;AAEA,IAAA,QAAQ,CAAC,KAAU,EAAE,KAAa,EAAE,KAAiB,EAAA;QACnD,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,CAAM,KAAI;YAC5C,IAAI,CAAC,KAAK,KAAK,EAAE;AACf,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACpB,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM;IAChE;AAEA,IAAA,oBAAoB,CAClB,KAAU,EACV,KAAU,EACV,KAAa,EACb,QAAgB,EAAA;QAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM;AACxC,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE;QAE/D,IAAI,KAAK,KAAK,YAAY,EAAE;AAC1B,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACpC,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,IAAS,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;AACvD,YAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;AACzD,QAAA;AAAM,aAAA;AACL,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CACtD,CAAC,IAAS,KAAK,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAClD;YACD;kBACI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AACxC,kBAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,SAAS;AAC5D,QAAA;AAED,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,OAAO,CAAC;AAEhE,QAAA,QAAQ,CAAC,cAAc,CAAC,CAAA,SAAA,EAAY,KAAK,EAAE,CAC5C,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAElD,QAAQ,CAAC,cAAc,CAAC,CAAA,MAAA,EAAS,KAAK,CAAC,SAAS,CAAA,CAAE,CACnD,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,kBAAkB;IACnF;AACA,IAAA,mBAAmB,CACjB,KAAU,EACV,IAAS,EACT,KAAa,EACb,QAAgB,EAAA;QAGhB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK;AACtC,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE;QAE/D,IAAI,IAAI,KAAK,YAAY,EAAE;AACzB,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;AACpC,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,MAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;AACtD,YAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE;AACxD,QAAA;AAAM,aAAA;AACL,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;YACtC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CACtD,CAAC,IAAS,KAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAC/C;YACD;kBACI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACvC,kBAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,SAAS;AAC3D,QAAA;AAED,QAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,OAAO,CAAC;AAE/D,QAAA,QAAQ,CAAC,cAAc,CAAC,CAAA,SAAA,EAAY,KAAK,EAAE,CAC5C,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAElD,QAAQ,CAAC,cAAc,CAAC,CAAA,MAAA,EAAS,KAAK,CAAC,SAAS,CAAA,CAAE,CACnD,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,iBAAiB;IACjF;AAEA,IAAA,SAAS,CAAC,MAAa,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACrB,QAAA;AAAM,aAAA,IAAG,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;AACvB,QAAA;AAAK,aAAA,IAAG,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM;AACpB,QAAA;AACD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAI,KAAK;AACpC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AACA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAI,KAAK;AACpC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AACA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAI,KAAK;AACpC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAGA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7D,IAAI,CAAC,cAAc,EAAE;AACtB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,EAAE;AACpB,QAAA;IACH;AAEC,IAAA,UAAU;IACX,SAAS,GAAQ,EAAE;IACnB,eAAe,GAAQ,EAAE;AAEzB,IAAA,cAAc,CAAC,IAAS,EAAA;QAEtB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACtF,OAAO,eAAe,CAAC,IAAI;IAE7B;IAEA,SAAS,GAAY,KAAK;IAC1B,OAAO,GAAQ,EAAE;AAEjB,IAAA,QAAQ,CAAC,CAAK,EAAA;QACZ,IAAI,IAAI,GAAQ,EAAE;QAClB,IAAI,KAAK,GAAQ,EAAE;QACnB,IAAI,SAAS,GAAQ,EAAE;QAEvB,MAAM,IAAI,GAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,QAAA,MAAM,YAAY,GAAG;YACnB,mEAAmE;YACnE,0BAA0B;YAC1B,UAAU;YACV,iBAAiB;SAClB;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3E,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wCAAwC,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACvC;AACD,QAAA;AAEC,QAAA,MAAM,MAAM,GAA+B,CAAC,CAAC,MAAM;AACnD,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,QAAA;AACD,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAChD,YAAA,MAAM,MAAM,GAAe,IAAI,UAAU,EAAE;AAC3C,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,gBAAA,MAAM,IAAI,GAAW,CAAC,CAAC,MAAM,CAAC,MAAM;AACpC,gBAAA,MAAM,EAAE,GAAa,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACnD,MAAM,MAAM,GAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AAEvC,gBAAA,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,EAAC,MAAM,EAAE,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC;AACrD,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,gBAAA,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9B,YAAA,CAAC;YAED,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAA,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,KAAI;gBAC7B,IAAI,cAAc,GAAU,EAAE;gBAE9B,IAAI,SAAS,IAAI,WAAW,EAAE;AAC5B,oBAAA,IAAI,CAAC,SAAS,GAAI,IAAI;AACrB,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,uDAAuD,CAAC;oBAC9E;AACF,gBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AACf,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,4BAA4B,CAAC;oBACnD;AACH,gBAAA;AAED,gBAAA,MAAM,YAAY,GAAG,CAAC,qBAAqB,CAAC,CAAA;;gBAG5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAS,KAAI;oBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,oBAAA,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrE,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IACtC,YAAY,CAAC,QAAQ,CAAC,GAAG;;qBAE1B;oBACD,OAAO,eAAe,IAAI,iBAAiB;AAC7C,gBAAA,CAAC,CAAC;gBAEF,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,6BAA6B,CAAC;oBACpD;AACD,gBAAA;gBAED,IAAI,EAAE,OAAO,CAAC,CAAC,OAAY,EAAE,KAAU,KAAI;oBACzC,IAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,qBAAqB,CAAC,IAAI,IAAI,EAAE;wBAC5H,KAAK,CAAC,IAAI,CAAC,CAAA,+BAAA,EAAkC,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAC1D,oBAAA;AAAM,yBAAA;wBACL,cAAc,CAAC,IAAI,CAAC;AAClB,4BAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB;AACzC,yBAAA,CAAC;AACH,oBAAA;AACH,gBAAA,CAAC,CAAC;gBACF,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,oBAAA,MAAM,YAAY,GAAG;AACnB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,wBAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,wBAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,wBAAA,UAAU,EAAE,OAAO;AACnB,wBAAA,KAAK,EAAE;qBACR;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC/B;AACD,gBAAA;gBAED,IAAG,IAAI,CAAC,SAAS,EAAC;oBAChB;AACD,gBAAA;gBAED,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,EAAO,KAAI,EAAG,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA,CAAC,CAAC,CAAC;AAEhF,gBAAA,IAAI,CAAC;AACC,qBAAA,eAAe,CAAC;AACf,oBAAA,SAAS,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AACzB,oBAAA,IAAI,EAAE;iBACP;AACA,qBAAA,SAAS,CAAC;AACT,oBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,wBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;4BAC1B,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;AAC/B,4BAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAO,KAAI;gCACjE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM;AAC3C,gCAAA,MAAM,KAAK,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC;AAC3D,gCAAA,IAAI,KAAK,EAAE;AACT,oCAAA,KAAK,CAAC,OAAO,GAAG,IAAI;AACpB,oCAAA,OAAO,KAAK;AACf,gCAAA;AACD,gCAAA,OAAO,IAAI;AACX,4BAAA,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAK,IAAI,KAAK,IAAI,CAAC;4BAEtC,IAAI,CAAC,YAAY,EAAE;AACpB,wBAAA;AAAI,6BAAA;AACH,4BAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gDAAgD,CAAC;AACxE,wBAAA;oBACH,CAAC;AACD,oBAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;wBAClB,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE;AACzB,4BAAA,MAAM,YAAY,GAAG;AACnB,gCAAA,WAAW,EAAE,KAAK;AAClB,gCAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,gCAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,gCAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,gCAAA,UAAU,EAAE,OAAO;AACnB,gCAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;6BAClB;AACD,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;4BAC/B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,wBAAA;AAAM,6BAAA;4BACL,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;4BACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,wBAAA;oBACH,CAAC;AACF,iBAAA,CAAC;AACV,YAAA,CAAC;;AAEF,QAAA;IACH;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,kBAAkB;IACnF;IAEC,gBAAgB,GAAA;;IAEjB;AAEA,IAAA,YAAY,CAAC,IAAU,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC3B,QAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACxJ;IAEA,YAAY,GAAA;AAEV,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAO,KAAI;YACzD,OAAO;gBACL,GAAG,EAAE,EAAE,EAAE,GAAG;gBACZ,SAAS,EAAC,EAAE,EAAE,SAAS;gBACvB,OAAO,EAAC,EAAE,EAAE;aACb;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,IAAI,EAAE,CAAC;AACL,oBAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;oBAC1B,MAAM,EAAE,IAAI,CAAC,OAAO;AACpB,oBAAA,QAAQ,EAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACpC,oBAAA,KAAK,EAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;iBACjC;;;;SAIF;AACD,QAAA,IAAI,CAAC;aACF,UAAU,CAAC,OAAO;AAClB,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAA,qCAAA,CAAuC,CAAC;AACjE,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA,gCAAA,CAAkC,CAAC;AAC1D,gBAAA;AACD,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClC,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,kCAAkC,CAAC;AACzD,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC1B,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACN;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,OAAO,GAAE;AACX,YAAA,MAAM,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AACpB,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,YAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,MAAM,EAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAClC,YAAA,QAAQ,EAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACpC,YAAA,KAAK,EAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACjC;AACD,QAAA,IAAI,CAAC;aACF,cAAc,CAAC,OAAO;AACtB,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAA,qCAAA,CAAuC,CAAC;AACjE,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA,gCAAA,CAAkC,CAAC;AAC1D,gBAAA;AACD,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClC,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,kCAAkC,CAAC;AACzD,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC1B,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACN;AAEA,IAAA,kBAAkB,CAAC,MAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,KAAI;AAC/C,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAE,CAAE,GAAO,KAAM,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAE;AAC1E,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,KAAK,CAAC,OAAO,GAAG,IAAI;gBACpB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,YAAA;AACH,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,kBAAkB;IACnF;AACA,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;AAC7C,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAE,CAAE,GAAO,KAAM,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAE;AAChE,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;gBACnB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,iBAAiB;IACjF;AACA,IAAA,oBAAoB,CAAC,QAAe,EAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AACnD,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAE,CAAE,GAAO,KAAM,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAE;AACtE,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,OAAO,CAAC,OAAO,GAAG,IAAI;gBACtB,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAChC,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,oBAAoB;IACvF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClC;wGAtkBW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAO,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,mWCrBtC,msoBAuSc,EAAA,MAAA,EAAA,CAAA,+vJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,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,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,EAAAC,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FDlRD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,IAAA,EAI5B;AACJ,wBAAA,kBAAkB,EAAE,iBAAiB;AACtC,qBAAA,EAAA,QAAA,EAAA,msoBAAA,EAAA,MAAA,EAAA,CAAA,+vJAAA,CAAA,EAAA;gMAGQ,IAAI,EAAA,CAAA;sBAAZ;gBAYuB,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;gBACQ,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB;;;AE/B9B,MAAM,UAAU,GAAG,iFAAiF;AACpG,MAAM,eAAe,GAAG,OAAO;MAKlB,YAAY,CAAA;AAGvB,IAAA,WAAA,GAAA,EAAgB;IAET,iBAAiB,CAAC,IAAW,EAAE,aAAqB,EAAA;QACzD,MAAM,SAAS,GAAmB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AAChE,QAAA,MAAM,QAAQ,GAAkB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE;AACvF,QAAA,MAAM,WAAW,GAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAClF,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC;IAClD;IAEO,eAAe,CAAC,MAAW,EAAE,QAAgB,EAAA;AAClD,QAAA,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;QAE7B,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;QACF,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAE,eAAe,CAAC;IAC5D;IAEQ,cAAc,CAAC,MAAW,EAAE,QAAgB,EAAA;QAClD,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,IAAI,EAAE;AACP,SAAA,CAAC;QACF,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,eAAe,CAAC;IACpD;wGA1BW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCeY,kBAAkB,CAAA;AAkCpB,IAAA,YAAA;AAAgC,IAAA,QAAA;AAC/B,IAAA,cAAA;AACA,IAAA,YAAA;AACD,IAAA,EAAA;AACC,IAAA,YAAA;AACA,IAAA,WAAA;;AAnCV,IAAA,QAAQ;AACR,IAAA,WAAW;IACX,QAAQ,GAAU,EAAE;AACpB,IAAA,YAAY;AACZ,IAAA,UAAU,GAAQ;AAChB,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,CAAC;KACd;IACD,OAAO,GAAY,IAAI;IACvB,MAAM,GAAY,KAAK;IACvB,eAAe,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxC,IAAA,YAAY;AACZ,IAAA,QAAQ;AACR,IAAA,cAAc;AACd,IAAA,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;AAChB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IACzC,KAAK,GAAU,EAAE;AACjB,IAAA,UAAU;IACV,YAAY,GAAQ,EAAE;AACtB,IAAA,WAAW;AACX,IAAA,cAAc;AACd,IAAA,QAAQ;AACR,IAAA,UAAU,GAAQ;AAChB,QAAA,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QAC3I,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;KAC1G;AACD,IAAA,aAAa;AACb,IAAA,cAAc;AACd,IAAA,WAAA,CACS,YAAsB,EAAU,QAAyB,EACxD,cAAiC,EACjC,YAA0B,EAC3B,EAAsB,EACrB,YAA0B,EAC1B,WAAwB,EAAA;QALzB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAAoB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACvC,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,YAAY,GAAZ,YAAY;QACb,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,WAAW,GAAX,WAAW;QAEnB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACnE,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa;AACtC,YAAA;AACH,QAAA,CAAC,CAAC;;IAEJ;;;;;;;;;;;;IAeA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,oEAAoE,CAAC;QAClG,IAAI,WAAW,GAAU,EAAE;QAC3B,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,EAAE;AAClD,YAAA,WAAW,GAAG;AACZ,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,KAAK;AACnB,iBAAA;AACD,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,IAAI;AAClB,iBAAA;aACF;AACF,QAAA;aAAM,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,EAAE;AAC1D,YAAA,WAAW,GAAG;AACZ,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,KAAK;AACnB,iBAAA;AACD,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,IAAI;AAClB,iBAAA;aACF;AACF,QAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;IAC3C;IACA,QAAQ,GAAA;AAEN,QAAA,IAAI,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACvE,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,IAAI;QAC9B,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;;;;;;;AAOhD,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QACvB,IAAI,CAAC,YAAY,GAAG;;AAElB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,CAAC;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;QACD,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,WAAW,EAAE;;;;;IAKpB;IACA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;YACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;YACtD,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;YACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;YACtD,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;IACH;IACA,SAAS,CAAC,IAAS,EAAE,IAAU,EAAA;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC1F,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,OAAO;QAC7C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC9B,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;IACJ;IAEA,KAAK,CAAC,IAAS,EAAE,IAAU,EAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC7D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;AACF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,OAAO;QAC7C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC9B,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,gBAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC1B,IAAI,CAAC,YAAY,GAAG;AAClB,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB;gBACD,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;;;;AAMA,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,UAAU;AACrC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU;AACnC,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AAC9B,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;AAC9C,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE;aACT;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AAC9B,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;AAC9C,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE;aACT;AACF,QAAA;QACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QACtD,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QAC/B,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AAC9B,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;AAC9C,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE;aACT;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AAC9B,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;AAC9C,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE;aACT;AACF,QAAA;QACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QACtD,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACjE,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;AACF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;QACtC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC9B,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC1B,IAAI,CAAC,YAAY,GAAG;;AAElB,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,oBAAA,WAAW,EAAE,EAAE;iBAChB;gBACD,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACtF,CAAC,GAAQ,KAAI;AACX,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;gBAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;gBAC/B,IAAI,CAAC,UAAU,GAAG;AAChB,oBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,oBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5B,oBAAA,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;oBAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B;AACD,gBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE;oBACvB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpC,gBAAA;AACD,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACrB,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;gBAClB,IAAI,CAAC,UAAU,GAAG;AAChB,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,UAAU,EAAE,CAAC;iBACd;AACD,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACnB,YAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACrC,QAAA,CAAC,EACD,CAAC,KAAU,KAAI;AACb,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;YAClB,IAAI,CAAC,UAAU,GAAG;AAChB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,UAAU,EAAE,CAAC;aACd;AACD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACpB,QAAA,CAAC,CACF;IACH;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU;AAClC,QAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK;AAC7B,QAAA;IACH;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAE;aACT;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;YACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACtD,YAAA,IAAI,CAAC;AACF,iBAAA,iBAAiB,CAAC,IAAI,CAAC,YAAY;AACnC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;oBACjB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC;gBAEvD,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,oBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;gBACrC,CAAC;AACD,gBAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,aAAA,CAAC;AACL,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAE;aACT;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;YACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACtD,YAAA,IAAI,CAAC;AACF,iBAAA,iBAAiB,CAAC,IAAI,CAAC,YAAY;AACnC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;oBACjB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC;gBAEvD,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,oBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;gBACrC,CAAC;AACD,gBAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,aAAA,CAAC;AACL,QAAA;IAGH;IACA,gBAAgB,CAAC,IAAS,EAAE,CAAS,EAAA;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAChH,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ;QACjD,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,EAAE,QAAQ;QACpD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC9B,YAAA,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,KAAK,QAAQ,EAAE;oBACvB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC;AACrF,wBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,4BAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;gCAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,oCAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,wBAAwB,CAAC;AAC5D,gCAAA;AAAM,qCAAA;AACL,oCAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,0BAA0B,CAAC;AAC9D,gCAAA;AACF,4BAAA;AAAM,iCAAA;AACL,gCAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,+BAA+B,CAAC;AAChE,gCAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC3C,4BAAA;wBACH,CAAC;wBACD,KAAK,EAAE,MAAK;AACV,4BAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,+BAA+B,CAAC;AAChE,4BAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;wBAC5C,CAAC;AACD,wBAAA,QAAQ,EAAE,MAAK,EAAG;AACnB,qBAAA,CAAC;AACH,gBAAA;qBAAM,IAAI,MAAM,KAAK,OAAO,EAAE;AAC7B,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC3C,gBAAA;AACF,YAAA;AACH,QAAA,CAAC,CAAC;IAEJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,GAAG;AACT,YAAA,QAAQ,EAAE;SACX;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;oBAC1B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;oBAC5B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK;AACjC,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AAChB,gBAAA;AACD,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,SAAA,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,GAAG,GAAG;AACR,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,YAAY,EAAE;SACf;QACD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;IAClC;AACA,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClD;AACA,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK;AAChC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,KAAK,MAAM,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACnE,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC7B,QAAA;QACD,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACrB,IAAI,KAAK,EAAE,MAAM,EAAE;AACjB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AAC7B,gBAAA,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,EAAE;AACnC,oBAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,EAAE,EAAE,CAAC;AAC/D,gBAAA;AACD,gBAAA,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE;AACpC,oBAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,EAAE,EAAE,CAAC;AAChE,gBAAA;AACH,YAAA,CAAC,CAAC;AACH,QAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE;QAC5B,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACtD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK;QAChC,IAAI,CAAC,SAAS,EAAE;IAClB;wGAleW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAe,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,sDCxB/B,09kBAyPe,EAAA,MAAA,EAAA,CAAA,2pCAAA,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,EAAAP,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FDjOF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,09kBAAA,EAAA,MAAA,EAAA,CAAA,2pCAAA,CAAA,EAAA;;;MEZf,mBAAmB,CAAA;AA2BR,IAAA,EAAA;AAA+B,IAAA,WAAA;AAxBnD,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAC1B,QAAA;IACH;AAES,IAAA,KAAK;AACL,IAAA,WAAW;AACX,IAAA,KAAK;AACL,IAAA,OAAO;IACP,cAAc,GAAQ,EAAE;AACxB,IAAA,QAAQ;AACR,IAAA,KAAK;AACL,IAAA,UAAU;AACV,IAAA,SAAS;AAER,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;IAC5C,cAAc,GAAQ,EAAE;AACxB,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,UAAU;IAGV,WAAA,CAAoB,EAAqB,EAAU,WAA+B,EAAA;QAA9D,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,WAAW,GAAX,WAAW;IAAwB;IACtF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE;QACrC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAG;AAC9C,YAAA,IAAG,CAAC,KAAK,IAAI,CAAC,UAAU,EAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACxB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAEhC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;YAC1C,IAAI,CAAC,eAAe,EAAE;AACvB,QAAA;AAED,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,CAAC,EAAE;YACvF,IAAI,CAAC,oBAAoB,EAAE;AAC5B,QAAA;IACH;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,oBAAoB,GAAA;QAClB,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,YAAiB,KAAI;AACjD,YAAA,YAAY,CAAC,UAAU,GAAG,KAAK;AACjC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,YAAiB,KAAI;AACjD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,YAAiB,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5H,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACvB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACrB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACtD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA;AAAM,aAAA;YACL,MAAM,UAAU,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE;AACrD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAS,KACjD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAC9F;;;;AAIF,QAAA;QACD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;IAEA,QAAQ,CAAC,KAAU,EAAE,IAAS,EAAA;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAE;AAChC,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3G,YAAA;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAW,KAAI;AAC1C,gBAAA,IAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAC;AAC9C,oBAAA,OAAO,CAAC,UAAU,GAAG,KAAK;AAC3B,gBAAA;AACH,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAE1B,QAAA;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAU,KAAI;AAC1D,YAAA,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE;YACjC,OAAO,YAAY,CAAC,UAAU;AAC9B,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IAEvC;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAEvE,QAAA,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AAC/C,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACzB,QAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAU,KAAI;YAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK;AAC7C,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;IACvC;AAGA,IAAA,kBAAkB,CAAC,MAAa,EAAA;QAC9B,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA;IACH;IAEA,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,UAAU,CAAC;IAClE;IAEA,WAAW,CAAC,IAAQ,EAAE,KAAS,EAAA;;AAE7B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAU,EAAE,IAAS,KAAI;AACzE,YAAA,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;AACvB,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,YAAA;AACD,YAAA,OAAO,GAAG;QACd,CAAC,EAAE,EAAE,CAAC;AACJ,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,oBAAoB,EAAE;IAC7B;wGA/JS,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAd,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,mYCRhC,qoHAqDM,EAAA,MAAA,EAAA,CAAA,8hGAAA,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,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,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,CAAA,EAAA,CAAA;;4FD7CO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,qoHAAA,EAAA,MAAA,EAAA,CAAA,8hGAAA,CAAA,EAAA;oHAOzB,OAAO,EAAA,CAAA;sBADR,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;gBAQ/B,KAAK,EAAA,CAAA;sBAAb;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAES,QAAQ,EAAA,CAAA;sBAAjB;;;MEZQ,sBAAsB,CAAA;AAqBb,IAAA,EAAA;AAA0B,IAAA,MAAA;AAAuB,IAAA,WAAA;AAC3D,IAAA,WAAA;AAAwC,IAAA,EAAA;AAAgC,IAAA,EAAA;AAA6B,IAAA,YAAA;AArBvF,IAAA,SAAS;AACH,IAAA,eAAe;AACjB,IAAA,aAAa;AACxB,IAAA,OAAO,GAAG,IAAI,OAAO,EAAE;AACxC,IAAA,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;AAChC,IAAA,UAAU;IACX,SAAS,GAAQ,EAAE;AACV,IAAA,QAAQ;AACR,IAAA,IAAI;AACJ,IAAA,UAAU;IACnB,YAAY,GAAU,EAAE;IACxB,QAAQ,GAAU,EAAE;IACpB,YAAY,GAAQ,EAAE;IACtB,aAAa,GAAQ,EAAE;AACvB,IAAA,cAAc;AACd,IAAA,QAAQ;IACR,MAAM,GAAY,KAAK;AACvB,IAAA,WAAW;IACX,SAAS,GAAY,KAAK;AAC1B,IAAA,WAAW;AACX,IAAA,WAAA,CAAoB,EAAgB,EAAU,MAAc,EAAS,WAA2B,EACtF,WAA+B,EAAS,EAAsB,EAAU,EAAqB,EAAQ,YAAsB,EAAA;QADjH,IAAA,CAAA,EAAE,GAAF,EAAE;QAAwB,IAAA,CAAA,MAAM,GAAN,MAAM;QAAiB,IAAA,CAAA,WAAW,GAAX,WAAW;QACtE,IAAA,CAAA,WAAW,GAAX,WAAW;QAA6B,IAAA,CAAA,EAAE,GAAF,EAAE;QAA8B,IAAA,CAAA,EAAE,GAAF,EAAE;QAA2B,IAAA,CAAA,YAAY,GAAZ,YAAY;IAG3H;IACA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAEzB;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC;AAChE,YAAA,IAAI,EAAE,CAAC,IAAS,KAAI;gBAClB,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,oBAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAC3E,oBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;oBAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ;AAC/C,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC3B,gBAAA;YACH;AACD,SAAA,CAAC;QACF,IAAI,CAAC,WAAW,EAAE;IAEpB;AACA,IAAA,WAAW,CAAC,IAAS,EAAA;QACnB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAC1E,CAAC,GAAQ,KAAI;AACX,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAC3B,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,gBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;oBACpC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW;oBAC1C,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;oBACxC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;AAEtC,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAU,KACtD,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CACxE;AACC,oBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9B,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAU,KAC9C,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CACvE;AACD,oBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE7B,gBAAA;AACF,YAAA;AACH,QAAA,CAAC,CAAC;IACN;IACA,WAAW,GAAA;AAET,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;SAC/B;QACD,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAC/E,CAAC,GAAQ,KAAI;AACX,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;gBAC3B,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC;gBACvE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,IAAI,YAAY,CAAC;gBAEnE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChC,gBAAA;AAGD,gBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACjE,oBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;wBACrD,OAAO;4BACL,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,MAAM,EAAE,IAAI,CAAC;yBACd;AACH,oBAAA,CAAC,CAAC;AACF,oBAAA,IAAI,CAAC,aAAa,GAAG,YAAY;oBACjC,IAAI,CAAC,iBAAiB,EAAE;AACzB,gBAAA;AACF,YAAA;AACH,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,aAAa;IACb,iBAAiB,GAAA;AACf,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,GAAG,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAG;YACxC,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;AAC/D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAU,KACtD,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CACxE;IAEH;AACA,IAAA,eAAe,CAAC,KAAS,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAC,GAAG,KAAK,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAAC;AAClD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IAEzB;AAEA,IAAA,YAAY,CAAC,KAAS,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC/C,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IAEzB;AACA,IAAA,YAAY,CAAC,KAAS,EAAA;AACpB,QAAA,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IAEzB;AACA,IAAA,eAAe,CAAC,KAAS,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAC,GAAG,KAAK,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC;AAClD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IAEzB;AACA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAC,CAAC,EAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAU,KAC9C,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CACvE;AACF,QAAA;AACD,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AACA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAC,CAAC,EAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAU,KACtD,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CACxE;AACD,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7B,QAAA;IAGH;IACA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;IAC1B;IAEA,YAAY,GAAA;QACV,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,MAAM;QACtF,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,MAAM;AACvF,QAAA,IAAI,UAAU,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,iDAAiD,CAAC;AAChF,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,OAAO,GAAQ;AACjB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;gBACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,aAAa;gBACzB,QAAQ,EAAE,IAAI,CAAC,YAAY;aAC5B;YACD,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG;gBACnC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAC1E,CAAC,GAAQ,KAAI;AACX,oBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAC3B,wBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,2BAA2B,CAAC;AACpD,wBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,oBAAA;AACH,gBAAA,CAAC,EAAC,CAAC,KAAU,KAAI;AACf,oBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;AAE3B,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAC1E,gBAAA,CAAC,CAAC;AACL,YAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAC3E,CAAC,GAAQ,KAAI;AACX,oBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAC3B,wBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,2BAA2B,CAAC;AACpD,wBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,oBAAA;AACH,gBAAA,CAAC,EAAE,CAAC,KAAU,KAAI;AAChB,oBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;AAE3B,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE;AAC3E,gBAAA,CAAC,CAAC;AACL,YAAA;AACF,QAAA;IAEH;IAEA,WAAW,GAAQ,EAAE;IACrB,YAAY,GAAQ,EAAE;AAEtB,IAAA,gBAAgB,CAAC,CAAM,EAAA;QACrB,IAAI,IAAI,GAAU,EAAE;QACpB,IAAI,KAAK,GAAQ,EAAE;QACnB,IAAI,SAAS,GAAQ,EAAE;QAEvB,MAAM,IAAI,GAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,QAAA,MAAM,YAAY,GAAG;YACnB,mEAAmE;YACnE,0BAA0B;YAC1B,UAAU;YACV,iBAAiB;SAClB;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3E,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wCAAwC,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACvC;AACD,QAAA;AAEC,QAAA,MAAM,MAAM,GAA+B,CAAC,CAAC,MAAM;AACnD,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,QAAA;AACD,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAChD,YAAA,MAAM,MAAM,GAAe,IAAI,UAAU,EAAE;AAC3C,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,gBAAA,MAAM,IAAI,GAAW,CAAC,CAAC,MAAM,CAAC,MAAM;AACpC,gBAAA,MAAM,EAAE,GAAa,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACnD,MAAM,MAAM,GAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AAEvC,gBAAA,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;AAC9B,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,gBAAA,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9B,YAAA,CAAC;YACD,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAA,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,KAAI;gBAE7B,IAAI,SAAS,IAAI,OAAO,EAAE;AACxB,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,mDAAmD,CAAC;oBAC1E;AACD,gBAAA;AAED,gBAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AACf,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,6BAA6B,CAAC;oBACpD;AACH,gBAAA;AAED,gBAAA,MAAM,YAAY,GAAG,CAAC,oBAAoB,CAAC,CAAA;gBAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAS,KAAI;oBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,oBAAA,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrE,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IACtC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC3B;oBACD,OAAO,eAAe,IAAI,iBAAiB;AAC7C,gBAAA,CAAC,CAAC;gBAEF,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,6BAA6B,CAAC;oBACpD;AACD,gBAAA;gBAED,IAAI,cAAc,GAAU,EAAE;gBAC9B,IAAI,OAAO,GAAU,EAAE;gBACvB,IAAI,EAAE,OAAO,CAAC,CAAC,OAAY,EAAE,KAAU,KAAI;AACvC,oBAAA,IAAI,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,oBAAoB,CAAC,IAAI,IAAI,EAAE;wBACpF,KAAK,CAAC,IAAI,CAAC,CAAA,8BAAA,EAAiC,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AACzD,oBAAA;oBAEA,cAAc,CAAC,IAAI,CAAC;AACjB,wBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC;AACzC,qBAAA,CAAC;AAEN,gBAAA,CAAC,CAAC;gBAEJ,IAAG,IAAI,CAAC,SAAS,EAAC;oBAChB;AACD,gBAAA;gBAED,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,oBAAA,MAAM,YAAY,GAAG;AACnB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,wBAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,wBAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,wBAAA,UAAU,EAAE,OAAO;AACnB,wBAAA,KAAK,EAAE;qBACR;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC/B;AACD,gBAAA;AAAM,qBAAA;AACJ,oBAAA,IAAI,CAAC;AACL,yBAAA,cAAc,CAAC;AACd,wBAAA,KAAK,EAAE,cAAc;wBACrB,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ;qBACpG;AACA,yBAAA,SAAS,CAAC;AACT,wBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,4BAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AACzB,gCAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,gCAAA,IAAI,CAAC,YAAY,GAAG,EAAE;gCACvB,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;gCACpC,IAAI,CAAC,YAAY,EAAE;AACpB,4BAAA;AAAM,iCAAA;AACL,gCAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,+CAA+C,CAAC;AACvE,4BAAA;wBACH,CAAC;AACD,wBAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;4BAClB,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE;AACrB,gCAAA,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE;AAC7B,oCAAA,MAAM,YAAY,GAAG;AACnB,wCAAA,WAAW,EAAE,KAAK;AAClB,wCAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,wCAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,wCAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,wCAAA,UAAU,EAAE,OAAO;AACnB,wCAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;qCACxB;oCACD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK;AACnC,oCAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;AAChC,gCAAA;AAAM,qCAAA;oCACL,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK;oCACnC,IAAI,CAAC,YAAY,EAAE;AACpB,gCAAA;gCACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,4BAAA;AAAM,iCAAA;gCACL,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;gCACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,4BAAA;wBAEP,CAAC;AACF,qBAAA,CAAC;AACH,gBAAA;AACH,YAAA,CAAC;AAEF,QAAA;IACH;AACA,IAAA,eAAe,CAAC,KAAoB,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;QACrB,MAAM,KAAK,GAAG,kBAAkB;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE;AACvB,QAAA;IACH;AAEA,IAAA,YAAY,CAAC,IAAU,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACrB,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC3B,QAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACxJ;AAEC,IAAA,cAAc,CAAC,IAAS,EAAA;QAEvB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACrF,OAAO,eAAe,CAAC,IAAI;IAE7B;AACF,IAAA,eAAe,CAAC,IAAU,EAAA;AAAG,QAAA,IAAI,CAAC,aAAa,GAAC,EAAE;QAChD,IAAI,IAAI,CAAC,WAAW,EAAE;;AAEpB,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACjD,CAAC,IAAS,EAAE,KAAa,EAAE,IAAW,KACpC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CACjE;;YAGD,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,mBAAmB,CAAC;;AAGrE,YAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAC3C,CAAC,IAAS,EAAE,KAAa,EAAE,IAAW,KACpC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CACjE;AAED,YAAA,IAAI,CAAC,aAAa,GAAG,gBAAgB;;YAGrC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AAChD,oBAAA,GAAG,IAAI;AACP,oBAAA,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;AACtE,iBAAA,CAAC,CAAC;AACJ,YAAA;AACF,QAAA;IACH;;;;;;;;;IAYE,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;IAChC;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;IAErB;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;AACzB,QAAA,KAAK,CAAC,cAAc,EAAE,CAAC;IACzB;wGAvaa,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAhB,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,kbChBnC,qslBAmOA,EAAA,MAAA,EAAA,CAAA,8/DAAA,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,EAAAI,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,qBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDnNa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,qslBAAA,EAAA,MAAA,EAAA,CAAA,8/DAAA,CAAA,EAAA;6PAKN,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;gBACQ,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB;gBACA,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe;gBAKjB,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,UAAU,EAAA,CAAA;sBAAlB;;;MELU,6BAA6B,CAAA;AAsB9B,IAAA,cAAA;AACD,IAAA,EAAA;AACC,IAAA,WAAA;AACA,IAAA,YAAA;AACA,IAAA,YAAA;AAzBA,IAAA,SAAS,GAAG,IAAI,YAAY,EAAU;AAEhD,IAAA,WAAW;IACX,QAAQ,GAAU,EAAE;AACpB,IAAA,YAAY;AACZ,IAAA,UAAU,GAAQ;AAChB,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,CAAC;KACd;AACD,IAAA,OAAO;AACP,IAAA,MAAM;IACN,eAAe,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxC,IAAA,YAAY;AACZ,IAAA,QAAQ;AACR,IAAA,cAAc;AACd,IAAA,SAAS;AACT,IAAA,QAAQ;AACS,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IAEzC,WAAA,CACU,cAAiC,EAClC,EAAsB,EACrB,WAAwB,EACxB,YAA0B,EAC1B,YAAqB,EAAA;QAJrB,IAAA,CAAA,cAAc,GAAd,cAAc;QACf,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEpB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACpC,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa;AACtC,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;AACpC,YAAA,IAAI,EAAC,CAAC,IAAQ,KAAG;AACf,gBAAA,IAAG,IAAI,EAAE;AACP,oBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACjB,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;oBAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ;AACnC,gBAAA;YACH;AACD,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,YAAA,IAAI,EAAC,CAAC,IAAQ,KAAG;AACf,gBAAA,IAAG,IAAI,EAAE;AACP,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC3B,gBAAA;YACH;AACD,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,YAAA,IAAI,EAAC,CAAC,IAAQ,KAAG;AACf,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAE,YAAY,IAAI,OAAO,GAAG,QAAQ;gBAClE,IAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE;oBACrD,IAAI,CAAC,YAAY,GAAG;AAClB,wBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,wBAAA,KAAK,EAAE,EAAE;AACT,wBAAA,MAAM,EAAE,CAAC;wBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,IAAI,EAAE,IAAI,CAAC;qBACZ;oBACD,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;YACH;AACD,SAAA,CAAC;IACJ;IAEA,UAAU,GAAA;QACR,MAAM,UAAU,GAAG,EAAE;QACrB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAG,OAAO,IAAI,YAAY,GAAG,YAAY,CAAC;AAC1F,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;IACjC;IAEA,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACjD,QAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;AACxC,QAAA;QACD,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,UAAU;AACrC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU;QACnC,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,gBAAgB,CAAC,QAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,QAAQ;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,QAAQ;QAChC,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU;AAClC,QAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK;AAC7B,QAAA;IACH;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAC,KAAK;AAClB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;oBAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;oBAC/B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK;oBAC/B,IAAI,CAAC,UAAU,GAAG;AAChB,wBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,wBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5B,wBAAA,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;AAC1B,wBAAA,IAAI,IAAI,CAAC,WAAW,IAAI;AACtB,8BAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW;8BAC/B,EAAE,CAAC;qBACR;AACD,oBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE;wBACvB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpC,oBAAA;AACD,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACpC,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;oBAClB,IAAI,CAAC,UAAU,GAAG;AAChB,wBAAA,MAAM,EAAE,CAAC;AACT,wBAAA,KAAK,EAAE,EAAE;AACT,wBAAA,UAAU,EAAE,CAAC;qBACd;AACD,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,oBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACpC,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAO,KAAI;AACjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;gBAClB,IAAI,CAAC,UAAU,GAAG;AAChB,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,UAAU,EAAE,CAAC;iBACd;AACD,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,KAAK,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC;AACR,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,2GAA2G,IAAI,CAAC,YAAY,CAAA,EAAA,EAAK,IAAI,CAAC,YAAY,CAAA,4BAAA,CAA8B;AACtL,gBAAA,eAAe,EAAE,IAAI;AACtB,aAAA,CAAC;YACF;AACD,QAAA;QACD,IAAI,SAAS,GAAQ,EAAE;AACvB,QAAA,IAAI,GAAG,GAAQ;AACb,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ;AACpC,YAAA,IAAI,EAAC,IAAI,CAAC,YAAY,CAAC;SACxB;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAChE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;wBACvC,SAAS,CAAC,IAAI,CAAC;4BACb,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;4BACpB,aAAa,EAAE,OAAO,EAAE,QAAQ;AACjC,yBAAA,CAAC;AACJ,oBAAA,CAAC,CAAC;oBACF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC;AACvD,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,MAAK,EAAE,CAAC;AACf,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACJ;IACA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEA,KAAK,CAAC,IAAS,EAAC,IAAU,EAAA;;;QAGxB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC7D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;AACF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;QACtC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC9B,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;IACJ;wGAhNW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,uGCrB1C,iuQA+HM,EAAA,MAAA,EAAA,CAAA,ugBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,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,EAAAM,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FD1GO,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,iuQAAA,EAAA,MAAA,EAAA,CAAA,ugBAAA,CAAA,EAAA;+LAK5B,SAAS,EAAA,CAAA;sBAAlB;;;AEFH,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CACxC,QAAQ,CAAC,MAAM,CAAC,qBAAqB;AAClC,KAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;AAC5B,KAAA,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CACpB;MAMY,kBAAkB,CAAA;AAqCrB,IAAA,YAAA;AAA+B,IAAA,QAAA;AAC9B,IAAA,cAAA;AACA,IAAA,YAAA;AACD,IAAA,EAAA;AACC,IAAA,YAAA;AAEA,IAAA,WAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AA5CC,IAAA,YAAY,GAAG,IAAI,YAAY,EAAU;;AAE1B,IAAA,UAAU;AACV,IAAA,UAAU;AACL,IAAA,eAAe;IAC9C,YAAY,GAAK,EAAE;AACnB,IAAA,QAAQ;AACR,IAAA,WAAW;IACX,QAAQ,GAAU,EAAE;AACpB,IAAA,YAAY;AACZ,IAAA,UAAU,GAAQ;AAChB,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,CAAC;KACd;IACD,OAAO,GAAY,IAAI;IACvB,MAAM,GAAY,KAAK;IACvB,eAAe,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxC,IAAA,YAAY;AACZ,IAAA,QAAQ;AACR,IAAA,cAAc;AACd,IAAA,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;AAChB,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;AACxC,IAAA,KAAK;IACL,SAAS,GAAY,KAAK;IAC1B,MAAM,GAAO,EAAE;AACf,IAAA,UAAU;AACV,IAAA,WAAW;AACT,IAAA,UAAU,GAAQ;AAClB,QAAA,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QAC3I,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;KAC1G;AACD,IAAA,aAAa;AACb,IAAA,cAAc;AACd,IAAA,QAAQ;IACT,WAAA,CACS,YAAsB,EAAS,QAAyB,EACvD,cAAiC,EACjC,YAA0B,EAC3B,EAAsB,EACrB,YAA0B;;IAE1B,WAAwB,EACxB,MAAc,EACd,KAAqB,EAAA;QARtB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAAmB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACtC,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,YAAY,GAAZ,YAAY;QACb,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEZ,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;QAEb,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACnE,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa;AACtC,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;;AAID,IAAA,OAAO,CAAC,aAAqB,EAAA;AAC3B,QAAA,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;AAEnD,QAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;AAEpD,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;QAErE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE;AAC/D,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG;AACvB,YAAA,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC;AACvB,SAAA,CAAC;QAEF,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9C;IACC,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,oEAAoE,CAAC;QAClG,IAAI,WAAW,GAAS,EAAE;QAC1B,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,EAAE;AAClD,YAAA,WAAW,GAAG;AACZ,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,KAAK;AACnB,iBAAA;AACD,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,IAAI;AAClB,iBAAA;aACF;AACF,QAAA;aAAM,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,EAAE;AAC1D,YAAA,WAAW,GAAE;AACX,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,KAAK;AACnB,iBAAA;AACD,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,IAAI;AAClB,iBAAA;aACF;AACF,QAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;IAC3C;IACC,QAAQ,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAEpE,QAAA,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC;AACjE,YAAA,IAAI,EAAC,CAAC,IAAQ,KAAG;gBACf,IAAG,IAAI,KAAK,IAAI,EAAG;AAClB,oBAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAC3E,oBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;oBAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ;AAC9C,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACrB,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;oBACxB,IAAG,QAAQ,EAAE,QAAQ,EAAC;wBACtB,IAAI,CAAC,YAAY,GAAG;AAClB,4BAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,4BAAA,KAAK,EAAE,EAAE;AACT,4BAAA,MAAM,EAAE,CAAC;4BACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;4BACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,4BAAA,MAAM,EAAC;yBACR;wBACD,IAAI,CAAC,SAAS,EAAE;;wBAEhB,IAAI,CAAC,WAAW,EAAE;AAClB,oBAAA;AACA,gBAAA;AAAM,qBAAA;AACR,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AACxB,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;oBAC1B,IAAI,CAAC,YAAY,GAAG;AAClB,wBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,wBAAA,KAAK,EAAE,EAAE;AACT,wBAAA,MAAM,EAAE,CAAC;wBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,wBAAA,MAAM,EAAC;qBACR;oBACD,IAAI,CAAC,SAAS,EAAE;;oBAEhB,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA;YACH;AACD,SAAA,CAAC;IAGH;IACA,cAAc,CAAC,KAAa,EAAE,IAAY,EAAA;QACxC,IAAI,IAAI,KAAK,YAAY;AAAE,YAAA,OAAO,KAAK;QACvC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;AAE7C,QAAA,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;AACjD,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAE3D,QAAA,OAAO,GAAG,WAAW,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,MAAM,EAAE;IAChD;IACA,eAAe,CAAC,KAAa,EAAE,IAAY,EAAA;QACzC,IAAI,IAAI,KAAK,YAAY;AAAE,YAAA,OAAO,KAAK;AACvC,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAEhE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAEjD,QAAA,OAAO,GAAG,MAAM,CAAA,EAAG,YAAY,CAAA,EAAG,KAAK,EAAE;IAC3C;IAED,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAE,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAE,EAAE;AACzB,QAAA,IAAG,IAAI,CAAC,WAAW,KAAI,EAAE,EAAC;YACxB,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAC;aACR;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;YACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;YACtD,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;AAAM,aAAA;YACN,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAC;aACR;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;YACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;YACtD,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA;IACF;IACA,KAAK,CAAC,IAAS,EAAC,IAAU,EAAA;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC7D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;AACF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAE,QAAQ;QAC7C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC/B,IAAG,MAAM,KAAI,QAAQ,EAAC;AACpB,gBAAA,IAAI,CAAC,WAAW,GAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAChD,IAAI,CAAC,YAAY,GAAG;AACnB,oBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,oBAAA,MAAM,EAAC;iBACR;gBACD,IAAI,CAAC,SAAS,EAAE;;AAEf,YAAA;AACF,QAAA,CAAC,CAAC;IACJ;IACC,SAAS,CAAC,IAAS,EAAE,IAAU,EAAA;AAC7B,QAAA,IAAI,YAAY,GAAQ;AACtB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE;SACP;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAG;AACrG,YAAA,YAAY,CAAC,QAAQ,GAAG,QAAQ;AACjC,QAAA;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC;AACxE,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAE,QAAQ;QAC7C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAChC,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;IACH;;;;AAKA,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,UAAU;AACrC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU;AACnC,QAAA,IAAG,IAAI,CAAC,WAAW,KAAI,EAAE,EAAC;YACzB,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AAC9B,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAC,KAAK;AACZ,gBAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;AAChD,gBAAA,MAAM,EAAG,IAAI,CAAC,YAAY,CAAC;aAC1B;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AAC9B,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAC,KAAK;AACZ,gBAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;AAChD,gBAAA,MAAM,EAAG,IAAI,CAAC,YAAY,CAAC;aAC1B;AACF,QAAA;QACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACtD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAE,KAAK;QAC3B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QAC/B,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAG,IAAI,CAAC,WAAW,KAAI,EAAE,EAAC;YACzB,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AAC9B,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAC,KAAK;AACZ,gBAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;AAChD,gBAAA,MAAM,EAAG,IAAI,CAAC,YAAY,CAAC;aAC1B;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AAC9B,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAC,KAAK;AACZ,gBAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;AAChD,gBAAA,MAAM,EAAG,IAAI,CAAC,YAAY,CAAC;aAC1B;AACF,QAAA;QACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACtD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAE,KAAK;QAC3B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,WAAW,CAAC,IAAS,EAAA;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACjE,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAC,QAAQ;AACjB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;AACF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;QACtC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC/B,IAAG,MAAM,KAAI,QAAQ,EAAC;AACpB,gBAAA,IAAI,CAAC,WAAW,GAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAChD,IAAI,CAAC,YAAY,GAAG;AACnB,oBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,oBAAA,MAAM,EAAC;iBACR;gBACA,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;;AAGnB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACtF,CAAC,GAAQ,KAAI;AACX,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;gBAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;gBAE/B,IAAI,CAAC,UAAU,GAAG;AAChB,oBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,oBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5B,oBAAA,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;oBAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAClD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACrD,gBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE;oBACvB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpC,gBAAA;AACD,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACrB,YAAA;AAAM,iBAAA;AAEL,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;gBAClB,IAAI,CAAC,UAAU,GAAG;AAChB,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,UAAU,EAAE,CAAC;iBACd;gBACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACjD,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACnB,YAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACrC,QAAA,CAAC,EACD,CAAC,KAAU,KAAI;AACb,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;YAClB,IAAI,CAAC,UAAU,GAAG;AAChB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,UAAU,EAAE,CAAC;aACd;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAClD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACpB,QAAA,CAAC,CACF;IACH;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU;AAClC,QAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK;AAC7B,QAAA;IACH;IAEA,UAAU,GAAA;AACT,QAAA,IAAG,IAAI,CAAC,WAAW,KAAI,EAAE,EAAC;YACxB,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,MAAM,EAAC;aACR;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;YACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACxD,YAAA,IAAI,CAAC;AACJ,iBAAA,iBAAiB,CAAC,IAAI,CAAC,YAAY;AACnC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;oBACjB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC;gBAEjD,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,oBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;gBACrC,CAAC;AACD,gBAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,aAAA,CAAC;AACD,QAAA;AAAM,aAAA;YACN,IAAI,CAAC,YAAY,GAAG;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAC;aACR;YACD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;YACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACxD,YAAA,IAAI,CAAC;AACJ,iBAAA,iBAAiB,CAAC,IAAI,CAAC,YAAY;AACnC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;oBACjB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC;gBAEjD,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,oBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;gBACrC,CAAC;AACD,gBAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,aAAA,CAAC;AACA,QAAA;IAKD;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;IAC1D;IAEA,aAAa,GAAA;IAEb;AAEA,IAAA,UAAU;IACV,SAAS,GAAQ,EAAE;IACnB,eAAe,GAAQ,EAAE;AAEzB,IAAA,cAAc,CAAC,IAAS,EAAA;QAEtB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACtF,OAAO,eAAe,CAAC,IAAI;IAE7B;AAEE,IAAA,cAAc,CAAC,IAAS,EAAA;QAExB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACxE,OAAO,eAAe,CAAC,IAAI;IAE7B;AAEA,IAAA,SAAS,CAAC,CAAM,EAAA;AACd,QAAA,IAAI,IAAW;QACf,IAAI,KAAK,GAAQ,EAAE;QACnB,IAAI,SAAS,GAAQ,EAAE;QAEvB,MAAM,IAAI,GAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,QAAA,MAAM,YAAY,GAAG;YACnB,mEAAmE;YACnE,0BAA0B;YAC1B,UAAU;YACV,iBAAiB;SAClB;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3E,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,wCAAwC,CAAC;YACzE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACxC;AACD,QAAA;AAEC,QAAA,MAAM,MAAM,GAA+B,CAAC,CAAC,MAAM;AACnD,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACzC,QAAA;AACD,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAChD,YAAA,MAAM,MAAM,GAAe,IAAI,UAAU,EAAE;AAC3C,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,gBAAA,MAAM,IAAI,GAAW,CAAC,CAAC,MAAM,CAAC,MAAM;AACpC,gBAAA,MAAM,EAAE,GAAa,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACnD,MAAM,MAAM,GAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AACvC,gBAAA,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;AAC9B,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,gBAAA,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9B,YAAA,CAAC;YACD,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAA,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,KAAI;gBAE5B,IAAI,SAAS,KAAK,OAAO,EAAE;AAC1B,oBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,mDAAmD,CAAC;oBACpF;AACD,gBAAA;AAED,gBAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AACf,oBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,6BAA6B,CAAC;oBAC9D;AACH,gBAAA;gBACD,MAAM,YAAY,GAAG,CAAC,qBAAqB,EAAC,OAAO,CAAC,CAAA;;gBAGpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAS,KAAI;oBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,oBAAA,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrE,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IACtC,YAAY,CAAC,QAAQ,CAAC,GAAG;;qBAE1B;oBACD,OAAO,eAAe,IAAI,iBAAiB;AAC7C,gBAAA,CAAC,CAAC;gBAEF,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,6BAA6B,CAAC;oBAC9D;AACD,gBAAA;gBAED,IAAI,EAAE,OAAO,CAAC,CAAC,OAAY,EAAE,KAAU,KAAI;oBACzC,IAAI,OAAO,EAAE,KAAK,EAAE;AAClB,wBAAA,OAAO,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClD,oBAAA;oBACD,IAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,qBAAqB,CAAC,IAAI,IAAI,EAAE;wBAC5H,KAAK,CAAC,IAAI,CAAC,CAAA,+BAAA,EAAkC,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAC1D,oBAAA;AACD,oBAAA,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;wBAC5E,KAAK,CAAC,IAAI,CAAC,CAAA,iBAAA,EAAoB,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAC5C,oBAAA;AACD,oBAAA,IAAI,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,iDAAiD,CAAC,EAAE;wBAC7F,KAAK,CAAC,IAAI,CAAC,CAAA,iBAAA,EAAoB,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAC5C,oBAAA;AACH,gBAAA,CAAC,CAAC;gBAEF,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,oBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC9B,oBAAA,MAAM,YAAY,GAAG;AACnB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,wBAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,wBAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,wBAAA,UAAU,EAAE,OAAO;AACnB,wBAAA,KAAK,EAAE;qBACR;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC/B;AACD,gBAAA;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAO,KAAI;AAC7C,oBAAA,OAAO,EAAC,KAAK,EAAG,EAAE,GAAG,qBAAqB,CAAC;AAC3C,wBAAA,KAAK,EAAG,EAAE,EAAE,KAAK,EAAC;AACpB,gBAAA,CAAC,CAAC;AAEF,gBAAA,IAAI,CAAC;AACF,qBAAA,cAAc,CAAC;AACd,oBAAA,IAAI,EAAE;iBACP;AACA,qBAAA,SAAS,CAAC;AACT,oBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,wBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AACnC,4BAAA,IAAI,GAAG,CAAC,MAAM,KAAG,OAAO,IAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AAChD,gCAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC9B,gCAAA,MAAM,YAAY,GAAG;AACnB,oCAAA,WAAW,EAAE,KAAK;AAClB,oCAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,oCAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,oCAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,oCAAA,UAAU,EAAE,OAAO;AACnB,oCAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;iCAClB;AACD,gCAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gCAC/B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;gCACxC;AACD,4BAAA;AAAI,iCAAA;gCACH,IAAI,CAAC,YAAY,EAAE;gCACnB,IAAI,CAAC,eAAe,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;gCACxC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACzC,4BAAA;AACA,wBAAA;oBACH,CAAC;AACD,oBAAA,KAAK,EAAC,CAAC,GAAO,KAAG;AACf,wBAAA,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;AAC1B,4BAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC9B,4BAAA,MAAM,YAAY,GAAG;AACnB,gCAAA,WAAW,EAAE,KAAK;AAClB,gCAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,gCAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,gCAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,gCAAA,UAAU,EAAE,OAAO;AACnB,gCAAA,KAAK,EAAC,GAAG,CAAC,KAAK,CAAC;6BACjB;AACD,4BAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;4BAC/B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACzC,wBAAA;AAAM,6BAAA;4BACL,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;4BAChD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACzC,wBAAA;oBACH,CAAC;AACF,iBAAA,CAAC;AACA,YAAA,CAAC;;AAEF,QAAA;IACH;IAEA,QAAQ,GAAA;IAER;IAEC,aAAa,GAAA;QACZ,IAAI,OAAO,GAAG,EAAC,IAAI,EAAC,IAAI,CAAC,eAAe,EAAC;AACzC,QAAA,IAAI,CAAC;aACF,UAAU,CAAC,OAAO;AAClB,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA,qCAAA,CAAuC,CAAC;AAC3E,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA,gCAAA,CAAkC,CAAC;AACpE,gBAAA;AACD,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;YACxC,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,kCAAkC,CAAC;AACnE,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;YAChC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACN;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;IAChC;AAEA,IAAA,YAAY,CAAC,IAAU,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACrI;IAEA,gBAAgB,CAAC,IAAS,EAAE,CAAS,EAAA;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC;AAC3G,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;QACtC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAClC,YAAA,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,KAAI,QAAQ,EAAE;oBACzB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC,CAAC,SAAS,CAAC;AACpF,wBAAA,IAAI,EAAC,CAAC,GAAO,KAAG;AACd,4BAAA,IAAG,GAAG,IAAI,GAAG,CAAC,IAAI,IAAE,GAAG,EAAE;gCACvB,IAAG,IAAI,CAAC,QAAQ,EAAE;AAChB,oCAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,wBAAwB,CAAC;AAC5D,gCAAA;AAAM,qCAAA;AACL,oCAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,0BAA0B,CAAC;AAC9D,gCAAA;AACF,4BAAA;AAAM,iCAAA;AACL,gCAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,+BAA+B,CAAC;AAChE,gCAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAC,CAAC,IAAI,CAAC,QAAQ;AACzC,4BAAA;wBACH,CAAC;wBACD,KAAK,EAAC,MAAI;AACR,4BAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,+BAA+B,CAAC;AAChE,4BAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAC,CAAC,IAAI,CAAC,QAAQ;wBAC1C,CAAC;AACD,wBAAA,QAAQ,EAAC,MAAI,EAAC;AACf,qBAAA,CAAC;AACF,gBAAA;qBAAM,IAAG,MAAM,KAAI,OAAO,EAAE;AAC3B,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAC,CAAC,IAAI,CAAC,QAAQ;AACzC,gBAAA;AACF,YAAA;AACD,QAAA,CAAC,CAAC;IACD;IACA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IACA,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,GAAG;AACP,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;SAChC;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;oBAC1B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;oBAC5B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK;AACjC,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AAChB,gBAAA;AACD,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,GAAG,GAAE;AACP,YAAA,IAAI,EAAC,IAAI;AACT,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,YAAY,EAAC;SACd;QACD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,GAAE,YAAY;IACjC;AACA,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClD;AAEA,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK;AAChC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,KAAK,MAAM,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACnE,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC7B,QAAA;QACD,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,YAAY,CAAC,KAAS,EAAA;QACpB,IAAI,KAAK,EAAE,MAAM,EAAE;AACjB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AAC7B,gBAAA,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,EAAE;AACnC,oBAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,EAAE,EAAE,CAAC;AAC/D,gBAAA;AACD,gBAAA,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE;AACpC,oBAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,EAAE,EAAE,CAAC;AAChE,gBAAA;AACH,YAAA,CAAC,CAAC;AACH,QAAA;AACC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAC,EAAE;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK;QAChC,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QACpD,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QACtD,IAAI,CAAC,SAAS,EAAE;IACpB;IACA,gBAAgB,GAAY,KAAK;IACjC,aAAa,GAAU,EAAE;IACzB,UAAU,GAAY,KAAK;IAC3B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB;AAE9C,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB;AACtC,QAAA,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AACvC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACvB,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACxB,QAAA;IACH;IAGA,eAAe,CAAC,IAAS,EAAC,KAAS,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA;AAAM,aAAA,IAAG,IAAI,CAAC,OAAO,KAAI,KAAK,EAAE;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,IAAI,YAAY,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;AAC/F,YAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;gBACrB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACzC,YAAA;AACF,QAAA;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;QACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;IACjD;IAEA,WAAW,GAAA;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC;QAChH,QAAQ,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa;QACxD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC9B,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,IAAI,CAAC,gBAAgB,GAAE,KAAK;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACxB,QAAA,CAAC,CAAC;IACN;wGA1zBW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAe,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2YC9B/B,qhvBA2UA,EAAA,MAAA,EAAA,CAAA,olGAAA,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,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,EAAAQ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FD7Sa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,qhvBAAA,EAAA,MAAA,EAAA,CAAA,olGAAA,CAAA,EAAA;0SAKhB,YAAY,EAAA,CAAA;sBAArB;gBAEwB,UAAU,EAAA,CAAA;sBAAlC,SAAS;uBAAC,YAAY;gBACE,UAAU,EAAA,CAAA;sBAAlC,SAAS;uBAAC,YAAY;gBACO,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB;;;MEtBjB,kBAAkB,CAAA;AA4CX,IAAA,EAAA;AAAyB,IAAA,MAAA;AAAsB,IAAA,YAAA;AAA+B,IAAA,WAAA;AA3CxE,IAAA,SAAS;AACvB,IAAA,YAAY,GAAG,IAAI,YAAY,EAAU;IACnD,UAAU,GAAW,kBAAkB;IACvC,UAAU,GAAW,4BAA4B;AACjD,IAAA,eAAe,GAAG;AAChB,QAAA;AACE,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,gBAAA,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE;AACjC,gBAAA,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE;AAClC;AACF,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC/C,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC9C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AAC9C;AACF,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC9C,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;gBAClD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AAC9C;AACF,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,aAAa;AAC1B,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE;AACvC,gBAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1C,gBAAA,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE;AACtC,gBAAA,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9C,gBAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3C;AACF,SAAA;KACF;AACD,IAAA,YAAY;AACd,IAAA,WAAA,CAAoB,EAAgB,EAAS,MAAc,EAAQ,YAAsB,EAAS,WAAwB,EAAA;QAAtG,IAAA,CAAA,EAAE,GAAF,EAAE;QAAuB,IAAA,CAAA,MAAM,GAAN,MAAM;QAAgB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAAmB,IAAA,CAAA,WAAW,GAAX,WAAW;IAG7G;IAIA,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,OAAW,KAAI;AACvD,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO;AAE9B,QAAA,CAAC,CAAC;IAEJ;AACA,IAAA,QAAQ,CAAC,CAAM,EAAA;QACb,KAAK,CAAC,IAAI,CAAC;AACX,QAAA,IAAI,IAAW;AACf,QAAA,MAAM,MAAM,GAA+B,CAAC,CAAC,MAAM;AACnD,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,QAAA;AACD,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAChD,YAAA,MAAM,MAAM,GAAe,IAAI,UAAU,EAAE;AAC3C,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,gBAAA,MAAM,IAAI,GAAW,CAAC,CAAC,MAAM,CAAC,MAAM;AACpC,gBAAA,MAAM,EAAE,GAAa,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACnD,MAAM,MAAM,GAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBACvC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;;oBAE/B;AACD,gBAAA;AACD,gBAAA,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;AAChC,YAAA,CAAC;YAED,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE1C,YAAA,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,KAAI;gBAC7B,IAAI,cAAc,GAAU,EAAE;gBAC9B,IAAI,OAAO,GAAU,EAAE;AACvB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,oBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;oBAClE,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAC/D;oBACD,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,aAAa,CAChB,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EACf,SAAS,EACT,CAAC,EACD,IAAI,CAAC,UAAU,CAChB,CACF;AACD,oBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC1D,gBAAA;AAED,gBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC1C,gBAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtB,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;oBAEjC;AACD,gBAAA;AAED,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACpC,cAAc,CAAC,IAAI,CAAC;AAClB,wBAAA,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;AAC1B,wBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;wBACpB,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;AACxC,wBAAA,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;wBAClB,eAAe,EAAC,IAAI,CAAC;AACtB,qBAAA,CAAC;AACH,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBH,YAAA,CAAC;YACD,CAAC,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3D,QAAA;IACH;AACA,IAAA,aAAa,CACX,KAAyC,EACzC,SAAiB,EACjB,GAAW,EACX,KAAc,EAAA;QAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC1D,OAAO,CAAA,kBAAA,EAAqB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAC,CAAA,CAAE;AACxE,QAAA;QACD,MAAM,YAAY,GAAG,CAAA,iBAAA,EAAoB;AACtC,aAAA,WAAW;AACX,aAAA,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;QAC7C,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,CAAA,aAAA,EAAgB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAC,CAAA,CAAE;AACnE,QAAA;AACD,QAAA,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;YAC5B,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,YAAY,CAAC,IAAI,EAAE,EAAE;gBACxC,OAAO,CAAA,kBAAA,EAAqB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,CAAC,CAAA,CAAE;AACxE,YAAA;AACD,YAAA,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;gBACtC,OAAO,CAAA,mBAAA,EAAsB,SAAS,CAAC,WAAW,EAAE,WAClD,GAAG,GAAG,CACR,CAAA,CAAE;AACH,YAAA;AACF,QAAA;AACD,QAAA,OAAO,IAAI;IACb;IACA,aAAa,GAAA;AACX,QAAA,IAAI,GAAG,GAAG;AACR,YAAA,KAAK,EAAE,KAAK;SACb;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,GAAG;QACrC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAChC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,KAAK,CAAC,IAAQ,EAAA;IAEd;AACA,IAAA,MAAM,CAAC,IAAQ,EAAA;IAEf;IACA,WAAW,GAAA;IAEX;AACA,IAAA,SAAS;AAET,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAE;IACzC;wGAnMa,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,yMCb/B,gvKAiEA,EAAA,MAAA,EAAA,CAAA,i/BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,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,EAAAoB,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDpDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,gvKAAA,EAAA,MAAA,EAAA,CAAA,i/BAAA,CAAA,EAAA;sJAKF,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;gBACZ,YAAY,EAAA,CAAA;sBAArB;;;MEPU,oBAAoB,CAAA;AAGrB,IAAA,WAAA;AACA,IAAA,EAAA;AAHD,IAAA,QAAQ;IACjB,WAAA,CACU,WAA2B,EAC3B,EAAqB,EAAA;QADrB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,EAAE,GAAF,EAAE;IACT;IAEH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;IACjC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClC;wGAbW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtB,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,0FCRjC,klDAuBM,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,CAAA;;4FDfO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,klDAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;qHAKnB,QAAQ,EAAA,CAAA;sBAAhB;;;MEKU,sBAAsB,CAAA;AA0Bb,IAAA,cAAA;AAA0C,IAAA,WAAA;AACrD,IAAA,EAAA;AAAgC,IAAA,YAAA;AAAkC,IAAA,YAAA;AA1BlE,IAAA,QAAQ;AACjB,IAAA,cAAc;AACd,IAAA,WAAW;IACX,aAAa,GAAQ,EAAE;IACvB,OAAO,GAAQ,EAAE;AACjB,IAAA,UAAU,GAAQ;AAChB,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,CAAC;KACd;IACD,OAAO,GAAY,IAAI;IACvB,MAAM,GAAY,KAAK;IACvB,eAAe,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACxC,SAAS,GAAU,IAAI;AACN,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;AACzC,IAAA,YAAY;AACZ,IAAA,UAAU,GAAQ;AAChB,QAAA,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QAC3I,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;KAC1G;AACD,IAAA,aAAa;AACb,IAAA,cAAc;IACd,QAAQ,GAAM,EAAE;IAGhB,WAAA,CAAoB,cAAiC,EAAS,WAA+B,EACpF,EAAsB,EAAU,YAA0B,EAAQ,YAAsB,EAAA;QAD7E,IAAA,CAAA,cAAc,GAAd,cAAc;QAA4B,IAAA,CAAA,WAAW,GAAX,WAAW;QAChE,IAAA,CAAA,EAAE,GAAF,EAAE;QAA8B,IAAA,CAAA,YAAY,GAAZ,YAAY;QAAsB,IAAA,CAAA,YAAY,GAAZ,YAAY;IAEvF;AACA,IAAA,KAAK;IACL,QAAQ,GAAA;QACN,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAClE,YAAA,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC;AACjE,gBAAA,IAAI,EAAE,CAAC,IAAS,KAAI;oBAClB,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,wBAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAC3E,wBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;wBAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ;wBAC9C,IAAI,QAAQ,EAAE,QAAQ,EAAE;4BACtB,IAAI,CAAC,OAAO,GAAG;AACb,gCAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gCAAA,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;AACzB,gCAAA,KAAK,EAAE,EAAE;AACT,gCAAA,MAAM,EAAE,CAAC;gCACT,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gCAAA,MAAM,EAAE;6BACT;4BACD,IAAI,CAAC,SAAS,EAAE;AACjB,wBAAA;AACF,oBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,wBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;wBAC1B,IAAI,CAAC,OAAO,GAAG;AACb,4BAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,4BAAA,KAAK,EAAE,EAAE;AACT,4BAAA,MAAM,EAAE,CAAC;AACT,4BAAA,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;4BACzB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,4BAAA,MAAM,EAAE;yBACT;wBACD,IAAI,CAAC,SAAS,EAAE;AACjB,oBAAA;gBACH;AACD,aAAA,CAAC;QACJ,CAAC,EAAE,GAAG,CAAC;IAGT;IAEA,cAAc,CAAC,KAAa,EAAE,IAAY,EAAA;QACxC,IAAI,IAAI,KAAK,YAAY;AAAE,YAAA,OAAO,KAAK;QACvC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;AAE7C,QAAA,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;AACjD,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAE3D,QAAA,OAAO,GAAG,WAAW,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,MAAM,EAAE;IAChD;IACA,eAAe,CAAC,KAAa,EAAE,IAAY,EAAA;QACzC,IAAI,IAAI,KAAK,YAAY;AAAE,YAAA,OAAO,KAAK;AACvC,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAEhE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAEjD,QAAA,OAAO,GAAG,MAAM,CAAA,EAAG,YAAY,CAAA,EAAG,KAAK,EAAE;IAC3C;IACA,UAAU,GAAA;AACR,QAAA,IAAI,GAAG,GAAG;AACR,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAC,IAAI;AACX,YAAA,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAE9B;AACH,QAAA,IAAI,CAAC;aACJ,sBAAsB,CAAC,GAAG;AAC1B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBACjB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC;YACtD,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AAEpB,SAAA,CAAC;IACD;IAEA,SAAS,CAAC,IAAS,EAAC,IAAU,EAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAE,QAAQ;AAC7C,QAAA,QAAQ,CAAC,iBAAiB,CAAC,aAAa,GAAE,MAAM;QAEhD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAEhC,QAAA,CAAC,CAAC;IACH;AAED,IAAA,YAAY,CAAC,KAAS,EAAA;QACpB,IAAI,KAAK,EAAE,MAAM,EAAE;AACjB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AAC7B,gBAAA,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,EAAE;AACnC,oBAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,EAAE,EAAE,CAAC;AAC/D,gBAAA;AACD,gBAAA,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE;AACpC,oBAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,EAAE,EAAE,CAAC;AAChE,gBAAA;AACH,YAAA,CAAC,CAAC;AACH,QAAA;AACC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAC,EAAE;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK;QAC3B,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;QAC/C,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QACjD,IAAI,CAAC,SAAS,EAAE;IACpB;AAGA,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,EAAE;YAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACzD,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,MAAM;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACxB,QAAA;QACD,IAAI,CAAC,SAAS,EAAE;IAClB;IACA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC;IACrC;IACA,SAAS,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,GAAE,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACtF,CAAC,GAAQ,KAAI;AACX,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;gBAC3B,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;gBACpC,IAAI,CAAC,QAAQ,GAAI,GAAG,CAAC,IAAI,CAAC,QAAQ;gBAClC,IAAI,CAAC,UAAU,GAAG;AAChB,oBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,oBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5B,oBAAA,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;oBAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B;AACD,gBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE;oBACvB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,gBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpC,gBAAA;gBACD,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK;AAC1D,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACrB,YAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE;gBACvB,IAAI,CAAC,UAAU,GAAG;AAChB,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,UAAU,EAAE,CAAC;iBACd;AACD,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACnB,YAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACrC,QAAA,CAAC,EACD,CAAC,KAAU,KAAI;AACb,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;YACvB,IAAI,CAAC,UAAU,GAAG;AAChB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,UAAU,EAAE,CAAC;aACd;AACD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACpB,QAAA,CAAC,CACF;IACH;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU;AAClC,QAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK;AAC7B,QAAA;IACH;AAEA,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU;AACnC,QAAA,IAAG,IAAI,CAAC,WAAW,KAAI,EAAE,EAAC;YACzB,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,gBAAA,MAAM,EAAC,KAAK;AACZ,gBAAA,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;aAC1B;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAC,KAAK;AACZ,gBAAA,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;aAC1B;AACF,QAAA;QACA,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAG,IAAI,CAAC,WAAW,KAAI,EAAE,EAAC;YACzB,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,gBAAA,MAAM,EAAC,KAAK;AACZ,gBAAA,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;aAC1B;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAC,KAAK;AACZ,gBAAA,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;aAC1B;AACF,QAAA;QACA,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,aAAa,CAAC,IAAQ,EAAA;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;IACA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;AACzB,gBAAA,MAAM,EAAE;aACT;YACD,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;gBACT,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,MAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG;aAC1B;YACD,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;IACH;IACA,SAAS,GAAA;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC9F,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACnD,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,MAAM;QACtC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC9B,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC,CAAC;IACN;AACA,IAAA,QAAQ,CAAC,IAAQ,EAAA;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,MAAM;AACxC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAE,QAAQ;QAC7C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAChC,QAAA,CAAC,CAAC;IACJ;wGAzTW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,4FCdnC,42oBA2QM,EAAA,MAAA,EAAA,CAAA,sjDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,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,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,EAAAM,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FD7PO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,42oBAAA,EAAA,MAAA,EAAA,CAAA,sjDAAA,CAAA,EAAA;sMAKrB,QAAQ,EAAA,CAAA;sBAAhB;;;MEEU,kBAAkB,CAAA;AAgCT,IAAA,cAAA;AAA0C,IAAA,WAAA;AAA2C,IAAA,YAAA;AAChG,IAAA,EAAA;AAA+B,IAAA,EAAA;AAAyB,IAAA,MAAA;AAAsB,IAAA,YAAA;AAhC7E,IAAA,MAAM,GAAG,IAAI,YAAY,EAAO;AACb,IAAA,cAAc;AACb,IAAA,eAAe;AACrB,IAAA,SAAS;AACH,IAAA,eAAe;AACf,IAAA,aAAa;IAE3C,gBAAgB,GAAY,KAAK;AAChC,IAAA,UAAU;IACX,SAAS,GAAQ,EAAE;AACnB,IAAA,cAAc;AACd,IAAA,WAAW;IACX,SAAS,GAAU,EAAE;IACrB,OAAO,GAAQ,EAAE;AACjB,IAAA,UAAU,GAAQ;AAChB,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,CAAC;KACd;IACD,OAAO,GAAY,IAAI;IACvB,MAAM,GAAY,KAAK;IACvB,eAAe,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACxC,SAAS,GAAU,KAAK;AACP,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;AACzC,IAAA,YAAY;AAOZ,IAAA,WAAA,CAAoB,cAAiC,EAAS,WAA+B,EAAY,YAA0B,EAC1H,EAAsB,EAAS,EAAgB,EAAS,MAAc,EAAQ,YAAsB,EAAA;QADzF,IAAA,CAAA,cAAc,GAAd,cAAc;QAA4B,IAAA,CAAA,WAAW,GAAX,WAAW;QAAgC,IAAA,CAAA,YAAY,GAAZ,YAAY;QAC5G,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,EAAE,GAAF,EAAE;QAAuB,IAAA,CAAA,MAAM,GAAN,MAAM;QAAgB,IAAA,CAAA,YAAY,GAAZ,YAAY;IAGnG;AACA,IAAA,KAAK;IACL,QAAQ,GAAA;AAEN,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAc,KAAI;AACvD,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAG,KAAK,EAAC;gBACP,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA;AACH,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC;AACjE,YAAA,IAAI,EAAE,CAAC,IAAS,KAAI;gBAClB,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,oBAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAC3E,oBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;oBAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ;oBAC9C,IAAI,QAAQ,EAAE,QAAQ,EAAE;wBACtB,IAAI,CAAC,OAAO,GAAG;AACb,4BAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,4BAAA,KAAK,EAAE,EAAE;AACT,4BAAA,MAAM,EAAE,CAAC;4BACT,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,4BAAA,MAAM,EAAE;yBACT;wBACD,IAAI,CAAC,SAAS,EAAE;AACjB,oBAAA;AACF,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;oBAC1B,IAAI,CAAC,OAAO,GAAG;AACb,wBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,wBAAA,KAAK,EAAE,EAAE;AACT,wBAAA,MAAM,EAAE,CAAC;wBACT,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,wBAAA,MAAM,EAAE;qBACT;oBACD,IAAI,CAAC,SAAS,EAAE;AACjB,gBAAA;YACH;AACD,SAAA,CAAC;IAGJ;IAIA,UAAU,GAAA;AACP,QAAA,IAAI,GAAG,GAAG;AACP,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,MAAM,EAAC,IAAI;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B;AACH,QAAA,IAAI,CAAC;aACJ,kBAAkB,CAAC,GAAG;AACtB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBACjB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC;YAElD,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AAEpB,SAAA,CAAC;IAEH;IAEA,cAAc,CAAC,KAAa,EAAE,IAAY,EAAA;QACxC,IAAI,IAAI,KAAK,YAAY;AAAE,YAAA,OAAO,KAAK;QACvC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;AAE7C,QAAA,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;AACjD,QAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;AAE3D,QAAA,OAAO,GAAG,WAAW,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,MAAM,EAAE;IAChD;IAEA,UAAU,GAAA;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAChH,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,QAAQ;QAC1C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC9B,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;gBAC3B,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA;AACD,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACR,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACrB;AAEA,IAAA,aAAa,CAAC,IAAQ,EAAA;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAChH,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,IAAI;AAC1C,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,MAAM;QACxC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC9B,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;gBAC7B,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA;AACD,QAAA,CAAC,CAAC;IACN;AACA,IAAA,UAAU,CAAC,IAAQ,EAAA;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC;AAC9G,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,IAAI;QACxC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC9B,IAAG,MAAM,KAAK,QAAQ,EAAC;AACrB,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAC,MAAM,EAAC,IAAI,CAAC,GAAG,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACrF,CAAC,GAAQ,KAAI;AACX,oBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAC3B,wBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,2BAA2B,CAAC;AACpD,wBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,wBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,wBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAE,CAAC;wBACtB,IAAI,CAAC,SAAS,EAAE;AACjB,oBAAA;AAAA,gBAAA,CAAC,CAAC;AACR,YAAA;AAEH,QAAA,CAAC,CAAC;IACN;AAGA,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,aAAa,KAAK,MAAM,EAAE;YAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACzD,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,MAAM;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACxB,QAAA;QACD,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AAClE,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;;AAGnB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAClF,CAAC,GAAQ,KAAI;AACX,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAC3B,gBAAA,IAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAC;oBACxB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;AAChC,oBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;oBAC7B,IAAI,CAAC,UAAU,GAAG;AAChB,wBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,wBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5B,wBAAA,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;wBAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;qBAC9B;oBACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAC7C,oBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE;wBACvB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpC,oBAAA;AACD,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACrB,gBAAA;AAAI,qBAAA;AACL,oBAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACjB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,EAAE,CAAC;AACrB,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACrB,gBAAA;AAEF,YAAA;AAAK,iBAAA;AACJ,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,GAAG;AAChB,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,UAAU,EAAE,CAAC;iBACd;AACD,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACrB,YAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACrC,QAAA,CAAC,EACD,CAAC,KAAU,KAAI;AACb,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG;AAChB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,UAAU,EAAE,CAAC;aACd;AACD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACpB,QAAA,CAAC,CACF;IACH;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU;AAClC,QAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK;AAC7B,QAAA;IACH;AAEA,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU;AACnC,QAAA,IAAG,IAAI,CAAC,WAAW,KAAI,EAAE,EAAC;YACzB,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,gBAAA,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AACzC,gBAAA,MAAM,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAC1B,gBAAA,MAAM,EAAC;aACR;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AACzC,gBAAA,MAAM,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAC1B,gBAAA,MAAM,EAAC;aACR;AACF,QAAA;QACA,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,gBAAgB,CAAC,QAAgB,EAAA;QAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAG,IAAI,CAAC,WAAW,KAAI,EAAE,EAAC;YACzB,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AAC3B,gBAAA,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AACzC,gBAAA,MAAM,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAC1B,gBAAA,MAAM,EAAC;aACR;AACF,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACzB,gBAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC5B,gBAAA,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AAC1C,gBAAA,MAAM,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM;AAC1B,gBAAA,MAAM,EAAC;aACR;AACF,QAAA;QACA,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,aAAa,CAAC,IAAQ,EAAA;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,GAAE,KAAK;IACrB;IACA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;AAET,gBAAA,MAAM,EAAE;aACT;YACD,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;AAAM,aAAA;YACL,IAAI,CAAC,OAAO,GAAG;AACb,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;AACpC,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,MAAM,EAAE,CAAC;gBACT,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAE;aACT;YACD,IAAI,CAAC,SAAS,EAAE;AACjB,QAAA;IACH;IAEA,YAAY,GAAQ,EAAE;IACtB,cAAc,GAAQ,EAAE;AAExB,IAAA,QAAQ,CAAC,CAAM,EAAA;QACX,IAAI,IAAI,GAAU,EAAE;QACpB,IAAI,KAAK,GAAQ,EAAE;QACrB,IAAI,SAAS,GAAQ,EAAE;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;QAExB,MAAM,IAAI,GAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,MAAM,iBAAiB,GAAG,oBAAoB;AAC9C,QAAA,MAAM,YAAY,GAAG;YACnB,mEAAmE;YACnE,0BAA0B;YAC1B,UAAU;YACV,iBAAiB;SAClB;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3E,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,wCAAwC,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACvC;AACD,QAAA;AAEG,QAAA,MAAM,MAAM,GAA+B,CAAC,CAAC,MAAM;AACnD,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,QAAA;AACD,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAC9C,YAAA,MAAM,MAAM,GAAe,IAAI,UAAU,EAAE;AAC3C,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,CAAM,KAAI;AACzB,gBAAA,MAAM,IAAI,GAAW,CAAC,CAAC,MAAM,CAAC,MAAM;AACpC,gBAAA,MAAM,EAAE,GAAa,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACnD,MAAM,MAAM,GAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvC,MAAM,EAAE,GAAc,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AACvC,gBAAA,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;AAC9B,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,gBAAA,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9B,YAAA,CAAC;YAED,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAA,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,KAAI;gBAC7B,IAAI,SAAS,KAAK,OAAO,EAAE;AACzB,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,mDAAmD,CAAC;AAC1E,oBAAA,OAAO,KAAK;AACb,gBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AACjB,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,4BAA4B,CAAC;oBACnD;AACD,gBAAA;gBAED,MAAM,YAAY,GAAG,CAAC,WAAW,EAAC,YAAY,EAAC,sBAAsB,CAAC,CAAA;;gBAGxE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAS,KAAI;oBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,oBAAA,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrE,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IACtC,YAAY,CAAC,QAAQ,CAAC,GAAG;;qBAE1B;oBACD,OAAO,eAAe,IAAI,iBAAiB;AAC7C,gBAAA,CAAC,CAAC;gBAEF,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,6BAA6B,CAAC;oBACpD;AACD,gBAAA;gBAEC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAY,EAAE,KAAU,KAAI;AACzC,oBAAA,IAAI,OAAO,GAAG,YAAY,CAAC,EAAE;AAC3B,wBAAA,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACnE,oBAAA;AACD,oBAAA,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,IAAI,EAAE;wBAClE,KAAK,CAAC,IAAI,CAAC,CAAA,qBAAA,EAAwB,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAChD,oBAAA;AACC,oBAAA,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE;wBAC9E,KAAK,CAAC,IAAI,CAAC,CAAA,mDAAA,EAAsD,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAC9E,oBAAA;AAEC,oBAAA,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,IAAI,EAAE;wBACpE,KAAK,CAAC,IAAI,CAAC,CAAA,sBAAA,EAAyB,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AACjD,oBAAA;AACD,oBAAA,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,CAAC,KAAK,CAAC,iDAAiD,CAAC,EAAE;wBAChH,KAAK,CAAC,IAAI,CAAC,CAAA,sBAAA,EAAyB,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AACjD,oBAAA;AACD,oBAAA,IAAI,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,sBAAsB,CAAC,IAAI,IAAI,EAAE;wBACxF,KAAK,CAAC,IAAI,CAAC,CAAA,gCAAA,EAAmC,KAAK,GAAG,CAAC,CAAA,CAAE,CAAC;AAC3D,oBAAA;AAED,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,wBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAClC,wBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;AACpC,wBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,sBAAsB;AAC7C,qBAAA,CAAC;AAEJ,gBAAA,CAAC,CAAC;gBAEF,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,oBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC9B,oBAAA,MAAM,YAAY,GAAG;AACnB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,wBAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,wBAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,wBAAA,UAAU,EAAE,OAAO;AACnB,wBAAA,KAAK,EAAE;qBACR;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oBAC/B;AACD,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC;AACF,yBAAA,eAAe,CAAC;wBACf,KAAK,EAAE,IAAI,CAAC,cAAc;AAC1B,wBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;AAC7B,8BAAE,IAAI,CAAC,cAAc,EAAE;AACvB,8BAAE,IAAI,CAAC,cAAc,EAAE,QAAQ;AACjC,wBAAA,SAAS,EAAC;qBACX;AACA,yBAAA,SAAS,CAAC;AACT,wBAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,4BAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAC3B,gCAAA,IAAI,GAAG,CAAC,MAAM,KAAG,OAAO,IAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AAChD,oCAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC9B,oCAAA,MAAM,YAAY,GAAG;AACnB,wCAAA,WAAW,EAAE,KAAK;AAClB,wCAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,wCAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,wCAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,wCAAA,UAAU,EAAE,OAAO;AACnB,wCAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;qCAClB;AACD,oCAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;oCAC/B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;oCACvC;AACD,gCAAA;AAAM,qCAAA;oCAEL,IAAI,CAAC,YAAY,EAAE;oCACnB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,gCAAA;AACF,4BAAA;wBACH,CAAC;AACD,wBAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,4BAAA,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;AAC1B,gCAAA,MAAM,YAAY,GAAG;AACjB,oCAAA,WAAW,EAAE,KAAK;AAClB,oCAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,oCAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,oCAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,oCAAA,UAAU,EAAE,OAAO;AACnB,oCAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;iCAClB;AACH,gCAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gCAC/B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,4BAAA;AAAM,iCAAA,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;gCACjC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;gCACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACxC,4BAAA;4BACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;wBACzC,CAAC;AACF,qBAAA,CAAC;AACL,gBAAA;AAGH,YAAA,CAAC;;AAEF,QAAA;IACH;IAEA,gBAAgB,GAAY,KAAK;IACrC,aAAa,GAAU,EAAE;IACvB,aAAa,GAAY,KAAK;IAEhC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB;AAE9C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB;YACtC,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC1G,QAAA,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACxC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AAC1B,QAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC3B,QAAA;IACH;IAEE,cAAc,CAAC,IAAS,EAAC,KAAS,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE;QACzF,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA;AAAM,aAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YAEnC,MAAM,UAAU,GAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,IAAI,aAAa,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;AACjG,YAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;gBACrB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACzC,YAAA;AACF,QAAA;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;IACpD;AAEA,IAAA,iBAAiB;AAEjB,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,KAAK,KAAK,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;AAC9E,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACnB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACpD,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;oBAC3B,IAAI,KAAK,KAAK,WAAW,EAAE;wBACzB,IAAI,CAAC,iBAAiB,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;AAC1C,wBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;4BAChD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI;AAC9C,wBAAA,CAAC,CAAC;AAEF,wBAAA,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,IAAG;4BAC5B,IAAI,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACnD,gCAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS;AAC3D,4BAAA;AACA,4BAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/B,wBAAA,CAAC,CAAC;AAEH,oBAAA;AAAM,yBAAA;AACJ,wBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;4BACjD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,KAAK;AAC9C,wBAAA,CAAC,CAAC;AAEH,wBAAA,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,IAAG;;;;AAI5B,4BAAA,GAAG,CAAC,SAAS,GAAG,KAAK;AACrB,4BAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACzB,wBAAA,CAAC,CAAC;AACH,oBAAA;AACD,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC;AAEtE,oBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACpC,gBAAA;YACH,CAAC;YACD,KAAK,EAAE,MAAK;YAEZ,CAAC;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB,CAAC;AACF,SAAA,CAAC;IACJ;AAEF,IAAA,sBAAsB,CAAC,UAAkC,EAAA;QACvD,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,MAAM;IAC/E;IAEA,MAAM,GAAQ,EAAE;IAEhB,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAO,KAAK,GAAG,CAAC;AACrI,QAAA;AAAM,aAAA,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAO,KAAK,EAAE,EAAE,GAAG,CAAC;AAC3D,QAAA;AACD,QAAA,IAAI,OAAO,GAAG;YACZ,MAAM,EAAE,IAAI,CAAC;SACd;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAE3F,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACnC,YAAA,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACjD,oBAAA,IAAI,EAAC,CAAC,GAAO,KAAG;AACd,wBAAA,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE;4BAC3B,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC;AACrC,4BAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,4BAAA,IAAI,CAAC,aAAa,GAAG,EAAE;4BACvB,IAAI,CAAC,SAAS,EAAE;AACf,wBAAA;oBACL,CAAC;AACD,oBAAA,KAAK,EAAC,CAAC,GAAO,KAAG;wBACb,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;oBAC5C,CAAC;AACF,iBAAA,CAAC;AACH,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,IAAU,EAAA;QACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,IAAI,CAAC,UAAU,CAAC;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACrI;AAEC,IAAA,cAAc,CAAC,IAAS,EAAA;QAEvB,MAAM,eAAe,GAAG,IAAI,GAAG,CACjC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAC3D;QACG,OAAO,eAAe,CAAC,IAAI;IAE7B;IAEA,eAAe,GAAA;AAEb,QAAA,IAAI,CAAC;AACM,aAAA,eAAe,CAAC;YACf,KAAK,EAAE,IAAI,CAAC,cAAc;AAC1B,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;AAC7B,kBAAE,IAAI,CAAC,cAAc,EAAE;AACvB,kBAAE,IAAI,CAAC,cAAc,EAAE;SAC1B;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAC1B,oBAAA,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,qCAAqC,CAAC;AAC3D,oBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC9B,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;oBACtB,IAAI,CAAC,SAAS,EAAE;AACrB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;AAClB,gBAAA,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;AAC1B,oBAAA,MAAM,YAAY,GAAG;AACjB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,QAAQ,EAAE,CAAA,w/BAAA,CAA0/B;AACpgC,wBAAA,KAAK,EAAE,CAAA,gBAAA,CAAkB;AACzB,wBAAA,OAAO,EAAE,CAAA,sDAAA,CAAwD;AACjE,wBAAA,UAAU,EAAE,OAAO;AACnB,wBAAA,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;qBAClB;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;AAClC,gBAAA;AAAM,qBAAA,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;AAClC,oBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;oBAC5B,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,gBAAA;AAAI,qBAAA;AACJ,oBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;oBAC3B,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,gBAAA;gBACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;YACzC,CAAC;AACF,SAAA,CAAC;IACd;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;IAChC;wGA/qBW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,IAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2kBCjB/B,4jjCAmbA,EAAA,MAAA,EAAA,CAAA,68FAAA,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,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,EAAAQ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;4FDlaa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,4jjCAAA,EAAA,MAAA,EAAA,CAAA,68FAAA,CAAA,EAAA;sPAKhB,MAAM,EAAA,CAAA;sBAAf;gBAC4B,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB;gBACG,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB;gBACJ,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW;gBACQ,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB;gBACE,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe;;;MEdjB,oBAAoB,CAAA;AAOZ,IAAA,WAAA;AAAwC,IAAA,MAAA;AAN1C,IAAA,OAAO,GAAG,IAAI,OAAO,EAAE;IACxC,WAAW,GAAO,OAAO;IACzB,SAAS,GAAM,EAAE;AACA,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;AACzC,IAAA,WAAW;AACX,IAAA,cAAc;IACd,WAAA,CAAmB,WAA+B,EAAS,MAAsB,EAAA;QAA9D,IAAA,CAAA,WAAW,GAAX,WAAW;QAA6B,IAAA,CAAA,MAAM,GAAN,MAAM;IACjE;IACA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAC1C,IAAI,KAAK,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,EAAE;IAClB;AACA,IAAA,YAAY,CAAC,IAAS,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzB;AACA,IAAA,SAAS;AAET,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB;AACA,IAAA,OAAO,CAAC,IAAS,EAAA;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB;IACA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;AACrE,QAAA,IAAI,OAAO,GAAG;YACZ,QAAQ,EAAE,IAAI,CAAC,MAAM;AACrB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,CAAC;YACT,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,MAAM,EAAE;SACT;QACD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAC7E,CAAC,GAAQ,KAAI;AACX,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;gBAC3B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK;AAChC,YAAA;AACH,QAAA,CAAC,CACF;IACH;wGA7CW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,wDCTjC,4sEAmCM,EAAA,MAAA,EAAA,CAAA,qmBAAA,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,EAAAoB,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD1BO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,4sEAAA,EAAA,MAAA,EAAA,CAAA,qmBAAA,CAAA,EAAA;;;MEQjB,sBAAsB,CAAA;AA0BxB,IAAA,YAAA;AACC,IAAA,cAAA;AAA2C,IAAA,KAAA;AAC5C,IAAA,EAAA;AAAgC,IAAA,OAAA;AAC/B,IAAA,YAAA;AA3BD,IAAA,QAAQ;AACR,IAAA,WAAW;AACpB,IAAA,QAAQ;AACE,IAAA,WAAW,GAAyB,IAAI,YAAY,EAAU;AAExE,IAAA,UAAU,GAAQ;AAChB,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,EAAE;KACV;AACD,IAAA,UAAU;AACV,IAAA,aAAa;IACb,WAAW,GAAQ,EAAE;IACrB,MAAM,GAAQ,CAAC,CAAC;IAChB,OAAO,GAAY,IAAI;IACvB,MAAM,GAAY,KAAK;IACvB,eAAe,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxC,IAAA,YAAY;AACZ,IAAA,QAAQ;AACR,IAAA,YAAY;AACZ,IAAA,gBAAgB;AAChB,IAAA,QAAQ;AACS,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IAEzC,WAAA,CACS,YAAsB,EACrB,cAAiC,EAAU,KAAmB,EAC/D,EAAsB,EAAU,OAAoB,EACnD,YAA0B,EAAA;QAH3B,IAAA,CAAA,YAAY,GAAZ,YAAY;QACX,IAAA,CAAA,cAAc,GAAd,cAAc;QAA6B,IAAA,CAAA,KAAK,GAAL,KAAK;QACjD,IAAA,CAAA,EAAE,GAAF,EAAE;QAA8B,IAAA,CAAA,OAAO,GAAP,OAAO;QACtC,IAAA,CAAA,YAAY,GAAZ,YAAY;QAEpB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACnE,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa;AACtC,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;YAC5E,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;gBACxB,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,gBAAgB,GAAA;AACd,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS;AAC5C,YAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO;YACxC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;SACvF;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE;oBAC5B,IAAI,CAAC,gBAAgB,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;AAC1C,gBAAA;YACH,CAAC;AACF,SAAA,CAAC;IAEJ;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1J,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE;oBAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;AAClC,gBAAA;YACH,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK;AAC3F,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS;AAC5C,YAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5B,YAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,YAAA,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,IAAI,CAAC,aAAa;YAClC,MAAM,EAAE,IAAI,CAAC;SACd;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACnF,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE;oBAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;oBACjC,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK;AAClC,oBAAA,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;wBACxB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACzC,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpC,oBAAA;AACD,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACpB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACnB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAC,CAAC,GAAO,KAAG;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YACpB,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,UAAU,GAAA;AAER,QAAA,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK;AAC3F,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS;AAC5C,YAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,YAAA,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE,IAAI,CAAC,aAAa;YAClC,MAAM,EAAE,IAAI,CAAC;SACd;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBACjB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,sBAAsB,CAAC;YAChE,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;gBAClB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;AAC3C,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,SAAA,CAAC;IAEJ;AAEA,IAAA,MAAM,CAAC,GAAQ,EAAA;AACb,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG;AACxB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,SAAS,EAAE;IAClB;;;;IAMA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;YACxB,OAAO,IAAI,CAAC,UAAU;AACvB,QAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK;AAC7B,QAAA;IACH;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK;QAC9B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,gBAAgB,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;QACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACtC;wGA5LW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA1B,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,kKCbnC,i4rBA8QM,EAAA,MAAA,EAAA,CAAA,w9DAAA,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,EAAAlB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAL,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FDjQO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,i4rBAAA,EAAA,MAAA,EAAA,CAAA,w9DAAA,CAAA,EAAA;0NAMtB,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAES,WAAW,EAAA,CAAA;sBAApB;;;MEJU,0BAA0B,CAAA;AAoB5B,IAAA,YAAA;AACC,IAAA,cAAA;AACD,IAAA,EAAA;AACC,IAAA,YAAA;AACA,IAAA,OAAA;AAA8B,IAAA,YAAA;AAtBxC,IAAA,UAAU,GAAQ;AAChB,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,UAAU,EAAE,CAAC;KACd;AACD,IAAA,aAAa;IACb,WAAW,GAAQ,EAAE;IACrB,MAAM,GAAQ,CAAC,CAAC;IAChB,OAAO,GAAY,IAAI;IACvB,MAAM,GAAY,KAAK;IACvB,eAAe,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxC,IAAA,YAAY;AACZ,IAAA,QAAQ;AACR,IAAA,cAAc;AACd,IAAA,QAAQ;AACS,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IAEzC,WAAA,CACS,YAAsB,EACrB,cAAiC,EAClC,EAAsB,EACrB,YAA0B,EAC1B,OAAoB,EAAU,YAA0B,EAAA;QAJzD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACX,IAAA,CAAA,cAAc,GAAd,cAAc;QACf,IAAA,CAAA,EAAE,GAAF,EAAE;QACD,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,OAAO,GAAP,OAAO;QAAuB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAElD,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACnE,YAAA,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,aAAa;AACtC,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;YAC5E,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;gBAC1B,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;IAGA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;QAC1B,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS;AAC9C,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO;YAC1C,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5B,YAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,YAAA,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,IAAI,CAAC,aAAa;YAClC,MAAM,EAAE,IAAI,CAAC;SACd;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE;oBAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM;oBACjC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK;AAC7C,oBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,EAAE;wBACvB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC;AAC1C,oBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpC,oBAAA;AACD,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACpB,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AACnB,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAC,CAAC,GAAO,KAAG;AACf,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YACpB,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS;AAC9C,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO;YAC1C,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,YAAA,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE,IAAI,CAAC,aAAa;YAClC,MAAM,EAAE,IAAI,CAAC;SACd;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;gBACjB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,qBAAqB,CAAC;YAC/D,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;gBAClB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;AAClD,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAG,CAAC;AACpB,SAAA,CAAC;IACJ;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS;AAC9C,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE;SACpC;QACD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AAChD,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE;AAC3B,oBAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,+BAA+B,CAAC;AACnE,gBAAA;YACH,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAQ,KAAI;gBAClB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC;YACnD,CAAC;AACF,SAAA,CAAC;IACJ;IAGA,QAAQ,GAAY,KAAK;AACzB,IAAA,WAAW;IAEX,SAAS,CAAC,IAAS,EAAE,IAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzB;IAEA,QAAQ,CAAC,IAAS,EAAE,IAAU,EAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC7D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;AACF,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI;AACtC,QAAA,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,GAAG,OAAO;QAC7C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;YAC9B,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,gBAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE;AAC1B,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;;AAE1B,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA;AACH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,CAAC,GAAQ,EAAA;AACb,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG;AACxB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACvB;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU;AAClC,QAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK;AAC7B,QAAA;IACH;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK;QAC9B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,gBAAgB,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAC9B,IAAI,CAAC,SAAS,EAAE;IAClB;wGAnMW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,+DCdvC,8xvBAmTM,EAAA,MAAA,EAAA,CAAA,2pCAAA,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,EAAAlB,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAZ,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,sBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FDrSO,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,8xvBAAA,EAAA,MAAA,EAAA,CAAA,2pCAAA,CAAA,EAAA;;;AEFrC,MAAM,MAAM,GAAW;;;;;AAKrB,IAAA;AACE,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,SAAS,EAAE,kBAAkB;AAC9B,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,SAAS,EAAE;AACZ,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE;AACZ,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,SAAS,EAAE;AACZ;CACF;MAMY,6BAA6B,CAAA;wGAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,wCAF9B,YAAY,CAAA,EAAA,CAAA;yGAEX,6BAA6B,EAAA,OAAA,EAAA,CAH9B,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC7B,YAAY,CAAA,EAAA,CAAA;;4FAEX,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY;AACvB,iBAAA;;;MCnBY,yBAAyB,CAAA;AAY1B,IAAA,QAAA;AACA,IAAA,WAAA;AACA,IAAA,EAAA;AACA,IAAA,EAAA;AAA+B,IAAA,KAAA;IAdzC,YAAY,GAAQ,EAAE;AACtB,IAAA,QAAQ;IACR,KAAK,GAAU,EAAE;AACjB,IAAA,UAAU;AACV,IAAA,cAAc;AACd,IAAA,QAAQ;AACR,IAAA,IAAI;AACJ,IAAA,MAAM;AACW,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE;IAEzC,WAAA,CACU,QAAyB,EACzB,WAAwB,EACxB,EAAqB,EACrB,EAAsB,EAAS,KAAqB,EAAA;QAHpD,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,EAAE,GAAF,EAAE;QAA6B,IAAA,CAAA,KAAK,GAAL,KAAK;AAE5C,QAAA,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,YAAA,IAAI,EAAE,CAAC,IAAS,KAAI;AAClB,gBAAA,IAAI,IAAI,GAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACnE,gBAAA,IAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxB,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AACjB,gBAAA;gBACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ;gBACnE,IAAI,CAAC,KAAK,EAAE;sBACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,qBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,oBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;AAAE,wBAAA,IAAI,CAAC,QAAQ,GAAG,YAAY;;AAExD,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;8BACjB,IAAI,CAAC;AACP,8BAAE,IAAI,CAAC,QAAQ,IAAI;AACnB,kCAAE;kCACA,YAAY;AACpB,gBAAA,CAAC,CAAC;AACJ,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ;AAC3B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;gBAC1B,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClD,CAAC;AACF,SAAA,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,KAAK,IAAG;AAC9C,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,YAAY;AACzC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAI;YACxE,IAAI,CAAC,QAAQ,EAAE;AACjB,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;IACxB;AAEA,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClD;AAEA,IAAA,SAAS,CAAC,CAAM,EAAA;QACd,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,GAAG,QAAQ,GAAG,OAAO;;QAGlE,IAAI,CAAC,QAAQ,EAAE;QACf,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChD,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;IACxB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,oEAAoE,CAAC;QAClG,IAAI,WAAW,GAAS,EAAE;QAC1B,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,EAAE;AAClD,YAAA,WAAW,GAAG;AACZ,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,KAAK;AACnB,iBAAA;AACD,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,IAAI;AAClB,iBAAA;aACF;AACF,QAAA;aAAM,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,EAAE;AAC1D,YAAA,WAAW,GAAE;AACX,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,KAAK;AACnB,iBAAA;AACD,gBAAA;AACE,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,WAAW,EAAE,IAAI;AAClB,iBAAA;aACF;AACF,QAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;IAC3C;IAEA,QAAQ,GAAA;AAEN,QAAA,IAAI,IAAI;AAER,QAAA,IAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAC;AAC7B,YAAA,IAAI,GAAG;gBACH,QAAQ,EAAE,IAAI,CAAC;aAChB;AACF,QAAA;AAED,QAAA,IAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAC;AAC5B,YAAA,IAAI,GAAG;gBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;aAChC;AACF,QAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,YAAA,IAAI,EAAE,CAAC,GAAQ,KAAI;AACjB,gBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;oBAC1B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM;oBAC5B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK;AACjC,gBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AAChB,gBAAA;AACD,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YACzB,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YACzB,CAAC;AACD,YAAA,QAAQ,EAAE,MAAK,EAAE,CAAC;AACnB,SAAA,CAAC;IACJ;;;;;IAMA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC1B;wGArJW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5B,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAoB,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAApB,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,8DCftC,wmLAqFY,EAAA,MAAA,EAAA,CAAA,0+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,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,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDtEC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,wmLAAA,EAAA,MAAA,EAAA,CAAA,0+CAAA,CAAA,EAAA;;;MEmDvB,sBAAsB,CAAA;wGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,iBA/B/B,yBAAyB;YACzB,kBAAkB;YAClB,6BAA6B;YAC7B,qBAAqB;YACrB,yBAAyB;YACzB,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,kBAAkB;YAClB,kBAAkB;YAClB,sBAAsB;YACtB,oBAAoB;YACpB,qBAAqB;YACrB,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,0BAA0B;YAC1B,sBAAsB;AACtB,YAAA,mBAAmB,aAGnB,YAAY;YACZ,6BAA6B;YAC7B,WAAW;YACX,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,gBAAgB,CAAA,EAAA,CAAA;AAGP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAV/B,YAAY;YACZ,6BAA6B;YAC7B,WAAW;YACX,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,gBAAgB,CAAA,EAAA,CAAA;;4FAGP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjClC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,yBAAyB;wBACzB,kBAAkB;wBAClB,6BAA6B;wBAC7B,qBAAqB;wBACrB,yBAAyB;wBACzB,kBAAkB;wBAClB,mBAAmB;wBACnB,iBAAiB;wBACjB,kBAAkB;wBAClB,kBAAkB;wBAClB,sBAAsB;wBACtB,oBAAoB;wBACpB,qBAAqB;wBACrB,sBAAsB;wBACtB,oBAAoB;wBACpB,oBAAoB;wBACpB,0BAA0B;wBAC1B,sBAAsB;wBACtB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,6BAA6B;wBAC7B,WAAW;wBACX,mBAAmB;wBACnB,mBAAmB;wBACnB,kBAAkB;wBAClB,kBAAkB;wBAClB;AACD,qBAAA;AACF,iBAAA;;;AC7DD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"tango-app-ui-manage-users.mjs","sources":["../../../projects/tango-manage-users/src/lib/services-v2/manage-users.service.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.html","../../../projects/tango-manage-users/src/lib/services/user.service.ts","../../../projects/tango-manage-users/src/lib/components-v2/custom-select/custom-select.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/custom-select/custom-select.component.html","../../../projects/tango-manage-users/src/lib/components-v2/add-users/add-users.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/add-users/add-users.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/add-user-popup/add-user-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/add-user-popup/add-user-popup.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/group-select/group-select.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/group-select/group-select.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.html","../../../projects/tango-manage-users/src/lib/services/excel.service.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/user-table.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/user-table/user-table.component.html","../../../projects/tango-manage-users/src/lib/components-v2/chip-select/chip-select.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/chip-select/chip-select.component.html","../../../projects/tango-manage-users/src/lib/components-v2/teams-creation/teams-creation.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/teams-creation/teams-creation.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/roles-permission-table/roles-permission-table.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/roles-permission-table/roles-permission-table.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/brand-user/brand-user.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/brand-user/brand-user.component.html","../../../projects/tango-manage-users/src/lib/components-v2/users-list/users-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/users-list/users-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/action-popup/action-popup.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/action-popup/action-popup.component.html","../../../projects/tango-manage-users/src/lib/components-v2/viewteams-list/viewteams-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/viewteams-list/viewteams-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/teams-list/teams-list.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/teams-list/teams-list.component.html","../../../projects/tango-manage-users/src/lib/components-v2/users-manage/users-manage.component.ts","../../../projects/tango-manage-users/src/lib/components-v2/users-manage/users-manage.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component.html","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component.html","../../../projects/tango-manage-users/src/lib/tango-manage-users-routing.module.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/tango-manage-users.component.ts","../../../projects/tango-manage-users/src/lib/components/tango-manage-users/tango-manage-users.component.html","../../../projects/tango-manage-users/src/lib/tango-manage-users.module.ts","../../../projects/tango-manage-users/src/public-api.ts","../../../projects/tango-manage-users/src/tango-app-ui-manage-users.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, BehaviorSubject, catchError, map, throwError } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ManageUsersService {\r\n dropDownTrigger = new BehaviorSubject(null)\r\n tabChange = new BehaviorSubject(null)\r\n private userApiUrl:string = '';\r\n middlewareApiUrl: any;\r\n teamsApiUrl: any;\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.middlewareApiUrl = env.middlewareApiUrl;\r\n this.teamsApiUrl = env.teamsApiUrl;\r\n this.userApiUrl = env.userApiUrl;\r\n }\r\n })\r\n }\r\n\r\n private handleError(error: HttpErrorResponse): Observable<never> {\r\n return throwError(\r\n () => new Error(\"Something bad happened; please try again later\")\r\n );\r\n }\r\n getAllCountries(): Observable<any> {\r\n return this.http.get(`${this.middlewareApiUrl}/get-countries`);\r\n }\r\n\r\n getallusersList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/get-allusers`, params);\r\n }\r\n\r\n getTeamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/list`, params);\r\n }\r\n\r\n deleteAllteams(data: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/delete-teams`,data)\r\n }\r\n\r\n getTeamsListExport(data: any) {\r\n return this.http.post(`${this.teamsApiUrl}/list`, data, { responseType: 'arraybuffer' as 'json' });\r\n }\r\n \r\n deleteTeam(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/delete`, params);\r\n }\r\n getviewteamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/view`, params);\r\n }\r\n getviewteamsListExport(data: any) {\r\n return this.http.post(`${this.teamsApiUrl}/view`, data, { responseType: 'arraybuffer' as 'json' });\r\n }\r\n createTeams(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/create`, params);\r\n }\r\n editTeamsdata(data: any): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.teamsApiUrl}/get`, { params: { teamId: data._id }})\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n updateTeam(data: any): Observable<any> {\r\n return this.http\r\n .put<any>(`${this.teamsApiUrl}/update/${data.teamId}`, data)\r\n .pipe(\r\n map((response: any) => response),\r\n );\r\n }\r\n getAllTeamsList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.teamsApiUrl}/AllteamsList`, params);\r\n }\r\n teamBulkUpload(storesBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.teamsApiUrl}/teamBulkUpload`, storesBodyReq)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n updateUsers(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/update-users`, userBody)\r\n .pipe(\r\n map((response: any) => response) \r\n );\r\n }\r\n\r\n getUserTeams(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.teamsApiUrl}/get-user-teams`, userBody)\r\n .pipe(\r\n map((response: any) => response) \r\n );\r\n }\r\n\r\n private viewTeamsSubject = new BehaviorSubject<boolean>(false);\r\n \r\n // Expose an observable for components to subscribe to\r\n viewTeams$ = this.viewTeamsSubject.asObservable();\r\n\r\n // Method to toggle the view\r\n setViewTeam(value: boolean) {\r\n this.viewTeamsSubject.next(value);\r\n }\r\n\r\n changeTab(data: any) {\r\n this.tabChange.next(data)\r\n }\r\n\r\n teamsBulkUpload(data: any): Observable<any> {\r\n return this.http.post(`${this.teamsApiUrl}/bulk-upload`,data)\r\n }\r\n\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ManageUsersService } from '../../../../services-v2/manage-users.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\n\r\n@Component({\r\n selector: 'lib-alert-popup',\r\n templateUrl: './alert-popup.component.html',\r\n styleUrl: './alert-popup.component.scss'\r\n})\r\nexport class AlertPopupComponent {\r\n @Input() user: any;\r\n constructor(\r\n private activeModal: NgbActiveModal,private service : ManageUsersService,\r\n private cd: ChangeDetectorRef, private router:Router,private route:ActivatedRoute,private ts: ToastService,\r\n ) { }\r\n\r\n cancel() {\r\n this.activeModal.close('close');\r\n }\r\n\r\n onSubmit() {\r\n if (this.user?.lastOne) {\r\n this.activeModal.close();\r\n if(this.user?.teamName?.length > 0){\r\n this.service.changeTab( 'teams');\r\n }else{\r\n this.router.navigate(['/manage/stores'], { queryParams: { type: 'clusters' } });\r\n }\r\n } else {\r\n this.activeModal.close('submit');\r\n }\r\n }\r\n\r\n onSubmit1() {\r\n this.activeModal.close(\"submit\");\r\n }\r\n\r\n onSubmit2() {\r\n if (this.user?.teamLastOne) { \r\n this.activeModal.close();\r\n this.service.changeTab( 'teams');\r\n } else {\r\n this.activeModal.close('submit');\r\n }\r\n }\r\n}\r\n","<div class=\"card group-delete py-0\">\r\n <div *ngIf=\"(user?.isActive || !user?.isActive) && (!user?.lastOne && !user?.roleStatus)\" class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Are you sure1?</a>\r\n <span *ngIf=\"user?.isActive\" class=\"sub-title fw-normal mt-2\">Do you want to active the user<b> {{user?.userName}}</b> ?</span>\r\n <span *ngIf=\"!user?.isActive\" class=\"sub-title fw-normal mt-2\">Do you want to deactive the user<b> {{user?.userName}}</b> ?</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button *ngIf=\"user?.isActive\" id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit1()\">Active</button>\r\n <button *ngIf=\"!user?.isActive\" id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onSubmit1()\">Deactive </button>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n <div *ngIf=\"!user?.isActive && user?.lastOne && !user?.roleStatus\" class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a *ngIf=\"user?.teamName?.length && user?.clusterName?.length ===0\" class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">You are about to deactivate the user assigned as a lead to the {{user?.teamName.length > 1? 'teams':'team'}} <span *ngFor=\"let team of user?.teamName;let last = last\">{{team}}<span *ngIf=\"!last\">,</span></span>.</a>\r\n <a *ngIf=\"user?.teamName?.length && user?.clusterName?.length\" class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">You are about to deactivate the user assigned as a lead to the {{user?.teamName.length > 1? 'teams':'team'}} <span *ngFor=\"let team of user?.teamName;let last = last\">{{team}}<span *ngIf=\"!last\">,</span></span> and {{user?.clusterName.length > 1? 'clusters':'cluster'}} <span *ngFor=\"let cluster of user?.clusterName;let last = last\">{{cluster}}<span *ngIf=\"!last\">,</span></span>.</a>\r\n <a *ngIf=\"user?.clusterName?.length && user?.teamName?.length ===0\" class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">You are about to deactivate the user assigned as a lead to the {{user?.clusterName.length > 1? 'clusters':'cluster'}} <span *ngFor=\"let cluster of user?.clusterName;let last = last\">{{cluster}}<span *ngIf=\"!last\">,</span></span>.</a>\r\n <span class=\"sub-title fw-normal mt-2\">You have to assign another user as lead for the respective cluster/teams to deactivate this user.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit()\">Assign New Lead</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"user?.roleStatus== 'up'\" class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Upgrading User to an Admin</a>\r\n <span class=\"sub-title fw-normal mt-2\">You are about to promote an user of the team {{user?.teams}} to an Admin. This leads to remove the user from the respective team.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit1()\">Yes, proceed</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"user?.roleStatus== 'down'\" class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/>\r\n <path d=\"M27.9988 24V28M27.9988 32H28.0088M26.2888 18.86L17.8188 33C17.6442 33.3024 17.5518 33.6453 17.5508 33.9945C17.5498 34.3437 17.6403 34.6871 17.8132 34.9905C17.9862 35.2939 18.2355 35.5467 18.5365 35.7238C18.8375 35.9009 19.1796 35.9961 19.5288 36H36.4688C36.818 35.9961 37.1601 35.9009 37.4611 35.7238C37.7621 35.5467 38.0114 35.2939 38.1844 34.9905C38.3573 34.6871 38.4478 34.3437 38.4468 33.9945C38.4458 33.6453 38.3534 33.3024 38.1788 33L29.7088 18.86C29.5305 18.5661 29.2795 18.3231 28.98 18.1544C28.6805 17.9858 28.3425 17.8972 27.9988 17.8972C27.6551 17.8972 27.3171 17.9858 27.0176 18.1544C26.7181 18.3231 26.4671 18.5661 26.2888 18.86Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Downgrading Admin to a User</a>\r\n <span *ngIf=\"user?.teamLastOne\" class=\"sub-title fw-normal mt-2\">You are about to de-promote the last admin of the team {{user?.teams}} to a user. So you have to assign another user as lead for the respective teams to downgrade.</span>\r\n <span *ngIf=\"!user?.teamLastOne\" class=\"sub-title fw-normal mt-2\">You are about to de-promote an admin who is the lead of the team {{user?.teams}} to a user. This leads to remove the user from the respective team.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n \r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-primary w-100 ms-3\" (click)=\"onSubmit2()\">{{ user?.teamLastOne? 'Assign New Lead' : 'Yes, Proceed' }}</button>\r\n </div>\r\n \r\n </div>\r\n\r\n </div>\r\n</div>","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Observable, BehaviorSubject, catchError, map, throwError } from \"rxjs\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class UserService {\r\n private userApiUrl: string = '';\r\n private roleApiUrl: string = '';\r\n private storeApiUrl: string = '';\r\n private groupApiUrl: string = '';\r\n private auditWalletApiUrl: string = '';\r\n dataSubject = new BehaviorSubject<any>(null);\r\n rolesComms = new BehaviorSubject<any>(null);\r\n dropDownTrigger = new BehaviorSubject<any>(null)\r\n private clusterApiUrl:string = '';\r\n private teamsApiUrl:string=''\r\n constructor(private http: HttpClient, private gs: GlobalStateService) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.userApiUrl = env.userApiUrl;\r\n this.roleApiUrl = env.roleApiUrl;\r\n this.storeApiUrl = env.storeApiUrl;\r\n this.groupApiUrl = env.groupApiUrl;\r\n this.clusterApiUrl = env.clusterApiUrl;\r\n this.teamsApiUrl = env.teamsApiUrl;\r\n this.auditWalletApiUrl = env.auditWalletApiUrl\r\n }\r\n });\r\n }\r\n\r\n private handleError(error: HttpErrorResponse): Observable<never> {\r\n return throwError(\r\n () => new Error(\"Something bad happened; please try again later\")\r\n );\r\n }\r\n\r\n getUserList(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/get-list-v2`, params);\r\n }\r\n getUserListExport(data: any) {\r\n return this.http.post(`${this.userApiUrl}/get-list-v2`, data, { responseType: 'arraybuffer' })\r\n }\r\n getUser(userEmail: string): Observable<any> {\r\n return this.http\r\n .get<any>(`${this.userApiUrl}/get-user-details`, {\r\n params: { email: userEmail },\r\n })\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getRoles(req: any): Observable<any> {\r\n return this.http.post<any>(`${this.roleApiUrl}/get-roles`, req).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n createUser(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/create-user`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n\r\n updateUser(userBody: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/update-user`, userBody)\r\n .pipe(\r\n map((response: any) => response)\r\n );\r\n }\r\n\r\n userBulkUpload(usersBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/create-users`, usersBodyReq)\r\n // .pipe(\r\n // map((response: any) => response),\r\n // catchError(this.handleError)\r\n // );\r\n }\r\n\r\n getPersmissions(filter: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.roleApiUrl}/get-permission`, filter)\r\n .pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAssignStores(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.storeApiUrl}/store-assign-list`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n getAssignGroups(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.groupApiUrl}/group-assign-list`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n assignData(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/assignData`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n bulkUserAssign(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/bulk-assign-data`, data)\r\n }\r\n\r\n bulkstoreAssign(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/bulk-store-data`, data)\r\n }\r\n\r\n assignStores(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/assign-store`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getAssignclusters(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/AllclusterList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getAssignteams(data: any) {\r\n return this.http.post<any>(`${this.teamsApiUrl}/AllteamsList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n reAssignStores(data: any) {\r\n return this.http.post<any>(`${this.userApiUrl}/reassign-store`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n getUserAssignDetails(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.userApiUrl}/get-assign-stores`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n getUserAssignData(params: any): Observable<any> {\r\n return this.http.get<any>(`${this.userApiUrl}/get-assign-Data`, { params: params }).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n private messageSource = new BehaviorSubject<any>(\"default message\");\r\n currentMessage = this.messageSource.asObservable();\r\n\r\n changeMessage(message: any) {\r\n this.messageSource.next(message);\r\n }\r\n createSingleUsers(userBody: any): Observable<any> {\r\n return this.http.post<any>(`${this.userApiUrl}/createUser`, userBody)\r\n // .pipe(\r\n // map((response: any) => response)\r\n // );\r\n }\r\n createBulkUpload(usersBodyReq: any): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.userApiUrl}/createUsers`, usersBodyReq)\r\n // .pipe(\r\n // map((response: any) => response),\r\n // catchError(this.handleError)\r\n // );\r\n }\r\n getClusterList(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/getClusterList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n getProductList(data: any) {\r\n return this.http.post<any>(`${this.clusterApiUrl}/getproductList`, data).pipe(\r\n map((response: any) => response),\r\n catchError(this.handleError)\r\n )\r\n }\r\n\r\n getAuditWallet(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-user-summary`, { params: data })\r\n }\r\n\r\n ExportgetAuditWallet(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-user-summary`, { params: data, responseType: 'arraybuffer' as 'json', })\r\n }\r\n\r\n getAuditUserDetails(data: string) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/get-audit-user-details?userEmail=${data}`)\r\n }\r\n\r\n getConsolidatedCard(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/consolidated-card`, { params: data })\r\n }\r\n\r\n getAuditWalletSummary(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-wallet-summary`, { params: data })\r\n }\r\n\r\n ExportWalletAummary(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/audit-wallet-summary`, { params: data, responseType: 'arraybuffer' as 'json', })\r\n }\r\n\r\n getGenerateReport(data: any) {\r\n return this.http.get<any>(`${this.auditWalletApiUrl}/generate-report`, { params: data })\r\n }\r\n\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'team-select',\r\n templateUrl: './custom-select.component.html',\r\n styleUrl: './custom-select.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CustomSelectComponent implements OnChanges, OnInit {\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n\r\n @Output() selected = new EventEmitter<any>()\r\n @Output() deselected = new EventEmitter<any>()\r\n @Output() deselectedAll = new EventEmitter<any>()\r\n\r\n\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n\r\n\r\n constructor(private cd: ChangeDetectorRef, private authService: ManageUsersService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e) => {\r\n if (e !== this.instanceId) {\r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n if (changes['items']) {\r\n if (this.items?.length) {\r\n this.initializeItems();\r\n } else {\r\n this.filteredValues = []\r\n }\r\n\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) {\r\n this.updateSelectedValues();\r\n }\r\n }\r\n\r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n\r\n updateSelectedValues() {\r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n\r\n }\r\n\r\n openDropdown(event: any) {\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event.target.value.toLowerCase();\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].toLowerCase().includes(searchTerm)\r\n );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n\r\n onSelect(event: any, item: any) {\r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item);\r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n this.deselected.emit(item);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element: any) => {\r\n if (element[this.idField] !== item[this.idField]) {\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n }\r\n\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n\r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n\r\n }\r\n\r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n\r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.deselectedAll.emit(this.selectedValues);\r\n this.selectedValues = [];\r\n }\r\n\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n\r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n\r\n\r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n\r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> \r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 2\">+{{selectedValues?.length -2}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, Subscription, takeUntil } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { UserService } from '../../services/user.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AlertPopupComponent } from '../../components/tango-manage-users/user-table/alert-popup/alert-popup.component';\r\nimport * as CryptoJS from 'crypto-js';\r\n\r\nconst SECRET_KEY = CryptoJS.enc.Utf8.parse(\r\n CryptoJS.SHA256(\"t@ng0-ret@il-@pi-v3\")\r\n .toString(CryptoJS.enc.Base64)\r\n .substring(0, 32)\r\n);\r\n\r\n@Component({\r\n selector: 'lib-add-users',\r\n templateUrl: './add-users.component.html',\r\n styleUrl: './add-users.component.scss'\r\n})\r\nexport class AddUsersComponent implements OnDestroy, OnInit {\r\n private readonly destroy = new Subject();\r\n @Input() type: any;\r\n @Input() user: any;\r\n @Input() userType: any;\r\n @Input() data: any;\r\n userForm: FormGroup;\r\n operationType: string = 'add';\r\n teamList: any = []\r\n countryList: any;\r\n selectedUser: any = [];\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n user_data: any;\r\n $headerFilters: any;\r\n private readonly destroy$ = new Subject();\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Store\", isAdd: false, isEdit: false },\r\n { name: \"User\", isAdd: false, isEdit: false },\r\n { name: \"Camera\", isAdd: false, isEdit: false },\r\n { name: \"Configuration\", isAdd: false, isEdit: false },\r\n { name: \"Subscription\", isAdd: false, isEdit: false },\r\n { name: \"Billing\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoEye\",\r\n modules: [\r\n\r\n { name: \"ZoneTag\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoTrax\",\r\n modules: [\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"FootfallDirectory\",\r\n modules: [\r\n {\r\n name: 'creator', isAdd: false, isEdit: false\r\n },\r\n {\r\n name: 'reviewer', isAdd: false, isEdit: false\r\n },\r\n {\r\n name: \"approver\", isAdd: false, isEdit: false\r\n }\r\n ]\r\n }\r\n\r\n ];\r\n\r\n handleViewChange(modules: FormGroup | any): void {\r\n if (!modules.get(\"isAdd\")?.value) {\r\n modules.get(\"isDelete\")?.setValue(false);\r\n modules.get(\"isEdit\")?.setValue(false);\r\n }\r\n }\r\n handleEditChange(modules: FormGroup | any): void {\r\n if (!modules.get(\"isEdit\")?.value) {\r\n modules.get(\"isDelete\")?.setValue(false);\r\n }\r\n }\r\n\r\n constructor(private service: ManageUsersService,\r\n private cd: ChangeDetectorRef,\r\n public activeModal: NgbActiveModal,\r\n private fb: FormBuilder,\r\n private userService: UserService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService,\r\n public modalService: NgbModal\r\n ) {\r\n\r\n }\r\n ngOnDestroy(): void {\r\n\r\n this.destroy.next(false);\r\n this.destroy.complete();\r\n\r\n }\r\n // must match backend\r\n\r\n decrypt(encryptedText: string): string {\r\n const [ivHex, encrypted] = encryptedText.split(':');\r\n\r\n const iv = CryptoJS.enc.Hex.parse(ivHex);\r\n const ciphertext = CryptoJS.enc.Hex.parse(encrypted);\r\n\r\n const cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext });\r\n\r\n const decrypted = CryptoJS.AES.decrypt(cipherParams, SECRET_KEY, {\r\n iv: iv,\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7\r\n });\r\n\r\n return decrypted.toString(CryptoJS.enc.Utf8);\r\n }\r\n\r\n ngOnInit(): void {\r\n let data: any;\r\n if (\"header-filters\" in localStorage) {\r\n data = JSON.parse(localStorage.getItem('header-filters') || '');\r\n }\r\n this.user_data = JSON?.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = data ? data : this.user_data;\r\n\r\n this.getRoles();\r\n this.getAllTeamsList()\r\n if (this.type === \"view\" || (this.type === \"edit\")) {\r\n this.loadUserForm();\r\n } else {\r\n this.initUserForm();\r\n }\r\n this.getCountryCodes();\r\n }\r\n\r\n getRoles() {\r\n if (this.userType === 'tango') {\r\n this.permissionArray.push({\r\n featureName: \"TangoAdmin\",\r\n modules: [\r\n {\r\n name: \"invoiceApproval\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"EditBilling\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"TicketConfiguration\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"Reports\", isAdd: false,\r\n isEdit: false\r\n },\r\n ]\r\n },)\r\n }\r\n }\r\n\r\n omit_special_char(event: any) {\r\n var k;\r\n k = event.charCode;\r\n return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n }\r\n\r\n onRoleChange(role: string) {\r\n this.getUserPermissionData(role, this.user_data.userType);\r\n }\r\n getCountryCodes() {\r\n this.service.getAllCountries().subscribe({\r\n next: (res) => {\r\n this.countryList = res.data\r\n this.cd.detectChanges()\r\n },\r\n error: (err) => {\r\n\r\n }\r\n })\r\n }\r\n onrolechange(event: any) {\r\n if (event.target.value === 'user') {\r\n this.populatePermission(this.permissionArray);\r\n }\r\n\r\n }\r\n onStoreSelect(event: any) {\r\n this.selectedUser = event\r\n const teamLeadArray = this.userForm.get('teamLead') as FormArray;\r\n teamLeadArray.clear(); // Clears existing values\r\n\r\n this.selectedUser.forEach((user: any) => {\r\n teamLeadArray.push(new FormControl(user)); // Adds each user in selectedUser array\r\n });\r\n ;\r\n // this.setTeamLeads(event);\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close('submit');\r\n const triggerButton = document.querySelector('#triggerButtonId') as HTMLElement;\r\n triggerButton?.focus();\r\n }\r\n\r\n maskEmail(value: string): string {\r\n if (!value || !value.includes('@')) return '';\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(3, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n\r\n maskMobile(value: string): string {\r\n if (!value || value.length <= 4) return '*'.repeat(value.length);\r\n const first2 = value.slice(0, 2);\r\n const last2 = value.slice(-2);\r\n const maskedMiddle = '*'.repeat(value.length - 4);\r\n return `${first2}${maskedMiddle}${last2}`;\r\n }\r\n loadUserForm() {\r\n // this.userService.getUser(this.decrypt(this.user.email)).pipe(takeUntil(this.destroy$)).subscribe({\r\n this.userService.getUser(this.user.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data.result) {\r\n const userData = res.data.result;\r\n const isViewMode = this.type === 'view';\r\n const isSuperadmin = this.user_data?.role === 'superadmin';\r\n\r\n const email = (isViewMode && !isSuperadmin) ? this.maskEmail(userData.email) : userData.email;\r\n const mobile = (isViewMode && !isSuperadmin) ? this.maskMobile(userData.mobileNumber) : userData.mobileNumber;\r\n this.originalEmail = userData.email;\r\n this.originalMobile = userData.mobileNumber;\r\n this.userForm = this.fb.group({\r\n userName: [res.data.result.userName, Validators.required],\r\n email: [email, Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,6}$\"),\r\n ])],\r\n mobileNumber: [mobile, [Validators.required, Validators.minLength(8), Validators.maxLength(13)]],\r\n role: [res.data.result.role, Validators.required],\r\n userType: [res.data.result.userType, Validators.required],\r\n rolespermission: this.fb.array([], Validators.required),\r\n teamLead: this.fb.array([]),\r\n countryCode: [res.data.result.countryCode, Validators.required],\r\n });\r\n this.updateTangouserField(res.data.result.tangoUserType);\r\n if (this.type == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.selectedUser = res.data.teamsList\r\n if (this.selectedUser.length) {\r\n this.setTeamLeads(this.selectedUser);\r\n }\r\n // Promise.resolve().then(() => {\r\n // this.userForm.get('teamLead')?.setValue();\r\n this.populatePermission(res?.data?.result?.rolespermission);\r\n // });\r\n\r\n if (this.operationType == \"view\") {\r\n this.userForm.disable();\r\n }\r\n this.userForm.get(\"email\")?.disable();\r\n this.cd.detectChanges();\r\n // this.getUserPermissionData(res.data.result.role,res.data.result.userType);\r\n } else {\r\n this.initUserForm();\r\n }\r\n },\r\n error: () => {\r\n this.initUserForm();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n updateTangouserField(tangoUserType: any) {\r\n if (this.userType === 'tango') {\r\n if (!this.userForm.contains('tangoUserType')) {\r\n this.userForm.addControl('tangoUserType', this.fb.control(tangoUserType || 'dashboard', Validators.required));\r\n }\r\n } else {\r\n if (this.userForm.contains('tangoUserType')) {\r\n this.userForm.removeControl('tangoUserType');\r\n }\r\n }\r\n }\r\n\r\n initUserForm() {\r\n this.userForm = this.fb.group({\r\n userName: [\"\", Validators.required],\r\n email: [\"\", Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,6}$\")\r\n ])],\r\n mobileNumber: [\"\", [Validators.required, Validators.minLength(8), Validators.maxLength(13)]],\r\n role: [\"user\", Validators.required],\r\n userType: [this.userType, Validators.required],\r\n rolespermission: this.fb.array([], Validators.required),\r\n teamLead: this.fb.array([]),\r\n countryCode: [\"91\", Validators.required],\r\n });\r\n\r\n if (this.userType === 'tango') {\r\n if (!this.userForm.contains('tangoUserType')) {\r\n this.userForm.addControl('tangoUserType', this.fb.control('dashboard', Validators.required));\r\n }\r\n } else {\r\n if (this.userForm.contains('tangoUserType')) {\r\n this.userForm.removeControl('tangoUserType');\r\n }\r\n }\r\n this.getUserPermissionData(\"user\", this.user_data.userType);\r\n }\r\n populatePermission(permissionsData: any[]) {\r\n const permissions = this.userForm.get(\"rolespermission\") as FormArray;\r\n permissions.clear(); // Clear existing entries\r\n\r\n permissionsData.forEach((rolespermission: any) => {\r\n const featureGroup = this.fb.group({\r\n featureName: [rolespermission?.featureName],\r\n modules: this.fb.array([]), // Initialize modules as a FormArray\r\n });\r\n\r\n const modulesArray = featureGroup.get(\"modules\") as FormArray;\r\n rolespermission.modules.forEach((module: any) => {\r\n const moduleGroup = this.fb.group({\r\n name: [module.name],\r\n isAdd: [{ value: module.isAdd, disabled: this.type === 'view' }], // Set disabled based on type\r\n isEdit: [{ value: module.isEdit, disabled: this.type === 'view' }], // Set disabled based on type\r\n // isDelete: [module.isDelete],\r\n });\r\n modulesArray.push(moduleGroup); // Add each module to modules array\r\n });\r\n\r\n permissions.push(featureGroup); // Add each feature group to permissions\r\n });\r\n\r\n // Trigger validation after populating\r\n permissions.updateValueAndValidity();\r\n }\r\n\r\n getPermissions(): FormArray {\r\n return this.userForm.get(\"rolespermission\") as FormArray;\r\n }\r\n\r\n getFeaturePermissions(rolespermission: FormGroup | any): FormArray {\r\n return rolespermission.get(\"modules\") as FormArray;\r\n }\r\n\r\n getUserPermissionData(roleName: string, userType: string) {\r\n (this.userForm?.get(\"rolespermission\") as FormArray).clear();\r\n this.populatePermission(this.permissionArray);\r\n }\r\n\r\n camelCaseToText(input: string): string {\r\n return input.replace(/([A-Z])/g, ' $1')\r\n .replace(/^./, (str) => str.toUpperCase())\r\n .trim();\r\n }\r\n\r\n originalEmail: string = '';\r\n originalMobile: string = '';\r\n addUserSubmit() {\r\n let value = this.updatePermissionsBasedOnUserType(this.userForm.value);\r\n const updatedData = this.removeNullValues(value);\r\n const clientId = this.$headerFilters.client ? this.$headerFilters.client : this.user_data.clientId;\r\n this.userService.createSingleUsers({ ...updatedData, clientId }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"User created successfully.\");\r\n this.activeModal.close('submit');\r\n this.gs.manageRefreshTrigger.next(true);\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create User!\");\r\n this.activeModal.close('submit');\r\n }\r\n },\r\n error: (err: any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to create User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { }\r\n });\r\n }\r\n\r\n onSubmit() {\r\n if (this.type == \"edit\") {\r\n this.userUpdate();\r\n } else {\r\n this.addUserSubmit();\r\n }\r\n }\r\n\r\n userUpdate() {\r\n this.userForm.get(\"email\")?.enable();\r\n let user: any = this.userForm.value;\r\n if (!user.mobileNumber || user.mobileNumber.includes('*')) {\r\n user.mobileNumber = this.originalMobile;\r\n } else {\r\n user.mobileNumber;\r\n }\r\n user.email = this.originalEmail;\r\n this.userForm.get(\"email\")?.disable();\r\n\r\n type Role = 'user' | 'admin' | 'superadmin';\r\n let mapping: Record<Role, number> = {\r\n user: 1,\r\n admin: 2,\r\n superadmin: 3,\r\n };\r\n\r\n let oldRole: Role = this.user.role;\r\n let updatedRole: Role = user.role;\r\n\r\n if (user?.role && mapping[oldRole] < mapping[updatedRole]) {\r\n this.user[\"roleStatus\"] = \"up\"\r\n this.service.getUserTeams({ email: user.email, type: \"user\" }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data?.result?.length > 0) {\r\n this.user[\"teams\"] = res.data.result\r\n // this.activeModal.close();\r\n const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.user = this.user\r\n\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n user.teamLead = []\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n });\r\n } else {\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n\r\n } else if (user?.role && mapping[oldRole] > mapping[updatedRole]) {\r\n this.user[\"roleStatus\"] = \"down\"\r\n\r\n if (!this.user.lastOne) {\r\n this.service.getUserTeams({ email: user.email, type: \"lead\" }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200 && res.data.result?.length > 0) {\r\n\r\n this.user[\"teams\"] = res.data.result\r\n // this.activeModal.close();\r\n // console.log({user:this.user, role1:mapping[oldRole], role2:mapping[updatedRole],mesg:\".............2\", role:user?.role})\r\n const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.user = this.user\r\n\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n // user.teamLead = []\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err: any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n });\r\n } else {\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n } else {\r\n // this.activeModal.close();\r\n const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.user = this.user\r\n\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n // user.teamLead = []\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err: any) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n });\r\n }\r\n } else {\r\n this.service.updateUsers(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n }\r\n updatePermissionsBasedOnUserType(user: any) {\r\n user.rolespermission.forEach((feature: any) => {\r\n feature.modules.forEach((modules: any) => {\r\n if (user.userType === \"users\") {\r\n modules.isAdd = false;\r\n modules.isEdit = false;\r\n }\r\n });\r\n });\r\n return user;\r\n }\r\n\r\n onFootfallAccessChange(featureIndex: number, moduleIndex: number) {\r\n const permissions = this.getPermissions();\r\n const featureGroup = permissions.at(featureIndex) as FormGroup;\r\n const modules = this.getFeaturePermissions(featureGroup);\r\n\r\n modules.controls.forEach((moduleControl, idx) => {\r\n const isEditControl = moduleControl.get('isEdit');\r\n const isAddControl = moduleControl.get('isAdd');\r\n const isSelected = idx === moduleIndex;\r\n \r\n if (isEditControl) {\r\n isEditControl.setValue(isSelected);\r\n }\r\n if (isAddControl) {\r\n isAddControl.setValue(isSelected);\r\n }\r\n });\r\n }\r\n removeNullValues = (data: any) => {\r\n if (!Array.isArray(data.rolespermission)) {\r\n throw new Error(\"Permission is not an array\");\r\n }\r\n\r\n // Map through the permissions and products to remove null values\r\n return {\r\n ...data,\r\n rolespermission: data.rolespermission.map((feature: any) => {\r\n return {\r\n ...feature,\r\n modules: feature.modules.map((modules: any) => {\r\n const newProduct: { [key: string]: any } = {};\r\n for (const [key, value] of Object.entries(modules)) {\r\n if (value !== null) {\r\n newProduct[key] = value;\r\n }\r\n }\r\n return newProduct;\r\n })\r\n };\r\n })\r\n };\r\n };\r\n getAllTeamsList() {\r\n this.service.getAllTeamsList({ clientId: this.$headerFilters.client }).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamList = res.data.result\r\n }\r\n })\r\n }\r\n editUser() {\r\n if (this.user?.isActive) {\r\n this.type = \"edit\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n } else if (this.user?.status === 'active') {\r\n this.type = \"view\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n }\r\n }\r\n isButtonDisabled(): boolean {\r\n const { teamLead, ...controlsToCheck } = this.userForm.controls;\r\n return Object.values(controlsToCheck).some(control => control.invalid);\r\n }\r\n setTeamLeads(teamList: any[]) {\r\n const teamLeadArray = this.userForm.get('teamLead') as FormArray;\r\n teamList.forEach(team => {\r\n // Push each team object as a new FormGroup into the teamLead FormArray\r\n if (team.clientId) {\r\n teamLeadArray.push(this.fb.group({\r\n _id: new FormControl(team._id),\r\n clientId: new FormControl(team.clientId),\r\n teamName: new FormControl(team.teamName),\r\n usersCount: new FormControl(team.usersCount)\r\n }));\r\n }\r\n\r\n });\r\n }\r\n\r\n omitSpecialChar(event: KeyboardEvent) {\r\n const key = event.key;\r\n const regex = /^[a-zA-Z0-9 _-]$/;\r\n if (!regex.test(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n omitSpecialCharPaste(event: ClipboardEvent) {\r\n const clipboardData = event.clipboardData || (window as any)['clipboardData'];;\r\n const pastedText = clipboardData.getData('text');\r\n const regex = /^[a-zA-Z0-9 _-]*$/;\r\n if (!regex.test(pastedText)) {\r\n event.preventDefault();\r\n this.ts.getErrorToast(\"Special characters are not allowed.\");\r\n }\r\n }\r\n\r\n preventClose(event: Event) {\r\n event.preventDefault();\r\n }\r\n\r\n}","<div class=\"card pt-0 pb-3 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5 d-flex\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/add-store-icon.svg\">\r\n </div>\r\n \r\n </div>\r\n <div class=\"row w-100\">\r\n <div *ngIf=\"type!=='view' && type!=='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Add\r\n User</a>\r\n <div class=\"sub-title\">Please add your user details</div>\r\n </div>\r\n <div *ngIf=\"type==='view' && type !=='edit'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">View your user details</div>\r\n </div>\r\n <ng-container *ngIf=\"operationType!=='view'\">\r\n <div *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit && type ==='view' && type !=='edit' && user?.role !== 'superadmin' && user?.isActive === true\" class=\"col-md-3 text-end px-0\" (click)=\"editUser()\">\r\n <button class=\"btn btn-outline\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3833_85908)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3833_85908\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></button>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"type==='edit' && type !=='view'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">Edit your user details</div>\r\n </div>\r\n <div class=\"w-100 h-0px scroll\">\r\n <div class=\"mt-5\" *ngIf=\"userForm\">\r\n <form [formGroup]=\"userForm\" novalidate=\"novalidate\" (keydown.enter)=\"preventClose($event)\" class=\"\">\r\n <div class=\"row px-0 me-3\">\r\n <!-- User Name Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"username\" class=\"form-label\">User Name <span class=\"alert-required text-danger\">*</span></label>\r\n <input type=\"text\" class=\"form-control\" id=\"username\" formControlName=\"userName\" autocomplete=\"off\" (keypress)=\"omitSpecialChar($event)\" (paste)=\"omitSpecialCharPaste($event)\">\r\n <div *ngIf=\"userForm.get('userName')?.invalid && (userForm.get('userName')?.dirty)\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('userName')?.errors?.['required']\">User Name is required.</small>\r\n </div>\r\n </div>\r\n \r\n <!-- Email Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Email <span class=\"alert-required text-danger\">*</span></label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" formControlName=\"email\" autocomplete=\"off\">\r\n <div *ngIf=\"userForm.get('email')?.invalid && userForm.get('email')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('email')?.errors?.['required']\">Email is required.</small>\r\n <small *ngIf=\"userForm.get('email')?.errors?.['pattern']\">Invalid email format.</small>\r\n </div>\r\n </div>\r\n \r\n <!-- Contact Number Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Contact Number <span class=\"alert-required text-danger\">*</span></label>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-lg-4 col-xl-4\">\r\n <select class=\"form-select ps-3 pe-8\" id=\"inputGroupSelect01\" formControlName=\"countryCode\">\r\n <option *ngFor=\"let country of countryList\" [value]=\"country.phonecode\">\r\n {{country.name}} ({{country.phonecode}})\r\n </option>\r\n </select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-8 col-xl-8\">\r\n <input type=\"text\" class=\"form-control\" (keypress)=\"omit_special_char($event)\"\r\n id=\"mobileNumber\" autocomplete=\"off\" formControlName=\"mobileNumber\" minlength=\"8\" maxlength=\"13\">\r\n <div *ngIf=\"userForm.get('mobileNumber')?.invalid && userForm.get('mobileNumber')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['required']\">Contact Number is required.</small>\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['minlength']\">Contact Number must be at least 8 digits.</small>\r\n <small *ngIf=\"userForm.get('mobileNumber')?.errors?.['maxlength']\">Contact Number cannot exceed 13 digits.</small>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Role Field -->\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"role\" class=\"form-label\">Role <span class=\"alert-required text-danger\">*</span></label>\r\n <select class=\"form-select\" formControlName=\"role\" (change)=\"onRoleChange(userForm.get('role')?.value)\">\r\n <option value=\"admin\">Admin</option>\r\n <option value=\"user\">User</option>\r\n </select>\r\n <div *ngIf=\"userForm.get('role')?.invalid && userForm.get('role')?.touched\" class=\"text-danger\">\r\n <small *ngIf=\"userForm.get('role')?.errors?.['required']\">Role is required.</small>\r\n </div>\r\n </div>\r\n \r\n <!-- Add to Team Field -->\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\" *ngIf=\"this.userType !=='tango'\">\r\n <label for=\"teamLead\" class=\"form-label teams-title\">Add to a team</label>\r\n <team-select [items]=\"teamList\" [multi]=\"true\" [searchField]=\"'teamName'\" [idField]=\"'_id'\" [disabled]=\"type === 'view' ? true : false\"\r\n (selected)=\"onStoreSelect($event)\" [selectedValues]=\"selectedUser\"></team-select>\r\n </div>\r\n <!-- footfall conf for user -->\r\n <div *ngIf=\"userForm.get('role')?.value === 'user'\" class=\"col-md-12 mb-5\">\r\n <h3 class=\"teams-title mb-4\">Access for User</h3>\r\n <!-- Tickets Section -->\r\n <div class=\"row w-100 mb-4\">\r\n <div class=\"title-header mt-2 ms-2\">\r\n {{'Tickets'}}\r\n </div>\r\n </div>\r\n \r\n <!-- Footfall directory Section -->\r\n <div class=\"row w-100 footfall-directory-access\">\r\n <div class=\"d-flex align-items-center gap-4 mt-3 ms-2\">\r\n <span class=\"global-label mb-0\">{{'Footfall directory'}}</span>\r\n <ng-container *ngIf=\"getPermissions().length\">\r\n <ng-container formArrayName=\"rolespermission\">\r\n <ng-container *ngFor=\"let rolespermission of getPermissions().controls; let i = index\" [formGroupName]=\"i\">\r\n <ng-container *ngIf=\"rolespermission.get('featureName')?.value === 'FootfallDirectory'\">\r\n <ng-container formArrayName=\"modules\">\r\n <ng-container *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\" [formGroupName]=\"j\">\r\n <div class=\"d-flex align-items-center\" [ngStyle]=\"{'margin-left.px': j === 0 ? 200 : 0}\">\r\n <input \r\n type=\"radio\" \r\n [id]=\"'footfall-' + modules.get('name')?.value\" \r\n name=\"footfallDirectoryAccess\" \r\n [value]=\"modules.get('name')?.value\"\r\n [checked]=\"modules.get('isEdit')?.value\"\r\n [disabled]=\"type === 'view'\" \r\n (change)=\"onFootfallAccessChange(i, j)\"\r\n class=\"cursor-pointer\">\r\n <label [for]=\"'footfall-' + modules.get('name')?.value\" class=\"global-label ms-2 mb-0 cursor-pointer\">\r\n {{ camelCaseToText(modules.get('name')?.value) }}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"userForm.get('role')?.value === 'admin'\">\r\n <h3 class=\"teams-title\" *ngIf=\"getPermissions().length\">Access for Admin</h3>\r\n <ng-container *ngIf=\"getPermissions().length\">\r\n <ng-container formArrayName=\"rolespermission\">\r\n <ng-container *ngFor=\"let rolespermission of getPermissions().controls; let i = index\" [formGroupName]=\"i\">\r\n <!-- Tickets Feature with Footfall directory radio buttons -->\r\n <div *ngIf=\"rolespermission.get('featureName')?.value === 'FootfallDirectory'\" class=\"table-responsive my-2 me-3\">\r\n <div class=\"row w-100\">\r\n <div class=\"title-header mt-4 ms-2\">\r\n {{ camelCaseToText(rolespermission.get('featureName')?.value) }}\r\n </div>\r\n </div>\r\n <!-- Footfall directory Section -->\r\n <div class=\"row w-100 footfall-directory-access\">\r\n <div class=\"d-flex align-items-center gap-4 mt-3 ms-2\">\r\n <span class=\"global-label mb-0\">{{'Footfall directory'}}</span>\r\n <ng-container *ngIf=\"rolespermission.get('modules')\" formArrayName=\"modules\">\r\n <ng-container *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\" [formGroupName]=\"j\">\r\n <div class=\"d-flex align-items-center\" [ngStyle]=\"{'margin-left.px': j === 0 ? 200 : 0}\">\r\n <input \r\n type=\"radio\" \r\n [id]=\"'footfall-admin-' + modules.get('name')?.value\" \r\n name=\"footfallDirectoryAccessAdmin\" \r\n [value]=\"modules.get('name')?.value\"\r\n [checked]=\"modules.get('isEdit')?.value\"\r\n [disabled]=\"type === 'view'\" \r\n (change)=\"onFootfallAccessChange(i, j)\"\r\n class=\"cursor-pointer\">\r\n <label [for]=\"'footfall-admin-' + modules.get('name')?.value\" class=\"global-label ms-2 mb-0 cursor-pointer\">\r\n {{ camelCaseToText(modules.get('name')?.value) }}\r\n </label>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Other Features with table format -->\r\n <div *ngIf=\"rolespermission.get('featureName')?.value !== 'FootfallDirectory'\" class=\"table-responsive my-2 me-3\">\r\n <div class=\"row w-100\">\r\n <div class=\"title-header mt-4 ms-2\">\r\n {{ camelCaseToText(rolespermission.get('featureName')?.value) }}\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"rolespermission.get('modules')\" formArrayName=\"modules\">\r\n <ng-container *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\" [formGroupName]=\"j\">\r\n <table class=\"w-100\">\r\n <tbody>\r\n <tr *ngIf=\"rolespermission.get('featureName')?.value !== 'TangoAdmin'\">\r\n <td class=\"w-50\">{{ camelCaseToText(modules.get('name')?.value) }}</td>\r\n <td class=\"text-start\">\r\n <div class=\"d-inline-flex align-items-center\">\r\n <input type=\"checkbox\" formControlName=\"isAdd\" class=\"cursor-pointer\" (change)=\"handleViewChange(modules)\">\r\n <label class=\"global-label ms-2 mt-auto\">Add</label>\r\n </div>\r\n </td>\r\n <td class=\"text-start\">\r\n <div class=\"d-inline-flex align-items-center\">\r\n <input formControlName=\"isEdit\" type=\"checkbox\" class=\"cursor-pointer\" (change)=\"handleEditChange(modules)\">\r\n <label class=\"global-label ms-2 mt-auto\">Edit</label>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n <div *ngIf=\"rolespermission.get('featureName')?.value === 'TangoAdmin'\" class=\"row w-100 text-nowrap\">\r\n <div class=\"col-md-4\" *ngFor=\"let modules of getFeaturePermissions(rolespermission)?.controls; let j = index\" [formGroupName]=\"j\">\r\n <div class=\"d-inline-flex mt-3\">\r\n <input type=\"checkbox\" class=\"cursor-pointer\" formControlName=\"isEdit\">\r\n <label class=\"global-label mb-5 mx-2 mt-1\" style=\"text-wrap:nowrap\">\r\n {{ camelCaseToText(modules.get('name')?.value) }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n \r\n </div>\r\n <div *ngIf=\"type!=='view'\" class=\"d-flex my-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\"\r\n (click)=\"onSubmit()\" [disabled]=\"userForm.invalid || type === 'view'\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport { FormArray, FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal, NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport Swal from \"sweetalert2\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\"\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { AddUsersComponent } from \"../../../components-v2/add-users/add-users.component\";\r\n\r\ndeclare var $: any;\r\n\r\n@Component({\r\n selector: \"lib-add-user-popup\",\r\n templateUrl: \"./add-user-popup.component.html\",\r\n styleUrl: \"./add-user-popup.component.scss\",\r\n})\r\nexport class AddUserPopupComponent implements OnInit, OnDestroy {\r\n @Input() type: string;\r\n @Input() user: any;\r\n @Input() userType: any;\r\n @Output() dataTosingleuser: EventEmitter<string> = new EventEmitter<string>();\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Store\", isAdd: false, isEdit: false },\r\n { name: \"User\", isAdd: false, isEdit: false },\r\n { name: \"Camera\", isAdd: false, isEdit: false },\r\n { name: \"Configuration\", isAdd: false, isEdit: false },\r\n { name: \"Subscription\", isAdd: false, isEdit: false },\r\n { name: \"Billing\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoEye\",\r\n modules: [\r\n\r\n { name: \"ZoneTag\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"TangoTrax\",\r\n modules: [\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n\r\n ];\r\n userForm: FormGroup;\r\n operationType: string;\r\n expandedItems: string[] = [];\r\n showsingleuser: boolean = false;\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp =/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/;\r\n userData: string;\r\n isExpanded: boolean[] = [];\r\n $headerFilters: any;\r\n private readonly destroy$ = new Subject();\r\n user_data: any;\r\n handleAddChange(product: FormGroup | any): void {\r\n if (!product.get(\"isAdd\")?.value) {\r\n product.get(\"isDelete\")?.setValue(false);\r\n product.get(\"isEdit\")?.setValue(false);\r\n }\r\n }\r\n handleEditChange(product: FormGroup | any): void {\r\n if (!product.get(\"isEdit\")?.value) {\r\n // product.get('isDownload')?.setValue(false);\r\n product.get(\"isDelete\")?.setValue(false);\r\n }\r\n }\r\n constructor(\r\n public activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef, public modalService: NgbModal,\r\n private fb: FormBuilder,\r\n private userService: UserService,\r\n private ts: ToastService,\r\n public gs: GlobalStateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n let data: any = JSON.parse(localStorage.getItem('header-filters') || '');\r\n this.user_data = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = data ? data : this.user_data;\r\n this.operationType = this.type;\r\n this.userService.dataSubject.subscribe({\r\n next: (data: any) => {\r\n if (data) {\r\n this.userData = data;\r\n // this.userType = data == \"Tango User\" ? \"tango\" : \"client\";\r\n }\r\n },\r\n });\r\n if (this.type === \"view\" || (this.type === \"edit\" && this.user.email)) {\r\n this.addSingleUser();\r\n this.loadUserForm();\r\n } else {\r\n this.initUserForm();\r\n this.showsingleuser = false;\r\n }\r\n if (this.userType === 'tango') {\r\n this.permissionArray.push({\r\n featureName: \"TangoAdmin\",\r\n modules: [\r\n {\r\n name: \"invoiceApproval\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"EditBilling\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"TicketConfiguration\", isAdd: false,\r\n isEdit: false\r\n },\r\n {\r\n name: \"Reports\", isAdd: false,\r\n isEdit: false\r\n },\r\n ]\r\n },)\r\n }\r\n }\r\n\r\n initUserForm() {\r\n this.userForm = this.fb.group({\r\n userName: [\"\", Validators.required],\r\n email: [\"\", Validators.compose([Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,6}$\"),\r\n ])],\r\n mobileNumber: [\"\", [Validators.required, Validators.minLength(7), Validators.maxLength(13)]],\r\n role: [\"user\", Validators.required],\r\n userType: [this.userType],\r\n tangoUserType: [\"dashboard\", Validators.required],\r\n permission: this.fb.array([], Validators.required),\r\n });\r\n this.getUserPermissionData(\"user\", this.userType);\r\n }\r\n maskEmail(value: string): string {\r\n if (!value || !value.includes('@')) return '';\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(5, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n \r\n maskMobile(value: string): string {\r\n if (!value || value.length <= 4) return '*'.repeat(value.length);\r\n const first2 = value.slice(0, 2);\r\n const last2 = value.slice(-2);\r\n const maskedMiddle = '*'.repeat(value.length - 4);\r\n return `${first2}${maskedMiddle}${last2}`;\r\n }\r\n \r\n loadUserForm() {\r\n this.userService.getUser(this.user.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200 && res.data.result) {\r\n const userData = res.data.result;\r\n const isViewMode = this.operationType === 'view';\r\n const isSuperadmin = userData.role === 'superadmin';\r\n \r\n const email = (isViewMode && !isSuperadmin) ? this.maskEmail(userData.email) : userData.email;\r\n const mobile = (isViewMode && !isSuperadmin) ? this.maskMobile(userData.mobileNumber) : userData.mobileNumber;\r\n \r\n this.userForm = this.fb.group({\r\n userName: [userData.userName, Validators.required],\r\n email: [email, Validators.compose([\r\n Validators.required,\r\n Validators.pattern(\"^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,6}$\"),\r\n ])],\r\n mobileNumber: [mobile, [Validators.required, Validators.minLength(7), Validators.maxLength(13)]],\r\n role: [userData.role, Validators.required],\r\n userType: [userData.userType, Validators.required],\r\n tangoUserType: [userData.tangoUserType, Validators.required],\r\n permission: this.fb.array([], Validators.required),\r\n });\r\n \r\n this.populatePermission(userData.permission);\r\n \r\n if (isViewMode) {\r\n this.userForm.disable(); // disable entire form\r\n }\r\n \r\n this.userForm.get(\"email\")?.disable(); // email is always disabled\r\n \r\n this.cd.detectChanges();\r\n } else {\r\n this.initUserForm();\r\n }\r\n },\r\n error: () => {\r\n this.initUserForm();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n toggleCollapse(index: number): void {\r\n this.isExpanded[index] = !this.isExpanded[index];\r\n }\r\n\r\n\r\n addSingleUser() {\r\n let obj = {\r\n type: 'add'\r\n }\r\n\r\n const modalRef = this.modalService.open(AddUsersComponent, { centered: true, size: 'lg', backdrop: 'static' });\r\n modalRef.componentInstance.data = obj;\r\n modalRef.componentInstance.userType = this.userType\r\n modalRef.result.then((result) => {\r\n this.activeModal.close('submit');\r\n })\r\n const data = \"single user\";\r\n this.dataTosingleuser.emit(data);\r\n }\r\n\r\n addUserSubmit() {\r\n this.userService.createUser({ ...this.userForm.value, ...{ clientId: this.$headerFilters.client ? this.$headerFilters.client : this.user_data.clientId } }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\"User created successfully.\");\r\n this.activeModal.close('submit');\r\n this.gs.manageRefreshTrigger.next(true)\r\n } else {\r\n this.ts.getErrorToast(\"Unable to create User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err: any) => {\r\n console.log(err)\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to create User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n cancel() {\r\n this.activeModal.close('submit');\r\n }\r\n\r\n editUser() {\r\n if (this.user.isActive) {\r\n this.operationType = \"edit\";\r\n this.userForm.enable();\r\n this.userForm.get(\"email\")?.disable();\r\n }\r\n }\r\n\r\n populatePermission(permissionsData: any[]) {\r\n const permissions = this.userForm.get(\"permission\") as FormArray;\r\n permissions.clear();\r\n permissionsData.forEach((permission: any) => {\r\n const featureGroup = this.fb.group({\r\n featureName: [permission?.featureName],\r\n product: this.fb.array([]),\r\n });\r\n\r\n const products = featureGroup.get(\"product\") as FormArray;\r\n permission.product.forEach((product: any) => {\r\n const productGroup = this.fb.group({\r\n name: [product.name],\r\n isView: [product.isView],\r\n isEdit: [product.isEdit],\r\n // isDownload: [product.isDownload],\r\n // isDelete: [product.isDelete],\r\n });\r\n products.push(productGroup);\r\n });\r\n\r\n permissions.push(featureGroup);\r\n });\r\n for (let i = 0; i < this.getPermissions().length; i++) {\r\n this.isExpanded.push(true);\r\n }\r\n }\r\n\r\n getProducts(featureName: string): FormArray {\r\n return this.userForm\r\n .get(\"permission\")\r\n ?.value.find((permission: any) => permission.featureName === featureName)\r\n .product;\r\n }\r\n\r\n getUserPermissionData(roleName: string, userType: string) {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n this.cd.detectChanges();\r\n this.userService\r\n .getPersmissions({\r\n roleName: roleName,\r\n userType: userType,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n if (res.code == 200) {\r\n this.populatePermission(res.data.result[0]?.permission);\r\n } else {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n }\r\n } else {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n }\r\n },\r\n error: (error: any) => {\r\n (this.userForm.get(\"permission\") as FormArray).clear();\r\n },\r\n complete: () => { },\r\n });\r\n this.cd.detectChanges();\r\n }\r\n\r\n omit_special_char(event: any) {\r\n var k;\r\n k = event.charCode; // k = event.keyCode; (Both can be used)\r\n return k == 8 || k == 32 || (k >= 48 && k <= 57);\r\n }\r\n\r\n getPermissions(): FormArray {\r\n return this.userForm.get(\"permission\") as FormArray;\r\n }\r\n\r\n getFeaturePermissions(permission: FormGroup | any): FormArray {\r\n return permission.get(\"product\") as FormArray;\r\n }\r\nhasInvalidChars(value: string): boolean {\r\n const regex = /^[a-zA-Z0-9 _-]*$/;\r\n return !regex.test(value);\r\n}\r\n onUpload(e: any) {\r\n let data: any[];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.ts.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n this.ts.getErrorToast('Please Upload the Valid File');\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n data = utils.sheet_to_json(ws);\r\n };\r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n this.inputFile.nativeElement.value = \"\";\r\n errMsgs.push(this.validateField(data[i].UserName, \"User name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].Email, \"Email\", i, this.emailRegex)\r\n );\r\n if (this.hasInvalidChars(data[i].UserName)) {\r\n errMsgs.push(`Row ${i + 1}: UserName : ${data[i].UserName} has invalid characters.`);\r\n }\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].Contact,\r\n \"Contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n // errMsgs.push(this.validateField(data[i].Role, \"Role\", i));\r\n }\r\n\r\n errMsgs = errMsgs.filter((x) => x != null);\r\n if (errMsgs.length > 0) {\r\n let errors = errMsgs.join(\"<br>\");\r\n Swal.fire({\r\n icon: \"error\",\r\n html: errors,\r\n customClass: {\r\n htmlContainer: \"error-htmlcontainer-class\",\r\n },\r\n heightAuto: false,\r\n showCancelButton: false,\r\n showConfirmButton: true,\r\n confirmButtonColor: \"#009EF7\",\r\n confirmButtonText: \"OK\",\r\n }).then((result) => { });\r\n return;\r\n }\r\n\r\n console.log('data', data)\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n userName: data[i].UserName,\r\n email: data[i].Email,\r\n mobileNumber: data[i].Contact.toString(),\r\n tangoUserType: data[i].UserType,\r\n role: 'user',\r\n rolespermission: this.permissionArray\r\n });\r\n }\r\n\r\n if (processedArray.length == 0) {\r\n return this.ts.getErrorToast(\"No user entered in CSV\")\r\n }\r\n\r\n\r\n this.userService\r\n .createBulkUpload(\r\n {\r\n users: processedArray,\r\n userType: this.userType,\r\n ...(this.userType == 'client') ? { clientId: this.$headerFilters.client } : {}\r\n }\r\n )\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res.code == 200) {\r\n this.activeModal.close('submit');\r\n this.ts.getSuccessToast('Users have been uploaded Successfully!');\r\n }\r\n },\r\n error: (error: any) => {\r\n if (error) {\r\n this.inputFile.nativeElement.value = \"\";\r\n this.ts.getErrorToast(error.error.error ? error.error.error : 'Unable to create multiple Users!');\r\n // } else {\r\n // this.ts.getErrorToast('Unable to create multiple Users!');\r\n }\r\n },\r\n });\r\n };\r\n $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }else {\r\n this.ts.getErrorToast(\"Please Upload a Valid File\");\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n }\r\n\r\n validateField(\r\n value: string | undefined | null | number,\r\n fieldName: string,\r\n row: number,\r\n regex?: RegExp\r\n ): string | null {\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n const defaultValue = `please enter the ${fieldName\r\n .toLowerCase()\r\n .replace(/\\b\\w/g, (l) => l.toUpperCase())}`;\r\n if (!value) {\r\n return `Please enter ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (typeof value == \"string\") {\r\n if (value.trim() === defaultValue.trim()) {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (regex && !regex.test(value.trim())) {\r\n console.log({regex:regex,email:value, value:regex.test(value.trim()), msg:\".........1\"});\r\n \r\n return `Please enter valid ${fieldName.toLowerCase()} in row ${row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onRoleChange(role: string) {\r\n this.getUserPermissionData(role, this.userType);\r\n }\r\n\r\n userUpdate() {\r\n this.userForm.get(\"email\")?.enable();\r\n let user: any = this.userForm.value;\r\n this.userForm.get(\"email\")?.disable();\r\n this.userService.updateUser(user).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(\r\n \"User details updated successfully.\"\r\n );\r\n this.activeModal.close('submit');\r\n } else {\r\n this.ts.getErrorToast(\"Unable to update User!\");\r\n this.activeModal.close();\r\n }\r\n },\r\n error: (err) => {\r\n this.ts.getErrorToast(err?.error?.error ? err?.error?.error : \"Unable to update User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n onSubmit() {\r\n if (this.operationType == \"edit\") {\r\n this.userUpdate();\r\n } else {\r\n this.addUserSubmit();\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n camelCaseToText(input: string): string {\r\n return input.replace(/([A-Z])/g, ' $1')\r\n .replace(/^./, (str) => str.toUpperCase())\r\n .trim();\r\n }\r\n}\r\n","<div class=\"card py-0 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <!-- <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/add-store-icon.svg\">\r\n </div> -->\r\n </div>\r\n <div class=\"row w-100\">\r\n <div *ngIf=\"operationType==='add'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Add\r\n User</a>\r\n <div class=\"sub-title\">Please add your user details</div>\r\n </div>\r\n <!-- <div *ngIf=\"operationType==='edit'\" class=\"col-md-12\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit User Details</a>\r\n <div class=\"sub-title\">Please Edit your user details</div>\r\n </div> -->\r\n <div *ngIf=\"operationType==='view'\" class=\"col-md-9\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">User Details</a>\r\n <div class=\"sub-title\">View your user details</div>\r\n </div>\r\n <!-- @if ((gs.userAccess | async)?.Global_User_isEdit) { -->\r\n <div *ngIf=\"operationType==='view' && (gs.userAccess | async)?.Global_User_isEdit\"\r\n class=\"col-md-3 text-end px-0\" (click)=\"editUser()\">\r\n <button class=\"btn btn-outline\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_3833_85908)\">\r\n <path\r\n d=\"M9.16602 3.3332H3.33268C2.89065 3.3332 2.46673 3.50879 2.15417 3.82135C1.84161 4.13391 1.66602 4.55784 1.66602 4.99986V16.6665C1.66602 17.1086 1.84161 17.5325 2.15417 17.845C2.46673 18.1576 2.89065 18.3332 3.33268 18.3332H14.9993C15.4414 18.3332 15.8653 18.1576 16.1779 17.845C16.4904 17.5325 16.666 17.1086 16.666 16.6665V10.8332M15.416 2.0832C15.7475 1.75168 16.1972 1.56543 16.666 1.56543C17.1349 1.56543 17.5845 1.75168 17.916 2.0832C18.2475 2.41472 18.4338 2.86436 18.4338 3.3332C18.4338 3.80204 18.2475 4.25168 17.916 4.5832L9.99935 12.4999L6.66602 13.3332L7.49935 9.99986L15.416 2.0832Z\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3833_85908\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg></button>\r\n </div>\r\n <!-- } -->\r\n </div>\r\n <div class=\"fw-bold text-gray-500 my-6\" *ngIf=\"!showsingleuser && this.operationType ==='add'\">\r\n <ul class=\"text-gray-400 fw-bold fs-6\">\r\n <li>Use the template to upload multiple users at once.</li>\r\n <li>Download the template here -\r\n <a [attr.href]=\"userType ==='tango' ? '../../../assets/files/TangoUsersTemplate.xlsx' : '../../../assets/files/UsersTemplate.xlsx'\"\r\n download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li>Add your data to the Template File</li>\r\n <li>Upload it below for processing</li>\r\n\r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-wrap mb-5 w-100\" *ngIf=\"!showsingleuser && this.operationType ==='add'\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUpload($event)\" value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline bg-primary btn-outline-default rounded-3 w-100 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"text-white mx-2 single-user\">Add Multiple Users</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"mx-2 orval\">Or </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"addSingleUser()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-100 p-4 mt-3\"><span class=\"fw-bold fs-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M17.1663 17.5V15.8333C17.1663 14.9493 16.8152 14.1014 16.19 13.4763C15.5649 12.8512 14.7171 12.5 13.833 12.5H7.16634C6.28229 12.5 5.43444 12.8512 4.80932 13.4763C4.1842 14.1014 3.83301 14.9493 3.83301 15.8333V17.5M13.833 5.83333C13.833 7.67428 12.3406 9.16667 10.4997 9.16667C8.65873 9.16667 7.16634 7.67428 7.16634 5.83333C7.16634 3.99238 8.65873 2.5 10.4997 2.5C12.3406 2.5 13.833 3.99238 13.833 5.83333Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span id=\"triggerButtonId\" class=\"mx-2 single-user fw-bold\">Add Single\r\n User</span></span></label>\r\n </div>\r\n\r\n <div class=\"w-100 h-500px scroll\" *ngIf=\"showsingleuser\">\r\n <div class=\"mt-5\" *ngIf=\"userForm\">\r\n <form [formGroup]=\"userForm\" novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0 me-3\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"username\" class=\"form-label\">User Name</label>\r\n <input type=\"text\" class=\"form-control\" id=\"username\" formControlName=\"userName\"\r\n autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Email</label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" formControlName=\"email\"\r\n autocomplete=\"off\" required>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"contact\" class=\"form-label\">Contact Number</label>\r\n <input type=\"text\" class=\"form-control\" id=\"contact\" formControlName=\"mobileNumber\"\r\n autocomplete=\"off\" required minlength=\"10\" maxlength=\"13\"\r\n (keypress)=\"omit_special_char($event)\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"role\" class=\"form-label\">Role</label>\r\n <select class=\"form-select\" formControlName=\"role\"\r\n (change)=\"onRoleChange(userForm.get('role')?.value)\">\r\n <option value=\"superadmin\">Super Admin</option>\r\n <option value=\"admin\">Admin</option>\r\n <option value=\"user\">User</option>\r\n </select>\r\n </div>\r\n <div *ngIf=\"userType === 'tango'\" class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"tangoUserType\" class=\"form-label\">User Type</label>\r\n <select class=\"form-select\" formControlName=\"tangoUserType\"\r\n (change)=\"onRoleChange(userForm.get('tangoUserType')?.value)\">\r\n <option value=\"dashboard\">Dashboard</option>\r\n <option value=\"audit\">Audit</option>\r\n </select>\r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\">Access for\r\n {{userForm.get('role')?.value | titlecase}}</a>\r\n <div class=\"sub-title font-sub\">{{userForm.get('role')?.value | titlecase}} can access respective\r\n enabled features and products</div>\r\n <ng-container *ngIf=\"getPermissions().length\">\r\n <ng-container formArrayName=\"permission\">\r\n <ng-container *ngFor=\"let permission of getPermissions().controls; let i = index\"\r\n [formGroupName]=\"i\">\r\n <div class=\"my-6\">\r\n <div class=\"row me-3\">\r\n <div class=\"col-6\">\r\n <div class=\"title fw-semibold\">\r\n {{ permission.get('featureName')?.value | titlecase }}\r\n\r\n </div>\r\n </div>\r\n <div class=\"col-6 d-flex justify-content-end\" (click)=\"toggleCollapse(i)\">\r\n <div class=\"text-end\">\r\n @if (!isExpanded[i]) {\r\n <svg width=\"13\" height=\"8\" viewBox=\"0 0 13 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M1.5 1.5L6.5 6.5L11.5 1.5\" stroke=\"#667085\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n } @else {\r\n <svg width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M11 6.5L6 1.5L1 6.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{ 'collapsed': !isExpanded[i] }\">\r\n <div class=\"table-responsive my-2 me-3\">\r\n <table class=\"w-100\">\r\n <thead>\r\n <tr>\r\n <th>Modules</th>\r\n <th>View</th>\r\n <th>Edit</th>\r\n <th>Download</th>\r\n <th>Delete</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"permission.get('product')\"\r\n formArrayName=\"product\">\r\n <ng-container\r\n *ngFor=\"let product of getFeaturePermissions(permission)?.controls;let j=index;\"\r\n [formGroupName]=\"j\">\r\n <tr>\r\n <td>{{ camelCaseToText(product.get('name')?.value) }}\r\n </td>\r\n <td><input formControlName=\"isView\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n (change)=\"handleAddChange(product)\"></td>\r\n <td><input formControlName=\"isEdit\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n (change)=\"handleEditChange(product)\"></td>\r\n <td><input formControlName=\"isDownload\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n [disabled]=\"!product.get('isEdit')?.value || !product.get('isView')?.value\">\r\n </td>\r\n <td><input formControlName=\"isDelete\" type=\"checkbox\"\r\n class=\"cursor-pointer\"\r\n [disabled]=\"!product.get('isEdit')?.value || !product.get('isView')?.value\">\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div *ngIf=\"operationType!=='view'\" class=\"d-flex my-14\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 mx-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 mx-3\" [disabled]=\"userForm.invalid\" id=\"alert-toast\"\r\n (click)=\"onSubmit()\">Submit</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { UserService } from '../../../services/user.service';\r\n@Component({\r\n selector: 'lib-group-select',\r\n templateUrl: './group-select.component.html',\r\n styleUrl: './group-select.component.scss'\r\n})\r\nexport class GroupSelectComponent {\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n \r\n @Input() items: any\r\n @Input() searchField: string\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n @Output() selected = new EventEmitter<any>()\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n \r\n \r\n constructor(private cd: ChangeDetectorRef, private userService:UserService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.userService.dropDownTrigger.subscribe((e)=>{ \r\n if(e !== this.instanceId){ \r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n if (changes['items'] && this.items?.length) {\r\n this.initializeItems();\r\n }\r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) { \r\n this.updateSelectedValues();\r\n }\r\n }\r\n \r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n \r\n updateSelectedValues() { \r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n \r\n }\r\n \r\n openDropdown(event: any) {\r\n this.userService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n \r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event.target.value.toLowerCase();\r\n this.filteredValues = this.items.filter((item: any) =>\r\n item[this.searchField].toLowerCase().includes(searchTerm)\r\n );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n \r\n onSelect(event: any, item: any) { \r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item ); \r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element:any) => {\r\n if(element[this.idField] !== item[this.idField]){\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n \r\n }\r\n \r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n \r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.selectedValues = [];\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n \r\n \r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n \r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n}\r\n","<div class=\"outer-container\">\r\n <div [ngClass]=\"disabled ? 'disable-input':''\" (click)=\"openDropdown($event)\" class=\"form-select\">\r\n <ng-container *ngIf=\"multi\" >\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\"> <img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[0]?.[searchField]}}</span> \r\n <!-- <span *ngIf=\"selectedValues?.length > 1\" class=\"select-value mx-2\"><img class=\"me-2\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\">{{selectedValues?.[1]?.[searchField]}}</span> -->\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">+{{selectedValues?.length -1}}</span> {{label}} \r\n </ng-container>\r\n <ng-container *ngIf=\"!multi\" >\r\n {{selectedValues?.[0]?.[searchField]}}\r\n </ng-container>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-container dropdown\" >\r\n <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div>\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\" >\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n [id]=\"instanceId\">\r\n <span class=\"form-check-label\" >\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n {{item[searchField]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import {\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n Input,\r\n OnInit, ViewChild,ElementRef\r\n} from \"@angular/core\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { NgbActiveModal, NgbModal, NgbModalRef } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\n\r\n@Component({\r\n selector: \"lib-assign-store-popup\",\r\n templateUrl: \"./assign-store-popup.component.html\",\r\n styleUrl: \"./assign-store-popup.component.scss\",\r\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\r\n host: {\r\n '(document:click)': 'onClick($event)',\r\n },\r\n})\r\nexport class AssignStorePopupComponent implements OnInit {\r\n @Input() user: any;\r\n select: string = \"stores\";\r\n stores: any[] = [];\r\n clusters: any[] = [];\r\n teams:any[]=[];\r\n $headerFilters: any;\r\n modalRef: NgbModalRef;\r\n userData: any;\r\n userType: string;\r\n selectedTextstores:any\r\n selectedTextclusters:any\r\n selectedTextteams: any\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n @ViewChild('afterValidation') afterValidation: any;\r\n\r\n uploadPopUp: any;\r\n\r\n constructor(\r\n private userService: UserService,\r\n private cd: ChangeDetectorRef,\r\n private ts: ToastService,\r\n public activeModal: NgbActiveModal,\r\n private modalService: NgbModal\r\n ) {\r\n this.userService.dataSubject.subscribe({\r\n next: (data: any) => {\r\n this.userData = data;\r\n this.userType = data == \"Tango User\" ? \"tango\" : \"client\";\r\n },\r\n });\r\n let data: any = JSON.parse(localStorage.getItem(\"header-filters\") || \"\");\r\n if (data) {\r\n this.$headerFilters = data;\r\n } else if(!data){\r\n let user: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.$headerFilters = user;\r\n this.$headerFilters.client = user.clientId;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.getAssignStoreList();\r\n this.getclusterList();\r\n this.getteamsList() \r\n }\r\n\r\n loadUserAssignDetails() {\r\n this.userService\r\n .getUserAssignData({\r\n email: this.user.email, \r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.loadSelectedStores(res.data.stores);\r\n this.loadSelectedclusters(res.data.clusters);\r\n this.loadSelectedteams(res.data.teams);\r\n\r\n this.cd.detectChanges();\r\n } \r\n },\r\n error: () => { \r\n this.cd.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n getAssignStoreList() {\r\n this.userService\r\n .getAssignStores({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[0].Stores = res.data.result;\r\n this.loadUserAssignDetails();\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[0].Stores = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n getclusterList() {\r\n this.userService\r\n .getAssignclusters({ clientId: this.$headerFilters.client })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[1].clusters = res.data.result;\r\n \r\n }\r\n },\r\n error: () => {\r\n this.dataObject[1].clusters = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n getteamsList() {\r\n this.userService\r\n .getAssignteams({ clientId: this.$headerFilters.client, userEmail:this.user?.email })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.dataObject[2].teams = res.data.result;\r\n \r\n // if (this.user.assignedValue) {\r\n // this.loadSelectedteams(this.user.assignedValue);\r\n // }\r\n }\r\n },\r\n error: () => {\r\n this.dataObject[2].clusters = [];\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n storesType(e: any) {\r\n this.Opendropdown = false;\r\n // this.resetclusters();\r\n // this.resetStore();\r\n if (this.select == \"stores\") {\r\n if(this.selectedValuesArray[0].length==0){\r\n this.selectedTextstores = \"Select Stores\";\r\n }else{\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n } else if(this.select =='clusters') {\r\n if(this.selectedValuesArray[1].length==0){\r\n this.selectedTextclusters = \"Select Clusters\";\r\n }else{\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n } \r\n }else if(this.select =='teams') {\r\n if(this.selectedValuesArray[2].length==0){\r\n this.selectedTextteams = \"Select Teams\";\r\n }else{\r\n this.selectedTextteams = `${this.selectedValuesArray[2].length} Teams Selected`;\r\n } \r\n }\r\n }\r\n\r\n resetStore() {\r\n this.dataObject[0].Stores = [];\r\n this.stores = [];\r\n this.selectedValuesArray[0] = [];\r\n }\r\n\r\n resetclusters() {\r\n this.dataObject[1].clusters = [];\r\n this.clusters = [];\r\n this.selectedValuesArray[1] = [];\r\n }\r\n resetTeams() {\r\n this.dataObject[2].teams = [];\r\n this.teams = [];\r\n this.selectedValuesArray[2] = [];\r\n }\r\n Opendropdown: boolean = false;\r\n dataObject: any[] = [\r\n { Description: \"Stores\", Stores: [] },\r\n { Description: \"Clusters\", clusters: [] },\r\n { Description: \"Teams\", teams: [] },\r\n\r\n ];\r\n selectedValuesArray: any[] = [[], [],[]];\r\n selectedText: string;\r\n\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest(\".dropdown1\")) {\r\n this.Opendropdown = false;\r\n }\r\n if (!target.closest(\".dropdown-content\")) {\r\n this.dataObject.forEach((item: any, i: any) => {\r\n item.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n Dropdown(value: any, index: number, event: MouseEvent) {\r\n event.stopPropagation();\r\n this.dataObject.forEach((item: any, i: any) => {\r\n if (i !== index) {\r\n item.isOpen = false;\r\n }\r\n });\r\n this.dataObject[index].isOpen = !this.dataObject[index].isOpen;\r\n }\r\n\r\n toggleCheckboxStores(\r\n event: any,\r\n store: any,\r\n index: number,\r\n subIndex: number\r\n ) {\r\n const stores = this.dataObject[0].Stores;\r\n this.selectedValuesArray[0] = this.selectedValuesArray[0] || [];\r\n\r\n if (store === \"Select All\") {\r\n const checked = event.target.checked;\r\n stores.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[0] = checked ? [...stores] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[0].findIndex(\r\n (item: any) => item.storeName === store.storeName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[0].push(store)\r\n : this.selectedValuesArray[0].splice(storeIndex, 1);\r\n this.dataObject[index].Stores[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = stores.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${store.storeName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[0]);\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n toggleCheckboxTeams(\r\n event: any,\r\n team: any,\r\n index: number,\r\n subIndex: number\r\n ) {\r\n \r\n const teams = this.dataObject[2].teams;\r\n this.selectedValuesArray[2] = this.selectedValuesArray[2] || [];\r\n\r\n if (team === \"Select All\") {\r\n const checked = event.target.checked;\r\n teams.forEach((item: any) => (item.checked = checked));\r\n this.selectedValuesArray[2] = checked ? [...teams] : [];\r\n } else {\r\n const isChecked = event.target.checked;\r\n const storeIndex = this.selectedValuesArray[2].findIndex(\r\n (item: any) => item.userName === team.userName\r\n );\r\n isChecked\r\n ? this.selectedValuesArray[2].push(team)\r\n : this.selectedValuesArray[2].splice(storeIndex, 1);\r\n this.dataObject[index].teams[subIndex].checked = isChecked;\r\n }\r\n\r\n const selectAllChecked = teams.every((item: any) => item.checked);\r\n (\r\n document.getElementById(`selectall${index}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(selectAllChecked));\r\n (\r\n document.getElementById(`option${teams.storeName}`) as HTMLInputElement\r\n )?.setAttribute(\"checked\", String(event.target.checked));\r\n\r\n this.loadTable(this.selectedValuesArray[2]);\r\n this.selectedTextteams = `${this.selectedValuesArray[2].length} Teams Selected`;\r\n }\r\n\r\n loadTable(values: any[]) {\r\n if (this.select == \"stores\") {\r\n this.stores = values;\r\n } else if(this.select == \"clusters\") {\r\n this.clusters = values;\r\n }else if(this.select == \"teams\") {\r\n this.teams = values;\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n onstoreSelect(event: any) {\r\n this.selectedValuesArray[0] = event\r\n this.cd.detectChanges();\r\n }\r\n ongroupSelect(event: any) {\r\n this.selectedValuesArray[1] = event\r\n this.cd.detectChanges();\r\n } \r\n onTeamsSelect(event: any) {\r\n this.selectedValuesArray[2] = event\r\n this.cd.detectChanges();\r\n }\r\n \r\n\r\n onSubmit() {\r\n if (this.user.assignedValue && this.user.assignedValue.length) {\r\n this.reAssignSubmit();\r\n } else {\r\n this.assignSubmit();\r\n }\r\n }\r\n\r\n excelError: any;\r\n excelData: any = []\r\n validatedOutput: any = [];\r\n\r\n getStoreCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(data?.map((item: any) => item['Store Name/Store Id']));\r\n return uniqueUserNames.size;\r\n\r\n }\r\n\r\n fileError: boolean = false;\r\n apiData: any = [];\r\n\r\n onUpload(e:any) {\r\n let data: any = [];\r\n let error: any = [];\r\n let sheetName: any = '';\r\n\r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.ts.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n\r\n data = utils.sheet_to_json(ws, {defval: \"\",raw:true});\r\n this.excelData = data;\r\n sheetName = wb.SheetNames[0];\r\n };\r\n \r\n reader.readAsBinaryString(target.files[0]);\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n \r\n if (sheetName != \"StoreData\") {\r\n this.fileError = true\r\n this.ts.getErrorToast(\"Can you confirm whether the sheet name is StoreData ?\");\r\n return\r\n }\r\n if (!data?.length) {\r\n this.ts.getErrorToast(\"Please upload a valid file\");\r\n return\r\n }\r\n\r\n const requiredKeys = ['Store Name/Store Id'] // Must always be present\r\n // const optionalKeys = ['userPhone', 'city'] : ['city'];\r\n \r\n const isValid = data.some((item: any) => {\r\n const keys = Object.keys(item);\r\n const hasRequiredKeys = requiredKeys.every(key => keys.includes(key));\r\n const allKeysAreAllowed = keys.every(key => \r\n requiredKeys.includes(key)\r\n // || optionalKeys.includes(key)\r\n );\r\n return hasRequiredKeys && allKeysAreAllowed;\r\n });\r\n\r\n if (!isValid) {\r\n this.ts.getErrorToast('Please upload a valid file.');\r\n return;\r\n }\r\n\r\n data?.forEach((element: any, index: any) => {\r\n if ( !element?.['Store Name/Store Id'] || element?.['Store Name/Store Id'] == '' || element?.['Store Name/Store Id'] == null) {\r\n error.push(`Invalid Store Name/Store Id - A${index + 2}`)\r\n } else {\r\n processedArray.push({\r\n value: data[index]['Store Name/Store Id']\r\n }) \r\n } \r\n })\r\n if (error.length) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: error\r\n }\r\n this.afterUplload(popupcontent)\r\n return;\r\n }\r\n\r\n if(this.fileError){\r\n return\r\n }\r\n \r\n processedArray = processedArray.map((el: any) => { return { store: el?.value } });\r\n \r\n this.userService\r\n .bulkstoreAssign({\r\n userEmail:this.user.email,\r\n data: processedArray\r\n })\r\n .subscribe({\r\n next: (res: any) => { \r\n if (res && res.code == 200) {\r\n this.apiData = res?.data?.result;\r\n this.selectedValuesArray[0] = res?.data?.result.map((el: any) => {\r\n const stores = this.dataObject?.[0]?.Stores;\r\n const match = stores?.find((val: any) => val._id === el?._id);\r\n if (match) {\r\n match.checked = true;\r\n return match;\r\n }\r\n return null;\r\n }).filter((item:any) => item !== null);\r\n\r\n this.afterUplload();\r\n }else{\r\n this.ts.getErrorToast(\"The given Store not associated with this brand\");\r\n }\r\n },\r\n error: (err: any) => {\r\n if (err.error.code == 400) { // this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: err.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile.nativeElement.value = \"\";\r\n } else {\r\n this.ts.getErrorToast(err.error.error);\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n },\r\n });\r\n };\r\n // $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }\r\n }\r\n\r\n proceedSubmit() {\r\n this.loadTable(this.selectedValuesArray[0]);\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n\r\n closeactivepopup() {\r\n // this.modalService.dismissAll();\r\n }\r\n\r\n afterUplload(data?: any) {\r\n this.excelError = data;\r\n if (this.uploadPopUp) {\r\n this.uploadPopUp.dismiss();\r\n }\r\n this.uploadPopUp = this.modalService.open(this.afterValidation, { centered: true, backdrop: 'static', size: 'lg', windowClass: 'custom-modal-width' })\r\n }\r\n\r\n assignSubmit() {\r\n \r\n this.apiData = this.selectedValuesArray[0].map((el: any) => {\r\n return {\r\n _id: el?._id,\r\n storeName:el?.storeName,\r\n storeId:el?.storeId\r\n }\r\n })\r\n\r\n let payload = {\r\n data: [{\r\n userEmail: this.user.email,\r\n stores: this.apiData,\r\n clusters:this.selectedValuesArray[1],\r\n teams:this.selectedValuesArray[2] \r\n }]\r\n // userId:this.user._id,\r\n // clientId: this.$headerFilters.client,\r\n // userType: this.userType,\r\n } \r\n this.userService\r\n .assignData(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(`Stores Assigned to User Successfully!`);\r\n } else {\r\n this.ts.getErrorToast(`Unable to assign Stores to User!`)\r\n }\r\n this.activeModal.close('submit');\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n reAssignSubmit() {\r\n let payload= {\r\n userId:this.user._id,\r\n clientId: this.$headerFilters.client,\r\n userEmail: this.user.email,\r\n userType: this.userType,\r\n stores:this.selectedValuesArray[0],\r\n clusters:this.selectedValuesArray[1],\r\n teams:this.selectedValuesArray[2]\r\n }\r\n this.userService\r\n .reAssignStores(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.ts.getSuccessToast(`Stores Assigned to User Successfully!`);\r\n } else {\r\n this.ts.getErrorToast(`Unable to Assign Stores to User!`)\r\n }\r\n this.activeModal.close('submit');\r\n },\r\n error: () => {\r\n this.ts.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.activeModal.close();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n loadSelectedStores(stores: any[]) {\r\n this.selectedValuesArray[0] = [];\r\n this.dataObject[0].Stores.forEach((store: any) => {\r\n const exists = stores.some( ( obj:any ) => obj.storeId === store.storeId );\r\n if (exists) { \r\n store.checked = true;\r\n this.selectedValuesArray[0].push(store);\r\n }\r\n });\r\n this.stores = this.selectedValuesArray[0];\r\n this.selectedTextstores = `${this.selectedValuesArray[0].length} Stores Selected`;\r\n }\r\n loadSelectedteams(teams: any[]){\r\n this.selectedValuesArray[2] = [];\r\n this.dataObject[2].teams.forEach((team: any) => {\r\n const exists = teams.some( ( obj:any ) => obj._id === team._id );\r\n if (exists) {\r\n team.checked = true;\r\n this.selectedValuesArray[2].push(team);\r\n this.teams.push(team._id)\r\n }\r\n });\r\n this.selectedTextteams = `${this.selectedValuesArray[1].length} Teams Selected`;\r\n }\r\n loadSelectedclusters(clusters: any[]) {\r\n this.selectedValuesArray[1] = [];\r\n this.dataObject[1].clusters.forEach((cluster: any) => {\r\n const exists = clusters.some( ( obj:any ) => obj._id === cluster._id );\r\n if (exists) {\r\n cluster.checked = true;\r\n this.selectedValuesArray[1].push(cluster);\r\n this.clusters.push(cluster._id)\r\n }\r\n });\r\n this.selectedTextclusters = `${this.selectedValuesArray[1].length} Clusters Selected`;\r\n }\r\n\r\n closeModal() {\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card assign-store py-0 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <!-- <div class=\"symbol symbol-75px symbol-circle\">\r\n <img alt=\"Pic\" src=\"./assets/tango/Icons/assign-adduser.svg\">\r\n </div> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n<rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\"/>\r\n<rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\"/>\r\n<path d=\"M32 37V35C32 33.9391 31.5786 32.9217 30.8284 32.1716C30.0783 31.4214 29.0609 31 28 31H21C19.9391 31 18.9217 31.4214 18.1716 32.1716C17.4214 32.9217 17 33.9391 17 35V37M36 24V30M39 27H33M28.5 23C28.5 25.2091 26.7091 27 24.5 27C22.2909 27 20.5 25.2091 20.5 23C20.5 20.7909 22.2909 19 24.5 19C26.7091 19 28.5 20.7909 28.5 23Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n</svg>\r\n </div>\r\n <a class=\"title mb-3\">Assign {{(select ==='clusters' ? 'as lead to' : 'as user to') | titlecase}}</a>\r\n <!-- <span class=\"sub-title my-2\">Please assign the {{select === 'stores' ? 'store' :(select ==='users' ? 'user' : 'cluster')}}</span> -->\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs border-transparent flex-nowrap \">\r\n\r\n <li class=\"nav-item nav-item1\" (click)=\"select='stores'; storesType($event)\">\r\n <a [ngClass]=\"select === 'stores' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Stores</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"select='clusters'; storesType($event)\"><a\r\n [ngClass]=\"select === 'clusters' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Cluster</a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"select='teams'; storesType($event)\"><a\r\n [ngClass]=\"select === 'teams' ? 'active' : ''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Teams</a>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"select ==='stores'\" class=\"w-100 my-5\">\r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(dataObject[0]?.Stores?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-group-select [items]=\"dataObject[0]?.Stores\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'storeName'\"\r\n [idField]=\"'storeId'\" (selected)=\"onstoreSelect($event)\"\r\n [selectedValues]=\"selectedValuesArray[0]\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"select ==='clusters'\" class=\"w-100 my-5\"> \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(dataObject[1]?.clusters?.length)\">\r\n Select cluster\r\n </div>\r\n <lib-group-select [items]=\"dataObject[1]?.clusters\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'clusterName'\"\r\n [idField]=\"'clusterName'\" (selected)=\"ongroupSelect($event)\"\r\n [selectedValues]=\"selectedValuesArray[1]\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n <div *ngIf=\"select ==='teams'\" class=\"w-100 my-5\"> \r\n <div class=\"select-wrapper\">\r\n <div class=\"placeholder-overlay\" *ngIf=\"!(dataObject[2]?.teams?.length)\">\r\n Select Stores\r\n </div>\r\n <lib-group-select [items]=\"dataObject[2]?.teams\" [disabled]=\"false\" [multi]=\"true\" [searchField]=\"'teamName'\"\r\n [idField]=\"'teamName'\" (selected)=\"onTeamsSelect($event)\"\r\n [selectedValues]=\"selectedValuesArray[2]\">\r\n </lib-group-select>\r\n </div>\r\n </div>\r\n\r\n <h2 class=\"store-info fw-bold\">\r\n @if(select ==='stores') {\r\n Store \r\n } @else if(select ==='clusters') {\r\n Cluster\r\n }@else if(select ==='teams') {\r\n Teams\r\n }\r\n Information\r\n </h2>\r\n\r\n <section *ngIf=\"select ==='stores'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th>SPOC Name</th>\r\n <th>Store ID</th>\r\n <th>Application ID</th>\r\n <th>Location</th>\r\n </tr>\r\n </thead>\r\n <tbody> \r\n <tr *ngFor=\"let store of stores;let i=index\">\r\n <td>{{store?.spocName}}</td>\r\n <td>{{store?.storeId}}</td>\r\n <td>{{store?.appId}}</td>\r\n <td>{{store?.location}}</td>\r\n </tr> \r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[0].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned to the above stores.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='clusters'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th class=\"ms-5\">Cluster Name</th>\r\n <th>Stores</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let cluster of this.selectedValuesArray[1];let i=index;\">\r\n <td class=\"ms-5\">{{cluster?.clusterName}}</td>\r\n <td>{{cluster?.storeNames}} <span *ngIf=\"cluster?.storeListCount > 2\" class=\"justify-content-center align-items-center blend-mode ms-3\">+{{cluster?.storeListCount - 2}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[1].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned as a member to the above\r\n clusters.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='teams'\" class=\"w-100\">\r\n <div class=\"table-responsive h-200px mb-3 scroll\">\r\n <table class=\"table bottom-border mt-2 mb-4\">\r\n <thead>\r\n <tr>\r\n <th class=\"ms-5\">Team Name</th>\r\n <th>Users</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let team of this.selectedValuesArray[2];let i=index;\">\r\n <td class=\"ms-5\">{{team?.teamName}}</td>\r\n <td>{{team?.userNames}} <span *ngIf=\"team?.userListCount > 2\" class=\"justify-content-center align-items-center blend-mode ms-3\">+{{team?.userListCount - 2}}</span></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if (selectedValuesArray[2].length) {\r\n <div class=\"d-flex align-items-center bg-assign-user w-100 mb-5 mx-2\">\r\n <span><svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\" />\r\n <rect x=\"2\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\" />\r\n <path\r\n d=\"M23.3327 24V22.6667C23.3327 21.9594 23.0517 21.2811 22.5516 20.781C22.0515 20.281 21.3733 20 20.666 20H15.3327C14.6254 20 13.9472 20.281 13.4471 20.781C12.947 21.2811 12.666 21.9594 12.666 22.6667V24M20.666 14.6667C20.666 16.1394 19.4721 17.3333 17.9993 17.3333C16.5266 17.3333 15.3327 16.1394 15.3327 14.6667C15.3327 13.1939 16.5266 12 17.9993 12C19.4721 12 20.666 13.1939 20.666 14.6667Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg></span>\r\n <span class=\"mt-2 form-check-label ms-5\">The user {{user?.userName}} is assigned as a member to the above\r\n teams.</span>\r\n </div>\r\n }\r\n </section>\r\n <section *ngIf=\"select ==='stores'\" class=\"w-100\">\r\n <div class=\"position-relative my-5\">\r\n <hr class=\"hr m-0 border border-gray-400 border-1\">\r\n <div class=\"position-absolute position-or px-10\">or</div>\r\n </div>\r\n <div class=\"d-flex justify-content-start align-items-center\">\r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ol class=\"custom-ordered-list text-gray-400 fw-bold fs-6\">\r\n <li class=\"user-text\">Use the template to upload multiple stores to users at once.</li>\r\n <li class=\"user-text my-2\"><span class=\"user-text\">Download the template here - </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/storeListTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li> \r\n </ol>\r\n </div>\r\n </div>\r\n <div class=\"mt-3 ms-3 right-bar py-5 d-flex justify-content-center align-items-center flex-column\" >\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\" value=\"personal\"\r\n class=\"btn-check\"\r\n (change)=\"onUpload($event)\"\r\n ng-reflect-value=\"persona\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\" class=\" w-50 p-4\"><span\r\n class=\"fw-bold text-center w-100 fs-4\">\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\"\r\n stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4047_40566)\">\r\n <path\r\n d=\"M26.3333 26.3334L23 23M23 23L19.6666 26.3334M23 23V30.5M29.9916 28.325C30.8044 27.8819 31.4465 27.1808 31.8165 26.3322C32.1866 25.4837 32.2635 24.5361 32.0351 23.6389C31.8068 22.7418 31.2862 21.9463 30.5555 21.3779C29.8248 20.8095 28.9257 20.5006 28 20.5H26.95C26.6977 19.5244 26.2276 18.6186 25.5749 17.8509C24.9222 17.0831 24.104 16.4732 23.1817 16.0672C22.2594 15.6612 21.2571 15.4695 20.2501 15.5066C19.243 15.5437 18.2575 15.8086 17.3676 16.2814C16.4777 16.7542 15.7066 17.4226 15.1122 18.2363C14.5177 19.0501 14.1155 19.988 13.9358 20.9795C13.756 21.9711 13.8034 22.9905 14.0743 23.9611C14.3452 24.9317 14.8327 25.8282 15.5 26.5834\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4047_40566\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"nodata-title\"><span class=\"click-upload cursor-pointer\">Click to\r\n upload</span>\r\n <!-- <span class=\"ms-2\">or drag and drop</span> -->\r\n </div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </span>\r\n </label>\r\n </div>\r\n </section>\r\n\r\n <div class=\"d-flex mb-10 w-100 mt-10\" role=\"cluster\">\r\n <button class=\"btn btn-outline w-100 mx-3\" (click)=\"closeModal()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 mx-3\" (click)=\"onSubmit()\">Submit</button>\r\n </div>\r\n\r\n\r\n </div>\r\n</div>\r\n\r\n<ng-template #afterValidation let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"card-title mt-3\"><span class=\"config-heading fw-semibold w-auto\">Bulk Assign</span></div>\r\n </div>\r\n <div class=\"card-body pt-0 popup-scroll\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{getStoreCounts(excelData)}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Total Records</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{excelData?.length}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Rows processed</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error w-100 error-heading' \r\n : 'fw-semibold w-100 config-heading'\">\r\n {{ excelError?.error?.length || 0 }}\r\n </div>\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error mt-1 excel-error' \r\n : 'fw-semibold subtitle mt-1'\">\r\n Error\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!excelError\" class=\"table-header mt-5\" style=\"font-weight: 400;\">\r\n <div >You're about to assign {{getStoreCounts(excelData)}} {{getStoreCounts(excelData) > 1 ? 'Stores' : 'Store'}}. Are you sure want to proceed?</div>\r\n \r\n </div>\r\n <div *ngIf=\"excelError\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Invalid Details !</div>\r\n <div class=\"subtitle mt-5\">Please provide correct information.</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of excelError?.error; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify-content-end flex-wrap gap-2 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"closeactivepopup();model.close()\">Cancel</button>\r\n <button *ngIf=\"!excelError\" class=\"btn btn-md py-3 btn-default ms-3 btn-primary\" (click)=\"proceedSubmit();model.close()\">Proceed</button>\r\n <button *ngIf=\"excelError\" class=\"btn py-3 btn-md btn-default ms-3 btn-danger\" (click)=\"file1.click();\">Reupload</button>\r\n <input style=\"display: none;;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUpload($event)\" />\r\n </div>\r\n </div>\r\n</ng-template>","import { Injectable } from '@angular/core';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExcelService {\r\n\r\n \r\n constructor() { }\r\n\r\n public exportAsExcelFile(json: any[], excelFileName: string): void {\r\n const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n this.saveAsExcelFile(excelBuffer, excelFileName);\r\n }\r\n\r\n public saveAsExcelFile(buffer: any, fileName: string): void {\r\n console.log(buffer, fileName);\r\n \r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + 'list'+ EXCEL_EXTENSION);\r\n }\r\n \r\n private saveAsTemplate(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { AssignStorePopupComponent } from \"../assign-store-popup/assign-store-popup.component\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { AlertPopupComponent } from \"./alert-popup/alert-popup.component\";\r\nimport { AddUsersComponent } from \"../../../components-v2/add-users/add-users.component\";\r\n\r\n@Component({\r\n selector: \"lib-user-table\",\r\n templateUrl: \"./user-table.component.html\",\r\n styleUrl: \"./user-table.component.scss\",\r\n})\r\nexport class UserTableComponent implements OnInit, OnDestroy {\r\n\r\n // @Output() dataTouserlist: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n userData: string;\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private readonly destroy$ = new Subject();\r\n roles: any[] = [];\r\n rolesCount: number;\r\n receivedData: any = '';\r\n SelectedTab: any;\r\n userListStatus: any;\r\n userRole: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n constructor(\r\n public modalService: NgbModal, private pageInfo: PageInfoService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private userService: UserService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n // this.initSearch();\r\n }\r\n\r\n // initSearch() {\r\n // console.log(678);\r\n\r\n // this.searchInput.valueChanges\r\n // .pipe(debounceTime(1000), distinctUntilChanged())\r\n // .subscribe((e) => {\r\n // if(e) {\r\n\r\n // this.userList_req.searchValue = e;\r\n // }\r\n // this.loadTable();\r\n // });\r\n // }\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Tango Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs: any[] = [];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs = [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs = [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n }\r\n ngOnInit() {\r\n\r\n let userInfo: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n this.userRole = userInfo?.role;\r\n console.log('userRole', this.userRole, userInfo)\r\n // this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n // next:(data:any)=>{\r\n // if(data) {\r\n // this.$headerFilters = data;\r\n // this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe((type: any) => {\r\n // this.userData = type;\r\n this.userType = \"tango\";\r\n this.userList_req = {\r\n // clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.loadTable();\r\n this.getRoles();\r\n this.setPageData();\r\n // });\r\n // }\r\n // }\r\n // });\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n } else {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n }\r\n Viewusers(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUsersComponent, { centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n\r\n users(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.searchValue = '';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n };\r\n this.loadTable();\r\n this.getRoles();\r\n }\r\n });\r\n }\r\n\r\n // searchData() {\r\n // this.loadTable();\r\n // }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n } else {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n } else {\r\n this.userList_req = {\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n sortColumName: this.userList_req.sortColumName,\r\n sortBy: this.userList_req.sortBy,\r\n export: false\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n\r\n assignStore(user: any) {\r\n const modalRef = this.modalService.open(AssignStorePopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userList_req = {\r\n // clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: '',\r\n };\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n this.pagination.totalCount = 0;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n exportXLSX() {\r\n if (this.searchValue === '') {\r\n this.userList_req = {\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export: true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Tango Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n } else {\r\n this.userList_req = {\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export: true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Tango Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n\r\n\r\n }\r\n userStatusChange(user: any, i: number) {\r\n const modalRef = this.modalService.open(AlertPopupComponent, { centered: true, size: 'md', backdrop: \"static\" });\r\n modalRef.componentInstance.status = user.isActive\r\n modalRef.componentInstance.userName = user?.userName\r\n modalRef.result.then((result) => {\r\n if (result) {\r\n if (result === 'submit') {\r\n this.userService.updateUser({ email: user?.email, isActive: user.isActive }).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n if (user.isActive) {\r\n this.toastService.getSuccessToast('User Status Activated!');\r\n } else {\r\n this.toastService.getSuccessToast('User Status Deactivated!');\r\n }\r\n } else {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive = !user.isActive;\r\n }\r\n },\r\n error: () => {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive = !user.isActive;\r\n },\r\n complete: () => { }\r\n })\r\n } else if (result === 'close') {\r\n this.userList[i].isActive = !user.isActive;\r\n }\r\n }\r\n })\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n getRoles() {\r\n let data = {\r\n userType: 'tango'\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n });\r\n }\r\n userDetials(role: any) {\r\n let obj = {\r\n role: role,\r\n userType: 'Tango User',\r\n receivedData: \"Role Value\"\r\n }\r\n this.userService.rolesComms.next(obj);\r\n this.receivedData = 'Role Value';\r\n }\r\n receiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n }\r\n onSort(column: string) {\r\n this.userList_req.export = false;\r\n if (this.userList_req?.sortColumName === column) {\r\n this.userList_req.sortBy = this.userList_req.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.userList_req.sortColumName = column;\r\n this.userList_req.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n\r\n applyFilters(event: any) {\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.userList_req.offset = 1;\r\n this.userList_req.limit = 10;\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userList_req.export = false;\r\n this.loadTable()\r\n }\r\n}","<div *ngIf=\"receivedData ===''\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <div class=\"d-flex overflow-auto h-50px\">\r\n <ul\r\n class=\"nav nav-stretch w-100 nav-line-tabs nav-line-tabs-2x border-bottom-2 fs-5 fw-bolder flex-nowrap\">\r\n <li class=\"nav-item activated cursor-pointer bg-light-primary px-5 text-center me-5\"><a\r\n class=\"nav-link me-0 text-active-primary\">Users</a>\r\n </li>\r\n <li *ngIf=\"(gs.userAccess | async)?.userType === 'tango' && userRole === 'superadmin'\"\r\n class=\"nav-item cursor-pointer me-5\"><a routerLink=\"/manage/users/tango/audit\"\r\n class=\"nav-link text-active-primary\">Audit Users\r\n Summary</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"text-sub mb-2 mt-5\">{{pagination?.totalCount}} total users</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default px-4 py-3 rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16774 13.7347 6.0862 13.7036 6.01005C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37332 9.06609 1.32749 8.98994 1.29639C8.91379 1.26529 8.83225 1.24952 8.75 1.25H2.5C2.16848 1.25 1.85054 1.38169 1.61612 1.61611C1.3817 1.85053 1.25 2.16847 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89946 7.86612 7.13388C8.10054 7.3683 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <!-- } -->\r\n }\r\n @if ((gs.userAccess | async)?.Global_User_isAdd) {\r\n <button type=\"button\" (click)=\"users('add')\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'userName' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'email' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th >Roles\r\n <!-- class=\"cursor-pointer\" (click)=\"onSort('role')\" -->\r\n <!-- <svg [ngClass]=\"userList_req?.sortColumName === 'role' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> -->\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assigned')\">Clients Assigned\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'assigned' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'assigned' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'mobileNumber' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td *ngIf=\"user?.role ==='superadmin'\">Super Admin</td>\r\n <td *ngIf=\"user?.role !=='superadmin'\">{{user?.role | titlecase}}</td>\r\n <td>{{user?.assigned || 0}}</td>\r\n <td>{{user?.mobileNumber}}</td>\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span class=\"form-check form-switch mx-6\">\r\n <input class=\"form-check-input mt-3 cursor-pointer\" type=\"checkbox\"\r\n [disabled]=\"!((gs.userAccess | async)?.Global_User_isEdit)\"\r\n (change)=\"userStatusChange(user,i)\" [(ngModel)]=\"userList[i].isActive\"\r\n role=\"switch\" checked=\"\">\r\n @if (userList[i].isActive) {\r\n Active\r\n } @else {\r\n Deactive\r\n }\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n<!-- <div *ngIf=\"receivedData ===''\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles\">\r\n <a *ngIf=\"obj.roleName ==='superadmin'\" class=\"role-title my-2 cursor-pointer\" >Super Admin</a>\r\n <a *ngIf=\"obj.roleName !=='superadmin'\" class=\"role-title my-2 cursor-pointer\" >{{obj.roleName |\r\n titlecase}}</a>\r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> -->\r\n\r\n<!--begin::Row-->\r\n<!-- <div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\"> -->\r\n<!--begin::Col-->\r\n<!-- <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\"> -->\r\n<!-- <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table> -->\r\n<!-- </div> -->\r\n<!--end::Col-->\r\n<!-- </div> -->\r\n<!--end::Row-->","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\n\r\n@Component({\r\n selector: 'lib-chip-select',\r\n templateUrl: './chip-select.component.html',\r\n styleUrl: './chip-select.component.scss'\r\n})\r\nexport class ChipSelectComponent implements OnInit, OnChanges {\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('.dropdown')) {\r\n this.showDropdown = false;\r\n }\r\n }\r\n \r\n @Input() items: any\r\n @Input() searchField:any[]\r\n @Input() multi: boolean\r\n @Input() idField: string\r\n @Input() selectedValues: any = []\r\n @Input() disabled: boolean | undefined\r\n @Input() label: string\r\n @Input() badgeValue: string\r\n @Input() searchKey: any;\r\n \r\n @Output() selected = new EventEmitter<any>()\r\n filteredValues: any = []\r\n showDropdown: boolean\r\n searchValue: string\r\n instanceId: any;\r\n \r\n \r\n constructor(private cd: ChangeDetectorRef, private authService: ManageUsersService) { }\r\n ngOnInit(): void {\r\n this.instanceId = crypto.randomUUID();\r\n this.authService.dropDownTrigger.subscribe((e)=>{ \r\n if(e !== this.instanceId){ \r\n this.showDropdown = false\r\n this.cd.detectChanges()\r\n }\r\n })\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n \r\n if (changes['items'] && this.items?.length) {\r\n this.initializeItems();\r\n }\r\n \r\n if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue)) { \r\n this.updateSelectedValues();\r\n }\r\n }\r\n \r\n initializeItems() {\r\n this.filteredValues = this.items.map((item: any) => ({ ...item }));\r\n this.updateSelectedValues()\r\n }\r\n \r\n updateSelectedValues() { \r\n this.filteredValues?.forEach((filteredItem: any) => {\r\n filteredItem.isSelected = false;\r\n });\r\n \r\n this.selectedValues?.forEach((selectedItem: any) => {\r\n const item = this.filteredValues?.find((filteredItem: any) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);\r\n if (item) {\r\n item.isSelected = true;\r\n }\r\n });\r\n }\r\n \r\n openDropdown(event: any) {\r\n this.authService.dropDownTrigger.next(this.instanceId)\r\n event.stopPropagation();\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n \r\n onInput(event: any) {\r\n if (!event.target.value) {\r\n this.filteredValues = [...this.items];\r\n } else {\r\n const searchTerm = event?.target?.value.toLowerCase();\r\n this.filteredValues = this.items?.filter((item: any) => \r\n this.searchField.some(field => item[field]?.toLowerCase().includes(searchTerm.toLowerCase()))\r\n );\r\n // this.filteredValues = this.items?.filter((item: any) =>\r\n // item[this.searchField]?.toLowerCase().includes(searchTerm)\r\n // );\r\n }\r\n this.updateSelectedValues();\r\n this.cd.detectChanges();\r\n }\r\n \r\n onSelect(event: any, item: any) { \r\n if (this.multi) {\r\n if (event.currentTarget.checked) {\r\n this.selectedValues.push(item ); \r\n } else {\r\n this.selectedValues = this.selectedValues.filter((elem: any) => elem[this.idField] !== item[this.idField]);\r\n }\r\n } else {\r\n this.selectedValues = [{ ...item }];\r\n this.filteredValues.forEach((element:any) => {\r\n if(element[this.idField] !== item[this.idField]){\r\n element.isSelected = false\r\n }\r\n });\r\n this.showDropdown = false;\r\n \r\n }\r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const selectedItem = { ...value };\r\n delete selectedItem.isSelected;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n \r\n }\r\n \r\n onSelectAll(event: any) {\r\n const selectAll = event.currentTarget.checked;\r\n this.filteredValues.forEach((item: any) => item.isSelected = selectAll);\r\n \r\n if (selectAll) {\r\n this.selectedValues = [...this.filteredValues];\r\n } else {\r\n this.selectedValues = [];\r\n }\r\n \r\n const valuesToEmit = this.selectedValues.map((value: any) => {\r\n const { isSelected, ...selectedItem } = value;\r\n return selectedItem;\r\n });\r\n \r\n this.cd.detectChanges();\r\n this.emitSelectedValues(valuesToEmit);\r\n }\r\n \r\n \r\n emitSelectedValues(values: any[]) {\r\n if (this.multi) {\r\n this.selected.emit(values);\r\n } else {\r\n this.selected.emit(values[0]);\r\n }\r\n }\r\n \r\n checkIfAllSelected() {\r\n return this.filteredValues.every((item: any) => item.isSelected);\r\n }\r\n \r\n removeBadge(data:any, index:any) {\r\n // this.removed.emit([data._id])\r\n this.selectedValues = this.selectedValues.reduce((acc: any[], item: any) => {\r\n if (item._id !== data._id) {\r\n acc.push(item);\r\n }\r\n return acc;\r\n }, []);\r\n this.emitSelectedValues(this.selectedValues);\r\n this.updateSelectedValues();\r\n }\r\n\r\n}\r\n","<div class=\"chip-box\">\r\n <div class=\"outer-container d-flex align-items-center position-relative w-100\">\r\n <div class=\"input-container form-control\">\r\n <ng-container *ngFor=\"let item of selectedValues;let i=index\">\r\n <span *ngIf=\"i <= 9\" class=\"chip\">\r\n <span class=\"me-3\">{{item?.[searchKey[0]] || item?.[searchKey[1]]}}</span>\r\n <span (click)=\"removeBadge(item,i)\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M9 3L3 9M3 3L9 9\" stroke=\"#667085\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </span>\r\n </ng-container>\r\n <span *ngIf=\"selectedValues?.length > 9\" class=\"chip\"> +{{selectedValues?.length - 9}}</span>\r\n <input style=\"min-height: 44px;\" type=\"text\" class=\"form-control dropdown-input ps-3 me-3\" [(ngModel)]=\"searchValue\" (click)=\"openDropdown($event)\" (input)=\"onInput($event)\" id=\"searchInput\">\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showDropdown ? '' : 'd-none'\" class=\"input-chip dropdown\" >\r\n <!-- <div class=\"w-100 input-wrapper\">\r\n <input [(ngModel)]=\"searchValue\" placeholder=\"Search\" (input)=\"onInput($event)\" type=\"text\"> \r\n <svg class=\"search-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\">\r\n <path d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\" stroke=\"#667085\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> \r\n </div> -->\r\n <ul>\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" for=\"selectAll\">\r\n <input (change)=\"onSelectAll($event)\" [checked]=\"checkIfAllSelected()\" class=\"form-check-input me-3\" type=\"checkbox\"\r\n id=\"selectAll\">\r\n <span class=\"form-check-label\">\r\n Select All\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngFor=\"let item of filteredValues\" [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\" >\r\n <label [for]=\"item[idField] + instanceId\" [ngClass]=\"multi ? '': 'ps-0'\" class=\"form-check\">\r\n <input [ngClass]=\"multi ? '': 'd-none'\" (change)=\"onSelect($event, item)\" [(ngModel)]=\"item.isSelected\" class=\"form-check-input me-3\" type=\"checkbox\" value=\"\"\r\n [id]=\"item[idField] + instanceId\">\r\n <span class=\"form-check-label\" >\r\n <!-- {{item[searchKey[0]] || item?.[searchKey[1]]}} -->\r\n {{item[searchField[0] || item?.[searchField[1]]]}}\r\n </span> <span class=\"badge-value ms-5\">\r\n {{item[badgeValue]}}\r\n </span>\r\n </label>\r\n </li>\r\n <li *ngIf=\"!filteredValues?.length\" >\r\n <span class=\"d-flex align-items-center justify-content-center\" >No data found</span>\r\n </li>\r\n </ul> \r\n </div> \r\n \r\n</div>","import { Component, ChangeDetectorRef, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, Subscription, takeUntil, debounceTime, distinctUntilChanged, } from \"rxjs\";\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { FormControl } from '@angular/forms';\r\n\r\ndeclare var $: any;\r\n@Component({\r\n selector: 'lib-teams-creation',\r\n templateUrl: './teams-creation.component.html',\r\n styleUrl: './teams-creation.component.scss'\r\n})\r\nexport class TeamsCreationComponent implements OnInit, OnDestroy {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n @ViewChild('afterValidation') afterValidation: any;\r\n @ViewChild('confirmDelete') confirmDelete: any;\r\n private readonly destroy = new Subject();\r\n searchInput = new FormControl(\"\");\r\n excelError: any;\r\n excelData: any = []\r\n @Input() teamData: any;\r\n @Input() type: any;\r\n @Input() teamsUsers: any;\r\n teamleadList: any[] = [];\r\n userList: any[] = [];\r\n selectedTeam: any = [];\r\n selectedUsers: any = [];\r\n $headerFilters: any;\r\n teamName: any;\r\n isEdit: boolean = false\r\n description: any;\r\n fileerror: boolean = false\r\n uploadPopUp: any;\r\n constructor(private ts: ToastService, private router: Router, public activeModal: NgbActiveModal,\r\n private userService: ManageUsersService, public gs: GlobalStateService, private cd: ChangeDetectorRef,public modalService: NgbModal\r\n ) {\r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy.next(true);\r\n this.destroy.complete();\r\n\r\n }\r\n ngOnInit(): void {\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n } else {\r\n this.$headerFilters = data;\r\n }\r\n }\r\n });\r\n this.getuserList();\r\n\r\n }\r\n getTeamData(data: any) {\r\n this.userService.editTeamsdata(data).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.isEdit = true\r\n if (res.data.length > 0) {\r\n this.teamName = res.data[0].teamName\r\n this.description = res.data[0].description\r\n this.selectedTeam = res.data[0].Teamlead\r\n this.selectedUsers = res.data[0].users\r\n\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.teamleadList)\r\n this.userList = this.userList.filter((item2: any) =>\r\n !this.selectedTeam.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.userList)\r\n\r\n }\r\n }\r\n })\r\n }\r\n getuserList() {\r\n\r\n let payload = {\r\n clientId: this.$headerFilters.client\r\n }\r\n this.userService.getallusersList(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamleadList = res.data.filter((e: any) => e.role != 'superadmin');\r\n this.userList = res.data.filter((e: any) => e.role != 'superadmin'); \r\n\r\n if (this.teamData) {\r\n this.getTeamData(this.teamData)\r\n }\r\n \r\n\r\n if (this.teamsUsers && this.teamsUsers.length > 0 && !this.isEdit) {\r\n console.log(this.teamsUsers)\r\n const updatedusers = this.teamsUsers.map((user: any) => {\r\n return {\r\n email: user.email,\r\n userId: user.userId\r\n };\r\n });\r\n this.selectedUsers = updatedusers\r\n this.markCheckedStores();\r\n }\r\n }\r\n })\r\n }\r\n\r\n filteredUsers: any;\r\n markCheckedStores(): void {\r\n const clusterStoreIds = this.teamsUsers?.map((user: any) => user._id);\r\n this.userList = this.userList?.map(user => {\r\n user.checked = clusterStoreIds.includes(user.userId);\r\n return user;\r\n });\r\n this.selectedUsers = this.userList.filter(user => user.checked);\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n \r\n }\r\n TeamUnselectAll(event:any){\r\n this.userList = [...this.userList,...event]\r\n console.log(\"teamlead unselectall\", this.userList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n\r\n TeamUnselect(event:any){\r\n this.userList.push(event)\r\n console.log(\"teamlead unselect\", this.userList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n UserUnselect(event:any){\r\n console.log(\"user unselect\", event)\r\n this.teamleadList.push(event)\r\n this.cd.detectChanges();\r\n\r\n }\r\n UserUnselectAll(event:any){\r\n this.teamleadList = [...this.teamleadList,...event]\r\n console.log(\"user unselectall\", this.teamleadList)\r\n this.cd.detectChanges();\r\n\r\n }\r\n onTeamSelect(event: any) {\r\n console.log(\"teamlead select\", event)\r\n this.selectedTeam = event \r\n if(this.selectedTeam.length>0){\r\n this.userList = this.userList.filter((item2: any) =>\r\n !this.selectedTeam.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n }\r\n this.cd.detectChanges();\r\n }\r\n onUserSelect(event: any) { \r\n this.selectedUsers = event\r\n if(this.selectedUsers.length>0){\r\n this.teamleadList = this.teamleadList.filter((item2: any) =>\r\n !this.selectedUsers.some((item1: any) => item1.userId === item2.userId)\r\n );\r\n console.log(this.teamleadList)\r\n }\r\n \r\n \r\n }\r\n cancel() {\r\n this.teamsUsers = []\r\n this.activeModal.close()\r\n }\r\n\r\n onCreateTeam() {\r\n let admincount = this.selectedUsers.filter((user: any) => user.role == 'admin').length\r\n let leadUsercount = this.selectedTeam.filter((user: any) => user.role == 'user').length\r\n if (admincount > 0 && leadUsercount > 0) {\r\n return this.ts.getErrorToast('User cannot be team lead when admins as a users')\r\n } else {\r\n let payload: any = {\r\n clientId: this.$headerFilters.client,\r\n teamName: this.teamName,\r\n description: this.description,\r\n users: this.selectedUsers,\r\n Teamlead: this.selectedTeam,\r\n }\r\n if (this.isEdit) {\r\n payload.teamId = this.teamData?._id\r\n this.userService.updateTeam(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast(\"Team Updated Successfully\")\r\n this.activeModal.close('submit')\r\n }\r\n },(error: any) => {\r\n console.log(\"error\", error);\r\n\r\n this.ts.getErrorToast(error?.error?.error?.error || error?.error?.error)\r\n })\r\n } else {\r\n this.userService.createTeams(payload).pipe(takeUntil(this.destroy)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast(\"Team Created Successfully\")\r\n this.activeModal.close('submit')\r\n }\r\n }, (error: any) => {\r\n console.log(\"error\", error);\r\n\r\n this.ts.getErrorToast(error?.error?.error?.error || error?.error?.error )\r\n })\r\n }\r\n }\r\n\r\n }\r\n\r\n afterUpload: any = [];\r\n uploadErrors: any = [];\r\n\r\n onUploadTemplate(e: any) {\r\n let data: any[] = [];\r\n let error: any = [];\r\n let sheetName: any = '';\r\n\r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.ts.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n\r\n data = utils.sheet_to_json(ws);\r\n this.excelData = data;\r\n sheetName = wb.SheetNames[0];\r\n };\r\n reader.readAsBinaryString(target.files[0]);\r\n reader.onloadend = async (e) => {\r\n\r\n if (sheetName != \"Users\") {\r\n this.fileerror = true\r\n this.ts.getErrorToast(\"Can you confirm whether the sheet name is Users ?\");\r\n return;\r\n }\r\n\r\n if (!data?.length) {\r\n this.ts.getErrorToast(\"Please upload a valid file.\");\r\n return\r\n }\r\n \r\n const requiredKeys = ['User Name/Email Id'] // Must always be present\r\n \r\n const isValid = data.some((item: any) => {\r\n const keys = Object.keys(item);\r\n const hasRequiredKeys = requiredKeys.every(key => keys.includes(key));\r\n const allKeysAreAllowed = keys.every(key => \r\n requiredKeys.includes(key)\r\n );\r\n return hasRequiredKeys && allKeysAreAllowed;\r\n });\r\n\r\n if (!isValid) {\r\n this.ts.getErrorToast('Please upload a valid file.');\r\n return;\r\n }\r\n\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n data?.forEach((element: any, index: any) => {\r\n if (element?.['User Name/Email Id'] == '' || element?.['User Name/Email Id'] == null) {\r\n error.push(`Invalid User Name/Email Id - C${index + 2}`)\r\n }\r\n \r\n processedArray.push({\r\n value: data[index]['User Name/Email Id'],\r\n })\r\n \r\n })\r\n\r\n if(this.fileerror){\r\n return\r\n }\r\n\r\n if (error.length) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: error\r\n }\r\n this.afterUplload(popupcontent)\r\n return;\r\n } else {\r\n this.userService\r\n .teamBulkUpload({\r\n users: processedArray,\r\n clientId: this.$headerFilters?.client ? this.$headerFilters?.client : this.$headerFilters?.clientId,\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.excelError = []\r\n this.uploadErrors = []\r\n this.afterUpload = res?.data?.result;\r\n this.afterUplload();\r\n } else {\r\n this.ts.getErrorToast(\"The given User not associated with this brand\");\r\n }\r\n },\r\n error: (err: any) => {\r\n if (err.error.code == 400) { // this.modalService.dismissAll();\r\n if (err.error.error.duplicate) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: err.error.error.duplicate\r\n }\r\n this.uploadErrors = err.error.error;\r\n this.afterUplload(popupcontent)\r\n } else {\r\n this.uploadErrors = err.error.error;\r\n this.afterUplload()\r\n }\r\n this.inputFile.nativeElement.value = \"\";\r\n } else {\r\n this.ts.getErrorToast(err.error.error);\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n\r\n },\r\n });\r\n } \r\n };\r\n\r\n }\r\n }\r\n omitSpecialChar(event: KeyboardEvent) {\r\n const key = event.key;\r\n const regex = /^[a-zA-Z0-9 _-]$/;\r\n if (!regex.test(key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n afterUplload(data?: any) {\r\n this.excelError = data;\r\n if (this.uploadPopUp) {\r\n this.uploadPopUp.dismiss();\r\n }\r\n this.uploadPopUp = this.modalService.open(this.afterValidation, { centered: true, backdrop: 'static', size: 'lg', windowClass: 'custom-modal-width' });\r\n }\r\n\r\n getStoreCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(data?.map((item: any) => item['User Name/Email Id']));\r\n return uniqueUserNames.size;\r\n\r\n }\r\nvalidateDetails(data?: any) {this.selectedUsers=[];\r\n if (this.afterUpload) {\r\n // Remove duplicates from the uploaded user list\r\n const uniqueUploadedUsers = this.afterUpload.filter(\r\n (item: any, index: number, self: any[]) =>\r\n index === self.findIndex((t: any) => t.userId === item.userId)\r\n );\r\n\r\n // Merge new uploaded users with existing selectedUsers (avoid clearing it)\r\n const combinedUsers = [...this.selectedUsers, ...uniqueUploadedUsers];\r\n\r\n // Final deduplicated list\r\n const finalUniqueUsers = combinedUsers.filter(\r\n (item: any, index: number, self: any[]) =>\r\n index === self.findIndex((t: any) => t.userId === item.userId)\r\n );\r\n\r\n this.selectedUsers = finalUniqueUsers;\r\n\r\n // Optional: If you have a userList and want to mark checkboxes\r\n if (this.userList) {\r\n this.userList = this.userList.map((user: any) => ({\r\n ...user,\r\n checked: this.selectedUsers.some((u: any) => u.userId === user.userId)\r\n }));\r\n }\r\n }\r\n}\r\n\r\n\r\n // validateDetails(data?: any) {\r\n // if (this.afterUpload) {\r\n // const uniqueUsers = this.afterUpload.filter((item: { userId: string }, index: number, self: { userId: string }[]) =>\r\n // index === self.findIndex((t) => t.userId === item.userId)\r\n // );\r\n // this.selectedUsers = uniqueUsers\r\n // }\r\n // }\r\n\r\n closeactivepopup() {\r\n this.modalService.dismissAll();\r\n }\r\n\r\n removedChip(data: any) {\r\n \r\n }\r\n\r\n preventClose(event: Event) {\r\n event.preventDefault(); // Stops the modal from closing\r\n}\r\n\r\n}\r\n","<div class=\"card pt-0 pb-3 scroll\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\" />\r\n <path\r\n d=\"M20.5 23.6816C18.8425 23.6816 17.5 22.2133 17.5 20.4004C17.5 18.5875 18.8425 17.1191 20.5 17.1191C22.1575 17.1191 23.5 18.5875 23.5 20.4004C23.5 22.2133 22.1575 23.6816 20.5 23.6816ZM35.6483 23.6816C33.9908 23.6816 32.6483 22.2133 32.6483 20.4004C32.6483 18.5875 33.9908 17.1191 35.6483 17.1191C37.3058 17.1191 38.6483 18.5875 38.6483 20.4004C38.6483 22.2133 37.3058 23.6816 35.6483 23.6816ZM31.509 26.3066C31.509 28.4805 29.8965 30.2441 27.909 30.2441C25.9215 30.2441 24.309 28.4805 24.309 26.3066C24.309 24.1328 25.9215 22.3691 27.909 22.3691C29.8965 22.3691 31.509 24.1328 31.509 26.3066Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M20.0013 25.7559C17.7925 25.7559 16 27.7164 16 30.1322C16 30.6121 16.36 31.0059 16.7988 31.0059H24.8013H24.8275C23.8338 30.042 23.2038 28.6352 23.2038 27.0684C23.2038 26.7566 23.2263 26.449 23.275 26.1537C22.765 25.8994 22.1988 25.7559 21.6025 25.7559H20.0013Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M31.1725 31.0059H31.1987H39.2012C39.64 31.0059 40 30.6162 40 30.1322C40 27.7164 38.2075 25.7559 35.9987 25.7559H34.3975C33.8012 25.7559 33.235 25.8953 32.725 26.1537C32.77 26.4531 32.7963 26.7566 32.7963 27.0684C32.7963 28.6352 32.17 30.042 31.1725 31.0059Z\"\r\n fill=\"#00A3FF\" />\r\n <path\r\n d=\"M25.7988 32.3183C23.0388 32.3183 20.8 34.767 20.8 37.7857C20.8 38.3928 21.25 38.8809 21.8013 38.8809H34.1987C34.7537 38.8809 35.2 38.3887 35.2 37.7857C35.2 34.767 32.9613 32.3183 30.2013 32.3183H25.7988Z\"\r\n fill=\"#00A3FF\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-12\" *ngIf=\"type === 'create'\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Create Team</a>\r\n <div class=\"sub-title\">Group multiple users to create a team for easier management</div>\r\n </div>\r\n <div class=\"col-md-12\" *ngIf=\"type === 'edit'\">\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Edit Team</a>\r\n <div class=\"sub-title\">Group multiple users to edit a team for easier management</div>\r\n </div>\r\n\r\n\r\n <div class=\"w-100 h-500px scroll\">\r\n <div class=\"mt-5\">\r\n <form (keydown.enter)=\"preventClose($event)\">\r\n <div class=\"row px-0 me-3\">\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-7\">\r\n <label for=\"teamName\" class=\"form-label\">Team Name<span class=\"mandtryclr ms-1\">*</span></label>\r\n <input type=\"text\" [(ngModel)]=\"teamName\" [ngModelOptions]=\"{standalone: true}\"\r\n class=\"form-control\" id=\"teamName\" autocomplete=\"off\" (keypress)=\"omitSpecialChar($event)\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"teamlead\" class=\"form-label\">Team Lead Email<span class=\"mandtryclr ms-1\">*</span></label>\r\n <lib-chip-select [items]=\"teamleadList\" [multi]=\"true\" [searchField]=\"['userName']\" [searchKey]=\"['email']\"\r\n [idField]=\"'userId'\" (selected)=\"onTeamSelect($event)\" (removed)=\"removedChip($event)\"\r\n [selectedValues]=\"selectedTeam\"></lib-chip-select>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5\">\r\n <label for=\"userlead\" class=\"form-label\">Select Users<span class=\"mandtryclr ms-1\">*</span>\r\n </label>\r\n <team-select [items]=\"userList\" [multi]=\"true\" [searchField]=\"'userName'\"\r\n [idField]=\"'userId'\" (selected)=\"onUserSelect($event)\" (deselected)=\"UserUnselect($event)\" (deselectedAll)=\"UserUnselectAll($event)\"\r\n [selectedValues]=\"selectedUsers\"></team-select>\r\n </div>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"line-bg \"><svg width=\"280\" height=\"2\" viewBox=\"0 0 280 2\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"280\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span><span class=\"mx-15 or-color\">Or </span> <span class=\"line-bg \"><svg width=\"280\"\r\n height=\"2\" viewBox=\"0 0 280 2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"280\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span>\r\n </p>\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ol class=\"custom-ordered-list text-gray-400 fw-bold fs-6\">\r\n <li class=\"user-text\">Use the template to upload multiple users at once.</li>\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here -\r\n </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/teamsUploadTemplate.xlsx\"\r\n download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li>\r\n </ol>\r\n </div>\r\n </div>\r\n <div\r\n class=\"mt-3 ms-3 right-bar py-10 d-flex justify-content-center align-items-center flex-column\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_account_team_size_select_upload\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" (change)=\"onUploadTemplate($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_account_team_size_select_upload\" class=\" w-50 p-4\"><span\r\n class=\"fw-bold text-center w-100 fs-4\">\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\"\r\n stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4047_40566)\">\r\n <path\r\n d=\"M26.3333 26.3334L23 23M23 23L19.6666 26.3334M23 23V30.5M29.9916 28.325C30.8044 27.8819 31.4465 27.1808 31.8165 26.3322C32.1866 25.4837 32.2635 24.5361 32.0351 23.6389C31.8068 22.7418 31.2862 21.9463 30.5555 21.3779C29.8248 20.8095 28.9257 20.5006 28 20.5H26.95C26.6977 19.5244 26.2276 18.6186 25.5749 17.8509C24.9222 17.0831 24.104 16.4732 23.1817 16.0672C22.2594 15.6612 21.2571 15.4695 20.2501 15.5066C19.243 15.5437 18.2575 15.8086 17.3676 16.2814C16.4777 16.7542 15.7066 17.4226 15.1122 18.2363C14.5177 19.0501 14.1155 19.988 13.9358 20.9795C13.756 21.9711 13.8034 22.9905 14.0743 23.9611C14.3452 24.9317 14.8327 25.8282 15.5 26.5834\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4047_40566\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"nodata-title\"><span class=\"click-upload cursor-pointer\">Click to\r\n upload</span>\r\n <!-- <span class=\"ms-2\">or drag and drop</span> -->\r\n </div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </span>\r\n </label>\r\n </div>\r\n <div class=\"col-md-12 col-lg-12 col-xl-12 col-xxl-12 mb-5 mt-5\">\r\n <label for=\"userlead\" class=\"form-label\">Description (optional)</label>\r\n <textarea id=\"description\" [(ngModel)]=\"description\"\r\n [ngModelOptions]=\"{standalone: true}\" name=\"description\" class=\"form-control\"\r\n rows=\"5\" cols=\"50\" placeholder=\"Enter a description...\"></textarea>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"d-flex my-10\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" *ngIf=\"!isEdit\"\r\n (click)=\"onCreateTeam()\" [disabled]=\"!selectedUsers.length||!selectedTeam.length|| !teamName\">Create\r\n Team</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" *ngIf=\"isEdit\"\r\n (click)=\"onCreateTeam()\" [disabled]=\"!selectedUsers.length ||!selectedTeam.length||!teamName\">Update\r\n Team</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #afterValidation let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"card-title mt-3\"><span class=\"config-heading fw-semibold w-auto\">Add Users</span></div>\r\n </div>\r\n <div class=\"card-body popup-scroll pt-0\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{getStoreCounts(excelData)}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Total Records</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{excelData?.length}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Rows processed</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error w-100 error-heading' \r\n : 'fw-semibold w-100 config-heading'\">\r\n {{ uploadErrors?.doesNotExists?.length +uploadErrors?.duplicate?.length +uploadErrors?.inActive?.length || 0 }}\r\n </div>\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error mt-1 excel-error' \r\n : 'fw-semibold subtitle mt-1'\">\r\n Error\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!excelError\" class=\"table-header mt-5\" style=\"font-weight: 400;\">\r\n <div >You're about to add {{getStoreCounts(excelData)}} {{getStoreCounts(excelData) > 1 ? 'Users' : 'User'}}. Are you sure want to proceed?</div>\r\n \r\n </div>\r\n <div *ngIf=\"excelError?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Invalid Details !</div>\r\n <div class=\"subtitle mt-5\">Please provide correct information.</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of excelError?.error; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.doesNotExists?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">User doesn't exists !</div>\r\n <!-- <div class=\"subtitle mt-5\">Please provide correct information.</div> -->\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.doesNotExists; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.duplicate?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Duplicate records found !</div>\r\n <!-- <div class=\"subtitle mt-5\">Please provide correct information.</div> -->\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.duplicate; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.inActive?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">User is inactive !</div>\r\n <!-- <div class=\"subtitle mt-5\">Please provide correct information.</div> -->\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.inActive; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify-content-end flex-wrap gap-2 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"closeactivepopup()\">Cancel</button>\r\n <button *ngIf=\"!excelError\" class=\"btn btn-md py-3 btn-default ms-3 btn-primary\" (click)=\"validateDetails();model.close()\">Proceed</button>\r\n <button *ngIf=\"excelError\" class=\"btn py-3 btn-md btn-default ms-3 btn-danger\" (click)=\"file1.click()\">Reupload</button>\r\n <input style=\"display: none;\" #file1 type=\"file\" id=\"kt_account_team_size_select_upload\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUploadTemplate($event)\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from \"@angular/core\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { GlobalStateService } from \"tango-app-ui-global\"\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\n\r\n@Component({\r\n selector: \"lib-roles-permission-table\",\r\n templateUrl: \"./roles-permission-table.component.html\",\r\n styleUrl: \"./roles-permission-table.component.scss\",\r\n})\r\nexport class RolesPermissionTableComponent implements OnInit,OnDestroy {\r\n @Output() dataEvent = new EventEmitter<string>();\r\n\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean;\r\n noData: boolean;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n userCount: number;\r\n roleName: string;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n public gs: GlobalStateService,\r\n private userService: UserService,\r\n private excelService: ExcelService,\r\n private modalService:NgbModal\r\n ) {\r\n this.gs.environment.subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n this.userService.rolesComms.subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n console.log(data)\r\n this.userType = data.userType\r\n this.roleName = data.role.roleName;\r\n }\r\n }\r\n })\r\n }\r\n \r\n ngOnInit() {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next:(data:any)=>{\r\n if(data) {\r\n this.$headerFilters = data;\r\n }\r\n }\r\n });\r\n this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe({\r\n next:(type:any)=>{\r\n this.userType = (this.userType=='Tango User') ? 'tango' : 'client';\r\n if(this.$headerFilters && this.$headerFilters?.client) {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n role: this.roleName\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n }\r\n\r\n backToUser() {\r\n const dataToUser = \"\";\r\n this.userService.dataSubject.next((this.userType =='tango') ? 'Tango User' : 'Brand User');\r\n this.dataEvent.emit(dataToUser);\r\n }\r\n\r\n searchData() {\r\n if (this.searchValue) {\r\n this.userList_req.searchValue = this.searchValue;\r\n } else {\r\n delete this.userList_req[\"searchValue\"];\r\n }\r\n this.loadTable();\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = pageSize;\r\n this.pagination.limit = pageSize;\r\n this.loadTable();\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n \r\n loadTable() {\r\n this.loading = true;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.loading=false;\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n this.userCount = res.data.count;\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n ...(this.searchValue != \"\"\r\n ? { searchValue: this.searchValue }\r\n : {}),\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n this.changeDetector.detectChanges();\r\n } else {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n }\r\n },\r\n error: (err:any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n });\r\n }\r\n\r\n exportXLSX() {\r\n if (this.pagination.totalCount > 10000) {\r\n Swal.fire({\r\n title: \"Export Failed!\",\r\n heightAuto: false,\r\n icon: \"error\",\r\n html: `Looks Like the Data Is Huge, You Can Select a Smaller Date Range, or Please Reach Out to Tango <a href=\"${this.supportEmail}\">${this.supportEmail}</a> for Further Assistance.`,\r\n showCloseButton: true,\r\n });\r\n return;\r\n }\r\n let excelData: any = [];\r\n var req: any = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userList_req.userType,\r\n role:this.userList_req.role\r\n };\r\n this.userService.getUserList(req).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.data && res.data.result && res.data.result.length) {\r\n res.data.result.forEach((element: any) => {\r\n excelData.push({\r\n UserName: element.userName,\r\n Email: element.email,\r\n StoreAssigned: element?.Assigned,\r\n });\r\n });\r\n this.excelService.exportAsExcelFile(excelData, \"User\");\r\n }\r\n },\r\n error: () => {},\r\n complete: () => {},\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n users(type: any,user?: any) {\r\n // const data = \"add stores\";\r\n // this.dataTouserlist.emit(data);\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n });\r\n }\r\n}\r\n","<div class=\"card mb-3\">\r\n <div class=\"card-header border-0 pt-3 ps-3\">\r\n <div class=\"d-flex align-items-center card-title flex-grow-1\">\r\n <!--begin::Avatar-->\r\n <div class=\"symbol symbol-45px me-3\">\r\n <button type=\"button\" (click)=\"backToUser()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path d=\"M16.3333 9.99996H4.66663M4.66663 9.99996L10.5 15.8333M4.66663 9.99996L10.5 4.16663\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> </button>\r\n </div>\r\n <!--end::Avatar-->\r\n\r\n <!--begin::Info-->\r\n <div class=\"d-flex flex-column\">\r\n <span *ngIf=\"roleName !=='superadmin'\" class=\"card-label\">{{roleName | titlecase}}</span>\r\n <span *ngIf=\"roleName ==='superadmin'\" class=\"card-label\">Super Admin</span>\r\n <span class=\"text-sub mb-2\">{{userCount || 0}} users in this role</span>\r\n </div>\r\n <!--end::Info-->\r\n </div>\r\n @if (!loading && !noData) {\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n @if ((gs.userAccess |async)?.Global_User_isEdit) {\r\n <button type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n @if (!loading && !noData) {\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border\">\r\n <thead>\r\n <tr>\r\n <th>Users</th>\r\n <th>Email</th>\r\n <th>Stores Assigned</th>\r\n <th class=\"text-end\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName}}</td>\r\n <td>{{user?.email}}</td>\r\n <td>{{user?.assigned || 0}}</td>\r\n\r\n <td class=\"text-end\">\r\n <span (click)=\"users('view',user)\" class=\"mx-6 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <!-- <span class=\"cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M3 4.99996H4.66667M4.66667 4.99996H18M4.66667 4.99996V16.6666C4.66667 17.1087 4.84226 17.5326 5.15482 17.8451C5.46738 18.1577 5.89131 18.3333 6.33333 18.3333H14.6667C15.1087 18.3333 15.5326 18.1577 15.8452 17.8451C16.1577 17.5326 16.3333 17.1087 16.3333 16.6666V4.99996H4.66667ZM7.16667 4.99996V3.33329C7.16667 2.89127 7.34226 2.46734 7.65482 2.15478C7.96738 1.84222 8.39131 1.66663 8.83333 1.66663H12.1667C12.6087 1.66663 13.0326 1.84222 13.3452 2.15478C13.6577 2.46734 13.8333 2.89127 13.8333 3.33329V4.99996M8.83333 9.16663V14.1666M12.1667 9.16663V14.1666\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span> -->\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n } @else if (loading) {\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else if (noData) {\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit ,EventEmitter, Output, ViewChild, ElementRef} from '@angular/core';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUserPopupComponent } from \"../add-user-popup/add-user-popup.component\";\r\nimport { UserService } from \"../../../services/user.service\";\r\nimport { AssignStorePopupComponent } from \"../assign-store-popup/assign-store-popup.component\";\r\nimport Swal from \"sweetalert2\";\r\nimport { ExcelService } from \"../../../services/excel.service\";\r\nimport { ToastService } from \"tango-app-ui-shared\";\r\nimport { GlobalStateService, PageInfoService } from \"tango-app-ui-global\";\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged, Observable } from \"rxjs\";\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { FormControl } from \"@angular/forms\";\r\n// import { AlertPopupComponent } from '../user-table/alert-bulpopup/alert-popup.component';\r\nimport { AlertPopupComponent } from '../user-table/alert-popup/alert-popup.component';\r\nimport { AddUsersComponent } from '../../../components-v2/add-users/add-users.component';\r\nimport { TeamsCreationComponent } from '../../../components-v2/teams-creation/teams-creation.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n// import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport * as CryptoJS from 'crypto-js';\r\n\r\nconst SECRET_KEY = CryptoJS.enc.Utf8.parse(\r\n CryptoJS.SHA256(\"t@ng0-ret@il-@pi-v3\")\r\n .toString(CryptoJS.enc.Base64)\r\n .substring(0, 32)\r\n);\r\n@Component({\r\n selector: 'lib-brand-user',\r\n templateUrl: './brand-user.component.html',\r\n styleUrl: './brand-user.component.scss'\r\n})\r\nexport class BrandUserComponent implements OnInit,OnDestroy {\r\n @Output() dataToParent = new EventEmitter<string>();\r\n // @Output() dataTouserlist: EventEmitter<string> = new EventEmitter<string>();\r\n @ViewChild('bulkUpload') bulkUpload: any;\r\n @ViewChild(\"inputFile1\") inputFile1: ElementRef;\r\n @ViewChild('afterValidation') afterValidation: any;\r\n receivedData:any='';\r\n userData: string;\r\n searchValue: any;\r\n userList: any[] = [];\r\n userList_req: any;\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n searchInput = new FormControl(\"\");\r\n private readonly destroy$ = new Subject();\r\n roles: any;\r\n fileError: boolean = false;\r\n stores: any =[];\r\n rolesCount: any;\r\n SelectedTab: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n userInfo: any;\r\n constructor(\r\n public modalService: NgbModal,private pageInfo: PageInfoService,\r\n private changeDetector: ChangeDetectorRef,\r\n private excelService: ExcelService,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n // public activeModal: NgbActiveModal,\r\n private userService: UserService,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n }); \r\n }\r\n\r\n // must match backend\r\n \r\ndecrypt(encryptedText: string): string {\r\n const [ivHex, encrypted] = encryptedText.split(':');\r\n\r\n const iv = CryptoJS.enc.Hex.parse(ivHex);\r\n const ciphertext = CryptoJS.enc.Hex.parse(encrypted);\r\n\r\n const cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext });\r\n\r\n const decrypted = CryptoJS.AES.decrypt(cipherParams, SECRET_KEY, {\r\n iv: iv,\r\n mode: CryptoJS.mode.CBC,\r\n padding: CryptoJS.pad.Pkcs7\r\n });\r\n\r\n return decrypted.toString(CryptoJS.enc.Utf8);\r\n}\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs : any[]=[];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n}\r\n ngOnInit() {\r\n this.userInfo = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n \r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next:(data:any)=>{\r\n if(data === null ) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n this.userData = \"client\";\r\n this.userType = \"client\";\r\n if(userData?.clientId){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n this.setPageData();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.userData = \"client\";\r\n this.userType = \"client\";\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n this.setPageData();\r\n } \r\n }\r\n });\r\n\r\n \r\n }\r\n getMaskedValue(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || !value.includes('@')) return '';\r\n\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(5, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n getMaskedMobile(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || value.length <= 4) return '*'.repeat(value.length);\r\n \r\n const first2 = value.slice(0, 2);\r\n const last2 = value.slice(-2);\r\n const maskedMiddle = '*'.repeat(value.length - 4);\r\n \r\n return `${first2}${maskedMiddle}${last2}`;\r\n }\r\n \r\n searchData() {\r\n this.pagination.offset =1;\r\n this.pagination.limit =10;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable();\r\n }\r\n }\r\n users(type: any,user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n if(result ==='submit'){\r\n this.searchValue ='';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userService.dataSubject.next(this.userData);\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.loadTable();\r\n // this.getRoles();\r\n }\r\n });\r\n }\r\n Viewusers(type: any, user?: any) {\r\n let modalOptions: any = {\r\n centered: true,\r\n size: 'lg'\r\n };\r\n if (user.role === 'admin' && user.isActive == true && this.gs?.userAccess?.value?.Global_User_isEdit ) {\r\n modalOptions.backdrop = 'static';\r\n }\r\n \r\n const modalRef = this.modalService.open(AddUsersComponent, modalOptions);\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n // searchData() {\r\n // this.loadTable();\r\n // }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.userList_req.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType, \r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.createTeam = false;\r\n this.selectedUsers = [];\r\n this.selectAllChecked =false;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(pageSize: number) {\r\n this.userList_req.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType, \r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.userList_req.limit,\r\n offset: this.userList_req.offset,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:false,\r\n sortColumName :this.userList_req.sortColumName,\r\n sortBy : this.userList_req.sortBy\r\n };\r\n }\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.createTeam = false;\r\n this.selectedUsers = [];\r\n this.selectAllChecked =false;\r\n this.loadTable();\r\n }\r\n\r\n assignStore(user: any) {\r\n const modalRef = this.modalService.open(AssignStorePopupComponent, {\r\n centered: true,\r\n backdrop:'static',\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if(result ==='submit'){\r\n this.searchValue ='';\r\n this.userList_req.limit = 10;\r\n this.pagination.limit = 10;\r\n this.userList_req.offset = 1;\r\n this.pagination.offset = 1;\r\n this.userService.dataSubject.next(this.userData);\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n userType: this.userType,\r\n export:false\r\n };\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n loadTable() {\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount =0;\r\n this.userService.getUserList(this.userList_req).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.userList = res.data.result;\r\n \r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.userService.changeMessage(this.pagination.limit);\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n } else { \r\n\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.userList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.dataToParent.emit(this.pagination.totalCount);\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n exportXLSX() {\r\n if(this.searchValue ===''){\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n export:true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n } else {\r\n this.userList_req = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n userType: this.userType,\r\n searchValue: this.searchValue,\r\n export:true\r\n };\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.userService\r\n .getUserListExport(this.userList_req)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Users')\r\n\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n \r\n \r\n\r\n }\r\n \r\n bulkAssignasxlsx() {\r\n this.modalService.open(this.bulkUpload,{centered: true})\r\n }\r\n\r\n addSingleUser() {\r\n \r\n }\r\n \r\n excelError: any;\r\n excelData: any = []\r\n validatedOutput: any = [];\r\n\r\n getStoreCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(data?.map((item: any) => item['Store Name/Store Id']));\r\n return uniqueUserNames.size;\r\n\r\n }\r\n\r\n getEmailCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(data?.map((item: any) => item['Email']));\r\n return uniqueUserNames.size;\r\n\r\n }\r\n\r\n onUpload1(e: any) {\r\n let data: any[];\r\n let error: any = [];\r\n let storeName: any = '';\r\n\r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.toastService.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile1.nativeElement.value = \"\";\r\n return;\r\n }\r\n\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile1.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n data = utils.sheet_to_json(ws);\r\n this.excelData = data;\r\n storeName = wb.SheetNames[0];\r\n };\r\n reader.readAsBinaryString(target.files[0]);\r\n reader.onloadend = async (e) => {\r\n\r\n if (storeName !== \"Users\") {\r\n this.toastService.getErrorToast(\"Can you confirm whether the sheet name is Users ?\");\r\n return;\r\n }\r\n\r\n if (!data?.length) {\r\n this.toastService.getErrorToast(\"Please upload a valid file.\");\r\n return\r\n }\r\n const requiredKeys = ['Store Name/Store Id','Email'] // Must always be present\r\n // const optionalKeys = ['userPhone', 'city'] : ['city'];\r\n \r\n const isValid = data.some((item: any) => {\r\n const keys = Object.keys(item);\r\n const hasRequiredKeys = requiredKeys.every(key => keys.includes(key));\r\n const allKeysAreAllowed = keys.every(key => \r\n requiredKeys.includes(key)\r\n // || optionalKeys.includes(key)\r\n );\r\n return hasRequiredKeys && allKeysAreAllowed;\r\n });\r\n\r\n if (!isValid) {\r\n this.toastService.getErrorToast('Please upload a valid file.');\r\n return;\r\n }\r\n\r\n data?.forEach((element: any, index: any) => {\r\n if (element?.Email) {\r\n element.Email = element?.Email.replace(/\\s/g, '');\r\n }\r\n if ( !element?.['Store Name/Store Id'] || element?.['Store Name/Store Id'] == '' || element?.['Store Name/Store Id'] == null) {\r\n error.push(`Invalid Store Name/Store Id - B${index + 2}`)\r\n }\r\n if (!element?.Email || element?.Email?.trim() == '' || element.Email == null) {\r\n error.push(`Invalid Email - A${index + 2}`)\r\n }\r\n if (element?.Email && !element.Email.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)) {\r\n error.push(`Invalid Email - A${index + 2}`)\r\n }\r\n })\r\n\r\n if (error.length) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: error\r\n }\r\n this.afterUplload(popupcontent)\r\n return;\r\n }\r\n \r\n const apiData = this.excelData.map((el: any) =>{\r\n return {store : el?.['Store Name/Store Id'],\r\n email : el?.Email}\r\n })\r\n\r\n this.userService\r\n .bulkUserAssign({\r\n data: apiData\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n if (res.status==='error'&&res.error.error.length) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: res.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile1.nativeElement.value = \"\";\r\n return;\r\n }else{\r\n this.afterUplload();\r\n this.validatedOutput = res?.data?.result;\r\n this.inputFile1.nativeElement.value = \"\";\r\n }\r\n }\r\n },\r\n error:(err:any)=> {\r\n if (err.error.code === 400) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error:err.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile1.nativeElement.value = \"\";\r\n } else {\r\n this.toastService.getErrorToast(err.error.error);\r\n this.inputFile1.nativeElement.value = \"\";\r\n }\r\n },\r\n });\r\n };\r\n // $(\"#kt_create_account_form_account_type_personal\")?.val(\"\");\r\n }\r\n }\r\n\r\n Reupload() {\r\n\r\n }\r\n\r\n proceedSubmit() {\r\n let payload = {data:this.validatedOutput} \r\n this.userService\r\n .assignData(payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.toastService.getSuccessToast(`Stores Assigned to User Successfully!`);\r\n } else {\r\n this.toastService.getErrorToast(`Unable to Assign Stores to User!`)\r\n }\r\n this.modalService.dismissAll('submit');\r\n },\r\n error: () => {\r\n this.toastService.getErrorToast(\"Unable to Assign Stores to User!\");\r\n this.modalService.dismissAll();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n\r\n closeactivepopup() {\r\n this.modalService.dismissAll();\r\n }\r\n\r\n afterUplload(data?: any) {\r\n this.excelError = data;\r\n this.modalService.open(this.afterValidation, { centered: true, backdrop: 'static', size: 'lg', windowClass: 'custom-modal-width' })\r\n }\r\n\r\n userStatusChange(user: any, i: number) {\r\n const modalRef = this.modalService.open(AlertPopupComponent,{ centered: true, size: 'md',backdrop:\"static\" }); \r\n modalRef.componentInstance.user = user;\r\n modalRef.result.then((result) => {\r\n if (result) {\r\n if (result ==='submit') {\r\n this.userService.updateUser({ email: user?.email, isActive: user.isActive}).subscribe({\r\n next:(res:any)=> {\r\n if(res && res.code==200) {\r\n if(user.isActive) {\r\n this.toastService.getSuccessToast('User Status Activated!');\r\n } else {\r\n this.toastService.getSuccessToast('User Status Deactivated!');\r\n }\r\n } else {\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive=!user.isActive;\r\n }\r\n },\r\n error:()=>{\r\n this.toastService.getErrorToast('Unable to Change User Status!');\r\n this.userList[i].isActive=!user.isActive;\r\n },\r\n complete:()=>{}\r\n })\r\n } else if(result ==='close') {\r\n this.userList[i].isActive=!user.isActive;\r\n }\r\n}\r\n})\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n getRoles() {\r\n var data = { \r\n userType: 'client',\r\n clientId: this.$headerFilters?.client\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n}\r\nuserDetials(role: any) {\r\n let obj ={\r\n role:role,\r\n userType :'Brand User',\r\n receivedData:\"Role Value\"\r\n }\r\n this.userService.rolesComms.next(obj);\r\n this.receivedData ='Role Value';\r\n}\r\nreceiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n}\r\n\r\nonSort(column: string) {\r\n this.userList_req.export = false;\r\n if (this.userList_req?.sortColumName === column) {\r\n this.userList_req.sortBy = this.userList_req.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.userList_req.sortColumName = column;\r\n this.userList_req.sortBy = 1;\r\n }\r\n this.loadTable()\r\n}\r\n\r\napplyFilters(event:any){\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.userList_req.offset = 1;\r\n this.userList_req.limit=10;\r\n this.userList_req.export = false;\r\n this.userList_req.filterByRoles = this.filterByRoles;\r\n this.userList_req.filterByStatus = this.filterByStatus;\r\n this.loadTable()\r\n}\r\nselectAllChecked: boolean = false;\r\nselectedUsers: any[] = []; \r\ncreateTeam: boolean = false;\r\nonSelectAll() {\r\n this.selectAllChecked = !this.selectAllChecked; \r\n\r\n this.userList.forEach(user => {\r\n user.checked = this.selectAllChecked; \r\n });\r\n if (this.selectAllChecked) {\r\n this.selectedUsers = [...this.userList];\r\n this.createTeam = true;\r\n } else {\r\n this.selectedUsers = [];\r\n this.createTeam = false;\r\n }\r\n}\r\n\r\n\r\nonSelectedTeams(user: any,index:any) {\r\n user.checked = !user.checked;\r\n if (user.checked) {\r\n this.selectedUsers.push(user);\r\n } else if(user.checked ===false) {\r\n const storeIndex = this.selectedUsers.findIndex(selectedUser => selectedUser._id === user._id);\r\n if (storeIndex !== -1) {\r\n this.selectedUsers.splice(storeIndex, 1);\r\n }\r\n }\r\n this.selectAllChecked = this.userList.every(store => store.checked);\r\n this.createTeam = this.selectedUsers.length > 0;\r\n }\r\n\r\n createTeams(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg',backdrop:'static' }); \r\n modalRef.componentInstance.teamsUsers = this.selectedUsers;\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n this.selectAllChecked =false;\r\n this.createTeam = false;\r\n this.selectedUsers = []\r\n })\r\n }\r\n}","<div *ngIf=\"receivedData !=='Role Value'\">\r\n <div class=\"\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n </h3>\r\n <div class=\"card-toolbar rightcorner \">\r\n <div *ngIf=\"!createTeam\" class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n\r\n <button *ngIf=\"!loading && !noData\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n \r\n \r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" type=\"button\" (click)=\"bulkAssignasxlsx()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><span class=\"ms-2\">Bulk Assign</span> </button>\r\n\r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\" type=\"button\" (click)=\"users('add')\"\r\n class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"createTeam\" class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\" (click)=\"createTeams()\"\r\n class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\" class=\"cursor-pointer\"><span\r\n class=\"inputcheck\"><input type=\"checkbox\" (click)=\"onSelectAll()\"\r\n [(ngModel)]=\"selectAllChecked\" class=\"cursor-pointer\"></span>\r\n\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'userName' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'email' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"userList_req?.sortColumName === 'mobileNumber' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th >Roles\r\n <!-- class=\"cursor-pointer\" (click)=\"onSort('role')\" -->\r\n <!-- <svg [ngClass]=\"userList_req?.sortColumName === 'role' && userList_req?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"userList_req?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> -->\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Assigned To </th>\r\n <th style=\"line-height: 21px !important;\">As a Lead To </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd\"><span class=\"inputcheck\"><input\r\n type=\"checkbox\" class=\"cursor-pointer mt-2\" [(ngModel)]=\"user.checked\"\r\n (click)=\"onSelectedTeams(user,i)\"></span></td>\r\n <td>{{user?.userName}}</td>\r\n <td>{{ getMaskedValue(user?.email, userInfo?.role) }}</td>\r\n <td>{{ getMaskedMobile(user?.mobileNumber, userInfo?.role) }}</td>\r\n <td *ngIf=\"user?.role ==='superadmin'\">Super Admin</td>\r\n <td *ngIf=\"user?.role !=='superadmin'\">{{user?.role | titlecase}}</td>\r\n <td><span class=\"badge badge-light-primary me-1\">{{user?.assignedStores||0}} Stores</span> <span class=\"badge badge-light-info\">{{user?.teamCount||0}} Teams</span></td>\r\n <td><span class=\"badge badge-light-purple me-1\">{{user?.clusterCount||0}} Clusters</span> <span class=\"badge badge-light-info\">{{user?.teamlead||0}} Teams</span></td>\r\n\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"mx-3 cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n @if ((gs.userAccess | async)?.Global_User_isEdit) {\r\n <span class=\"mx-3 cursor-pointer\" *ngIf=\"userInfo.role!=='user'\">\r\n <button type=\"button\" (click)=\"assignStore(user)\"\r\n [disabled]=\"!user?.isActive || user?.role ==='superadmin'\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\">\r\n <span class=\"mx-2\">Assign</span>\r\n </button>\r\n </span>\r\n }\r\n <span class=\"form-check form-switch\" *ngIf=\"userInfo.role!=='user'\">\r\n <input class=\"form-check-input mt-3\" type=\"checkbox\" role=\"switch\" id=\"support\"\r\n [disabled]=\"!((gs.userAccess | async)?.Global_User_isEdit)\"\r\n (change)=\"userStatusChange(user,i)\" [(ngModel)]=\"userList[i].isActive\">\r\n @if (userList[i].isActive) {\r\n Active\r\n } @else {\r\n Deactive\r\n }\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<ng-template #bulkUpload let-modal>\r\n <div class=\"card-body flex-column p-9\">\r\n <div class=\"header-title\">Bulk Assign</div>\r\n <div class=\"d-flex justify-content-start align-items-center\">\r\n <div class=\"fw-bold text-gray-500 mt-6\">\r\n <ol class=\"custom-ordered-list text-gray-400 fw-bold px-5 fs-6\">\r\n <li class=\"user-text\">Use the template below to assign multiple users to multiple stores at once.</li>\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here - </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/BulkAssignTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li> \r\n </ol>\r\n </div>\r\n </div>\r\n <div class=\" w-100 right-bar d-flex justify-content-center align-items-center flex-column\" >\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal1\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\" value=\"personal1\"\r\n class=\"btn-check\"\r\n (change)=\"onUpload1($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile1 />\r\n <label for=\"kt_create_account_form_account_type_personal1\" class=\" w-1-0 p-4\"><span\r\n class=\"fw-bold text-center w-100 fs-4\">\r\n <div class=\"d-flex justify-content-center align-items-center w-100\">\r\n <svg width=\"46\" height=\"46\" viewBox=\"0 0 46 46\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" fill=\"#F2F4F7\" />\r\n <rect x=\"3\" y=\"3\" width=\"40\" height=\"40\" rx=\"20\" stroke=\"#F9FAFB\"\r\n stroke-width=\"6\" />\r\n <g clip-path=\"url(#clip0_4047_40566)\">\r\n <path\r\n d=\"M26.3333 26.3334L23 23M23 23L19.6666 26.3334M23 23V30.5M29.9916 28.325C30.8044 27.8819 31.4465 27.1808 31.8165 26.3322C32.1866 25.4837 32.2635 24.5361 32.0351 23.6389C31.8068 22.7418 31.2862 21.9463 30.5555 21.3779C29.8248 20.8095 28.9257 20.5006 28 20.5H26.95C26.6977 19.5244 26.2276 18.6186 25.5749 17.8509C24.9222 17.0831 24.104 16.4732 23.1817 16.0672C22.2594 15.6612 21.2571 15.4695 20.2501 15.5066C19.243 15.5437 18.2575 15.8086 17.3676 16.2814C16.4777 16.7542 15.7066 17.4226 15.1122 18.2363C14.5177 19.0501 14.1155 19.988 13.9358 20.9795C13.756 21.9711 13.8034 22.9905 14.0743 23.9611C14.3452 24.9317 14.8327 25.8282 15.5 26.5834\"\r\n stroke=\"#475467\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4047_40566\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(13 13)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n <div class=\"nodata-title mb-3\"><span class=\"click-upload cursor-pointer\">Click to\r\n upload</span>\r\n </div>\r\n <div class=\"nodata-sub\">the data added template file for processing.</div>\r\n </span>\r\n </label>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #afterValidation let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"card-title mt-3\"><span class=\"config-heading fw-semibold w-auto\">Bulk Assign</span></div>\r\n </div>\r\n <div class=\"card-body pt-0 popup-scroll\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{getEmailCounts(excelData)}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Total Records</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{excelData?.length}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Rows processed</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-70px\">\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error w-100 error-heading' \r\n : 'fw-semibold w-100 config-heading'\">\r\n {{ excelError?.error?.length || 0 }}\r\n </div>\r\n <div [ngClass]=\"excelError \r\n ? 'fw-semibold text-error mt-1 excel-error' \r\n : 'fw-semibold subtitle mt-1'\">\r\n Error\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!excelError\" class=\"table-header mt-5\" style=\"font-weight: 400;\">\r\n <div >You're about to assign {{getEmailCounts(excelData)}} {{getEmailCounts(excelData) > 1 ? 'Users' : 'User'}}. Are you sure want to proceed?</div>\r\n \r\n </div>\r\n <div *ngIf=\"excelError\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Invalid Details !</div>\r\n <div class=\"subtitle mt-5\">Please provide correct information.</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of excelError?.error; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify-content-end flex-wrap gap-2 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"closeactivepopup()\">Cancel</button>\r\n <button *ngIf=\"!excelError\" class=\"btn btn-md py-3 btn-default btn-primary\" (click)=\"proceedSubmit()\">Proceed</button>\r\n <button *ngIf=\"excelError\" class=\"btn py-3 btn-md btn-default ms-3 btn-danger\" (click)=\"file1.click();\">Reupload</button>\r\n <input style=\"display: none;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUpload1($event)\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\nimport { AddUsersComponent } from '../add-users/add-users.component';\r\nimport { UserService } from '../../services/user.service';\r\ndeclare var $: any;\r\n@Component({\r\n selector: 'lib-users-list',\r\n templateUrl: './users-list.component.html',\r\n styleUrl: './users-list.component.scss'\r\n})\r\nexport class UsersListComponent implements OnInit {\r\n @ViewChild(\"inputFile\") inputFile: ElementRef;\r\n @Output() dataToParent = new EventEmitter<string>();\r\n phoneRegex: RegExp = /^(\\d{3})?\\d{15}$/;\r\n emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n permissionArray = [\r\n {\r\n featureName: \"Global\",\r\n modules: [\r\n { name: \"Configuration\", isAdd: false },\r\n { name: \"invoice\", isAdd: false },\r\n { name: \"billing\", isAdd: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Eye\",\r\n modules: [\r\n { name: \"stores\", isAdd: false, isEdit: false },\r\n { name: \"users\", isAdd: false, isEdit: false },\r\n { name: \"camera\", isAdd: false, isEdit: false },\r\n { name: \"zone\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Trax\",\r\n modules: [\r\n { name: \"store\", isAdd: false, isEdit: false },\r\n { name: \"users\", isAdd: false, isEdit: false },\r\n { name: \"checklist\", isAdd: false, isEdit: false },\r\n { name: \"Task\", isAdd: false, isEdit: false },\r\n ]\r\n },\r\n {\r\n featureName: \"Tango Admin\",\r\n modules: [\r\n { name: \"Lead Approval\", isAdd: false },\r\n { name: \"invoice Approval\", isAdd: false },\r\n { name: \"Edit billing\", isAdd: false },\r\n { name: \"Ticket Configuration\", isAdd: false },\r\n { name: \"Ticket Assigning\", isAdd: false },\r\n ]\r\n },\r\n ];\r\n userListData: any;\r\nconstructor(private ts: ToastService,private router: Router,public modalService: NgbModal,private userService: UserService){\r\n\r\n \r\n}\r\n\r\n\r\n\r\nngOnInit() {\r\n this.userService.currentMessage.subscribe((message:any) =>{\r\n this.userListData = message;\r\n\r\n })\r\n \r\n}\r\nonUpload(e: any) {\r\n alert('in')\r\n let data: any[];\r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (!!target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n if (wb.SheetNames[0] != \"Users\") {\r\n // this.ts.getErrorToast('Please Upload the Valid File');\r\n return;\r\n }\r\n data = utils.sheet_to_json(ws);\r\n };\r\n\r\n reader.readAsBinaryString(target.files[0]);\r\n\r\n reader.onloadend = async (e) => {\r\n let processedArray: any[] = [];\r\n let errMsgs: any[] = [];\r\n for (let i = 0; i < data.length; i++) {\r\n errMsgs.push(this.validateField(data[i].UserName, \"User name\", i));\r\n errMsgs.push(\r\n this.validateField(data[i].Email, \"Email\", i, this.emailRegex)\r\n );\r\n errMsgs.push(\r\n this.validateField(\r\n data[i].Contact,\r\n \"Contact\",\r\n i,\r\n this.phoneRegex\r\n )\r\n );\r\n errMsgs.push(this.validateField(data[i].Role, \"Role\", i));\r\n }\r\n\r\n errMsgs = errMsgs.filter((x) => x != null);\r\n if (errMsgs.length > 0) {\r\n let errors = errMsgs.join(\"<br>\");\r\n \r\n return;\r\n }\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n processedArray.push({\r\n userName: data[i].UserName,\r\n email: data[i].Email,\r\n mobileNumber: data[i].Contact.toString(),\r\n role: data[i].Role,\r\n rolespermission:this.permissionArray\r\n });\r\n }\r\n // this.userService\r\n // .userBulkUpload(\r\n // { \r\n // users: processedArray, \r\n // userType: this.userType, \r\n // ...(this.userType=='client') ? {clientId: this.$headerFilters.client } : {}\r\n // }\r\n // )\r\n // .subscribe({\r\n // next: (res: any) => {\r\n // if (res.code == 200) {\r\n // this.activeModal.close('submit');\r\n // this.ts.getSuccessToast('Users have been uploaded Successfully!');\r\n // }\r\n // },\r\n // error: (error: any) => {\r\n // console.log(error)\r\n // if (error) {\r\n // this.ts.getErrorToast(error.error.error ? error.error.error:'Unable to create multiple Users!');\r\n // // } else {\r\n // // this.ts.getErrorToast('Unable to create multiple Users!');\r\n // }\r\n // },\r\n // });\r\n };\r\n $(\"#kt_create_account_form_account_type_personal\").val(\"\");\r\n }\r\n}\r\nvalidateField(\r\n value: string | undefined | null | number,\r\n fieldName: string,\r\n row: number,\r\n regex?: RegExp\r\n): string | null {\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n const defaultValue = `please enter the ${fieldName\r\n .toLowerCase()\r\n .replace(/\\b\\w/g, (l) => l.toUpperCase())}`;\r\n if (!value) {\r\n return `Please enter ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (typeof value == \"string\") {\r\n if (value.trim() === defaultValue.trim()) {\r\n return `Invalid value for ${fieldName.toLowerCase()} in row ${row + 1}`;\r\n }\r\n if (regex && !regex.test(value.trim())) {\r\n return `Please enter valid ${fieldName.toLowerCase()} in row ${\r\n row + 1\r\n }`;\r\n }\r\n }\r\n return null;\r\n}\r\naddSingleUser(){\r\n let obj = {\r\n label: 'add',\r\n }\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.data = obj;\r\n modalRef.result.then((result) => {\r\n })\r\n}\r\n\r\nusers(type:any){\r\n\r\n}\r\nonSort(type:any){\r\n\r\n}\r\nassignStore(){\r\n\r\n}\r\nuserCount: string;\r\n\r\nreceiveData(data: string) {\r\n this.userCount = data; // Store data from the child\r\n this.dataToParent.emit(this.userCount ); \r\n}\r\n}\r\n","\r\n <div *ngIf=\"userListData === 0\" class=\"card-body d-flex flex-center flex-column p-9\">\r\n \r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\" />\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\" stroke-width=\"8\" />\r\n <path\r\n d=\"M28 24V32M24 28H32M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\"\r\n stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n \r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\"> Upload to add users </a>\r\n \r\n <div class=\"fw-bold text-gray-500 my-6\">\r\n <ul class=\"text-gray-400 fw-bold fs-6\">\r\n <!-- <li class=\"user-text\">Use the template to upload multiple users at once.</li> -->\r\n <li class=\"user-text my-3\"><span class=\"user-text\">Download the template here - </span>\r\n <a class=\"ms-1\" href=\"../../../assets/files/UsersTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text my-3\">Add your data to the Template File</li>\r\n <li class=\"user-text my-3\">Upload it below for processing</li>\r\n \r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-wrap mb-5\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\"\r\n (change)=\"onUpload($event)\" value=\"personal\" class=\"btn-check\" ng-reflect-name=\"accountType\"\r\n ng-reflect-form-control-name=\"accountType\" ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline bg-primary btn-outline-default rounded-3 w-100 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"text-white mx-2 single-user\">Add Multiple Users</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"mx-2 orval\">Or </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"addSingleUser()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-100 p-4 mt-3\"><span class=\"fw-bold fs-4\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\r\n <path\r\n d=\"M17.1663 17.5V15.8333C17.1663 14.9493 16.8152 14.1014 16.19 13.4763C15.5649 12.8512 14.7171 12.5 13.833 12.5H7.16634C6.28229 12.5 5.43444 12.8512 4.80932 13.4763C4.1842 14.1014 3.83301 14.9493 3.83301 15.8333V17.5M13.833 5.83333C13.833 7.67428 12.3406 9.16667 10.4997 9.16667C8.65873 9.16667 7.16634 7.67428 7.16634 5.83333C7.16634 3.99238 8.65873 2.5 10.4997 2.5C12.3406 2.5 13.833 3.99238 13.833 5.83333Z\"\r\n stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"mx-2 single-user fw-bold\">Add Single User</span></span></label>\r\n \r\n </div>\r\n </div>\r\n\r\n<lib-brand-user *ngIf=\"userListData !== 0\" (dataToParent)=\"receiveData($event)\"></lib-brand-user>\r\n","import { ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'lib-action-popup',\r\n templateUrl: './action-popup.component.html',\r\n styleUrl: './action-popup.component.scss'\r\n})\r\nexport class ActionPopupComponent {\r\n @Input() teamData:any;\r\n constructor(\r\n private activeModal: NgbActiveModal,\r\n private cd: ChangeDetectorRef,\r\n ) {}\r\n\r\n cancel(){\r\n this.activeModal.close('close');\r\n }\r\n\r\n onSubmit(){\r\n this.activeModal.close('submit');\r\n }\r\n}\r\n","<div class=\"card group-delete py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEE4E2\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FEF3F2\" stroke-width=\"8\"/>\r\n <path d=\"M28 24V28M28 32H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\" stroke=\"#D92D20\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n \r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Delete {{teamData?.teamName}} team?</a>\r\n <span class=\"sub-title fw-normal mt-2\">Are you sure you want to delete this team? This action cannot be undone.</span>\r\n\r\n <div class=\"mt-5 w-100\">\r\n <div role=\"group\" class=\"d-flex mt-3 mb-15\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button id=\"alert-toast\" class=\"btn btn-danger w-100 ms-3\" (click)=\"onSubmit()\">Delete</button> \r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>","\r\nimport { ChangeDetectorRef, Component,Input, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ExcelService } from '../../services/excel.service';\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddUsersComponent } from '../add-users/add-users.component';\r\nimport { TeamsCreationComponent } from '../teams-creation/teams-creation.component';\r\n@Component({\r\n selector: 'lib-viewteams-list',\r\n templateUrl: './viewteams-list.component.html',\r\n styleUrl: './viewteams-list.component.scss'\r\n})\r\nexport class ViewteamsListComponent implements OnInit {\r\n @Input() teamData: any;\r\n $headerFilters: any;\r\n searchValue: any;\r\n viewteamsList: any = [];\r\n reqdata: any = {}\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n viewTeams:boolean =true\r\n private readonly destroy$ = new Subject();\r\n selectedTeam: any;\r\n dataObject: any = [\r\n { Description: 'Roles', Issues: [{ text: \"Super Admin\", id: 'superadmin' }, { text: \"Admin\", id: 'admin' }, { text: \"User\", id: \"user\" }] },\r\n { Description: 'Status', Issues: [{ text: \"Active\", id: 'active' }, { text: \"Deactive\", id: 'deactive' }] }\r\n ];\r\n filterByRoles: any;\r\n filterByStatus: any;\r\n leadData: any=[];\r\n\r\n\r\n constructor(private changeDetector: ChangeDetectorRef, public userService: ManageUsersService,\r\n public gs: GlobalStateService, private excelService: ExcelService,public modalService: NgbModal,\r\n ) {\r\n }\r\n users:any;\r\n ngOnInit() {\r\n setTimeout(() => {\r\n this.users = JSON.parse(localStorage.getItem('user-info') || '{}')\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n if (userData?.clientId) {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n TeamId:this.teamData?._id,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n TeamId:this.teamData?._id,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n }, 100);\r\n\r\n\r\n }\r\n\r\n getMaskedValue(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || !value.includes('@')) return '';\r\n\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(3, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n getMaskedMobile(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || value.length <= 4) return '*'.repeat(value.length);\r\n \r\n const first2 = value.slice(0, 2);\r\n const last2 = value.slice(-2);\r\n const maskedMiddle = '*'.repeat(value.length - 4);\r\n \r\n return `${first2}${maskedMiddle}${last2}`;\r\n }\r\n exportXLSX() {\r\n let obj = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n export:true,\r\n TeamId:this.teamData?._id,\r\n searchValue: this.searchValue,\r\n\r\n };\r\n this.userService\r\n .getviewteamsListExport(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Teams View')\r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n \r\n });\r\n }\r\n\r\n Viewusers(type: any,user?: any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.componentInstance.operationType ='view';\r\n\r\n modalRef.result.then((result) => {\r\n \r\n })\r\n }\r\n \r\n applyFilters(event:any){\r\n if (event?.length) {\r\n event.forEach((element: any) => {\r\n if (element.Description === \"Roles\") {\r\n this.filterByRoles = element.Issues.map((val: any) => val?.id);\r\n }\r\n if (element.Description === \"Status\") {\r\n this.filterByStatus = element.Issues.map((val: any) => val?.id);\r\n }\r\n })\r\n }\r\n this.reqdata.offset = 1;\r\n this.reqdata.limit=10;\r\n this.reqdata.export = false;\r\n this.reqdata.filterByRoles = this.filterByRoles;\r\n this.reqdata.filterByStatus = this.filterByStatus;\r\n this.loadTable()\r\n }\r\n\r\n\r\n onSort(column: string) {\r\n this.reqdata.export = false;\r\n if (this.reqdata?.sortColumName === column) {\r\n this.reqdata.sortBy = this.reqdata.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.reqdata.sortColumName = column;\r\n this.reqdata.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n backteamsList(){\r\n this.userService.setViewTeam(false);\r\n }\r\n loadTable() {\r\n this.viewteamsList =[];\r\n this.loading = true;\r\n this.noData = false;\r\n this.pagination.totalCount = 0;\r\n this.userService.getviewteamsList(this.reqdata).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.viewteamsList = res.data.result; \r\n this.leadData = res.data.teamlead\r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = res?.data?.result?.length < 1 ? true : false;\r\n this.loading = false;\r\n } else {\r\n this.viewteamsList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.viewteamsList = [];\r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.reqdata.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n onPageSizeChange(pageSize: number) {\r\n this.reqdata.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.reqdata.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n export:false,\r\n TeamId:this.teamData?._id,\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n viewTeamsdata(data:any) {\r\n this.selectedTeam = data\r\n this.viewTeams = true\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n TeamId:this.teamData?._id,\r\n export: false\r\n };\r\n this.loadTable();\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false,\r\n TeamId:this.teamData?._id,\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n Configure(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.teamData = this.teamData;\r\n modalRef.componentInstance.type = 'edit';\r\n modalRef.result.then((result) => {\r\n this.loadTable();\r\n })\r\n }\r\n viewUser(data:any){\r\n const modalRef = this.modalService.open(AddUsersComponent,{ centered: true, size: 'lg' });\r\n modalRef.componentInstance.user = data;\r\n modalRef.componentInstance.type = 'view';\r\n modalRef.componentInstance.userType ='client';\r\n modalRef.result.then((result) => {\r\n })\r\n }\r\n}\r\n","<div *ngIf=\"viewTeams\" class=\"card border-0 p-5\">\r\n <div class=\"card-header border-0 px-0\">\r\n <h3 class=\"card-title align-items-start d-flex align-items-center\">\r\n <span class=\"cursor-pointer\" (click)=\"backteamsList()\"> <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g filter=\"url(#filter0_d_1029_22185)\">\r\n <rect x=\"2\" y=\"1\" width=\"44\" height=\"44\" rx=\"8\" fill=\"white\" />\r\n <rect x=\"2.5\" y=\"1.5\" width=\"43\" height=\"43\" rx=\"7.5\" stroke=\"#D0D5DD\" />\r\n <path d=\"M29.8334 22.9998H18.1667M18.1667 22.9998L24 28.8332M18.1667 22.9998L24 17.1665\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <filter id=\"filter0_d_1029_22185\" x=\"0\" y=\"0\" width=\"48\" height=\"48\"\r\n filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\r\n <feOffset dy=\"1\" />\r\n <feGaussianBlur stdDeviation=\"1\" />\r\n <feColorMatrix type=\"matrix\"\r\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\" />\r\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1029_22185\" />\r\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_1029_22185\"\r\n result=\"shape\" />\r\n </filter>\r\n </defs>\r\n </svg></span>\r\n <div class=\"ms-3\">\r\n <div class=\"card-label mb-2\">{{teamData?.teamName}}</div>\r\n <div class=\"text-sub mb-2\">{{pagination?.totalCount ? pagination?.totalCount :'0'}} total users</div>\r\n </div>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n\r\n <button *ngIf=\"!loading && !noData\" type=\"button\"\r\n (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <button *ngIf=\"!loading && (!noData || leadData?.length > 0) && (gs.userAccess |async)?.Global_User_isEdit\" class=\"btn btn-primary w-100 ms-3\" id=\"alert-toast\" \r\n (click)=\"Configure()\">Configure</button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"border-0 px-0 d-flex\" *ngIf=\"leadData?.length\">\r\n <div class=\"d-flex mt-5 mx-5 w-100 overflow-auto\">\r\n <div class=\"p-3 pt-7 text-nowrap\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"users\">\r\n <path id=\"Icon\"\r\n d=\"M17 21V19C17 17.9391 16.5786 16.9217 15.8284 16.1716C15.0783 15.4214 14.0609 15 13 15H5C3.93913 15 2.92172 15.4214 2.17157 16.1716C1.42143 16.9217 1 17.9391 1 19V21M23 21V19C22.9993 18.1137 22.7044 17.2528 22.1614 16.5523C21.6184 15.8519 20.8581 15.3516 20 15.13M16 3.13C16.8604 3.3503 17.623 3.8507 18.1676 4.55231C18.7122 5.25392 19.0078 6.11683 19.0078 7.005C19.0078 7.89317 18.7122 8.75608 18.1676 9.45769C17.623 10.1593 16.8604 10.6597 16 10.88M13 7C13 9.20914 11.2091 11 9 11C6.79086 11 5 9.20914 5 7C5 4.79086 6.79086 3 9 3C11.2091 3 13 4.79086 13 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n </svg>\r\n <span class=\"heading ms-2\">Lead By</span>\r\n </div>\r\n <div class=\"btn btn-default btn-outline btn-outline-default rounded-3 text-nowrap border-val1 ms-4\"\r\n *ngFor=\"let obj of leadData\">\r\n <span class=\"heading \">{{obj.userName}}</span>\r\n <span *ngIf=\"obj?.role\" class=\"blue-badge ms-2\">{{obj?.role | titlecase}}</span>\r\n <div class=\"sub-header mt-2\">{{getMaskedValue(obj.email,users?.role)}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0 mt-10\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Username\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'userName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('email')\">Email\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'email' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'email' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('mobileNumber')\">Contact Number\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'mobileNumber' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'mobileNumber' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('role')\">Roles\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'role' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'role' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('assignedStores')\">Stores Assigned\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'assignedStores' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'assignedStores' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('clusterCount')\">Clusters\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'clusterCount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'clusterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamCount')\">Teams\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'teamCount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'teamCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n <!-- <th class=\"cursor-pointer\" (click)=\"onSort('description')\">Assigned Type\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'description' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'description' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th> -->\r\n <!-- <th style=\"line-height: 21px !important;\">Actions</th> -->\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of viewteamsList;let i=index;\">\r\n <tr>\r\n <!-- <td><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\"></span></td> -->\r\n <td>{{user?.userName}}</td>\r\n <td>{{getMaskedValue(user?.email,users.role)}}</td>\r\n <td>{{getMaskedMobile(user?.mobileNumber,users.role)}}</td>\r\n <td>{{user?.role |titlecase}}</td>\r\n <td>{{user?.assignedStores}}</td>\r\n <td>{{user?.clusterCount}}</td>\r\n <td>{{user?.teamCount}}</td>\r\n <td>\r\n <div class=\"d-flex\" (click)=\"Viewusers('view',user)\">\r\n <span class=\"cursor-pointer\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10C0.833374 10 4.16671 3.33334 10 3.33334C15.8334 3.33334 19.1667 10 19.1667 10C19.1667 10 15.8334 16.6667 10 16.6667C4.16671 16.6667 0.833374 10 0.833374 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5C11.3808 12.5 12.5 11.3807 12.5 10C12.5 8.6193 11.3808 7.50001 10 7.50001C8.61933 7.50001 7.50004 8.6193 7.50004 10C7.50004 11.3807 8.61933 12.5 10 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n\r\n </span>\r\n </div>\r\n </td>\r\n <!-- <td>store</td> -->\r\n <!-- <td>\r\n <span class=\"me-3 cursor-pointer\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10.0002C0.833374 10.0002 4.16671 3.3335 10 3.3335C15.8334 3.3335 19.1667 10.0002 19.1667 10.0002C19.1667 10.0002 15.8334 16.6668 10 16.6668C4.16671 16.6668 0.833374 10.0002 0.833374 10.0002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5002C11.3808 12.5002 12.5 11.3809 12.5 10.0002C12.5 8.61945 11.3808 7.50016 10 7.50016C8.61933 7.50016 7.50004 8.61945 7.50004 10.0002C7.50004 11.3809 8.61933 12.5002 10 12.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n\r\n </td> -->\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"viewteamsList.length!==0\" [itemsPerPage]=\"pagination.limit\"\r\n [currentPage]=\"pagination.offset\" [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\"\r\n [pageSize]=\"paginationSize()\" (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"d-flex justify-content-center align-items-center mb-2\">\r\n <img class=\"w-10\" src=\"assets/tango/Icons/no-record.svg\" alt=\"\">\r\n </div>\r\n <div class=\"text-center\">\r\n <span class=\"heading d-flex justify-content-center align-items-center\">No Users found</span>\r\n <div class=\"sub-header1 mt-1\">To add a user to this cluster, please click the</div>\r\n <div class=\"sub-header1\">configure button above</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component,ChangeDetectorRef, OnInit, EventEmitter, Output, ViewChild, ElementRef } from '@angular/core';\r\nimport { TeamsCreationComponent } from '../teams-creation/teams-creation.component';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Router } from '@angular/router';\r\nimport { NgbModal, NgbTooltip } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ActionPopupComponent } from '../action-popup/action-popup.component';\r\nimport { ExcelService } from '../../services/excel.service';\r\nimport { WorkBook, read, utils, WorkSheet } from \"xlsx\";\r\n@Component({\r\n selector: 'lib-teams-list',\r\n templateUrl: './teams-list.component.html',\r\n styleUrl: './teams-list.component.scss'\r\n})\r\nexport class TeamsListComponent implements OnInit {\r\n @Output() dataTo = new EventEmitter<any>();\r\n @ViewChild('tooltipContent') tooltipContent!: NgbTooltip;\r\n @ViewChild('tooltipContents') tooltipContents!: NgbTooltip;\r\n @ViewChild('inputFile') inputFile: ElementRef;\r\n @ViewChild('afterValidation') afterValidation: any;\r\n @ViewChild('confirmDelete') confirmDelete: any;\r\n\r\n showcreatebutton: boolean = false;\r\n excelError: any;\r\n excelData: any = []\r\n $headerFilters: any;\r\n searchValue: any;\r\n teamsList: any[] = [];\r\n reqdata: any = {}\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n viewTeams:boolean =false\r\n private readonly destroy$ = new Subject();\r\n selectedTeam: any;\r\n\r\n \r\n\r\n \r\n \r\n\r\n constructor(private changeDetector: ChangeDetectorRef, public userService: ManageUsersService, private excelService: ExcelService,\r\n public gs: GlobalStateService,private ts: ToastService,private router: Router,public modalService: NgbModal\r\n ) {\r\n\r\n }\r\n users:any;\r\n ngOnInit() {\r\n \r\n this.userService.setViewTeam(false);\r\n this.userService.viewTeams$.subscribe((value: boolean) => {\r\n this.viewTeams = value;\r\n if(value){\r\n this.loadTable()\r\n }\r\n });\r\n this.gs?.dataRangeValue?.pipe(takeUntil(this.destroy$))?.subscribe({\r\n next: (data: any) => {\r\n if (data === null) {\r\n const userData: any = JSON.parse(localStorage.getItem(\"user-info\") || \"{}\");\r\n this.$headerFilters = userData;\r\n this.$headerFilters.client = userData.clientId\r\n if (userData?.clientId) {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n } else {\r\n this.$headerFilters = data;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n\r\n exportXLSX() {\r\n let obj = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10000,\r\n offset: 1,\r\n export:true,\r\n searchValue: this.searchValue,\r\n };\r\n this.userService\r\n .getTeamsListExport(obj)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Teams ')\r\n \r\n },\r\n error: (err: any) => {\r\n this.loading = false;\r\n this.noData = true;\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => {},\r\n \r\n });\r\n \r\n }\r\n\r\n getMaskedValue(value: string, role: string): string {\r\n if (role === 'superadmin') return value;\r\n if (!value || !value.includes('@')) return '';\r\n\r\n const [local, domain] = value.split('@');\r\n const visibleLength = Math.min(3, local.length);\r\n const visiblePart = local.slice(0, visibleLength);\r\n const maskedPart = '*'.repeat(local.length - visibleLength);\r\n\r\n return `${visiblePart}${maskedPart}@${domain}`;\r\n }\r\n\r\n createTeam(){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true,backdrop:'static', size: 'lg' }); \r\n modalRef.componentInstance.type = 'create'; \r\n modalRef.result.then((result) => {\r\n if (result) {\r\n this.viewTeams = false;\r\n this.showcreatebutton = false;\r\n this.loadTable();\r\n }\r\n })\r\n }\r\n\r\n openTeam() {\r\n this.showcreatebutton = true\r\n this.viewTeams = true\r\n }\r\n \r\n editTeamsdata(data:any){\r\n const modalRef = this.modalService.open(TeamsCreationComponent,{ centered: true,backdrop:'static', size: 'lg' });\r\n modalRef.componentInstance.teamData = data;\r\n modalRef.componentInstance.type = 'edit';\r\n modalRef.result.then((result) => {\r\n if (result) {\r\n this.viewTeams = false;\r\n this.showcreatebutton = false;\r\n this.loadTable();\r\n }\r\n })\r\n }\r\n deleteTeam(data:any){\r\n const modalRef = this.modalService.open(ActionPopupComponent,{ centered: true, size: 'md',backdrop:\"static\" });\r\n modalRef.componentInstance.teamData = data;\r\n modalRef.result.then((result) => {\r\n if(result === 'submit'){\r\n this.userService.deleteTeam({teamId:data._id}).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast('Team Deleted Successfully')\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.reqdata.offset =1\r\n this.loadTable();\r\n }})\r\n }\r\n \r\n })\r\n }\r\n\r\n\r\n onSort(column: string) {\r\n this.reqdata.export = false;\r\n if (this.reqdata?.sortColumName === column) {\r\n this.reqdata.sortBy = this.reqdata.sortBy === 1 ? -1 : 1;\r\n } else {\r\n this.reqdata.sortColumName = column;\r\n this.reqdata.sortBy = 1;\r\n }\r\n this.loadTable()\r\n }\r\n\r\n loadTable() {\r\n this.users = JSON.parse(localStorage.getItem('user-info') || '{}')\r\n this.loading = true;\r\n this.noData = false;\r\n // this.pagination.offset=1;\r\n // this.pagination.limit =10;\r\n this.pagination.totalCount = 0;\r\n this.userService.getTeamsList(this.reqdata).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n if(res.data.result.length){\r\n this.teamsList = res.data.result;\r\n this.showcreatebutton = false \r\n this.pagination = {\r\n offset: this.pagination.offset,\r\n limit: this.pagination.limit,\r\n totalCount: res.data.count,\r\n searchValue: this.searchValue,\r\n };\r\n this.dataTo.emit( this.pagination.totalCount); \r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res.data.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.noData = false;\r\n this.loading = false;\r\n }else{\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.showcreatebutton = true\r\n this.noData = true;\r\n this.loading = false;\r\n }\r\n \r\n }else {\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n this.changeDetector.detectChanges();\r\n },\r\n (error: any) => {\r\n this.teamsList = [];\r\n this.dataTo.emit( ''); \r\n this.pagination = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n );\r\n }\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: number) {\r\n this.reqdata.offset = pageOffset;\r\n this.pagination.offset = pageOffset;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n onPageSizeChange(pageSize: number) {\r\n this.reqdata.limit = Number(pageSize);\r\n this.pagination.limit = Number(pageSize);\r\n this.reqdata.offset = 1;\r\n this.pagination.offset = 1;\r\n if(this.searchValue ===''){\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: this.reqdata.limit,\r\n offset: this.reqdata.offset,\r\n searchValue: this.searchValue,\r\n sortColumName: this.reqdata.sortColumName,\r\n sortBy:this.reqdata.sortBy,\r\n export:false\r\n };\r\n }\r\n this.loadTable();\r\n }\r\n \r\n viewTeamsdata(data:any) {\r\n this.selectedTeam = data\r\n this.viewTeams = true;\r\n this.userService.setViewTeam(true);\r\n this.loading =false;\r\n }\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n if (this.searchValue === '') {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n\r\n export: false\r\n };\r\n this.loadTable();\r\n } else {\r\n this.reqdata = {\r\n clientId: this.$headerFilters.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.loadTable();\r\n }\r\n }\r\n\r\n uploadErrors: any = [];\r\n processedArray: any = [];\r\n\r\n onUpload(e: any) {\r\n let data: any[] = [];\r\n let error: any = [];\r\n let storeName: any = '';\r\n this.processedArray = [];\r\n \r\n const file: File = e.target.files[0];\r\n const allowedExtensions = /\\.(xls|xlsx|csv)$/i;\r\n const allowedTypes = [\r\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\", \r\n \"application/vnd.ms-excel\", \r\n \"text/csv\", \r\n \"application/csv\", \r\n ];\r\n\r\n if (!allowedExtensions.test(file.name) || !allowedTypes.includes(file.type)) {\r\n this.ts.getErrorToast(\"Only .xlsx, or .csv files are allowed.\");\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n }\r\n \r\n const target: DataTransfer = <DataTransfer>e.target;\r\n if (target.files.length > 1) {\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n if (target.files[0].name.match(/(.xls|.xlsx)/)) {\r\n const reader: FileReader = new FileReader();\r\n reader.onload = (e: any) => {\r\n const bstr: string = e.target.result;\r\n const wb: WorkBook = read(bstr, { type: \"binary\" });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: WorkSheet = wb.Sheets[wsname];\r\n data = utils.sheet_to_json(ws);\r\n this.excelData = data;\r\n storeName = wb.SheetNames[0];\r\n };\r\n \r\n reader.readAsBinaryString(target.files[0]);\r\n reader.onloadend = async (e) => {\r\n if (storeName !== \"teams\") {\r\n this.ts.getErrorToast(\"Can you confirm whether the sheet name is teams ?\");\r\n return false;\r\n }\r\n if (!data?.length) {\r\n this.ts.getErrorToast(\"Please upload a valid file\");\r\n return\r\n }\r\n\r\n const requiredKeys = ['Team Name','Lead Email','User Email/User Name'] // Must always be present\r\n // const optionalKeys = ['userPhone', 'city'] : ['city'];\r\n \r\n const isValid = data.some((item: any) => {\r\n const keys = Object.keys(item);\r\n const hasRequiredKeys = requiredKeys.every(key => keys.includes(key));\r\n const allKeysAreAllowed = keys.every(key => \r\n requiredKeys.includes(key)\r\n // || optionalKeys.includes(key)\r\n );\r\n return hasRequiredKeys && allKeysAreAllowed;\r\n });\r\n\r\n if (!isValid) {\r\n this.ts.getErrorToast('Please upload a valid file.');\r\n return;\r\n }\r\n\r\n data?.forEach((element: any, index: any) => {\r\n if (element?.['Lead Email']) {\r\n element['Lead Email'] = element?.['Lead Email'].replace(/\\s/g, '');\r\n }\r\n if (element?.['Team Name'] == '' || element?.['Team Name'] == null) {\r\n error.push(`Invalid Team Name - A${index + 2}`)\r\n }\r\n if (element?.['Team Name'] && /[^a-zA-Z0-9 _-]/.test(element['Team Name'])) {\r\n error.push(`Special characters are not allowed in team name - A${index + 2}`)\r\n }\r\n\r\n if (element?.['Lead Email'] == '' || element?.['Lead Email'] == null) {\r\n error.push(`Invalid Lead Email - B${index + 2}`)\r\n }\r\n if (element?.['Lead Email'] && !element?.['Lead Email'].match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/)) {\r\n error.push(`Invalid Lead Email - B${index + 2}`)\r\n }\r\n if (element?.['User Email/User Name'] == '' || element?.['User Email/User Name'] == null) {\r\n error.push(`Invalid User Email/User Name - C${index + 2}`)\r\n }\r\n \r\n this.processedArray.push({\r\n teamName: data[index]['Team Name'],\r\n leadEmail: data[index]['Lead Email'],\r\n userName: data[index]['User Email/User Name']\r\n })\r\n \r\n })\r\n\r\n if (error.length) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: error\r\n }\r\n this.afterUplload(popupcontent)\r\n return;\r\n } else {\r\n this.userService\r\n .teamsBulkUpload({\r\n users: this.processedArray,\r\n clientId: this.$headerFilters?.client\r\n ? this.$headerFilters?.client\r\n : this.$headerFilters?.clientId,\r\n isChecked:true\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n if (res.status==='error'&&res.error.error.length) {\r\n this.modalService.dismissAll();\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error',\r\n error: res.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile.nativeElement.value = \"\";\r\n return;\r\n } else {\r\n \r\n this.afterUplload()\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n }\r\n },\r\n error: (err: any) => {\r\n if (err.error.code === 400) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error', \r\n error: err.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n this.inputFile.nativeElement.value = \"\";\r\n } else if (err.error.code === 500) {\r\n this.ts.getErrorToast(err.error.error)\r\n this.inputFile.nativeElement.value = \"\";\r\n }\r\n this.inputFile.nativeElement.value = \"\";\r\n },\r\n });\r\n } \r\n \r\n \r\n };\r\n // $(\"#kt_create_account_form_account_type_personal\")?.val(\"\");\r\n }\r\n }\r\n\r\n selectAllChecked: boolean = false;\r\nselectedUsers: any[] = []; \r\n createcluster: boolean = false;\r\n \r\nonSelectAll() {\r\n this.selectAllChecked = !this.selectAllChecked; \r\n\r\n this.teamsList.forEach(user => {\r\n user.isChecked = this.selectAllChecked; \r\n this.clustersAllselect?.length ? this.clustersAllselect[user._id].isChecked = this.selectAllChecked : '';\r\n });\r\n if (this.selectAllChecked) {\r\n this.selectedUsers = [...this.teamsList];\r\n this.createcluster = true;\r\n } else {\r\n this.selectedUsers = [];\r\n this.createcluster = false;\r\n }\r\n}\r\n\r\n onSelectedTeam(user: any,index:any) {\r\n user.isChecked = !user.isChecked;\r\n this.clustersAllselect ? this.clustersAllselect[user._id].isChecked = user.isChecked : ''; \r\n if (user.isChecked) {\r\n this.selectedUsers.push(user);\r\n } else if (user.isChecked === false) {\r\n\r\n const storeIndex = this.selectedUsers.findIndex(selectedStore => selectedStore._id === user._id);\r\n if (storeIndex !== -1) {\r\n this.selectedUsers.splice(storeIndex, 1);\r\n }\r\n }\r\n this.selectAllChecked = this.teamsList.every(store => store.isChecked);\r\n this.createcluster = this.selectedUsers.length > 0;\r\n }\r\n\r\n clustersAllselect: any;\r\n\r\n selectAllClusters(value: any) {\r\n this.selectedUsers = [];\r\n value === 'selectAll' ? this.reqdata.isAll = true : this.reqdata.isAll = false;\r\n this.loading = true;\r\n this.noData = false;\r\n this.userService.getTeamsList(this.reqdata).subscribe({\r\n next: (res: any) => {\r\n this.loading = false;\r\n if (res && res.code === 200) {\r\n if (value === 'selectAll') {\r\n this.clustersAllselect = res?.data?.result;\r\n Object.keys(this.clustersAllselect).forEach(key => {\r\n this.clustersAllselect[key].isChecked = true;\r\n }); \r\n \r\n this.teamsList?.forEach(obj => {\r\n if (this.clustersAllselect?.hasOwnProperty(obj._id)) {\r\n obj.isChecked = this.clustersAllselect[obj._id]?.isChecked;\r\n }\r\n this.selectedUsers.push(obj);\r\n });\r\n \r\n } else {\r\n Object.keys(this.clustersAllselect).forEach(key => {\r\n this.clustersAllselect[key].isChecked = false;\r\n });\r\n \r\n this.teamsList?.forEach(obj => {\r\n // if (this.clustersAllselect?.hasOwnProperty(obj._id)) {\r\n // obj.isChecked = this.clustersAllselect[obj._id]?.isChecked;\r\n // }\r\n obj.isChecked = false;\r\n this.selectedUsers = [];\r\n });\r\n }\r\n this.selectAllChecked = this.teamsList.every(store => store.isChecked);\r\n \r\n this.changeDetector.detectChanges();\r\n }\r\n },\r\n error: () => {\r\n \r\n },\r\n complete: () => {\r\n this.loading = false;\r\n },\r\n });\r\n }\r\n\r\ngetCheckedClusterCount(clusterMap: { [key: string]: any }): number {\r\n return Object.values(clusterMap).filter(item => item.isChecked === true).length;\r\n }\r\n \r\n teamId: any = [];\r\n\r\n DeleteAllTeam() {\r\n if (this.clustersAllselect) {\r\n this.teamId = Object.keys(this.clustersAllselect).filter(key => this.clustersAllselect[key].isChecked == true).map((key:any) => key)\r\n } else if (this.selectedUsers?.length) {\r\n this.teamId = this.selectedUsers.map((el: any) => el?._id)\r\n }\r\n let payload = {\r\n teamId: this.teamId\r\n }\r\n\r\n const modatRef = this.modalService.open(this.confirmDelete, { centered: true, size: 'md' });\r\n \r\n modatRef.closed.subscribe((result) => {\r\n if (result) {\r\n this.userService.deleteAllteams(payload).subscribe({\r\n next:(res:any)=> {\r\n if (res && res?.code == 200) {\r\n this.ts.getSuccessToast(res?.message);\r\n this.showcreatebutton = false;\r\n this.selectedUsers = [];\r\n this.loadTable();\r\n }\r\n },\r\n error:(err:any)=> {\r\n this.ts.getErrorToast(err?.error?.error)\r\n },\r\n }) \r\n }\r\n })\r\n }\r\n\r\n afterUplload(data?: any) {\r\n console.log('this.excelError',this.excelError)\r\n this.excelError = data;\r\n this.modalService.open(this.afterValidation, { centered: true, backdrop: 'static', size: 'lg', windowClass: 'custom-modal-width' })\r\n }\r\n\r\n getStoreCounts(data: any) {\r\n\r\n const uniqueUserNames = new Set(\r\n data?.map((item: any) => item['Team Name']?.toLowerCase())\r\n);\r\n return uniqueUserNames.size;\r\n\r\n }\r\n\r\n validateDetails() {\r\n \r\n this.userService\r\n .teamsBulkUpload({\r\n users: this.processedArray,\r\n clientId: this.$headerFilters?.client\r\n ? this.$headerFilters?.client\r\n : this.$headerFilters?.clientId\r\n })\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res && res.code === 200) {\r\n this.ts.getPrimaryToast('Teams has been created successfully')\r\n this.modalService.dismissAll();\r\n this.viewTeams = false;\r\n this.loadTable();\r\n }\r\n },\r\n error: (err: any) => {\r\n if (err.error.code === 400) {\r\n const popupcontent = {\r\n displayprop: false,\r\n imagesrc: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\"><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEF0C7\"/><path d=\"M27.9998 24.0012V28.0012M27.9998 32.0012H28.0098M26.2898 18.8612L17.8198 33.0012C17.6451 33.3036 17.5527 33.6465 17.5518 33.9957C17.5508 34.3449 17.6413 34.6883 17.8142 34.9917C17.9871 35.2951 18.2365 35.5479 18.5375 35.725C18.8385 35.9021 19.1806 35.9973 19.5298 36.0012H36.4698C36.819 35.9973 37.1611 35.9021 37.4621 35.725C37.7631 35.5479 38.0124 35.2951 38.1854 34.9917C38.3583 34.6883 38.4488 34.3449 38.4478 33.9957C38.4468 33.6465 38.3544 33.3036 38.1798 33.0012L29.7098 18.8612C29.5315 18.5673 29.2805 18.3243 28.981 18.1557C28.6814 17.987 28.3435 17.8984 27.9998 17.8984C27.656 17.8984 27.3181 17.987 27.0186 18.1557C26.7191 18.3243 26.468 18.5673 26.2898 18.8612Z\" stroke=\"#DC6803\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FFFAEB\" stroke-width=\"8\"/></svg>`,\r\n title: `Invalid details!`,\r\n content: `Please provide correct and complete store information.`,\r\n buttontype: 'error', \r\n error: err.error.error\r\n }\r\n this.afterUplload(popupcontent)\r\n } else if (err.error.code === 500) {\r\n this.modalService.dismissAll();\r\n this.ts.getErrorToast(err.error.error)\r\n }else{\r\n this.modalService.dismissAll();\r\n this.ts.getErrorToast(err.error.error)\r\n }\r\n this.inputFile.nativeElement.value = \"\";\r\n },\r\n });\r\n }\r\n\r\n closeactivepopup() {\r\n this.modalService.dismissAll();\r\n }\r\n\r\n}\r\n","<div>\r\n <div class=\"\" *ngIf=\"!loading && !viewTeams&&!showcreatebutton\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n </h3>\r\n <div class=\"card-toolbar rightcorner\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 \">\r\n <span *ngIf=\"!selectedUsers?.length\" class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"!selectedUsers?.length\" type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n\r\n\r\n <button *ngIf=\"!loading && !noData&& !selectedUsers?.length \" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline px-4 py-3 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <button *ngIf=\"(gs.userAccess |async)?.Global_User_isAdd && teamsList.length>0 && !selectedUsers?.length\" type=\"button\" (click)=\"openTeam()\" class=\"btn btn-sm py-3 btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n <div *ngIf=\"selectedUsers?.length\" class=\"btn-delete cursor-pointer px-5 mx-2 rounded-3 text-nowrap\" (click)=\"DeleteAllTeam()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.5 4.99996H4.16667M4.16667 4.99996H17.5M4.16667 4.99996V16.6666C4.16667 17.1087 4.34226 17.5326 4.65482 17.8451C4.96738 18.1577 5.39131 18.3333 5.83333 18.3333H14.1667C14.6087 18.3333 15.0326 18.1577 15.3452 17.8451C15.6577 17.5326 15.8333 17.1087 15.8333 16.6666V4.99996H4.16667ZM6.66667 4.99996V3.33329C6.66667 2.89127 6.84226 2.46734 7.15482 2.15478C7.46738 1.84222 7.89131 1.66663 8.33333 1.66663H11.6667C12.1087 1.66663 12.5326 1.84222 12.8452 2.15478C13.1577 2.46734 13.3333 2.89127 13.3333 3.33329V4.99996M8.33333 9.16663V14.1666M11.6667 9.16663V14.1666\" stroke=\"#B42318\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Delete All</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"card-header border-0 pt-3 left-move\">\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1 \">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n\r\n\r\n <button *ngIf=\"!loading && !noData \" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default mx-2 btn-outline p-4 btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <button type=\"button\" (click)=\"createTeam()\" class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Create Team</span> </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n\r\n <div *ngIf=\"!loading && !noData && !viewTeams&&teamsList.length>0\" class=\"card-body p-0\">\r\n <div *ngIf=\"selectedUsers?.length\" class=\"alert-box\">\r\n <span><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"37\" height=\"36\" viewBox=\"0 0 37 36\" fill=\"none\">\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" fill=\"#DAF1FF\"/>\r\n <rect x=\"2.5\" y=\"2\" width=\"32\" height=\"32\" rx=\"16\" stroke=\"#EAF8FF\" stroke-width=\"4\"/>\r\n <g clip-path=\"url(#clip0_12293_6263)\">\r\n <path d=\"M25.1666 17.3866V18C25.1658 19.4376 24.7003 20.8364 23.8395 21.9878C22.9787 23.1393 21.7688 23.9816 20.3902 24.3892C19.0115 24.7968 17.5381 24.7479 16.1896 24.2497C14.841 23.7515 13.6897 22.8307 12.9072 21.6247C12.1248 20.4186 11.7531 18.992 11.8477 17.5575C11.9423 16.123 12.4981 14.7575 13.4321 13.6647C14.3662 12.5718 15.6284 11.8102 17.0307 11.4934C18.433 11.1766 19.9001 11.3215 21.2133 11.9066M25.1666 12.6666L18.4999 19.34L16.4999 17.34\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12293_6263\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(10.5 10)\"/>\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span><span>{{selectedUsers.length === teamsList.length ? 'All ' : 'Totally '}}</span>{{selectedUsers.length}} {{ selectedUsers.length > 1 ? 'Clusters' : 'Cluster'}} on this page are selected.</span><span *ngIf=\"!clustersAllselect || getCheckedClusterCount(this.clustersAllselect) < pagination.totalCount\" class=\"selectAll\" (click)=\"selectAllClusters('selectAll')\">Select all {{pagination.totalCount}} Clusters filtered</span>\r\n <span *ngIf=\"clustersAllselect && getCheckedClusterCount(this.clustersAllselect) === pagination.totalCount\" class=\"selectAll\" (click)=\"selectAllClusters('unselect')\">Unselect all {{pagination.totalCount}} Clusters filtered</span>\r\n <span></span>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"cursor-pointer\"><span class=\"inputcheck\"><input type=\"checkbox\" (click)=\"onSelectAll()\" [(ngModel)]=\"selectAllChecked\"\r\n class=\"cursor-pointer\"></span>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('teamName')\">Team Name\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'teamName' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'teamName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userscount')\">Users\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'userscount' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'userscount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Lead Name\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Lead Email\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('description')\">Description\r\n <svg [ngClass]=\"reqdata?.sortColumName === 'description' && reqdata?.sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"reqdata?.sortColumName === 'description' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th style=\"line-height: 21px !important;\">Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of teamsList;let i=index;\">\r\n <tr>\r\n <td *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\"><span class=\"inputcheck\"><input type=\"checkbox\" class=\"cursor-pointer mt-2\" [(ngModel)]=\"user.isChecked\" (click)=\"onSelectedTeam(user,i)\"></span></td>\r\n <td>{{user?.teamName}}</td>\r\n <td>{{user?.userscount}}</td>\r\n <td><div class=\"mx-2\">\r\n <div class=\"table-title\">\r\n <span class=\"camerastatus\">\r\n <span>\r\n {{ user?.leadName[0]?user?.leadName[0]:\"--\" }}\r\n </span>\r\n <span *ngIf=\"user?.leadName.length > 1\">\r\n +{{ user.leadName.length - 1 }}\r\n </span>\r\n </span>\r\n\r\n </div>\r\n </div></td>\r\n <td>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label badge-light-primary text-symbol\" *ngIf=\"user?.leademail.length>0\">\r\n <span class=\"text-primary fs-4 badge badge-light-primary fw-normal\">\r\n {{ user?.leademail[0]?.substring(0, 2) | uppercase }}\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"mx-2\">\r\n <div class=\"table-title\">\r\n <span class=\"camerastatus\">\r\n <span>\r\n {{ getMaskedValue(user?.leademail[0] ,users?.role) }}\r\n </span>\r\n <span *ngIf=\"user?.leademail.length > 1\">\r\n +{{ user.leademail.length - 1 }}\r\n </span>\r\n </span>\r\n\r\n </div>\r\n </div>\r\n <span *ngIf=\"user?.Teamleadcount>0\">+{{user?.Teamleadcount}}</span>\r\n </div>\r\n </td>\r\n <td class=\"description\">{{user?.description ? user?.description : \"--\"}}</td>\r\n <td>\r\n <span class=\"me-3 cursor-pointer\" (click)=\"viewTeamsdata(user)\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"eye\">\r\n <g id=\"Icon\">\r\n <path\r\n d=\"M0.833374 10.0002C0.833374 10.0002 4.16671 3.3335 10 3.3335C15.8334 3.3335 19.1667 10.0002 19.1667 10.0002C19.1667 10.0002 15.8334 16.6668 10 16.6668C4.16671 16.6668 0.833374 10.0002 0.833374 10.0002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10 12.5002C11.3808 12.5002 12.5 11.3809 12.5 10.0002C12.5 8.61945 11.3808 7.50016 10 7.50016C8.61933 7.50016 7.50004 8.61945 7.50004 10.0002C7.50004 11.3809 8.61933 12.5002 10 12.5002Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"me-3 cursor-pointer\" (click)=\"editTeamsdata(user)\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_2181_11160)\">\r\n <path\r\n d=\"M24.1666 12.4999C24.3855 12.2811 24.6453 12.1074 24.9313 11.989C25.2173 11.8705 25.5238 11.8096 25.8333 11.8096C26.1428 11.8096 26.4493 11.8705 26.7353 11.989C27.0213 12.1074 27.2811 12.2811 27.5 12.4999C27.7188 12.7188 27.8924 12.9786 28.0109 13.2646C28.1294 13.5506 28.1903 13.8571 28.1903 14.1666C28.1903 14.4761 28.1294 14.7826 28.0109 15.0686C27.8924 15.3546 27.7188 15.6144 27.5 15.8333L16.25 27.0833L11.6666 28.3333L12.9166 23.7499L24.1666 12.4999Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2181_11160\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(10 10)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n <span *ngIf=\"(gs.userAccess |async)?.Global_User_isEdit\" class=\"cursor-pointer\" (click)=\"deleteTeam(user)\">\r\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12.5 14.9998H14.1667M14.1667 14.9998H27.5M14.1667 14.9998V26.6665C14.1667 27.1085 14.3423 27.5325 14.6548 27.845C14.9674 28.1576 15.3913 28.3332 15.8333 28.3332H24.1667C24.6087 28.3332 25.0326 28.1576 25.3452 27.845C25.6577 27.5325 25.8333 27.1085 25.8333 26.6665V14.9998H14.1667ZM16.6667 14.9998V13.3332C16.6667 12.8911 16.8423 12.4672 17.1548 12.1547C17.4674 11.8421 17.8913 11.6665 18.3333 11.6665H21.6667C22.1087 11.6665 22.5326 11.8421 22.8452 12.1547C23.1577 12.4672 23.3333 12.8911 23.3333 13.3332V14.9998M18.3333 19.1665V24.1665M21.6667 19.1665V24.1665\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData && !viewTeams&&teamsList.length>0\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"teamsList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer mb-10\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"noData&&!showcreatebutton\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"card-body d-flex flex-center flex-column p-9\" *ngIf=\"showcreatebutton\">\r\n <div class=\"mb-5\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\" stroke-width=\"8\"/>\r\n <path d=\"M28 24V32M24 28H32M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bolder mb-0 title cursor-pointer\"> Add teams </a>\r\n <div class=\"fw-bold text-gray-800 my-6\">\r\n <ul class=\"custom-ordered-list text-gray-800 fw-bold fs-6\">\r\n <li class=\"user-text mb-2\">Use the template to upload multiple Teams at once.</li>\r\n <li class=\"user-text mb-2\">Download the template here -\r\n <a href=\"./../../assets/files/teamsBulkUploadTemplate.xlsx\" download>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M5.83333 8.33333L10 12.5M10 12.5L14.1667 8.33333M10 12.5V2.5\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n <span class=\"template ms-2\">Download Template</span>\r\n </a>\r\n </li>\r\n <li class=\"user-text mb-2\">Add your data to the Template File</li>\r\n <li class=\"user-text mb-2\">Upload it below for processing</li>\r\n </ul>\r\n </div>\r\n <div class=\"d-flex flex-center flex-column mb-5\" style=\"width: 57% !important;\">\r\n <input name=\"accountType\" type=\"radio\" id=\"kt_create_account_form_account_type_personal\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\" value=\"personal\"\r\n class=\"btn-check\" ng-reflect-name=\"accountType\" ng-reflect-form-control-name=\"accountType\"\r\n (change)=\"onUpload($event)\"\r\n ng-reflect-value=\"personal\" type=\"file\" #inputFile />\r\n <label for=\"kt_create_account_form_account_type_personal\"\r\n class=\"btn btn-outline btn-primary bg-primary btn-outline-default rounded-3 w-50 p-4 mt-5\"><span\r\n class=\"fw-bold fs-4\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M18 12.5V15.8333C18 16.2754 17.8244 16.6993 17.5118 17.0118C17.1993 17.3244 16.7754 17.5 16.3333 17.5H4.66667C4.22464 17.5 3.80072 17.3244 3.48816 17.0118C3.17559 16.6993 3 16.2754 3 15.8333V12.5M14.6667 6.66667L10.5 2.5M10.5 2.5L6.33333 6.66667M10.5 2.5V12.5\"\r\n stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> \r\n <span class=\"text-white mx-2\">Upload To Add Multiple Teams</span></span>\r\n </label>\r\n <p class=\"text-gray-400 fw-bold my-3\">\r\n <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 124 2\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"123.333\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span><span class=\"mx-2\">Or </span> <span class=\"line-bg \"><svg width=\"224\" height=\"2\" viewBox=\"0 0 124 2\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect y=\"0.5\" width=\"123.333\" height=\"1\" fill=\"#EAECF0\" />\r\n </svg>\r\n </span>\r\n </p>\r\n <input type=\"radio\" id=\"kt_account_team_size_select_1\" value=\"1-1\" (click)=\"createTeam()\"\r\n class=\"btn-check ng-untouched ng-pristine ng-valid\" />\r\n <label for=\"kt_account_team_size_select_1\"\r\n class=\"btn btn-outline btn-outline-default rounded-3 w-50 p-4 mt-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99984 4.16675V15.8334M4.1665 10.0001H15.8332\" stroke=\"#101828\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"fw-bold fs-4 mx-2\">\r\n Add Single Team</span></label>\r\n </div>\r\n \r\n \r\n</div>\r\n</div>\r\n\r\n<div *ngIf=\"viewTeams && !showcreatebutton\">\r\n <lib-viewteams-list [teamData]=\"this.selectedTeam\"></lib-viewteams-list>\r\n</div>\r\n\r\n<ng-template #afterValidation let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"card-title mt-3\"><span class=\"config-heading fw-semibold w-auto\">Add Teams</span></div>\r\n </div>\r\n <div class=\"card-body pt-0 popup-scroll\">\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-80px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{getStoreCounts(excelData)}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Total Records</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-80px\">\r\n <div class=\"fw-semibold config-heading w-100\">{{excelData?.length}}</div>\r\n <div class=\"fw-semibold subtitle mt-1\">Rows processed</div>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"popup-card rounded-3 p-3 flex-column h-80px\">\r\n <div [ngClass]=\"excelError?.error?.length \r\n ? 'fw-semibold text-error w-100 error-heading' \r\n : 'fw-semibold w-100 config-heading'\">\r\n {{ excelError?.error?.length || 0 }}\r\n </div>\r\n <div [ngClass]=\"excelError?.error?.length \r\n ? 'fw-semibold text-error mt-1 excel-error' \r\n : 'fw-semibold subtitle mt-1'\">\r\n Error\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!excelError?.error?.length\" class=\"table-header mt-5\" style=\"font-weight: 400;\">\r\n <div >You're about to add {{getStoreCounts(excelData)}} {{getStoreCounts(excelData) >1 ?'Teams':'Team'}}. Are you sure want to proceed?</div>\r\n \r\n </div>\r\n <div *ngIf=\"excelError?.error?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Invalid Details !</div>\r\n <div class=\"subtitle mt-5\">Please provide correct information.</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of excelError?.error; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.doesNotExists?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Data not exists !</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.doesNotExists; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"uploadErrors?.inActive?.length\" class=\"flex-column mt-5\">\r\n <div class=\"config-heading fw-bold\">Data inactive !</div>\r\n <div class=\"p-5 w-100 rounded-3 border-error mt-5 flex-column\">\r\n <div *ngFor=\"let error of uploadErrors?.inActive; let i = index; let last = last\" [ngClass]=\"!last ? 'mb-2' : ''\" class=\"text-error\">{{i + 1}}) {{error}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify-content-end flex-wrap gap-2 pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline\" (click)=\"closeactivepopup()\">Cancel</button>\r\n <button *ngIf=\"!excelError?.error?.length\" class=\"btn btn-md py-3 btn-default ms-3 btn-primary\" (click)=\"validateDetails()\">Proceed</button>\r\n <button *ngIf=\"excelError?.error?.length\" class=\"btn py-3 btn-md btn-default ms-3 btn-danger\" (click)=\"file1.click()\">Reupload</button>\r\n <input style=\"display: none;\" #file1 type=\"file\" id=\"kt_account_team_size_select_2\" accept = \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\r\n (change)=\"onUpload($event)\" />\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #confirmDelete let-model>\r\n <div class=\"card border-0\">\r\n <div class=\"card-header border-0 mt-0\">\r\n <div class=\"mt-3\">\r\n <div class=\"mt-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#FEE4E2\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#FEF3F2\" stroke-width=\"8\"/>\r\n <path d=\"M28 24V28M28 32H28.01M38 28C38 33.5228 33.5228 38 28 38C22.4772 38 18 33.5228 18 28C18 22.4772 22.4772 18 28 18C33.5228 18 38 22.4772 38 28Z\" stroke=\"#D92D20\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"config-heading fw-semibold mt-3 w-auto\">Delete {{teamId?.length}} {{teamId?.length > 1 ? 'Teams' : 'Team'}}? </div></div>\r\n </div>\r\n <div class=\"card-body pt-0 popup-scroll\">\r\n <div class=\"mt-5\">\r\n <div class=\"subtitle\" style=\"font-weight: 400;\">Are you sure you want to delete the selected team? This action cannot be undone.</div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer border-0 d-flex justify justify-content-between pt-0\">\r\n <button class=\"btn btn-md btn-default btn-outline w-50 me-2\" (click)=\"model.close()\">Cancel</button>\r\n <button class=\"btn btn-md py-3 btn-default btn-danger w-50 ms-2\" (click)=\"model.close('submit')\">Delete</button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { Component, OnChanges, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { ManageUsersService } from '../../services-v2/manage-users.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\n@Component({\r\n selector: 'lib-users-manage',\r\n templateUrl: './users-manage.component.html',\r\n styleUrl: './users-manage.component.scss'\r\n})\r\nexport class UsersManageComponent implements OnInit,OnDestroy {\r\n private readonly destroy = new Subject();\r\n selectedTab: any ='users';\r\n teamCount:any =''\r\n private readonly destroy$ = new Subject();\r\n searchValue: any;\r\n $headerFilters: any;\r\n constructor(public userService: ManageUsersService,private router: ActivatedRoute ){\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy.next(true);\r\n this.destroy.complete();\r\n }\r\n ngOnInit(): void {\r\n this.userService.tabChange.subscribe((data) =>\r\n data === 'teams' ? this.selectedTabs('teams') : this.selectedTabs('users'))\r\n this.loadTable()\r\n }\r\n selectedTabs(type: any) {\r\n this.selectedTab = type;\r\n }\r\n userCount: string;\r\n\r\n receiveData(data: string) {\r\n this.userCount = data; // Store data from the child\r\n }\r\n receive(data: any) {\r\n this.teamCount = data; // Store data from the child\r\n }\r\n loadTable() {\r\n let user = JSON.parse(localStorage.getItem('header-filters') || '{}')\r\n let payload = {\r\n clientId: user.client,\r\n limit: 10,\r\n offset: 1,\r\n searchValue: this.searchValue,\r\n export: false\r\n };\r\n this.userService.getTeamsList(payload).pipe(takeUntil(this.destroy$)).subscribe(\r\n (res: any) => {\r\n if (res && res.code === 200) {\r\n this.teamCount = res.data.count;\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"card mb-5\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <div class=\"d-flex overflow-auto mb-2\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs flex-nowrap \" style=\"border-bottom: white!important;overflow-y: hidden;\">\r\n \r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('users')\">\r\n <a [ngClass]=\"selectedTab ==='users' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Users <span class=\"blue-badge mx-2\" >{{ userCount ? userCount : '0'}}</span></a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('teams')\"><a\r\n [ngClass]=\"selectedTab ==='teams' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6 \">Teams <span class=\"blue-badge mx-2\" >{{ teamCount ? teamCount : '0'}}</span></a>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n <!-- <div class=\"card-header my-3 min-h-55px\">\r\n <ul class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs flex-nowrap \">\r\n\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('users')\" >\r\n <a [ngClass]=\"selectedTab ==='users' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer tab-title me-6\">Users <span class=\"blue-badge mx-2\">{{ userCount ? userCount : '0'}}</span></a>\r\n </li>\r\n <li class=\"nav-item nav-item1\" (click)=\"selectedTabs('teams')\"><a\r\n [ngClass]=\"selectedTab ==='teams' ? 'active' :''\"\r\n class=\"nav-link nav-link1 cursor-pointer no-border tab-title me-6\">Teams <span class=\"blue-badge mx-2\">{{ teamCount ? teamCount : '0'}}</span></a>\r\n </li>\r\n\r\n </ul>\r\n </div> -->\r\n <div class=\"card-card pt-2 pb-1 \">\r\n <lib-users-list *ngIf=\"selectedTab ==='users'\" (dataToParent)=\"receiveData($event)\"></lib-users-list>\r\n <lib-teams-list *ngIf=\"selectedTab ==='teams'\" (dataTo)=\"receive($event)\"></lib-teams-list>\r\n </div>\r\n</div>","import { Component, OnDestroy, OnInit, Input, ChangeDetectorRef, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { UserService } from '../../../../services/user.service';\r\nimport { ExcelService } from '../../../../services/excel.service';\r\n\r\n@Component({\r\n selector: 'lib-audit-user-list',\r\n templateUrl: './audit-user-list.component.html',\r\n styleUrl: './audit-user-list.component.scss'\r\n})\r\nexport class AuditUserListComponent implements OnInit, OnDestroy {\r\n\r\n @Input() viewuser: any;\r\n @Input() userDetails: any;\r\n userData: any;\r\n @Output() dataEmitter: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n };\r\n totalCount: any;\r\n sortColumName: any;\r\n searchValue: any = '';\r\n sortBy: any = -1;\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n headerFilter: any;\r\n consolidatedData: any;\r\n userList: any;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n public modalService: NgbModal,\r\n private changeDetector: ChangeDetectorRef, private toast: ToastService,\r\n public gs: GlobalStateService, private service: UserService,\r\n private excelService: ExcelService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data: any) => {\r\n if (data != null) {\r\n this.headerFilter = data\r\n this.loadTable();\r\n this.consolidatedCard();\r\n this.getuserDetails();\r\n }\r\n })\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n searchData() {\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n\r\n consolidatedCard() {\r\n const payload = {\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email\r\n }\r\n this.service.getConsolidatedCard(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code === 200) {\r\n this.consolidatedData = res?.data?.result;\r\n }\r\n },\r\n })\r\n\r\n }\r\n\r\n getuserDetails() {\r\n this.service.getAuditUserDetails(this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userData = res?.data?.result;\r\n }\r\n },\r\n })\r\n }\r\n\r\n loadTable() {\r\n const payload = {\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email,\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: this.pagination.limit,\r\n offset: this.pagination.offset,\r\n isExport: false,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.loading = true;\r\n this.noData = false;\r\n this.service.getAuditWalletSummary(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userList = res?.data?.result;\r\n this.totalCount = res?.data?.count;\r\n if (this.totalCount < 10) {\r\n this.paginationSizes = [this.totalCount];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n error:(err:any)=> {\r\n this.loading = false;\r\n this.noData = true;\r\n },\r\n })\r\n }\r\n\r\n exportXLSX() {\r\n\r\n const payload = {\r\n userEmail: this.userDetails?.userEmail ? this.userDetails?.userEmail : this.userData?.email,\r\n fromDate: this.headerFilter?.date?.startDate,\r\n toDate: this.headerFilter?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: 10000,\r\n offset: this.pagination.offset,\r\n isExport: true,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.service.ExportWalletAummary(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Audit Wallet Summary')\r\n },\r\n error: (err: any) => {\r\n this.toast.getErrorToast(err?.error?.error)\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n })\r\n\r\n }\r\n\r\n onSort(key: any) {\r\n this.sortColumName = key;\r\n this.sortBy *= -1;\r\n this.loadTable();\r\n }\r\n\r\n // Viewusers(data: any, key: any) {\r\n // this.viewuser = true;\r\n // }\r\n\r\n paginationSize(): number {\r\n if (this.totalCount < 10) {\r\n return this.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pagination.offset = event;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(event: any) {\r\n this.pagination.limit = event;\r\n this.pagination.offset = 1;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n\r\n backTosummary() {\r\n this.viewuser = false;\r\n this.searchValue = '';\r\n this.dataEmitter.emit(this.viewuser)\r\n }\r\n}\r\n","<div class=\"card p-0 rounded-3 mb-5\">\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title m-0\">\r\n <div class=\"d-flex align-items-center\">\r\n <span (click)=\"backTosummary()\" class=\"btn me-3 px-2 py-2 btn-outline\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 10H4.1665M4.1665 10L9.99984 15.8333M4.1665 10L9.99984 4.16667\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"userData?.userName\" class=\"me-3 fw-bold\">{{(userDetails?.userName ? userDetails?.userName : userDetails?.userName) | titlecase}}</span> <span\r\n class=\"badge me-3 badge-light-default\">{{userData?.tangoUserType | titlecase}}</span><span\r\n class=\"badge me-3 badge-light-success\">{{userData?.role | titlecase}}</span>\r\n <span *ngIf=\"userData?.email\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M14.6668 4.00001C14.6668 3.26667 14.0668 2.66667 13.3335 2.66667H2.66683C1.9335 2.66667 1.3335 3.26667 1.3335 4.00001M14.6668 4.00001V12C14.6668 12.7333 14.0668 13.3333 13.3335 13.3333H2.66683C1.9335 13.3333 1.3335 12.7333 1.3335 12V4.00001M14.6668 4.00001L8.00016 8.66667L1.3335 4.00001\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> <span class=\"ms-2 top-list\">{{userData?.email}}</span></span>\r\n <span *ngIf=\"userData?.mobileNumber\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_8096_7888)\">\r\n <path\r\n d=\"M16.5001 12.69V14.94C16.5009 15.1489 16.4581 15.3556 16.3745 15.547C16.2908 15.7384 16.168 15.9102 16.0141 16.0514C15.8602 16.1926 15.6785 16.3001 15.4806 16.367C15.2828 16.4339 15.0731 16.4588 14.8651 16.44C12.5572 16.1892 10.3403 15.4006 8.39257 14.1375C6.58044 12.986 5.04407 11.4496 3.89257 9.6375C2.62506 7.6809 1.83625 5.45324 1.59007 3.135C1.57133 2.9276 1.59598 2.71857 1.66245 2.52121C1.72892 2.32386 1.83575 2.14251 1.97615 1.98871C2.11654 1.83491 2.28743 1.71203 2.47792 1.62789C2.6684 1.54375 2.87433 1.50019 3.08257 1.5H5.33257C5.69655 1.49641 6.04942 1.62531 6.32539 1.86265C6.60137 2.09999 6.78163 2.42958 6.83257 2.79C6.92754 3.51005 7.10366 4.21704 7.35757 4.8975C7.45848 5.16594 7.48032 5.45768 7.4205 5.73816C7.36069 6.01863 7.22172 6.27608 7.02007 6.48L6.06757 7.4325C7.13524 9.31016 8.68991 10.8648 10.5676 11.9325L11.5201 10.98C11.724 10.7783 11.9814 10.6394 12.2619 10.5796C12.5424 10.5197 12.8341 10.5416 13.1026 10.6425C13.783 10.8964 14.49 11.0725 15.2101 11.1675C15.5744 11.2189 15.9071 11.4024 16.145 11.6831C16.3828 11.9638 16.5092 12.3222 16.5001 12.69Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_8096_7888\">\r\n <rect width=\"18\" height=\"18\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg> <span class=\"ms-2 top-list\">{{userData?.mobileNumber }}</span></span>\r\n <span *ngIf=\"userData?.clientAssigned\" class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\"\r\n height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M12.75 15.75V14.25C12.75 13.4544 12.4339 12.6913 11.8713 12.1287C11.3087 11.5661 10.5456 11.25 9.75 11.25H3.75C2.95435 11.25 2.19129 11.5661 1.62868 12.1287C1.06607 12.6913 0.75 13.4544 0.75 14.25V15.75M17.25 15.75V14.25C17.2495 13.5853 17.0283 12.9396 16.621 12.4142C16.2138 11.8889 15.6436 11.5137 15 11.3475M12 2.3475C12.6453 2.51273 13.2173 2.88803 13.6257 3.41423C14.0342 3.94044 14.2559 4.58762 14.2559 5.25375C14.2559 5.91988 14.0342 6.56706 13.6257 7.09327C13.2173 7.61947 12.6453 7.99477 12 8.16M9.75 5.25C9.75 6.90685 8.40685 8.25 6.75 8.25C5.09315 8.25 3.75 6.90685 3.75 5.25C3.75 3.59315 5.09315 2.25 6.75 2.25C8.40685 2.25 9.75 3.59315 9.75 5.25Z\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 top-list\">Clients Assigned:{{userData?.clientAssigned ?? 0}}</span></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"card p-3 rounded-3 mb-5\">\r\n <div class=\"w-100 p-5 bg-highlighted d-flex align-items-center\">\r\n <span class=\"fw-bold text-highlighted\">₹ {{consolidatedData?.totalCredit ? consolidatedData?.totalCredit.toFixed(2) : 0}}</span><span\r\n class=\"fw-semibold text-sub ms-3\">{{consolidatedData?.message}}\r\n <!-- {{headerFilter?.date?.startDate}} – {{headerFilter?.date?.endDate}} -->\r\n </span>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center px-5 py-5\">\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalFiles ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Files</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalBC ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">Before Count</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalAC ?? 0}}</div>\r\n <div class=\"box-label fw-semibold\">After Count</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalEarnings ? consolidatedData?.totalEarnings.toFixed(2) : 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Earnings</div>\r\n </div>\r\n <div class=\"Boxes\">\r\n <div class=\"box-header\">{{consolidatedData?.totalReducedAmount ? consolidatedData?.totalReducedAmount.toFixed(2) : 0}}</div>\r\n <div class=\"box-label fw-semibold\">Total Reduced Amount</div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"card\">\r\n <div class=\"card-header border-0 pt-3 mb-5\">\r\n <div class=\"card-title d-grid\">\r\n <div class=\"title\">Summary Table</div>\r\n <div class=\"text-sub\">Based on {{headerFilter?.date?.startDate | date:'dd MMM, yyyy'}} – {{headerFilter?.date?.endDate | date:'dd MMM, yyyy'}}</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn btn-default px-4 py-3 mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16775 13.7347 6.08621 13.7036 6.01006C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37333 9.06609 1.3275 8.98994 1.2964C8.91379 1.26529 8.83225 1.24953 8.75 1.25H2.5C2.16848 1.25 1.85054 1.3817 1.61612 1.61612C1.3817 1.85054 1.25 2.16848 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n <!-- } -->\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDate')\">File Date\r\n <svg [ngClass]=\"sortColumName === 'fileDate' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalFilesCount')\">Total Files\r\n <svg [ngClass]=\"sortColumName === 'totalFilesCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalFilesCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalBeforeCount')\">Total BC\r\n <svg [ngClass]=\"sortColumName === 'totalBeforeCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalBeforeCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalAfterCount')\">Total AC\r\n <svg [ngClass]=\"sortColumName === 'totalAfterCount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalAfterCount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalEarn')\">Total Earnings(Rs)\r\n <svg [ngClass]=\"sortColumName === 'totalEarn' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalEarn' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByMinimumTarget')\">Deduction by Minimum\r\n Target\r\n <svg [ngClass]=\"sortColumName === 'deductionByMinimumTarget' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByMinimumTarget' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByMapping')\">Deduction by Mapping\r\n <svg [ngClass]=\"sortColumName === 'deductionByMapping' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByMapping' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionByLateLogin')\">Deduction by Late Login\r\n <svg [ngClass]=\"sortColumName === 'deductionByLateLogin' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionByLateLogin' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalReducedAmount')\">Total Reduced Amount\r\n <svg [ngClass]=\"sortColumName === 'totalReducedAmount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalReducedAmount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalCredit')\">Total Credit\r\n <svg [ngClass]=\"sortColumName === 'totalCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.fileDate ?? '--'}}</td>\r\n <td>{{user?.totalFilesCount ?? '--'}}</td>\r\n <td>{{user?.totalBeforeCount ?? '--'}}</td>\r\n <td>{{user?.totalAfterCount ?? '--'}}</td>\r\n <td>{{user?.totalEarn ? user?.totalEarn.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionByMinimumTarget ? user?.deductionByMinimumTarget.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionByMapping ? user?.deductionByMapping.toFixed(2) : 0}}</td>\r\n <td>{{user.deductionByLateLogin ? user.deductionByLateLogin.toFixed(2) : 0}}\r\n </td>\r\n <td>{{user?.totalReducedAmount ? user?.totalReducedAmount.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalCredit ? user?.totalCredit.toFixed(2) : 0}}</td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, OnDestroy, OnInit, viewChild } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\nimport { Subject, takeUntil, debounceTime, distinctUntilChanged } from \"rxjs\";\r\nimport { AddUserPopupComponent } from '../../add-user-popup/add-user-popup.component';\r\nimport { UserService } from '../../../../services/user.service';\r\nimport { ExcelService } from '../../../../services/excel.service';\r\n\r\n@Component({\r\n selector: 'lib-audit-user-earnings',\r\n templateUrl: './audit-user-earnings.component.html',\r\n styleUrl: './audit-user-earnings.component.scss'\r\n})\r\nexport class AuditUserEarningsComponent implements OnInit, OnDestroy {\r\n\r\n pagination: any = {\r\n offset: 1,\r\n limit: 10,\r\n totalCount: 0,\r\n };\r\n sortColumName: any;\r\n searchValue: any = '';\r\n sortBy: any = -1;\r\n loading: boolean = true;\r\n noData: boolean = false;\r\n paginationSizes: number[] = [10, 20, 30];\r\n supportEmail: string;\r\n userType: string;\r\n $headerFilters: any;\r\n userList: any;\r\n private readonly destroy$ = new Subject();\r\n\r\n constructor(\r\n public modalService: NgbModal,\r\n private changeDetector: ChangeDetectorRef,\r\n public gs: GlobalStateService,\r\n private toastService: ToastService,\r\n private service: UserService, private excelService: ExcelService\r\n ) {\r\n this.gs.environment.pipe(takeUntil(this.destroy$)).subscribe((env) => {\r\n if (env) {\r\n this.supportEmail = env.support_email;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe((data: any) => {\r\n if (data != null) {\r\n this.$headerFilters = data\r\n this.loadTable();\r\n }\r\n })\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n\r\n searchData() {\r\n this.searchValue = this.searchValue;\r\n this.sortColumName = undefined;\r\n this.sortBy = -1;\r\n this.pagination.offset = 1;\r\n this.pagination.limit = 10;\r\n this.loadTable();\r\n }\r\n\r\n loadTable() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: this.pagination.limit,\r\n offset: this.pagination.offset,\r\n isExport: false,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.loading = true;\r\n this.noData = false;\r\n this.service.getAuditWallet(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.userList = res?.data?.result;\r\n this.pagination.totalCount = res?.data?.count;\r\n if (res.data.count < 10) {\r\n this.paginationSizes = [res?.data?.count];\r\n } else {\r\n this.paginationSizes = [10, 20, 30];\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n } else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },\r\n error:(err:any)=> {\r\n this.loading = false;\r\n this.noData = true; \r\n },\r\n })\r\n }\r\n\r\n exportXLSX() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate,\r\n searchValue: this.searchValue,\r\n limit: 10000,\r\n offset: this.pagination.offset,\r\n isExport: true,\r\n sortColumnName: this.sortColumName,\r\n sortBy: this.sortBy\r\n }\r\n this.service.ExportgetAuditWallet(payload).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n this.excelService.saveAsExcelFile(res, 'Audit Users Summary')\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error?.error)\r\n this.changeDetector.detectChanges();\r\n },\r\n complete: () => { },\r\n })\r\n }\r\n\r\n generateReport() {\r\n const payload = {\r\n fromDate: this.$headerFilters?.date?.startDate,\r\n toDate: this.$headerFilters?.date?.endDate\r\n }\r\n this.service.getGenerateReport(payload).subscribe({\r\n next: (res: any) => {\r\n if (res && res?.code == 200) {\r\n this.toastService.getSuccessToast('Report Generated Successfully')\r\n }\r\n },\r\n error: (err: any) => {\r\n this.toastService.getErrorToast(err?.error.error)\r\n },\r\n })\r\n }\r\n\r\n\r\n viewuser: boolean = false;\r\n userDetails: any;\r\n\r\n Viewusers(type: any, user?: any) {\r\n this.viewuser = true;\r\n this.searchValue = '';\r\n this.userDetails = user;\r\n }\r\n\r\n addUsers(type: any, user?: any) {\r\n const modalRef = this.modalService.open(AddUserPopupComponent, {\r\n centered: true,\r\n size: \"lg\",\r\n scrollable: true,\r\n });\r\n modalRef.componentInstance.user = user;\r\n modalRef.componentInstance.type = type;\r\n modalRef.componentInstance.userType = 'tango';\r\n modalRef.result.then((result) => {\r\n if (result === 'submit') {\r\n this.searchValue = '';\r\n this.pagination.limit = 10;\r\n this.pagination.offset = 1;\r\n // this.sortColumName = 'userName';\r\n this.sortBy = -1;\r\n this.loadTable();\r\n }\r\n });\r\n }\r\n\r\n onSort(key: any) {\r\n this.sortColumName = key;\r\n this.sortBy *= -1;\r\n this.loadTable();\r\n }\r\n\r\n receivedData(event: any) {\r\n this.viewuser = event;\r\n this.searchValue = '';\r\n }\r\n\r\n paginationSize(): number {\r\n if (this.pagination.totalCount < 10) {\r\n return this.pagination.totalCount;\r\n } else {\r\n return this.pagination.limit;\r\n }\r\n }\r\n\r\n onPageChange(event: any) {\r\n this.pagination.offset = event;\r\n this.loadTable();\r\n }\r\n\r\n onPageSizeChange(event: any) {\r\n this.pagination.limit = event;\r\n this.pagination.offset = 1;\r\n this.sortBy = -1;\r\n this.sortColumName = undefined;\r\n this.loadTable();\r\n }\r\n\r\n}\r\n","<div *ngIf=\"!viewuser\" class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <div class=\"d-flex overflow-auto h-50px\">\r\n <ul\r\n class=\"nav nav-stretch w-100 nav-line-tabs nav-line-tabs-2x border-bottom-2 fs-5 fw-bolder flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer px-5 me-5 text-center\"><a routerLink=\"/manage/users/tango\"\r\n class=\"nav-link mx-0 text-active-primary\">Users</a>\r\n </li>\r\n <li class=\"nav-item activated px-5 me-5 bg-light-primary cursor-pointer\"><a\r\n class=\"nav-link text-active-primary mx-0\">Audit Users\r\n Summary</a>\r\n </li>\r\n </ul>\r\n </div>\r\n <span class=\"text-sub mb-2 mt-5\">{{pagination?.totalCount}} total users</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" (change)=\"searchData()\" [(ngModel)]=\"searchValue\" class=\"form-control ps-14 me-2\"\r\n name=\"search\" autocomplete=\"off\" placeholder=\"Search\" autocomplete=\"off\" />\r\n @if (!loading && !noData) {\r\n <!-- @if ((gs.userAccess |async)?.Global_User_isEdit) { -->\r\n <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"exportXLSX()\"\r\n class=\"btn py-3 px-4 btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M8.125 13.125H16.3562L14.7438 14.7438L15.625 15.625L18.75 12.5L15.625 9.375L14.7438 10.2562L16.3562 11.875H8.125V13.125Z\"\r\n fill=\"black\" />\r\n <path\r\n d=\"M13.75 8.75V6.25C13.7505 6.16775 13.7347 6.08621 13.7036 6.01006C13.6725 5.93391 13.6267 5.86465 13.5688 5.80625L9.19375 1.43125C9.13535 1.37333 9.06609 1.3275 8.98994 1.2964C8.91379 1.26529 8.83225 1.24953 8.75 1.25H2.5C2.16848 1.25 1.85054 1.3817 1.61612 1.61612C1.3817 1.85054 1.25 2.16848 1.25 2.5V17.5C1.25 17.8315 1.3817 18.1495 1.61612 18.3839C1.85054 18.6183 2.16848 18.75 2.5 18.75H12.5C12.8315 18.75 13.1495 18.6183 13.3839 18.3839C13.6183 18.1495 13.75 17.8315 13.75 17.5V16.25H12.5V17.5H2.5V2.5H7.5V6.25C7.5 6.58152 7.6317 6.89947 7.86612 7.13389C8.10054 7.36831 8.41848 7.5 8.75 7.5H12.5V8.75H13.75ZM8.75 6.25V2.75625L12.2438 6.25H8.75Z\"\r\n fill=\"black\" />\r\n </svg><span class=\"ms-2\">Export</span> </button>\r\n\r\n <!-- <button *ngIf=\"!noData && !loading\" type=\"button\" (click)=\"generateReport()\"\r\n class=\"btn py-3 px-4 btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><span\r\n class=\"ms-2\">Generate</span> </button> -->\r\n\r\n\r\n <!-- } -->\r\n }\r\n @if ((gs.userAccess | async)?.Global_User_isAdd) {\r\n <button type=\"button\" (click)=\"addUsers('add')\"\r\n class=\"btn btn-primary mx-2 rounded-3 text-nowrap\"><svg xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M10.0001 4.16663V15.8333M4.16675 9.99996H15.8334\" stroke=\"white\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2 text-white\">Add User</span> </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table bottom-border text-nowrap \">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('userName')\">Name\r\n <svg [ngClass]=\"sortColumName === 'userName' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'userName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDateFrom')\">File Date From\r\n <svg [ngClass]=\"sortColumName === 'fileDateFrom' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDateFrom' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('fileDateTo')\">File Date To\r\n <svg [ngClass]=\"sortColumName === 'fileDateTo' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'fileDateTo' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('noOfDays')\">No.of Days\r\n <svg [ngClass]=\"sortColumName === 'noOfDays' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'noOfDays' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalFiles')\">Total Files\r\n <svg [ngClass]=\"sortColumName === 'totalFiles' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalFiles' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalBC')\">Total BC\r\n <svg [ngClass]=\"sortColumName === 'totalBC' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalBC' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalAC')\">Total AC\r\n <svg [ngClass]=\"sortColumName === 'totalAC' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalAC' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalEarnings')\">Total Earnings(Rs)\r\n <svg [ngClass]=\"sortColumName === 'totalEarnings' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalEarnings' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('bcCredit')\">BC Credit\r\n <svg [ngClass]=\"sortColumName === 'bcCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'bcCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('acCredit')\">AC Credit\r\n <svg [ngClass]=\"sortColumName === 'acCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'acCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyMinimumTarget')\">Deduction by Minimum\r\n Target\r\n <svg [ngClass]=\"sortColumName === 'deductionbyMinimumTarget' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyMinimumTarget' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyMapping')\">Deduction by Mapping\r\n <svg [ngClass]=\"sortColumName === 'deductionbyMapping' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyMapping' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('deductionbyLateLogin')\">Deduction by Late Login\r\n <svg [ngClass]=\"sortColumName === 'deductionbyLateLogin' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'deductionbyLateLogin' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalReducedAmount')\">Total Reduced Amount\r\n <svg [ngClass]=\"sortColumName === 'totalReducedAmount' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalReducedAmount' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th class=\"cursor-pointer\" (click)=\"onSort('totalCredit')\">Total Credit\r\n <svg [ngClass]=\"sortColumName === 'totalCredit' && sortBy === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'totalCredit' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-semibold\">\r\n <ng-container *ngFor=\"let user of userList;let i=index;\">\r\n <tr>\r\n <td>{{user?.userName ? user?.userName : '--'}}</td>\r\n <td>{{user?.fileDateFrom ? user?.fileDateFrom : '--'}}</td>\r\n <td>{{user?.fileDateTo ? user?.fileDateTo : '--'}}</td>\r\n <td>{{user?.noOfDays ? user?.noOfDays : 0}}</td>\r\n <td>{{user?.totalFiles ?? '--'}}</td>\r\n <td>{{user?.totalBC ?? '--'}}</td>\r\n <td>{{user?.totalAC ?? '--'}}</td>\r\n <td>{{user?.totalEarnings ? user?.totalEarnings.toFixed(2) : 0}}</td>\r\n <td>{{user.bcCredit ? user.bcCredit.toFixed(2) : 0}}</td>\r\n <td>{{user?.acCredit ? user?.acCredit.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyMinimumTarget ? user?.deductionbyMinimumTarget.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyMapping ? user?.deductionbyMapping.toFixed(2) : 0}}</td>\r\n <td>{{user?.deductionbyLateLogin ? user?.deductionbyLateLogin.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalReducedAmount ? user?.totalReducedAmount.toFixed(2) : 0}}</td>\r\n <td>{{user?.totalCredit ? user?.totalCredit.toFixed(2) : 0}}</td>\r\n <td>\r\n <div class=\"d-flex\">\r\n <span class=\"cursor-pointer\" (click)=\"Viewusers('view',user)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\"\r\n viewBox=\"0 0 21 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1995_16400)\">\r\n <path\r\n d=\"M1.33325 10C1.33325 10 4.66658 3.33337 10.4999 3.33337C16.3333 3.33337 19.6666 10 19.6666 10C19.6666 10 16.3333 16.6667 10.4999 16.6667C4.66658 16.6667 1.33325 10 1.33325 10Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n <path\r\n d=\"M10.4999 12.5C11.8806 12.5 12.9999 11.3808 12.9999 10C12.9999 8.61933 11.8806 7.50004 10.4999 7.50004C9.11921 7.50004 7.99992 8.61933 7.99992 10C7.99992 11.3808 9.11921 12.5 10.4999 12.5Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1995_16400\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!loading && !noData\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <lib-pagination *ngIf=\"userList.length!==0\" [itemsPerPage]=\"pagination.limit\" [currentPage]=\"pagination.offset\"\r\n [totalItems]=\"pagination.totalCount\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"paginationSize()\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n <div *ngIf=\"loading\" class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"row\">\r\n <!-- <div class=\"row\"> -->\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-nodata\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodata-title\">No data found</div>\r\n <div class=\"nodata-sub\">There is no result for this Date</div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n</div>\r\n<div *ngIf=\"viewuser\">\r\n <lib-audit-user-list (dataEmitter)=\"receivedData($event)\" [viewuser]=\"viewuser\"\r\n [userDetails]=\"userDetails\"></lib-audit-user-list>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { UserTableComponent } from './components/tango-manage-users/user-table/user-table.component';\r\nimport { BrandUserComponent } from './components/tango-manage-users/brand-user/brand-user.component';\r\nimport { UsersManageComponent } from './components-v2/users-manage/users-manage.component';\r\nimport { TeamsCreationComponent } from './components-v2/teams-creation/teams-creation.component';\r\nimport { AuditUserEarningsComponent } from './components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component';\r\n\r\nconst routes: Routes = [\r\n // {\r\n // path:'client',\r\n // component:BrandUserComponent\r\n // },\r\n {\r\n path: 'tango',\r\n component: UserTableComponent,\r\n },\r\n {\r\n path: 'tango/audit',\r\n component: AuditUserEarningsComponent\r\n },\r\n {\r\n path: 'client',\r\n component: UsersManageComponent\r\n },\r\n {\r\n path: 'teams',\r\n component: TeamsCreationComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TangoManageUsersRoutingModule { }\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { PageInfoService,GlobalStateService } from \"tango-app-ui-global\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n@Component({\r\n selector: \"lib-tango-manage-users\",\r\n templateUrl: \"./tango-manage-users.component.html\",\r\n styleUrl: \"./tango-manage-users.component.scss\",\r\n})\r\nexport class TangoManageUsersComponent implements OnInit,OnDestroy {\r\n receivedData: any = \"\";\r\n userData: string;\r\n roles: any[] = [];\r\n rolesCount: number;\r\n $headerFilters: any;\r\n userType: string;\r\n USER: any;\r\n setTab: string;\r\n private readonly destroy$ = new Subject();\r\n \r\n constructor(\r\n private pageInfo: PageInfoService,\r\n private userService: UserService,\r\n private cd: ChangeDetectorRef,\r\n private gs: GlobalStateService,private route: ActivatedRoute\r\n ) {\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (data: any) => {\r\n let user: any = JSON.parse(localStorage.getItem('user-info') || '');\r\n if(user && user.userType) {\r\n this.USER = user;\r\n }\r\n this.userType = this.USER.userType ? this.USER.userType : 'client';\r\n this.route?.queryParams\r\n ?.pipe(takeUntil(this.destroy$))\r\n .subscribe((params) => {\r\n if (params.type === \"client\") this.userData = \"Brand User\";\r\n else\r\n this.userData = this.setTab\r\n ? this.setTab\r\n : this.userType == \"client\"\r\n ? \"Brand User\"\r\n : \"Tango User\";\r\n });\r\n this.setTab = this.userData;\r\n this.$headerFilters = data;\r\n this.getRoles();\r\n this.userService.dataSubject.next(this.userData);\r\n },\r\n });\r\n }\r\n \r\n ngOnInit(): void {\r\n this.userService?.rolesComms?.subscribe(value => {\r\n this.receivedData = value?.receivedData\r\n });\r\n this.userService.dataSubject.pipe(takeUntil(this.destroy$)).subscribe(()=>{\r\n this.getRoles();\r\n })\r\n this.setPageData();\r\n this.receivedData = \"\";\r\n }\r\n\r\n receiveData(data: string) {\r\n this.receivedData = data;\r\n this.userService.dataSubject.next(this.userData);\r\n }\r\n\r\n userValue(e: any) {\r\n this.userData = e.target.innerHTML;\r\n this.setTab = this.userData;\r\n this.userType = this.userData == \"Brand User\" ? \"client\" : \"tango\";\r\n \r\n // this.userType = this.userData == \"Tango User\" ? \"tango\" : \"client\";\r\n this.getRoles();\r\n this.userService.dataSubject.next(this.userData);\r\n this.receivedData = \"\";\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle(\"Users\");\r\n this.pageInfo.setDescription(\"Onboard your team and help them visualize their stores performance\");\r\n let breadcrumbs : any[]=[];\r\n if (this.gs.userAccess.value?.userType === \"tango\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/brands\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n } else if (this.gs.userAccess.value?.userType === \"client\") {\r\n breadcrumbs= [\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: false,\r\n },\r\n {\r\n title: \"Manage\",\r\n path: \"/manage/summary\",\r\n isActive: false,\r\n isSeparator: true,\r\n },\r\n ];\r\n }\r\n this.pageInfo.setBreadcrumbs(breadcrumbs);\r\n }\r\n\r\n getRoles() {\r\n \r\n let data \r\n\r\n if(this.userType === 'tango'){\r\n data = { \r\n userType: this.userType\r\n }\r\n }\r\n\r\n if(this.userType === 'client'){\r\n data = { \r\n userType: this.userType,\r\n clientId: this.$headerFilters?.client\r\n }\r\n }\r\n this.userService.getRoles(data).pipe(takeUntil(this.destroy$)).subscribe({\r\n next: (res: any) => {\r\n if (res && res.code == 200) {\r\n this.roles = res.data.result;\r\n this.rolesCount = res.data.count;\r\n } else {\r\n this.roles = [];\r\n }\r\n this.cd.detectChanges();\r\n },\r\n error: () => {\r\n this.roles = [];\r\n this.cd.detectChanges();\r\n },\r\n complete: () => {},\r\n });\r\n }\r\n\r\n // userDetials(role: any) {\r\n // this.userService.rolesComms.next(role);\r\n // this.receivedData = \"Role Value\";\r\n // }\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<!-- Users subhead start -->\r\n<div class=\"card mb-5\">\r\n @if (USER?.userType==='tango') {\r\n <div class=\"card-body pt-2 pb-1\">\r\n <div class=\"d-flex overflow-auto mb-2\">\r\n <ul \r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li (click)=\"userValue('Brand User')\" class=\"nav-item\" [routerLink]=\"['/manage/users']\" [queryParams]=\"{ type: 'client' }\">\r\n <a [ngClass]=\"userData ==='Brand User' ? 'active' :''\"\r\n class=\"nav-link text-active-primary cursor-pointer me-6\">Brand User</a>\r\n </li>\r\n <li (click)=\"userValue('Tango User')\" class=\"nav-item\" [routerLink]=\"['/manage/users']\" [queryParams]=\"{ type: 'tango' }\">\r\n <a [ngClass]=\"userData ==='Tango User' ? 'active' :''\"\r\n class=\"nav-link text-active-primary cursor-pointer no-border me-6 \">Tango User</a>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n<!-- Users subhead end -->\r\n<!-- *ngIf=\"userdata =='Tango User'\" -->\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData !=='Role Value' && (userData ==='Tango User' || userData ==='Brand User')\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <!-- (dataTouserlist)=\"receiveData($event)\" -->\r\n <lib-user-table *ngIf=\"userData ==='Tango User'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 mb-5 mb-xl-1\"></lib-user-table>\r\n <lib-brand-user *ngIf=\"userData ==='Brand User'\" class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 mb-5 mb-xl-1\"></lib-brand-user>\r\n\r\n </div>\r\n <!-- <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12 my-3\">\r\n <div class=\"card p-5\">\r\n <div class=\"border-0\">\r\n <h3 class=\"title fw-bold\">Roles & Permission</h3>\r\n <h6 class=\"sub-title fw-normal\">{{rolesCount || 0}} total roles</h6>\r\n </div>\r\n <div class=\"card-body px-0\">\r\n <div class=\"flex-column align-items-start\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 border-val mx-3 mb-7 py-7\" *ngFor=\"let obj of roles;let i=index\">\r\n <a class=\"role-title my-2 cursor-pointer\" (click)=\"userDetials(obj)\">{{obj.roleName |\r\n titlecase}}</a>\r\n <div *ngIf=\"obj.roleName ==='superadmin'\" class=\"sub-title fw-semibold my-5\">Oversees all the operations and controls the entire functionality of the dashboard</div>\r\n <div *ngIf=\"obj.roleName ==='admin'\" class=\"sub-title fw-semibold my-5\">Manages specific operations, permissions, and can change setting for assigned locations</div>\r\n <div *ngIf=\"obj.roleName ==='user'\" class=\"sub-title fw-semibold my-5\">Access to specific location and will be able to view dashboard</div>\r\n <div><span class=\"me-5\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"25\" height=\"24\"\r\n viewBox=\"0 0 25 24\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_1973_14308)\">\r\n <path\r\n d=\"M17.5 21V19C17.5 17.9391 17.0786 16.9217 16.3284 16.1716C15.5783 15.4214 14.5609 15 13.5 15H5.5C4.43913 15 3.42172 15.4214 2.67157 16.1716C1.92143 16.9217 1.5 17.9391 1.5 19V21M23.5 21V19C23.4993 18.1137 23.2044 17.2528 22.6614 16.5523C22.1184 15.8519 21.3581 15.3516 20.5 15.13M16.5 3.13C17.3604 3.3503 18.123 3.8507 18.6676 4.55231C19.2122 5.25392 19.5078 6.11683 19.5078 7.005C19.5078 7.89317 19.2122 8.75608 18.6676 9.45769C18.123 10.1593 17.3604 10.6597 16.5 10.88M13.5 7C13.5 9.20914 11.7091 11 9.5 11C7.29086 11 5.5 9.20914 5.5 7C5.5 4.79086 7.29086 3 9.5 3C11.7091 3 13.5 4.79086 13.5 7Z\"\r\n stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_1973_14308\">\r\n <rect width=\"24\" height=\"24\" fill=\"white\" transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg></span>\r\n <span class=\"uses-list fw-semibold\">{{obj?.count || 0}} Members</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<!--begin::Row-->\r\n<div *ngIf=\"receivedData ==='Role Value'\" class=\"row gx-5 gx-xl-10\">\r\n <!--begin::Col-->\r\n <div class=\"col-xxl-12 col-md-12 col-xl-12 col-lg-12\">\r\n <lib-roles-permission-table (dataEvent)=\"receiveData($event)\"></lib-roles-permission-table>\r\n </div>\r\n <!--end::Col-->\r\n</div>\r\n<!--end::Row-->\r\n\r\n<!-- <div *ngFor=\"let obj of values\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"obj.value\">\r\n </div> -->","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TangoManageUsersRoutingModule } from './tango-manage-users-routing.module';\r\nimport { TangoManageUsersComponent } from './components/tango-manage-users/tango-manage-users.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\nimport { UserTableComponent } from './components/tango-manage-users/user-table/user-table.component';\r\nimport { RolesPermissionTableComponent } from './components/tango-manage-users/roles-permission-table/roles-permission-table.component';\r\nimport { AddUserPopupComponent } from './components/tango-manage-users/add-user-popup/add-user-popup.component';\r\nimport { NgbAccordionModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { AssignStorePopupComponent } from './components/tango-manage-users/assign-store-popup/assign-store-popup.component';\r\nimport { BrandUserComponent } from './components/tango-manage-users/brand-user/brand-user.component';\r\nimport { AlertPopupComponent } from './components/tango-manage-users/user-table/alert-popup/alert-popup.component';\r\nimport { AddUsersComponent } from './components-v2/add-users/add-users.component';\r\nimport { UsersListComponent } from './components-v2/users-list/users-list.component';\r\nimport { TeamsListComponent } from './components-v2/teams-list/teams-list.component';\r\nimport { TeamsCreationComponent } from './components-v2/teams-creation/teams-creation.component';\r\nimport { UsersManageComponent } from './components-v2/users-manage/users-manage.component';\r\nimport { CustomSelectComponent } from './components-v2/custom-select/custom-select.component';\r\nimport { ViewteamsListComponent } from './components-v2/viewteams-list/viewteams-list.component';\r\nimport { ActionPopupComponent } from './components-v2/action-popup/action-popup.component';\r\nimport { GroupSelectComponent } from './components/tango-manage-users/group-select/group-select.component';\r\nimport { AuditUserEarningsComponent } from './components/tango-manage-users/audit-user/audit-user-earnings/audit-user-earnings.component';\r\nimport { AuditUserListComponent } from './components/tango-manage-users/audit-user/audit-user-list/audit-user-list.component';\r\nimport { ChipSelectComponent } from './components-v2/chip-select/chip-select.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TangoManageUsersComponent,\r\n UserTableComponent,\r\n RolesPermissionTableComponent,\r\n AddUserPopupComponent,\r\n AssignStorePopupComponent,\r\n BrandUserComponent,\r\n AlertPopupComponent,\r\n AddUsersComponent,\r\n UsersListComponent,\r\n TeamsListComponent,\r\n TeamsCreationComponent,\r\n UsersManageComponent,\r\n CustomSelectComponent,\r\n ViewteamsListComponent,\r\n ActionPopupComponent,\r\n GroupSelectComponent,\r\n AuditUserEarningsComponent,\r\n AuditUserListComponent,\r\n ChipSelectComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TangoManageUsersRoutingModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxPaginationModule,\r\n NgbAccordionModule,\r\n CommonSharedModule,\r\n NgbTooltipModule\r\n ],\r\n})\r\nexport class TangoManageUsersModule { }\r\n","/*\r\n * Public API Surface of tango-manage-users\r\n */\r\n\r\nexport * from './lib/tango-manage-users.module';\r\n\r\nexport * from './lib/components/tango-manage-users/tango-manage-users.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.ManageUsersService","i5","i1.ManageUsersService","i2","i3","SECRET_KEY","i4.UserService","i6","i7","i8.CustomSelectComponent","i3.UserService","i1.UserService","i4","i5.GroupSelectComponent","i3.ExcelService","i5.UserService","i8","i4.ManageUsersService","i9.ChipSelectComponent","i2.UserService","i9.RolesPermissionTableComponent","i6.BrandUserComponent","i2.ExcelService","i9.ViewteamsListComponent","i4.UsersListComponent","i5.TeamsListComponent","i5.ExcelService","i9.AuditUserListComponent","i5.UserTableComponent","i6.RolesPermissionTableComponent","i7.BrandUserComponent"],"mappings":"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"}
|