@arthakosh/chat-widget 0.3.14 → 0.3.15

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.
@@ -2,20 +2,14 @@ import { Component, computed, inject } from '@angular/core';
2
2
  import { ChatService } from "../core/services/chat.service";
3
3
  import { CommonModule } from "@angular/common";
4
4
  import { FormsModule } from "@angular/forms";
5
- import { SocketService } from "../core/services/socket.service";
6
5
  import * as i0 from "@angular/core";
7
6
  export class ChatWidgetNotificationComponent {
8
7
  constructor() {
9
8
  this.open = false;
10
9
  this.chatService = inject(ChatService);
11
- this.socketService = inject(SocketService);
10
+ this.notifications = this.chatService.notifications;
12
11
  this.hasNew = this.chatService.hasNewNotification;
13
- this.totalCount = computed(() => this.chatService.notifications().reduce((a, b) => a + b.unreadCount, 0));
14
- }
15
- ngOnInit() {
16
- this.socketService.connect();
17
- this.socketService.joinUserChannel(this.chatService.currentUser().userId);
18
- this.chatService.hydrateNotifications(this.chatService.currentUser().userId);
12
+ this.totalCount = computed(() => this.notifications().reduce((a, b) => a + b.unreadCount, 0));
19
13
  }
20
14
  toggle() {
21
15
  this.open = !this.open;
@@ -26,13 +20,13 @@ export class ChatWidgetNotificationComponent {
26
20
  this.open = false;
27
21
  }
28
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatWidgetNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ChatWidgetNotificationComponent, isStandalone: true, selector: "chat-widget-notification", ngImport: i0, template: "<div (click)=\"toggle()\" class=\"notif-icon\">\r\n <i class=\"pi pi-bell\" [class.pulse]=\"hasNew()\"></i>\r\n\r\n @if (totalCount() > 0) {\r\n <span class=\"dot\"></span>\r\n <span class=\"badge\">{{ totalCount() }}</span>\r\n }\r\n</div>\r\n\r\n@if (open) {\r\n <div class=\"notif-panel\">\r\n<!-- <div class=\"notif-header\">Notifications</div>-->\r\n\r\n <div class=\"notif-list\">\r\n @for (n of chatService?.notifications(); track n.roomId) {\r\n <div class=\"notif-item\" (click)=\"openRoom(n)\">\r\n <div class=\"notif-left\">\r\n <i class=\"pi pi-comments\"></i>\r\n </div>\r\n\r\n <div class=\"notif-body\">\r\n <div class=\"notif-title\">{{ n.roomName }}</div>\r\n <div class=\"notif-text\">\r\n {{ n.lastMessage || 'You were added to this room' }}\r\n </div>\r\n </div>\r\n\r\n <span class=\"count\">{{ n.unreadCount }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n", styles: [".notif-icon{position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center}.notif-icon i{font-size:1.4rem;color:#444}.pulse{animation:pulse 1.2s ease-out}@keyframes pulse{0%{transform:scale(1)}40%{transform:scale(1.2)}to{transform:scale(1)}}.dot{position:absolute;top:2px;right:4px;width:8px;height:8px;background:#e53935;border-radius:50%}.badge{position:absolute;top:-6px;right:-10px;background:#e53935;color:#fff;font-size:.65rem;min-width:18px;height:18px;padding:0 5px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600}.notif-panel{position:absolute;top:42px;right:0;width:320px;background:#fff;border-radius:8px;box-shadow:0 12px 28px #00000026;z-index:9999;overflow:hidden;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.notif-header{padding:12px 16px;font-weight:600;font-size:.9rem;border-bottom:1px solid #eee}.notif-list{max-height:360px;overflow-y:auto}.notif-item{display:flex;align-items:center;padding:12px 14px;cursor:pointer;transition:background .15s ease}.notif-item:hover{background:#f5f7fa}.notif-left{width:36px;height:36px;border-radius:50%;background:#e3f2fd;color:#1976d2;display:flex;align-items:center;justify-content:center;margin-right:12px}.notif-body{flex:1;min-width:0}.notif-title{font-size:.85rem;font-weight:600;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notif-text{font-size:.75rem;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.count{background:#1976d2;color:#fff;font-size:.65rem;min-width:20px;height:20px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600}.notif-item{background:#f0f6ff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }] }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ChatWidgetNotificationComponent, isStandalone: true, selector: "chat-widget-notification", ngImport: i0, template: "<div (click)=\"toggle()\" class=\"notif-icon\">\r\n <i class=\"pi pi-bell\" [class.pulse]=\"hasNew()\"></i>\r\n\r\n @if (totalCount() > 0) {\r\n <span class=\"dot\"></span>\r\n <span class=\"badge\">{{ totalCount() }}</span>\r\n }\r\n</div>\r\n\r\n@if (open) {\r\n <div class=\"notif-panel\">\r\n<!-- <div class=\"notif-header\">Notifications</div>-->\r\n\r\n <div class=\"notif-list\">\r\n @for (n of notifications(); track n.roomId) {\r\n <div class=\"notif-item\" (click)=\"openRoom(n)\">\r\n <div class=\"notif-left\">\r\n <i class=\"pi pi-comments\"></i>\r\n </div>\r\n\r\n <div class=\"notif-body\">\r\n <div class=\"notif-title\">{{ n.roomName }}</div>\r\n <div class=\"notif-text\">\r\n {{ n.lastMessage || 'You were added to this room' }}\r\n </div>\r\n </div>\r\n\r\n <span class=\"count\">{{ n.unreadCount }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n", styles: [".notif-icon{position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center}.notif-icon i{font-size:1.4rem;color:#444}.pulse{animation:pulse 1.2s ease-out}@keyframes pulse{0%{transform:scale(1)}40%{transform:scale(1.2)}to{transform:scale(1)}}.dot{position:absolute;top:2px;right:4px;width:8px;height:8px;background:#e53935;border-radius:50%}.badge{position:absolute;top:-6px;right:-10px;background:#e53935;color:#fff;font-size:.65rem;min-width:18px;height:18px;padding:0 5px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600}.notif-panel{position:absolute;top:42px;right:0;width:320px;background:#fff;border-radius:8px;box-shadow:0 12px 28px #00000026;z-index:9999;overflow:hidden;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.notif-header{padding:12px 16px;font-weight:600;font-size:.9rem;border-bottom:1px solid #eee}.notif-list{max-height:360px;overflow-y:auto}.notif-item{display:flex;align-items:center;padding:12px 14px;cursor:pointer;transition:background .15s ease}.notif-item:hover{background:#f5f7fa}.notif-left{width:36px;height:36px;border-radius:50%;background:#e3f2fd;color:#1976d2;display:flex;align-items:center;justify-content:center;margin-right:12px}.notif-body{flex:1;min-width:0}.notif-title{font-size:.85rem;font-weight:600;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notif-text{font-size:.75rem;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.count{background:#1976d2;color:#fff;font-size:.65rem;min-width:20px;height:20px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600}.notif-item{background:#f0f6ff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }] }); }
30
24
  }
31
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatWidgetNotificationComponent, decorators: [{
32
26
  type: Component,
33
27
  args: [{ selector: 'chat-widget-notification', standalone: true, imports: [
34
28
  CommonModule,
35
29
  FormsModule
36
- ], template: "<div (click)=\"toggle()\" class=\"notif-icon\">\r\n <i class=\"pi pi-bell\" [class.pulse]=\"hasNew()\"></i>\r\n\r\n @if (totalCount() > 0) {\r\n <span class=\"dot\"></span>\r\n <span class=\"badge\">{{ totalCount() }}</span>\r\n }\r\n</div>\r\n\r\n@if (open) {\r\n <div class=\"notif-panel\">\r\n<!-- <div class=\"notif-header\">Notifications</div>-->\r\n\r\n <div class=\"notif-list\">\r\n @for (n of chatService?.notifications(); track n.roomId) {\r\n <div class=\"notif-item\" (click)=\"openRoom(n)\">\r\n <div class=\"notif-left\">\r\n <i class=\"pi pi-comments\"></i>\r\n </div>\r\n\r\n <div class=\"notif-body\">\r\n <div class=\"notif-title\">{{ n.roomName }}</div>\r\n <div class=\"notif-text\">\r\n {{ n.lastMessage || 'You were added to this room' }}\r\n </div>\r\n </div>\r\n\r\n <span class=\"count\">{{ n.unreadCount }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n", styles: [".notif-icon{position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center}.notif-icon i{font-size:1.4rem;color:#444}.pulse{animation:pulse 1.2s ease-out}@keyframes pulse{0%{transform:scale(1)}40%{transform:scale(1.2)}to{transform:scale(1)}}.dot{position:absolute;top:2px;right:4px;width:8px;height:8px;background:#e53935;border-radius:50%}.badge{position:absolute;top:-6px;right:-10px;background:#e53935;color:#fff;font-size:.65rem;min-width:18px;height:18px;padding:0 5px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600}.notif-panel{position:absolute;top:42px;right:0;width:320px;background:#fff;border-radius:8px;box-shadow:0 12px 28px #00000026;z-index:9999;overflow:hidden;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.notif-header{padding:12px 16px;font-weight:600;font-size:.9rem;border-bottom:1px solid #eee}.notif-list{max-height:360px;overflow-y:auto}.notif-item{display:flex;align-items:center;padding:12px 14px;cursor:pointer;transition:background .15s ease}.notif-item:hover{background:#f5f7fa}.notif-left{width:36px;height:36px;border-radius:50%;background:#e3f2fd;color:#1976d2;display:flex;align-items:center;justify-content:center;margin-right:12px}.notif-body{flex:1;min-width:0}.notif-title{font-size:.85rem;font-weight:600;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notif-text{font-size:.75rem;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.count{background:#1976d2;color:#fff;font-size:.65rem;min-width:20px;height:20px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600}.notif-item{background:#f0f6ff}\n"] }]
30
+ ], template: "<div (click)=\"toggle()\" class=\"notif-icon\">\r\n <i class=\"pi pi-bell\" [class.pulse]=\"hasNew()\"></i>\r\n\r\n @if (totalCount() > 0) {\r\n <span class=\"dot\"></span>\r\n <span class=\"badge\">{{ totalCount() }}</span>\r\n }\r\n</div>\r\n\r\n@if (open) {\r\n <div class=\"notif-panel\">\r\n<!-- <div class=\"notif-header\">Notifications</div>-->\r\n\r\n <div class=\"notif-list\">\r\n @for (n of notifications(); track n.roomId) {\r\n <div class=\"notif-item\" (click)=\"openRoom(n)\">\r\n <div class=\"notif-left\">\r\n <i class=\"pi pi-comments\"></i>\r\n </div>\r\n\r\n <div class=\"notif-body\">\r\n <div class=\"notif-title\">{{ n.roomName }}</div>\r\n <div class=\"notif-text\">\r\n {{ n.lastMessage || 'You were added to this room' }}\r\n </div>\r\n </div>\r\n\r\n <span class=\"count\">{{ n.unreadCount }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n", styles: [".notif-icon{position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center}.notif-icon i{font-size:1.4rem;color:#444}.pulse{animation:pulse 1.2s ease-out}@keyframes pulse{0%{transform:scale(1)}40%{transform:scale(1.2)}to{transform:scale(1)}}.dot{position:absolute;top:2px;right:4px;width:8px;height:8px;background:#e53935;border-radius:50%}.badge{position:absolute;top:-6px;right:-10px;background:#e53935;color:#fff;font-size:.65rem;min-width:18px;height:18px;padding:0 5px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600}.notif-panel{position:absolute;top:42px;right:0;width:320px;background:#fff;border-radius:8px;box-shadow:0 12px 28px #00000026;z-index:9999;overflow:hidden;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.notif-header{padding:12px 16px;font-weight:600;font-size:.9rem;border-bottom:1px solid #eee}.notif-list{max-height:360px;overflow-y:auto}.notif-item{display:flex;align-items:center;padding:12px 14px;cursor:pointer;transition:background .15s ease}.notif-item:hover{background:#f5f7fa}.notif-left{width:36px;height:36px;border-radius:50%;background:#e3f2fd;color:#1976d2;display:flex;align-items:center;justify-content:center;margin-right:12px}.notif-body{flex:1;min-width:0}.notif-title{font-size:.85rem;font-weight:600;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notif-text{font-size:.75rem;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.count{background:#1976d2;color:#fff;font-size:.65rem;min-width:20px;height:20px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:600}.notif-item{background:#f0f6ff}\n"] }]
37
31
  }], ctorParameters: () => [] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtd2lkZ2V0L3NyYy9saWIvY2hhdC13aWRnZXQtbm90aWZpY2F0aW9uL2NoYXQtd2lkZ2V0LW5vdGlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NoYXQtd2lkZ2V0LW5vdGlmaWNhdGlvbi9jaGF0LXdpZGdldC1ub3RpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFZOUQsTUFBTSxPQUFPLCtCQUErQjtJQVd4QztRQVZBLFNBQUksR0FBRyxLQUFLLENBQUM7UUFFYixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxXQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztRQUU3QyxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FDdEcsQ0FBQztJQUVhLENBQUM7SUFFaEIsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUSxDQUFDLENBQW1CO1FBQ3hCLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQzsrR0EzQlEsK0JBQStCO21HQUEvQiwrQkFBK0Isb0ZDakI1QyxxckNBaUNBLDR4RER0Qk0sWUFBWSw4QkFDWixXQUFXOzs0RkFLSiwrQkFBK0I7a0JBVjNDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7cUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q2hhdFNlcnZpY2V9IGZyb20gXCIuLi9jb3JlL3NlcnZpY2VzL2NoYXQuc2VydmljZVwiO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtDaGF0Tm90aWZpY2F0aW9ufSBmcm9tIFwiLi4vY29yZS9tb2RlbHMvbm90aWZpY2F0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7U29ja2V0U2VydmljZX0gZnJvbSBcIi4uL2NvcmUvc2VydmljZXMvc29ja2V0LnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2hhdC13aWRnZXQtbm90aWZpY2F0aW9uJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtd2lkZ2V0LW5vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NoYXQtd2lkZ2V0LW5vdGlmaWNhdGlvbi5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhdFdpZGdldE5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XHJcbiAgICBvcGVuID0gZmFsc2U7XHJcblxyXG4gICAgY2hhdFNlcnZpY2UgPSBpbmplY3QoQ2hhdFNlcnZpY2UpO1xyXG4gICAgc29ja2V0U2VydmljZSA9IGluamVjdChTb2NrZXRTZXJ2aWNlKTtcclxuICAgIGhhc05ldyA9IHRoaXMuY2hhdFNlcnZpY2UuaGFzTmV3Tm90aWZpY2F0aW9uO1xyXG5cclxuICAgIHRvdGFsQ291bnQgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2Uubm90aWZpY2F0aW9ucygpLnJlZHVjZSgoYTogYW55LCBiOiB7IHVucmVhZENvdW50OiBhbnk7IH0pID0+IGEgKyBiLnVucmVhZENvdW50LCAwKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zb2NrZXRTZXJ2aWNlLmNvbm5lY3QoKTtcclxuICAgICAgICB0aGlzLnNvY2tldFNlcnZpY2Uuam9pblVzZXJDaGFubmVsKHRoaXMuY2hhdFNlcnZpY2UuY3VycmVudFVzZXIoKS51c2VySWQpO1xyXG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuaHlkcmF0ZU5vdGlmaWNhdGlvbnModGhpcy5jaGF0U2VydmljZS5jdXJyZW50VXNlcigpLnVzZXJJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlKCkge1xyXG4gICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblJvb20objogQ2hhdE5vdGlmaWNhdGlvbikge1xyXG4gICAgICAgIC8vIHRoaXMuY2hhdExhdW5jaGVyLm9wZW5Sb29tKG4ucm9vbUlkKTtcclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmNsZWFyUm9vbShuLnJvb21JZCk7XHJcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiAoY2xpY2spPVwidG9nZ2xlKClcIiBjbGFzcz1cIm5vdGlmLWljb25cIj5cclxuICAgIDxpIGNsYXNzPVwicGkgcGktYmVsbFwiIFtjbGFzcy5wdWxzZV09XCJoYXNOZXcoKVwiPjwvaT5cclxuXHJcbiAgICBAaWYgKHRvdGFsQ291bnQoKSA+IDApIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCI+e3sgdG90YWxDb3VudCgpIH19PC9zcGFuPlxyXG4gICAgfVxyXG48L2Rpdj5cclxuXHJcbkBpZiAob3Blbikge1xyXG4gICAgPGRpdiBjbGFzcz1cIm5vdGlmLXBhbmVsXCI+XHJcbjwhLS0gICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZi1oZWFkZXJcIj5Ob3RpZmljYXRpb25zPC9kaXY+LS0+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZi1saXN0XCI+XHJcbiAgICAgICAgICAgIEBmb3IgKG4gb2YgY2hhdFNlcnZpY2U/Lm5vdGlmaWNhdGlvbnMoKTsgdHJhY2sgbi5yb29tSWQpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZi1pdGVtXCIgKGNsaWNrKT1cIm9wZW5Sb29tKG4pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1jb21tZW50c1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmLXRpdGxlXCI+e3sgbi5yb29tTmFtZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWYtdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbi5sYXN0TWVzc2FnZSB8fCAnWW91IHdlcmUgYWRkZWQgdG8gdGhpcyByb29tJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudFwiPnt7IG4udW5yZWFkQ291bnQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbn1cclxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtd2lkZ2V0L3NyYy9saWIvY2hhdC13aWRnZXQtbm90aWZpY2F0aW9uL2NoYXQtd2lkZ2V0LW5vdGlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NoYXQtd2lkZ2V0LW5vdGlmaWNhdGlvbi9jaGF0LXdpZGdldC1ub3RpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQWEzQyxNQUFNLE9BQU8sK0JBQStCO0lBV3hDO1FBVkEsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUViLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDL0MsV0FBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7UUFFN0MsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDdkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FDMUYsQ0FBQztJQUlDLENBQUM7SUFFSixNQUFNO1FBQ0YsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFtQjtRQUN4Qix3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7K0dBdkJRLCtCQUErQjttR0FBL0IsK0JBQStCLG9GQ2hCNUMsd3FDQWlDQSw0eEREdkJNLFlBQVksOEJBQ1osV0FBVzs7NEZBS0osK0JBQStCO2tCQVYzQyxTQUFTOytCQUNFLDBCQUEwQixjQUN4QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3FCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NoYXRTZXJ2aWNlfSBmcm9tIFwiLi4vY29yZS9zZXJ2aWNlcy9jaGF0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7Q2hhdE5vdGlmaWNhdGlvbn0gZnJvbSBcIi4uL2NvcmUvbW9kZWxzL25vdGlmaWNhdGlvbi5tb2RlbFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjaGF0LXdpZGdldC1ub3RpZmljYXRpb24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgIEZvcm1zTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhdC13aWRnZXQtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY2hhdC13aWRnZXQtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGF0V2lkZ2V0Tm90aWZpY2F0aW9uQ29tcG9uZW50IHtcclxuICAgIG9wZW4gPSBmYWxzZTtcclxuXHJcbiAgICBjaGF0U2VydmljZSA9IGluamVjdChDaGF0U2VydmljZSk7XHJcbiAgICBub3RpZmljYXRpb25zID0gdGhpcy5jaGF0U2VydmljZS5ub3RpZmljYXRpb25zO1xyXG4gICAgaGFzTmV3ID0gdGhpcy5jaGF0U2VydmljZS5oYXNOZXdOb3RpZmljYXRpb247XHJcblxyXG4gICAgdG90YWxDb3VudCA9IGNvbXB1dGVkKCgpID0+XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zKCkucmVkdWNlKChhOiBhbnksIGI6IHsgdW5yZWFkQ291bnQ6IGFueTsgfSkgPT4gYSArIGIudW5yZWFkQ291bnQsIDApXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG5cclxuICAgICkge31cclxuXHJcbiAgICB0b2dnbGUoKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUm9vbShuOiBDaGF0Tm90aWZpY2F0aW9uKSB7XHJcbiAgICAgICAgLy8gdGhpcy5jaGF0TGF1bmNoZXIub3BlblJvb20obi5yb29tSWQpO1xyXG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuY2xlYXJSb29tKG4ucm9vbUlkKTtcclxuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IChjbGljayk9XCJ0b2dnbGUoKVwiIGNsYXNzPVwibm90aWYtaWNvblwiPlxyXG4gICAgPGkgY2xhc3M9XCJwaSBwaS1iZWxsXCIgW2NsYXNzLnB1bHNlXT1cImhhc05ldygpXCI+PC9pPlxyXG5cclxuICAgIEBpZiAodG90YWxDb3VudCgpID4gMCkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIj57eyB0b3RhbENvdW50KCkgfX08L3NwYW4+XHJcbiAgICB9XHJcbjwvZGl2PlxyXG5cclxuQGlmIChvcGVuKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aWYtcGFuZWxcIj5cclxuPCEtLSAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmLWhlYWRlclwiPk5vdGlmaWNhdGlvbnM8L2Rpdj4tLT5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmLWxpc3RcIj5cclxuICAgICAgICAgICAgQGZvciAobiBvZiBub3RpZmljYXRpb25zKCk7IHRyYWNrIG4ucm9vbUlkKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWYtaXRlbVwiIChjbGljayk9XCJvcGVuUm9vbShuKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZi1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY29tbWVudHNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZi1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3RpZi10aXRsZVwiPnt7IG4ucm9vbU5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGlmLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG4ubGFzdE1lc3NhZ2UgfHwgJ1lvdSB3ZXJlIGFkZGVkIHRvIHRoaXMgcm9vbScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRcIj57eyBuLnVucmVhZENvdW50IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG59XHJcbiJdfQ==
@@ -1,9 +1,11 @@
1
- import { Injectable } from "@angular/core";
1
+ import { inject, Injectable } from "@angular/core";
2
+ import { ChatService } from "./core/services/chat.service";
3
+ import { SocketService } from "./core/services/socket.service";
2
4
  import * as i0 from "@angular/core";
3
- import * as i1 from "./core/services/chat.service";
4
5
  export class ChatWidgetService {
5
- constructor(chatService) {
6
- this.chatService = chatService;
6
+ constructor() {
7
+ this.chatService = inject(ChatService);
8
+ this.socketService = inject(SocketService);
7
9
  }
8
10
  initUser(user) {
9
11
  this.chatService.currentUser.set({
@@ -12,11 +14,17 @@ export class ChatWidgetService {
12
14
  name: user.name
13
15
  });
14
16
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatWidgetService, deps: [{ token: i1.ChatService }], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ joinUserChannel(userId) {
18
+ this.socketService.joinUserChannel(userId);
19
+ this.socketService.on('notificationCreated').subscribe(msg => {
20
+ console.log('joinUserChannel', msg);
21
+ });
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
16
24
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatWidgetService, providedIn: 'root' }); }
17
25
  }
18
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatWidgetService, decorators: [{
19
27
  type: Injectable,
20
28
  args: [{ providedIn: 'root' }]
21
- }], ctorParameters: () => [{ type: i1.ChatService }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtd2lkZ2V0L3NyYy9saWIvY2hhdC13aWRnZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFJekMsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFaEQsUUFBUSxDQUFDLElBQWtDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUM3QixNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUM7SUFDUCxDQUFDOytHQVRRLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q2hhdFNlcnZpY2V9IGZyb20gXCIuL2NvcmUvc2VydmljZXMvY2hhdC5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQ2hhdFdpZGdldFNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGF0U2VydmljZTogQ2hhdFNlcnZpY2UpIHt9XHJcblxyXG4gICAgaW5pdFVzZXIodXNlcjogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkge1xyXG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuY3VycmVudFVzZXIuc2V0KHtcclxuICAgICAgICAgICAgcm9vbUlkOiBudWxsLFxyXG4gICAgICAgICAgICB1c2VySWQ6IHVzZXIuaWQsXHJcbiAgICAgICAgICAgIG5hbWU6IHVzZXIubmFtZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
29
+ }], ctorParameters: () => [] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aWRnZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtd2lkZ2V0L3NyYy9saWIvY2hhdC13aWRnZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdDQUFnQyxDQUFDOztBQUk3RCxNQUFNLE9BQU8saUJBQWlCO0lBSzFCO1FBSEEsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFdkIsQ0FBQztJQUVoQixRQUFRLENBQUMsSUFBa0M7UUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQzdCLE1BQU0sRUFBRSxJQUFJO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2xCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBYyxxQkFBcUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0RSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0FwQlEsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FESixNQUFNOzs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0NoYXRTZXJ2aWNlfSBmcm9tIFwiLi9jb3JlL3NlcnZpY2VzL2NoYXQuc2VydmljZVwiO1xyXG5pbXBvcnQge1NvY2tldFNlcnZpY2V9IGZyb20gXCIuL2NvcmUvc2VydmljZXMvc29ja2V0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtDaGF0TWVzc2FnZX0gZnJvbSBcIi4vY29yZS9tb2RlbHMvY2hhdC5tb2RlbHNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBDaGF0V2lkZ2V0U2VydmljZSB7XHJcblxyXG4gICAgY2hhdFNlcnZpY2UgPSBpbmplY3QoQ2hhdFNlcnZpY2UpO1xyXG4gICAgc29ja2V0U2VydmljZSA9IGluamVjdChTb2NrZXRTZXJ2aWNlKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gICAgaW5pdFVzZXIodXNlcjogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkge1xyXG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuY3VycmVudFVzZXIuc2V0KHtcclxuICAgICAgICAgICAgcm9vbUlkOiBudWxsLFxyXG4gICAgICAgICAgICB1c2VySWQ6IHVzZXIuaWQsXHJcbiAgICAgICAgICAgIG5hbWU6IHVzZXIubmFtZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGpvaW5Vc2VyQ2hhbm5lbCh1c2VySWQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuc29ja2V0U2VydmljZS5qb2luVXNlckNoYW5uZWwodXNlcklkKTtcclxuICAgICAgICB0aGlzLnNvY2tldFNlcnZpY2Uub248Q2hhdE1lc3NhZ2U+KCdub3RpZmljYXRpb25DcmVhdGVkJykuc3Vic2NyaWJlKG1zZyA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdqb2luVXNlckNoYW5uZWwnLCBtc2cpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -47,7 +47,6 @@ export class ChatWindowComponent {
47
47
  }
48
48
  ngOnInit() {
49
49
  this.socket.joinRoom(this.chatRoomId);
50
- // this.socket.joinUserChannel(this.chatService.currentUser().userId);
51
50
  this.loadUsers();
52
51
  this.loadMessages();
53
52
  this.listenSocket();
@@ -122,14 +121,6 @@ export class ChatWindowComponent {
122
121
  }).subscribe(() => {
123
122
  this.newMessage = '';
124
123
  this.replyTo = null;
125
- this.getUserNotifications();
126
- });
127
- }
128
- getUserNotifications() {
129
- this.chatService.getAllNotifications(this.chatService.currentUser().userId)
130
- .subscribe((res) => {
131
- console.log('getUserNotifications', res);
132
- this.chatService.notifications.set(res);
133
124
  });
134
125
  }
135
126
  addUserToRoom() {
@@ -157,8 +148,8 @@ export class ChatWindowComponent {
157
148
  return msg.id;
158
149
  }
159
150
  ngOnDestroy() {
160
- // this.socket.offNewMessage();
161
- // this.socket.offMessageSeen();
151
+ this.socket.offNewMessage();
152
+ this.socket.offMessageSeen();
162
153
  this.observer?.disconnect();
163
154
  }
164
155
  ngAfterViewInit() {
@@ -216,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
216
207
  type: ViewChild,
217
208
  args: ['reactionOverlay']
218
209
  }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aW5kb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC13aWRnZXQvc3JjL2xpYi9jaGF0LXdpbmRvdy9jaGF0LXdpbmRvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NoYXQtd2luZG93L2NoYXQtd2luZG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxF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RSxJQUFJO1lBQ2IsYUFBYSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNyQyxDQUFDOytHQS9MUSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw4bkNBRmpCLENBQUMsY0FBYyxDQUFDLHVQQzdDL0IsMHZKQTJGTSwrbUtEM0RFLFlBQVksa1pBQ1osV0FBVyw4bUJBQ1gsV0FBVyx1V0FDWCxZQUFZLDRPQUNaLFlBQVksa09BQ1osYUFBYSxxWEFDYixtQkFBbUIscUtBQ25CLFVBQVUsOEJBQ1YsY0FBYyx1dENBQ2Qsa0JBQWtCOzs0RkFNYixtQkFBbUI7a0JBbkIvQixTQUFTOytCQUNJLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxrQkFBa0I7cUJBQ3JCLGFBR1UsQ0FBQyxjQUFjLENBQUM7d0RBR2xCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFpQnlCLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0EsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGluamVjdCxcclxuICAgIElucHV0LFxyXG4gICAgaW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBzaWduYWwsXHJcbiAgICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtDaGF0U2VydmljZX0gZnJvbSAnLi4vY29yZS9zZXJ2aWNlcy9jaGF0LnNlcnZpY2UnO1xyXG5pbXBvcnQge1NvY2tldFNlcnZpY2V9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvc29ja2V0LnNlcnZpY2UnO1xyXG5pbXBvcnQge1RvYXN0TW9kdWxlfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHtNZXNzYWdlU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQge0J1dHRvbk1vZHVsZX0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQge0F2YXRhck1vZHVsZX0gZnJvbSAncHJpbWVuZy9hdmF0YXInO1xyXG5pbXBvcnQge1Rvb2x0aXBNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcbmltcG9ydCB7SW5wdXRUZXh0YXJlYU1vZHVsZX0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHRhcmVhJztcclxuaW1wb3J0IHtEcm9wZG93bk1vZHVsZX0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcbmltcG9ydCB7Q2hpcE1vZHVsZX0gZnJvbSAncHJpbWVuZy9jaGlwJztcclxuaW1wb3J0IHtDaGF0TWVzc2FnZX0gZnJvbSAnLi4vY29yZS9tb2RlbHMvY2hhdC5tb2RlbHMnO1xyXG5pbXBvcnQge092ZXJsYXlQYW5lbCwgT3ZlcmxheVBhbmVsTW9kdWxlfSBmcm9tICdwcmltZW5nL292ZXJsYXlwYW5lbCc7XHJcbmltcG9ydCB7Q2hhdE5vdGlmaWNhdGlvbn0gZnJvbSBcIi4uL2NvcmUvbW9kZWxzL25vdGlmaWNhdGlvbi5tb2RlbFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1jaGF0LXdpbmRvdycsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIENvbW1vbk1vZHVsZSxcclxuICAgICAgICBGb3Jtc01vZHVsZSxcclxuICAgICAgICBUb2FzdE1vZHVsZSxcclxuICAgICAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICAgICAgQXZhdGFyTW9kdWxlLFxyXG4gICAgICAgIFRvb2x0aXBNb2R1bGUsXHJcbiAgICAgICAgSW5wdXRUZXh0YXJlYU1vZHVsZSxcclxuICAgICAgICBDaGlwTW9kdWxlLFxyXG4gICAgICAgIERyb3Bkb3duTW9kdWxlLFxyXG4gICAgICAgIE92ZXJsYXlQYW5lbE1vZHVsZVxyXG4gICAgXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jaGF0LXdpbmRvdy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jaGF0LXdpbmRvdy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGF0V2luZG93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGNoYXRSb29tSWQhOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBoZWFkZXIgPSAnQ2hhdCc7XHJcbiAgICBASW5wdXQoKSBtZXRhZGF0YSA9ICcnO1xyXG4gICAgQElucHV0KCkgY2hhdFVzZXJzID0gW107XHJcbiAgICBASW5wdXQoKSBzaG93QWN0aW9ucyA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBtb2RlOiAnZmxvYXRpbmcnIHwgJ2Z1bGxzY3JlZW4nID0gJ2Zsb2F0aW5nJztcclxuICAgIEBJbnB1dCgpIHRoZW1lOiAnbGlnaHQnIHwgJ2RhcmsnID0gJ2xpZ2h0JztcclxuICAgIEBPdXRwdXQoKSBvbkFyY2hpdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgcmVmcmVzaFJvb20gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgICAvLyBASW5wdXQoKSBjdXJyZW50VXNlcjogYW55O1xyXG5cclxuICAgIGNoYXRTZXJ2aWNlID0gaW5qZWN0KENoYXRTZXJ2aWNlKTtcclxuICAgIHNvY2tldCA9IGluamVjdChTb2NrZXRTZXJ2aWNlKTtcclxuICAgIG1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VTZXJ2aWNlKTtcclxuXHJcbiAgICB1c2VycyA9IHNpZ25hbDxhbnlbXT4oW10pO1xyXG4gICAgbWVzc2FnZXMgPSBzaWduYWw8Q2hhdE1lc3NhZ2VbXT4oW10pO1xyXG4gICAgbmV3TWVzc2FnZSA9ICcnO1xyXG4gICAgbWluaW1pemVkID0gZmFsc2U7XHJcbiAgICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICByZXBseVRvOiBDaGF0TWVzc2FnZSB8IG51bGwgPSBudWxsO1xyXG4gICAgc2VsZWN0ZWRVc2VyOiBhbnk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbWVzc2FnZXNDb250YWluZXInKSBtZXNzYWdlc0NvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gICAgQFZpZXdDaGlsZCgncmVhY3Rpb25PdmVybGF5JykgcmVhY3Rpb25PdmVybGF5ITogT3ZlcmxheVBhbmVsO1xyXG5cclxuICAgIHByaXZhdGUgb2JzZXJ2ZXIhOiBNdXRhdGlvbk9ic2VydmVyO1xyXG5cclxuICAgIHNob3dVc2VycyA9IGZhbHNlO1xyXG4gICAgc3VnZ2VzdGlvbiA9ICcnO1xyXG4gICAgaG92ZXJlZFJlYWN0aW9uVXNlcnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zb2NrZXQuam9pblJvb20odGhpcy5jaGF0Um9vbUlkKTtcclxuICAgICAgICAvLyB0aGlzLnNvY2tldC5qb2luVXNlckNoYW5uZWwodGhpcy5jaGF0U2VydmljZS5jdXJyZW50VXNlcigpLnVzZXJJZCk7XHJcbiAgICAgICAgdGhpcy5sb2FkVXNlcnMoKTtcclxuICAgICAgICB0aGlzLmxvYWRNZXNzYWdlcygpO1xyXG4gICAgICAgIHRoaXMubGlzdGVuU29ja2V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZFVzZXJzKCkge1xyXG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0Um9vbVVzZXJzKHRoaXMuY2hhdFJvb21JZCkuc3Vic2NyaWJlKHVzZXJzID0+IHtcclxuICAgICAgICAgICAgdGhpcy51c2Vycy5zZXQodXNlcnMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRNZXNzYWdlcygpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0TWVzc2FnZXModGhpcy5jaGF0Um9vbUlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiBtc2dzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMuc2V0KG1zZ3MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGlzdGVuU29ja2V0KCkge1xyXG4gICAgICAgIHRoaXMuc29ja2V0Lm9uPENoYXRNZXNzYWdlPignbmV3TWVzc2FnZScpLnN1YnNjcmliZShtc2cgPT4ge1xyXG4gICAgICAgICAgICBpZiAobXNnLmNoYXRSb29tSWQgPT09IHRoaXMuY2hhdFJvb21JZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlcy51cGRhdGUobGlzdCA9PiBbLi4ubGlzdCwgbXNnXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGlmIChtc2cuc2VuZGVySWQgIT09IHRoaXMuY2hhdFNlcnZpY2UuY3VycmVudFVzZXIoKS51c2VySWQpIHtcclxuICAgICAgICAgICAgLy8gICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICAgIC8vICAgICBzZXZlcml0eTogJ2luZm8nLFxyXG4gICAgICAgICAgICAvLyAgICAgc3VtbWFyeTogdGhpcy5oZWFkZXIsXHJcbiAgICAgICAgICAgIC8vICAgICBkZXRhaWw6IG1zZy5jb250ZW50ID8/ICdOZXcgbWVzc2FnZScsXHJcbiAgICAgICAgICAgIC8vICAgICBsaWZlOiAyNTAwXHJcbiAgICAgICAgICAgIC8vICAgfSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zb2NrZXQub24oJ3Jvb21Vc2VyQWRkZWQnKS5zdWJzY3JpYmUoKG1zZzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtc2cuY2hhdFJvb21JZCA9PT0gdGhpcy5jaGF0Um9vbUlkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRVc2VycygpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAgICAgLy8gICBzZXZlcml0eTogJ2luZm8nLFxyXG4gICAgICAgICAgICAgICAgLy8gICBzdW1tYXJ5OiAnVXNlciBBZGRlZCcsXHJcbiAgICAgICAgICAgICAgICAvLyAgIGRldGFpbDogbXNnLnVzZXI/LnVzZXJOYW1lLFxyXG4gICAgICAgICAgICAgICAgLy8gICBsaWZlOiAyNTAwXHJcbiAgICAgICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNvY2tldC5vbignYWRkZWRUb1Jvb20nKS5zdWJzY3JpYmUoKG1zZzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtc2cuY2hhdFJvb21JZCA9PT0gdGhpcy5jaGF0Um9vbUlkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRVc2VycygpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2FkZGVkVG9Sb29tJywgbXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNvY2tldC5vbigndXNlckFscmVhZHlJblJvb20nKS5zdWJzY3JpYmUoKG1zZzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIGlmIChtc2cuY2hhdFJvb21JZCA9PT0gdGhpcy5jaGF0Um9vbUlkKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAvLyAgICAgc2V2ZXJpdHk6ICdpbmZvJyxcclxuICAgICAgICAgICAgLy8gICAgIHN1bW1hcnk6ICdVc2VyIEFscmVhZHkgQWRkZWQnLFxyXG4gICAgICAgICAgICAvLyAgICAgZGV0YWlsOiBtc2cudXNlcj8udXNlck5hbWUsXHJcbiAgICAgICAgICAgIC8vICAgICBsaWZlOiAyNTAwXHJcbiAgICAgICAgICAgIC8vICAgfSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kKCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLm5ld01lc3NhZ2UudHJpbSgpO1xyXG4gICAgICAgIGlmICghY29udGVudCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLnNlbmRNZXNzYWdlKHRoaXMuY2hhdFJvb21JZCwge1xyXG4gICAgICAgICAgICBzZW5kZXJJZDogdGhpcy5jaGF0U2VydmljZS5jdXJyZW50VXNlcigpLnVzZXJJZCxcclxuICAgICAgICAgICAgc2VuZGVyTmFtZTogdGhpcy5jaGF0U2VydmljZS5jdXJyZW50VXNlcigpLm5hbWUsXHJcbiAgICAgICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgICAgIHJlcGx5VG9NZXNzYWdlSWQ6IHRoaXMucmVwbHlUbz8ucmVwbHlUb01lc3NhZ2VJZCA/PyBudWxsLFxyXG4gICAgICAgICAgICBjcmVhdGVkQnk6IHRoaXMuY2hhdFNlcnZpY2UuY3VycmVudFVzZXIoKS51c2VySWRcclxuICAgICAgICB9KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm5ld01lc3NhZ2UgPSAnJztcclxuICAgICAgICAgICAgdGhpcy5yZXBseVRvID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5nZXRVc2VyTm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFVzZXJOb3RpZmljYXRpb25zKCkge1xyXG4gICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuZ2V0QWxsTm90aWZpY2F0aW9ucyh0aGlzLmNoYXRTZXJ2aWNlLmN1cnJlbnRVc2VyKCkudXNlcklkKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZ2V0VXNlck5vdGlmaWNhdGlvbnMnLCByZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLm5vdGlmaWNhdGlvbnMuc2V0KHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkVXNlclRvUm9vbSgpIHtcclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmFkZFVzZXJUb1Jvb20oXHJcbiAgICAgICAgICAgIHRoaXMuY2hhdFJvb21JZCxcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXI/LnVzZXJfaWQsXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyPy5mdWxsX25hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuY3VycmVudFVzZXIoKS51c2VySWQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlTWluaW1pemUoKSB7XHJcbiAgICAgICAgdGhpcy5taW5pbWl6ZWQgPSAhdGhpcy5taW5pbWl6ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXJjaGl2ZUNoYXQoKSB7XHJcbiAgICAgICAgdGhpcy5jaGF0U2VydmljZS5hcmNoaXZlUm9vbSh0aGlzLmNoYXRSb29tSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25BcmNoaXZlLmVtaXQodGhpcy5jaGF0Um9vbUlkKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IGVyciA9PiBjb25zb2xlLmVycm9yKGVycilcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZXBseShtc2c6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5yZXBseVRvID0gbXNnO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyUmVwbHkoKSB7XHJcbiAgICAgICAgdGhpcy5yZXBseVRvID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgbXNnOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiBtc2cuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy8gdGhpcy5zb2NrZXQub2ZmTmV3TWVzc2FnZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuc29ja2V0Lm9mZk1lc3NhZ2VTZWVuKCk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcclxuICAgICAgICAgICAgLy8g8J+UpSBTY3JvbGwgQUZURVIgRE9NIGFjdHVhbGx5IGNoYW5nZXNcclxuICAgICAgICAgICAgZWwuc2Nyb2xsVG9wID0gZWwuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUoZWwsIHtcclxuICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxyXG4gICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxyXG4gICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlVXNlcnMoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93VXNlcnMgPSAhdGhpcy5zaG93VXNlcnM7XHJcbiAgICB9XHJcbn1cclxuIiwiPHAtdG9hc3Q+PC9wLXRvYXN0PlxyXG5cclxuPGRpdiBbY2xhc3MuZGFya109XCJ0aGVtZSA9PT0gJ2RhcmsnXCIgW2NsYXNzLmZsb2F0aW5nXT1cIm1vZGUgPT09ICdmbG9hdGluZydcIiBbY2xhc3MuZnVsbHNjcmVlbl09XCJtb2RlID09PSAnZnVsbHNjcmVlbidcIlxyXG4gICAgIFtjbGFzcy5taW5pbWl6ZWRdPVwibWluaW1pemVkXCIgY2xhc3M9XCJjaGF0LXdpbmRvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNoYXQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2VycygpLmxlbmd0aFwiPih7eyB1c2VycygpLmxlbmd0aCB9fSB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VycygpLmxlbmd0aCA9PSAxID8gJ3BhcnRpY2lwYW50JyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydGljaXBhbnRzJ1xyXG4gICAgICAgICAgICAgICAgICAgIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBtZXRhZGF0YSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZVVzZXJzKClcIiBpY29uPVwicGkgcGktdXNlcnNcIiBwQnV0dG9uIHBUb29sdGlwPVwiVG9vZ2xlIFVzZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMC41cmVtXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd0FjdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZU1pbmltaXplKClcIiBbaWNvbl09XCJtaW5pbWl6ZWQgPyAncGkgcGktcGx1cycgOiAncGkgcGktbWludXMnXCIgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwVG9vbHRpcD1cIkhpZGUvU2hvd1wiIHN0eWxlPVwiZm9udC1zaXplOiAwLjVyZW1cIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFyY2hpdmVDaGF0KClcIiBpY29uPVwicGkgcGktdHJhc2hcIiBwQnV0dG9uIHBUb29sdGlwPVwiQXJjaGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAwLjVyZW1cIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFtaW5pbWl6ZWRcIiBjbGFzcz1cImNoYXQtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgW2NsYXNzLnVzZXJzLWhpZGRlbl09XCIhc2hvd1VzZXJzXCIgY2xhc3M9XCJjaGF0LWxheW91dFwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbG9hdGluZ109XCJtb2RlID09PSAnZmxvYXRpbmcnXCIgW2NsYXNzLmZ1bGxzY3JlZW5dPVwibW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXCIgY2xhc3M9XCJjaGF0LW1haW5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgI21lc3NhZ2VzQ29udGFpbmVyIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmdcIiBjbGFzcz1cIm1lc3NhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbXNnIG9mIG1lc3NhZ2VzKCk7IHRyYWNrQnk6IHRyYWNrQnlJZFwiIFtuZ0NsYXNzXT1cInsgb3V0Z29pbmc6IG1zZy5zZW5kZXJJZCA9PT0gY2hhdFNlcnZpY2UuY3VycmVudFVzZXIoKS51c2VySWQsIGluY29taW5nOiBtc2cuc2VuZGVySWQgIT09IGNoYXRTZXJ2aWNlLmN1cnJlbnRVc2VyKCkudXNlcklkIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZXNzYWdlLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1idWJibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLW1ldGFcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VuZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gKm5nSWY9XCJtc2cuc2VuZGVySWQgIT09IGNoYXRTZXJ2aWNlLmN1cnJlbnRVc2VyKCkudXNlcklkXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgbXNnLnNlbmRlck5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXNnLmNyZWF0ZWRBdCB8IGRhdGU6ICdzaG9ydFRpbWUnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTUVTU0FHRSBURVhUIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1zZy5jb250ZW50IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1hcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlcGx5VG9cIiBjbGFzcz1cInJlcGx5LWJhbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5SZXBseWluZyB0bzoge3sgcmVwbHlUby5jb250ZW50IHwgc2xpY2U6IDA6NTAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFyUmVwbHkoKVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zbVwiIGljb249XCJwaSBwaS10aW1lc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIChrZXl1cC5lbnRlcik9XCJzZW5kKClcIiBbKG5nTW9kZWwpXT1cIm5ld01lc3NhZ2VcIiBhdXRvUmVzaXplPVwidHJ1ZVwiIHBJbnB1dFRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSBhIG1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiMlwiPlxyXG4gICAgICAgICAgPC90ZXh0YXJlYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2VuZCgpXCIgaWNvbj1cInBpIHBpLXNlbmRcIiBsYWJlbD1cIlNlbmRcIiBwQnV0dG9uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1zaWRlYmFyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPlVzZXJzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdSBvZiB1c2VycygpXCIgY2xhc3M9XCJ1c2VyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1hdmF0YXIgW2xhYmVsXT1cInUudXNlcm5hbWVbMF1cIj48L3AtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1LnVzZXJuYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dBY3Rpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbGlzdC1hZGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gWyhuZ01vZGVsKV09XCJzZWxlY3RlZFVzZXJcIiBbb3B0aW9uc109XCJjaGF0U2VydmljZS51c2VyTGlzdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJmdWxsX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBVc2VyXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMmVtO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkVXNlclRvUm9vbSgpXCIgaWNvbj1cInBpIHBpLXBsdXNcIiBsYWJlbD1cIkFkZFwiIHBCdXR0b24+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aW5kb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC13aWRnZXQvc3JjL2xpYi9jaGF0LXdpbmRvdy9jaGF0LXdpbmRvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NoYXQtd2luZG93L2NoYXQtd2luZG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxF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LG1CQUFtQixxS0FDbkIsVUFBVSw4QkFDVixjQUFjLHV0Q0FDZCxrQkFBa0I7OzRGQU1iLG1CQUFtQjtrQkFuQi9CLFNBQVM7K0JBQ0ksaUJBQWlCLGNBQ2YsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsVUFBVTt3QkFDVixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDckIsYUFHVSxDQUFDLGNBQWMsQ0FBQzt3REFHbEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQWlCeUIsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDQSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgaW5qZWN0LFxyXG4gICAgSW5wdXQsXHJcbiAgICBpbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIHNpZ25hbCxcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0NoYXRTZXJ2aWNlfSBmcm9tICcuLi9jb3JlL3NlcnZpY2VzL2NoYXQuc2VydmljZSc7XHJcbmltcG9ydCB7U29ja2V0U2VydmljZX0gZnJvbSAnLi4vY29yZS9zZXJ2aWNlcy9zb2NrZXQuc2VydmljZSc7XHJcbmltcG9ydCB7VG9hc3RNb2R1bGV9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5pbXBvcnQge01lc3NhZ2VTZXJ2aWNlfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7QnV0dG9uTW9kdWxlfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7QXZhdGFyTW9kdWxlfSBmcm9tICdwcmltZW5nL2F2YXRhcic7XHJcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcclxuaW1wb3J0IHtJbnB1dFRleHRhcmVhTW9kdWxlfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dGFyZWEnO1xyXG5pbXBvcnQge0Ryb3Bkb3duTW9kdWxlfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuaW1wb3J0IHtDaGlwTW9kdWxlfSBmcm9tICdwcmltZW5nL2NoaXAnO1xyXG5pbXBvcnQge0NoYXRNZXNzYWdlfSBmcm9tICcuLi9jb3JlL21vZGVscy9jaGF0Lm1vZGVscyc7XHJcbmltcG9ydCB7T3ZlcmxheVBhbmVsLCBPdmVybGF5UGFuZWxNb2R1bGV9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcclxuaW1wb3J0IHtDaGF0Tm90aWZpY2F0aW9ufSBmcm9tIFwiLi4vY29yZS9tb2RlbHMvbm90aWZpY2F0aW9uLm1vZGVsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLWNoYXQtd2luZG93JyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIFRvYXN0TW9kdWxlLFxyXG4gICAgICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgICAgICBBdmF0YXJNb2R1bGUsXHJcbiAgICAgICAgVG9vbHRpcE1vZHVsZSxcclxuICAgICAgICBJbnB1dFRleHRhcmVhTW9kdWxlLFxyXG4gICAgICAgIENoaXBNb2R1bGUsXHJcbiAgICAgICAgRHJvcGRvd25Nb2R1bGUsXHJcbiAgICAgICAgT3ZlcmxheVBhbmVsTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtd2luZG93LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NoYXQtd2luZG93LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXRXaW5kb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgY2hhdFJvb21JZCE6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGhlYWRlciA9ICdDaGF0JztcclxuICAgIEBJbnB1dCgpIG1ldGFkYXRhID0gJyc7XHJcbiAgICBASW5wdXQoKSBjaGF0VXNlcnMgPSBbXTtcclxuICAgIEBJbnB1dCgpIHNob3dBY3Rpb25zID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIG1vZGU6ICdmbG9hdGluZycgfCAnZnVsbHNjcmVlbicgPSAnZmxvYXRpbmcnO1xyXG4gICAgQElucHV0KCkgdGhlbWU6ICdsaWdodCcgfCAnZGFyaycgPSAnbGlnaHQnO1xyXG4gICAgQE91dHB1dCgpIG9uQXJjaGl2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICByZWZyZXNoUm9vbSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIC8vIEBJbnB1dCgpIGN1cnJlbnRVc2VyOiBhbnk7XHJcblxyXG4gICAgY2hhdFNlcnZpY2UgPSBpbmplY3QoQ2hhdFNlcnZpY2UpO1xyXG4gICAgc29ja2V0ID0gaW5qZWN0KFNvY2tldFNlcnZpY2UpO1xyXG4gICAgbWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZVNlcnZpY2UpO1xyXG5cclxuICAgIHVzZXJzID0gc2lnbmFsPGFueVtdPihbXSk7XHJcbiAgICBtZXNzYWdlcyA9IHNpZ25hbDxDaGF0TWVzc2FnZVtdPihbXSk7XHJcbiAgICBuZXdNZXNzYWdlID0gJyc7XHJcbiAgICBtaW5pbWl6ZWQgPSBmYWxzZTtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHJlcGx5VG86IENoYXRNZXNzYWdlIHwgbnVsbCA9IG51bGw7XHJcbiAgICBzZWxlY3RlZFVzZXI6IGFueTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdtZXNzYWdlc0NvbnRhaW5lcicpIG1lc3NhZ2VzQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgICBAVmlld0NoaWxkKCdyZWFjdGlvbk92ZXJsYXknKSByZWFjdGlvbk92ZXJsYXkhOiBPdmVybGF5UGFuZWw7XHJcblxyXG4gICAgcHJpdmF0ZSBvYnNlcnZlciE6IE11dGF0aW9uT2JzZXJ2ZXI7XHJcblxyXG4gICAgc2hvd1VzZXJzID0gZmFsc2U7XHJcbiAgICBzdWdnZXN0aW9uID0gJyc7XHJcbiAgICBob3ZlcmVkUmVhY3Rpb25Vc2Vyczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNvY2tldC5qb2luUm9vbSh0aGlzLmNoYXRSb29tSWQpO1xyXG4gICAgICAgIHRoaXMubG9hZFVzZXJzKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkTWVzc2FnZXMoKTtcclxuICAgICAgICB0aGlzLmxpc3RlblNvY2tldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRVc2VycygpIHtcclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldFJvb21Vc2Vycyh0aGlzLmNoYXRSb29tSWQpLnN1YnNjcmliZSh1c2VycyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlcnMuc2V0KHVzZXJzKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkTWVzc2FnZXMoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmdldE1lc3NhZ2VzKHRoaXMuY2hhdFJvb21JZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogbXNncyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzLnNldChtc2dzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4gKHRoaXMubG9hZGluZyA9IGZhbHNlKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxpc3RlblNvY2tldCgpIHtcclxuICAgICAgICB0aGlzLnNvY2tldC5vbjxDaGF0TWVzc2FnZT4oJ25ld01lc3NhZ2UnKS5zdWJzY3JpYmUobXNnID0+IHtcclxuICAgICAgICAgICAgaWYgKG1zZy5jaGF0Um9vbUlkID09PSB0aGlzLmNoYXRSb29tSWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXMudXBkYXRlKGxpc3QgPT4gWy4uLmxpc3QsIG1zZ10pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBpZiAobXNnLnNlbmRlcklkICE9PSB0aGlzLmNoYXRTZXJ2aWNlLmN1cnJlbnRVc2VyKCkudXNlcklkKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgICAvLyAgICAgc2V2ZXJpdHk6ICdpbmZvJyxcclxuICAgICAgICAgICAgLy8gICAgIHN1bW1hcnk6IHRoaXMuaGVhZGVyLFxyXG4gICAgICAgICAgICAvLyAgICAgZGV0YWlsOiBtc2cuY29udGVudCA/PyAnTmV3IG1lc3NhZ2UnLFxyXG4gICAgICAgICAgICAvLyAgICAgbGlmZTogMjUwMFxyXG4gICAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc29ja2V0Lm9uKCdyb29tVXNlckFkZGVkJykuc3Vic2NyaWJlKChtc2c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobXNnLmNoYXRSb29tSWQgPT09IHRoaXMuY2hhdFJvb21JZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkVXNlcnMoKTtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgIC8vICAgc2V2ZXJpdHk6ICdpbmZvJyxcclxuICAgICAgICAgICAgICAgIC8vICAgc3VtbWFyeTogJ1VzZXIgQWRkZWQnLFxyXG4gICAgICAgICAgICAgICAgLy8gICBkZXRhaWw6IG1zZy51c2VyPy51c2VyTmFtZSxcclxuICAgICAgICAgICAgICAgIC8vICAgbGlmZTogMjUwMFxyXG4gICAgICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zb2NrZXQub24oJ2FkZGVkVG9Sb29tJykuc3Vic2NyaWJlKChtc2c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAobXNnLmNoYXRSb29tSWQgPT09IHRoaXMuY2hhdFJvb21JZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkVXNlcnMoKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhZGRlZFRvUm9vbScsIG1zZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zb2NrZXQub24oJ3VzZXJBbHJlYWR5SW5Sb29tJykuc3Vic2NyaWJlKChtc2c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAvLyBpZiAobXNnLmNoYXRSb29tSWQgPT09IHRoaXMuY2hhdFJvb21JZCkge1xyXG4gICAgICAgICAgICAvLyAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgLy8gICAgIHNldmVyaXR5OiAnaW5mbycsXHJcbiAgICAgICAgICAgIC8vICAgICBzdW1tYXJ5OiAnVXNlciBBbHJlYWR5IEFkZGVkJyxcclxuICAgICAgICAgICAgLy8gICAgIGRldGFpbDogbXNnLnVzZXI/LnVzZXJOYW1lLFxyXG4gICAgICAgICAgICAvLyAgICAgbGlmZTogMjUwMFxyXG4gICAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZCgpIHtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5uZXdNZXNzYWdlLnRyaW0oKTtcclxuICAgICAgICBpZiAoIWNvbnRlbnQpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5jaGF0U2VydmljZS5zZW5kTWVzc2FnZSh0aGlzLmNoYXRSb29tSWQsIHtcclxuICAgICAgICAgICAgc2VuZGVySWQ6IHRoaXMuY2hhdFNlcnZpY2UuY3VycmVudFVzZXIoKS51c2VySWQsXHJcbiAgICAgICAgICAgIHNlbmRlck5hbWU6IHRoaXMuY2hhdFNlcnZpY2UuY3VycmVudFVzZXIoKS5uYW1lLFxyXG4gICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICByZXBseVRvTWVzc2FnZUlkOiB0aGlzLnJlcGx5VG8/LnJlcGx5VG9NZXNzYWdlSWQgPz8gbnVsbCxcclxuICAgICAgICAgICAgY3JlYXRlZEJ5OiB0aGlzLmNoYXRTZXJ2aWNlLmN1cnJlbnRVc2VyKCkudXNlcklkXHJcbiAgICAgICAgfSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uZXdNZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMucmVwbHlUbyA9IG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkVXNlclRvUm9vbSgpIHtcclxuICAgICAgICB0aGlzLmNoYXRTZXJ2aWNlLmFkZFVzZXJUb1Jvb20oXHJcbiAgICAgICAgICAgIHRoaXMuY2hhdFJvb21JZCxcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXI/LnVzZXJfaWQsXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyPy5mdWxsX25hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuY2hhdFNlcnZpY2UuY3VycmVudFVzZXIoKS51c2VySWQpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlTWluaW1pemUoKSB7XHJcbiAgICAgICAgdGhpcy5taW5pbWl6ZWQgPSAhdGhpcy5taW5pbWl6ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXJjaGl2ZUNoYXQoKSB7XHJcbiAgICAgICAgdGhpcy5jaGF0U2VydmljZS5hcmNoaXZlUm9vbSh0aGlzLmNoYXRSb29tSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25BcmNoaXZlLmVtaXQodGhpcy5jaGF0Um9vbUlkKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IGVyciA9PiBjb25zb2xlLmVycm9yKGVycilcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZXBseShtc2c6IENoYXRNZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5yZXBseVRvID0gbXNnO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyUmVwbHkoKSB7XHJcbiAgICAgICAgdGhpcy5yZXBseVRvID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgbXNnOiBDaGF0TWVzc2FnZSkge1xyXG4gICAgICAgIHJldHVybiBtc2cuaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5zb2NrZXQub2ZmTmV3TWVzc2FnZSgpO1xyXG4gICAgICAgIHRoaXMuc29ja2V0Lm9mZk1lc3NhZ2VTZWVuKCk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMubWVzc2FnZXNDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcclxuICAgICAgICAgICAgLy8g8J+UpSBTY3JvbGwgQUZURVIgRE9NIGFjdHVhbGx5IGNoYW5nZXNcclxuICAgICAgICAgICAgZWwuc2Nyb2xsVG9wID0gZWwuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUoZWwsIHtcclxuICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxyXG4gICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxyXG4gICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlVXNlcnMoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93VXNlcnMgPSAhdGhpcy5zaG93VXNlcnM7XHJcbiAgICB9XHJcbn1cclxuIiwiPHAtdG9hc3Q+PC9wLXRvYXN0PlxyXG5cclxuPGRpdiBbY2xhc3MuZGFya109XCJ0aGVtZSA9PT0gJ2RhcmsnXCIgW2NsYXNzLmZsb2F0aW5nXT1cIm1vZGUgPT09ICdmbG9hdGluZydcIiBbY2xhc3MuZnVsbHNjcmVlbl09XCJtb2RlID09PSAnZnVsbHNjcmVlbidcIlxyXG4gICAgIFtjbGFzcy5taW5pbWl6ZWRdPVwibWluaW1pemVkXCIgY2xhc3M9XCJjaGF0LXdpbmRvd1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNoYXQtaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ1c2VycygpLmxlbmd0aFwiPih7eyB1c2VycygpLmxlbmd0aCB9fSB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VycygpLmxlbmd0aCA9PSAxID8gJ3BhcnRpY2lwYW50JyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydGljaXBhbnRzJ1xyXG4gICAgICAgICAgICAgICAgICAgIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBtZXRhZGF0YSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZVVzZXJzKClcIiBpY29uPVwicGkgcGktdXNlcnNcIiBwQnV0dG9uIHBUb29sdGlwPVwiVG9vZ2xlIFVzZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMC41cmVtXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvd0FjdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInRvZ2dsZU1pbmltaXplKClcIiBbaWNvbl09XCJtaW5pbWl6ZWQgPyAncGkgcGktcGx1cycgOiAncGkgcGktbWludXMnXCIgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwVG9vbHRpcD1cIkhpZGUvU2hvd1wiIHN0eWxlPVwiZm9udC1zaXplOiAwLjVyZW1cIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFyY2hpdmVDaGF0KClcIiBpY29uPVwicGkgcGktdHJhc2hcIiBwQnV0dG9uIHBUb29sdGlwPVwiQXJjaGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAwLjVyZW1cIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFtaW5pbWl6ZWRcIiBjbGFzcz1cImNoYXQtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgW2NsYXNzLnVzZXJzLWhpZGRlbl09XCIhc2hvd1VzZXJzXCIgY2xhc3M9XCJjaGF0LWxheW91dFwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5mbG9hdGluZ109XCJtb2RlID09PSAnZmxvYXRpbmcnXCIgW2NsYXNzLmZ1bGxzY3JlZW5dPVwibW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXCIgY2xhc3M9XCJjaGF0LW1haW5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgI21lc3NhZ2VzQ29udGFpbmVyIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmdcIiBjbGFzcz1cIm1lc3NhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbXNnIG9mIG1lc3NhZ2VzKCk7IHRyYWNrQnk6IHRyYWNrQnlJZFwiIFtuZ0NsYXNzXT1cInsgb3V0Z29pbmc6IG1zZy5zZW5kZXJJZCA9PT0gY2hhdFNlcnZpY2UuY3VycmVudFVzZXIoKS51c2VySWQsIGluY29taW5nOiBtc2cuc2VuZGVySWQgIT09IGNoYXRTZXJ2aWNlLmN1cnJlbnRVc2VyKCkudXNlcklkIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZXNzYWdlLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZS1idWJibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLW1ldGFcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VuZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gKm5nSWY9XCJtc2cuc2VuZGVySWQgIT09IGNoYXRTZXJ2aWNlLmN1cnJlbnRVc2VyKCkudXNlcklkXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgbXNnLnNlbmRlck5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGltZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXNnLmNyZWF0ZWRBdCB8IGRhdGU6ICdzaG9ydFRpbWUnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTUVTU0FHRSBURVhUIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG1zZy5jb250ZW50IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1hcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJlcGx5VG9cIiBjbGFzcz1cInJlcGx5LWJhbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5SZXBseWluZyB0bzoge3sgcmVwbHlUby5jb250ZW50IHwgc2xpY2U6IDA6NTAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsZWFyUmVwbHkoKVwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1zbVwiIGljb249XCJwaSBwaS10aW1lc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIChrZXl1cC5lbnRlcik9XCJzZW5kKClcIiBbKG5nTW9kZWwpXT1cIm5ld01lc3NhZ2VcIiBhdXRvUmVzaXplPVwidHJ1ZVwiIHBJbnB1dFRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSBhIG1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiMlwiPlxyXG4gICAgICAgICAgPC90ZXh0YXJlYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2VuZCgpXCIgaWNvbj1cInBpIHBpLXNlbmRcIiBsYWJlbD1cIlNlbmRcIiBwQnV0dG9uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhdC1zaWRlYmFyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPlVzZXJzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdSBvZiB1c2VycygpXCIgY2xhc3M9XCJ1c2VyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1hdmF0YXIgW2xhYmVsXT1cInUudXNlcm5hbWVbMF1cIj48L3AtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1LnVzZXJuYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dBY3Rpb25zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbGlzdC1hZGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gWyhuZ01vZGVsKV09XCJzZWxlY3RlZFVzZXJcIiBbb3B0aW9uc109XCJjaGF0U2VydmljZS51c2VyTGlzdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJmdWxsX25hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBVc2VyXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMmVtO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkVXNlclRvUm9vbSgpXCIgaWNvbj1cInBpIHBpLXBsdXNcIiBsYWJlbD1cIkFkZFwiIHBCdXR0b24+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -83,22 +83,27 @@ export class ChatService {
83
83
  }
84
84
  listenForNotifications() {
85
85
  console.log('Listening for notifications');
86
- // 🔔 NOTIFICATION PIPELINE (single source of truth)
87
- this.socket.on('notificationCreated').subscribe(n => {
88
- const roomId = n.entityId;
86
+ // 🔔 ADDED TO ROOM only added user
87
+ this.socket.on('addedToRoom').subscribe((msg) => {
88
+ console.log('addedToRoom', msg);
89
+ if (msg.addedUserId !== this.currentUser().userId)
90
+ return;
89
91
  this.upsertNotification({
90
- roomId,
91
- type: n.eventType,
92
- lastMessage: n.payload?.senderName
93
- ? `${n.payload.senderName}: New message`
94
- : undefined,
95
- unreadDelta: n.unreadDelta ?? 1,
92
+ roomId: msg.chatRoomId,
93
+ roomName: msg.roomName,
94
+ type: 'added'
96
95
  });
97
96
  });
98
- // 🔔 OPTIONAL: room-level events for live chat view only
99
- this.socket.on('newMessage').subscribe(msg => {
100
- // Do NOT update notifications here
101
- // This is for active chat UI only
97
+ // 🔔 NEW MESSAGE everyone EXCEPT sender
98
+ this.socket.on('newMessage').subscribe((msg) => {
99
+ console.log('newMessage', msg);
100
+ if (msg.senderId === this.currentUser().userId)
101
+ return;
102
+ this.upsertNotification({
103
+ roomId: msg.chatRoomId,
104
+ type: 'message',
105
+ lastMessage: msg.content
106
+ });
102
107
  });
103
108
  }
104
109
  upsertNotification(data) {
@@ -108,7 +113,7 @@ export class ChatService {
108
113
  const n = list[index];
109
114
  list[index] = {
110
115
  ...n,
111
- unreadCount: n.unreadCount + (data.unreadDelta ?? 1),
116
+ unreadCount: n.unreadCount + 1,
112
117
  lastMessage: data.lastMessage ?? n.lastMessage,
113
118
  timestamp: Date.now()
114
119
  };
@@ -120,7 +125,7 @@ export class ChatService {
120
125
  roomId: data.roomId,
121
126
  roomName: data.roomName,
122
127
  type: data.type,
123
- unreadCount: data.unreadDelta ?? 1,
128
+ unreadCount: 1,
124
129
  lastMessage: data.lastMessage,
125
130
  timestamp: Date.now()
126
131
  }
@@ -141,35 +146,6 @@ export class ChatService {
141
146
  this.hasNewNotification.set(false);
142
147
  }, 1200);
143
148
  }
144
- getAllNotifications(loggedInUserId) {
145
- return this.http.get(`${this.baseUrl}/api/chat/notifications/get_all/${loggedInUserId}/`);
146
- }
147
- hydrateNotifications(userId) {
148
- return this.getAllNotifications(userId).subscribe(rows => {
149
- const grouped = new Map();
150
- rows.forEach(n => {
151
- const roomId = n.entityId;
152
- if (!grouped.has(roomId)) {
153
- grouped.set(roomId, {
154
- roomId,
155
- unreadCount: 1,
156
- lastMessage: n.title,
157
- timestamp: Date.now(),
158
- type: n.eventType,
159
- });
160
- }
161
- else {
162
- grouped.get(roomId).unreadCount += 1;
163
- }
164
- });
165
- this.notifications.set([...grouped.values()]);
166
- });
167
- }
168
- markRoomAsRead(roomId) {
169
- this.notifications.update(list => list.map(n => n.roomId === roomId
170
- ? { ...n, unreadCount: 0 }
171
- : n));
172
- }
173
149
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatService, deps: [{ token: i1.HttpClient }, { token: CHAT_CONFIG }, { token: i2.SocketService }], target: i0.ɵɵFactoryTarget.Injectable }); }
174
150
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatService, providedIn: 'root' }); }
175
151
  }
@@ -180,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
180
156
  type: Inject,
181
157
  args: [CHAT_CONFIG]
182
158
  }] }, { type: i2.SocketService }] });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC13aWRnZXQvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2NoYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR25DLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQU1sRCxNQUFNLE9BQU8sV0FBVztJQVNwQixZQUFvQixJQUFnQixFQUNILE1BQWtCLEVBQ3ZDLE1BQXFCO1FBRmIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNILFdBQU0sR0FBTixNQUFNLENBQVk7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVZqQywwREFBMEQ7UUFFMUQsZ0JBQVcsR0FBRyxNQUFNLENBQWEsSUFBSSxDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLE1BQU0sQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUM3QixrQkFBYSxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLE1BQU0sQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDL0MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSy9CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsVUFBVSxDQUFDLE1BQWMsRUFBRSxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxTQUFpQixFQUFFLFFBQWdCLEVBQUUsU0FBYztRQUMxRyxPQUFPLElBQUksQ0FBQyxJQUFJ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QUUsQ0FBQyxDQUFDLFNBQVM7cUJBQ3BCLENBQUMsQ0FBQztnQkFDUCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUUsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYztRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ1QsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNO1lBQ2YsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBQztZQUN4QixDQUFDLENBQUMsQ0FBQyxDQUNWLENBQ0osQ0FBQztJQUNOLENBQUM7K0dBeE5RLFdBQVcsNENBVVIsV0FBVzttSEFWZCxXQUFXLGNBREMsTUFBTTs7NEZBQ2xCLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzswQkFXdkIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0NoYXRNZXNzYWdlfSBmcm9tICcuLi9tb2RlbHMvY2hhdC5tb2RlbHMnO1xyXG5pbXBvcnQge0NIQVRfQ09ORklHfSBmcm9tIFwiLi4vY29uZmlnL2NoYXQudG9rZW5zXCI7XHJcbmltcG9ydCB7Q2hhdENvbmZpZ30gZnJvbSBcIi4uL2NvbmZpZy9jaGF0LWNvbmZpZ1wiO1xyXG5pbXBvcnQge0NoYXROb3RpZmljYXRpb259IGZyb20gXCIuLi9tb2RlbHMvbm90aWZpY2F0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7U29ja2V0U2VydmljZX0gZnJvbSBcIi4vc29ja2V0LnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgQ2hhdFNlcnZpY2Uge1xyXG4gICAgLy8gcHJpdmF0ZSBiYXNlVXJsID0gYGh0dHBzOi8vY29yZXVhdGFydGhrb3NoLnNhcmphay5jb21gO1xyXG5cclxuICAgIGN1cnJlbnRVc2VyID0gc2lnbmFsPGFueSB8IG51bGw+KG51bGwpO1xyXG4gICAgdXNlckxpc3QgPSBzaWduYWw8YW55W10+KFtdKTtcclxuICAgIGFyY2hpdmVSb29tSWQgPSBzaWduYWw8c3RyaW5nPignJyk7XHJcbiAgICBub3RpZmljYXRpb25zID0gc2lnbmFsPENoYXROb3RpZmljYXRpb25bXT4oW10pO1xyXG4gICAgaGFzTmV3Tm90aWZpY2F0aW9uID0gc2lnbmFsKGZhbHNlKTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgQEluamVjdChDSEFUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IENoYXRDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBzb2NrZXQ6IFNvY2tldFNlcnZpY2UpIHtcclxuICAgICAgICB0aGlzLmxpc3RlbkZvck5vdGlmaWNhdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYmFzZVVybCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcuYXBpQmFzZVVybDtcclxuICAgIH1cclxuXHJcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tIENIQVQgUk9PTVMgLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgY3JlYXRlUm9vbShyb29tSWQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBtZXRhZGF0YTogc3RyaW5nLCBjcmVhdGVkQnk6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgY2hhdFVzZXJzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmJhc2VVcmx9L2FwaS9jaGF0L2NoYXRyb29tcy9jcmVhdGUvJHtyb29tSWR9L2AsIHtcclxuICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgbWV0YWRhdGEsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRCeSxcclxuICAgICAgICAgICAgdXNlcm5hbWUsXHJcbiAgICAgICAgICAgIGNoYXRVc2Vyc1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJvb21Vc2Vycyhyb29tSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55W10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oYCR7dGhpcy5iYXNlVXJsfS9hcGkvY2hhdC9jaGF0cm9vbXMvZ2V0X3VzZXIvJHtyb29tSWR9L3VzZXJzL2ApLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChsaXN0ID0+XHJcbiAgICAgICAgICAgICAgICBsaXN0Lm1hcCh1ID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHUuVXNlcklkLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lOiB1LlVzZXJOYW1lXHJcbiAgICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkVXNlclRvUm9vbShyb29tSWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcsIHVzZXJOYW1lOiBzdHJpbmcsIGNyZWF0ZWRCeTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYmFzZVVybH0vYXBpL2NoYXQvY2hhdHJvb21zL2FkZF91c2VyLyR7cm9vbUlkfS91c2Vycy9hZGQvYCwge1xyXG4gICAgICAgICAgICB1c2VySWQsXHJcbiAgICAgICAgICAgIHVzZXJOYW1lLFxyXG4gICAgICAgICAgICBjcmVhdGVkQnlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tIE1FU1NBR0VTIC0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICAgIGdldE1lc3NhZ2VzKHJvb21JZDogc3RyaW5nLCBzaW5jZT86IHN0cmluZyk6IE9ic2VydmFibGU8Q2hhdE1lc3NhZ2VbXT4ge1xyXG4gICAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge307XHJcbiAgICAgICAgaWYgKHNpbmNlKSBwYXJhbXMuc2luY2UgPSBzaW5jZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KGAke3RoaXMuYmFzZVVybH0vYXBpL2NoYXQvbWVzc2FnZXMvcm9vbXMvYWxsX21lc3NhZ2VzLyR7cm9vbUlkfS9gLCB7cGFyYW1zfSkucGlwZShcclxuICAgICAgICAgICAgbWFwKGxpc3QgPT5cclxuICAgICAgICAgICAgICAgIGxpc3QubWFwKG0gPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogbS5pZCxcclxuICAgICAgICAgICAgICAgICAgICBjaGF0Um9vbUlkOiBtLmNoYXRSb29tSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VuZGVySWQ6IG0uc2VuZGVySWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VuZGVyTmFtZTogbS5zZW5kZXJOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG0uY29udGVudCxcclxuICAgICAgICAgICAgICAgICAgICByZXBseVRvTWVzc2FnZUlkOiBtLnJlcGx5VG9NZXNzYWdlSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEF0OiBtLmNyZWF0ZWRBdCxcclxuICAgICAgICAgICAgICAgICAgICBoYXNBdHRhY2htZW50OiBtLmhhc0F0dGFjaG1lbnQgPz8gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZE1lc3NhZ2UoXHJcbiAgICAgICAgcm9vbUlkOiBzdHJpbmcsXHJcbiAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICBzZW5kZXJJZDogc3RyaW5nO1xyXG4gICAgICAgICAgICBzZW5kZXJOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHN0cmluZztcclxuICAgICAgICAgICAgcmVwbHlUb01lc3NhZ2VJZD86IHN0cmluZyB8IG51bGwsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRCeTogc3RyaW5nXHJcbiAgICAgICAgfVxyXG4gICAgKTogT2JzZXJ2YWJsZTxDaGF0TWVzc2FnZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0vYXBpL2NoYXQvbWVzc2FnZXMvcm9vbXMvc2VuZC8ke3Jvb21JZH0vYCwgcGF5bG9hZCkucGlwZShcclxuICAgICAgICAgICAgbWFwKG0gPT4gKHtcclxuICAgICAgICAgICAgICAgIGlkOiBtLmlkLFxyXG4gICAgICAgICAgICAgICAgY2hhdFJvb21JZDogbS5jaGF0Um9vbUlkLFxyXG4gICAgICAgICAgICAgICAgc2VuZGVySWQ6IG0uc2VuZGVySWQsXHJcbiAgICAgICAgICAgICAgICBzZW5kZXJOYW1lOiBtLnNlbmRlck5hbWUsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBtLmNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICByZXBseVRvTWVzc2FnZUlkOiBtLnJlcGx5VG9NZXNzYWdlSWQsXHJcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IG0uY3JlYXRlZEF0LFxyXG4gICAgICAgICAgICAgICAgaGFzQXR0YWNobWVudDogbS5oYXNBdHRhY2htZW50ID8/IGZhbHNlLFxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJvb21zKGxvZ2dlZEluVXNlcklkOiBzdHJpbmcsIGNoYXRSb29tSWQ/OiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJsfS9hcGkvY2hhdC9jaGF0cm9vbXMvJHtsb2dnZWRJblVzZXJJZH1gO1xyXG4gICAgICAgIGlmIChjaGF0Um9vbUlkKSB7XHJcbiAgICAgICAgICAgIHVybCArPSBgLyR7Y2hhdFJvb21JZH1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oYCR7dXJsfS9gKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXJjaGl2ZVJvb20ocm9vbUlkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxhbnlbXT4oYCR7dGhpcy5iYXNlVXJsfS9hcGkvY2hhdC9jaGF0cm9vbXMvYXJjaGl2ZS8ke3Jvb21JZH0vYCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsaXN0ZW5Gb3JOb3RpZmljYXRpb25zKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdMaXN0ZW5pbmcgZm9yIG5vdGlmaWNhdGlvbnMnKTtcclxuXHJcbiAgICAgICAgLy8g8J+UlCBOT1RJRklDQVRJT04gUElQRUxJTkUgKHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgpXHJcbiAgICAgICAgdGhpcy5zb2NrZXQub248YW55Pignbm90aWZpY2F0aW9uQ3JlYXRlZCcpLnN1YnNjcmliZShuID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgcm9vbUlkID0gbi5lbnRpdHlJZDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMudXBzZXJ0Tm90aWZpY2F0aW9uKHtcclxuICAgICAgICAgICAgICAgIHJvb21JZCxcclxuICAgICAgICAgICAgICAgIHR5cGU6IG4uZXZlbnRUeXBlLFxyXG4gICAgICAgICAgICAgICAgbGFzdE1lc3NhZ2U6IG4ucGF5bG9hZD8uc2VuZGVyTmFtZVxyXG4gICAgICAgICAgICAgICAgICAgID8gYCR7bi5wYXlsb2FkLnNlbmRlck5hbWV9OiBOZXcgbWVzc2FnZWBcclxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHVucmVhZERlbHRhOiBuLnVucmVhZERlbHRhID8/IDEsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyDwn5SUIE9QVElPTkFMOiByb29tLWxldmVsIGV2ZW50cyBmb3IgbGl2ZSBjaGF0IHZpZXcgb25seVxyXG4gICAgICAgIHRoaXMuc29ja2V0Lm9uPGFueT4oJ25ld01lc3NhZ2UnKS5zdWJzY3JpYmUobXNnID0+IHtcclxuICAgICAgICAgICAgLy8gRG8gTk9UIHVwZGF0ZSBub3RpZmljYXRpb25zIGhlcmVcclxuICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgYWN0aXZlIGNoYXQgVUkgb25seVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIHVwc2VydE5vdGlmaWNhdGlvbihkYXRhOiBQYXJ0aWFsPENoYXROb3RpZmljYXRpb24+ICYgeyB1bnJlYWREZWx0YT86IG51bWJlciB9KSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnVwZGF0ZShsaXN0ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleChuID0+IG4ucm9vbUlkID09PSBkYXRhLnJvb21JZCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuID0gbGlzdFtpbmRleF07XHJcbiAgICAgICAgICAgICAgICBsaXN0W2luZGV4XSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5uLFxyXG4gICAgICAgICAgICAgICAgICAgIHVucmVhZENvdW50OiBuLnVucmVhZENvdW50ICsgKGRhdGEudW5yZWFkRGVsdGEgPz8gMSksXHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdE1lc3NhZ2U6IGRhdGEubGFzdE1lc3NhZ2UgPz8gbi5sYXN0TWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KClcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmxpc3RdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgLi4ubGlzdCxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IGRhdGEucm9vbUlkISxcclxuICAgICAgICAgICAgICAgICAgICByb29tTmFtZTogZGF0YS5yb29tTmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBkYXRhLnR5cGUhLFxyXG4gICAgICAgICAgICAgICAgICAgIHVucmVhZENvdW50OiBkYXRhLnVucmVhZERlbHRhID8/IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdE1lc3NhZ2U6IGRhdGEubGFzdE1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubm90aWZ5QXJyaXZhbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyUm9vbShyb29tSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy51cGRhdGUobGlzdCA9PlxyXG4gICAgICAgICAgICBsaXN0LmZpbHRlcihuID0+IG4ucm9vbUlkICE9PSByb29tSWQpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckFsbCgpIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuc2V0KFtdKTtcclxuICAgIH1cclxuXHJcbiAgICBub3RpZnlBcnJpdmFsKCkge1xyXG4gICAgICAgIHRoaXMuaGFzTmV3Tm90aWZpY2F0aW9uLnNldCh0cnVlKTtcclxuICAgICAgICAvLyBhdXRvLXJlc2V0IGFmdGVyIGFuaW1hdGlvblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhhc05ld05vdGlmaWNhdGlvbi5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH0sIDEyMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFsbE5vdGlmaWNhdGlvbnMobG9nZ2VkSW5Vc2VySWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihgJHt0aGlzLmJhc2VVcmx9L2FwaS9jaGF0L25vdGlmaWNhdGlvbnMvZ2V0X2FsbC8ke2xvZ2dlZEluVXNlcklkfS9gKTtcclxuICAgIH1cclxuXHJcbiAgICBoeWRyYXRlTm90aWZpY2F0aW9ucyh1c2VySWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEFsbE5vdGlmaWNhdGlvbnModXNlcklkKS5zdWJzY3JpYmUocm93cyA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwZWQgPSBuZXcgTWFwPHN0cmluZywgQ2hhdE5vdGlmaWNhdGlvbj4oKTtcclxuXHJcbiAgICAgICAgICAgIHJvd3MuZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJvb21JZCA9IG4uZW50aXR5SWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWdyb3VwZWQuaGFzKHJvb21JZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBncm91cGVkLnNldChyb29tSWQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vbUlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1bnJlYWRDb3VudDogMSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE1lc3NhZ2U6IG4udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogbi5ldmVudFR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGdyb3VwZWQuZ2V0KHJvb21JZCkhLnVucmVhZENvdW50ICs9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnNldChbLi4uZ3JvdXBlZC52YWx1ZXMoKV0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcmtSb29tQXNSZWFkKHJvb21JZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnVwZGF0ZShsaXN0ID0+XHJcbiAgICAgICAgICAgIGxpc3QubWFwKG4gPT5cclxuICAgICAgICAgICAgICAgIG4ucm9vbUlkID09PSByb29tSWRcclxuICAgICAgICAgICAgICAgICAgICA/IHsuLi5uLCB1bnJlYWRDb3VudDogMH1cclxuICAgICAgICAgICAgICAgICAgICA6IG5cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC13aWRnZXQvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2NoYXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR25DLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQU1sRCxNQUFNLE9BQU8sV0FBVztJQVNwQixZQUFvQixJQUFnQixFQUNILE1BQWtCLEVBQ3ZDLE1BQXFCO1FBRmIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNILFdBQU0sR0FBTixNQUFNLENBQVk7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVZqQywwREFBMEQ7UUFFMUQsZ0JBQVcsR0FBRyxNQUFNLENBQWEsSUFBSSxDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLE1BQU0sQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUM3QixrQkFBYSxHQUFHLE1BQU0sQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLE1BQU0sQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDL0MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSy9CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsVUFBVSxDQUFDLE1BQWMsRUFBRSxJQUFZLEVBQUUsUUFBZ0IsRUFBRSxTQUFpQixFQUFFLFFBQWdCLEVBQUUsU0FBYztRQUMxRyxPQUFPLElBQUksQ0FBQyxJQUFJ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LENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQ3hDLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyw2QkFBNkI7UUFDN0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQzsrR0FyTFEsV0FBVyw0Q0FVUixXQUFXO21IQVZkLFdBQVcsY0FEQyxNQUFNOzs0RkFDbEIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQVd2QixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Q2hhdE1lc3NhZ2V9IGZyb20gJy4uL21vZGVscy9jaGF0Lm1vZGVscyc7XHJcbmltcG9ydCB7Q0hBVF9DT05GSUd9IGZyb20gXCIuLi9jb25maWcvY2hhdC50b2tlbnNcIjtcclxuaW1wb3J0IHtDaGF0Q29uZmlnfSBmcm9tIFwiLi4vY29uZmlnL2NoYXQtY29uZmlnXCI7XHJcbmltcG9ydCB7Q2hhdE5vdGlmaWNhdGlvbn0gZnJvbSBcIi4uL21vZGVscy9ub3RpZmljYXRpb24ubW9kZWxcIjtcclxuaW1wb3J0IHtTb2NrZXRTZXJ2aWNlfSBmcm9tIFwiLi9zb2NrZXQuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXHJcbmV4cG9ydCBjbGFzcyBDaGF0U2VydmljZSB7XHJcbiAgICAvLyBwcml2YXRlIGJhc2VVcmwgPSBgaHR0cHM6Ly9jb3JldWF0YXJ0aGtvc2guc2FyamFrLmNvbWA7XHJcblxyXG4gICAgY3VycmVudFVzZXIgPSBzaWduYWw8YW55IHwgbnVsbD4obnVsbCk7XHJcbiAgICB1c2VyTGlzdCA9IHNpZ25hbDxhbnlbXT4oW10pO1xyXG4gICAgYXJjaGl2ZVJvb21JZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcclxuICAgIG5vdGlmaWNhdGlvbnMgPSBzaWduYWw8Q2hhdE5vdGlmaWNhdGlvbltdPihbXSk7XHJcbiAgICBoYXNOZXdOb3RpZmljYXRpb24gPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBASW5qZWN0KENIQVRfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogQ2hhdENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIHNvY2tldDogU29ja2V0U2VydmljZSkge1xyXG4gICAgICAgIHRoaXMubGlzdGVuRm9yTm90aWZpY2F0aW9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBiYXNlVXJsKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5hcGlCYXNlVXJsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0gQ0hBVCBST09NUyAtLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICBjcmVhdGVSb29tKHJvb21JZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIG1ldGFkYXRhOiBzdHJpbmcsIGNyZWF0ZWRCeTogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBjaGF0VXNlcnM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuYmFzZVVybH0vYXBpL2NoYXQvY2hhdHJvb21zL2NyZWF0ZS8ke3Jvb21JZH0vYCwge1xyXG4gICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICBtZXRhZGF0YSxcclxuICAgICAgICAgICAgY3JlYXRlZEJ5LFxyXG4gICAgICAgICAgICB1c2VybmFtZSxcclxuICAgICAgICAgICAgY2hhdFVzZXJzXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Um9vbVVzZXJzKHJvb21JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihgJHt0aGlzLmJhc2VVcmx9L2FwaS9jaGF0L2NoYXRyb29tcy9nZXRfdXNlci8ke3Jvb21JZH0vdXNlcnMvYCkucGlwZShcclxuICAgICAgICAgICAgbWFwKGxpc3QgPT5cclxuICAgICAgICAgICAgICAgIGxpc3QubWFwKHUgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogdS5Vc2VySWQsXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU6IHUuVXNlck5hbWVcclxuICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRVc2VyVG9Sb29tKHJvb21JZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZywgdXNlck5hbWU6IHN0cmluZywgY3JlYXRlZEJ5OiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5iYXNlVXJsfS9hcGkvY2hhdC9jaGF0cm9vbXMvYWRkX3VzZXIvJHtyb29tSWR9L3VzZXJzL2FkZC9gLCB7XHJcbiAgICAgICAgICAgIHVzZXJJZCxcclxuICAgICAgICAgICAgdXNlck5hbWUsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRCeVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0gTUVTU0FHRVMgLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgZ2V0TWVzc2FnZXMocm9vbUlkOiBzdHJpbmcsIHNpbmNlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxDaGF0TWVzc2FnZVtdPiB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgICAgICBpZiAoc2luY2UpIHBhcmFtcy5zaW5jZSA9IHNpbmNlO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oYCR7dGhpcy5iYXNlVXJsfS9hcGkvY2hhdC9tZXNzYWdlcy9yb29tcy9hbGxfbWVzc2FnZXMvJHtyb29tSWR9L2AsIHtwYXJhbXN9KS5waXBlKFxyXG4gICAgICAgICAgICBtYXAobGlzdCA9PlxyXG4gICAgICAgICAgICAgICAgbGlzdC5tYXAobSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBtLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGNoYXRSb29tSWQ6IG0uY2hhdFJvb21JZCxcclxuICAgICAgICAgICAgICAgICAgICBzZW5kZXJJZDogbS5zZW5kZXJJZCxcclxuICAgICAgICAgICAgICAgICAgICBzZW5kZXJOYW1lOiBtLnNlbmRlck5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogbS5jb250ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlcGx5VG9NZXNzYWdlSWQ6IG0ucmVwbHlUb01lc3NhZ2VJZCxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IG0uY3JlYXRlZEF0LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhc0F0dGFjaG1lbnQ6IG0uaGFzQXR0YWNobWVudCA/PyBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kTWVzc2FnZShcclxuICAgICAgICByb29tSWQ6IHN0cmluZyxcclxuICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICAgIHNlbmRlcklkOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHNlbmRlck5hbWU6IHN0cmluZyxcclxuICAgICAgICAgICAgY29udGVudDogc3RyaW5nO1xyXG4gICAgICAgICAgICByZXBseVRvTWVzc2FnZUlkPzogc3RyaW5nIHwgbnVsbCxcclxuICAgICAgICAgICAgY3JlYXRlZEJ5OiBzdHJpbmdcclxuICAgICAgICB9XHJcbiAgICApOiBPYnNlcnZhYmxlPENoYXRNZXNzYWdlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfS9hcGkvY2hhdC9tZXNzYWdlcy9yb29tcy9zZW5kLyR7cm9vbUlkfS9gLCBwYXlsb2FkKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAobSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IG0uaWQsXHJcbiAgICAgICAgICAgICAgICBjaGF0Um9vbUlkOiBtLmNoYXRSb29tSWQsXHJcbiAgICAgICAgICAgICAgICBzZW5kZXJJZDogbS5zZW5kZXJJZCxcclxuICAgICAgICAgICAgICAgIHNlbmRlck5hbWU6IG0uc2VuZGVyTmFtZSxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IG0uY29udGVudCxcclxuICAgICAgICAgICAgICAgIHJlcGx5VG9NZXNzYWdlSWQ6IG0ucmVwbHlUb01lc3NhZ2VJZCxcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRBdDogbS5jcmVhdGVkQXQsXHJcbiAgICAgICAgICAgICAgICBoYXNBdHRhY2htZW50OiBtLmhhc0F0dGFjaG1lbnQgPz8gZmFsc2UsXHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Um9vbXMobG9nZ2VkSW5Vc2VySWQ6IHN0cmluZywgY2hhdFJvb21JZD86IHN0cmluZykge1xyXG4gICAgICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2FwaS9jaGF0L2NoYXRyb29tcy8ke2xvZ2dlZEluVXNlcklkfWA7XHJcbiAgICAgICAgaWYgKGNoYXRSb29tSWQpIHtcclxuICAgICAgICAgICAgdXJsICs9IGAvJHtjaGF0Um9vbUlkfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihgJHt1cmx9L2ApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhcmNoaXZlUm9vbShyb29tSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueVtdPihgJHt0aGlzLmJhc2VVcmx9L2FwaS9jaGF0L2NoYXRyb29tcy9hcmNoaXZlLyR7cm9vbUlkfS9gKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGxpc3RlbkZvck5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpc3RlbmluZyBmb3Igbm90aWZpY2F0aW9ucycpO1xyXG4gICAgICAgIC8vIPCflJQgQURERUQgVE8gUk9PTSDigJQgb25seSBhZGRlZCB1c2VyXHJcbiAgICAgICAgdGhpcy5zb2NrZXQub24oJ2FkZGVkVG9Sb29tJykuc3Vic2NyaWJlKChtc2c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnYWRkZWRUb1Jvb20nLCBtc2cpO1xyXG4gICAgICAgICAgICBpZiAobXNnLmFkZGVkVXNlcklkICE9PSB0aGlzLmN1cnJlbnRVc2VyKCkudXNlcklkKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwc2VydE5vdGlmaWNhdGlvbih7XHJcbiAgICAgICAgICAgICAgICByb29tSWQ6IG1zZy5jaGF0Um9vbUlkLFxyXG4gICAgICAgICAgICAgICAgcm9vbU5hbWU6IG1zZy5yb29tTmFtZSxcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdhZGRlZCdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIPCflJQgTkVXIE1FU1NBR0Ug4oCUIGV2ZXJ5b25lIEVYQ0VQVCBzZW5kZXJcclxuICAgICAgICB0aGlzLnNvY2tldC5vbignbmV3TWVzc2FnZScpLnN1YnNjcmliZSgobXNnOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ25ld01lc3NhZ2UnLCBtc2cpO1xyXG4gICAgICAgICAgICBpZiAobXNnLnNlbmRlcklkID09PSB0aGlzLmN1cnJlbnRVc2VyKCkudXNlcklkKSByZXR1cm47XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwc2VydE5vdGlmaWNhdGlvbih7XHJcbiAgICAgICAgICAgICAgICByb29tSWQ6IG1zZy5jaGF0Um9vbUlkLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ21lc3NhZ2UnLFxyXG4gICAgICAgICAgICAgICAgbGFzdE1lc3NhZ2U6IG1zZy5jb250ZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBzZXJ0Tm90aWZpY2F0aW9uKGRhdGE6IFBhcnRpYWw8Q2hhdE5vdGlmaWNhdGlvbj4pIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMudXBkYXRlKGxpc3QgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGxpc3QuZmluZEluZGV4KG4gPT4gbi5yb29tSWQgPT09IGRhdGEucm9vbUlkKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBsaXN0W2luZGV4XTtcclxuICAgICAgICAgICAgICAgIGxpc3RbaW5kZXhdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLm4sXHJcbiAgICAgICAgICAgICAgICAgICAgdW5yZWFkQ291bnQ6IG4udW5yZWFkQ291bnQgKyAxLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RNZXNzYWdlOiBkYXRhLmxhc3RNZXNzYWdlID8/IG4ubGFzdE1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5saXN0XTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgIC4uLmxpc3QsXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vbUlkOiBkYXRhLnJvb21JZCEsXHJcbiAgICAgICAgICAgICAgICAgICAgcm9vbU5hbWU6IGRhdGEucm9vbU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogZGF0YS50eXBlISxcclxuICAgICAgICAgICAgICAgICAgICB1bnJlYWRDb3VudDogMSxcclxuICAgICAgICAgICAgICAgICAgICBsYXN0TWVzc2FnZTogZGF0YS5sYXN0TWVzc2FnZSxcclxuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5ub3RpZnlBcnJpdmFsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJSb29tKHJvb21JZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnVwZGF0ZShsaXN0ID0+XHJcbiAgICAgICAgICAgIGxpc3QuZmlsdGVyKG4gPT4gbi5yb29tSWQgIT09IHJvb21JZClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQWxsKCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5zZXQoW10pO1xyXG4gICAgfVxyXG5cclxuICAgIG5vdGlmeUFycml2YWwoKSB7XHJcbiAgICAgICAgdGhpcy5oYXNOZXdOb3RpZmljYXRpb24uc2V0KHRydWUpO1xyXG4gICAgICAgIC8vIGF1dG8tcmVzZXQgYWZ0ZXIgYW5pbWF0aW9uXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzTmV3Tm90aWZpY2F0aW9uLnNldChmYWxzZSk7XHJcbiAgICAgICAgfSwgMTIwMCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -11,15 +11,11 @@ export class SocketService {
11
11
  connect() {
12
12
  // this.socket = new WebSocket('wss://coreuatarthkosh.sarjak.com/ws/');
13
13
  this.socket = new WebSocket(`${this.config.wsBaseUrl}/ws/`);
14
- if (this.socket && this.socket.readyState === WebSocket.OPEN) {
15
- return;
16
- }
17
14
  this.socket.onopen = () => {
18
15
  console.log('[WS] Connected');
19
16
  };
20
17
  this.socket.onmessage = (event) => {
21
18
  const msg = JSON.parse(event.data);
22
- console.log('socket.onmessage', event);
23
19
  const handlers = this.listeners.get(msg.event) || [];
24
20
  handlers.forEach(h => h(msg.data));
25
21
  };
@@ -96,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
96
92
  type: Inject,
97
93
  args: [CHAT_CONFIG]
98
94
  }] }] });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NvcmUvc2VydmljZXMvc29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBSWxELE1BQU0sT0FBTyxhQUFhO0lBS3RCLFlBQXlDLE1BQWtCO1FBQWxCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFGbkQsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBRzNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTztRQUNILHVFQUF1RTtRQUV2RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLE1BQU0sQ0FBQyxDQUFDO1FBRTVELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0QsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDOUIsTUFBTSxHQUFHLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsT0FB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtDSEFUX0NPTkZJR30gZnJvbSBcIi4uL2NvbmZpZy9jaGF0LnRva2Vuc1wiO1xyXG5pbXBvcnQge0NoYXRDb25maWd9IGZyb20gXCIuLi9jb25maWcvY2hhdC1jb25maWdcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgU29ja2V0U2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzb2NrZXQhOiBXZWJTb2NrZXQ7XHJcbiAgICBwcml2YXRlIGxpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCAoKGRhdGE6IGFueSkgPT4gdm9pZClbXT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KENIQVRfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogQ2hhdENvbmZpZykge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbm5lY3QoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5zb2NrZXQgPSBuZXcgV2ViU29ja2V0KCd3c3M6Ly9jb3JldWF0YXJ0aGtvc2guc2FyamFrLmNvbS93cy8nKTtcclxuXHJcbiAgICAgICAgdGhpcy5zb2NrZXQgPSBuZXcgV2ViU29ja2V0KGAke3RoaXMuY29uZmlnLndzQmFzZVVybH0vd3MvYCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNvY2tldCAmJiB0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNvY2tldC5vbm9wZW4gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbV1NdIENvbm5lY3RlZCcpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc29ja2V0Lm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtc2c6IGFueSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzb2NrZXQub25tZXNzYWdlJywgZXZlbnQpO1xyXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMubGlzdGVuZXJzLmdldChtc2cuZXZlbnQpIHx8IFtdO1xyXG4gICAgICAgICAgICBoYW5kbGVycy5mb3JFYWNoKGggPT4gaChtc2cuZGF0YSkpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc29ja2V0Lm9uZXJyb3IgPSAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tXU10gRXJyb3InLCBlcnIpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW1dTXSBEaXNjb25uZWN0ZWQg4oCTIHJlY29ubmVjdGluZy4uLicpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29ubmVjdCgpLCAyMDAwKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgZGF0YT86IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtldmVudCwgZGF0YX07XHJcbiAgICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgam9pblJvb20ocm9vbUlkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmVtaXQoJ2pvaW5Sb29tJywgcm9vbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBqb2luVXNlckNoYW5uZWwodXNlcklkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmVtaXQoJ2pvaW5Vc2VyQ2hhbm5lbCcsIHVzZXJJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZE1lc3NhZ2UoZGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdzZW5kTWVzc2FnZScsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIG1lc3NhZ2VTZWVuKGRhdGE6IHsgY2hhdFJvb21JZDogc3RyaW5nOyB1c2VySWQ6IHN0cmluZyB9KSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdtZXNzYWdlU2VlbicsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uPFQ+KGV2ZW50OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3ViID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9IChkYXRhOiBUKSA9PiBzdWIubmV4dChkYXRhKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5saXN0ZW5lcnMuaGFzKGV2ZW50KSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuc2V0KGV2ZW50LCBbXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuZ2V0KGV2ZW50KSEucHVzaChoYW5kbGVyKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcnIgPSB0aGlzLmxpc3RlbmVycy5nZXQoZXZlbnQpIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuc2V0KGV2ZW50LCBhcnIuZmlsdGVyKGggPT4gaCAhPT0gaGFuZGxlcikpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTmV3TWVzc2FnZShjYjogKG1zZzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgdGhpcy5hZGRMaXN0ZW5lcignbmV3TWVzc2FnZScsIGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBvZmZOZXdNZXNzYWdlKGNiPzogKG1zZzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcignbmV3TWVzc2FnZScsIGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBvbk1lc3NhZ2VTZWVuKGNiOiAoZGF0YTogeyBjaGF0Um9vbUlkOiBzdHJpbmc7IHVzZXJJZDogc3RyaW5nIH0pID0+IHZvaWQpIHtcclxuICAgICAgICB0aGlzLmFkZExpc3RlbmVyKCdtZXNzYWdlU2VlbicsIGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBvZmZNZXNzYWdlU2VlbihjYj86IChkYXRhOiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdtZXNzYWdlU2VlbicsIGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZExpc3RlbmVyKGV2ZW50OiBzdHJpbmcsIGNiOiAoZGF0YTogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmVycy5oYXMoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNldChldmVudCwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxpc3RlbmVycy5nZXQoZXZlbnQpIS5wdXNoKGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlbW92ZUxpc3RlbmVyKGV2ZW50OiBzdHJpbmcsIGNiPzogKGRhdGE6IGFueSkgPT4gdm9pZCkge1xyXG4gICAgICAgIGlmICghY2IpIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuZGVsZXRlKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhcnIgPSB0aGlzLmxpc3RlbmVycy5nZXQoZXZlbnQpIHx8IFtdO1xyXG4gICAgICAgIHRoaXMubGlzdGVuZXJzLnNldChldmVudCwgYXJyLmZpbHRlcihoID0+IGggIT09IGNiKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXdpZGdldC9zcmMvbGliL2NvcmUvc2VydmljZXMvc29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBSWxELE1BQU0sT0FBTyxhQUFhO0lBS3RCLFlBQXlDLE1BQWtCO1FBQWxCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFGbkQsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBRzNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sT0FBTztRQUNYLHVFQUF1RTtRQUV2RSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLE1BQU0sQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5QixNQUFNLEdBQUcsR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FB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RUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFhLEVBQUUsRUFBdUI7UUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFhLEVBQUUsRUFBd0I7UUFDMUQsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDOytHQXJHUSxhQUFhLGtCQUtGLFdBQVc7bUhBTHRCLGFBQWEsY0FERCxNQUFNOzs0RkFDbEIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7OzBCQU1mLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtDSEFUX0NPTkZJR30gZnJvbSBcIi4uL2NvbmZpZy9jaGF0LnRva2Vuc1wiO1xyXG5pbXBvcnQge0NoYXRDb25maWd9IGZyb20gXCIuLi9jb25maWcvY2hhdC1jb25maWdcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgU29ja2V0U2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzb2NrZXQhOiBXZWJTb2NrZXQ7XHJcbiAgICBwcml2YXRlIGxpc3RlbmVycyA9IG5ldyBNYXA8c3RyaW5nLCAoKGRhdGE6IGFueSkgPT4gdm9pZClbXT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KENIQVRfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogQ2hhdENvbmZpZykge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29ubmVjdCgpIHtcclxuICAgICAgICAvLyB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoJ3dzczovL2NvcmV1YXRhcnRoa29zaC5zYXJqYWsuY29tL3dzLycpO1xyXG5cclxuICAgICAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoYCR7dGhpcy5jb25maWcud3NCYXNlVXJsfS93cy9gKTtcclxuXHJcbiAgICAgICAgdGhpcy5zb2NrZXQub25vcGVuID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW1dTXSBDb25uZWN0ZWQnKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnNvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbXNnOiBhbnkgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xyXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMubGlzdGVuZXJzLmdldChtc2cuZXZlbnQpIHx8IFtdO1xyXG4gICAgICAgICAgICBoYW5kbGVycy5mb3JFYWNoKGggPT4gaChtc2cuZGF0YSkpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc29ja2V0Lm9uZXJyb3IgPSAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tXU10gRXJyb3InLCBlcnIpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW1dTXSBEaXNjb25uZWN0ZWQg4oCTIHJlY29ubmVjdGluZy4uLicpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29ubmVjdCgpLCAyMDAwKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGVtaXQoZXZlbnQ6IHN0cmluZywgZGF0YT86IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtldmVudCwgZGF0YX07XHJcbiAgICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgam9pblJvb20ocm9vbUlkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmVtaXQoJ2pvaW5Sb29tJywgcm9vbUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBqb2luVXNlckNoYW5uZWwodXNlcklkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmVtaXQoJ2pvaW5Vc2VyQ2hhbm5lbCcsIHVzZXJJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VuZE1lc3NhZ2UoZGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdzZW5kTWVzc2FnZScsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIG1lc3NhZ2VTZWVuKGRhdGE6IHsgY2hhdFJvb21JZDogc3RyaW5nOyB1c2VySWQ6IHN0cmluZyB9KSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdtZXNzYWdlU2VlbicsIGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uPFQ+KGV2ZW50OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoc3ViID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9IChkYXRhOiBUKSA9PiBzdWIubmV4dChkYXRhKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghdGhpcy5saXN0ZW5lcnMuaGFzKGV2ZW50KSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuc2V0KGV2ZW50LCBbXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuZ2V0KGV2ZW50KSEucHVzaChoYW5kbGVyKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcnIgPSB0aGlzLmxpc3RlbmVycy5nZXQoZXZlbnQpIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuc2V0KGV2ZW50LCBhcnIuZmlsdGVyKGggPT4gaCAhPT0gaGFuZGxlcikpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTmV3TWVzc2FnZShjYjogKG1zZzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgdGhpcy5hZGRMaXN0ZW5lcignbmV3TWVzc2FnZScsIGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBvZmZOZXdNZXNzYWdlKGNiPzogKG1zZzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcignbmV3TWVzc2FnZScsIGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBvbk1lc3NhZ2VTZWVuKGNiOiAoZGF0YTogeyBjaGF0Um9vbUlkOiBzdHJpbmc7IHVzZXJJZDogc3RyaW5nIH0pID0+IHZvaWQpIHtcclxuICAgICAgICB0aGlzLmFkZExpc3RlbmVyKCdtZXNzYWdlU2VlbicsIGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBvZmZNZXNzYWdlU2VlbihjYj86IChkYXRhOiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdtZXNzYWdlU2VlbicsIGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFkZExpc3RlbmVyKGV2ZW50OiBzdHJpbmcsIGNiOiAoZGF0YTogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmVycy5oYXMoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNldChldmVudCwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxpc3RlbmVycy5nZXQoZXZlbnQpIS5wdXNoKGNiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlbW92ZUxpc3RlbmVyKGV2ZW50OiBzdHJpbmcsIGNiPzogKGRhdGE6IGFueSkgPT4gdm9pZCkge1xyXG4gICAgICAgIGlmICghY2IpIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuZGVsZXRlKGV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhcnIgPSB0aGlzLmxpc3RlbmVycy5nZXQoZXZlbnQpIHx8IFtdO1xyXG4gICAgICAgIHRoaXMubGlzdGVuZXJzLnNldChldmVudCwgYXJyLmZpbHRlcihoID0+IGggIT09IGNiKSk7XHJcbiAgICB9XHJcbn1cclxuIl19