valtech-components 4.0.1036 → 4.0.1038

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.
@@ -56,6 +56,13 @@ export class ChatWindowComponent {
56
56
  this.showVoiceMessage = input(false);
57
57
  /** Muestra avatares en mensajes ajenos. Desactivable para chats 1:1 o agentes. */
58
58
  this.showAvatars = input(true);
59
+ this.renderAiMessages = input(false);
60
+ this.showReactions = input(true);
61
+ this.showReplyAction = input(true);
62
+ this.showReactAction = input(true);
63
+ this.showEditAction = input(true);
64
+ this.showDeleteAction = input(true);
65
+ this.showCopyAction = input(false);
59
66
  this.sendMessage = output();
60
67
  this.loadMore = output();
61
68
  this.reactionClick = output();
@@ -170,13 +177,15 @@ export class ChatWindowComponent {
170
177
  case 'react':
171
178
  this.reactionClick.emit({ msgId: event.msgId, token: event.token ?? '👍' });
172
179
  break;
180
+ case 'copy':
181
+ break;
173
182
  }
174
183
  }
175
184
  t(key) {
176
185
  return this.i18n.t(key, 'ChatWindow');
177
186
  }
178
187
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatWindowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
179
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChatWindowComponent, isStandalone: true, selector: "val-chat-window", inputs: { convId: { classPropertyName: "convId", publicName: "convId", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, currentUserId: { classPropertyName: "currentUserId", publicName: "currentUserId", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, typingUsers: { classPropertyName: "typingUsers", publicName: "typingUsers", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, canModerate: { classPropertyName: "canModerate", publicName: "canModerate", isSignal: true, isRequired: false, transformFunction: null }, showAttach: { classPropertyName: "showAttach", publicName: "showAttach", isSignal: true, isRequired: false, transformFunction: null }, showDictation: { classPropertyName: "showDictation", publicName: "showDictation", isSignal: true, isRequired: false, transformFunction: null }, showVoiceMessage: { classPropertyName: "showVoiceMessage", publicName: "showVoiceMessage", isSignal: true, isRequired: false, transformFunction: null }, showAvatars: { classPropertyName: "showAvatars", publicName: "showAvatars", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sendMessage: "sendMessage", loadMore: "loadMore", reactionClick: "reactionClick", deleteMessage: "deleteMessage", replyTo: "replyTo", editMessage: "editMessage", typing: "typing", voice: "voice" }, viewQueries: [{ propertyName: "msgsEl", first: true, predicate: ["msgs"], descendants: true, isSignal: true }], ngImport: i0, template: `
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChatWindowComponent, isStandalone: true, selector: "val-chat-window", inputs: { convId: { classPropertyName: "convId", publicName: "convId", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, currentUserId: { classPropertyName: "currentUserId", publicName: "currentUserId", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, typingUsers: { classPropertyName: "typingUsers", publicName: "typingUsers", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, canModerate: { classPropertyName: "canModerate", publicName: "canModerate", isSignal: true, isRequired: false, transformFunction: null }, showAttach: { classPropertyName: "showAttach", publicName: "showAttach", isSignal: true, isRequired: false, transformFunction: null }, showDictation: { classPropertyName: "showDictation", publicName: "showDictation", isSignal: true, isRequired: false, transformFunction: null }, showVoiceMessage: { classPropertyName: "showVoiceMessage", publicName: "showVoiceMessage", isSignal: true, isRequired: false, transformFunction: null }, showAvatars: { classPropertyName: "showAvatars", publicName: "showAvatars", isSignal: true, isRequired: false, transformFunction: null }, renderAiMessages: { classPropertyName: "renderAiMessages", publicName: "renderAiMessages", isSignal: true, isRequired: false, transformFunction: null }, showReactions: { classPropertyName: "showReactions", publicName: "showReactions", isSignal: true, isRequired: false, transformFunction: null }, showReplyAction: { classPropertyName: "showReplyAction", publicName: "showReplyAction", isSignal: true, isRequired: false, transformFunction: null }, showReactAction: { classPropertyName: "showReactAction", publicName: "showReactAction", isSignal: true, isRequired: false, transformFunction: null }, showEditAction: { classPropertyName: "showEditAction", publicName: "showEditAction", isSignal: true, isRequired: false, transformFunction: null }, showDeleteAction: { classPropertyName: "showDeleteAction", publicName: "showDeleteAction", isSignal: true, isRequired: false, transformFunction: null }, showCopyAction: { classPropertyName: "showCopyAction", publicName: "showCopyAction", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sendMessage: "sendMessage", loadMore: "loadMore", reactionClick: "reactionClick", deleteMessage: "deleteMessage", replyTo: "replyTo", editMessage: "editMessage", typing: "typing", voice: "voice" }, viewQueries: [{ propertyName: "msgsEl", first: true, predicate: ["msgs"], descendants: true, isSignal: true }], ngImport: i0, template: `
180
189
  <div class="chat">
181
190
  <div #msgs class="messages" (scroll)="onScroll()">
182
191
  @if (isLoading()) {
@@ -202,6 +211,13 @@ export class ChatWindowComponent {
202
211
  [tail]="row.tail"
203
212
  [locale]="locale()"
204
213
  [canModerate]="canModerate()"
214
+ [renderAiMessage]="renderAiMessages() && !row.msg.isMine"
215
+ [showReactions]="showReactions()"
216
+ [showReplyAction]="showReplyAction()"
217
+ [showReactAction]="showReactAction()"
218
+ [showEditAction]="showEditAction()"
219
+ [showDeleteAction]="showDeleteAction()"
220
+ [showCopyAction]="showCopyAction()"
205
221
  (action)="onAction($event)"
206
222
  />
207
223
  }
@@ -234,7 +250,7 @@ export class ChatWindowComponent {
234
250
  <div class="closed-banner">{{ t('conversationClosed') }}</div>
235
251
  }
236
252
  </div>
237
- `, isInline: true, styles: [":host{display:block;position:relative;height:100%;min-height:0}.chat{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--val-chat-background, var(--ion-background-color, #fff))}.messages{flex:1;min-height:0;overflow-y:auto;padding:var(--val-chat-messages-padding, 18px 16px 12px);display:flex;flex-direction:column;gap:2px}.state{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--ion-color-dark, #92949c);font-size:.9375rem;text-align:center;padding:24px}.state.empty ion-icon{font-size:2.5rem;opacity:.5}.date-sep{position:sticky;top:4px;z-index:1;display:flex;justify-content:center;margin:8px 0}.date-sep span{font-size:.75rem;color:var(--ion-color-dark, #92949c);background:var(--val-chat-date-background, rgba(127, 127, 127, .08));padding:3px 12px;border-radius:999px;backdrop-filter:blur(4px)}.scroll-down{position:absolute;right:14px;bottom:84px;width:40px;height:40px;border-radius:50%;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));color:var(--ion-color-dark, #92949c);box-shadow:0 2px 10px #00000026;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.25rem;z-index:3}.scroll-down .dot{position:absolute;top:0;right:0;width:12px;height:12px;border-radius:50%;background:var(--ion-color-primary);border:2px solid var(--ion-card-background, #fff)}.closed-banner{text-align:center;padding:14px;color:var(--ion-color-dark, #92949c);font-size:.875rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: MessageBubbleComponent, selector: "val-message-bubble", inputs: ["msg", "showAvatar", "showName", "tail", "locale", "canModerate"], outputs: ["action"] }, { kind: "component", type: ChatComposerComponent, selector: "val-chat-composer", inputs: ["placeholder", "disabled", "maxLength", "replyingTo", "showAttach", "showMic", "showVoiceMessage"], outputs: ["send", "typing", "voice", "cancelReply"] }, { kind: "component", type: TypingIndicatorComponent, selector: "val-typing-indicator", inputs: ["typingUsers"] }] }); }
253
+ `, isInline: true, styles: [":host{display:block;position:relative;height:100%;min-height:0}.chat{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--val-chat-background, var(--ion-background-color, #fff))}.messages{flex:1;min-height:0;overflow-y:auto;padding:var(--val-chat-messages-padding, 18px 16px 12px);display:flex;flex-direction:column;gap:2px}.state{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--ion-color-dark, #92949c);font-size:.9375rem;text-align:center;padding:24px}.state.empty ion-icon{font-size:2.5rem;opacity:.5}.date-sep{position:sticky;top:4px;z-index:1;display:flex;justify-content:center;margin:8px 0}.date-sep span{font-size:.75rem;color:var(--ion-color-dark, #92949c);background:var(--val-chat-date-background, rgba(127, 127, 127, .08));padding:3px 12px;border-radius:999px;backdrop-filter:blur(4px)}.scroll-down{position:absolute;right:14px;bottom:84px;width:40px;height:40px;border-radius:50%;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));color:var(--ion-color-dark, #92949c);box-shadow:0 2px 10px #00000026;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.25rem;z-index:3}.scroll-down .dot{position:absolute;top:0;right:0;width:12px;height:12px;border-radius:50%;background:var(--ion-color-primary);border:2px solid var(--ion-card-background, #fff)}.closed-banner{text-align:center;padding:14px;color:var(--ion-color-dark, #92949c);font-size:.875rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: MessageBubbleComponent, selector: "val-message-bubble", inputs: ["msg", "showAvatar", "showName", "tail", "locale", "canModerate", "renderAiMessage", "showReactions", "showReplyAction", "showReactAction", "showEditAction", "showDeleteAction", "showCopyAction"], outputs: ["action"] }, { kind: "component", type: ChatComposerComponent, selector: "val-chat-composer", inputs: ["placeholder", "disabled", "maxLength", "replyingTo", "showAttach", "showMic", "showVoiceMessage"], outputs: ["send", "typing", "voice", "cancelReply"] }, { kind: "component", type: TypingIndicatorComponent, selector: "val-typing-indicator", inputs: ["typingUsers"] }] }); }
238
254
  }
239
255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatWindowComponent, decorators: [{
240
256
  type: Component,
@@ -264,6 +280,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
264
280
  [tail]="row.tail"
265
281
  [locale]="locale()"
266
282
  [canModerate]="canModerate()"
283
+ [renderAiMessage]="renderAiMessages() && !row.msg.isMine"
284
+ [showReactions]="showReactions()"
285
+ [showReplyAction]="showReplyAction()"
286
+ [showReactAction]="showReactAction()"
287
+ [showEditAction]="showEditAction()"
288
+ [showDeleteAction]="showDeleteAction()"
289
+ [showCopyAction]="showCopyAction()"
267
290
  (action)="onAction($event)"
268
291
  />
269
292
  }
@@ -298,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
298
321
  </div>
299
322
  `, styles: [":host{display:block;position:relative;height:100%;min-height:0}.chat{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--val-chat-background, var(--ion-background-color, #fff))}.messages{flex:1;min-height:0;overflow-y:auto;padding:var(--val-chat-messages-padding, 18px 16px 12px);display:flex;flex-direction:column;gap:2px}.state{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--ion-color-dark, #92949c);font-size:.9375rem;text-align:center;padding:24px}.state.empty ion-icon{font-size:2.5rem;opacity:.5}.date-sep{position:sticky;top:4px;z-index:1;display:flex;justify-content:center;margin:8px 0}.date-sep span{font-size:.75rem;color:var(--ion-color-dark, #92949c);background:var(--val-chat-date-background, rgba(127, 127, 127, .08));padding:3px 12px;border-radius:999px;backdrop-filter:blur(4px)}.scroll-down{position:absolute;right:14px;bottom:84px;width:40px;height:40px;border-radius:50%;border:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff));color:var(--ion-color-dark, #92949c);box-shadow:0 2px 10px #00000026;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.25rem;z-index:3}.scroll-down .dot{position:absolute;top:0;right:0;width:12px;height:12px;border-radius:50%;background:var(--ion-color-primary);border:2px solid var(--ion-card-background, #fff)}.closed-banner{text-align:center;padding:14px;color:var(--ion-color-dark, #92949c);font-size:.875rem}\n"] }]
300
323
  }], ctorParameters: () => [] });
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aW5kb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jaGF0LXdpbmRvdy9jaGF0LXdpbmRvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0seURBQXlELENBQUM7QUFFdEgsT0FBTyxFQUFFLHFCQUFxQixFQUF5QixNQUFNLHVEQUF1RCxDQUFDO0FBQ3JILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDOztBQUV2RyxRQUFRLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7QUFFbkQsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixFQUFFLEVBQUU7UUFDRixrQkFBa0IsRUFBRSxnQ0FBZ0M7UUFDcEQsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixVQUFVLEVBQUUsMENBQTBDO1FBQ3RELFdBQVcsRUFBRSxpQkFBaUI7S0FDL0I7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QixNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDNUUsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsQ0FBQyxDQUFDLEdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDOytHQWhKVSxtQkFBbUI7bUdBQW5CLG1CQUFtQixpM0RBMUpwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBEVCxnbERBM0RTLFlBQVksK0JBQUUsT0FBTywySkFBRSxzQkFBc0IsZ0tBQUUscUJBQXFCLGdPQUFFLHdCQUF3Qjs7NEZBMko3RixtQkFBbUI7a0JBOUovQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLENBQUMsWUFDL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwRFQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFycm93RG93bk91dGxpbmUsIGNoYXRidWJibGVzT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IGZvcm1hdERhdGVTZXBhcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgTWVzc2FnZVJlcGx5VG8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGF0L3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVDb21wb25lbnQsIE1lc3NhZ2VCdWJibGVBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbWVzc2FnZS1idWJibGUvbWVzc2FnZS1idWJibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS90eXBlcyc7XG5pbXBvcnQgeyBDaGF0Q29tcG9zZXJDb21wb25lbnQsIENoYXRDb21wb3NlclNlbmRFdmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGF0LWNvbXBvc2VyL2NoYXQtY29tcG9zZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFR5cGluZ0luZGljYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90eXBpbmctaW5kaWNhdG9yL3R5cGluZy1pbmRpY2F0b3IuY29tcG9uZW50JztcblxuYWRkSWNvbnMoeyBhcnJvd0Rvd25PdXRsaW5lLCBjaGF0YnViYmxlc091dGxpbmUgfSk7XG5cbmNvbnN0IENIQVRfV0lORE9XX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgY29udmVyc2F0aW9uQ2xvc2VkOiAnRXN0YSBjb252ZXJzYWNpb24gZXN0YSBjZXJyYWRhJyxcbiAgICBsb2FkaW5nOiAnQ2FyZ2FuZG8gbWVuc2FqZXMuLi4nLFxuICAgIG5vTWVzc2FnZXM6ICdBdW4gbm8gaGF5IG1lbnNhamVzLiBFc2NyaWJlIGVsIHByaW1lcm8uJyxcbiAgICBuZXdNZXNzYWdlczogJ01lbnNhamVzIG51ZXZvcycsXG4gIH0sXG4gIGVuOiB7XG4gICAgY29udmVyc2F0aW9uQ2xvc2VkOiAnVGhpcyBjb252ZXJzYXRpb24gaXMgY2xvc2VkJyxcbiAgICBsb2FkaW5nOiAnTG9hZGluZyBtZXNzYWdlcy4uLicsXG4gICAgbm9NZXNzYWdlczogJ05vIG1lc3NhZ2VzIHlldC4gU2VuZCB0aGUgZmlyc3Qgb25lLicsXG4gICAgbmV3TWVzc2FnZXM6ICdOZXcgbWVzc2FnZXMnLFxuICB9LFxufTtcblxudHlwZSBDaGF0Um93ID1cbiAgfCB7IGtpbmQ6ICdkYXRlJzsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9XG4gIHwge1xuICAgICAga2luZDogJ21zZyc7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgbXNnOiBNZXNzYWdlQnViYmxlTWV0YWRhdGE7XG4gICAgICBzaG93TmFtZTogYm9vbGVhbjtcbiAgICAgIHNob3dBdmF0YXI6IGJvb2xlYW47XG4gICAgICB0YWlsOiBib29sZWFuO1xuICAgIH07XG5cbi8qKlxuICogdmFsLWNoYXQtd2luZG93IOKAlCB2ZW50YW5hIGRlIGNoYXQgY29tcGxldGEgKHNpZ25hbCBpbnB1dHMpLlxuICpcbiAqIEFncnVwYSBtZW5zYWplcyBjb25zZWN1dGl2b3MgZGVsIG1pc21vIGVtaXNvciB5IHBvciBkw61hIChzZXBhcmFkb3JlcyBzdGlja3kpLFxuICogbXVlc3RyYSBhdmF0YXIvbm9tYnJlIHNvbG8gZW4gbG9zIGJvcmRlcyBkZWwgZ3J1cG8sIHNjcm9sbC10by1ib3R0b20gaW50ZWxpZ2VudGVcbiAqIChhdXRvLXNjcm9sbCBzaSBlc3TDoXMgYWJham8sIHBpbGwgXCJtZW5zYWplcyBudWV2b3NcIiBzaSBlc3TDoXMgbGV5ZW5kbyBhcnJpYmEpLFxuICogY29tcG9zZXIgbW9kZXJubyBjb24gY29udGV4dG8gZGUgcmVzcHVlc3RhLCB5IHR5cGluZyBpbmRpY2F0b3IuXG4gKlxuICogQVBJIHDDumJsaWNhIGVzdGFibGUgKGNvbnN1bWlkYSBwb3IgdGhyZWFkLXBhbmVsIHkgc2hvd2Nhc2UpOiBpbnB1dHMgY29udklkLFxuICogbWVzc2FnZXMsIGN1cnJlbnRVc2VySWQsIGlzT3BlbiwgdHlwaW5nVXNlcnMsIGlzTG9hZGluZzsgb3V0cHV0cyBzZW5kTWVzc2FnZSxcbiAqIGxvYWRNb3JlLCByZWFjdGlvbkNsaWNrLCBkZWxldGVNZXNzYWdlLCByZXBseVRvICgrIGVkaXRNZXNzYWdlL2F0dGFjaC92b2ljZSBudWV2b3MpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hhdC13aW5kb3cnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uLCBNZXNzYWdlQnViYmxlQ29tcG9uZW50LCBDaGF0Q29tcG9zZXJDb21wb25lbnQsIFR5cGluZ0luZGljYXRvckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNoYXRcIj5cbiAgICAgIDxkaXYgI21zZ3MgY2xhc3M9XCJtZXNzYWdlc1wiIChzY3JvbGwpPVwib25TY3JvbGwoKVwiPlxuICAgICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXRlXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB0KCdsb2FkaW5nJykgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKHJvd3MoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdGUgZW1wdHlcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hhdGJ1YmJsZXMtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8c3Bhbj57eyB0KCdub01lc3NhZ2VzJykgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBmb3IgKHJvdyBvZiByb3dzKCk7IHRyYWNrIHJvdy5pZCkge1xuICAgICAgICAgICAgQGlmIChyb3cua2luZCA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXNlcFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJvdy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPHZhbC1tZXNzYWdlLWJ1YmJsZVxuICAgICAgICAgICAgICAgIFttc2ddPVwicm93Lm1zZ1wiXG4gICAgICAgICAgICAgICAgW3Nob3dOYW1lXT1cInJvdy5zaG93TmFtZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dBdmF0YXJdPVwicm93LnNob3dBdmF0YXJcIlxuICAgICAgICAgICAgICAgIFt0YWlsXT1cInJvdy50YWlsXCJcbiAgICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZSgpXCJcbiAgICAgICAgICAgICAgICBbY2FuTW9kZXJhdGVdPVwiY2FuTW9kZXJhdGUoKVwiXG4gICAgICAgICAgICAgICAgKGFjdGlvbik9XCJvbkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPHZhbC10eXBpbmctaW5kaWNhdG9yIFt0eXBpbmdVc2Vyc109XCJ0eXBpbmdVc2VycygpXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKCFhdEJvdHRvbSgpKSB7XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJzY3JvbGwtZG93blwiIChjbGljayk9XCJzY3JvbGxUb0JvdHRvbSh0cnVlKVwiIGFyaWEtbGFiZWw9XCJzY3JvbGxcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LWRvd24tb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgQGlmIChoYXNOZXcoKSkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChpc09wZW4oKSkge1xuICAgICAgICA8dmFsLWNoYXQtY29tcG9zZXJcbiAgICAgICAgICBbcmVwbHlpbmdUb109XCJyZXBseWluZ1RvKClcIlxuICAgICAgICAgIFtzaG93QXR0YWNoXT1cInNob3dBdHRhY2goKVwiXG4gICAgICAgICAgW3Nob3dNaWNdPVwic2hvd0RpY3RhdGlvbigpXCJcbiAgICAgICAgICBbc2hvd1ZvaWNlTWVzc2FnZV09XCJzaG93Vm9pY2VNZXNzYWdlKClcIlxuICAgICAgICAgIChzZW5kKT1cIm9uU2VuZCgkZXZlbnQpXCJcbiAgICAgICAgICAodHlwaW5nKT1cInR5cGluZy5lbWl0KClcIlxuICAgICAgICAgICh2b2ljZSk9XCJ2b2ljZS5lbWl0KClcIlxuICAgICAgICAgIChjYW5jZWxSZXBseSk9XCJyZXBseWluZ1RvLnNldChudWxsKVwiXG4gICAgICAgIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNsb3NlZC1iYW5uZXJcIj57eyB0KCdjb252ZXJzYXRpb25DbG9zZWQnKSB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgIH1cbiAgICAgIC8qIHBvc2l0aW9uOmFic29sdXRlICsgaW5zZXQ6MCBkYSBhbCBjb250ZW5lZG9yIHVuYSBhbHR1cmEgREVGSU5JREEgKD0gbGEgZGVsXG4gICAgICAgICBob3N0KSwgc2luIGRlcGVuZGVyIGRlIGhlaWdodDoxMDAlIHF1ZSBubyByZXN1ZWx2ZSBlbiBjYWRlbmFzIGZsZXgvc2hhZG93LlxuICAgICAgICAgTWVuc2FqZXMgc2Nyb2xsZWFuOyBlbCBjb21wb3NlciAoZmxleDpub25lKSBxdWVkYSBhbmNsYWRvIGFiYWpvIHNpZW1wcmUuICovXG4gICAgICAuY2hhdCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaW5zZXQ6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXZhbC1jaGF0LWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICB9XG4gICAgICAubWVzc2FnZXMge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS12YWwtY2hhdC1tZXNzYWdlcy1wYWRkaW5nLCAxOHB4IDE2cHggMTJweCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgfVxuICAgICAgLnN0YXRlIHtcbiAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMjRweDtcbiAgICAgIH1cbiAgICAgIC5zdGF0ZS5lbXB0eSBpb24taWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICB9XG4gICAgICAuZGF0ZS1zZXAge1xuICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICB0b3A6IDRweDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogOHB4IDA7XG4gICAgICB9XG4gICAgICAuZGF0ZS1zZXAgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdmFsLWNoYXQtZGF0ZS1iYWNrZ3JvdW5kLCByZ2JhKDEyNywgMTI3LCAxMjcsIDAuMDgpKTtcbiAgICAgICAgcGFkZGluZzogM3B4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICAgIH1cbiAgICAgIC5zY3JvbGwtZG93biB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDE0cHg7XG4gICAgICAgIGJvdHRvbTogODRweDtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY2FyZC1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIHotaW5kZXg6IDM7XG4gICAgICB9XG4gICAgICAuc2Nyb2xsLWRvd24gLmRvdCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgd2lkdGg6IDEycHg7XG4gICAgICAgIGhlaWdodDogMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsICNmZmYpO1xuICAgICAgfVxuICAgICAgLmNsb3NlZC1iYW5uZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IDE0cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdFdpbmRvd0NvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgY29udklkID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IG1lc3NhZ2VzID0gaW5wdXQ8TWVzc2FnZUJ1YmJsZU1ldGFkYXRhW10+KFtdKTtcbiAgcmVhZG9ubHkgY3VycmVudFVzZXJJZCA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBpc09wZW4gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgdHlwaW5nVXNlcnMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICByZWFkb25seSBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIC8qKiBPd25lci9tb2RlcmF0b3IgZGVsIGNoYXQ6IGhhYmlsaXRhIGJvcnJhciBtZW5zYWplcyBhamVub3MgKG1vZGVyYWNpb24pLiAqL1xuICByZWFkb25seSBjYW5Nb2RlcmF0ZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLy8gRmVhdHVyZS1mbGFncyBkZWwgY29tcG9zZXIg4oCUIGNhZGEgYXBwL2NvbnN1bWlkb3IgZGVjaWRlIHF1w6kgaGFiaWxpdGFyLlxuICAvKiogQm90w7NuIGRlIGFkanVudGFyIGFyY2hpdm9zL2ltw6FnZW5lcy4gKi9cbiAgcmVhZG9ubHkgc2hvd0F0dGFjaCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICAvKiogQm90w7NuIGRlIGRpY3RhZG8gdm964oaSdGV4dG8gKFNwZWVjaFJlY29nbml0aW9uKS4gKi9cbiAgcmVhZG9ubHkgc2hvd0RpY3RhdGlvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICAvKiogQm90w7NuIGRlIG1lbnNhamUgZGUgdm96IChncmFiYXIgY2xpcCBkZSBhdWRpbykuICovXG4gIHJlYWRvbmx5IHNob3dWb2ljZU1lc3NhZ2UgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIC8qKiBNdWVzdHJhIGF2YXRhcmVzIGVuIG1lbnNhamVzIGFqZW5vcy4gRGVzYWN0aXZhYmxlIHBhcmEgY2hhdHMgMToxIG8gYWdlbnRlcy4gKi9cbiAgcmVhZG9ubHkgc2hvd0F2YXRhcnMgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBzZW5kTWVzc2FnZSA9IG91dHB1dDxDaGF0Q29tcG9zZXJTZW5kRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IGxvYWRNb3JlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IHJlYWN0aW9uQ2xpY2sgPSBvdXRwdXQ8eyBtc2dJZDogc3RyaW5nOyB0b2tlbjogc3RyaW5nIH0+KCk7XG4gIHJlYWRvbmx5IGRlbGV0ZU1lc3NhZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSByZXBseVRvID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgZWRpdE1lc3NhZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB0eXBpbmcgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgdm9pY2UgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1zZ3NFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ21zZ3MnKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVwbHlpbmdUbyA9IHNpZ25hbDxNZXNzYWdlUmVwbHlUbyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXRCb3R0b20gPSBzaWduYWwodHJ1ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNOZXcgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pMThuLmxhbmcoKSA9PT0gJ2VuJyA/ICdlbi1VUycgOiAnZXMtQ0wnKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ0NoYXRXaW5kb3cnLCBDSEFUX1dJTkRPV19JMThOKTtcblxuICAgIC8vIEF1dG8tc2Nyb2xsIGFsIGZvbmRvIGN1YW5kbyBsbGVnYW4gbWVuc2FqZXMgeSBlbCB1c3VhcmlvIHlhIGVzdGFiYSBhYmFqb1xuICAgIC8vIChvIGVsIMO6bHRpbW8gbWVuc2FqZSBlcyBwcm9waW8pLiBTaSBlc3TDoSBsZXllbmRvIGFycmliYSwgbWFyY2EgXCJudWV2b3NcIi5cbiAgICBsZXQgcHJldlNpZ25hdHVyZSA9ICcnO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMoKTtcbiAgICAgIGNvbnN0IGxhc3QgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGAke21lc3NhZ2VzLmxlbmd0aH06JHtsYXN0Py5tc2dJZCA/PyAnJ306JHtsYXN0Py5ib2R5Py5sZW5ndGggPz8gMH1gO1xuICAgICAgaWYgKHNpZ25hdHVyZSA9PT0gcHJldlNpZ25hdHVyZSkgcmV0dXJuO1xuICAgICAgY29uc3QgcHJldmlvdXNDb3VudCA9IE51bWJlcihwcmV2U2lnbmF0dXJlLnNwbGl0KCc6JylbMF0gfHwgMCk7XG4gICAgICBjb25zdCBncmV3ID0gbWVzc2FnZXMubGVuZ3RoID4gcHJldmlvdXNDb3VudDtcbiAgICAgIHByZXZTaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgICBjb25zdCBtaW5lID0gbGFzdD8uaXNNaW5lID8/IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuYXRCb3R0b20oKSB8fCBtaW5lKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb0JvdHRvbShmYWxzZSksIDApO1xuICAgICAgfSBlbHNlIGlmIChncmV3KSB7XG4gICAgICAgIHRoaXMuaGFzTmV3LnNldCh0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSByb3dzID0gY29tcHV0ZWQ8Q2hhdFJvd1tdPigoKSA9PiB7XG4gICAgY29uc3QgbXNncyA9IHRoaXMubWVzc2FnZXMoKTtcbiAgICBpZiAobXNncy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB7XG4gICAgICB0b2RheTogdGhpcy5pMThuLnQoJ3RvZGF5JywgJ19nbG9iYWwnKSxcbiAgICAgIHllc3RlcmRheTogdGhpcy5pMThuLnQoJ3llc3RlcmRheScsICdfZ2xvYmFsJyksXG4gICAgfTtcbiAgICBjb25zdCBvdXQ6IENoYXRSb3dbXSA9IFtdO1xuICAgIGxldCBwcmV2RGF5ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtc2dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBtID0gbXNnc1tpXTtcbiAgICAgIGNvbnN0IGQgPSBtLmNyZWF0ZWRBdCBpbnN0YW5jZW9mIERhdGUgPyBtLmNyZWF0ZWRBdCA6IG5ldyBEYXRlKG0uY3JlYXRlZEF0KTtcbiAgICAgIGNvbnN0IGRheSA9IGAke2QuZ2V0RnVsbFllYXIoKX0tJHtkLmdldE1vbnRoKCl9LSR7ZC5nZXREYXRlKCl9YDtcbiAgICAgIGNvbnN0IG5ld0RheSA9IGRheSAhPT0gcHJldkRheTtcbiAgICAgIGlmIChuZXdEYXkpIHtcbiAgICAgICAgb3V0LnB1c2goeyBraW5kOiAnZGF0ZScsIGlkOiAnZGF0ZS0nICsgZGF5LCBsYWJlbDogZm9ybWF0RGF0ZVNlcGFyYXRvcihkLCB0aGlzLmxvY2FsZSgpLCBsYWJlbHMpIH0pO1xuICAgICAgICBwcmV2RGF5ID0gZGF5O1xuICAgICAgfVxuICAgICAgY29uc3QgcHJldiA9IG1zZ3NbaSAtIDFdO1xuICAgICAgY29uc3QgbmV4dCA9IG1zZ3NbaSArIDFdO1xuICAgICAgY29uc3QgZmlyc3RJbkdyb3VwID0gbmV3RGF5IHx8ICFwcmV2IHx8IHByZXYuc2VuZGVySWQgIT09IG0uc2VuZGVySWQ7XG4gICAgICBjb25zdCBuZXh0RGF5ID0gbmV4dFxuICAgICAgICA/IGAke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXRGdWxsWWVhcigpfS0ke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXRNb250aCgpfS0ke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXREYXRlKCl9YFxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3QgbGFzdEluR3JvdXAgPSAhbmV4dCB8fCBuZXh0LnNlbmRlcklkICE9PSBtLnNlbmRlcklkIHx8IG5leHREYXkgIT09IGRheTtcbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAga2luZDogJ21zZycsXG4gICAgICAgIGlkOiBtLm1zZ0lkLFxuICAgICAgICBtc2c6IG0sXG4gICAgICAgIHNob3dOYW1lOiBmaXJzdEluR3JvdXAgJiYgIW0uaXNNaW5lLFxuICAgICAgICBzaG93QXZhdGFyOiB0aGlzLnNob3dBdmF0YXJzKCkgJiYgbGFzdEluR3JvdXAgJiYgIW0uaXNNaW5lLFxuICAgICAgICB0YWlsOiBsYXN0SW5Hcm91cCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9KTtcblxuICBwcm90ZWN0ZWQgb25TY3JvbGwoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLm1zZ3NFbCgpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghZWwpIHJldHVybjtcbiAgICBjb25zdCBuZWFyQm90dG9tID0gZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuc2Nyb2xsVG9wIC0gZWwuY2xpZW50SGVpZ2h0IDwgODA7XG4gICAgdGhpcy5hdEJvdHRvbS5zZXQobmVhckJvdHRvbSk7XG4gICAgaWYgKG5lYXJCb3R0b20pIHRoaXMuaGFzTmV3LnNldChmYWxzZSk7XG4gICAgaWYgKGVsLnNjcm9sbFRvcCA8IDQwKSB0aGlzLmxvYWRNb3JlLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzY3JvbGxUb0JvdHRvbShzbW9vdGg6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMubXNnc0VsKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGVsLnNjcm9sbFRvKHsgdG9wOiBlbC5zY3JvbGxIZWlnaHQsIGJlaGF2aW9yOiBzbW9vdGggPyAnc21vb3RoJyA6ICdhdXRvJyB9KTtcbiAgICB0aGlzLmF0Qm90dG9tLnNldCh0cnVlKTtcbiAgICB0aGlzLmhhc05ldy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2VuZChldmVudDogQ2hhdENvbXBvc2VyU2VuZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTWVzc2FnZS5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLnJlcGx5aW5nVG8uc2V0KG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uKGV2ZW50OiBNZXNzYWdlQnViYmxlQWN0aW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdyZXBseSc6IHtcbiAgICAgICAgY29uc3QgbSA9IHRoaXMubWVzc2FnZXMoKS5maW5kKHggPT4geC5tc2dJZCA9PT0gZXZlbnQubXNnSWQpO1xuICAgICAgICBpZiAobSkge1xuICAgICAgICAgIHRoaXMucmVwbHlpbmdUby5zZXQoeyBtc2dJZDogbS5tc2dJZCwgc2VuZGVyTmFtZTogbS5zZW5kZXJOYW1lLCBib2R5OiBtLmJvZHkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXBseVRvLmVtaXQoZXZlbnQubXNnSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2VkaXQnOlxuICAgICAgICB0aGlzLmVkaXRNZXNzYWdlLmVtaXQoZXZlbnQubXNnSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIHRoaXMuZGVsZXRlTWVzc2FnZS5lbWl0KGV2ZW50Lm1zZ0lkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZWFjdCc6XG4gICAgICAgIHRoaXMucmVhY3Rpb25DbGljay5lbWl0KHsgbXNnSWQ6IGV2ZW50Lm1zZ0lkLCB0b2tlbjogZXZlbnQudG9rZW4gPz8gJ/CfkY0nIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnQ2hhdFdpbmRvdycpO1xuICB9XG59XG4iXX0=
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC13aW5kb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jaGF0LXdpbmRvdy9jaGF0LXdpbmRvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0seURBQXlELENBQUM7QUFFdEgsT0FBTyxFQUFFLHFCQUFxQixFQUF5QixNQUFNLHVEQUF1RCxDQUFDO0FBQ3JILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDOztBQUV2RyxRQUFRLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7QUFFbkQsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixFQUFFLEVBQUU7UUFDRixrQkFBa0IsRUFBRSxnQ0FBZ0M7UUFDcEQsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixVQUFVLEVBQUUsMENBQTBDO1FBQ3RELFdBQVcsRUFBRSxpQkFBaUI7S0FDL0I7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QkFBRSxPQUFPLDJKQUFFLHNCQUFzQixrU0FBRSxxQkFBcUIsZ09BQUUsd0JBQXdCOzs0RkFrSzdGLG1CQUFtQjtrQkFySy9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsQ0FBQyxZQUMvRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFycm93RG93bk91dGxpbmUsIGNoYXRidWJibGVzT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IGZvcm1hdERhdGVTZXBhcmF0b3IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgTWVzc2FnZVJlcGx5VG8gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jaGF0L3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVDb21wb25lbnQsIE1lc3NhZ2VCdWJibGVBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbWVzc2FnZS1idWJibGUvbWVzc2FnZS1idWJibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VCdWJibGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9tZXNzYWdlLWJ1YmJsZS90eXBlcyc7XG5pbXBvcnQgeyBDaGF0Q29tcG9zZXJDb21wb25lbnQsIENoYXRDb21wb3NlclNlbmRFdmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGF0LWNvbXBvc2VyL2NoYXQtY29tcG9zZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFR5cGluZ0luZGljYXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90eXBpbmctaW5kaWNhdG9yL3R5cGluZy1pbmRpY2F0b3IuY29tcG9uZW50JztcblxuYWRkSWNvbnMoeyBhcnJvd0Rvd25PdXRsaW5lLCBjaGF0YnViYmxlc091dGxpbmUgfSk7XG5cbmNvbnN0IENIQVRfV0lORE9XX0kxOE4gPSB7XG4gIGVzOiB7XG4gICAgY29udmVyc2F0aW9uQ2xvc2VkOiAnRXN0YSBjb252ZXJzYWNpb24gZXN0YSBjZXJyYWRhJyxcbiAgICBsb2FkaW5nOiAnQ2FyZ2FuZG8gbWVuc2FqZXMuLi4nLFxuICAgIG5vTWVzc2FnZXM6ICdBdW4gbm8gaGF5IG1lbnNhamVzLiBFc2NyaWJlIGVsIHByaW1lcm8uJyxcbiAgICBuZXdNZXNzYWdlczogJ01lbnNhamVzIG51ZXZvcycsXG4gIH0sXG4gIGVuOiB7XG4gICAgY29udmVyc2F0aW9uQ2xvc2VkOiAnVGhpcyBjb252ZXJzYXRpb24gaXMgY2xvc2VkJyxcbiAgICBsb2FkaW5nOiAnTG9hZGluZyBtZXNzYWdlcy4uLicsXG4gICAgbm9NZXNzYWdlczogJ05vIG1lc3NhZ2VzIHlldC4gU2VuZCB0aGUgZmlyc3Qgb25lLicsXG4gICAgbmV3TWVzc2FnZXM6ICdOZXcgbWVzc2FnZXMnLFxuICB9LFxufTtcblxudHlwZSBDaGF0Um93ID1cbiAgfCB7IGtpbmQ6ICdkYXRlJzsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9XG4gIHwge1xuICAgICAga2luZDogJ21zZyc7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgbXNnOiBNZXNzYWdlQnViYmxlTWV0YWRhdGE7XG4gICAgICBzaG93TmFtZTogYm9vbGVhbjtcbiAgICAgIHNob3dBdmF0YXI6IGJvb2xlYW47XG4gICAgICB0YWlsOiBib29sZWFuO1xuICAgIH07XG5cbi8qKlxuICogdmFsLWNoYXQtd2luZG93IOKAlCB2ZW50YW5hIGRlIGNoYXQgY29tcGxldGEgKHNpZ25hbCBpbnB1dHMpLlxuICpcbiAqIEFncnVwYSBtZW5zYWplcyBjb25zZWN1dGl2b3MgZGVsIG1pc21vIGVtaXNvciB5IHBvciBkw61hIChzZXBhcmFkb3JlcyBzdGlja3kpLFxuICogbXVlc3RyYSBhdmF0YXIvbm9tYnJlIHNvbG8gZW4gbG9zIGJvcmRlcyBkZWwgZ3J1cG8sIHNjcm9sbC10by1ib3R0b20gaW50ZWxpZ2VudGVcbiAqIChhdXRvLXNjcm9sbCBzaSBlc3TDoXMgYWJham8sIHBpbGwgXCJtZW5zYWplcyBudWV2b3NcIiBzaSBlc3TDoXMgbGV5ZW5kbyBhcnJpYmEpLFxuICogY29tcG9zZXIgbW9kZXJubyBjb24gY29udGV4dG8gZGUgcmVzcHVlc3RhLCB5IHR5cGluZyBpbmRpY2F0b3IuXG4gKlxuICogQVBJIHDDumJsaWNhIGVzdGFibGUgKGNvbnN1bWlkYSBwb3IgdGhyZWFkLXBhbmVsIHkgc2hvd2Nhc2UpOiBpbnB1dHMgY29udklkLFxuICogbWVzc2FnZXMsIGN1cnJlbnRVc2VySWQsIGlzT3BlbiwgdHlwaW5nVXNlcnMsIGlzTG9hZGluZzsgb3V0cHV0cyBzZW5kTWVzc2FnZSxcbiAqIGxvYWRNb3JlLCByZWFjdGlvbkNsaWNrLCBkZWxldGVNZXNzYWdlLCByZXBseVRvICgrIGVkaXRNZXNzYWdlL2F0dGFjaC92b2ljZSBudWV2b3MpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY2hhdC13aW5kb3cnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uLCBNZXNzYWdlQnViYmxlQ29tcG9uZW50LCBDaGF0Q29tcG9zZXJDb21wb25lbnQsIFR5cGluZ0luZGljYXRvckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNoYXRcIj5cbiAgICAgIDxkaXYgI21zZ3MgY2xhc3M9XCJtZXNzYWdlc1wiIChzY3JvbGwpPVwib25TY3JvbGwoKVwiPlxuICAgICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXRlXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyB0KCdsb2FkaW5nJykgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKHJvd3MoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdGUgZW1wdHlcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hhdGJ1YmJsZXMtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8c3Bhbj57eyB0KCdub01lc3NhZ2VzJykgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBmb3IgKHJvdyBvZiByb3dzKCk7IHRyYWNrIHJvdy5pZCkge1xuICAgICAgICAgICAgQGlmIChyb3cua2luZCA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXNlcFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJvdy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgPHZhbC1tZXNzYWdlLWJ1YmJsZVxuICAgICAgICAgICAgICAgIFttc2ddPVwicm93Lm1zZ1wiXG4gICAgICAgICAgICAgICAgW3Nob3dOYW1lXT1cInJvdy5zaG93TmFtZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dBdmF0YXJdPVwicm93LnNob3dBdmF0YXJcIlxuICAgICAgICAgICAgICAgIFt0YWlsXT1cInJvdy50YWlsXCJcbiAgICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZSgpXCJcbiAgICAgICAgICAgICAgICBbY2FuTW9kZXJhdGVdPVwiY2FuTW9kZXJhdGUoKVwiXG4gICAgICAgICAgICAgICAgW3JlbmRlckFpTWVzc2FnZV09XCJyZW5kZXJBaU1lc3NhZ2VzKCkgJiYgIXJvdy5tc2cuaXNNaW5lXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlYWN0aW9uc109XCJzaG93UmVhY3Rpb25zKClcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVwbHlBY3Rpb25dPVwic2hvd1JlcGx5QWN0aW9uKClcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVhY3RBY3Rpb25dPVwic2hvd1JlYWN0QWN0aW9uKClcIlxuICAgICAgICAgICAgICAgIFtzaG93RWRpdEFjdGlvbl09XCJzaG93RWRpdEFjdGlvbigpXCJcbiAgICAgICAgICAgICAgICBbc2hvd0RlbGV0ZUFjdGlvbl09XCJzaG93RGVsZXRlQWN0aW9uKClcIlxuICAgICAgICAgICAgICAgIFtzaG93Q29weUFjdGlvbl09XCJzaG93Q29weUFjdGlvbigpXCJcbiAgICAgICAgICAgICAgICAoYWN0aW9uKT1cIm9uQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8dmFsLXR5cGluZy1pbmRpY2F0b3IgW3R5cGluZ1VzZXJzXT1cInR5cGluZ1VzZXJzKClcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoIWF0Qm90dG9tKCkpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNjcm9sbC1kb3duXCIgKGNsaWNrKT1cInNjcm9sbFRvQm90dG9tKHRydWUpXCIgYXJpYS1sYWJlbD1cInNjcm9sbFwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctZG93bi1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICBAaWYgKGhhc05ldygpKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGlzT3BlbigpKSB7XG4gICAgICAgIDx2YWwtY2hhdC1jb21wb3NlclxuICAgICAgICAgIFtyZXBseWluZ1RvXT1cInJlcGx5aW5nVG8oKVwiXG4gICAgICAgICAgW3Nob3dBdHRhY2hdPVwic2hvd0F0dGFjaCgpXCJcbiAgICAgICAgICBbc2hvd01pY109XCJzaG93RGljdGF0aW9uKClcIlxuICAgICAgICAgIFtzaG93Vm9pY2VNZXNzYWdlXT1cInNob3dWb2ljZU1lc3NhZ2UoKVwiXG4gICAgICAgICAgKHNlbmQpPVwib25TZW5kKCRldmVudClcIlxuICAgICAgICAgICh0eXBpbmcpPVwidHlwaW5nLmVtaXQoKVwiXG4gICAgICAgICAgKHZvaWNlKT1cInZvaWNlLmVtaXQoKVwiXG4gICAgICAgICAgKGNhbmNlbFJlcGx5KT1cInJlcGx5aW5nVG8uc2V0KG51bGwpXCJcbiAgICAgICAgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2VkLWJhbm5lclwiPnt7IHQoJ2NvbnZlcnNhdGlvbkNsb3NlZCcpIH19PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgfVxuICAgICAgLyogcG9zaXRpb246YWJzb2x1dGUgKyBpbnNldDowIGRhIGFsIGNvbnRlbmVkb3IgdW5hIGFsdHVyYSBERUZJTklEQSAoPSBsYSBkZWxcbiAgICAgICAgIGhvc3QpLCBzaW4gZGVwZW5kZXIgZGUgaGVpZ2h0OjEwMCUgcXVlIG5vIHJlc3VlbHZlIGVuIGNhZGVuYXMgZmxleC9zaGFkb3cuXG4gICAgICAgICBNZW5zYWplcyBzY3JvbGxlYW47IGVsIGNvbXBvc2VyIChmbGV4Om5vbmUpIHF1ZWRhIGFuY2xhZG8gYWJham8gc2llbXByZS4gKi9cbiAgICAgIC5jaGF0IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdmFsLWNoYXQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgIH1cbiAgICAgIC5tZXNzYWdlcyB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXZhbC1jaGF0LW1lc3NhZ2VzLXBhZGRpbmcsIDE4cHggMTZweCAxMnB4KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICB9XG4gICAgICAuc3RhdGUge1xuICAgICAgICBtYXJnaW46IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAyNHB4O1xuICAgICAgfVxuICAgICAgLnN0YXRlLmVtcHR5IGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cbiAgICAgIC5kYXRlLXNlcCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgIHRvcDogNHB4O1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luOiA4cHggMDtcbiAgICAgIH1cbiAgICAgIC5kYXRlLXNlcCBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmssICM5Mjk0OWMpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS12YWwtY2hhdC1kYXRlLWJhY2tncm91bmQsIHJnYmEoMTI3LCAxMjcsIDEyNywgMC4wOCkpO1xuICAgICAgICBwYWRkaW5nOiAzcHggMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xuICAgICAgfVxuICAgICAgLnNjcm9sbC1kb3duIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMTRweDtcbiAgICAgICAgYm90dG9tOiA4NHB4O1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jYXJkLWJhY2tncm91bmQsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyaywgIzkyOTQ5Yyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgei1pbmRleDogMztcbiAgICAgIH1cbiAgICAgIC5zY3JvbGwtZG93biAuZG90IHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgI2ZmZik7XG4gICAgICB9XG4gICAgICAuY2xvc2VkLWJhbm5lciB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrLCAjOTI5NDljKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGF0V2luZG93Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICByZWFkb25seSBjb252SWQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgbWVzc2FnZXMgPSBpbnB1dDxNZXNzYWdlQnViYmxlTWV0YWRhdGFbXT4oW10pO1xuICByZWFkb25seSBjdXJyZW50VXNlcklkID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGlzT3BlbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSB0eXBpbmdVc2VycyA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIE93bmVyL21vZGVyYXRvciBkZWwgY2hhdDogaGFiaWxpdGEgYm9ycmFyIG1lbnNhamVzIGFqZW5vcyAobW9kZXJhY2lvbikuICovXG4gIHJlYWRvbmx5IGNhbk1vZGVyYXRlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICAvLyBGZWF0dXJlLWZsYWdzIGRlbCBjb21wb3NlciDigJQgY2FkYSBhcHAvY29uc3VtaWRvciBkZWNpZGUgcXXDqSBoYWJpbGl0YXIuXG4gIC8qKiBCb3TDs24gZGUgYWRqdW50YXIgYXJjaGl2b3MvaW3DoWdlbmVzLiAqL1xuICByZWFkb25seSBzaG93QXR0YWNoID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKiBCb3TDs24gZGUgZGljdGFkbyB2b3rihpJ0ZXh0byAoU3BlZWNoUmVjb2duaXRpb24pLiAqL1xuICByZWFkb25seSBzaG93RGljdGF0aW9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIC8qKiBCb3TDs24gZGUgbWVuc2FqZSBkZSB2b3ogKGdyYWJhciBjbGlwIGRlIGF1ZGlvKS4gKi9cbiAgcmVhZG9ubHkgc2hvd1ZvaWNlTWVzc2FnZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIE11ZXN0cmEgYXZhdGFyZXMgZW4gbWVuc2FqZXMgYWplbm9zLiBEZXNhY3RpdmFibGUgcGFyYSBjaGF0cyAxOjEgbyBhZ2VudGVzLiAqL1xuICByZWFkb25seSBzaG93QXZhdGFycyA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSByZW5kZXJBaU1lc3NhZ2VzID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93UmVhY3Rpb25zID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHNob3dSZXBseUFjdGlvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBzaG93UmVhY3RBY3Rpb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd0VkaXRBY3Rpb24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd0RlbGV0ZUFjdGlvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBzaG93Q29weUFjdGlvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBzZW5kTWVzc2FnZSA9IG91dHB1dDxDaGF0Q29tcG9zZXJTZW5kRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IGxvYWRNb3JlID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IHJlYWN0aW9uQ2xpY2sgPSBvdXRwdXQ8eyBtc2dJZDogc3RyaW5nOyB0b2tlbjogc3RyaW5nIH0+KCk7XG4gIHJlYWRvbmx5IGRlbGV0ZU1lc3NhZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSByZXBseVRvID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgZWRpdE1lc3NhZ2UgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB0eXBpbmcgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgdm9pY2UgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1zZ3NFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ21zZ3MnKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVwbHlpbmdUbyA9IHNpZ25hbDxNZXNzYWdlUmVwbHlUbyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXRCb3R0b20gPSBzaWduYWwodHJ1ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBoYXNOZXcgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBsb2NhbGUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5pMThuLmxhbmcoKSA9PT0gJ2VuJyA/ICdlbi1VUycgOiAnZXMtQ0wnKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ0NoYXRXaW5kb3cnLCBDSEFUX1dJTkRPV19JMThOKTtcblxuICAgIC8vIEF1dG8tc2Nyb2xsIGFsIGZvbmRvIGN1YW5kbyBsbGVnYW4gbWVuc2FqZXMgeSBlbCB1c3VhcmlvIHlhIGVzdGFiYSBhYmFqb1xuICAgIC8vIChvIGVsIMO6bHRpbW8gbWVuc2FqZSBlcyBwcm9waW8pLiBTaSBlc3TDoSBsZXllbmRvIGFycmliYSwgbWFyY2EgXCJudWV2b3NcIi5cbiAgICBsZXQgcHJldlNpZ25hdHVyZSA9ICcnO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMubWVzc2FnZXMoKTtcbiAgICAgIGNvbnN0IGxhc3QgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGAke21lc3NhZ2VzLmxlbmd0aH06JHtsYXN0Py5tc2dJZCA/PyAnJ306JHtsYXN0Py5ib2R5Py5sZW5ndGggPz8gMH1gO1xuICAgICAgaWYgKHNpZ25hdHVyZSA9PT0gcHJldlNpZ25hdHVyZSkgcmV0dXJuO1xuICAgICAgY29uc3QgcHJldmlvdXNDb3VudCA9IE51bWJlcihwcmV2U2lnbmF0dXJlLnNwbGl0KCc6JylbMF0gfHwgMCk7XG4gICAgICBjb25zdCBncmV3ID0gbWVzc2FnZXMubGVuZ3RoID4gcHJldmlvdXNDb3VudDtcbiAgICAgIHByZXZTaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgICBjb25zdCBtaW5lID0gbGFzdD8uaXNNaW5lID8/IGZhbHNlO1xuICAgICAgaWYgKHRoaXMuYXRCb3R0b20oKSB8fCBtaW5lKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zY3JvbGxUb0JvdHRvbShmYWxzZSksIDApO1xuICAgICAgfSBlbHNlIGlmIChncmV3KSB7XG4gICAgICAgIHRoaXMuaGFzTmV3LnNldCh0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSByb3dzID0gY29tcHV0ZWQ8Q2hhdFJvd1tdPigoKSA9PiB7XG4gICAgY29uc3QgbXNncyA9IHRoaXMubWVzc2FnZXMoKTtcbiAgICBpZiAobXNncy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB7XG4gICAgICB0b2RheTogdGhpcy5pMThuLnQoJ3RvZGF5JywgJ19nbG9iYWwnKSxcbiAgICAgIHllc3RlcmRheTogdGhpcy5pMThuLnQoJ3llc3RlcmRheScsICdfZ2xvYmFsJyksXG4gICAgfTtcbiAgICBjb25zdCBvdXQ6IENoYXRSb3dbXSA9IFtdO1xuICAgIGxldCBwcmV2RGF5ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtc2dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBtID0gbXNnc1tpXTtcbiAgICAgIGNvbnN0IGQgPSBtLmNyZWF0ZWRBdCBpbnN0YW5jZW9mIERhdGUgPyBtLmNyZWF0ZWRBdCA6IG5ldyBEYXRlKG0uY3JlYXRlZEF0KTtcbiAgICAgIGNvbnN0IGRheSA9IGAke2QuZ2V0RnVsbFllYXIoKX0tJHtkLmdldE1vbnRoKCl9LSR7ZC5nZXREYXRlKCl9YDtcbiAgICAgIGNvbnN0IG5ld0RheSA9IGRheSAhPT0gcHJldkRheTtcbiAgICAgIGlmIChuZXdEYXkpIHtcbiAgICAgICAgb3V0LnB1c2goeyBraW5kOiAnZGF0ZScsIGlkOiAnZGF0ZS0nICsgZGF5LCBsYWJlbDogZm9ybWF0RGF0ZVNlcGFyYXRvcihkLCB0aGlzLmxvY2FsZSgpLCBsYWJlbHMpIH0pO1xuICAgICAgICBwcmV2RGF5ID0gZGF5O1xuICAgICAgfVxuICAgICAgY29uc3QgcHJldiA9IG1zZ3NbaSAtIDFdO1xuICAgICAgY29uc3QgbmV4dCA9IG1zZ3NbaSArIDFdO1xuICAgICAgY29uc3QgZmlyc3RJbkdyb3VwID0gbmV3RGF5IHx8ICFwcmV2IHx8IHByZXYuc2VuZGVySWQgIT09IG0uc2VuZGVySWQ7XG4gICAgICBjb25zdCBuZXh0RGF5ID0gbmV4dFxuICAgICAgICA/IGAke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXRGdWxsWWVhcigpfS0ke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXRNb250aCgpfS0ke25ldyBEYXRlKG5leHQuY3JlYXRlZEF0KS5nZXREYXRlKCl9YFxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3QgbGFzdEluR3JvdXAgPSAhbmV4dCB8fCBuZXh0LnNlbmRlcklkICE9PSBtLnNlbmRlcklkIHx8IG5leHREYXkgIT09IGRheTtcbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAga2luZDogJ21zZycsXG4gICAgICAgIGlkOiBtLm1zZ0lkLFxuICAgICAgICBtc2c6IG0sXG4gICAgICAgIHNob3dOYW1lOiBmaXJzdEluR3JvdXAgJiYgIW0uaXNNaW5lLFxuICAgICAgICBzaG93QXZhdGFyOiB0aGlzLnNob3dBdmF0YXJzKCkgJiYgbGFzdEluR3JvdXAgJiYgIW0uaXNNaW5lLFxuICAgICAgICB0YWlsOiBsYXN0SW5Hcm91cCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9KTtcblxuICBwcm90ZWN0ZWQgb25TY3JvbGwoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLm1zZ3NFbCgpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghZWwpIHJldHVybjtcbiAgICBjb25zdCBuZWFyQm90dG9tID0gZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuc2Nyb2xsVG9wIC0gZWwuY2xpZW50SGVpZ2h0IDwgODA7XG4gICAgdGhpcy5hdEJvdHRvbS5zZXQobmVhckJvdHRvbSk7XG4gICAgaWYgKG5lYXJCb3R0b20pIHRoaXMuaGFzTmV3LnNldChmYWxzZSk7XG4gICAgaWYgKGVsLnNjcm9sbFRvcCA8IDQwKSB0aGlzLmxvYWRNb3JlLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzY3JvbGxUb0JvdHRvbShzbW9vdGg6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMubXNnc0VsKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGVsLnNjcm9sbFRvKHsgdG9wOiBlbC5zY3JvbGxIZWlnaHQsIGJlaGF2aW9yOiBzbW9vdGggPyAnc21vb3RoJyA6ICdhdXRvJyB9KTtcbiAgICB0aGlzLmF0Qm90dG9tLnNldCh0cnVlKTtcbiAgICB0aGlzLmhhc05ldy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU2VuZChldmVudDogQ2hhdENvbXBvc2VyU2VuZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZW5kTWVzc2FnZS5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLnJlcGx5aW5nVG8uc2V0KG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQWN0aW9uKGV2ZW50OiBNZXNzYWdlQnViYmxlQWN0aW9uKTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdyZXBseSc6IHtcbiAgICAgICAgY29uc3QgbSA9IHRoaXMubWVzc2FnZXMoKS5maW5kKHggPT4geC5tc2dJZCA9PT0gZXZlbnQubXNnSWQpO1xuICAgICAgICBpZiAobSkge1xuICAgICAgICAgIHRoaXMucmVwbHlpbmdUby5zZXQoeyBtc2dJZDogbS5tc2dJZCwgc2VuZGVyTmFtZTogbS5zZW5kZXJOYW1lLCBib2R5OiBtLmJvZHkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXBseVRvLmVtaXQoZXZlbnQubXNnSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2VkaXQnOlxuICAgICAgICB0aGlzLmVkaXRNZXNzYWdlLmVtaXQoZXZlbnQubXNnSWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIHRoaXMuZGVsZXRlTWVzc2FnZS5lbWl0KGV2ZW50Lm1zZ0lkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZWFjdCc6XG4gICAgICAgIHRoaXMucmVhY3Rpb25DbGljay5lbWl0KHsgbXNnSWQ6IGV2ZW50Lm1zZ0lkLCB0b2tlbjogZXZlbnQudG9rZW4gPz8gJ/CfkY0nIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvcHknOlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnQ2hhdFdpbmRvdycpO1xuICB9XG59XG4iXX0=
@@ -167,7 +167,7 @@ export class ThreadPanelComponent {
167
167
  </div>
168
168
  }
169
169
  </div>
170
- `, isInline: true, styles: [".thread-panel{display:flex;flex-direction:column;height:100%;background:var(--ion-background-color, #f4f5f8)}.thread-header{padding:12px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff))}.thread-header .thread-title{font-size:1rem;font-weight:600;color:var(--ion-text-color, #000);margin:0}.thread-loading{display:flex;align-items:center;justify-content:center;flex:1;gap:10px;color:var(--ion-color-dark, #92949c);font-size:.875rem}.thread-chat{flex:1;overflow:hidden;display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: ChatWindowComponent, selector: "val-chat-window", inputs: ["convId", "messages", "currentUserId", "isOpen", "typingUsers", "isLoading", "canModerate", "showAttach", "showDictation", "showVoiceMessage", "showAvatars"], outputs: ["sendMessage", "loadMore", "reactionClick", "deleteMessage", "replyTo", "editMessage", "typing", "voice"] }] }); }
170
+ `, isInline: true, styles: [".thread-panel{display:flex;flex-direction:column;height:100%;background:var(--ion-background-color, #f4f5f8)}.thread-header{padding:12px 16px;border-bottom:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-card-background, var(--ion-background-color, #fff))}.thread-header .thread-title{font-size:1rem;font-weight:600;color:var(--ion-text-color, #000);margin:0}.thread-loading{display:flex;align-items:center;justify-content:center;flex:1;gap:10px;color:var(--ion-color-dark, #92949c);font-size:.875rem}.thread-chat{flex:1;overflow:hidden;display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: ChatWindowComponent, selector: "val-chat-window", inputs: ["convId", "messages", "currentUserId", "isOpen", "typingUsers", "isLoading", "canModerate", "showAttach", "showDictation", "showVoiceMessage", "showAvatars", "renderAiMessages", "showReactions", "showReplyAction", "showReactAction", "showEditAction", "showDeleteAction", "showCopyAction"], outputs: ["sendMessage", "loadMore", "reactionClick", "deleteMessage", "replyTo", "editMessage", "typing", "voice"] }] }); }
171
171
  }
172
172
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ThreadPanelComponent, decorators: [{
173
173
  type: Component,
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.1036';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xMDM2JztcbiJdfQ==
5
+ export const VERSION = '4.0.1038';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xMDM4JztcbiJdfQ==