stream-chat-angular 4.45.0 → 4.45.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- export const version = '4.45.0';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc0LjQ1LjAnO1xuIl19
1
+ export const version = '4.45.2';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc0LjQ1LjInO1xuIl19
@@ -1,4 +1,3 @@
1
- import { __awaiter } from "tslib";
2
1
  import { Component, Input, } from '@angular/core';
3
2
  import { filter } from 'rxjs/operators';
4
3
  import * as i0 from "@angular/core";
@@ -28,44 +27,33 @@ export class AvatarComponent {
28
27
  this.isOnline = false;
29
28
  }
30
29
  ngOnChanges(changes) {
31
- var _a, _b, _c;
32
- return __awaiter(this, void 0, void 0, function* () {
33
- if (changes['channel']) {
34
- if (this.channel) {
35
- const otherMember = this.getOtherMemberIfOneToOneChannel();
36
- if (otherMember) {
37
- this.isOnlineSubscription = this.chatClientService.events$
38
- .pipe(filter((e) => e.eventType === 'user.presence.changed'))
39
- .subscribe((event) => {
40
- var _a;
41
- if (((_a = event.event.user) === null || _a === void 0 ? void 0 : _a.id) === otherMember.id) {
42
- this.ngZone.run(() => {
43
- var _a;
44
- this.isOnline = ((_a = event.event.user) === null || _a === void 0 ? void 0 : _a.online) || false;
45
- });
46
- }
47
- });
48
- try {
49
- const response = yield this.chatClientService.chatClient.queryUsers({
50
- id: { $eq: otherMember.id },
30
+ var _a, _b;
31
+ if (changes['channel']) {
32
+ if (this.channel) {
33
+ const otherMember = this.getOtherMemberIfOneToOneChannel();
34
+ if (otherMember) {
35
+ this.isOnline = otherMember.online || false;
36
+ this.isOnlineSubscription = this.chatClientService.events$
37
+ .pipe(filter((e) => e.eventType === 'user.presence.changed'))
38
+ .subscribe((event) => {
39
+ var _a;
40
+ if (((_a = event.event.user) === null || _a === void 0 ? void 0 : _a.id) === otherMember.id) {
41
+ this.ngZone.run(() => {
42
+ var _a;
43
+ this.isOnline = ((_a = event.event.user) === null || _a === void 0 ? void 0 : _a.online) || false;
51
44
  });
52
- this.isOnline = ((_a = response.users[0]) === null || _a === void 0 ? void 0 : _a.online) || false;
53
- }
54
- catch (error) {
55
- // Fallback if we can't query user -> for example due to permission problems
56
- this.isOnline = otherMember.online || false;
57
45
  }
58
- }
59
- else {
60
- (_b = this.isOnlineSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
61
- }
46
+ });
62
47
  }
63
48
  else {
64
- this.isOnline = false;
65
- (_c = this.isOnlineSubscription) === null || _c === void 0 ? void 0 : _c.unsubscribe();
49
+ (_a = this.isOnlineSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
66
50
  }
67
51
  }
68
- });
52
+ else {
53
+ this.isOnline = false;
54
+ (_b = this.isOnlineSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
55
+ }
56
+ }
69
57
  }
70
58
  get initials() {
71
59
  var _a, _b, _c, _d, _e;
@@ -123,7 +111,7 @@ export class AvatarComponent {
123
111
  }
124
112
  }
125
113
  AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.ChatClientService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
126
- AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AvatarComponent, selector: "stream-avatar", inputs: { name: "name", imageUrl: "imageUrl", size: "size", location: "location", channel: "channel", user: "user", type: "type", showOnlineIndicator: "showOnlineIndicator", initialsType: "initialsType" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"str-chat__avatar str-chat__avatar--circle stream-chat__avatar--{{\n location\n }}\"\n title=\"{{ name }}\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n fontSize:\n initialsType === 'first-letter-of-first-word'\n ? 'calc(var(--str-chat__spacing-px, 1px) * ' + size / 2 + ')'\n : 'calc(var(--str-chat__spacing-px, 1px) * ' + size / 3 + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n lineHeight: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n>\n <img\n *ngIf=\"(imageUrl || fallbackChannelImage) && !isError; else fallback\"\n class=\"str-chat__avatar-image str-chat__avatar-image{{\n isLoaded ? ' str-chat__avatar-image--loaded' : ''\n }}\"\n src=\"{{ imageUrl || fallbackChannelImage }}\"\n alt=\"{{ initials }}\"\n data-testid=\"avatar-img\"\n (load)=\"isLoaded = true\"\n (error)=\"isError = true\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n objectFit: 'cover',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n />\n <ng-template #fallback>\n <div\n data-testid=\"fallback-img\"\n style=\"overflow: hidden; white-space: nowrap; text-overflow: ellipsis\"\n class=\"str-chat__avatar-fallback\"\n >\n {{ initials }}\n </div>\n </ng-template>\n <div\n data-testid=\"online-indicator\"\n *ngIf=\"isOnline\"\n class=\"str-chat__avatar--online-indicator\"\n ></div>\n</div>\n", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
114
+ AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AvatarComponent, selector: "stream-avatar", inputs: { name: "name", imageUrl: "imageUrl", size: "size", location: "location", channel: "channel", user: "user", type: "type", showOnlineIndicator: "showOnlineIndicator", initialsType: "initialsType" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"str-chat__avatar str-chat__avatar--circle stream-chat__avatar--{{\n location\n }}\"\n title=\"{{ name }}\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n fontSize:\n initialsType === 'first-letter-of-first-word'\n ? 'calc(var(--str-chat__spacing-px, 1px) * ' + size / 2 + ')'\n : 'calc(var(--str-chat__spacing-px, 1px) * ' + size / 3 + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n lineHeight: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n>\n <img\n *ngIf=\"(imageUrl || fallbackChannelImage) && !isError; else fallback\"\n class=\"str-chat__avatar-image str-chat__avatar-image{{\n isLoaded ? ' str-chat__avatar-image--loaded' : ''\n }}\"\n src=\"{{ imageUrl || fallbackChannelImage }}\"\n alt=\"{{ initials }}\"\n data-testid=\"avatar-img\"\n (load)=\"isLoaded = true\"\n (error)=\"isError = true\"\n [style]=\"{\n flexBasis: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n height: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')',\n objectFit: 'cover',\n width: 'calc(var(--str-chat__spacing-px, 1px) * ' + size + ')'\n }\"\n />\n <ng-template #fallback>\n <div\n data-testid=\"fallback-img\"\n style=\"overflow: hidden; white-space: nowrap; text-overflow: ellipsis\"\n class=\"str-chat__avatar-fallback\"\n >\n {{ initials }}\n </div>\n </ng-template>\n <div\n data-testid=\"online-indicator\"\n *ngIf=\"isOnline && showOnlineIndicator\"\n class=\"str-chat__avatar--online-indicator\"\n ></div>\n</div>\n", styles: [""], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
127
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AvatarComponent, decorators: [{
128
116
  type: Component,
129
117
  args: [{
@@ -150,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
150
138
  }], initialsType: [{
151
139
  type: Input
152
140
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFTeEM7O0dBRUc7QUFNSCxNQUFNLE9BQU8sZUFBZTtJQTRDMUIsWUFDVSxpQkFBb0MsRUFDcEMsTUFBYztRQURkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXJDeEI7O1dBRUc7UUFDTSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBaUJuQjs7V0FFRztRQUNNLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUNwQzs7V0FFRztRQUNNLGlCQUFZLEdBRWEsNEJBQTRCLENBQUM7UUFDL0QsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUM7SUFNZCxDQUFDO0lBRUUsV0FBVyxDQUFDLE9BQXNCOzs7WUFDdEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDaEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7b0JBQzNELElBQUksV0FBVyxFQUFFO3dCQUNmLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTzs2QkFD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S0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDaGFubmVsLCBVc2VyIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEF2YXRhckxvY2F0aW9uLFxuICBBdmF0YXJUeXBlLFxuICBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogVGhlIGBBdmF0YXJgIGNvbXBvbmVudCBkaXNwbGF5cyB0aGUgcHJvdmlkZWQgaW1hZ2UsIHdpdGggZmFsbGJhY2sgdG8gdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgb3B0aW9uYWwgbmFtZSBpbnB1dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLWF2YXRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIGltYWdlLCB1c2VkIGZvciBmYWxsYmFjayBpbWFnZSBvciBpbWFnZSB0aXRsZSAoaWYgYGltYWdlVXJsYCBpcyBwcm92aWRlZClcbiAgICovXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBVUkwgb2YgdGhlIGltYWdlIHRvIGJlIGRpc3BsYXllZC4gSWYgdGhlIGltYWdlIGNhbid0IGJlIGRpc3BsYXllZCB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBuYW1lIGlucHV0IGlzIGRpc3BsYXllZC5cbiAgICovXG4gIEBJbnB1dCgpIGltYWdlVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBpbiBwaXhlbHMgb2YgdGhlIGF2YXRhciBpbWFnZS5cbiAgICovXG4gIEBJbnB1dCgpIHNpemUgPSAzMjtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB0aGUgYXZhdGFyIHdpbGwgYmUgZGlzcGxheWVkIGluXG4gICAqL1xuICBASW5wdXQoKSBsb2NhdGlvbjogQXZhdGFyTG9jYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgY2hhbm5lbCB0aGUgYXZhdGFyIGJlbG9uZ3MgdG8gKGlmIGF2YXRhciBvZiBhIGNoYW5uZWwgaXMgZGlzcGxheWVkKVxuICAgKi9cbiAgQElucHV0KCkgY2hhbm5lbD86IENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIC8qKlxuICAgKiBUaGUgdXNlciB0aGUgYXZhdGFyIGJlbG9uZ3MgdG8gKGlmIGF2YXRhciBvZiBhIHVzZXIgaXMgZGlzcGxheWVkKVxuICAgKi9cbiAgQElucHV0KCkgdXNlcj86IFVzZXI8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgYXZhdGFyOiBjaGFubmVsIGlmIGNoYW5uZWwgYXZhdGFyIGlzIGRpc3BsYXllZCwgdXNlciBpZiB1c2VyIGF2YXRhciBpcyBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IEF2YXRhclR5cGUgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBhIGNoYW5uZWwgYXZhdGFyIGlzIGRpc3BsYXllZCwgYW5kIGlmIHRoZSBjaGFubmVsIGhhcyBleGFjdGx5IHR3byBtZW1iZXJzIGEgZ3JlZW4gZG90IGlzIGRpc3BsYXllZCBpZiB0aGUgb3RoZXIgbWVtYmVyIGlzIG9ubGluZS4gU2V0IHRoaXMgZmxhZyB0byBgZmFsc2VgIHRvIHR1cm4gb2ZmIHRoaXMgYmVoYXZpb3IuXG4gICAqL1xuICBASW5wdXQoKSBzaG93T25saW5lSW5kaWNhdG9yID0gdHJ1ZTtcbiAgLyoqXG4gICAqIElmIGNoYW5uZWwvdXNlciBpbWFnZSBpc24ndCBwcm92aWRlZCB0aGUgaW5pdGlhbHMgb2YgdGhlIG5hbWUgb2YgdGhlIGNoYW5uZWwvdXNlciBpcyBzaG93biBpbnN0ZWFkLCB5b3UgY2FuIGNob29zZSBob3cgdGhlIGluaXRhbHMgc2hvdWxkIGJlIGNvbXB1dGVkXG4gICAqL1xuICBASW5wdXQoKSBpbml0aWFsc1R5cGU6XG4gICAgfCAnZmlyc3QtbGV0dGVyLW9mLWZpcnN0LXdvcmQnXG4gICAgfCAnZmlyc3QtbGV0dGVyLW9mLWVhY2gtd29yZCcgPSAnZmlyc3QtbGV0dGVyLW9mLWZpcnN0LXdvcmQnO1xuICBpc0xvYWRlZCA9IGZhbHNlO1xuICBpc0Vycm9yID0gZmFsc2U7XG4gIGlzT25saW5lID0gZmFsc2U7XG4gIHByaXZhdGUgaXNPbmxpbmVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydjaGFubmVsJ10pIHtcbiAgICAgIGlmICh0aGlzLmNoYW5uZWwpIHtcbiAgICAgICAgY29uc3Qgb3RoZXJNZW1iZXIgPSB0aGlzLmdldE90aGVyTWVtYmVySWZPbmVUb09uZUNoYW5uZWwoKTtcbiAgICAgICAgaWYgKG90aGVyTWVtYmVyKSB7XG4gICAgICAgICAgdGhpcy5pc09ubGluZVN1YnNjcmlwdGlvbiA9IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuZXZlbnRzJFxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKChlKSA9PiBlLmV2ZW50VHlwZSA9PT0gJ3VzZXIucHJlc2VuY2UuY2hhbmdlZCcpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmV2ZW50LnVzZXI/LmlkID09PSBvdGhlck1lbWJlci5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmlzT25saW5lID0gZXZlbnQuZXZlbnQudXNlcj8ub25saW5lIHx8IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQucXVlcnlVc2VycyhcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiB7ICRlcTogb3RoZXJNZW1iZXIuaWQgfSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuaXNPbmxpbmUgPSByZXNwb25zZS51c2Vyc1swXT8ub25saW5lIHx8IGZhbHNlO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFjayBpZiB3ZSBjYW4ndCBxdWVyeSB1c2VyIC0+IGZvciBleGFtcGxlIGR1ZSB0byBwZXJtaXNzaW9uIHByb2JsZW1zXG4gICAgICAgICAgICB0aGlzLmlzT25saW5lID0gb3RoZXJNZW1iZXIub25saW5lIHx8IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzT25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzT25saW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNPbmxpbmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGluaXRpYWxzKCkge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9ICcnO1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICd1c2VyJykge1xuICAgICAgcmVzdWx0ID0gdGhpcy5uYW1lPy50b1N0cmluZygpIHx8ICcnO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnY2hhbm5lbCcpIHtcbiAgICAgIGlmICh0aGlzLmNoYW5uZWw/LmRhdGE/Lm5hbWUpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5jaGFubmVsPy5kYXRhPy5uYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3RoZXJNZW1iZXIgPSB0aGlzLmdldE90aGVyTWVtYmVySWZPbmVUb09uZUNoYW5uZWwoKTtcbiAgICAgICAgaWYgKG90aGVyTWVtYmVyKSB7XG4gICAgICAgICAgcmVzdWx0ID0gb3RoZXJNZW1iZXIubmFtZSB8fCBvdGhlck1lbWJlci5pZCB8fCAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSAnIyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3b3JkcyA9IHJlc3VsdC5zcGxpdCgnICcpO1xuICAgIGxldCBpbml0aWFsczogc3RyaW5nO1xuICAgIGlmICh0aGlzLmluaXRpYWxzVHlwZSA9PT0gJ2ZpcnN0LWxldHRlci1vZi1lYWNoLXdvcmQnKSB7XG4gICAgICBpbml0aWFscyA9IHdvcmRzLm1hcCgodykgPT4gdy5jaGFyQXQoMCkgfHwgJycpLmpvaW4oJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0aWFscyA9IHdvcmRzWzBdLmNoYXJBdCgwKSB8fCAnJztcbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxzO1xuICB9XG5cbiAgZ2V0IGZhbGxiYWNrQ2hhbm5lbEltYWdlKCkge1xuICAgIGlmICh0aGlzLnR5cGUgIT09ICdjaGFubmVsJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3RoZXJNZW1iZXIgPSB0aGlzLmdldE90aGVyTWVtYmVySWZPbmVUb09uZUNoYW5uZWwoKTtcbiAgICAgIGlmIChvdGhlck1lbWJlcikge1xuICAgICAgICByZXR1cm4gb3RoZXJNZW1iZXIuaW1hZ2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3RoZXJNZW1iZXJJZk9uZVRvT25lQ2hhbm5lbCgpIHtcbiAgICBjb25zdCBvdGhlck1lbWJlcnMgPSBPYmplY3QudmFsdWVzKFxuICAgICAgdGhpcy5jaGFubmVsPy5zdGF0ZT8ubWVtYmVycyB8fCB7fVxuICAgICkuZmlsdGVyKChtKSA9PiBtLnVzZXJfaWQgIT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyPy5pZCk7XG4gICAgaWYgKG90aGVyTWVtYmVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBvdGhlck1lbWJlcnNbMF0udXNlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdF9fYXZhdGFyIHN0ci1jaGF0X19hdmF0YXItLWNpcmNsZSBzdHJlYW0tY2hhdF9fYXZhdGFyLS17e1xuICAgIGxvY2F0aW9uXG4gIH19XCJcbiAgdGl0bGU9XCJ7eyBuYW1lIH19XCJcbiAgW3N0eWxlXT1cIntcbiAgICBmbGV4QmFzaXM6ICdjYWxjKHZhcigtLXN0ci1jaGF0X19zcGFjaW5nLXB4LCAxcHgpICogJyArIHNpemUgKyAnKScsXG4gICAgZm9udFNpemU6XG4gICAgICBpbml0aWFsc1R5cGUgPT09ICdmaXJzdC1sZXR0ZXItb2YtZmlyc3Qtd29yZCdcbiAgICAgICAgPyAnY2FsYyh2YXIoLS1zdHItY2hhdF9fc3BhY2luZy1weCwgMXB4KSAqICcgKyBzaXplIC8gMiArICcpJ1xuICAgICAgICA6ICdjYWxjKHZhcigtLXN0ci1jaGF0X19zcGFjaW5nLXB4LCAxcHgpICogJyArIHNpemUgLyAzICsgJyknLFxuICAgIGhlaWdodDogJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSArICcpJyxcbiAgICBsaW5lSGVpZ2h0OiAnY2FsYyh2YXIoLS1zdHItY2hhdF9fc3BhY2luZy1weCwgMXB4KSAqICcgKyBzaXplICsgJyknLFxuICAgIHdpZHRoOiAnY2FsYyh2YXIoLS1zdHItY2hhdF9fc3BhY2luZy1weCwgMXB4KSAqICcgKyBzaXplICsgJyknXG4gIH1cIlxuPlxuICA8aW1nXG4gICAgKm5nSWY9XCIoaW1hZ2VVcmwgfHwgZmFsbGJhY2tDaGFubmVsSW1hZ2UpICYmICFpc0Vycm9yOyBlbHNlIGZhbGxiYWNrXCJcbiAgICBjbGFzcz1cInN0ci1jaGF0X19hdmF0YXItaW1hZ2Ugc3RyLWNoYXRfX2F2YXRhci1pbWFnZXt7XG4gICAgICBpc0xvYWRlZCA/ICcgc3RyLWNoYXRfX2F2YXRhci1pbWFnZS0tbG9hZGVkJyA6ICcnXG4gICAgfX1cIlxuICAgIHNyYz1cInt7IGltYWdlVXJsIHx8IGZhbGxiYWNrQ2hhbm5lbEltYWdlIH19XCJcbiAgICBhbHQ9XCJ7eyBpbml0aWFscyB9fVwiXG4gICAgZGF0YS10ZXN0aWQ9XCJhdmF0YXItaW1nXCJcbiAgICAobG9hZCk9XCJpc0xvYWRlZCA9IHRydWVcIlxuICAgIChlcnJvcik9XCJpc0Vycm9yID0gdHJ1ZVwiXG4gICAgW3N0eWxlXT1cIntcbiAgICAgIGZsZXhCYXNpczogJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSArICcpJyxcbiAgICAgIGhlaWdodDogJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSArICcpJyxcbiAgICAgIG9iamVjdEZpdDogJ2NvdmVyJyxcbiAgICAgIHdpZHRoOiAnY2FsYyh2YXIoLS1zdHItY2hhdF9fc3BhY2luZy1weCwgMXB4KSAqICcgKyBzaXplICsgJyknXG4gICAgfVwiXG4gIC8+XG4gIDxuZy10ZW1wbGF0ZSAjZmFsbGJhY2s+XG4gICAgPGRpdlxuICAgICAgZGF0YS10ZXN0aWQ9XCJmYWxsYmFjay1pbWdcIlxuICAgICAgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpc1wiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19hdmF0YXItZmFsbGJhY2tcIlxuICAgID5cbiAgICAgIHt7IGluaXRpYWxzIH19XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXZcbiAgICBkYXRhLXRlc3RpZD1cIm9ubGluZS1pbmRpY2F0b3JcIlxuICAgICpuZ0lmPVwiaXNPbmxpbmVcIlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX2F2YXRhci0tb25saW5lLWluZGljYXRvclwiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxHQUlOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQVN4Qzs7R0FFRztBQU1ILE1BQU0sT0FBTyxlQUFlO0lBNEMxQixZQUNVLGlCQUFvQyxFQUNwQyxNQUFjO1FBRGQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBckN4Qjs7V0FFRztRQUNNLFNBQUksR0FBRyxFQUFFLENBQUM7UUFpQm5COztXQUVHO1FBQ00sd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ3BDOztXQUVHO1FBQ00saUJBQVksR0FFYSw0QkFBNEIsQ0FBQztRQUMvRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztJQU1kLENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7O1FBQ2hDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7Z0JBQzNELElBQUksV0FBVyxFQUFFO29CQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7b0JBQzVD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QUErQjs7UUFDckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDaEMsQ0FBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsS0FBSywwQ0FBRSxPQUFPLEtBQUksRUFBRSxDQUNuQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFDLENBQUMsT0FBTyxNQUFLLE1BQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLDBDQUFFLEVBQUUsQ0FBQSxDQUFBLEVBQUEsQ0FBQyxDQUFDO1FBQzFFLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQzdCO2FBQU07WUFDTCxPQUFPLFNBQVMsQ0FBQztTQUNsQjtJQUNILENBQUM7OzRHQTNIVSxlQUFlO2dHQUFmLGVBQWUsd1JDekI1Qixzc0RBZ0RBOzJGRHZCYSxlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixXQUFXLEVBQUUseUJBQXlCO29CQUN0QyxTQUFTLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDdkM7NkhBS1UsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYW5uZWwsIFVzZXIgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQXZhdGFyTG9jYXRpb24sXG4gIEF2YXRhclR5cGUsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG59IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgYEF2YXRhcmAgY29tcG9uZW50IGRpc3BsYXlzIHRoZSBwcm92aWRlZCBpbWFnZSwgd2l0aCBmYWxsYmFjayB0byB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBvcHRpb25hbCBuYW1lIGlucHV0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tYXZhdGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F2YXRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F2YXRhci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgaW1hZ2UsIHVzZWQgZm9yIGZhbGxiYWNrIGltYWdlIG9yIGltYWdlIHRpdGxlIChpZiBgaW1hZ2VVcmxgIGlzIHByb3ZpZGVkKVxuICAgKi9cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIFVSTCBvZiB0aGUgaW1hZ2UgdG8gYmUgZGlzcGxheWVkLiBJZiB0aGUgaW1hZ2UgY2FuJ3QgYmUgZGlzcGxheWVkIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIG5hbWUgaW5wdXQgaXMgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgaW1hZ2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBzaXplIGluIHBpeGVscyBvZiB0aGUgYXZhdGFyIGltYWdlLlxuICAgKi9cbiAgQElucHV0KCkgc2l6ZSA9IDMyO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHRoZSBhdmF0YXIgd2lsbCBiZSBkaXNwbGF5ZWQgaW5cbiAgICovXG4gIEBJbnB1dCgpIGxvY2F0aW9uOiBBdmF0YXJMb2NhdGlvbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBjaGFubmVsIHRoZSBhdmF0YXIgYmVsb25ncyB0byAoaWYgYXZhdGFyIG9mIGEgY2hhbm5lbCBpcyBkaXNwbGF5ZWQpXG4gICAqL1xuICBASW5wdXQoKSBjaGFubmVsPzogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgLyoqXG4gICAqIFRoZSB1c2VyIHRoZSBhdmF0YXIgYmVsb25ncyB0byAoaWYgYXZhdGFyIG9mIGEgdXNlciBpcyBkaXNwbGF5ZWQpXG4gICAqL1xuICBASW5wdXQoKSB1c2VyPzogVXNlcjxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBhdmF0YXI6IGNoYW5uZWwgaWYgY2hhbm5lbCBhdmF0YXIgaXMgZGlzcGxheWVkLCB1c2VyIGlmIHVzZXIgYXZhdGFyIGlzIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogQXZhdGFyVHlwZSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIElmIGEgY2hhbm5lbCBhdmF0YXIgaXMgZGlzcGxheWVkLCBhbmQgaWYgdGhlIGNoYW5uZWwgaGFzIGV4YWN0bHkgdHdvIG1lbWJlcnMgYSBncmVlbiBkb3QgaXMgZGlzcGxheWVkIGlmIHRoZSBvdGhlciBtZW1iZXIgaXMgb25saW5lLiBTZXQgdGhpcyBmbGFnIHRvIGBmYWxzZWAgdG8gdHVybiBvZmYgdGhpcyBiZWhhdmlvci5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dPbmxpbmVJbmRpY2F0b3IgPSB0cnVlO1xuICAvKipcbiAgICogSWYgY2hhbm5lbC91c2VyIGltYWdlIGlzbid0IHByb3ZpZGVkIHRoZSBpbml0aWFscyBvZiB0aGUgbmFtZSBvZiB0aGUgY2hhbm5lbC91c2VyIGlzIHNob3duIGluc3RlYWQsIHlvdSBjYW4gY2hvb3NlIGhvdyB0aGUgaW5pdGFscyBzaG91bGQgYmUgY29tcHV0ZWRcbiAgICovXG4gIEBJbnB1dCgpIGluaXRpYWxzVHlwZTpcbiAgICB8ICdmaXJzdC1sZXR0ZXItb2YtZmlyc3Qtd29yZCdcbiAgICB8ICdmaXJzdC1sZXR0ZXItb2YtZWFjaC13b3JkJyA9ICdmaXJzdC1sZXR0ZXItb2YtZmlyc3Qtd29yZCc7XG4gIGlzTG9hZGVkID0gZmFsc2U7XG4gIGlzRXJyb3IgPSBmYWxzZTtcbiAgaXNPbmxpbmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc09ubGluZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2NoYW5uZWwnXSkge1xuICAgICAgaWYgKHRoaXMuY2hhbm5lbCkge1xuICAgICAgICBjb25zdCBvdGhlck1lbWJlciA9IHRoaXMuZ2V0T3RoZXJNZW1iZXJJZk9uZVRvT25lQ2hhbm5lbCgpO1xuICAgICAgICBpZiAob3RoZXJNZW1iZXIpIHtcbiAgICAgICAgICB0aGlzLmlzT25saW5lID0gb3RoZXJNZW1iZXIub25saW5lIHx8IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNPbmxpbmVTdWJzY3JpcHRpb24gPSB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmV2ZW50cyRcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZSkgPT4gZS5ldmVudFR5cGUgPT09ICd1c2VyLnByZXNlbmNlLmNoYW5nZWQnKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChldmVudC5ldmVudC51c2VyPy5pZCA9PT0gb3RoZXJNZW1iZXIuaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5pc09ubGluZSA9IGV2ZW50LmV2ZW50LnVzZXI/Lm9ubGluZSB8fCBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pc09ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc09ubGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzT25saW5lU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBpbml0aWFscygpIHtcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmcgPSAnJztcbiAgICBpZiAodGhpcy50eXBlID09PSAndXNlcicpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMubmFtZT8udG9TdHJpbmcoKSB8fCAnJztcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2NoYW5uZWwnKSB7XG4gICAgICBpZiAodGhpcy5jaGFubmVsPy5kYXRhPy5uYW1lKSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuY2hhbm5lbD8uZGF0YT8ubmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG90aGVyTWVtYmVyID0gdGhpcy5nZXRPdGhlck1lbWJlcklmT25lVG9PbmVDaGFubmVsKCk7XG4gICAgICAgIGlmIChvdGhlck1lbWJlcikge1xuICAgICAgICAgIHJlc3VsdCA9IG90aGVyTWVtYmVyLm5hbWUgfHwgb3RoZXJNZW1iZXIuaWQgfHwgJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gJyMnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgd29yZHMgPSByZXN1bHQuc3BsaXQoJyAnKTtcbiAgICBsZXQgaW5pdGlhbHM6IHN0cmluZztcbiAgICBpZiAodGhpcy5pbml0aWFsc1R5cGUgPT09ICdmaXJzdC1sZXR0ZXItb2YtZWFjaC13b3JkJykge1xuICAgICAgaW5pdGlhbHMgPSB3b3Jkcy5tYXAoKHcpID0+IHcuY2hhckF0KDApIHx8ICcnKS5qb2luKCcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdGlhbHMgPSB3b3Jkc1swXS5jaGFyQXQoMCkgfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiBpbml0aWFscztcbiAgfVxuXG4gIGdldCBmYWxsYmFja0NoYW5uZWxJbWFnZSgpIHtcbiAgICBpZiAodGhpcy50eXBlICE9PSAnY2hhbm5lbCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG90aGVyTWVtYmVyID0gdGhpcy5nZXRPdGhlck1lbWJlcklmT25lVG9PbmVDaGFubmVsKCk7XG4gICAgICBpZiAob3RoZXJNZW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG90aGVyTWVtYmVyLmltYWdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE90aGVyTWVtYmVySWZPbmVUb09uZUNoYW5uZWwoKSB7XG4gICAgY29uc3Qgb3RoZXJNZW1iZXJzID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgIHRoaXMuY2hhbm5lbD8uc3RhdGU/Lm1lbWJlcnMgfHwge31cbiAgICApLmZpbHRlcigobSkgPT4gbS51c2VyX2lkICE9PSB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQudXNlcj8uaWQpO1xuICAgIGlmIChvdGhlck1lbWJlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gb3RoZXJNZW1iZXJzWzBdLnVzZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic3RyLWNoYXRfX2F2YXRhciBzdHItY2hhdF9fYXZhdGFyLS1jaXJjbGUgc3RyZWFtLWNoYXRfX2F2YXRhci0te3tcbiAgICBsb2NhdGlvblxuICB9fVwiXG4gIHRpdGxlPVwie3sgbmFtZSB9fVwiXG4gIFtzdHlsZV09XCJ7XG4gICAgZmxleEJhc2lzOiAnY2FsYyh2YXIoLS1zdHItY2hhdF9fc3BhY2luZy1weCwgMXB4KSAqICcgKyBzaXplICsgJyknLFxuICAgIGZvbnRTaXplOlxuICAgICAgaW5pdGlhbHNUeXBlID09PSAnZmlyc3QtbGV0dGVyLW9mLWZpcnN0LXdvcmQnXG4gICAgICAgID8gJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSAvIDIgKyAnKSdcbiAgICAgICAgOiAnY2FsYyh2YXIoLS1zdHItY2hhdF9fc3BhY2luZy1weCwgMXB4KSAqICcgKyBzaXplIC8gMyArICcpJyxcbiAgICBoZWlnaHQ6ICdjYWxjKHZhcigtLXN0ci1jaGF0X19zcGFjaW5nLXB4LCAxcHgpICogJyArIHNpemUgKyAnKScsXG4gICAgbGluZUhlaWdodDogJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSArICcpJyxcbiAgICB3aWR0aDogJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSArICcpJ1xuICB9XCJcbj5cbiAgPGltZ1xuICAgICpuZ0lmPVwiKGltYWdlVXJsIHx8IGZhbGxiYWNrQ2hhbm5lbEltYWdlKSAmJiAhaXNFcnJvcjsgZWxzZSBmYWxsYmFja1wiXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fYXZhdGFyLWltYWdlIHN0ci1jaGF0X19hdmF0YXItaW1hZ2V7e1xuICAgICAgaXNMb2FkZWQgPyAnIHN0ci1jaGF0X19hdmF0YXItaW1hZ2UtLWxvYWRlZCcgOiAnJ1xuICAgIH19XCJcbiAgICBzcmM9XCJ7eyBpbWFnZVVybCB8fCBmYWxsYmFja0NoYW5uZWxJbWFnZSB9fVwiXG4gICAgYWx0PVwie3sgaW5pdGlhbHMgfX1cIlxuICAgIGRhdGEtdGVzdGlkPVwiYXZhdGFyLWltZ1wiXG4gICAgKGxvYWQpPVwiaXNMb2FkZWQgPSB0cnVlXCJcbiAgICAoZXJyb3IpPVwiaXNFcnJvciA9IHRydWVcIlxuICAgIFtzdHlsZV09XCJ7XG4gICAgICBmbGV4QmFzaXM6ICdjYWxjKHZhcigtLXN0ci1jaGF0X19zcGFjaW5nLXB4LCAxcHgpICogJyArIHNpemUgKyAnKScsXG4gICAgICBoZWlnaHQ6ICdjYWxjKHZhcigtLXN0ci1jaGF0X19zcGFjaW5nLXB4LCAxcHgpICogJyArIHNpemUgKyAnKScsXG4gICAgICBvYmplY3RGaXQ6ICdjb3ZlcicsXG4gICAgICB3aWR0aDogJ2NhbGModmFyKC0tc3RyLWNoYXRfX3NwYWNpbmctcHgsIDFweCkgKiAnICsgc2l6ZSArICcpJ1xuICAgIH1cIlxuICAvPlxuICA8bmctdGVtcGxhdGUgI2ZhbGxiYWNrPlxuICAgIDxkaXZcbiAgICAgIGRhdGEtdGVzdGlkPVwiZmFsbGJhY2staW1nXCJcbiAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fYXZhdGFyLWZhbGxiYWNrXCJcbiAgICA+XG4gICAgICB7eyBpbml0aWFscyB9fVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8ZGl2XG4gICAgZGF0YS10ZXN0aWQ9XCJvbmxpbmUtaW5kaWNhdG9yXCJcbiAgICAqbmdJZj1cImlzT25saW5lICYmIHNob3dPbmxpbmVJbmRpY2F0b3JcIlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX2F2YXRhci0tb25saW5lLWluZGljYXRvclwiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19