@hmcts/ccd-case-ui-toolkit 7.2.20--extra-text → 7.2.20-multiple-followup

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.
Files changed (29) hide show
  1. package/esm2022/lib/app.config.mjs +3 -1
  2. package/esm2022/lib/shared/components/palette/query-management/components/query-case-details-header/query-case-details-header.component.mjs +3 -3
  3. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +12 -8
  4. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +52 -8
  5. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +58 -64
  6. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +13 -19
  7. package/esm2022/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +1 -1
  8. package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +13 -2
  9. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +74 -24
  10. package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +10 -3
  11. package/esm2022/lib/shared/utils.mjs +1 -1
  12. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +219 -122
  13. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  14. package/lib/app.config.d.ts +3 -0
  15. package/lib/app.config.d.ts.map +1 -1
  16. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +2 -1
  17. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
  18. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +15 -3
  19. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -1
  20. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts +1 -0
  21. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts.map +1 -1
  22. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts +1 -0
  23. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts.map +1 -1
  24. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +15 -3
  25. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -1
  26. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +1 -1
  27. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -1
  28. package/lib/shared/utils.d.ts +1 -1
  29. package/package.json +1 -1
@@ -3,10 +3,14 @@ import { ActivatedRoute, Router } from '@angular/router';
3
3
  import { SessionStorageService } from '../../../../../services';
4
4
  import { isInternalUser } from '../../../../../utils';
5
5
  import { QueryItemResponseStatus } from '../../enums';
6
- import { QueryListItem } from '../../models';
6
+ import { QueryCreateContext, QueryListItem } from '../../models';
7
+ import { CaseNotifier } from '../../../../case-editor/services/case.notifier';
8
+ import { AbstractAppConfig } from '../../../../../../app.config';
7
9
  import * as i0 from "@angular/core";
8
10
  import * as i1 from "../../../../../services";
9
11
  import * as i2 from "@angular/router";
12
+ import * as i3 from "../../../../../../app.config";
13
+ import * as i4 from "../../../../case-editor/services/case.notifier";
10
14
  function QueryDetailsComponent_ng_container_0_p_1_Template(rf, ctx) { if (rf & 1) {
11
15
  const _r1 = i0.ɵɵgetCurrentView();
12
16
  i0.ɵɵelementStart(0, "p");
@@ -217,10 +221,12 @@ function QueryDetailsComponent_ng_container_0_ng_container_44_ng_container_1_Tem
217
221
  i0.ɵɵtemplate(1, QueryDetailsComponent_ng_container_0_ng_container_44_ng_container_1_ng_container_1_Template, 23, 19, "ng-container", 15)(2, QueryDetailsComponent_ng_container_0_ng_container_44_ng_container_1_ng_template_2_Template, 27, 22, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
218
222
  i0.ɵɵelementContainerEnd();
219
223
  } if (rf & 2) {
224
+ const child_r3 = ctx.$implicit;
220
225
  const i_r4 = ctx.index;
221
226
  const followUpMessage_r5 = i0.ɵɵreference(3);
227
+ const ctx_r1 = i0.ɵɵnextContext(3);
222
228
  i0.ɵɵadvance();
223
- i0.ɵɵproperty("ngIf", i_r4 % 2 === 0)("ngIfElse", followUpMessage_r5);
229
+ i0.ɵɵproperty("ngIf", i_r4 % 2 === 0 && !(child_r3 == null ? null : child_r3.messageType) || child_r3 && (child_r3 == null ? null : child_r3.messageType) === ctx_r1.respondToQuery)("ngIfElse", followUpMessage_r5);
224
230
  } }
225
231
  function QueryDetailsComponent_ng_container_0_ng_container_44_Template(rf, ctx) { if (rf & 1) {
226
232
  i0.ɵɵelementContainerStart(0);
@@ -324,6 +330,8 @@ export class QueryDetailsComponent {
324
330
  sessionStorageService;
325
331
  route;
326
332
  router;
333
+ abstractConfig;
334
+ caseNotifier;
327
335
  query;
328
336
  caseId;
329
337
  queryResponseStatus;
@@ -333,10 +341,18 @@ export class QueryDetailsComponent {
333
341
  static QUERY_ITEM_RESPOND = '3';
334
342
  static QUERY_ITEM_FOLLOW_UP = '4';
335
343
  queryItemId;
336
- constructor(sessionStorageService, route, router) {
344
+ followUpQuery = QueryCreateContext.FOLLOWUP;
345
+ respondToQuery = QueryCreateContext.RESPOND;
346
+ enableServiceSpecificMultiFollowups;
347
+ currentJurisdictionId;
348
+ isMultipleFollowUpEnabled = false;
349
+ caseSubscription;
350
+ constructor(sessionStorageService, route, router, abstractConfig, caseNotifier) {
337
351
  this.sessionStorageService = sessionStorageService;
338
352
  this.route = route;
339
353
  this.router = router;
354
+ this.abstractConfig = abstractConfig;
355
+ this.caseNotifier = caseNotifier;
340
356
  }
341
357
  onBack() {
342
358
  this.backClicked.emit(true);
@@ -344,10 +360,23 @@ export class QueryDetailsComponent {
344
360
  isInternalUser() {
345
361
  return isInternalUser(this.sessionStorageService);
346
362
  }
363
+ ngOnInit() {
364
+ this.enableServiceSpecificMultiFollowups = this.abstractConfig.getEnableServiceSpecificMultiFollowups() || [];
365
+ this.caseSubscription = this.caseNotifier.caseView.subscribe((caseView) => {
366
+ if (caseView?.case_type?.jurisdiction?.id) {
367
+ this.currentJurisdictionId = caseView.case_type.jurisdiction.id;
368
+ this.isMultipleFollowUpEnabled = this.enableServiceSpecificMultiFollowups.includes(this.currentJurisdictionId);
369
+ this.hasRespondedToQuery();
370
+ }
371
+ });
372
+ }
347
373
  ngOnChanges() {
348
374
  this.toggleLinkVisibility();
349
375
  this.hasRespondedToQuery();
350
376
  }
377
+ ngOnDestroy() {
378
+ this.caseSubscription?.unsubscribe();
379
+ }
351
380
  toggleLinkVisibility() {
352
381
  this.queryItemId = this.route.snapshot.params.qid;
353
382
  if (this.queryItemId === QueryDetailsComponent.QUERY_ITEM_RESPOND || this.queryItemId === QueryDetailsComponent.QUERY_ITEM_FOLLOW_UP) {
@@ -360,6 +389,21 @@ export class QueryDetailsComponent {
360
389
  this.hasResponded.emit(true);
361
390
  return true;
362
391
  }
392
+ const lastChild = this.query?.children?.[this.query.children.length - 1];
393
+ const isFollowUp = lastChild?.messageType === this.followUpQuery;
394
+ const isRespond = lastChild?.messageType === this.respondToQuery;
395
+ if (this.queryResponseStatus === QueryItemResponseStatus.CLOSED) {
396
+ this.hasResponded.emit(true);
397
+ return true;
398
+ }
399
+ if (isFollowUp && this.isMultipleFollowUpEnabled) {
400
+ this.hasResponded.emit(false);
401
+ return false;
402
+ }
403
+ if (isRespond) {
404
+ this.hasResponded.emit(false);
405
+ return false;
406
+ }
363
407
  if (this.isInternalUser()) {
364
408
  if (isAwaiting) {
365
409
  this.hasResponded.emit(false);
@@ -375,7 +419,7 @@ export class QueryDetailsComponent {
375
419
  this.hasResponded.emit(false);
376
420
  return false;
377
421
  }
378
- static ɵfac = function QueryDetailsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || QueryDetailsComponent)(i0.ɵɵdirectiveInject(i1.SessionStorageService), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i2.Router)); };
422
+ static ɵfac = function QueryDetailsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || QueryDetailsComponent)(i0.ɵɵdirectiveInject(i1.SessionStorageService), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.AbstractAppConfig), i0.ɵɵdirectiveInject(i4.CaseNotifier)); };
379
423
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryDetailsComponent, selectors: [["ccd-query-details"]], inputs: { query: "query", caseId: "caseId", queryResponseStatus: "queryResponseStatus" }, outputs: { backClicked: "backClicked", hasResponded: "hasResponded" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["followUpMessage", ""], [4, "ngIf"], [1, "govuk-table", "query-details-table"], [1, "govuk-table__caption", "govuk-table__caption--l"], [1, "govuk-table__body"], [1, "govuk-table__row"], ["scope", "row", 1, "govuk-table__header"], [1, "govuk-table__cell"], ["class", "govuk-table__row govuk-table__row--isHearingRelated", 4, "ngIf"], ["class", "govuk-table__row", 4, "ngIf"], ["href", "javascript:void(0)", 1, "govuk-link", 3, "click"], [1, "govuk-table__row", "govuk-table__row--isHearingRelated"], [3, "attachments", 4, "ngIf"], [3, "attachments"], [4, "ngFor", "ngForOf"], [4, "ngIf", "ngIfElse"]], template: function QueryDetailsComponent_Template(rf, ctx) { if (rf & 1) {
380
424
  i0.ɵɵtemplate(0, QueryDetailsComponent_ng_container_0_Template, 45, 41, "ng-container", 1);
381
425
  } if (rf & 2) {
@@ -384,8 +428,8 @@ export class QueryDetailsComponent {
384
428
  }
385
429
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(QueryDetailsComponent, [{
386
430
  type: Component,
387
- args: [{ selector: 'ccd-query-details', template: "<ng-container *ngIf=\"query\">\n <p *ngIf=\"showItem\">\n <br />\n <a class=\"govuk-link\" href=\"javascript:void(0)\" (click)=\"onBack()\">{{ 'Back to query list' | rpxTranslate }}</a>\n </p>\n <div>\n <table class=\"govuk-table query-details-table\" [attr.aria-describedby]=\"'Details of the query' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Query details' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submitted by' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.lastSubmittedBy }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Submission date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.createdOn | date: 'dd MMMM YYYY HH:mm' }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query subject' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.subject }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query body' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.body }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\" [class.govuk-table__header--no-border]=\"query.isHearingRelated\">\n {{ 'Is the query hearing related?' | rpxTranslate }}\n </th>\n <td class=\"govuk-table__cell\" [class.govuk-table__cell--no-border]=\"query.isHearingRelated\">\n {{ 'Is the query hearing related?' | rpxTranslate: null : (query.isHearingRelated) }}</td>\n </tr>\n <tr class=\"govuk-table__row govuk-table__row--isHearingRelated\" *ngIf=\"query.isHearingRelated === 'Yes'\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'What is the date of the hearing?' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.hearingDate | date: 'dd MMM yyyy' }}</td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"query.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"query.attachments\"\n [attachments]=\"query.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <ng-container *ngIf=\"query.children?.length > 0\">\n <ng-container *ngFor=\"let child of query.children; let i = index;\">\n <ng-container *ngIf=\"i % 2 === 0; else followUpMessage\">\n <table class=\"govuk-table query-details-table\" [attr.aria-describedby]=\"'Response of the query' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Response' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last response date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.createdOn | date: 'dd MMMM YYYY HH:mm' }}</td>\n </tr>\n\n <tr *ngIf=\"isInternalUser()\" class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Caseworker name' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.name }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Response detail' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.body }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\" *ngIf=\"child.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"child.attachments\"\n [attachments]=\"child.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <ng-template #followUpMessage>\n <!-- <div class=\"query_details_caption\">{{ 'Follow-up' | rpxTranslate }}</div> -->\n <table class=\"govuk-table query-details-table\"\n [attr.aria-describedby]=\"'Follow-up of the response' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Follow up query' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submission date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.createdOn | date: 'dd MMMM YYYY HH:mm'}}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submitted by' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.name }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query detail' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.body }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\" *ngIf=\"child.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"child.attachments\"\n [attachments]=\"child.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-template>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".query-details-table .govuk-table__header{width:330px}\n"] }]
388
- }], () => [{ type: i1.SessionStorageService }, { type: i2.ActivatedRoute }, { type: i2.Router }], { query: [{
431
+ args: [{ selector: 'ccd-query-details', template: "<ng-container *ngIf=\"query\">\n <p *ngIf=\"showItem\">\n <br />\n <a class=\"govuk-link\" href=\"javascript:void(0)\" (click)=\"onBack()\">{{ 'Back to query list' | rpxTranslate }}</a>\n </p>\n <div>\n <table class=\"govuk-table query-details-table\" [attr.aria-describedby]=\"'Details of the query' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Query details' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submitted by' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.lastSubmittedBy }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Submission date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.createdOn | date: 'dd MMMM YYYY HH:mm' }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query subject' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.subject }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query body' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.body }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\" [class.govuk-table__header--no-border]=\"query.isHearingRelated\">\n {{ 'Is the query hearing related?' | rpxTranslate }}\n </th>\n <td class=\"govuk-table__cell\" [class.govuk-table__cell--no-border]=\"query.isHearingRelated\">\n {{ 'Is the query hearing related?' | rpxTranslate: null : (query.isHearingRelated) }}</td>\n </tr>\n <tr class=\"govuk-table__row govuk-table__row--isHearingRelated\" *ngIf=\"query.isHearingRelated === 'Yes'\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'What is the date of the hearing?' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ query.hearingDate | date: 'dd MMM yyyy' }}</td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"query.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"query.attachments\"\n [attachments]=\"query.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <ng-container *ngIf=\"query.children?.length > 0\">\n <ng-container *ngFor=\"let child of query.children; let i = index;\">\n <ng-container *ngIf=\"(i % 2 === 0 && !child?.messageType) || (child && child?.messageType === respondToQuery); else followUpMessage\">\n <table class=\"govuk-table query-details-table\" [attr.aria-describedby]=\"'Response of the query' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Response' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last response date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.createdOn | date: 'dd MMMM YYYY HH:mm' }}</td>\n </tr>\n\n <tr *ngIf=\"isInternalUser()\" class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Caseworker name' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.name }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Response detail' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.body }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\" *ngIf=\"child.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"child.attachments\"\n [attachments]=\"child.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n\n <ng-template #followUpMessage>\n <!-- <div class=\"query_details_caption\">{{ 'Follow-up' | rpxTranslate }}</div> -->\n <table class=\"govuk-table query-details-table\"\n [attr.aria-describedby]=\"'Follow-up of the response' | rpxTranslate\">\n <caption class=\"govuk-table__caption govuk-table__caption--l\">\n <div>{{ 'Follow up query' | rpxTranslate }}</div>\n </caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submission date' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.createdOn | date: 'dd MMMM YYYY HH:mm'}}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Last submitted by' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.name }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Query detail' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">{{ child.body }}</td>\n </tr>\n\n <tr class=\"govuk-table__row\" *ngIf=\"child.attachments.length > 0\">\n <th scope=\"row\" class=\"govuk-table__header\">{{ 'Attachments' | rpxTranslate }}</th>\n <td class=\"govuk-table__cell\">\n <ccd-query-attachments-read\n *ngIf=\"child.attachments\"\n [attachments]=\"child.attachments\"\n >\n </ccd-query-attachments-read>\n </td>\n </tr>\n </tbody>\n </table>\n </ng-template>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".query-details-table .govuk-table__header{width:330px}\n"] }]
432
+ }], () => [{ type: i1.SessionStorageService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.AbstractAppConfig }, { type: i4.CaseNotifier }], { query: [{
389
433
  type: Input
390
434
  }], caseId: [{
391
435
  type: Input
@@ -396,5 +440,5 @@ export class QueryDetailsComponent {
396
440
  }], hasResponded: [{
397
441
  type: Output
398
442
  }] }); })();
399
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryDetailsComponent, { className: "QueryDetailsComponent", filePath: "lib/shared/components/palette/query-management/components/query-details/query-details.component.ts", lineNumber: 14 }); })();
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9xdWVyeS1tYW5hZ2VtZW50L2NvbXBvbmVudHMvcXVlcnktZGV0YWlscy9xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1kZXRhaWxzL3F1ZXJ5LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0lDTDNDLHlCQUFvQjtJQUNsQixxQkFBTTtJQUNOLDZCQUFtRTtJQUFuQiwwTEFBUyxlQUFRLEtBQUM7SUFBQyxZQUF5Qzs7SUFDOUcsQUFEOEcsaUJBQUksRUFDOUc7O0lBRGlFLGVBQXlDO0lBQXpDLGdFQUF5Qzs7O0lBZ0N4RyxBQURGLDhCQUF5RyxZQUMzRDtJQUFBLFlBQXVEOztJQUFBLGlCQUFL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N0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLE9BQU8sS0FBSyxDQUFDLENBQUMscUJBQXFCO1FBQ3JDLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBL0RVLHFCQUFxQjs2REFBckIscUJBQXFCO1lDYmxDLDBGQUE0Qjs7WUFBYixnQ0FBVzs7O2lGRGFiLHFCQUFxQjtjQUxqQyxTQUFTOzJCQUNFLG1CQUFtQjt3R0FLYixLQUFLO2tCQUFwQixLQUFLO1lBQ1UsTUFBTTtrQkFBckIsS0FBSztZQUNVLG1CQUFtQjtrQkFBbEMsS0FBSztZQUVXLFdBQVc7a0JBQTNCLE1BQU07WUFDVSxZQUFZO2tCQUE1QixNQUFNOztrRkFOSSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgaXNJbnRlcm5hbFVzZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBRdWVyeUl0ZW1SZXNwb25zZVN0YXR1cyB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IFF1ZXJ5TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcXVlcnktZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlcnktZGV0YWlscy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5RGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlc3tcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5OiBRdWVyeUxpc3RJdGVtO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeVJlc3BvbnNlU3RhdHVzOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBiYWNrQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIGhhc1Jlc3BvbmRlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBzaG93SXRlbTogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUVVFUllfSVRFTV9SRVNQT05EID0gJzMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBRVUVSWV9JVEVNX0ZPTExPV19VUCA9ICc0JztcbiAgcHJpdmF0ZSBxdWVyeUl0ZW1JZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcikgeyB9XG5cbiAgcHVibGljIG9uQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2tDbGlja2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgaXNJbnRlcm5hbFVzZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzSW50ZXJuYWxVc2VyKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUxpbmtWaXNpYmlsaXR5KCk7XG4gICAgdGhpcy5oYXNSZXNwb25kZWRUb1F1ZXJ5KCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTGlua1Zpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeUl0ZW1JZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLnFpZCBhcyBzdHJpbmc7XG4gICAgaWYgKHRoaXMucXVlcnlJdGVtSWQgPT09IFF1ZXJ5RGV0YWlsc0NvbXBvbmVudC5RVUVSWV9JVEVNX1JFU1BPTkQgfHwgdGhpcy5xdWVyeUl0ZW1JZCA9PT0gUXVlcnlEZXRhaWxzQ29tcG9uZW50LlFVRVJZX0lURU1fRk9MTE9XX1VQKSB7XG4gICAgICB0aGlzLnNob3dJdGVtID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1Jlc3BvbmRlZFRvUXVlcnkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNBd2FpdGluZyA9IHRoaXMucXVlcnlSZXNwb25zZVN0YXR1cyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMucXVlcnlSZXNwb25zZVN0YXR1cyA9PT0gUXVlcnlJdGVtUmVzcG9uc2VTdGF0dXMuQVdBSVRJTkc7XG4gICAgaWYgKHRoaXMucXVlcnlSZXNwb25zZVN0YXR1cyA9PT0gUXVlcnlJdGVtUmVzcG9uc2VTdGF0dXMuQ0xPU0VEKSB7XG4gICAgICB0aGlzLmhhc1Jlc3BvbmRlZC5lbWl0KHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNJbnRlcm5hbFVzZXIoKSkge1xuICAgICAgaWYgKGlzQXdhaXRpbmcpIHtcbiAgICAgICAgdGhpcy5oYXNSZXNwb25kZWQuZW1pdChmYWxzZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYXNSZXNwb25kZWQuZW1pdCh0cnVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpc0F3YWl0aW5nKSB7XG4gICAgICB0aGlzLmhhc1Jlc3BvbmRlZC5lbWl0KHRydWUpO1xuICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEb24ndCBzaG93IG1lc3NhZ2VcbiAgICB9XG5cbiAgICB0aGlzLmhhc1Jlc3BvbmRlZC5lbWl0KGZhbHNlKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeVwiPlxuICA8cCAqbmdJZj1cInNob3dJdGVtXCI+XG4gICAgPGJyIC8+XG4gICAgPGEgY2xhc3M9XCJnb3Z1ay1saW5rXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJvbkJhY2soKVwiPnt7ICdCYWNrIHRvIHF1ZXJ5IGxpc3QnIHwgcnB4VHJhbnNsYXRlIH19PC9hPlxuICA8L3A+XG4gIDxkaXY+XG4gICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGUgcXVlcnktZGV0YWlscy10YWJsZVwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ0RldGFpbHMgb2YgdGhlIHF1ZXJ5JyB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgPGNhcHRpb24gY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2FwdGlvbiBnb3Z1ay10YWJsZV9fY2FwdGlvbi0tbFwiPlxuICAgICAgICA8ZGl2Pnt7ICdRdWVyeSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgPC9jYXB0aW9uPlxuICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0xhc3Qgc3VibWl0dGVkIGJ5JyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcXVlcnkubGFzdFN1Ym1pdHRlZEJ5IH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiPnt7ICdTdWJtaXNzaW9uIGRhdGUnIHwgcnB4VHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBxdWVyeS5jcmVhdGVkT24gfCBkYXRlOiAnZGQgTU1NTSBZWVlZIEhIOm1tJyB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIj57eyAnUXVlcnkgc3ViamVjdCcgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHF1ZXJ5LnN1YmplY3QgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ1F1ZXJ5IGJvZHknIHwgcnB4VHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBxdWVyeS5ib2R5IH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIFtjbGFzcy5nb3Z1ay10YWJsZV9faGVhZGVyLS1uby1ib3JkZXJdPVwicXVlcnkuaXNIZWFyaW5nUmVsYXRlZFwiPlxuICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBbY2xhc3MuZ292dWstdGFibGVfX2NlbGwtLW5vLWJvcmRlcl09XCJxdWVyeS5pc0hlYXJpbmdSZWxhdGVkXCI+XG4gICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZTogbnVsbCA6IChxdWVyeS5pc0hlYXJpbmdSZWxhdGVkKSB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3JvdyBnb3Z1ay10YWJsZV9fcm93LS1pc0hlYXJpbmdSZWxhdGVkXCIgKm5nSWY9XCJxdWVyeS5pc0hlYXJpbmdSZWxhdGVkID09PSAnWWVzJ1wiPlxuICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIj57eyAnV2hhdCBpcyB0aGUgZGF0ZSBvZiB0aGUgaGVhcmluZz8nIHwgcnB4VHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBxdWVyeS5oZWFyaW5nRGF0ZSB8IGRhdGU6ICdkZCBNTU0geXl5eScgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdJZj1cInF1ZXJ5LmF0dGFjaG1lbnRzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0F0dGFjaG1lbnRzJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+XG4gICAgICAgICAgPGNjZC1xdWVyeS1hdHRhY2htZW50cy1yZWFkXG4gICAgICAgICAgICAqbmdJZj1cInF1ZXJ5LmF0dGFjaG1lbnRzXCJcbiAgICAgICAgICAgIFthdHRhY2htZW50c109XCJxdWVyeS5hdHRhY2htZW50c1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvY2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWQ+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5LmNoaWxkcmVuPy5sZW5ndGggPiAwXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgcXVlcnkuY2hpbGRyZW47IGxldCBpID0gaW5kZXg7XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSAlIDIgPT09IDA7IGVsc2UgZm9sbG93VXBNZXNzYWdlXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlIHF1ZXJ5LWRldGFpbHMtdGFibGVcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidSZXNwb25zZSBvZiB0aGUgcXVlcnknIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgICAgPGNhcHRpb24gY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2FwdGlvbiBnb3Z1ay10YWJsZV9fY2FwdGlvbi0tbFwiPlxuICAgICAgICAgICAgPGRpdj57eyAnUmVzcG9uc2UnIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgPC9jYXB0aW9uPlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0xhc3QgcmVzcG9uc2UgZGF0ZScgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBjaGlsZC5jcmVhdGVkT24gfCBkYXRlOiAnZGQgTU1NTSBZWVlZIEhIOm1tJyAgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImlzSW50ZXJuYWxVc2VyKClcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0Nhc2V3b3JrZXIgbmFtZScgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IGNoaWxkLm5hbWUgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cblxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIj57eyAnUmVzcG9uc2UgZGV0YWlsJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgY2hpbGQuYm9keSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwiY2hpbGQuYXR0YWNobWVudHMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0F0dGFjaG1lbnRzJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPlxuICAgICAgICAgICAgICA8Y2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWRcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLmF0dGFjaG1lbnRzXCJcbiAgICAgICAgICAgICAgICBbYXR0YWNobWVudHNdPVwiY2hpbGQuYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvY2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWQ+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2ZvbGxvd1VwTWVzc2FnZT5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicXVlcnlfZGV0YWlsc19jYXB0aW9uXCI+e3sgJ0ZvbGxvdy11cCcgfCBycHhUcmFuc2xhdGUgfX08L2Rpdj4gLS0+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlIHF1ZXJ5LWRldGFpbHMtdGFibGVcIlxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInRm9sbG93LXVwIG9mIHRoZSByZXNwb25zZScgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICA8Y2FwdGlvbiBjbGFzcz1cImdvdnVrLXRhYmxlX19jYXB0aW9uIGdvdnVrLXRhYmxlX19jYXB0aW9uLS1sXCI+XG4gICAgICAgICAgICA8ZGl2Pnt7ICdGb2xsb3cgdXAgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgPC9jYXB0aW9uPlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0xhc3Qgc3VibWlzc2lvbiBkYXRlJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IGNoaWxkLmNyZWF0ZWRPbiB8IGRhdGU6ICdkZCBNTU1NIFlZWVkgSEg6bW0nfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIj57eyAnTGFzdCBzdWJtaXR0ZWQgYnknIHwgcnB4VHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgY2hpbGQubmFtZSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIj57eyAnUXVlcnkgZGV0YWlsJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgY2hpbGQuYm9keSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nSWY9XCJjaGlsZC5hdHRhY2htZW50cy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiPnt7ICdBdHRhY2htZW50cycgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPlxuICAgICAgICAgICAgICAgIDxjY2QtcXVlcnktYXR0YWNobWVudHMtcmVhZFxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5hdHRhY2htZW50c1wiXG4gICAgICAgICAgICAgICAgICBbYXR0YWNobWVudHNdPVwiY2hpbGQuYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NjZC1xdWVyeS1hdHRhY2htZW50cy1yZWFkPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
443
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryDetailsComponent, { className: "QueryDetailsComponent", filePath: "lib/shared/components/palette/query-management/components/query-details/query-details.component.ts", lineNumber: 17 }); })();
444
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9xdWVyeS1tYW5hZ2VtZW50L2NvbXBvbmVudHMvcXVlcnktZGV0YWlscy9xdWVyeS1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1kZXRhaWxzL3F1ZXJ5LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztJQ1AvRCx5QkFBb0I7SUFDbEIscUJBQU07SUFDTiw2QkFBbUU7SUFBbkIsMExBQVMsZUFBUSxLQUFDO0lBQUMsWUFB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bUJBQW1CO21LQUtiLEtBQUs7a0JBQXBCLEtBQUs7WUFDVSxNQUFNO2tCQUFyQixLQUFLO1lBQ1UsbUJBQW1CO2tCQUFsQyxLQUFLO1lBRVcsV0FBVztrQkFBM0IsTUFBTTtZQUNVLFlBQVk7a0JBQTVCLE1BQU07O2tGQU5JLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgaXNJbnRlcm5hbFVzZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBRdWVyeUl0ZW1SZXNwb25zZVN0YXR1cyB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IFF1ZXJ5Q3JlYXRlQ29udGV4dCwgUXVlcnlMaXN0SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBDYXNlTm90aWZpZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jYXNlLm5vdGlmaWVyJztcbmltcG9ydCB7IEFic3RyYWN0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXF1ZXJ5LWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXJ5LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5OiBRdWVyeUxpc3RJdGVtO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZUlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeVJlc3BvbnNlU3RhdHVzOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBiYWNrQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIGhhc1Jlc3BvbmRlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBzaG93SXRlbTogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUVVFUllfSVRFTV9SRVNQT05EID0gJzMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBRVUVSWV9JVEVNX0ZPTExPV19VUCA9ICc0JztcbiAgcHJpdmF0ZSBxdWVyeUl0ZW1JZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBmb2xsb3dVcFF1ZXJ5OiBzdHJpbmcgPSBRdWVyeUNyZWF0ZUNvbnRleHQuRk9MTE9XVVA7XG4gIHB1YmxpYyByZXNwb25kVG9RdWVyeTogc3RyaW5nID0gUXVlcnlDcmVhdGVDb250ZXh0LlJFU1BPTkQ7XG4gIHB1YmxpYyBlbmFibGVTZXJ2aWNlU3BlY2lmaWNNdWx0aUZvbGxvd3Vwczogc3RyaW5nW107XG4gIHB1YmxpYyBjdXJyZW50SnVyaXNkaWN0aW9uSWQ6IHN0cmluZztcbiAgcHVibGljIGlzTXVsdGlwbGVGb2xsb3dVcEVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhYnN0cmFjdENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcikgeyB9XG5cbiAgcHVibGljIG9uQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2tDbGlja2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgaXNJbnRlcm5hbFVzZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzSW50ZXJuYWxVc2VyKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVuYWJsZVNlcnZpY2VTcGVjaWZpY011bHRpRm9sbG93dXBzID0gdGhpcy5hYnN0cmFjdENvbmZpZy5nZXRFbmFibGVTZXJ2aWNlU3BlY2lmaWNNdWx0aUZvbGxvd3VwcygpIHx8IFtdO1xuXG4gICAgdGhpcy5jYXNlU3Vic2NyaXB0aW9uID0gdGhpcy5jYXNlTm90aWZpZXIuY2FzZVZpZXcuc3Vic2NyaWJlKChjYXNlVmlldykgPT4ge1xuICAgICAgaWYgKGNhc2VWaWV3Py5jYXNlX3R5cGU/Lmp1cmlzZGljdGlvbj8uaWQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50SnVyaXNkaWN0aW9uSWQgPSBjYXNlVmlldy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkO1xuICAgICAgICB0aGlzLmlzTXVsdGlwbGVGb2xsb3dVcEVuYWJsZWQgPSB0aGlzLmVuYWJsZVNlcnZpY2VTcGVjaWZpY011bHRpRm9sbG93dXBzLmluY2x1ZGVzKHRoaXMuY3VycmVudEp1cmlzZGljdGlvbklkKTtcblxuICAgICAgICB0aGlzLmhhc1Jlc3BvbmRlZFRvUXVlcnkoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUxpbmtWaXNpYmlsaXR5KCk7XG4gICAgdGhpcy5oYXNSZXNwb25kZWRUb1F1ZXJ5KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUxpbmtWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlJdGVtSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5xaWQgYXMgc3RyaW5nO1xuICAgIGlmICh0aGlzLnF1ZXJ5SXRlbUlkID09PSBRdWVyeURldGFpbHNDb21wb25lbnQuUVVFUllfSVRFTV9SRVNQT05EIHx8IHRoaXMucXVlcnlJdGVtSWQgPT09IFF1ZXJ5RGV0YWlsc0NvbXBvbmVudC5RVUVSWV9JVEVNX0ZPTExPV19VUCkge1xuICAgICAgdGhpcy5zaG93SXRlbSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNSZXNwb25kZWRUb1F1ZXJ5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQXdhaXRpbmcgPSB0aGlzLnF1ZXJ5UmVzcG9uc2VTdGF0dXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnF1ZXJ5UmVzcG9uc2VTdGF0dXMgPT09IFF1ZXJ5SXRlbVJlc3BvbnNlU3RhdHVzLkFXQUlUSU5HO1xuICAgIGlmICh0aGlzLnF1ZXJ5UmVzcG9uc2VTdGF0dXMgPT09IFF1ZXJ5SXRlbVJlc3BvbnNlU3RhdHVzLkNMT1NFRCkge1xuICAgICAgdGhpcy5oYXNSZXNwb25kZWQuZW1pdCh0cnVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGxhc3RDaGlsZCA9IHRoaXMucXVlcnk/LmNoaWxkcmVuPy5bdGhpcy5xdWVyeS5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBpc0ZvbGxvd1VwID0gbGFzdENoaWxkPy5tZXNzYWdlVHlwZSA9PT0gdGhpcy5mb2xsb3dVcFF1ZXJ5O1xuICAgIGNvbnN0IGlzUmVzcG9uZCA9IGxhc3RDaGlsZD8ubWVzc2FnZVR5cGUgPT09IHRoaXMucmVzcG9uZFRvUXVlcnk7XG5cbiAgICBpZiAodGhpcy5xdWVyeVJlc3BvbnNlU3RhdHVzID09PSBRdWVyeUl0ZW1SZXNwb25zZVN0YXR1cy5DTE9TRUQpIHtcbiAgICAgIHRoaXMuaGFzUmVzcG9uZGVkLmVtaXQodHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNGb2xsb3dVcCAmJiB0aGlzLmlzTXVsdGlwbGVGb2xsb3dVcEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuaGFzUmVzcG9uZGVkLmVtaXQoZmFsc2UpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChpc1Jlc3BvbmQpIHtcbiAgICAgIHRoaXMuaGFzUmVzcG9uZGVkLmVtaXQoZmFsc2UpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzSW50ZXJuYWxVc2VyKCkpIHtcbiAgICAgIGlmIChpc0F3YWl0aW5nKSB7XG4gICAgICAgIHRoaXMuaGFzUmVzcG9uZGVkLmVtaXQoZmFsc2UpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGFzUmVzcG9uZGVkLmVtaXQodHJ1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNBd2FpdGluZykge1xuICAgICAgdGhpcy5oYXNSZXNwb25kZWQuZW1pdCh0cnVlKTtcbiAgICAgIHJldHVybiBmYWxzZTsgLy8gRG9uJ3Qgc2hvdyBtZXNzYWdlXG4gICAgfVxuXG4gICAgdGhpcy5oYXNSZXNwb25kZWQuZW1pdChmYWxzZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwicXVlcnlcIj5cbiAgPHAgKm5nSWY9XCJzaG93SXRlbVwiPlxuICAgIDxiciAvPlxuICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwib25CYWNrKClcIj57eyAnQmFjayB0byBxdWVyeSBsaXN0JyB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgPC9wPlxuICA8ZGl2PlxuICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlIHF1ZXJ5LWRldGFpbHMtdGFibGVcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidEZXRhaWxzIG9mIHRoZSBxdWVyeScgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgIDxjYXB0aW9uIGNsYXNzPVwiZ292dWstdGFibGVfX2NhcHRpb24gZ292dWstdGFibGVfX2NhcHRpb24tLWxcIj5cbiAgICAgICAgPGRpdj57eyAnUXVlcnkgZGV0YWlscycgfCBycHhUcmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIDwvY2FwdGlvbj5cbiAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiPnt7ICdMYXN0IHN1Ym1pdHRlZCBieScgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHF1ZXJ5Lmxhc3RTdWJtaXR0ZWRCeSB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIj57eyAnU3VibWlzc2lvbiBkYXRlJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcXVlcnkuY3JlYXRlZE9uIHwgZGF0ZTogJ2RkIE1NTU0gWVlZWSBISDptbScgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ1F1ZXJ5IHN1YmplY3QnIHwgcnB4VHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBxdWVyeS5zdWJqZWN0IH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiPnt7ICdRdWVyeSBib2R5JyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcXVlcnkuYm9keSB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiBbY2xhc3MuZ292dWstdGFibGVfX2hlYWRlci0tbm8tYm9yZGVyXT1cInF1ZXJ5LmlzSGVhcmluZ1JlbGF0ZWRcIj5cbiAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCIgW2NsYXNzLmdvdnVrLXRhYmxlX19jZWxsLS1uby1ib3JkZXJdPVwicXVlcnkuaXNIZWFyaW5nUmVsYXRlZFwiPlxuICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAocXVlcnkuaXNIZWFyaW5nUmVsYXRlZCkgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3cgZ292dWstdGFibGVfX3Jvdy0taXNIZWFyaW5nUmVsYXRlZFwiICpuZ0lmPVwicXVlcnkuaXNIZWFyaW5nUmVsYXRlZCA9PT0gJ1llcydcIj5cbiAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ1doYXQgaXMgdGhlIGRhdGUgb2YgdGhlIGhlYXJpbmc/JyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcXVlcnkuaGVhcmluZ0RhdGUgfCBkYXRlOiAnZGQgTU1NIHl5eXknIH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nSWY9XCJxdWVyeS5hdHRhY2htZW50cy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiPnt7ICdBdHRhY2htZW50cycgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPlxuICAgICAgICAgIDxjY2QtcXVlcnktYXR0YWNobWVudHMtcmVhZFxuICAgICAgICAgICAgKm5nSWY9XCJxdWVyeS5hdHRhY2htZW50c1wiXG4gICAgICAgICAgICBbYXR0YWNobWVudHNdPVwicXVlcnkuYXR0YWNobWVudHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NjZC1xdWVyeS1hdHRhY2htZW50cy1yZWFkPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeS5jaGlsZHJlbj8ubGVuZ3RoID4gMFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIHF1ZXJ5LmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4O1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpICUgMiA9PT0gMCAmJiAhY2hpbGQ/Lm1lc3NhZ2VUeXBlKSB8fCAoY2hpbGQgJiYgY2hpbGQ/Lm1lc3NhZ2VUeXBlID09PSByZXNwb25kVG9RdWVyeSk7IGVsc2UgZm9sbG93VXBNZXNzYWdlXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlIHF1ZXJ5LWRldGFpbHMtdGFibGVcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidSZXNwb25zZSBvZiB0aGUgcXVlcnknIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgICAgPGNhcHRpb24gY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2FwdGlvbiBnb3Z1ay10YWJsZV9fY2FwdGlvbi0tbFwiPlxuICAgICAgICAgICAgPGRpdj57eyAnUmVzcG9uc2UnIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgPC9jYXB0aW9uPlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0xhc3QgcmVzcG9uc2UgZGF0ZScgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyBjaGlsZC5jcmVhdGVkT24gfCBkYXRlOiAnZGQgTU1NTSBZWVlZIEhIOm1tJyAgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImlzSW50ZXJuYWxVc2VyKClcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0Nhc2V3b3JrZXIgbmFtZScgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IGNoaWxkLm5hbWUgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cblxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIj57eyAnUmVzcG9uc2UgZGV0YWlsJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgY2hpbGQuYm9keSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwiY2hpbGQuYXR0YWNobWVudHMubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0F0dGFjaG1lbnRzJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPlxuICAgICAgICAgICAgICA8Y2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWRcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNoaWxkLmF0dGFjaG1lbnRzXCJcbiAgICAgICAgICAgICAgICBbYXR0YWNobWVudHNdPVwiY2hpbGQuYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvY2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWQ+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2ZvbGxvd1VwTWVzc2FnZT5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicXVlcnlfZGV0YWlsc19jYXB0aW9uXCI+e3sgJ0ZvbGxvdy11cCcgfCBycHhUcmFuc2xhdGUgfX08L2Rpdj4gLS0+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImdvdnVrLXRhYmxlIHF1ZXJ5LWRldGFpbHMtdGFibGVcIlxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInRm9sbG93LXVwIG9mIHRoZSByZXNwb25zZScgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICA8Y2FwdGlvbiBjbGFzcz1cImdvdnVrLXRhYmxlX19jYXB0aW9uIGdvdnVrLXRhYmxlX19jYXB0aW9uLS1sXCI+XG4gICAgICAgICAgICA8ZGl2Pnt7ICdGb2xsb3cgdXAgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgPC9jYXB0aW9uPlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImdvdnVrLXRhYmxlX19ib2R5XCI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCI+e3sgJ0xhc3Qgc3VibWlzc2lvbiBkYXRlJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IGNoaWxkLmNyZWF0ZWRPbiB8IGRhdGU6ICdkZCBNTU1NIFlZWVkgSEg6bW0nfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIj57eyAnTGFzdCBzdWJtaXR0ZWQgYnknIHwgcnB4VHJhbnNsYXRlIH19PC90aD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgY2hpbGQubmFtZSB9fTwvdGQ+XG4gICAgICAgICAgPC90cj5cblxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIj57eyAnUXVlcnkgZGV0YWlsJyB8IHJweFRyYW5zbGF0ZSB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgY2hpbGQuYm9keSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCIgKm5nSWY9XCJjaGlsZC5hdHRhY2htZW50cy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiPnt7ICdBdHRhY2htZW50cycgfCBycHhUcmFuc2xhdGUgfX08L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPlxuICAgICAgICAgICAgICAgIDxjY2QtcXVlcnktYXR0YWNobWVudHMtcmVhZFxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5hdHRhY2htZW50c1wiXG4gICAgICAgICAgICAgICAgICBbYXR0YWNobWVudHNdPVwiY2hpbGQuYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NjZC1xdWVyeS1hdHRhY2htZW50cy1yZWFkPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==