stream-chat-angular 3.0.0-beta.1 → 3.0.0-beta.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.
- package/assets/version.d.ts +1 -1
- package/bundles/stream-chat-angular.umd.js +366 -273
- package/bundles/stream-chat-angular.umd.js.map +1 -1
- package/esm2015/assets/version.js +2 -2
- package/esm2015/lib/channel-header/channel-header.component.js +26 -9
- package/esm2015/lib/channel-list/channel-list.component.js +23 -13
- package/esm2015/lib/channel.service.js +71 -59
- package/esm2015/lib/chat-client.service.js +26 -2
- package/esm2015/lib/custom-templates.service.js +55 -0
- package/esm2015/lib/message/message.component.js +26 -17
- package/esm2015/lib/message-actions-box/message-actions-box.component.js +28 -12
- package/esm2015/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.js +13 -13
- package/esm2015/lib/message-input/message-input-config.service.js +1 -1
- package/esm2015/lib/message-input/message-input.component.js +25 -34
- package/esm2015/lib/message-input/textarea.directive.js +2 -18
- package/esm2015/lib/message-input/textarea.interface.js +1 -1
- package/esm2015/lib/message-list/message-list.component.js +31 -22
- package/esm2015/lib/notification/notification.component.js +1 -1
- package/esm2015/lib/notification-list/notification-list.component.js +7 -4
- package/esm2015/lib/notification.service.js +34 -18
- package/esm2015/lib/types.js +1 -1
- package/esm2015/public-api.js +2 -1
- package/fesm2015/stream-chat-angular.js +317 -182
- package/fesm2015/stream-chat-angular.js.map +1 -1
- package/lib/channel-header/channel-header.component.d.ts +12 -2
- package/lib/channel-list/channel-list.component.d.ts +12 -9
- package/lib/channel.service.d.ts +13 -13
- package/lib/chat-client.service.d.ts +7 -1
- package/lib/custom-templates.service.d.ts +48 -0
- package/lib/message/message.component.d.ts +11 -13
- package/lib/message-actions-box/message-actions-box.component.d.ts +12 -9
- package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +6 -10
- package/lib/message-input/message-input-config.service.d.ts +0 -14
- package/lib/message-input/message-input.component.d.ts +11 -18
- package/lib/message-input/textarea.directive.d.ts +2 -5
- package/lib/message-input/textarea.interface.d.ts +1 -4
- package/lib/message-list/message-list.component.d.ts +10 -22
- package/lib/notification/notification.component.d.ts +1 -1
- package/lib/notification-list/notification-list.component.d.ts +6 -2
- package/lib/notification.service.d.ts +14 -13
- package/lib/types.d.ts +44 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/assets/version.ts +1 -1
|
@@ -14,18 +14,19 @@ import * as i3 from "../attachment.service";
|
|
|
14
14
|
import * as i4 from "./message-input-config.service";
|
|
15
15
|
import * as i5 from "../chat-client.service";
|
|
16
16
|
import * as i6 from "./emoji-input.service";
|
|
17
|
-
import * as i7 from "../
|
|
18
|
-
import * as i8 from "../
|
|
19
|
-
import * as i9 from "../
|
|
20
|
-
import * as i10 from "../attachment-
|
|
21
|
-
import * as i11 from "
|
|
22
|
-
import * as i12 from "
|
|
23
|
-
import * as i13 from "
|
|
17
|
+
import * as i7 from "../custom-templates.service";
|
|
18
|
+
import * as i8 from "../icon/icon.component";
|
|
19
|
+
import * as i9 from "../avatar/avatar.component";
|
|
20
|
+
import * as i10 from "../attachment-list/attachment-list.component";
|
|
21
|
+
import * as i11 from "../attachment-preview-list/attachment-preview-list.component";
|
|
22
|
+
import * as i12 from "@angular/common";
|
|
23
|
+
import * as i13 from "./textarea.directive";
|
|
24
|
+
import * as i14 from "@ngx-translate/core";
|
|
24
25
|
/**
|
|
25
26
|
* The `MessageInput` component displays an input where users can type their messages and upload files, and sends the message to the active channel. The component can be used to compose new messages or update existing ones. To send messages, the chat user needs to have the necessary [channel capability](https://getstream.io/chat/docs/javascript/channel_capabilities/?language=javascript).
|
|
26
27
|
*/
|
|
27
28
|
export class MessageInputComponent {
|
|
28
|
-
constructor(channelService, notificationService, attachmentService, configService, textareaType, componentFactoryResolver, cdRef, chatClient, emojiInputService) {
|
|
29
|
+
constructor(channelService, notificationService, attachmentService, configService, textareaType, componentFactoryResolver, cdRef, chatClient, emojiInputService, customTemplatesService) {
|
|
29
30
|
this.channelService = channelService;
|
|
30
31
|
this.notificationService = notificationService;
|
|
31
32
|
this.attachmentService = attachmentService;
|
|
@@ -35,6 +36,7 @@ export class MessageInputComponent {
|
|
|
35
36
|
this.cdRef = cdRef;
|
|
36
37
|
this.chatClient = chatClient;
|
|
37
38
|
this.emojiInputService = emojiInputService;
|
|
39
|
+
this.customTemplatesService = customTemplatesService;
|
|
38
40
|
/**
|
|
39
41
|
* Determines if the message is being dispalyed in a channel or in a [thread](https://getstream.io/chat/docs/javascript/threads/?language=javascript).
|
|
40
42
|
*/
|
|
@@ -82,12 +84,7 @@ export class MessageInputComponent {
|
|
|
82
84
|
this.isMultipleFileUploadEnabled =
|
|
83
85
|
this.configService.isMultipleFileUploadEnabled;
|
|
84
86
|
this.areMentionsEnabled = this.configService.areMentionsEnabled;
|
|
85
|
-
this.mentionAutocompleteItemTemplate =
|
|
86
|
-
this.configService.mentionAutocompleteItemTemplate;
|
|
87
87
|
this.mentionScope = this.configService.mentionScope;
|
|
88
|
-
this.commandAutocompleteItemTemplate =
|
|
89
|
-
this.configService.commandAutocompleteItemTemplate;
|
|
90
|
-
this.emojiPickerTemplate = this.configService.emojiPickerTemplate;
|
|
91
88
|
this.subscriptions.push(this.typingStart$.subscribe(() => void this.channelService.typingStarted(this.parentMessageId)));
|
|
92
89
|
this.subscriptions.push(combineLatest([
|
|
93
90
|
this.channelService.latestMessageDateByUserByChannels$,
|
|
@@ -110,6 +107,12 @@ export class MessageInputComponent {
|
|
|
110
107
|
}
|
|
111
108
|
}));
|
|
112
109
|
}
|
|
110
|
+
ngOnInit() {
|
|
111
|
+
this.subscriptions.push(this.customTemplatesService.emojiPickerTemplate$.subscribe((template) => {
|
|
112
|
+
this.emojiPickerTemplate = template;
|
|
113
|
+
this.cdRef.detectChanges();
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
113
116
|
ngAfterViewInit() {
|
|
114
117
|
this.isViewInited = true;
|
|
115
118
|
this.initTextarea();
|
|
@@ -132,20 +135,9 @@ export class MessageInputComponent {
|
|
|
132
135
|
if (changes.areMentionsEnabled) {
|
|
133
136
|
this.configService.areMentionsEnabled = this.areMentionsEnabled;
|
|
134
137
|
}
|
|
135
|
-
if (changes.mentionAutocompleteItemTemplate) {
|
|
136
|
-
this.configService.mentionAutocompleteItemTemplate =
|
|
137
|
-
this.mentionAutocompleteItemTemplate;
|
|
138
|
-
}
|
|
139
|
-
if (changes.commandAutocompleteItemTemplate) {
|
|
140
|
-
this.configService.commandAutocompleteItemTemplate =
|
|
141
|
-
this.commandAutocompleteItemTemplate;
|
|
142
|
-
}
|
|
143
138
|
if (changes.mentionScope) {
|
|
144
139
|
this.configService.mentionScope = this.mentionScope;
|
|
145
140
|
}
|
|
146
|
-
if (changes.emojiPickerTemplate) {
|
|
147
|
-
this.configService.emojiPickerTemplate = this.emojiPickerTemplate;
|
|
148
|
-
}
|
|
149
141
|
if (changes.mode) {
|
|
150
142
|
this.setCanSendMessages();
|
|
151
143
|
}
|
|
@@ -232,6 +224,11 @@ export class MessageInputComponent {
|
|
|
232
224
|
deselectMessageToQuote() {
|
|
233
225
|
this.channelService.selectMessageToQuote(undefined);
|
|
234
226
|
}
|
|
227
|
+
getEmojiPickerContext() {
|
|
228
|
+
return {
|
|
229
|
+
emojiInput$: this.emojiInputService.emojiInput$,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
235
232
|
clearFileInput() {
|
|
236
233
|
this.fileInput.nativeElement.value = '';
|
|
237
234
|
}
|
|
@@ -338,8 +335,8 @@ export class MessageInputComponent {
|
|
|
338
335
|
setTimeout(() => this.initTextarea());
|
|
339
336
|
}
|
|
340
337
|
}
|
|
341
|
-
MessageInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputComponent, deps: [{ token: i1.ChannelService }, { token: i2.NotificationService }, { token: i3.AttachmentService }, { token: i4.MessageInputConfigService }, { token: textareaInjectionToken }, { token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }, { token: i5.ChatClientService }, { token: i6.EmojiInputService }], target: i0.ɵɵFactoryTarget.Component });
|
|
342
|
-
MessageInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageInputComponent, selector: "stream-message-input", inputs: { isFileUploadEnabled: "isFileUploadEnabled", areMentionsEnabled: "areMentionsEnabled", mentionScope: "mentionScope",
|
|
338
|
+
MessageInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputComponent, deps: [{ token: i1.ChannelService }, { token: i2.NotificationService }, { token: i3.AttachmentService }, { token: i4.MessageInputConfigService }, { token: textareaInjectionToken }, { token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }, { token: i5.ChatClientService }, { token: i6.EmojiInputService }, { token: i7.CustomTemplatesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
339
|
+
MessageInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageInputComponent, selector: "stream-message-input", inputs: { isFileUploadEnabled: "isFileUploadEnabled", areMentionsEnabled: "areMentionsEnabled", mentionScope: "mentionScope", mode: "mode", isMultipleFileUploadEnabled: "isMultipleFileUploadEnabled", message: "message" }, outputs: { messageUpdate: "messageUpdate" }, providers: [AttachmentService, EmojiInputService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "textareaAnchor", first: true, predicate: TextareaDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"{{\n mode === 'main' ? 'str-chat__input-flat' : 'str-chat__small-message-input'\n }}\"\n [class.str-chat__input-flat-has-attachments]=\"\n (attachmentUploads$ | async)!.length > 0\n \"\n [class.str-chat__input-flat-quoted]=\"!!quotedMessage\"\n>\n <div\n data-testid=\"quoted-message-container\"\n class=\"quoted-message-preview\"\n *ngIf=\"quotedMessage\"\n >\n <div class=\"quoted-message-preview-header\">\n <div>{{ \"streamChat.Reply to Message\" | translate }}</div>\n <button\n class=\"str-chat__square-button\"\n data-testid=\"remove-quote\"\n (click)=\"deselectMessageToQuote()\"\n (keyup.enter)=\"deselectMessageToQuote()\"\n >\n <stream-icon\n icon=\"close-no-outline\"\n style=\"font-size: 10px; line-height: 10px\"\n ></stream-icon>\n </button>\n </div>\n <div class=\"quoted-message-preview-content\">\n <stream-avatar\n data-testid=\"qouted-message-avatar\"\n class=\"str-chat-angular__avatar-host\"\n [imageUrl]=\"quotedMessage?.user?.image\"\n [name]=\"quotedMessage?.user?.name || quotedMessage?.user?.id\"\n [size]=\"20\"\n ></stream-avatar>\n <div class=\"quoted-message-preview-content-inner\">\n <stream-attachment-list\n *ngIf=\"\n quotedMessage?.attachments && quotedMessage?.attachments?.length\n \"\n [attachments]=\"quotedMessageAttachments\"\n [messageId]=\"quotedMessage?.id\"\n ></stream-attachment-list>\n <div\n data-testid=\"quoted-message-text\"\n [innerHTML]=\"quotedMessage?.html || quotedMessage?.text\"\n ></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__input-flat-wrapper\" style=\"width: 100%\">\n <div\n class=\"{{\n mode === 'main'\n ? 'str-chat__input-flat--textarea-wrapper'\n : 'str-chat__small-message-input--textarea-wrapper'\n }}\"\n >\n <stream-attachment-preview-list\n class=\"rfu-image-previewer-angular-host\"\n ></stream-attachment-preview-list>\n <div class=\"rta str-chat__textarea str-chat-angular__textarea\">\n <ng-container\n *ngIf=\"emojiPickerTemplate && !isCooldownInProgress\"\n data-testid=\"emoji-picker\"\n >\n <div\n class=\"\n str-chat__input-flat-emojiselect\n str-chat-angular__emojiselect\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n emojiPickerTemplate;\n context: getEmojiPickerContext()\n \"\n ></ng-container>\n </div>\n </ng-container>\n <div\n class=\"str-chat__input-flat-cooldown str-chat-angular__cooldown\"\n *ngIf=\"isCooldownInProgress\"\n data-testid=\"cooldown-timer\"\n >\n {{ cooldown$ | async }}\n </div>\n <ng-template\n *ngIf=\"canSendMessages && !isCooldownInProgress; else notAllowed\"\n streamTextarea\n [(value)]=\"textareaValue\"\n (valueChange)=\"typingStart$.next()\"\n (send)=\"messageSent()\"\n [componentRef]=\"textareaRef\"\n (userMentions)=\"mentionedUsers = $event\"\n [areMentionsEnabled]=\"areMentionsEnabled\"\n [mentionScope]=\"mentionScope\"\n ></ng-template>\n <ng-template #notAllowed>\n <textarea\n disabled\n rows=\"1\"\n [value]=\"disabledTextareaText | translate\"\n class=\"rta__textarea str-chat__textarea__textarea\"\n data-testid=\"disabled-textarea\"\n ></textarea>\n </ng-template>\n </div>\n <div\n *ngIf=\"\n isFileUploadEnabled &&\n isFileUploadAuthorized &&\n canSendMessages &&\n !isCooldownInProgress\n \"\n class=\"str-chat__fileupload-wrapper\"\n data-testid=\"file-upload-button\"\n >\n <div class=\"str-chat__tooltip\">\n {{ \"streamChat.Attach files\" | translate }}\n </div>\n <div class=\"rfu-file-upload-button\">\n <label>\n <input\n #fileInput\n type=\"file\"\n class=\"rfu-file-input\"\n data-testid=\"file-input\"\n [multiple]=\"isMultipleFileUploadEnabled\"\n (change)=\"filesSelected(fileInput.files)\"\n />\n <span class=\"str-chat__input-flat-fileupload\">\n <stream-icon icon=\"file-upload\"></stream-icon>\n </span>\n </label>\n </div>\n </div>\n </div>\n <button\n *ngIf=\"canSendMessages\"\n data-testid=\"send-button\"\n class=\"str-chat__send-button\"\n (click)=\"messageSent()\"\n (keyup.enter)=\"messageSent()\"\n >\n <stream-icon icon=\"send\"></stream-icon>\n </button>\n </div>\n</div>\n", components: [{ type: i8.IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }, { type: i9.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }, { type: i10.AttachmentListComponent, selector: "stream-attachment-list", inputs: ["messageId", "attachments"] }, { type: i11.AttachmentPreviewListComponent, selector: "stream-attachment-preview-list" }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i13.TextareaDirective, selector: "[streamTextarea]", inputs: ["componentRef", "areMentionsEnabled", "mentionScope", "value"], outputs: ["valueChange", "send", "userMentions"] }], pipes: { "async": i12.AsyncPipe, "translate": i14.TranslatePipe } });
|
|
343
340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputComponent, decorators: [{
|
|
344
341
|
type: Component,
|
|
345
342
|
args: [{
|
|
@@ -351,18 +348,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
351
348
|
}], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.NotificationService }, { type: i3.AttachmentService }, { type: i4.MessageInputConfigService }, { type: i0.Type, decorators: [{
|
|
352
349
|
type: Inject,
|
|
353
350
|
args: [textareaInjectionToken]
|
|
354
|
-
}] }, { type: i0.ComponentFactoryResolver }, { type: i0.ChangeDetectorRef }, { type: i5.ChatClientService }, { type: i6.EmojiInputService }]; }, propDecorators: { isFileUploadEnabled: [{
|
|
351
|
+
}] }, { type: i0.ComponentFactoryResolver }, { type: i0.ChangeDetectorRef }, { type: i5.ChatClientService }, { type: i6.EmojiInputService }, { type: i7.CustomTemplatesService }]; }, propDecorators: { isFileUploadEnabled: [{
|
|
355
352
|
type: Input
|
|
356
353
|
}], areMentionsEnabled: [{
|
|
357
354
|
type: Input
|
|
358
355
|
}], mentionScope: [{
|
|
359
356
|
type: Input
|
|
360
|
-
}], mentionAutocompleteItemTemplate: [{
|
|
361
|
-
type: Input
|
|
362
|
-
}], commandAutocompleteItemTemplate: [{
|
|
363
|
-
type: Input
|
|
364
|
-
}], emojiPickerTemplate: [{
|
|
365
|
-
type: Input
|
|
366
357
|
}], mode: [{
|
|
367
358
|
type: Input
|
|
368
359
|
}], isMultipleFileUploadEnabled: [{
|
|
@@ -378,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
378
369
|
type: ViewChild,
|
|
379
370
|
args: [TextareaDirective, { static: false }]
|
|
380
371
|
}] } });
|
|
381
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHTCxTQUFTLEVBSVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUlOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQUUxRDs7R0FFRztBQU9ILE1BQU0sT0FBTyxxQkFBcUI7SUFrRWhDLFlBQ1UsY0FBOEIsRUFDOUIsbUJBQXdDLEVBQ3hDLGlCQUFvQyxFQUNwQyxhQUF3QyxFQUV4QyxZQUFxQyxFQUNyQyx3QkFBa0QsRUFDbEQsS0FBd0IsRUFDeEIsVUFBNkIsRUFDOUIs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QUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQUlhLGFBQWE7c0JBQS9CLE1BQU07Z0JBWXlCLFNBQVM7c0JBQXhDLFNBQVM7dUJBQUMsV0FBVztnQkFFZCxjQUFjO3NCQURyQixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCBtYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcFNldHRpbmdzLCBDaGFubmVsLCBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4uL2F0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyB0ZXh0YXJlYUluamVjdGlvblRva2VuIH0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQXR0YWNobWVudFVwbG9hZCxcbiAgQ29tbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtQ29udGV4dCxcbiAgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0LFxuICBTdHJlYW1NZXNzYWdlLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9tZXNzYWdlLWlucHV0LWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFRleHRhcmVhRGlyZWN0aXZlIH0gZnJvbSAnLi90ZXh0YXJlYS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGV4dGFyZWFJbnRlcmZhY2UgfSBmcm9tICcuL3RleHRhcmVhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBpc0ltYWdlRmlsZSB9IGZyb20gJy4uL2lzLWltYWdlLWZpbGUnO1xuaW1wb3J0IHsgRW1vamlJbnB1dFNlcnZpY2UgfSBmcm9tICcuL2Vtb2ppLWlucHV0LnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBgTWVzc2FnZUlucHV0YCBjb21wb25lbnQgZGlzcGxheXMgYW4gaW5wdXQgd2hlcmUgdXNlcnMgY2FuIHR5cGUgdGhlaXIgbWVzc2FnZXMgYW5kIHVwbG9hZCBmaWxlcywgYW5kIHNlbmRzIHRoZSBtZXNzYWdlIHRvIHRoZSBhY3RpdmUgY2hhbm5lbC4gVGhlIGNvbXBvbmVudCBjYW4gYmUgdXNlZCB0byBjb21wb3NlIG5ldyBtZXNzYWdlcyBvciB1cGRhdGUgZXhpc3Rpbmcgb25lcy4gVG8gc2VuZCBtZXNzYWdlcywgdGhlIGNoYXQgdXNlciBuZWVkcyB0byBoYXZlIHRoZSBuZWNlc3NhcnkgW2NoYW5uZWwgY2FwYWJpbGl0eV0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvY2hhbm5lbF9jYXBhYmlsaXRpZXMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgcHJvdmlkZXJzOiBbQXR0YWNobWVudFNlcnZpY2UsIEVtb2ppSW5wdXRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUlucHV0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXRcbntcbiAgLyoqXG4gICAqIElmIGZpbGUgdXBsb2FkIGlzIGVuYWJsZWQsIHRoZSB1c2VyIGNhbiBvcGVuIGEgZmlsZSBzZWxlY3RvciBmcm9tIHRoZSBpbnB1dC4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgdXNlciBhbHNvIG5lZWRzIHRvIGhhdmUgdGhlIG5lY2Vzc2FyeSBbY2hhbm5lbCBjYXBhYmlsaXR5XShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9jaGFubmVsX2NhcGFiaWxpdGllcy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkuIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCBpcyBzZXQgZnJvbSB0aGUgW2BNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlYF0oLi4vc2VydmljZXMvTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZS5tZHgpLlxuICAgKi9cbiAgQElucHV0KCkgaXNGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIElmIHRydWUsIHVzZXJzIGNhbiBtZW50aW9uIG90aGVyIHVzZXJzIGluIG1lc3NhZ2VzLiBZb3UgYWxzbyBbbmVlZCB0byB1c2UgdGhlIGBBdXRvY29tcGxldGVUZXh0YXJlYWBdKC4uL2NvbmNlcHRzL29wdC1pbi1hcmNoaXRlY3R1cmUubWR4KSBmb3IgdGhpcyBmZWF0dXJlIHRvIHdvcmsuIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCBpcyBzZXQgZnJvbSB0aGUgW2BNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlYF0oLi4vc2VydmljZXMvTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZS5tZHgpLlxuICAgKi9cbiAgQElucHV0KCkgYXJlTWVudGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIHNjb3BlIGZvciB1c2VyIG1lbnRpb25zLCBlaXRoZXIgbWVtYmVycyBvZiB0aGUgY3VycmVudCBjaGFubmVsIG9mIG1lbWJlcnMgb2YgdGhlIGFwcGxpY2F0aW9uLiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgaXQgaXMgc2V0IGZyb20gdGhlIFtgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZWBdKC4uL3NlcnZpY2VzL01lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2UubWR4KS5cbiAgICovXG4gIEBJbnB1dCgpIG1lbnRpb25TY29wZTogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFlvdSBjYW4gcHJvdmlkZSB5b3VyIG93biB0ZW1wbGF0ZSBmb3IgdGhlIGF1dG9jb21wbGV0ZSBsaXN0IGZvciB1c2VyIG1lbnRpb25zLiBZb3UgYWxzbyBbbmVlZCB0byB1c2UgdGhlIGBBdXRvY29tcGxldGVUZXh0YXJlYWBdKC4uL2NvbmNlcHRzL29wdC1pbi1hcmNoaXRlY3R1cmUubWR4KSBmb3IgdGhpcyBmZWF0dXJlIHRvIHdvcmsuIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCBpcyBzZXQgZnJvbSB0aGUgW2BNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlYF0oLi4vc2VydmljZXMvTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZS5tZHgpLlxuICAgKi9cbiAgQElucHV0KCkgbWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFlvdSBjYW4gcHJvdmlkZSB5b3VyIG93biB0ZW1wbGF0ZSBmb3IgdGhlIGF1dG9jb21wbGV0ZSBsaXN0IGZvciBjb21tYW5kcy4gWW91IGFsc28gW25lZWQgdG8gdXNlIHRoZSBgQXV0b2NvbXBsZXRlVGV4dGFyZWFgXSguLi9jb25jZXB0cy9vcHQtaW4tYXJjaGl0ZWN0dXJlLm1keCkgZm9yIHRoaXMgZmVhdHVyZSB0byB3b3JrLiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgaXQgaXMgc2V0IGZyb20gdGhlIFtgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZWBdKC4uL3NlcnZpY2VzL01lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2UubWR4KS5cbiAgICovXG4gIEBJbnB1dCgpIGNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogWW91IGNhbiBhZGQgYW4gZW1vamkgcGlja2VyIGJ5IFtwcm92aWRpbmcgeW91ciBvd24gZW1vamkgcGlja2VyIHRlbXBsYXRlXSguLi9jb2RlLWV4YW1wbGVzL2Vtb2ppLXBpY2tlci5tZHgpXG4gICAqL1xuICBASW5wdXQoKSBlbW9qaVBpY2tlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx2b2lkPiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIG1lc3NhZ2UgaXMgYmVpbmcgZGlzcGFseWVkIGluIGEgY2hhbm5lbCBvciBpbiBhIFt0aHJlYWRdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3RocmVhZHMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICAgKi9cbiAgQElucHV0KCkgbW9kZTogJ3RocmVhZCcgfCAnbWFpbicgPSAnbWFpbic7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCB1c2VycyBjYW4gc2VsZWN0IG11bHRpcGxlIGZpbGVzIHRvIHVwbG9hZC4gSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGl0IGlzIHNldCBmcm9tIHRoZSBbYE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2VgXSguLi9zZXJ2aWNlcy9NZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLm1keCkuXG4gICAqL1xuICBASW5wdXQoKSBpc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBlZGl0XG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIG1lc3NhZ2Ugd2FzIHN1Y2Nlc3NmdWx5IHNlbnQgb3IgdXBkYXRlZFxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IG1lc3NhZ2VVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGNhblNlbmRMaW5rczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY2FuU2VuZE1lc3NhZ2VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50VXBsb2FkcyQ6IE9ic2VydmFibGU8QXR0YWNobWVudFVwbG9hZFtdPjtcbiAgdGV4dGFyZWFWYWx1ZSA9ICcnO1xuICB0ZXh0YXJlYVJlZjogQ29tcG9uZW50UmVmPFRleHRhcmVhSW50ZXJmYWNlPiB8IHVuZGVmaW5lZDtcbiAgbWVudGlvbmVkVXNlcnM6IFVzZXJSZXNwb25zZVtdID0gW107XG4gIHF1b3RlZE1lc3NhZ2U6IHVuZGVmaW5lZCB8IFN0cmVhbU1lc3NhZ2U7XG4gIHR5cGluZ1N0YXJ0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGNvb2xkb3duJDogT2JzZXJ2YWJsZTxudW1iZXI+IHwgdW5kZWZpbmVkO1xuICBpc0Nvb2xkb3duSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBwcml2YXRlIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoVGV4dGFyZWFEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIHRleHRhcmVhQW5jaG9yITogVGV4dGFyZWFEaXJlY3RpdmU7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBoaWRlTm90aWZpY2F0aW9uOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc1ZpZXdJbml0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBhcHBTZXR0aW5nczogQXBwU2V0dGluZ3MgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY2hhbm5lbDogQ2hhbm5lbCB8IHVuZGVmaW5lZDtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYXR0YWNobWVudFNlcnZpY2U6IEF0dGFjaG1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZSxcbiAgICBASW5qZWN0KHRleHRhcmVhSW5qZWN0aW9uVG9rZW4pXG4gICAgcHJpdmF0ZSB0ZXh0YXJlYVR5cGU6IFR5cGU8VGV4dGFyZWFJbnRlcmZhY2U+LFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50OiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwdWJsaWMgZW1vamlJbnB1dFNlcnZpY2U6IEVtb2ppSW5wdXRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5hdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIkLnN1YnNjcmliZShcbiAgICAgICAgKGNvdW50ZXIpID0+IHtcbiAgICAgICAgICBpZiAoY291bnRlciA9PT0gMCAmJiB0aGlzLmhpZGVOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5oaWRlTm90aWZpY2F0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoY2hhbm5lbCkgPT4ge1xuICAgICAgICB0aGlzLnRleHRhcmVhVmFsdWUgPSAnJztcbiAgICAgICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5yZXNldEF0dGFjaG1lbnRVcGxvYWRzKCk7XG4gICAgICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IGNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgICAgIGlmIChjYXBhYmlsaXRpZXMpIHtcbiAgICAgICAgICB0aGlzLmlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgPVxuICAgICAgICAgICAgY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3VwbG9hZC1maWxlJykgIT09IC0xO1xuICAgICAgICAgIHRoaXMuY2FuU2VuZExpbmtzID0gY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3NlbmQtbGlua3MnKSAhPT0gLTE7XG4gICAgICAgICAgdGhpcy5jaGFubmVsID0gY2hhbm5lbDtcbiAgICAgICAgICB0aGlzLnNldENhblNlbmRNZXNzYWdlcygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnQuYXBwU2V0dGluZ3MkLnN1YnNjcmliZShcbiAgICAgICAgKGFwcFNldHRpbmdzKSA9PiAodGhpcy5hcHBTZXR0aW5ncyA9IGFwcFNldHRpbmdzKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLm1lc3NhZ2VUb1F1b3RlJC5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgICAgY29uc3QgaXNUaHJlYWRSZXBseSA9IG0gJiYgbS5wYXJlbnRfaWQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAodGhpcy5tb2RlID09PSAndGhyZWFkJyAmJiBpc1RocmVhZFJlcGx5KSB8fFxuICAgICAgICAgICh0aGlzLm1vZGUgPT09ICd0aHJlYWQnICYmIHRoaXMucXVvdGVkTWVzc2FnZSAmJiAhbSkgfHxcbiAgICAgICAgICAodGhpcy5tb2RlID09PSAnbWFpbicgJiYgIWlzVGhyZWFkUmVwbHkpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMucXVvdGVkTWVzc2FnZSA9IG07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmF0dGFjaG1lbnRVcGxvYWRzJCA9IHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZHMkO1xuICAgIHRoaXMuaXNGaWxlVXBsb2FkRW5hYmxlZCA9IHRoaXMuY29uZmlnU2VydmljZS5pc0ZpbGVVcGxvYWRFbmFibGVkO1xuICAgIHRoaXMuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkID1cbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ7XG4gICAgdGhpcy5hcmVNZW50aW9uc0VuYWJsZWQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuYXJlTWVudGlvbnNFbmFibGVkO1xuICAgIHRoaXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSA9XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTtcbiAgICB0aGlzLm1lbnRpb25TY29wZSA9IHRoaXMuY29uZmlnU2VydmljZS5tZW50aW9uU2NvcGU7XG4gICAgdGhpcy5jb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlID1cbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlO1xuICAgIHRoaXMuZW1vamlQaWNrZXJUZW1wbGF0ZSA9IHRoaXMuY29uZmlnU2VydmljZS5lbW9qaVBpY2tlclRlbXBsYXRlO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnR5cGluZ1N0YXJ0JC5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS50eXBpbmdTdGFydGVkKHRoaXMucGFyZW50TWVzc2FnZUlkKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmxhdGVzdE1lc3NhZ2VEYXRlQnlVc2VyQnlDaGFubmVscyQsXG4gICAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQsXG4gICAgICBdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAoW2xhdGVzdE1lc3NhZ2VzLCBjaGFubmVsXSk6IFtcbiAgICAgICAgICAgICAgRGF0ZSB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgQ2hhbm5lbCB8IHVuZGVmaW5lZFxuICAgICAgICAgICAgXSA9PiBbbGF0ZXN0TWVzc2FnZXNbY2hhbm5lbD8uY2lkIHx8ICcnXSwgY2hhbm5lbCFdXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKFtsYXRlc3RNZXNzYWdlRGF0ZSwgY2hhbm5lbF0pID0+IHtcbiAgICAgICAgICBjb25zdCBjb29sZG93biA9XG4gICAgICAgICAgICAoY2hhbm5lbD8uZGF0YT8uY29vbGRvd24gYXMgbnVtYmVyKSAmJlxuICAgICAgICAgICAgbGF0ZXN0TWVzc2FnZURhdGUgJiZcbiAgICAgICAgICAgIE1hdGgucm91bmQoXG4gICAgICAgICAgICAgIChjaGFubmVsPy5kYXRhPy5jb29sZG93biBhcyBudW1iZXIpIC1cbiAgICAgICAgICAgICAgICAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSBsYXRlc3RNZXNzYWdlRGF0ZS5nZXRUaW1lKCkpIC8gMTAwMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb29sZG93biAmJlxuICAgICAgICAgICAgY29vbGRvd24gPiAwICYmXG4gICAgICAgICAgICAoY2hhbm5lbD8uZGF0YT8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXSkuaW5jbHVkZXMoJ3Nsb3ctbW9kZScpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q29vbGRvd24oY29vbGRvd24pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0Nvb2xkb3duSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgdGhpcy5zdG9wQ29vbGRvd24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gICAgdGhpcy5pbml0VGV4dGFyZWEoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlKSB7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLnJlc2V0QXR0YWNobWVudFVwbG9hZHMoKTtcbiAgICAgIGlmICh0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuY3JlYXRlRnJvbUF0dGFjaG1lbnRzKFxuICAgICAgICAgIHRoaXMubWVzc2FnZSEuYXR0YWNobWVudHMgfHwgW11cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlID0gdGhpcy5tZXNzYWdlIS50ZXh0IHx8ICcnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5pc0ZpbGVVcGxvYWRFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNGaWxlVXBsb2FkRW5hYmxlZCA9IHRoaXMuaXNGaWxlVXBsb2FkRW5hYmxlZDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkID1cbiAgICAgICAgdGhpcy5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmFyZU1lbnRpb25zRW5hYmxlZCA9IHRoaXMuYXJlTWVudGlvbnNFbmFibGVkO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSA9XG4gICAgICAgIHRoaXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuY29tbWFuZEF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgPVxuICAgICAgICB0aGlzLmNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1lbnRpb25TY29wZSkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLm1lbnRpb25TY29wZSA9IHRoaXMubWVudGlvblNjb3BlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5lbW9qaVBpY2tlclRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZW1vamlQaWNrZXJUZW1wbGF0ZSA9IHRoaXMuZW1vamlQaWNrZXJUZW1wbGF0ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubW9kZSkge1xuICAgICAgdGhpcy5zZXRDYW5TZW5kTWVzc2FnZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGFzeW5jIG1lc3NhZ2VTZW50KCkge1xuICAgIGxldCBhdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIhOiBudW1iZXI7XG4gICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5hdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIkXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoY291bnRlcikgPT4gKGF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciA9IGNvdW50ZXIpKTtcbiAgICBpZiAoYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyID4gMCkge1xuICAgICAgaWYgKCF0aGlzLmhpZGVOb3RpZmljYXRpb24pIHtcbiAgICAgICAgdGhpcy5oaWRlTm90aWZpY2F0aW9uID1cbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkUGVybWFuZW50Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgJ3N0cmVhbUNoYXQuV2FpdCB1bnRpbCBhbGwgYXR0YWNobWVudHMgaGF2ZSB1cGxvYWRlZCdcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhdHRhY2htZW50cyA9IHRoaXMuYXR0YWNobWVudFNlcnZpY2UubWFwVG9BdHRhY2htZW50cygpO1xuICAgIGNvbnN0IHRleHQgPSB0aGlzLnRleHRhcmVhVmFsdWU7XG4gICAgaWYgKCF0ZXh0ICYmICghYXR0YWNobWVudHMgfHwgYXR0YWNobWVudHMubGVuZ3RoID09PSAwKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb250YWluc0xpbmtzICYmICF0aGlzLmNhblNlbmRMaW5rcykge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgJ3N0cmVhbUNoYXQuU2VuZGluZyBsaW5rcyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnZlcnNhdGlvbidcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1VwZGF0ZSkge1xuICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlID0gJyc7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCAodGhpcy5pc1VwZGF0ZVxuICAgICAgICA/IHRoaXMuY2hhbm5lbFNlcnZpY2UudXBkYXRlTWVzc2FnZSh7XG4gICAgICAgICAgICAuLi50aGlzLm1lc3NhZ2UhLFxuICAgICAgICAgICAgdGV4dDogdGV4dCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyxcbiAgICAgICAgICB9KVxuICAgICAgICA6IHRoaXMuY2hhbm5lbFNlcnZpY2Uuc2VuZE1lc3NhZ2UoXG4gICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgICB0aGlzLm1lbnRpb25lZFVzZXJzLFxuICAgICAgICAgICAgdGhpcy5wYXJlbnRNZXNzYWdlSWQsXG4gICAgICAgICAgICB0aGlzLnF1b3RlZE1lc3NhZ2U/LmlkXG4gICAgICAgICAgKSk7XG4gICAgICB0aGlzLm1lc3NhZ2VVcGRhdGUuZW1pdCgpO1xuICAgICAgaWYgKCF0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UucmVzZXRBdHRhY2htZW50VXBsb2FkcygpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAodGhpcy5pc1VwZGF0ZSkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICdzdHJlYW1DaGF0LkVkaXQgbWVzc2FnZSByZXF1ZXN0IGZhaWxlZCdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnR5cGluZ1N0b3BwZWQodGhpcy5wYXJlbnRNZXNzYWdlSWQpO1xuICAgIGlmICh0aGlzLnF1b3RlZE1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuZGVzZWxlY3RNZXNzYWdlVG9RdW90ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjb250YWluc0xpbmtzKCkge1xuICAgIHJldHVybiAvKD86KD86aHR0cHM/fGZ0cCk6XFwvXFwvKT9bXFx3L1xcLT89JS5dK1xcLltcXHcvXFwtJj89JS5dKy8udGVzdChcbiAgICAgIHRoaXMudGV4dGFyZWFWYWx1ZVxuICAgICk7XG4gIH1cblxuICBnZXQgcXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzKCkge1xuICAgIGNvbnN0IG9yaWdpbmFsQXR0YWNobWVudHMgPSB0aGlzLnF1b3RlZE1lc3NhZ2U/LmF0dGFjaG1lbnRzO1xuICAgIHJldHVybiBvcmlnaW5hbEF0dGFjaG1lbnRzICYmIG9yaWdpbmFsQXR0YWNobWVudHMubGVuZ3RoXG4gICAgICA/IFtvcmlnaW5hbEF0dGFjaG1lbnRzWzBdXVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZFRleHRhcmVhVGV4dCgpIHtcbiAgICBpZiAoIXRoaXMuY2FuU2VuZE1lc3NhZ2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5tb2RlID09PSAndGhyZWFkJ1xuICAgICAgICA/IFwic3RyZWFtQ2hhdC5Zb3UgY2FuJ3Qgc2VuZCB0aHJlYWQgcmVwbGllcyBpbiB0aGlzIGNoYW5uZWxcIlxuICAgICAgICA6IFwic3RyZWFtQ2hhdC5Zb3UgY2FuJ3Qgc2VuZCBtZXNzYWdlcyBpbiB0aGlzIGNoYW5uZWxcIjtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29vbGRvd24kKSB7XG4gICAgICByZXR1cm4gJ3N0cmVhbUNoYXQuU2xvdyBNb2RlIE9OJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgYXN5bmMgZmlsZXNTZWxlY3RlZChmaWxlTGlzdDogRmlsZUxpc3QgfCBudWxsKSB7XG4gICAgaWYgKCEoYXdhaXQgdGhpcy5hcmVBdHRhY2hlbW50c1ZhbGlkKGZpbGVMaXN0KSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5hdHRhY2htZW50U2VydmljZS5maWxlc1NlbGVjdGVkKGZpbGVMaXN0KTtcbiAgICB0aGlzLmNsZWFyRmlsZUlucHV0KCk7XG4gIH1cblxuICBkZXNlbGVjdE1lc3NhZ2VUb1F1b3RlKCkge1xuICAgIHRoaXMuY2hhbm5lbFNlcnZpY2Uuc2VsZWN0TWVzc2FnZVRvUXVvdGUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJGaWxlSW5wdXQoKSB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNVcGRhdGUoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5tZXNzYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGV4dGFyZWEoKSB7XG4gICAgaWYgKCF0aGlzLmNhblNlbmRNZXNzYWdlcyB8fCB0aGlzLnRleHRhcmVhUmVmIHx8ICF0aGlzLnRleHRhcmVhQW5jaG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPVxuICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy50ZXh0YXJlYVR5cGUpO1xuICAgIHRoaXMudGV4dGFyZWFSZWYgPVxuICAgICAgdGhpcy50ZXh0YXJlYUFuY2hvci52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxhbnk+KFxuICAgICAgICBjb21wb25lbnRGYWN0b3J5XG4gICAgICApO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcmVBdHRhY2hlbW50c1ZhbGlkKGZpbGVMaXN0OiBGaWxlTGlzdCB8IG51bGwpIHtcbiAgICBpZiAoIWZpbGVMaXN0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFwcFNldHRpbmdzKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnQuZ2V0QXBwU2V0dGluZ3MoKTtcbiAgICB9XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgIEFycmF5LmZyb20oZmlsZUxpc3QpLmZvckVhY2goKGYpID0+IHtcbiAgICAgIGxldCBoYXNCbG9ja2VkRXh0ZW5zaW9uOiBib29sZWFuO1xuICAgICAgbGV0IGhhc0Jsb2NrZWRNaW1lVHlwZTogYm9vbGVhbjtcbiAgICAgIGxldCBoYXNOb3RBbGxvd2VkRXh0ZW5zaW9uOiBib29sZWFuO1xuICAgICAgbGV0IGhhc05vdEFsbG93ZWRNaW1lVHlwZTogYm9vbGVhbjtcbiAgICAgIGlmIChpc0ltYWdlRmlsZShmKSkge1xuICAgICAgICBoYXNCbG9ja2VkRXh0ZW5zaW9uID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmltYWdlX3VwbG9hZF9jb25maWc/LmJsb2NrZWRfZmlsZV9leHRlbnNpb25zPy5maW5kKFxuICAgICAgICAgICAgKGV4dCkgPT4gZi5uYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICApO1xuICAgICAgICBoYXNCbG9ja2VkTWltZVR5cGUgPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9taW1lX3R5cGVzPy5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IGYudHlwZSA9PT0gdHlwZVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9maWxlX2V4dGVuc2lvbnNcbiAgICAgICAgICAgID8ubGVuZ3RoICYmXG4gICAgICAgICAgIXRoaXMuYXBwU2V0dGluZ3M/LmltYWdlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfZmlsZV9leHRlbnNpb25zPy5maW5kKFxuICAgICAgICAgICAgKGV4dCkgPT4gZi5uYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICApO1xuICAgICAgICBoYXNOb3RBbGxvd2VkTWltZVR5cGUgPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9taW1lX3R5cGVzPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9taW1lX3R5cGVzPy5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IGYudHlwZSA9PT0gdHlwZVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYXNCbG9ja2VkRXh0ZW5zaW9uID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc0Jsb2NrZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5maWxlX3VwbG9hZF9jb25maWc/LmJsb2NrZWRfbWltZV90eXBlcz8uZmluZChcbiAgICAgICAgICAgICh0eXBlKSA9PiBmLnR5cGUgPT09IHR5cGVcbiAgICAgICAgICApO1xuICAgICAgICBoYXNOb3RBbGxvd2VkRXh0ZW5zaW9uID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9maWxlX2V4dGVuc2lvbnNcbiAgICAgICAgICAgID8ubGVuZ3RoICYmXG4gICAgICAgICAgIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5maWxlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfbWltZV90eXBlcz8ubGVuZ3RoICYmXG4gICAgICAgICAgIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9taW1lX3R5cGVzPy5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IGYudHlwZSA9PT0gdHlwZVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGhhc0Jsb2NrZWRFeHRlbnNpb24gfHxcbiAgICAgICAgaGFzQmxvY2tlZE1pbWVUeXBlIHx8XG4gICAgICAgIGhhc05vdEFsbG93ZWRFeHRlbnNpb24gfHxcbiAgICAgICAgaGFzTm90QWxsb3dlZE1pbWVUeXBlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgICAnc3RyZWFtQ2hhdC5VbnN1cHBvcnRlZCBmaWxlIHR5cGU6IHt7dHlwZX19JyxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHsgdHlwZTogZi50eXBlIH1cbiAgICAgICAgKTtcbiAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYW5TZW5kTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgY2FwYWJpbGl0aWVzID0gdGhpcy5jaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdO1xuICAgIGlmICghY2FwYWJpbGl0aWVzKSB7XG4gICAgICB0aGlzLmNhblNlbmRNZXNzYWdlcyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhblNlbmRNZXNzYWdlcyA9XG4gICAgICAgIGNhcGFiaWxpdGllcy5pbmRleE9mKFxuICAgICAgICAgIHRoaXMubW9kZSA9PT0gJ21haW4nID8gJ3NlbmQtbWVzc2FnZScgOiAnc2VuZC1yZXBseSdcbiAgICAgICAgKSAhPT0gLTE7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLmluaXRUZXh0YXJlYSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHBhcmVudE1lc3NhZ2VJZCgpIHtcbiAgICBsZXQgcGFyZW50TWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3RocmVhZCcpIHtcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlUGFyZW50TWVzc2FnZUlkJFxuICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAuc3Vic2NyaWJlKChpZCkgPT4gKHBhcmVudE1lc3NhZ2VJZCA9IGlkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudE1lc3NhZ2VJZDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDb29sZG93bihjb29sZG93bjogbnVtYmVyKSB7XG4gICAgdGhpcy5pc0Nvb2xkb3duSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgdGhpcy5jb29sZG93biQgPSB0aW1lcigwLCAxMDAwKS5waXBlKFxuICAgICAgdGFrZShjb29sZG93biArIDEpLFxuICAgICAgbWFwKCh2KSA9PiBjb29sZG93biAtIHYpLFxuICAgICAgdGFwKCh2KSA9PiB7XG4gICAgICAgIGlmICh2ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5zdG9wQ29vbGRvd24oKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wQ29vbGRvd24oKSB7XG4gICAgdGhpcy5jb29sZG93biQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc0Nvb2xkb3duSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIC8vIHRoZSBhbmNob3IgZGlyZWN0aXZlIHdpbGwgYmUgcmVjcmVhdGVkIGJlY2F1c2Ugb2YgKm5nSWYsIHNvIHdlIHdpbGwgaGF2ZSB0byByZWluaXQgdGhlIHRleHRhcmVhIGFzIHdlbGxcbiAgICB0aGlzLnRleHRhcmVhUmVmID0gdW5kZWZpbmVkO1xuICAgIC8vIHdlIGNhbiBvbmx5IGNyZWF0ZSB0aGUgdGV4dGFyZWEgYWZ0ZXIgdGhlIGFuY2hvciB3YXMgcmVjcmVhdGVkLCBzbyB3ZSB3aWxsIGhhdmUgdG8gd2FpdCBhIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgd2l0aCBzZXRUaW1lb3V0XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluaXRUZXh0YXJlYSgpKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInt7XG4gICAgbW9kZSA9PT0gJ21haW4nID8gJ3N0ci1jaGF0X19pbnB1dC1mbGF0JyA6ICdzdHItY2hhdF9fc21hbGwtbWVzc2FnZS1pbnB1dCdcbiAgfX1cIlxuICBbY2xhc3Muc3RyLWNoYXRfX2lucHV0LWZsYXQtaGFzLWF0dGFjaG1lbnRzXT1cIlxuICAgIChhdHRhY2htZW50VXBsb2FkcyQgfCBhc3luYykhLmxlbmd0aCA+IDBcbiAgXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19pbnB1dC1mbGF0LXF1b3RlZF09XCIhIXF1b3RlZE1lc3NhZ2VcIlxuPlxuICA8ZGl2XG4gICAgZGF0YS10ZXN0aWQ9XCJxdW90ZWQtbWVzc2FnZS1jb250YWluZXJcIlxuICAgIGNsYXNzPVwicXVvdGVkLW1lc3NhZ2UtcHJldmlld1wiXG4gICAgKm5nSWY9XCJxdW90ZWRNZXNzYWdlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJxdW90ZWQtbWVzc2FnZS1wcmV2aWV3LWhlYWRlclwiPlxuICAgICAgPGRpdj57eyBcInN0cmVhbUNoYXQuUmVwbHkgdG8gTWVzc2FnZVwiIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NxdWFyZS1idXR0b25cIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlbW92ZS1xdW90ZVwiXG4gICAgICAgIChjbGljayk9XCJkZXNlbGVjdE1lc3NhZ2VUb1F1b3RlKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZGVzZWxlY3RNZXNzYWdlVG9RdW90ZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1pY29uXG4gICAgICAgICAgaWNvbj1cImNsb3NlLW5vLW91dGxpbmVcIlxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4OyBsaW5lLWhlaWdodDogMTBweFwiXG4gICAgICAgID48L3N0cmVhbS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInF1b3RlZC1tZXNzYWdlLXByZXZpZXctY29udGVudFwiPlxuICAgICAgPHN0cmVhbS1hdmF0YXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJxb3V0ZWQtbWVzc2FnZS1hdmF0YXJcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0LWFuZ3VsYXJfX2F2YXRhci1ob3N0XCJcbiAgICAgICAgW2ltYWdlVXJsXT1cInF1b3RlZE1lc3NhZ2U/LnVzZXI/LmltYWdlXCJcbiAgICAgICAgW25hbWVdPVwicXVvdGVkTWVzc2FnZT8udXNlcj8ubmFtZSB8fCBxdW90ZWRNZXNzYWdlPy51c2VyPy5pZFwiXG4gICAgICAgIFtzaXplXT1cIjIwXCJcbiAgICAgID48L3N0cmVhbS1hdmF0YXI+XG4gICAgICA8ZGl2IGNsYXNzPVwicXVvdGVkLW1lc3NhZ2UtcHJldmlldy1jb250ZW50LWlubmVyXCI+XG4gICAgICAgIDxzdHJlYW0tYXR0YWNobWVudC1saXN0XG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHF1b3RlZE1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmIHF1b3RlZE1lc3NhZ2U/LmF0dGFjaG1lbnRzPy5sZW5ndGhcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRhY2htZW50c109XCJxdW90ZWRNZXNzYWdlQXR0YWNobWVudHNcIlxuICAgICAgICAgIFttZXNzYWdlSWRdPVwicXVvdGVkTWVzc2FnZT8uaWRcIlxuICAgICAgICA+PC9zdHJlYW0tYXR0YWNobWVudC1saXN0PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJxdW90ZWQtbWVzc2FnZS10ZXh0XCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cInF1b3RlZE1lc3NhZ2U/Lmh0bWwgfHwgcXVvdGVkTWVzc2FnZT8udGV4dFwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19pbnB1dC1mbGF0LXdyYXBwZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ7e1xuICAgICAgICBtb2RlID09PSAnbWFpbidcbiAgICAgICAgICA/ICdzdHItY2hhdF9faW5wdXQtZmxhdC0tdGV4dGFyZWEtd3JhcHBlcidcbiAgICAgICAgICA6ICdzdHItY2hhdF9fc21hbGwtbWVzc2FnZS1pbnB1dC0tdGV4dGFyZWEtd3JhcHBlcidcbiAgICAgIH19XCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWF0dGFjaG1lbnQtcHJldmlldy1saXN0XG4gICAgICAgIGNsYXNzPVwicmZ1LWltYWdlLXByZXZpZXdlci1hbmd1bGFyLWhvc3RcIlxuICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtcHJldmlldy1saXN0PlxuICAgICAgPGRpdiBjbGFzcz1cInJ0YSBzdHItY2hhdF9fdGV4dGFyZWEgc3RyLWNoYXQtYW5ndWxhcl9fdGV4dGFyZWFcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiZW1vamlQaWNrZXJUZW1wbGF0ZSAmJiAhaXNDb29sZG93bkluUHJvZ3Jlc3NcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZW1vamktcGlja2VyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19pbnB1dC1mbGF0LWVtb2ppc2VsZWN0XG4gICAgICAgICAgICAgIHN0ci1jaGF0LWFuZ3VsYXJfX2Vtb2ppc2VsZWN0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBlbW9qaVBpY2tlclRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgZW1vamlJbnB1dCQ6IGVtb2ppSW5wdXRTZXJ2aWNlLmVtb2ppSW5wdXQkIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19pbnB1dC1mbGF0LWNvb2xkb3duIHN0ci1jaGF0LWFuZ3VsYXJfX2Nvb2xkb3duXCJcbiAgICAgICAgICAqbmdJZj1cImlzQ29vbGRvd25JblByb2dyZXNzXCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvb2xkb3duLXRpbWVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvb2xkb3duJCB8IGFzeW5jIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAqbmdJZj1cImNhblNlbmRNZXNzYWdlcyAmJiAhaXNDb29sZG93bkluUHJvZ3Jlc3M7IGVsc2Ugbm90QWxsb3dlZFwiXG4gICAgICAgICAgc3RyZWFtVGV4dGFyZWFcbiAgICAgICAgICBbKHZhbHVlKV09XCJ0ZXh0YXJlYVZhbHVlXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidHlwaW5nU3RhcnQkLm5leHQoKVwiXG4gICAgICAgICAgKHNlbmQpPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAgICAgW2NvbXBvbmVudFJlZl09XCJ0ZXh0YXJlYVJlZlwiXG4gICAgICAgICAgKHVzZXJNZW50aW9ucyk9XCJtZW50aW9uZWRVc2VycyA9ICRldmVudFwiXG4gICAgICAgICAgW2FyZU1lbnRpb25zRW5hYmxlZF09XCJhcmVNZW50aW9uc0VuYWJsZWRcIlxuICAgICAgICAgIFttZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlXT1cIm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgIFtjb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlXT1cImNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgIFttZW50aW9uU2NvcGVdPVwibWVudGlvblNjb3BlXCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90QWxsb3dlZD5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZGlzYWJsZWRUZXh0YXJlYVRleHQgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJydGFfX3RleHRhcmVhIHN0ci1jaGF0X190ZXh0YXJlYV9fdGV4dGFyZWFcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJkaXNhYmxlZC10ZXh0YXJlYVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBpc0ZpbGVVcGxvYWRFbmFibGVkICYmXG4gICAgICAgICAgaXNGaWxlVXBsb2FkQXV0aG9yaXplZCAmJlxuICAgICAgICAgIGNhblNlbmRNZXNzYWdlcyAmJlxuICAgICAgICAgICFpc0Nvb2xkb3duSW5Qcm9ncmVzc1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19maWxldXBsb2FkLXdyYXBwZXJcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtdXBsb2FkLWJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcFwiPlxuICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5BdHRhY2ggZmlsZXNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJmdS1maWxlLXVwbG9hZC1idXR0b25cIj5cbiAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicmZ1LWZpbGUtaW5wdXRcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtaW5wdXRcIlxuICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJmaWxlc1NlbGVjdGVkKGZpbGVJbnB1dC5maWxlcylcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX2lucHV0LWZsYXQtZmlsZXVwbG9hZFwiPlxuICAgICAgICAgICAgICA8c3RyZWFtLWljb24gaWNvbj1cImZpbGUtdXBsb2FkXCI+PC9zdHJlYW0taWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiY2FuU2VuZE1lc3NhZ2VzXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwic2VuZC1idXR0b25cIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2VuZC1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm1lc3NhZ2VTZW50KClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm1lc3NhZ2VTZW50KClcIlxuICAgID5cbiAgICAgIDxzdHJlYW0taWNvbiBpY29uPVwic2VuZFwiPjwvc3RyZWFtLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHTCxTQUFTLEVBSVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUlOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUk3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHMUQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8scUJBQXFCO0lBbURoQyxZQUNVLGNBQThCLEVBQzlCLG1CQUF3QyxFQUN4QyxpQkFBb0MsRUFDcEMsYUFBd0MsRUFFeEMsWUFBcUMsRUFDckMsd0JBQWtELEVBQ2xELEtBQXdCLEVBQ3hCLFVBQTZCLEVBQzdC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ICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCBtYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcFNldHRpbmdzLCBDaGFubmVsLCBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4uL2F0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyB0ZXh0YXJlYUluamVjdGlvblRva2VuIH0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXR0YWNobWVudFVwbG9hZCwgRW1vamlQaWNrZXJDb250ZXh0LCBTdHJlYW1NZXNzYWdlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZSB9IGZyb20gJy4vbWVzc2FnZS1pbnB1dC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBUZXh0YXJlYURpcmVjdGl2ZSB9IGZyb20gJy4vdGV4dGFyZWEuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRleHRhcmVhSW50ZXJmYWNlIH0gZnJvbSAnLi90ZXh0YXJlYS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNJbWFnZUZpbGUgfSBmcm9tICcuLi9pcy1pbWFnZS1maWxlJztcbmltcG9ydCB7IEVtb2ppSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi9lbW9qaS1pbnB1dC5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBgTWVzc2FnZUlucHV0YCBjb21wb25lbnQgZGlzcGxheXMgYW4gaW5wdXQgd2hlcmUgdXNlcnMgY2FuIHR5cGUgdGhlaXIgbWVzc2FnZXMgYW5kIHVwbG9hZCBmaWxlcywgYW5kIHNlbmRzIHRoZSBtZXNzYWdlIHRvIHRoZSBhY3RpdmUgY2hhbm5lbC4gVGhlIGNvbXBvbmVudCBjYW4gYmUgdXNlZCB0byBjb21wb3NlIG5ldyBtZXNzYWdlcyBvciB1cGRhdGUgZXhpc3Rpbmcgb25lcy4gVG8gc2VuZCBtZXNzYWdlcywgdGhlIGNoYXQgdXNlciBuZWVkcyB0byBoYXZlIHRoZSBuZWNlc3NhcnkgW2NoYW5uZWwgY2FwYWJpbGl0eV0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvY2hhbm5lbF9jYXBhYmlsaXRpZXMvP2xhbmd1YWdlPWphdmFzY3JpcHQpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgcHJvdmlkZXJzOiBbQXR0YWNobWVudFNlcnZpY2UsIEVtb2ppSW5wdXRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUlucHV0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogSWYgZmlsZSB1cGxvYWQgaXMgZW5hYmxlZCwgdGhlIHVzZXIgY2FuIG9wZW4gYSBmaWxlIHNlbGVjdG9yIGZyb20gdGhlIGlucHV0LiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSB1c2VyIGFsc28gbmVlZHMgdG8gaGF2ZSB0aGUgbmVjZXNzYXJ5IFtjaGFubmVsIGNhcGFiaWxpdHldKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS4gSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGl0IGlzIHNldCBmcm9tIHRoZSBbYE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2VgXSguLi9zZXJ2aWNlcy9NZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLm1keCkuXG4gICAqL1xuICBASW5wdXQoKSBpc0ZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogSWYgdHJ1ZSwgdXNlcnMgY2FuIG1lbnRpb24gb3RoZXIgdXNlcnMgaW4gbWVzc2FnZXMuIFlvdSBhbHNvIFtuZWVkIHRvIHVzZSB0aGUgYEF1dG9jb21wbGV0ZVRleHRhcmVhYF0oLi4vY29uY2VwdHMvb3B0LWluLWFyY2hpdGVjdHVyZS5tZHgpIGZvciB0aGlzIGZlYXR1cmUgdG8gd29yay4gSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQsIGl0IGlzIHNldCBmcm9tIHRoZSBbYE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2VgXSguLi9zZXJ2aWNlcy9NZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLm1keCkuXG4gICAqL1xuICBASW5wdXQoKSBhcmVNZW50aW9uc0VuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgZm9yIHVzZXIgbWVudGlvbnMsIGVpdGhlciBtZW1iZXJzIG9mIHRoZSBjdXJyZW50IGNoYW5uZWwgb2YgbWVtYmVycyBvZiB0aGUgYXBwbGljYXRpb24uIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkLCBpdCBpcyBzZXQgZnJvbSB0aGUgW2BNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlYF0oLi4vc2VydmljZXMvTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZS5tZHgpLlxuICAgKi9cbiAgQElucHV0KCkgbWVudGlvblNjb3BlOiAnY2hhbm5lbCcgfCAnYXBwbGljYXRpb24nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgbWVzc2FnZSBpcyBiZWluZyBkaXNwYWx5ZWQgaW4gYSBjaGFubmVsIG9yIGluIGEgW3RocmVhZF0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvdGhyZWFkcy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkuXG4gICAqL1xuICBASW5wdXQoKSBtb2RlOiAndGhyZWFkJyB8ICdtYWluJyA9ICdtYWluJztcbiAgLyoqXG4gICAqIElmIHRydWUsIHVzZXJzIGNhbiBzZWxlY3QgbXVsdGlwbGUgZmlsZXMgdG8gdXBsb2FkLiBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCwgaXQgaXMgc2V0IGZyb20gdGhlIFtgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZWBdKC4uL3NlcnZpY2VzL01lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2UubWR4KS5cbiAgICovXG4gIEBJbnB1dCgpIGlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIGVkaXRcbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgbWVzc2FnZSB3YXMgc3VjY2Vzc2Z1bHkgc2VudCBvciB1cGRhdGVkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbWVzc2FnZVVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgaXNGaWxlVXBsb2FkQXV0aG9yaXplZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY2FuU2VuZExpbmtzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBjYW5TZW5kTWVzc2FnZXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGF0dGFjaG1lbnRVcGxvYWRzJDogT2JzZXJ2YWJsZTxBdHRhY2htZW50VXBsb2FkW10+O1xuICB0ZXh0YXJlYVZhbHVlID0gJyc7XG4gIHRleHRhcmVhUmVmOiBDb21wb25lbnRSZWY8VGV4dGFyZWFJbnRlcmZhY2U+IHwgdW5kZWZpbmVkO1xuICBtZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlW10gPSBbXTtcbiAgcXVvdGVkTWVzc2FnZTogdW5kZWZpbmVkIHwgU3RyZWFtTWVzc2FnZTtcbiAgdHlwaW5nU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29vbGRvd24kOiBPYnNlcnZhYmxlPG51bWJlcj4gfCB1bmRlZmluZWQ7XG4gIGlzQ29vbGRvd25JblByb2dyZXNzID0gZmFsc2U7XG4gIGVtb2ppUGlja2VyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEVtb2ppUGlja2VyQ29udGV4dD4gfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIHByaXZhdGUgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChUZXh0YXJlYURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdGV4dGFyZWFBbmNob3IhOiBUZXh0YXJlYURpcmVjdGl2ZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGhpZGVOb3RpZmljYXRpb246IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGFwcFNldHRpbmdzOiBBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjaGFubmVsOiBDaGFubmVsIHwgdW5kZWZpbmVkO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdHRhY2htZW50U2VydmljZTogQXR0YWNobWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLFxuICAgIEBJbmplY3QodGV4dGFyZWFJbmplY3Rpb25Ub2tlbilcbiAgICBwcml2YXRlIHRleHRhcmVhVHlwZTogVHlwZTxUZXh0YXJlYUludGVyZmFjZT4sXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNoYXRDbGllbnQ6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW1vamlJbnB1dFNlcnZpY2U6IEVtb2ppSW5wdXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJC5zdWJzY3JpYmUoXG4gICAgICAgIChjb3VudGVyKSA9PiB7XG4gICAgICAgICAgaWYgKGNvdW50ZXIgPT09IDAgJiYgdGhpcy5oaWRlTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVOb3RpZmljYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5zdWJzY3JpYmUoKGNoYW5uZWwpID0+IHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UucmVzZXRBdHRhY2htZW50VXBsb2FkcygpO1xuICAgICAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSBjaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdO1xuICAgICAgICBpZiAoY2FwYWJpbGl0aWVzKSB7XG4gICAgICAgICAgdGhpcy5pc0ZpbGVVcGxvYWRBdXRob3JpemVkID1cbiAgICAgICAgICAgIGNhcGFiaWxpdGllcy5pbmRleE9mKCd1cGxvYWQtZmlsZScpICE9PSAtMTtcbiAgICAgICAgICB0aGlzLmNhblNlbmRMaW5rcyA9IGNhcGFiaWxpdGllcy5pbmRleE9mKCdzZW5kLWxpbmtzJykgIT09IC0xO1xuICAgICAgICAgIHRoaXMuY2hhbm5lbCA9IGNoYW5uZWw7XG4gICAgICAgICAgdGhpcy5zZXRDYW5TZW5kTWVzc2FnZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGF0Q2xpZW50LmFwcFNldHRpbmdzJC5zdWJzY3JpYmUoXG4gICAgICAgIChhcHBTZXR0aW5ncykgPT4gKHRoaXMuYXBwU2V0dGluZ3MgPSBhcHBTZXR0aW5ncylcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5tZXNzYWdlVG9RdW90ZSQuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzVGhyZWFkUmVwbHkgPSBtICYmIG0ucGFyZW50X2lkO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHRoaXMubW9kZSA9PT0gJ3RocmVhZCcgJiYgaXNUaHJlYWRSZXBseSkgfHxcbiAgICAgICAgICAodGhpcy5tb2RlID09PSAndGhyZWFkJyAmJiB0aGlzLnF1b3RlZE1lc3NhZ2UgJiYgIW0pIHx8XG4gICAgICAgICAgKHRoaXMubW9kZSA9PT0gJ21haW4nICYmICFpc1RocmVhZFJlcGx5KVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnF1b3RlZE1lc3NhZ2UgPSBtO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5hdHRhY2htZW50VXBsb2FkcyQgPSB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmF0dGFjaG1lbnRVcGxvYWRzJDtcbiAgICB0aGlzLmlzRmlsZVVwbG9hZEVuYWJsZWQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNGaWxlVXBsb2FkRW5hYmxlZDtcbiAgICB0aGlzLmlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZCA9XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkO1xuICAgIHRoaXMuYXJlTWVudGlvbnNFbmFibGVkID0gdGhpcy5jb25maWdTZXJ2aWNlLmFyZU1lbnRpb25zRW5hYmxlZDtcbiAgICB0aGlzLm1lbnRpb25TY29wZSA9IHRoaXMuY29uZmlnU2VydmljZS5tZW50aW9uU2NvcGU7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudHlwaW5nU3RhcnQkLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4gdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnR5cGluZ1N0YXJ0ZWQodGhpcy5wYXJlbnRNZXNzYWdlSWQpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UubGF0ZXN0TWVzc2FnZURhdGVCeVVzZXJCeUNoYW5uZWxzJCxcbiAgICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJCxcbiAgICAgIF0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChcbiAgICAgICAgICAgIChbbGF0ZXN0TWVzc2FnZXMsIGNoYW5uZWxdKTogW1xuICAgICAgICAgICAgICBEYXRlIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBDaGFubmVsIHwgdW5kZWZpbmVkXG4gICAgICAgICAgICBdID0+IFtsYXRlc3RNZXNzYWdlc1tjaGFubmVsPy5jaWQgfHwgJyddLCBjaGFubmVsIV1cbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoW2xhdGVzdE1lc3NhZ2VEYXRlLCBjaGFubmVsXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvb2xkb3duID1cbiAgICAgICAgICAgIChjaGFubmVsPy5kYXRhPy5jb29sZG93biBhcyBudW1iZXIpICYmXG4gICAgICAgICAgICBsYXRlc3RNZXNzYWdlRGF0ZSAmJlxuICAgICAgICAgICAgTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgKGNoYW5uZWw/LmRhdGE/LmNvb2xkb3duIGFzIG51bWJlcikgLVxuICAgICAgICAgICAgICAgIChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIGxhdGVzdE1lc3NhZ2VEYXRlLmdldFRpbWUoKSkgLyAxMDAwXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvb2xkb3duICYmXG4gICAgICAgICAgICBjb29sZG93biA+IDAgJiZcbiAgICAgICAgICAgIChjaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdKS5pbmNsdWRlcygnc2xvdy1tb2RlJylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDb29sZG93bihjb29sZG93bik7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzQ29vbGRvd25JblByb2dyZXNzKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BDb29sZG93bigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuZW1vamlQaWNrZXJUZW1wbGF0ZSQuc3Vic2NyaWJlKCh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLmVtb2ppUGlja2VyVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1ZpZXdJbml0ZWQgPSB0cnVlO1xuICAgIHRoaXMuaW5pdFRleHRhcmVhKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSkge1xuICAgICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5yZXNldEF0dGFjaG1lbnRVcGxvYWRzKCk7XG4gICAgICBpZiAodGhpcy5pc1VwZGF0ZSkge1xuICAgICAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmNyZWF0ZUZyb21BdHRhY2htZW50cyhcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UhLmF0dGFjaG1lbnRzIHx8IFtdXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudGV4dGFyZWFWYWx1ZSA9IHRoaXMubWVzc2FnZSEudGV4dCB8fCAnJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaXNGaWxlVXBsb2FkRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmlzRmlsZVVwbG9hZEVuYWJsZWQgPSB0aGlzLmlzRmlsZVVwbG9hZEVuYWJsZWQ7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZCA9XG4gICAgICAgIHRoaXMuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hcmVNZW50aW9uc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5hcmVNZW50aW9uc0VuYWJsZWQgPSB0aGlzLmFyZU1lbnRpb25zRW5hYmxlZDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVudGlvblNjb3BlKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UubWVudGlvblNjb3BlID0gdGhpcy5tZW50aW9uU2NvcGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1vZGUpIHtcbiAgICAgIHRoaXMuc2V0Q2FuU2VuZE1lc3NhZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBhc3luYyBtZXNzYWdlU2VudCgpIHtcbiAgICBsZXQgYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyITogbnVtYmVyO1xuICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJFxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50ZXIpID0+IChhdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIgPSBjb3VudGVyKSk7XG4gICAgaWYgKGF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciA+IDApIHtcbiAgICAgIGlmICghdGhpcy5oaWRlTm90aWZpY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFBlcm1hbmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICdzdHJlYW1DaGF0LldhaXQgdW50aWwgYWxsIGF0dGFjaG1lbnRzIGhhdmUgdXBsb2FkZWQnXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYXR0YWNobWVudHMgPSB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLm1hcFRvQXR0YWNobWVudHMoKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy50ZXh0YXJlYVZhbHVlO1xuICAgIGlmICghdGV4dCAmJiAoIWF0dGFjaG1lbnRzIHx8IGF0dGFjaG1lbnRzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29udGFpbnNMaW5rcyAmJiAhdGhpcy5jYW5TZW5kTGlua3MpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICdzdHJlYW1DaGF0LlNlbmRpbmcgbGlua3MgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb252ZXJzYXRpb24nXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNVcGRhdGUpIHtcbiAgICAgIHRoaXMudGV4dGFyZWFWYWx1ZSA9ICcnO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgKHRoaXMuaXNVcGRhdGVcbiAgICAgICAgPyB0aGlzLmNoYW5uZWxTZXJ2aWNlLnVwZGF0ZU1lc3NhZ2Uoe1xuICAgICAgICAgICAgLi4udGhpcy5tZXNzYWdlISxcbiAgICAgICAgICAgIHRleHQ6IHRleHQsXG4gICAgICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiB0aGlzLmNoYW5uZWxTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgdGhpcy5tZW50aW9uZWRVc2VycyxcbiAgICAgICAgICAgIHRoaXMucGFyZW50TWVzc2FnZUlkLFxuICAgICAgICAgICAgdGhpcy5xdW90ZWRNZXNzYWdlPy5pZFxuICAgICAgICAgICkpO1xuICAgICAgdGhpcy5tZXNzYWdlVXBkYXRlLmVtaXQoKTtcbiAgICAgIGlmICghdGhpcy5pc1VwZGF0ZSkge1xuICAgICAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLnJlc2V0QXR0YWNobWVudFVwbG9hZHMoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKHRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgICAnc3RyZWFtQ2hhdC5FZGl0IG1lc3NhZ2UgcmVxdWVzdCBmYWlsZWQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS50eXBpbmdTdG9wcGVkKHRoaXMucGFyZW50TWVzc2FnZUlkKTtcbiAgICBpZiAodGhpcy5xdW90ZWRNZXNzYWdlKSB7XG4gICAgICB0aGlzLmRlc2VsZWN0TWVzc2FnZVRvUXVvdGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29udGFpbnNMaW5rcygpIHtcbiAgICByZXR1cm4gLyg/Oig/Omh0dHBzP3xmdHApOlxcL1xcLyk/W1xcdy9cXC0/PSUuXStcXC5bXFx3L1xcLSY/PSUuXSsvLnRlc3QoXG4gICAgICB0aGlzLnRleHRhcmVhVmFsdWVcbiAgICApO1xuICB9XG5cbiAgZ2V0IHF1b3RlZE1lc3NhZ2VBdHRhY2htZW50cygpIHtcbiAgICBjb25zdCBvcmlnaW5hbEF0dGFjaG1lbnRzID0gdGhpcy5xdW90ZWRNZXNzYWdlPy5hdHRhY2htZW50cztcbiAgICByZXR1cm4gb3JpZ2luYWxBdHRhY2htZW50cyAmJiBvcmlnaW5hbEF0dGFjaG1lbnRzLmxlbmd0aFxuICAgICAgPyBbb3JpZ2luYWxBdHRhY2htZW50c1swXV1cbiAgICAgIDogW107XG4gIH1cblxuICBnZXQgZGlzYWJsZWRUZXh0YXJlYVRleHQoKSB7XG4gICAgaWYgKCF0aGlzLmNhblNlbmRNZXNzYWdlcykge1xuICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3RocmVhZCdcbiAgICAgICAgPyBcInN0cmVhbUNoYXQuWW91IGNhbid0IHNlbmQgdGhyZWFkIHJlcGxpZXMgaW4gdGhpcyBjaGFubmVsXCJcbiAgICAgICAgOiBcInN0cmVhbUNoYXQuWW91IGNhbid0IHNlbmQgbWVzc2FnZXMgaW4gdGhpcyBjaGFubmVsXCI7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvb2xkb3duJCkge1xuICAgICAgcmV0dXJuICdzdHJlYW1DaGF0LlNsb3cgTW9kZSBPTic7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGFzeW5jIGZpbGVzU2VsZWN0ZWQoZmlsZUxpc3Q6IEZpbGVMaXN0IHwgbnVsbCkge1xuICAgIGlmICghKGF3YWl0IHRoaXMuYXJlQXR0YWNoZW1udHNWYWxpZChmaWxlTGlzdCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYXR0YWNobWVudFNlcnZpY2UuZmlsZXNTZWxlY3RlZChmaWxlTGlzdCk7XG4gICAgdGhpcy5jbGVhckZpbGVJbnB1dCgpO1xuICB9XG5cbiAgZGVzZWxlY3RNZXNzYWdlVG9RdW90ZSgpIHtcbiAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLnNlbGVjdE1lc3NhZ2VUb1F1b3RlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBnZXRFbW9qaVBpY2tlckNvbnRleHQoKTogRW1vamlQaWNrZXJDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgZW1vamlJbnB1dCQ6IHRoaXMuZW1vamlJbnB1dFNlcnZpY2UuZW1vamlJbnB1dCQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJGaWxlSW5wdXQoKSB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNVcGRhdGUoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5tZXNzYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGV4dGFyZWEoKSB7XG4gICAgaWYgKCF0aGlzLmNhblNlbmRNZXNzYWdlcyB8fCB0aGlzLnRleHRhcmVhUmVmIHx8ICF0aGlzLnRleHRhcmVhQW5jaG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPVxuICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy50ZXh0YXJlYVR5cGUpO1xuICAgIHRoaXMudGV4dGFyZWFSZWYgPVxuICAgICAgdGhpcy50ZXh0YXJlYUFuY2hvci52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxhbnk+KFxuICAgICAgICBjb21wb25lbnRGYWN0b3J5XG4gICAgICApO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcmVBdHRhY2hlbW50c1ZhbGlkKGZpbGVMaXN0OiBGaWxlTGlzdCB8IG51bGwpIHtcbiAgICBpZiAoIWZpbGVMaXN0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFwcFNldHRpbmdzKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoYXRDbGllbnQuZ2V0QXBwU2V0dGluZ3MoKTtcbiAgICB9XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgIEFycmF5LmZyb20oZmlsZUxpc3QpLmZvckVhY2goKGYpID0+IHtcbiAgICAgIGxldCBoYXNCbG9ja2VkRXh0ZW5zaW9uOiBib29sZWFuO1xuICAgICAgbGV0IGhhc0Jsb2NrZWRNaW1lVHlwZTogYm9vbGVhbjtcbiAgICAgIGxldCBoYXNOb3RBbGxvd2VkRXh0ZW5zaW9uOiBib29sZWFuO1xuICAgICAgbGV0IGhhc05vdEFsbG93ZWRNaW1lVHlwZTogYm9vbGVhbjtcbiAgICAgIGlmIChpc0ltYWdlRmlsZShmKSkge1xuICAgICAgICBoYXNCbG9ja2VkRXh0ZW5zaW9uID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmltYWdlX3VwbG9hZF9jb25maWc/LmJsb2NrZWRfZmlsZV9leHRlbnNpb25zPy5maW5kKFxuICAgICAgICAgICAgKGV4dCkgPT4gZi5uYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICApO1xuICAgICAgICBoYXNCbG9ja2VkTWltZVR5cGUgPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9taW1lX3R5cGVzPy5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IGYudHlwZSA9PT0gdHlwZVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9maWxlX2V4dGVuc2lvbnNcbiAgICAgICAgICAgID8ubGVuZ3RoICYmXG4gICAgICAgICAgIXRoaXMuYXBwU2V0dGluZ3M/LmltYWdlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfZmlsZV9leHRlbnNpb25zPy5maW5kKFxuICAgICAgICAgICAgKGV4dCkgPT4gZi5uYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICApO1xuICAgICAgICBoYXNOb3RBbGxvd2VkTWltZVR5cGUgPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9taW1lX3R5cGVzPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9taW1lX3R5cGVzPy5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IGYudHlwZSA9PT0gdHlwZVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYXNCbG9ja2VkRXh0ZW5zaW9uID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc0Jsb2NrZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5maWxlX3VwbG9hZF9jb25maWc/LmJsb2NrZWRfbWltZV90eXBlcz8uZmluZChcbiAgICAgICAgICAgICh0eXBlKSA9PiBmLnR5cGUgPT09IHR5cGVcbiAgICAgICAgICApO1xuICAgICAgICBoYXNOb3RBbGxvd2VkRXh0ZW5zaW9uID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9maWxlX2V4dGVuc2lvbnNcbiAgICAgICAgICAgID8ubGVuZ3RoICYmXG4gICAgICAgICAgIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5maWxlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfbWltZV90eXBlcz8ubGVuZ3RoICYmXG4gICAgICAgICAgIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9taW1lX3R5cGVzPy5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IGYudHlwZSA9PT0gdHlwZVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGhhc0Jsb2NrZWRFeHRlbnNpb24gfHxcbiAgICAgICAgaGFzQmxvY2tlZE1pbWVUeXBlIHx8XG4gICAgICAgIGhhc05vdEFsbG93ZWRFeHRlbnNpb24gfHxcbiAgICAgICAgaGFzTm90QWxsb3dlZE1pbWVUeXBlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgICAnc3RyZWFtQ2hhdC5VbnN1cHBvcnRlZCBmaWxlIHR5cGU6IHt7dHlwZX19JyxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHsgdHlwZTogZi50eXBlIH1cbiAgICAgICAgKTtcbiAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYW5TZW5kTWVzc2FnZXMoKSB7XG4gICAgY29uc3QgY2FwYWJpbGl0aWVzID0gdGhpcy5jaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdO1xuICAgIGlmICghY2FwYWJpbGl0aWVzKSB7XG4gICAgICB0aGlzLmNhblNlbmRNZXNzYWdlcyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhblNlbmRNZXNzYWdlcyA9XG4gICAgICAgIGNhcGFiaWxpdGllcy5pbmRleE9mKFxuICAgICAgICAgIHRoaXMubW9kZSA9PT0gJ21haW4nID8gJ3NlbmQtbWVzc2FnZScgOiAnc2VuZC1yZXBseSdcbiAgICAgICAgKSAhPT0gLTE7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLmluaXRUZXh0YXJlYSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHBhcmVudE1lc3NhZ2VJZCgpIHtcbiAgICBsZXQgcGFyZW50TWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3RocmVhZCcpIHtcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlUGFyZW50TWVzc2FnZUlkJFxuICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAuc3Vic2NyaWJlKChpZCkgPT4gKHBhcmVudE1lc3NhZ2VJZCA9IGlkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudE1lc3NhZ2VJZDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRDb29sZG93bihjb29sZG93bjogbnVtYmVyKSB7XG4gICAgdGhpcy5pc0Nvb2xkb3duSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgdGhpcy5jb29sZG93biQgPSB0aW1lcigwLCAxMDAwKS5waXBlKFxuICAgICAgdGFrZShjb29sZG93biArIDEpLFxuICAgICAgbWFwKCh2KSA9PiBjb29sZG93biAtIHYpLFxuICAgICAgdGFwKCh2KSA9PiB7XG4gICAgICAgIGlmICh2ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5zdG9wQ29vbGRvd24oKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wQ29vbGRvd24oKSB7XG4gICAgdGhpcy5jb29sZG93biQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc0Nvb2xkb3duSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIC8vIHRoZSBhbmNob3IgZGlyZWN0aXZlIHdpbGwgYmUgcmVjcmVhdGVkIGJlY2F1c2Ugb2YgKm5nSWYsIHNvIHdlIHdpbGwgaGF2ZSB0byByZWluaXQgdGhlIHRleHRhcmVhIGFzIHdlbGxcbiAgICB0aGlzLnRleHRhcmVhUmVmID0gdW5kZWZpbmVkO1xuICAgIC8vIHdlIGNhbiBvbmx5IGNyZWF0ZSB0aGUgdGV4dGFyZWEgYWZ0ZXIgdGhlIGFuY2hvciB3YXMgcmVjcmVhdGVkLCBzbyB3ZSB3aWxsIGhhdmUgdG8gd2FpdCBhIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUgd2l0aCBzZXRUaW1lb3V0XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluaXRUZXh0YXJlYSgpKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInt7XG4gICAgbW9kZSA9PT0gJ21haW4nID8gJ3N0ci1jaGF0X19pbnB1dC1mbGF0JyA6ICdzdHItY2hhdF9fc21hbGwtbWVzc2FnZS1pbnB1dCdcbiAgfX1cIlxuICBbY2xhc3Muc3RyLWNoYXRfX2lucHV0LWZsYXQtaGFzLWF0dGFjaG1lbnRzXT1cIlxuICAgIChhdHRhY2htZW50VXBsb2FkcyQgfCBhc3luYykhLmxlbmd0aCA+IDBcbiAgXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19pbnB1dC1mbGF0LXF1b3RlZF09XCIhIXF1b3RlZE1lc3NhZ2VcIlxuPlxuICA8ZGl2XG4gICAgZGF0YS10ZXN0aWQ9XCJxdW90ZWQtbWVzc2FnZS1jb250YWluZXJcIlxuICAgIGNsYXNzPVwicXVvdGVkLW1lc3NhZ2UtcHJldmlld1wiXG4gICAgKm5nSWY9XCJxdW90ZWRNZXNzYWdlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJxdW90ZWQtbWVzc2FnZS1wcmV2aWV3LWhlYWRlclwiPlxuICAgICAgPGRpdj57eyBcInN0cmVhbUNoYXQuUmVwbHkgdG8gTWVzc2FnZVwiIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NxdWFyZS1idXR0b25cIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlbW92ZS1xdW90ZVwiXG4gICAgICAgIChjbGljayk9XCJkZXNlbGVjdE1lc3NhZ2VUb1F1b3RlKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZGVzZWxlY3RNZXNzYWdlVG9RdW90ZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1pY29uXG4gICAgICAgICAgaWNvbj1cImNsb3NlLW5vLW91dGxpbmVcIlxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxMHB4OyBsaW5lLWhlaWdodDogMTBweFwiXG4gICAgICAgID48L3N0cmVhbS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInF1b3RlZC1tZXNzYWdlLXByZXZpZXctY29udGVudFwiPlxuICAgICAgPHN0cmVhbS1hdmF0YXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJxb3V0ZWQtbWVzc2FnZS1hdmF0YXJcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0LWFuZ3VsYXJfX2F2YXRhci1ob3N0XCJcbiAgICAgICAgW2ltYWdlVXJsXT1cInF1b3RlZE1lc3NhZ2U/LnVzZXI/LmltYWdlXCJcbiAgICAgICAgW25hbWVdPVwicXVvdGVkTWVzc2FnZT8udXNlcj8ubmFtZSB8fCBxdW90ZWRNZXNzYWdlPy51c2VyPy5pZFwiXG4gICAgICAgIFtzaXplXT1cIjIwXCJcbiAgICAgID48L3N0cmVhbS1hdmF0YXI+XG4gICAgICA8ZGl2IGNsYXNzPVwicXVvdGVkLW1lc3NhZ2UtcHJldmlldy1jb250ZW50LWlubmVyXCI+XG4gICAgICAgIDxzdHJlYW0tYXR0YWNobWVudC1saXN0XG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHF1b3RlZE1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmIHF1b3RlZE1lc3NhZ2U/LmF0dGFjaG1lbnRzPy5sZW5ndGhcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRhY2htZW50c109XCJxdW90ZWRNZXNzYWdlQXR0YWNobWVudHNcIlxuICAgICAgICAgIFttZXNzYWdlSWRdPVwicXVvdGVkTWVzc2FnZT8uaWRcIlxuICAgICAgICA+PC9zdHJlYW0tYXR0YWNobWVudC1saXN0PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJxdW90ZWQtbWVzc2FnZS10ZXh0XCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cInF1b3RlZE1lc3NhZ2U/Lmh0bWwgfHwgcXVvdGVkTWVzc2FnZT8udGV4dFwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19pbnB1dC1mbGF0LXdyYXBwZXJcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ7e1xuICAgICAgICBtb2RlID09PSAnbWFpbidcbiAgICAgICAgICA/ICdzdHItY2hhdF9faW5wdXQtZmxhdC0tdGV4dGFyZWEtd3JhcHBlcidcbiAgICAgICAgICA6ICdzdHItY2hhdF9fc21hbGwtbWVzc2FnZS1pbnB1dC0tdGV4dGFyZWEtd3JhcHBlcidcbiAgICAgIH19XCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWF0dGFjaG1lbnQtcHJldmlldy1saXN0XG4gICAgICAgIGNsYXNzPVwicmZ1LWltYWdlLXByZXZpZXdlci1hbmd1bGFyLWhvc3RcIlxuICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtcHJldmlldy1saXN0PlxuICAgICAgPGRpdiBjbGFzcz1cInJ0YSBzdHItY2hhdF9fdGV4dGFyZWEgc3RyLWNoYXQtYW5ndWxhcl9fdGV4dGFyZWFcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiZW1vamlQaWNrZXJUZW1wbGF0ZSAmJiAhaXNDb29sZG93bkluUHJvZ3Jlc3NcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZW1vamktcGlja2VyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19pbnB1dC1mbGF0LWVtb2ppc2VsZWN0XG4gICAgICAgICAgICAgIHN0ci1jaGF0LWFuZ3VsYXJfX2Vtb2ppc2VsZWN0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBlbW9qaVBpY2tlclRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGdldEVtb2ppUGlja2VyQ29udGV4dCgpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9faW5wdXQtZmxhdC1jb29sZG93biBzdHItY2hhdC1hbmd1bGFyX19jb29sZG93blwiXG4gICAgICAgICAgKm5nSWY9XCJpc0Nvb2xkb3duSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb29sZG93bi10aW1lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjb29sZG93biQgfCBhc3luYyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgKm5nSWY9XCJjYW5TZW5kTWVzc2FnZXMgJiYgIWlzQ29vbGRvd25JblByb2dyZXNzOyBlbHNlIG5vdEFsbG93ZWRcIlxuICAgICAgICAgIHN0cmVhbVRleHRhcmVhXG4gICAgICAgICAgWyh2YWx1ZSldPVwidGV4dGFyZWFWYWx1ZVwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInR5cGluZ1N0YXJ0JC5uZXh0KClcIlxuICAgICAgICAgIChzZW5kKT1cIm1lc3NhZ2VTZW50KClcIlxuICAgICAgICAgIFtjb21wb25lbnRSZWZdPVwidGV4dGFyZWFSZWZcIlxuICAgICAgICAgICh1c2VyTWVudGlvbnMpPVwibWVudGlvbmVkVXNlcnMgPSAkZXZlbnRcIlxuICAgICAgICAgIFthcmVNZW50aW9uc0VuYWJsZWRdPVwiYXJlTWVudGlvbnNFbmFibGVkXCJcbiAgICAgICAgICBbbWVudGlvblNjb3BlXT1cIm1lbnRpb25TY29wZVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vdEFsbG93ZWQ+XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImRpc2FibGVkVGV4dGFyZWFUZXh0IHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicnRhX190ZXh0YXJlYSBzdHItY2hhdF9fdGV4dGFyZWFfX3RleHRhcmVhXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZGlzYWJsZWQtdGV4dGFyZWFcIlxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgaXNGaWxlVXBsb2FkRW5hYmxlZCAmJlxuICAgICAgICAgIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgJiZcbiAgICAgICAgICBjYW5TZW5kTWVzc2FnZXMgJiZcbiAgICAgICAgICAhaXNDb29sZG93bkluUHJvZ3Jlc3NcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fZmlsZXVwbG9hZC13cmFwcGVyXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJmaWxlLXVwbG9hZC1idXR0b25cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3Rvb2x0aXBcIj5cbiAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuQXR0YWNoIGZpbGVzXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZnUtZmlsZS11cGxvYWQtYnV0dG9uXCI+XG4gICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cInJmdS1maWxlLWlucHV0XCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJmaWxlLWlucHV0XCJcbiAgICAgICAgICAgICAgW211bHRpcGxlXT1cImlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiZmlsZXNTZWxlY3RlZChmaWxlSW5wdXQuZmlsZXMpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X19pbnB1dC1mbGF0LWZpbGV1cGxvYWRcIj5cbiAgICAgICAgICAgICAgPHN0cmVhbS1pY29uIGljb249XCJmaWxlLXVwbG9hZFwiPjwvc3RyZWFtLWljb24+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cImNhblNlbmRNZXNzYWdlc1wiXG4gICAgICBkYXRhLXRlc3RpZD1cInNlbmQtYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3NlbmQtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJtZXNzYWdlU2VudCgpXCJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJtZXNzYWdlU2VudCgpXCJcbiAgICA+XG4gICAgICA8c3RyZWFtLWljb24gaWNvbj1cInNlbmRcIj48L3N0cmVhbS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -25,10 +25,6 @@ export class TextareaDirective {
|
|
|
25
25
|
this.subscriptions.push(this.componentRef.instance.userMentions.subscribe((value) => this.userMentions.next(value)));
|
|
26
26
|
}
|
|
27
27
|
this.componentRef.instance.areMentionsEnabled = this.areMentionsEnabled;
|
|
28
|
-
this.componentRef.instance.mentionAutocompleteItemTemplate =
|
|
29
|
-
this.mentionAutocompleteItemTemplate;
|
|
30
|
-
this.componentRef.instance.commandAutocompleteItemTemplate =
|
|
31
|
-
this.commandAutocompleteItemTemplate;
|
|
32
28
|
this.componentRef.instance.mentionScope = this.mentionScope;
|
|
33
29
|
this.componentRef.instance.value = this.value;
|
|
34
30
|
}
|
|
@@ -36,14 +32,6 @@ export class TextareaDirective {
|
|
|
36
32
|
if (changes.areMentionsEnabled) {
|
|
37
33
|
this.componentRef.instance.areMentionsEnabled = this.areMentionsEnabled;
|
|
38
34
|
}
|
|
39
|
-
if (changes.mentionAutocompleteItemTemplate) {
|
|
40
|
-
this.componentRef.instance.mentionAutocompleteItemTemplate =
|
|
41
|
-
this.mentionAutocompleteItemTemplate;
|
|
42
|
-
}
|
|
43
|
-
if (changes.commandAutocompleteItemTemplate) {
|
|
44
|
-
this.componentRef.instance.commandAutocompleteItemTemplate =
|
|
45
|
-
this.commandAutocompleteItemTemplate;
|
|
46
|
-
}
|
|
47
35
|
if (changes.mentionScope) {
|
|
48
36
|
this.componentRef.instance.mentionScope = this.mentionScope;
|
|
49
37
|
}
|
|
@@ -59,7 +47,7 @@ export class TextareaDirective {
|
|
|
59
47
|
}
|
|
60
48
|
}
|
|
61
49
|
TextareaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: TextareaDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
62
|
-
TextareaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.5", type: TextareaDirective, selector: "[streamTextarea]", inputs: { componentRef: "componentRef", areMentionsEnabled: "areMentionsEnabled",
|
|
50
|
+
TextareaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.5", type: TextareaDirective, selector: "[streamTextarea]", inputs: { componentRef: "componentRef", areMentionsEnabled: "areMentionsEnabled", mentionScope: "mentionScope", value: "value" }, outputs: { valueChange: "valueChange", send: "send", userMentions: "userMentions" }, usesOnChanges: true, ngImport: i0 });
|
|
63
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: TextareaDirective, decorators: [{
|
|
64
52
|
type: Directive,
|
|
65
53
|
args: [{
|
|
@@ -69,12 +57,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
69
57
|
type: Input
|
|
70
58
|
}], areMentionsEnabled: [{
|
|
71
59
|
type: Input
|
|
72
|
-
}], mentionAutocompleteItemTemplate: [{
|
|
73
|
-
type: Input
|
|
74
60
|
}], mentionScope: [{
|
|
75
61
|
type: Input
|
|
76
|
-
}], commandAutocompleteItemTemplate: [{
|
|
77
|
-
type: Input
|
|
78
62
|
}], value: [{
|
|
79
63
|
type: Input
|
|
80
64
|
}], valueChange: [{
|
|
@@ -84,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
84
68
|
}], userMentions: [{
|
|
85
69
|
type: Output
|
|
86
70
|
}] } });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVExQyxNQUFNLE9BQU8saUJBQWlCO0lBVTVCLFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTjVDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDekMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUM3RCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsd0JBQW1CLEdBQW9CLEVBQUUsQ0FBQztJQUNNLENBQUM7SUFFekQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNuRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzdCLENBQ0YsQ0FBQztnQkFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUN0QixDQUNGLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7b0JBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDMUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQzlCLENBQ0YsQ0FBQztpQkFDSDtnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUM1RCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMvQztTQUNGO1FBQ0QsSUFBSSxPQUFPLENBQUMsa0JBQWtCLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1NBQ3pFO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzdEO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQy9DO1FBQ0Qsb0ZBQW9GO1FBQ3BGLElBQUksa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQzlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixtQ0FBUSxrQkFBa0IsR0FBSyxDQUFDLENBQUUsQ0FBQyxDQUM5RCxDQUFDO1FBQ0YsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFDaEMsQ0FBQzs7OEdBM0RVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBSDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7dUdBRVUsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ2EsV0FBVztzQkFBN0IsTUFBTTtnQkFDWSxJQUFJO3NCQUF0QixNQUFNO2dCQUNZLFlBQVk7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBUZXh0YXJlYUludGVyZmFjZSB9IGZyb20gJy4vdGV4dGFyZWEuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3N0cmVhbVRleHRhcmVhXScsXG59KVxuZXhwb3J0IGNsYXNzIFRleHRhcmVhRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VGV4dGFyZWFJbnRlcmZhY2U+IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBhcmVNZW50aW9uc0VuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG1lbnRpb25TY29wZT86ICdjaGFubmVsJyB8ICdhcHBsaWNhdGlvbic7XG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHVzZXJNZW50aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlclJlc3BvbnNlW10+KCk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSB1bnByb3BhZ2F0ZWRDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzW10gPSBbXTtcbiAgY29uc3RydWN0b3IocHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMudW5wcm9wYWdhdGVkQ2hhbmdlcy5wdXNoKGNoYW5nZXMpO1xuICAgIGlmICghdGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5uZXh0KHZhbHVlKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VuZC5zdWJzY3JpYmUoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy5zZW5kLm5leHQodmFsdWUpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudXNlck1lbnRpb25zKSB7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS51c2VyTWVudGlvbnMuc3Vic2NyaWJlKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgICAgdGhpcy51c2VyTWVudGlvbnMubmV4dCh2YWx1ZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmFyZU1lbnRpb25zRW5hYmxlZCA9IHRoaXMuYXJlTWVudGlvbnNFbmFibGVkO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5tZW50aW9uU2NvcGUgPSB0aGlzLm1lbnRpb25TY29wZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hcmVNZW50aW9uc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmFyZU1lbnRpb25zRW5hYmxlZCA9IHRoaXMuYXJlTWVudGlvbnNFbmFibGVkO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZW50aW9uU2NvcGUpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm1lbnRpb25TY29wZSA9IHRoaXMubWVudGlvblNjb3BlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy52YWx1ZSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIH1cbiAgICAvLyBuZ09uQ2hhbmdlcyBub3QgY2FsbGVkIGZvciBkeW5hbWljIGNvbXBvbmVudHMgc2luY2Ugd2UgZG9uJ3QgdXNlIHRlbXBsYXRlIGJpbmRpbmdcbiAgICBsZXQgY2hhbmdlc1RvUHJvcGFnYXRlID0ge307XG4gICAgdGhpcy51bnByb3BhZ2F0ZWRDaGFuZ2VzLmZvckVhY2goXG4gICAgICAoYykgPT4gKGNoYW5nZXNUb1Byb3BhZ2F0ZSA9IHsgLi4uY2hhbmdlc1RvUHJvcGFnYXRlLCAuLi5jIH0pXG4gICAgKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWxpZmVjeWNsZS1jYWxsXG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubmdPbkNoYW5nZXMoY2hhbmdlc1RvUHJvcGFnYXRlKTtcbiAgICB0aGlzLnVucHJvcGFnYXRlZENoYW5nZXMgPSBbXTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXNlclJlc3BvbnNlIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRhcmVhSW50ZXJmYWNlIGV4dGVuZHMgT25DaGFuZ2VzIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuICBzZW5kOiBFdmVudEVtaXR0ZXI8dm9pZD47XG4gIHVzZXJNZW50aW9ucz86IEV2ZW50RW1pdHRlcjxVc2VyUmVzcG9uc2VbXT47XG4gIGFyZU1lbnRpb25zRW5hYmxlZD86IGJvb2xlYW47XG4gIG1lbnRpb25TY29wZT86ICdjaGFubmVsJyB8ICdhcHBsaWNhdGlvbic7XG59XG4iXX0=
|