ngx-material-entity 15.1.3 → 15.1.5

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 (98) hide show
  1. package/README.md +100 -0
  2. package/components/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  3. package/components/edit-page/edit-page.component.d.ts +112 -0
  4. package/components/edit-page/page-edit-data.builder.d.ts +17 -0
  5. package/components/input/array/array-date-input/array-date-input.component.d.ts +1 -1
  6. package/components/input/array/array-date-range-input/array-date-range-input.component.d.ts +1 -1
  7. package/components/input/array/array-date-time-input/array-date-time-input.component.d.ts +1 -1
  8. package/components/input/array/array-table.class.d.ts +1 -1
  9. package/components/input/date/date-input/date-input.component.d.ts +1 -1
  10. package/components/input/date/date-time-input/date-time-input.component.d.ts +1 -1
  11. package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
  12. package/components/input/file/file-image-input/file-image-input.component.d.ts +1 -1
  13. package/components/input/file/file-input/file-input.component.d.ts +3 -3
  14. package/components/input/input.component.d.ts +3 -3
  15. package/components/input/relations/references-many-input/references-many-input.component.d.ts +1 -1
  16. package/components/input/string/string-password-input/string-password-input.component.d.ts +1 -1
  17. package/components/table/create-dialog/create-entity-dialog-data.builder.d.ts +3 -3
  18. package/components/table/create-dialog/create-entity-dialog-data.d.ts +1 -1
  19. package/components/table/create-dialog/create-entity-dialog.component.d.ts +4 -4
  20. package/components/table/default.actions.d.ts +21 -0
  21. package/components/table/edit-dialog/{edit-dialog-data.builder.d.ts → edit-data.builder.d.ts} +7 -7
  22. package/components/table/edit-dialog/{edit-entity-dialog-data.d.ts → edit-entity-data.d.ts} +5 -5
  23. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +6 -6
  24. package/components/table/edit-dialog/edit-entity.builder.d.ts +24 -0
  25. package/components/table/table-data.builder.d.ts +11 -7
  26. package/components/table/table-data.d.ts +29 -8
  27. package/components/table/table.component.d.ts +14 -7
  28. package/components/table/table.module.d.ts +4 -3
  29. package/encapsulation/js-2-xml.utilities.d.ts +15 -0
  30. package/encapsulation/jszip.utilities.d.ts +3 -2
  31. package/encapsulation/lodash.utilities.d.ts +7 -0
  32. package/esm2020/classes/entity.model.mjs +2 -2
  33. package/esm2020/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
  34. package/esm2020/components/edit-page/edit-page.component.mjs +203 -0
  35. package/esm2020/components/edit-page/page-edit-data.builder.mjs +32 -0
  36. package/esm2020/components/input/array/array-date-input/array-date-input.component.mjs +4 -4
  37. package/esm2020/components/input/array/array-date-range-input/array-date-range-input.component.mjs +4 -4
  38. package/esm2020/components/input/array/array-date-time-input/array-date-time-input.component.mjs +4 -4
  39. package/esm2020/components/input/array/array-table.class.mjs +3 -3
  40. package/esm2020/components/input/base-input.component.mjs +2 -2
  41. package/esm2020/components/input/date/date-input/date-input.component.mjs +2 -2
  42. package/esm2020/components/input/date/date-range-input/date-range-input.component.mjs +5 -5
  43. package/esm2020/components/input/date/date-time-input/date-time-input.component.mjs +3 -3
  44. package/esm2020/components/input/file/file-default-input/file-default-input.component.mjs +2 -2
  45. package/esm2020/components/input/file/file-image-input/file-image-input.component.mjs +3 -3
  46. package/esm2020/components/input/file/file-input/file-input.component.mjs +5 -5
  47. package/esm2020/components/input/input.component.mjs +6 -6
  48. package/esm2020/components/input/relations/references-many-input/references-many-input.component.mjs +4 -4
  49. package/esm2020/components/input/string/string-password-input/string-password-input.component.mjs +4 -4
  50. package/esm2020/components/table/create-dialog/create-entity-dialog-data.builder.mjs +2 -2
  51. package/esm2020/components/table/create-dialog/create-entity-dialog-data.mjs +1 -1
  52. package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +5 -5
  53. package/esm2020/components/table/default.actions.mjs +65 -0
  54. package/esm2020/components/table/edit-dialog/edit-data.builder.mjs +41 -0
  55. package/esm2020/components/table/edit-dialog/edit-entity-data.mjs +2 -0
  56. package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +16 -16
  57. package/esm2020/components/table/edit-dialog/edit-entity.builder.mjs +28 -0
  58. package/esm2020/components/table/table-data.builder.mjs +19 -8
  59. package/esm2020/components/table/table-data.mjs +1 -1
  60. package/esm2020/components/table/table.component.mjs +73 -29
  61. package/esm2020/components/table/table.module.mjs +5 -1
  62. package/esm2020/decorators/array/array-decorator-internal.data.mjs +2 -2
  63. package/esm2020/decorators/base/base-property.decorator.mjs +2 -2
  64. package/esm2020/decorators/date/date-decorator-internal.data.mjs +2 -2
  65. package/esm2020/decorators/date/date.decorator.mjs +2 -2
  66. package/esm2020/decorators/file/file.decorator.mjs +2 -2
  67. package/esm2020/decorators/string/string.decorator.mjs +2 -2
  68. package/esm2020/encapsulation/js-2-xml.utilities.mjs +18 -0
  69. package/esm2020/encapsulation/jszip.utilities.mjs +1 -1
  70. package/esm2020/encapsulation/lodash.utilities.mjs +13 -1
  71. package/esm2020/public-api.mjs +31 -26
  72. package/esm2020/services/entity.service.mjs +252 -0
  73. package/esm2020/services/unsaved-changes.guard.mjs +14 -0
  74. package/esm2020/utilities/date.utilities.mjs +158 -0
  75. package/esm2020/utilities/entity.utilities.mjs +828 -0
  76. package/esm2020/utilities/file.utilities.mjs +176 -0
  77. package/esm2020/utilities/selection.utilities.mjs +50 -0
  78. package/fesm2015/ngx-material-entity.mjs +1071 -644
  79. package/fesm2015/ngx-material-entity.mjs.map +1 -1
  80. package/fesm2020/ngx-material-entity.mjs +992 -571
  81. package/fesm2020/ngx-material-entity.mjs.map +1 -1
  82. package/package.json +3 -2
  83. package/public-api.d.ts +28 -25
  84. package/{classes → services}/entity.service.d.ts +25 -1
  85. package/services/unsaved-changes.guard.d.ts +4 -0
  86. package/{classes → utilities}/entity.utilities.d.ts +1 -1
  87. package/{classes → utilities}/file.utilities.d.ts +7 -0
  88. package/components/table/edit-dialog/edit-entity-dialog.builder.d.ts +0 -24
  89. package/esm2020/classes/date.utilities.mjs +0 -158
  90. package/esm2020/classes/entity.service.mjs +0 -213
  91. package/esm2020/classes/entity.utilities.mjs +0 -828
  92. package/esm2020/classes/file.utilities.mjs +0 -163
  93. package/esm2020/classes/selection.utilities.mjs +0 -50
  94. package/esm2020/components/table/edit-dialog/edit-dialog-data.builder.mjs +0 -41
  95. package/esm2020/components/table/edit-dialog/edit-entity-dialog-data.mjs +0 -2
  96. package/esm2020/components/table/edit-dialog/edit-entity-dialog.builder.mjs +0 -28
  97. /package/{classes → utilities}/date.utilities.d.ts +0 -0
  98. /package/{classes → utilities}/selection.utilities.d.ts +0 -0
@@ -1,28 +1,31 @@
1
+ import { SelectionModel } from '@angular/cdk/collections';
1
2
  import { Component, Injector, Input, ViewChild } from '@angular/core';
3
+ import { MatDialog } from '@angular/material/dialog';
2
4
  import { MatPaginator } from '@angular/material/paginator';
3
5
  import { MatSort } from '@angular/material/sort';
4
6
  import { MatTableDataSource } from '@angular/material/table';
7
+ import { Router } from '@angular/router';
5
8
  import { firstValueFrom, Subject, takeUntil } from 'rxjs';
6
- import { SelectionModel } from '@angular/cdk/collections';
7
- import { MatDialog } from '@angular/material/dialog';
8
- import { NgxMatEntityCreateDialogComponent } from './create-dialog/create-entity-dialog.component';
9
- import { NgxMatEntityEditDialogComponent } from './edit-dialog/edit-entity-dialog.component';
10
- import { NgxMatEntityConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';
9
+ import { SelectionUtilities } from '../../utilities/selection.utilities';
11
10
  import { ConfirmDialogDataBuilder } from '../confirm-dialog/confirm-dialog-data.builder';
11
+ import { NgxMatEntityConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';
12
12
  import { CreateEntityDialogDataBuilder } from './create-dialog/create-entity-dialog-data.builder';
13
+ import { NgxMatEntityCreateDialogComponent } from './create-dialog/create-entity-dialog.component';
14
+ import { NgxMatEntityEditDialogComponent } from './edit-dialog/edit-entity-dialog.component';
15
+ import { EditEntityDataBuilder } from './edit-dialog/edit-entity.builder';
13
16
  import { TableDataBuilder } from './table-data.builder';
14
- import { EditEntityDialogDataBuilder } from '../table/edit-dialog/edit-entity-dialog.builder';
15
- import { SelectionUtilities } from '../../classes/selection.utilities';
16
17
  import * as i0 from "@angular/core";
17
18
  import * as i1 from "@angular/material/dialog";
18
- import * as i2 from "@angular/common";
19
- import * as i3 from "@angular/material/input";
20
- import * as i4 from "@angular/material/form-field";
21
- import * as i5 from "@angular/material/checkbox";
22
- import * as i6 from "@angular/material/table";
23
- import * as i7 from "@angular/material/paginator";
24
- import * as i8 from "@angular/material/button";
25
- import * as i9 from "@angular/material/menu";
19
+ import * as i2 from "@angular/router";
20
+ import * as i3 from "@angular/common";
21
+ import * as i4 from "@angular/material/input";
22
+ import * as i5 from "@angular/material/form-field";
23
+ import * as i6 from "@angular/material/checkbox";
24
+ import * as i7 from "@angular/material/table";
25
+ import * as i8 from "@angular/material/paginator";
26
+ import * as i9 from "@angular/material/button";
27
+ import * as i10 from "@angular/material/menu";
28
+ import * as i11 from "@angular/material/progress-spinner";
26
29
  /**
27
30
  * Generates a fully functional table for displaying, creating, updating and deleting entities
28
31
  * based on the configuration passed in the @Input "tableData".
@@ -30,9 +33,11 @@ import * as i9 from "@angular/material/menu";
30
33
  * It offers a lot of customization options which can be found in "TableData".
31
34
  */
32
35
  export class NgxMatEntityTableComponent {
33
- constructor(dialog, injector) {
36
+ constructor(dialog, injector, router) {
34
37
  this.dialog = dialog;
35
38
  this.injector = injector;
39
+ this.router = router;
40
+ this.isLoading = true;
36
41
  this.onDestroy = new Subject();
37
42
  this.dataSource = new MatTableDataSource();
38
43
  this.selection = new SelectionModel(true, []);
@@ -43,6 +48,10 @@ export class NgxMatEntityTableComponent {
43
48
  */
44
49
  ngOnInit() {
45
50
  this.data = new TableDataBuilder(this.tableData).getResult();
51
+ this.importAction = {
52
+ ...this.data.baseData.importActionData,
53
+ action: () => this.startImportJson()
54
+ };
46
55
  this.entityService = this.injector.get(this.data.baseData.EntityServiceClass);
47
56
  const givenDisplayColumns = this.data.baseData.displayColumns.map((v) => v.displayName);
48
57
  if (this.data.baseData.multiSelectActions.length) {
@@ -67,7 +76,36 @@ export class NgxMatEntityTableComponent {
67
76
  this.dataSource.data = entities;
68
77
  this.selection.clear();
69
78
  });
70
- void this.entityService.read();
79
+ void this.entityService.read().then(() => {
80
+ this.isLoading = false;
81
+ });
82
+ }
83
+ startImportJson() {
84
+ const input = document.createElement('input');
85
+ input.type = 'file';
86
+ input.accept = 'application/json';
87
+ input.onchange = async () => {
88
+ if (input.files) {
89
+ this.importJson(input.files[0]);
90
+ }
91
+ };
92
+ input.click();
93
+ }
94
+ importJson(file) {
95
+ const dialogData = new ConfirmDialogDataBuilder(this.importAction.confirmDialogData)
96
+ .withDefault('text', this.data.baseData.importActionData.confirmDialogData?.text)
97
+ .withDefault('title', this.importAction.displayName)
98
+ .getResult();
99
+ const dialogRef = this.dialog.open(NgxMatEntityConfirmDialogComponent, {
100
+ data: dialogData,
101
+ autoFocus: false,
102
+ restoreFocus: false
103
+ });
104
+ dialogRef.afterClosed().subscribe(res => {
105
+ if (res == true) {
106
+ void this.entityService.import(file);
107
+ }
108
+ });
71
109
  }
72
110
  /**
73
111
  * Edits an entity. This either calls the edit-Method provided by the user or uses a default edit-dialog.
@@ -84,20 +122,26 @@ export class NgxMatEntityTableComponent {
84
122
  }
85
123
  if (this.data.baseData.edit) {
86
124
  this.data.baseData.edit(new this.data.baseData.EntityClass(entity));
125
+ return;
87
126
  }
88
- else {
89
- void this.editDefault(new this.data.baseData.EntityClass(entity));
127
+ if (this.data.baseData.defaultEdit == 'page') {
128
+ this.editDefaultPage(new this.data.baseData.EntityClass(entity));
129
+ return;
90
130
  }
131
+ void this.editDefaultDialog(new this.data.baseData.EntityClass(entity));
132
+ }
133
+ editDefaultPage(entity) {
134
+ void this.router.navigate(['', this.entityService.editBaseRoute, entity.id]);
91
135
  }
92
- async editDefault(entity) {
136
+ async editDefaultDialog(entity) {
93
137
  const inputDialogData = {
94
138
  entity: entity,
95
139
  EntityServiceClass: this.data.baseData.EntityServiceClass,
96
140
  allowUpdate: this.data.baseData.allowUpdate,
97
141
  allowDelete: this.data.baseData.allowDelete,
98
- editDialogData: this.data.editDialogData
142
+ editData: this.data.editData
99
143
  };
100
- const dialogData = new EditEntityDialogDataBuilder(inputDialogData).getResult();
144
+ const dialogData = new EditEntityDataBuilder(inputDialogData).getResult();
101
145
  const res = await firstValueFrom(this.dialog.open(NgxMatEntityEditDialogComponent, {
102
146
  data: dialogData,
103
147
  minWidth: '60%',
@@ -162,8 +206,8 @@ export class NgxMatEntityTableComponent {
162
206
  autoFocus: false,
163
207
  restoreFocus: false
164
208
  });
165
- dialogRef.afterClosed().subscribe((res) => {
166
- if (res === 1) {
209
+ dialogRef.afterClosed().subscribe(res => {
210
+ if (res == true) {
167
211
  this.confirmRunMultiAction(action);
168
212
  }
169
213
  });
@@ -200,12 +244,12 @@ export class NgxMatEntityTableComponent {
200
244
  this.dataSource.filter = filterValue.trim().toLowerCase();
201
245
  }
202
246
  }
203
- NgxMatEntityTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxMatEntityTableComponent, deps: [{ token: i1.MatDialog }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
204
- NgxMatEntityTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgxMatEntityTableComponent, selector: "ngx-mat-entity-table", inputs: { tableData: "tableData" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "filter", first: true, predicate: ["filter"], descendants: true, static: true }], ngImport: i0, template: "<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-2]=\"data.baseData.allowCreate()\"\n [class.col-lg-4]=\"!data.baseData.allowCreate()\"\n [class.col-md-3]=\"data.baseData.allowCreate()\"\n [class.col-md-6]=\"!data.baseData.allowCreate()\"\n [class.col-sm-6]=\"data.baseData.allowCreate()\"\n [class.col-sm-12]=\"!data.baseData.allowCreate()\"\n >\n <button type=\"button\" class=\"actions-button\" [matMenuTriggerFor]=\"menu\" mat-raised-button>\n {{data.baseData.multiSelectLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button type=\"button\" *ngFor=\"let action of data.baseData.multiSelectActions\" [disabled]=\"multiActionDisabled(action)\" (click)=\"runMultiAction(action)\" mat-menu-item>\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"data.baseData.allowCreate()\"\n [class.col-lg-2]=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-4]=\"!data.baseData.multiSelectActions.length\"\n [class.col-md-3]=\"data.baseData.multiSelectActions.length\"\n [class.col-md-6]=\"!data.baseData.multiSelectActions.length\"\n [class.col-sm-6]=\"data.baseData.multiSelectActions.length\"\n [class.col-sm-12]=\"!data.baseData.multiSelectActions.length\"\n >\n <button type=\"button\" class=\"create-button\" (click)=\"createEntity()\" mat-raised-button>\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\" [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"> </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let module\" class=\"module\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(module) : null\" [checked]=\"selection.isSelected(module)\"> </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" [class.enabled]=\"data.baseData.allowUpdate(entity) || data.baseData.allowRead(entity)\" (click)=\"editEntity(entity)\" *matCellDef=\"let entity\">\n {{dCol.value(entity)}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"> </mat-paginator>\n</div>\n", styles: [".title{text-align:center}button{width:100%}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
247
+ NgxMatEntityTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxMatEntityTableComponent, deps: [{ token: i1.MatDialog }, { token: i0.Injector }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
248
+ NgxMatEntityTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgxMatEntityTableComponent, selector: "ngx-mat-entity-table", inputs: { tableData: "tableData" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "filter", first: true, predicate: ["filter"], descendants: true, static: true }], ngImport: i0, template: "<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-2]=\"data.baseData.allowCreate()\"\n [class.col-lg-4]=\"!data.baseData.allowCreate()\"\n [class.col-md-3]=\"data.baseData.allowCreate()\"\n [class.col-md-6]=\"!data.baseData.allowCreate()\"\n [class.col-sm-6]=\"data.baseData.allowCreate()\"\n [class.col-sm-12]=\"!data.baseData.allowCreate()\"\n >\n <button type=\"button\" class=\"actions-button\" [matMenuTriggerFor]=\"menu\" mat-raised-button>\n {{data.baseData.multiSelectLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button *ngIf=\"data.baseData.allowJsonImport\" type=\"button\" [disabled]=\"importAction.enabled?.(this.selection.selected) === false\" (click)=\"runMultiAction(importAction)\" mat-menu-item>\n {{importAction.displayName}}\n </button>\n <button type=\"button\" *ngFor=\"let action of data.baseData.multiSelectActions\" [disabled]=\"multiActionDisabled(action)\" (click)=\"runMultiAction(action)\" mat-menu-item>\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"data.baseData.allowCreate()\"\n [class.col-lg-2]=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-4]=\"!data.baseData.multiSelectActions.length\"\n [class.col-md-3]=\"data.baseData.multiSelectActions.length\"\n [class.col-md-6]=\"!data.baseData.multiSelectActions.length\"\n [class.col-sm-6]=\"data.baseData.multiSelectActions.length\"\n [class.col-sm-12]=\"!data.baseData.multiSelectActions.length\"\n >\n <button type=\"button\" class=\"create-button\" (click)=\"createEntity()\" mat-raised-button>\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\" [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"> </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let module\" class=\"module\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(module) : null\" [checked]=\"selection.isSelected(module)\"> </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" [class.enabled]=\"data.baseData.allowUpdate(entity) || data.baseData.allowRead(entity)\" (click)=\"editEntity(entity)\" *matCellDef=\"let entity\">\n {{dCol.value(entity)}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-spinner *ngIf=\"isLoading && data.baseData.displayLoadingSpinner\" style=\"margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px;\">\n </mat-spinner>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"></mat-paginator>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
205
249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxMatEntityTableComponent, decorators: [{
206
250
  type: Component,
207
- args: [{ selector: 'ngx-mat-entity-table', template: "<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-2]=\"data.baseData.allowCreate()\"\n [class.col-lg-4]=\"!data.baseData.allowCreate()\"\n [class.col-md-3]=\"data.baseData.allowCreate()\"\n [class.col-md-6]=\"!data.baseData.allowCreate()\"\n [class.col-sm-6]=\"data.baseData.allowCreate()\"\n [class.col-sm-12]=\"!data.baseData.allowCreate()\"\n >\n <button type=\"button\" class=\"actions-button\" [matMenuTriggerFor]=\"menu\" mat-raised-button>\n {{data.baseData.multiSelectLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button type=\"button\" *ngFor=\"let action of data.baseData.multiSelectActions\" [disabled]=\"multiActionDisabled(action)\" (click)=\"runMultiAction(action)\" mat-menu-item>\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"data.baseData.allowCreate()\"\n [class.col-lg-2]=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-4]=\"!data.baseData.multiSelectActions.length\"\n [class.col-md-3]=\"data.baseData.multiSelectActions.length\"\n [class.col-md-6]=\"!data.baseData.multiSelectActions.length\"\n [class.col-sm-6]=\"data.baseData.multiSelectActions.length\"\n [class.col-sm-12]=\"!data.baseData.multiSelectActions.length\"\n >\n <button type=\"button\" class=\"create-button\" (click)=\"createEntity()\" mat-raised-button>\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\" [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"> </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let module\" class=\"module\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(module) : null\" [checked]=\"selection.isSelected(module)\"> </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" [class.enabled]=\"data.baseData.allowUpdate(entity) || data.baseData.allowRead(entity)\" (click)=\"editEntity(entity)\" *matCellDef=\"let entity\">\n {{dCol.value(entity)}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"> </mat-paginator>\n</div>\n", styles: [".title{text-align:center}button{width:100%}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"] }]
208
- }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i0.Injector }]; }, propDecorators: { tableData: [{
251
+ args: [{ selector: 'ngx-mat-entity-table', template: "<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-2]=\"data.baseData.allowCreate()\"\n [class.col-lg-4]=\"!data.baseData.allowCreate()\"\n [class.col-md-3]=\"data.baseData.allowCreate()\"\n [class.col-md-6]=\"!data.baseData.allowCreate()\"\n [class.col-sm-6]=\"data.baseData.allowCreate()\"\n [class.col-sm-12]=\"!data.baseData.allowCreate()\"\n >\n <button type=\"button\" class=\"actions-button\" [matMenuTriggerFor]=\"menu\" mat-raised-button>\n {{data.baseData.multiSelectLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button *ngIf=\"data.baseData.allowJsonImport\" type=\"button\" [disabled]=\"importAction.enabled?.(this.selection.selected) === false\" (click)=\"runMultiAction(importAction)\" mat-menu-item>\n {{importAction.displayName}}\n </button>\n <button type=\"button\" *ngFor=\"let action of data.baseData.multiSelectActions\" [disabled]=\"multiActionDisabled(action)\" (click)=\"runMultiAction(action)\" mat-menu-item>\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"data.baseData.allowCreate()\"\n [class.col-lg-2]=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-4]=\"!data.baseData.multiSelectActions.length\"\n [class.col-md-3]=\"data.baseData.multiSelectActions.length\"\n [class.col-md-6]=\"!data.baseData.multiSelectActions.length\"\n [class.col-sm-6]=\"data.baseData.multiSelectActions.length\"\n [class.col-sm-12]=\"!data.baseData.multiSelectActions.length\"\n >\n <button type=\"button\" class=\"create-button\" (click)=\"createEntity()\" mat-raised-button>\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\" [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"> </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let module\" class=\"module\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(module) : null\" [checked]=\"selection.isSelected(module)\"> </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" [class.enabled]=\"data.baseData.allowUpdate(entity) || data.baseData.allowRead(entity)\" (click)=\"editEntity(entity)\" *matCellDef=\"let entity\">\n {{dCol.value(entity)}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-spinner *ngIf=\"isLoading && data.baseData.displayLoadingSpinner\" style=\"margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px;\">\n </mat-spinner>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"></mat-paginator>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"] }]
252
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i0.Injector }, { type: i2.Router }]; }, propDecorators: { tableData: [{
209
253
  type: Input
210
254
  }], paginator: [{
211
255
  type: ViewChild,
@@ -217,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
217
261
  type: ViewChild,
218
262
  args: ['filter', { static: true }]
219
263
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRzdGLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwSCxPQUFPLEVBQUUsNkJBQTZCLEVBQWtDLE1BQU0sbURBQW1ELENBQUM7QUFDbEksT0FBTyxFQUFFLGdCQUFnQixFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8s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SUc7SUFDSCxXQUFXLENBQUMsS0FBWTtRQUNwQixNQUFNLFdBQVcsR0FBWSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUM7UUFDckUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlELENBQUM7O3VIQXhNUSwwQkFBMEI7MkdBQTFCLDBCQUEwQiwySUFZeEIsWUFBWSxxRkFDWixPQUFPLCtKQzVDdEIsNGhIQW9FQTsyRkRyQ2EsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHNCQUFzQjt1SEFVaEMsU0FBUztzQkFEUixLQUFLO2dCQU9xQyxTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0gsSUFBSTtzQkFBekMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNHLE1BQU07c0JBQTVDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRFbnRpdHlEaWFsb2dEYXRhIH0gZnJvbSAnLi9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBNdWx0aVNlbGVjdEFjdGlvbiwgVGFibGVEYXRhIH0gZnJvbSAnLi90YWJsZS1kYXRhJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IENyZWF0ZUVudGl0eURpYWxvZ0RhdGFCdWlsZGVyLCBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2NyZWF0ZS1kaWFsb2cvY3JlYXRlLWVudGl0eS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IFRhYmxlRGF0YUJ1aWxkZXIsIFRhYmxlRGF0YUludGVybmFsIH0gZnJvbSAnLi90YWJsZS1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgRWRpdEVudGl0eURpYWxvZ0RhdGFCdWlsZGVyLCBFZGl0RW50aXR5RGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi4vdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25VdGlsaXRpZXMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi51dGlsaXRpZXMnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGZ1bGx5IGZ1bmN0aW9uYWwgdGFibGUgZm9yIGRpc3BsYXlpbmcsIGNyZWF0aW5nLCB1cGRhdGluZyBhbmQgZGVsZXRpbmcgZW50aXRpZXNcbiAqIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIHBhc3NlZCBpbiB0aGUgQElucHV0IFwidGFibGVEYXRhXCIuXG4gKlxuICogSXQgb2ZmZXJzIGEgbG90IG9mIGN1c3RvbWl6YXRpb24gb3B0aW9ucyB3aGljaCBjYW4gYmUgZm91bmQgaW4gXCJUYWJsZURhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eVRhYmxlQ29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmxlRGF0YSE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPjtcblxuICAgIGRhdGEhOiBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIHByaXZhdGUgZW50aXR5U2VydmljZSE6IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT47XG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogdHJ1ZSB9KSBwYWdpbmF0b3IhOiBNYXRQYWdpbmF0b3I7XG4gICAgQFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KSBzb3J0ITogTWF0U29ydDtcbiAgICBAVmlld0NoaWxkKCdmaWx0ZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWx0ZXIhOiBzdHJpbmc7XG4gICAgZGlzcGxheWVkQ29sdW1ucyE6IHN0cmluZ1tdO1xuICAgIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxFbnRpdHlUeXBlPiA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoKTtcbiAgICBzZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPEVudGl0eVR5cGU+ID0gbmV3IFNlbGVjdGlvbk1vZGVsPEVudGl0eVR5cGU+KHRydWUsIFtdKTtcblxuICAgIFNlbGVjdGlvblV0aWxpdGllczogdHlwZW9mIFNlbGVjdGlvblV0aWxpdGllcyA9IFNlbGVjdGlvblV0aWxpdGllcztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB0YWJsZSBhbmQgdGhlIEVudGl0eVNlcnZpY2UuXG4gICAgICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG5ldyBUYWJsZURhdGFCdWlsZGVyKHRoaXMudGFibGVEYXRhKS5nZXRSZXN1bHQoKTtcblxuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldCh0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzKSBhcyBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuXG4gICAgICAgIGNvbnN0IGdpdmVuRGlzcGxheUNvbHVtbnM6IHN0cmluZ1tdID0gdGhpcy5kYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zLm1hcCgodikgPT4gdi5kaXNwbGF5TmFtZSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydzZWxlY3QnXS5jb25jYXQoZ2l2ZW5EaXNwbGF5Q29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBnaXZlbkRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZW50aXR5OiBFbnRpdHlUeXBlLCBoZWFkZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1ucy5maW5kKChkcCkgPT4gZHAuZGlzcGxheU5hbWUgPT09IGhlYWRlcik/LnZhbHVlKGVudGl0eSkgYXMgc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChlbnRpdHk6IEVudGl0eVR5cGUsIGZpbHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hTdHI6IHN0cmluZyA9IHRoaXMuZGF0YS5iYXNlRGF0YS5zZWFyY2hTdHJpbmcoZW50aXR5KTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFNlYXJjaFN0cmluZzogc3RyaW5nID0gc2VhcmNoU3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRGaWx0ZXJTdHJpbmc6IHN0cmluZyA9IGZpbHRlci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFNlYXJjaFN0cmluZy5pbmNsdWRlcyhmb3JtYXR0ZWRGaWx0ZXJTdHJpbmcpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gdGhpcy5maWx0ZXI7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcblxuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UuZW50aXRpZXNTdWJqZWN0LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChlbnRpdGllcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBlbnRpdGllcztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZS5yZWFkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdHMgYW4gZW50aXR5LiBUaGlzIGVpdGhlciBjYWxscyB0aGUgZWRpdC1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0aGF0IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgICAqIEB0aHJvd3MgV2hlbiBubyBFbnRpdHlDbGFzcyB3YXMgcHJvdmlkZWQsIGFzIGEgbmV3IGNhbGwgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEuXG4gICAgICovXG4gICAgZWRpdEVudGl0eShlbnRpdHk6IEVudGl0eVR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEodGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlKGVudGl0eSkgfHwgdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93UmVhZChlbnRpdHkpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFwiRW50aXR5Q2xhc3NcIiBzcGVjaWZpZWQgZm9yIHRoaXMgdGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5lZGl0KG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuZWRpdERlZmF1bHQobmV3IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcyhlbnRpdHkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZWRpdERlZmF1bHQoZW50aXR5OiBFbnRpdHlUeXBlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGlhbG9nRGF0YTogRWRpdEVudGl0eURpYWxvZ0RhdGE8RW50aXR5VHlwZT4gPSB7XG4gICAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcbiAgICAgICAgICAgIEVudGl0eVNlcnZpY2VDbGFzczogdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eVNlcnZpY2VDbGFzcyxcbiAgICAgICAgICAgIGFsbG93VXBkYXRlOiB0aGlzLmRhdGEuYmFzZURhdGEuYWxsb3dVcGRhdGUsXG4gICAgICAgICAgICBhbGxvd0RlbGV0ZTogdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93RGVsZXRlLFxuICAgICAgICAgICAgZWRpdERpYWxvZ0RhdGE6IHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBFZGl0RW50aXR5RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+ID0gbmV3IEVkaXRFbnRpdHlEaWFsb2dEYXRhQnVpbGRlcihpbnB1dERpYWxvZ0RhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCByZXM6IG51bWJlciA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzYwJScsXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgICAgICB9KS5hZnRlckNsb3NlZCgpXG4gICAgICAgICkgYXMgbnVtYmVyO1xuICAgICAgICBpZiAocmVzID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhOiBFbnRpdHlUeXBlW10gPSB0aGlzLmRhdGFTb3VyY2UuZGF0YTtcbiAgICAgICAgICAgIGRhdGFbdGhpcy5kYXRhU291cmNlLmRhdGEuZmluZEluZGV4KChlKSA9PiBlW3RoaXMuZW50aXR5U2VydmljZS5pZEtleV0gPT09IGVudGl0eVt0aGlzLmVudGl0eVNlcnZpY2UuaWRLZXldKV0gPSBlbnRpdHk7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBFbnRpdHkuIFRoaXMgZWl0aGVyIGNhbGxzIHRoZSBjcmVhdGUtTWV0aG9kIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIG9yIHVzZXMgYSBkZWZhdWx0IGNyZWF0ZS1kaWFsb2cuXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIFdoZW4gbm8gRW50aXR5Q2xhc3Mgd2FzIHByb3ZpZGVkLCBhcyBhIG5ldyBjYWxsIGlzIG5lZWRlZCB0byBpbml0aWFsaXplIG1ldGFkYXRhLlxuICAgICAqL1xuICAgIGNyZWF0ZUVudGl0eSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gXCJFbnRpdHlDbGFzc1wiIHNwZWNpZmllZCBmb3IgdGhpcyB0YWJsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5jcmVhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuYmFzZURhdGEuY3JlYXRlKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURlZmF1bHQobmV3IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGVmYXVsdChlbnRpdHk6IEVudGl0eVR5cGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ3JlYXRlRW50aXR5RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+ID0gbmV3IENyZWF0ZUVudGl0eURpYWxvZ0RhdGFCdWlsZGVyKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVudGl0eTogZW50aXR5LFxuICAgICAgICAgICAgICAgIEVudGl0eVNlcnZpY2VDbGFzczogdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eVNlcnZpY2VDbGFzcyxcbiAgICAgICAgICAgICAgICBjcmVhdGVEaWFsb2dEYXRhOiB0aGlzLmRhdGEuY3JlYXRlRGlhbG9nRGF0YVxuICAgICAgICAgICAgfVxuICAgICAgICApLmdldFJlc3VsdCgpO1xuICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIG1pbldpZHRoOiAnNjAlJyxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJ1bnMgdGhlIE11bHRpQWN0aW9uIGZvciBhbGwgc2VsZWN0ZWQgZW50cmllcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgY29uZmlybWF0aW9uIHdpdGggYW4gYWRkaXRpb25hbCBkaWFsb2cgaWYgY29uZmlndXJlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhY3Rpb24gLSBUaGUgTXVsdGlBY3Rpb24gdG8gcnVuLlxuICAgICAqL1xuICAgIHJ1bk11bHRpQWN0aW9uKGFjdGlvbjogTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFhY3Rpb24ucmVxdWlyZUNvbmZpcm1EaWFsb2cgfHwgIWFjdGlvbi5yZXF1aXJlQ29uZmlybURpYWxvZyh0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCkpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1bk11bHRpQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIoYWN0aW9uLmNvbmZpcm1EaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgW2BEbyB5b3UgcmVhbGx5IHdhbnQgdG8gcnVuIHRoaXMgYWN0aW9uIG9uICR7dGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQubGVuZ3RofSBlbnRyaWVzP2BdKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsIGFjdGlvbi5kaXNwbGF5TmFtZSlcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudD4gPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1bk11bHRpQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybVJ1bk11bHRpQWN0aW9uKGFjdGlvbjogTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgYWN0aW9uLmFjdGlvbih0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFuIE11bHRpQWN0aW9uIGlzIGRpc2FibGVkIChlLmcuIEJlY2F1c2Ugbm8gZW50cmllcyBoYXZlIGJlZW4gc2VsZWN0ZWQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBNdWx0aUFjdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgQWN0aW9uIGNhbiBiZSB1c2VkLlxuICAgICAqL1xuICAgIG11bHRpQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvbi5lbmFibGVkPy4odGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uRGVzdHJveS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbGllcyB0aGUgc2VhcmNoIGlucHV0IHRvIGZpbHRlciB0aGUgdGFibGUgZW50cmllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBrZXl1cC1ldmVudCB3aGljaCBjb250YWlucyB0aGUgc2VhcmNoLXN0cmluZyBvZiB0aGUgdXNlci5cbiAgICAgKi9cbiAgICBhcHBseUZpbHRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWU6IHN0cmluZyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG59IiwiPGgxIGNsYXNzPVwidGl0bGVcIj57e2RhdGEuYmFzZURhdGEudGl0bGV9fTwvaDE+XG5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjb2wtbGctOCBjb2wtbWQtNiBjb2wtc20tMTJcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e2RhdGEuYmFzZURhdGEuc2VhcmNoTGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImFwcGx5RmlsdGVyKCRldmVudClcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLWxnLTJdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1sZy00XT1cIiFkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKClcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTNdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1tZC02XT1cIiFkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKClcIlxuICAgICAgICBbY2xhc3MuY29sLXNtLTZdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS0xMl09XCIhZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWN0aW9ucy1idXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxuICAgICAgICAgICAge3tkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0TGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnNcIiBbZGlzYWJsZWRdPVwibXVsdGlBY3Rpb25EaXNhYmxlZChhY3Rpb24pXCIgKGNsaWNrKT1cInJ1bk11bHRpQWN0aW9uKGFjdGlvbilcIiBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgICAge3thY3Rpb24uZGlzcGxheU5hbWV9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1tZW51PlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cImRhdGEuYmFzZURhdGEuYWxsb3dDcmVhdGUoKVwiXG4gICAgICAgIFtjbGFzcy5jb2wtbGctMl09XCJkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLWxnLTRdPVwiIWRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtbWQtM109XCJkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTZdPVwiIWRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtc20tNl09XCJkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLXNtLTEyXT1cIiFkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9ucy5sZW5ndGhcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjcmVhdGUtYnV0dG9uXCIgKGNsaWNrKT1cImNyZWF0ZUVudGl0eSgpXCIgbWF0LXJhaXNlZC1idXR0b24+XG4gICAgICAgICAgICB7e2RhdGEuYmFzZURhdGEuY3JlYXRlQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWF0LWVsZXZhdGlvbi16OFwiPlxuICAgIDxtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIG1hdFNvcnQ+XG4gICAgICAgIDwhLS0gc2VsZWN0IENvbHVtbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cbiAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IFNlbGVjdGlvblV0aWxpdGllcy5tYXN0ZXJUb2dnbGUoc2VsZWN0aW9uLCBkYXRhU291cmNlKSA6IG51bGxcIiBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBTZWxlY3Rpb25VdGlsaXRpZXMuaXNBbGxTZWxlY3RlZChzZWxlY3Rpb24sIGRhdGFTb3VyY2UpXCIgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIVNlbGVjdGlvblV0aWxpdGllcy5pc0FsbFNlbGVjdGVkKHNlbGVjdGlvbiwgZGF0YVNvdXJjZSlcIj4gPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBtb2R1bGVcIiBjbGFzcz1cIm1vZHVsZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShtb2R1bGUpIDogbnVsbFwiIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKG1vZHVsZSlcIj4gPC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkQ29sIG9mIGRhdGEuYmFzZURhdGEuZGlzcGxheUNvbHVtbnNcIiBbbWF0Q29sdW1uRGVmXT1cImRDb2wuZGlzcGxheU5hbWVcIj5cbiAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIHt7ZENvbC5kaXNwbGF5TmFtZX19XG4gICAgICAgICAgICA8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgIDxtYXQtY2VsbCBjbGFzcz1cImVudGl0eVwiIFtjbGFzcy5lbmFibGVkXT1cImRhdGEuYmFzZURhdGEuYWxsb3dVcGRhdGUoZW50aXR5KSB8fCBkYXRhLmJhc2VEYXRhLmFsbG93UmVhZChlbnRpdHkpXCIgKGNsaWNrKT1cImVkaXRFbnRpdHkoZW50aXR5KVwiICptYXRDZWxsRGVmPVwibGV0IGVudGl0eVwiPlxuICAgICAgICAgICAgICAgIHt7ZENvbC52YWx1ZShlbnRpdHkpfX1cbiAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvbWF0LWhlYWRlci1yb3c+XG4gICAgICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCI+PC9tYXQtcm93PlxuICAgIDwvbWF0LXRhYmxlPlxuXG4gICAgPG1hdC1wYWdpbmF0b3IgW2xlbmd0aF09XCJkYXRhU291cmNlLmZpbHRlcmVkRGF0YS5sZW5ndGhcIiBbcGFnZUluZGV4XT1cIjBcIiBbcGFnZVNpemVdPVwiMTBcIiBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMjUsIDUwXVwiPiA8L21hdC1wYWdpbmF0b3I+XG48L2Rpdj5cbiJdfQ==
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sK0NBQStDLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEcsT0FBTyxFQUFFLDZCQUE2QixFQUFrQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRW5HLE9BQU8sRUFB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dEMsU0FBUzsrQkFDSSxzQkFBc0I7NElBVWhDLFNBQVM7c0JBRFIsS0FBSztnQkFTcUMsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILElBQUk7c0JBQXpDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRyxNQUFNO3NCQUE1QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSwgRW50aXR5IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGlvblV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9zZWxlY3Rpb24udXRpbGl0aWVzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENyZWF0ZUVudGl0eURpYWxvZ0RhdGFCdWlsZGVyLCBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2NyZWF0ZS1kaWFsb2cvY3JlYXRlLWVudGl0eS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRpdEVudGl0eURhdGEgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRhdGEnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGF0YUJ1aWxkZXIsIEVkaXRFbnRpdHlEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LmJ1aWxkZXInO1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RBY3Rpb24sIFRhYmxlRGF0YSB9IGZyb20gJy4vdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBUYWJsZURhdGFCdWlsZGVyLCBUYWJsZURhdGFJbnRlcm5hbCB9IGZyb20gJy4vdGFibGUtZGF0YS5idWlsZGVyJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBmdWxseSBmdW5jdGlvbmFsIHRhYmxlIGZvciBkaXNwbGF5aW5nLCBjcmVhdGluZywgdXBkYXRpbmcgYW5kIGRlbGV0aW5nIGVudGl0aWVzXG4gKiBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBwYXNzZWQgaW4gdGhlIEBJbnB1dCBcInRhYmxlRGF0YVwiLlxuICpcbiAqIEl0IG9mZmVycyBhIGxvdCBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMgd2hpY2ggY2FuIGJlIGZvdW5kIGluIFwiVGFibGVEYXRhXCIuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlUYWJsZUNvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5Pj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmxlRGF0YSE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPjtcblxuICAgIGRhdGEhOiBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwcml2YXRlIGVudGl0eVNlcnZpY2UhOiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSkgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xuICAgIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSkgc29ydCE6IE1hdFNvcnQ7XG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyJywgeyBzdGF0aWM6IHRydWUgfSkgZmlsdGVyITogc3RyaW5nO1xuICAgIGRpc3BsYXllZENvbHVtbnMhOiBzdHJpbmdbXTtcbiAgICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8RW50aXR5VHlwZT4gPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPih0cnVlLCBbXSk7XG5cbiAgICBTZWxlY3Rpb25VdGlsaXRpZXM6IHR5cGVvZiBTZWxlY3Rpb25VdGlsaXRpZXMgPSBTZWxlY3Rpb25VdGlsaXRpZXM7XG5cbiAgICBpbXBvcnRBY3Rpb24hOiBPbWl0PE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+LCAnY29uZmlybWF0aW9uRGlhbG9nJz47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHVwIGFsbCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHRhYmxlIGFuZCB0aGUgRW50aXR5U2VydmljZS5cbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFRhYmxlRGF0YUJ1aWxkZXIodGhpcy50YWJsZURhdGEpLmdldFJlc3VsdCgpO1xuXG4gICAgICAgIHRoaXMuaW1wb3J0QWN0aW9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5kYXRhLmJhc2VEYXRhLmltcG9ydEFjdGlvbkRhdGEsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMuc3RhcnRJbXBvcnRKc29uKClcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldCh0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzKSBhcyBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuXG4gICAgICAgIGNvbnN0IGdpdmVuRGlzcGxheUNvbHVtbnM6IHN0cmluZ1tdID0gdGhpcy5kYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zLm1hcCgodikgPT4gdi5kaXNwbGF5TmFtZSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydzZWxlY3QnXS5jb25jYXQoZ2l2ZW5EaXNwbGF5Q29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBnaXZlbkRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZW50aXR5OiBFbnRpdHlUeXBlLCBoZWFkZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1ucy5maW5kKChkcCkgPT4gZHAuZGlzcGxheU5hbWUgPT09IGhlYWRlcik/LnZhbHVlKGVudGl0eSkgYXMgc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChlbnRpdHk6IEVudGl0eVR5cGUsIGZpbHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hTdHI6IHN0cmluZyA9IHRoaXMuZGF0YS5iYXNlRGF0YS5zZWFyY2hTdHJpbmcoZW50aXR5KTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFNlYXJjaFN0cmluZzogc3RyaW5nID0gc2VhcmNoU3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRGaWx0ZXJTdHJpbmc6IHN0cmluZyA9IGZpbHRlci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFNlYXJjaFN0cmluZy5pbmNsdWRlcyhmb3JtYXR0ZWRGaWx0ZXJTdHJpbmcpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gdGhpcy5maWx0ZXI7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcblxuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UuZW50aXRpZXNTdWJqZWN0LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChlbnRpdGllcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBlbnRpdGllcztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZS5yZWFkKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0SW1wb3J0SnNvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBpbnB1dC50eXBlID0gJ2ZpbGUnO1xuICAgICAgICBpbnB1dC5hY2NlcHQgPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgIGlucHV0Lm9uY2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlucHV0LmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbXBvcnRKc29uKGlucHV0LmZpbGVzWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaW5wdXQuY2xpY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGltcG9ydEpzb24oZmlsZTogRmlsZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmltcG9ydEFjdGlvbi5jb25maXJtRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZGF0YS5iYXNlRGF0YS5pbXBvcnRBY3Rpb25EYXRhLmNvbmZpcm1EaWFsb2dEYXRhPy50ZXh0IGFzIHN0cmluZ1tdKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsIHRoaXMuaW1wb3J0QWN0aW9uLmRpc3BsYXlOYW1lKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLmltcG9ydChmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdHMgYW4gZW50aXR5LiBUaGlzIGVpdGhlciBjYWxscyB0aGUgZWRpdC1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0aGF0IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgICAqIEB0aHJvd3MgV2hlbiBubyBFbnRpdHlDbGFzcyB3YXMgcHJvdmlkZWQsIGFzIGEgbmV3IGNhbGwgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEuXG4gICAgICovXG4gICAgZWRpdEVudGl0eShlbnRpdHk6IEVudGl0eVR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEodGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlKGVudGl0eSkgfHwgdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93UmVhZChlbnRpdHkpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFwiRW50aXR5Q2xhc3NcIiBzcGVjaWZpZWQgZm9yIHRoaXMgdGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5lZGl0KG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5kZWZhdWx0RWRpdCA9PSAncGFnZScpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdERlZmF1bHRQYWdlKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLmVkaXREZWZhdWx0RGlhbG9nKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlZGl0RGVmYXVsdFBhZ2UoZW50aXR5OiBFbnRpdHlUeXBlKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycnLCB0aGlzLmVudGl0eVNlcnZpY2UuZWRpdEJhc2VSb3V0ZSwgZW50aXR5LmlkXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBlZGl0RGVmYXVsdERpYWxvZyhlbnRpdHk6IEVudGl0eVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5wdXREaWFsb2dEYXRhOiBFZGl0RW50aXR5RGF0YTxFbnRpdHlUeXBlPiA9IHtcbiAgICAgICAgICAgIGVudGl0eTogZW50aXR5LFxuICAgICAgICAgICAgRW50aXR5U2VydmljZUNsYXNzOiB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzLFxuICAgICAgICAgICAgYWxsb3dVcGRhdGU6IHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZSxcbiAgICAgICAgICAgIGFsbG93RGVsZXRlOiB0aGlzLmRhdGEuYmFzZURhdGEuYWxsb3dEZWxldGUsXG4gICAgICAgICAgICBlZGl0RGF0YTogdGhpcy5kYXRhLmVkaXREYXRhXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IEVkaXRFbnRpdHlEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgRWRpdEVudGl0eURhdGFCdWlsZGVyKGlucHV0RGlhbG9nRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IHJlczogbnVtYmVyID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnNjAlJyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH0pLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgKSBhcyBudW1iZXI7XG4gICAgICAgIGlmIChyZXMgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGE6IEVudGl0eVR5cGVbXSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xuICAgICAgICAgICAgZGF0YVt0aGlzLmRhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgoKGUpID0+IGVbdGhpcy5lbnRpdHlTZXJ2aWNlLmlkS2V5XSA9PT0gZW50aXR5W3RoaXMuZW50aXR5U2VydmljZS5pZEtleV0pXSA9IGVudGl0eTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEVudGl0eS4gVGhpcyBlaXRoZXIgY2FsbHMgdGhlIGNyZWF0ZS1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAgICAgKlxuICAgICAqIEB0aHJvd3MgV2hlbiBubyBFbnRpdHlDbGFzcyB3YXMgcHJvdmlkZWQsIGFzIGEgbmV3IGNhbGwgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEuXG4gICAgICovXG4gICAgY3JlYXRlRW50aXR5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBcIkVudGl0eUNsYXNzXCIgc3BlY2lmaWVkIGZvciB0aGlzIHRhYmxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5jcmVhdGUobmV3IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdChuZXcgdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0KGVudGl0eTogRW50aXR5VHlwZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgQ3JlYXRlRW50aXR5RGlhbG9nRGF0YUJ1aWxkZXIoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICAgICAgRW50aXR5U2VydmljZUNsYXNzOiB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzLFxuICAgICAgICAgICAgICAgIGNyZWF0ZURpYWxvZ0RhdGE6IHRoaXMuZGF0YS5jcmVhdGVEaWFsb2dEYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgbWluV2lkdGg6ICc2MCUnLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUnVucyB0aGUgTXVsdGlBY3Rpb24gZm9yIGFsbCBzZWxlY3RlZCBlbnRyaWVzLlxuICAgICAqIEFsc28gaGFuZGxlcyBjb25maXJtYXRpb24gd2l0aCBhbiBhZGRpdGlvbmFsIGRpYWxvZyBpZiBjb25maWd1cmVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBNdWx0aUFjdGlvbiB0byBydW4uXG4gICAgICovXG4gICAgcnVuTXVsdGlBY3Rpb24oYWN0aW9uOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoIWFjdGlvbi5yZXF1aXJlQ29uZmlybURpYWxvZyB8fCAhYWN0aW9uLnJlcXVpcmVDb25maXJtRGlhbG9nKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKSkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtUnVuTXVsdGlBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcihhY3Rpb24uY29uZmlybURpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCBbYERvIHlvdSByZWFsbHkgd2FudCB0byBydW4gdGhpcyBhY3Rpb24gb24gJHt0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGh9IGVudHJpZXM/YF0pXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgYWN0aW9uLmRpc3BsYXlOYW1lKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1bk11bHRpQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybVJ1bk11bHRpQWN0aW9uKGFjdGlvbjogTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgYWN0aW9uLmFjdGlvbih0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFuIE11bHRpQWN0aW9uIGlzIGRpc2FibGVkIChlLmcuIEJlY2F1c2Ugbm8gZW50cmllcyBoYXZlIGJlZW4gc2VsZWN0ZWQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBNdWx0aUFjdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgQWN0aW9uIGNhbiBiZSB1c2VkLlxuICAgICAqL1xuICAgIG11bHRpQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvbi5lbmFibGVkPy4odGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uRGVzdHJveS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbGllcyB0aGUgc2VhcmNoIGlucHV0IHRvIGZpbHRlciB0aGUgdGFibGUgZW50cmllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBrZXl1cC1ldmVudCB3aGljaCBjb250YWlucyB0aGUgc2VhcmNoLXN0cmluZyBvZiB0aGUgdXNlci5cbiAgICAgKi9cbiAgICBhcHBseUZpbHRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWU6IHN0cmluZyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG59IiwiPGgxIGNsYXNzPVwidGl0bGVcIj57e2RhdGEuYmFzZURhdGEudGl0bGV9fTwvaDE+XG5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjb2wtbGctOCBjb2wtbWQtNiBjb2wtc20tMTJcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e2RhdGEuYmFzZURhdGEuc2VhcmNoTGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImFwcGx5RmlsdGVyKCRldmVudClcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLWxnLTJdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1sZy00XT1cIiFkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKClcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTNdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1tZC02XT1cIiFkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKClcIlxuICAgICAgICBbY2xhc3MuY29sLXNtLTZdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS0xMl09XCIhZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWN0aW9ucy1idXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxuICAgICAgICAgICAge3tkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0TGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmJhc2VEYXRhLmFsbG93SnNvbkltcG9ydFwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaW1wb3J0QWN0aW9uLmVuYWJsZWQ/Lih0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCkgPT09IGZhbHNlXCIgKGNsaWNrKT1cInJ1bk11bHRpQWN0aW9uKGltcG9ydEFjdGlvbilcIiBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgICAge3tpbXBvcnRBY3Rpb24uZGlzcGxheU5hbWV9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9uc1wiIFtkaXNhYmxlZF09XCJtdWx0aUFjdGlvbkRpc2FibGVkKGFjdGlvbilcIiAoY2xpY2spPVwicnVuTXVsdGlBY3Rpb24oYWN0aW9uKVwiIG1hdC1tZW51LWl0ZW0+XG4gICAgICAgICAgICB7e2FjdGlvbi5kaXNwbGF5TmFtZX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LW1lbnU+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1sZy0yXT1cImRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtbGctNF09XCIhZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1tZC0zXT1cImRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtbWQtNl09XCIhZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS02XT1cImRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtc20tMTJdPVwiIWRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNyZWF0ZS1idXR0b25cIiAoY2xpY2spPVwiY3JlYXRlRW50aXR5KClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5cbiAgICAgICAgICAgIHt7ZGF0YS5iYXNlRGF0YS5jcmVhdGVCdXR0b25MYWJlbH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCI+XG4gICAgPG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgbWF0U29ydD5cbiAgICAgICAgPCEtLSBzZWxlY3QgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxuICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gU2VsZWN0aW9uVXRpbGl0aWVzLm1hc3RlclRvZ2dsZShzZWxlY3Rpb24sIGRhdGFTb3VyY2UpIDogbnVsbFwiIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIFNlbGVjdGlvblV0aWxpdGllcy5pc0FsbFNlbGVjdGVkKHNlbGVjdGlvbiwgZGF0YVNvdXJjZSlcIiBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhU2VsZWN0aW9uVXRpbGl0aWVzLmlzQWxsU2VsZWN0ZWQoc2VsZWN0aW9uLCBkYXRhU291cmNlKVwiPiA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IG1vZHVsZVwiIGNsYXNzPVwibW9kdWxlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKG1vZHVsZSkgOiBudWxsXCIgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQobW9kdWxlKVwiPiA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRDb2wgb2YgZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwiZENvbC5kaXNwbGF5TmFtZVwiPlxuICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgICAgICAge3tkQ29sLmRpc3BsYXlOYW1lfX1cbiAgICAgICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgPG1hdC1jZWxsIGNsYXNzPVwiZW50aXR5XCIgW2NsYXNzLmVuYWJsZWRdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZShlbnRpdHkpIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dSZWFkKGVudGl0eSlcIiAoY2xpY2spPVwiZWRpdEVudGl0eShlbnRpdHkpXCIgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5XCI+XG4gICAgICAgICAgICAgICAge3tkQ29sLnZhbHVlKGVudGl0eSl9fVxuICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L21hdC1yb3c+XG4gICAgPC9tYXQtdGFibGU+XG5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJpc0xvYWRpbmcgJiYgZGF0YS5iYXNlRGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXJcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IG1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgPC9tYXQtc3Bpbm5lcj5cblxuICAgIDxtYXQtcGFnaW5hdG9yIFtsZW5ndGhdPVwiZGF0YVNvdXJjZS5maWx0ZXJlZERhdGEubGVuZ3RoXCIgW3BhZ2VJbmRleF09XCIwXCIgW3BhZ2VTaXplXT1cIjEwXCIgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDI1LCA1MF1cIj48L21hdC1wYWdpbmF0b3I+XG48L2Rpdj4iXX0=
@@ -12,6 +12,7 @@ import { MatMenuModule } from '@angular/material/menu';
12
12
  import { MatDialogModule } from '@angular/material/dialog';
13
13
  import { NgxMatEntityCreateDialogModule } from './create-dialog/create-entity-dialog.module';
14
14
  import { NgxMatEntityEditDialogModule } from './edit-dialog/edit-entity-dialog.module';
15
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
15
16
  import * as i0 from "@angular/core";
16
17
  export class NgxMatEntityTableModule {
17
18
  }
@@ -26,6 +27,7 @@ NgxMatEntityTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
26
27
  MatButtonModule,
27
28
  MatMenuModule,
28
29
  MatDialogModule,
30
+ MatProgressSpinnerModule,
29
31
  NgxMatEntityCreateDialogModule,
30
32
  NgxMatEntityEditDialogModule], exports: [NgxMatEntityTableComponent] });
31
33
  NgxMatEntityTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxMatEntityTableModule, imports: [CommonModule,
@@ -38,6 +40,7 @@ NgxMatEntityTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
38
40
  MatButtonModule,
39
41
  MatMenuModule,
40
42
  MatDialogModule,
43
+ MatProgressSpinnerModule,
41
44
  NgxMatEntityCreateDialogModule,
42
45
  NgxMatEntityEditDialogModule] });
43
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxMatEntityTableModule, decorators: [{
@@ -55,10 +58,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
55
58
  MatButtonModule,
56
59
  MatMenuModule,
57
60
  MatDialogModule,
61
+ MatProgressSpinnerModule,
58
62
  NgxMatEntityCreateDialogModule,
59
63
  NgxMatEntityEditDialogModule
60
64
  ],
61
65
  exports: [NgxMatEntityTableComponent]
62
66
  }]
63
67
  }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDN0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBb0J2RixNQUFNLE9BQU8sdUJBQXVCOztvSEFBdkIsdUJBQXVCO3FIQUF2Qix1QkFBdUIsaUJBakJqQiwwQkFBMEIsYUFFckMsWUFBWTtRQUNaLGNBQWM7UUFDZCxXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixhQUFhO1FBQ2IsZUFBZTtRQUNmLDhCQUE4QjtRQUM5Qiw0QkFBNEIsYUFFdEIsMEJBQTBCO3FIQUUzQix1QkFBdUIsWUFmNUIsWUFBWTtRQUNaLGNBQWM7UUFDZCxXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixhQUFhO1FBQ2IsZUFBZTtRQUNmLDhCQUE4QjtRQUM5Qiw0QkFBNEI7MkZBSXZCLHVCQUF1QjtrQkFsQm5DLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLDhCQUE4Qjt3QkFDOUIsNEJBQTRCO3FCQUMvQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5neE1hdEVudGl0eVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ01vZHVsZSB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5RWRpdERpYWxvZ01vZHVsZSB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbTmd4TWF0RW50aXR5VGFibGVDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgICAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0TWVudU1vZHVsZSxcbiAgICAgICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgICAgICBOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dNb2R1bGUsXG4gICAgICAgIE5neE1hdEVudGl0eUVkaXREaWFsb2dNb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtOZ3hNYXRFbnRpdHlUYWJsZUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0RW50aXR5VGFibGVNb2R1bGUge30iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDN0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBcUI5RSxNQUFNLE9BQU8sdUJBQXVCOztvSEFBdkIsdUJBQXVCO3FIQUF2Qix1QkFBdUIsaUJBbEJqQiwwQkFBMEIsYUFFckMsWUFBWTtRQUNaLGNBQWM7UUFDZCxXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixhQUFhO1FBQ2IsZUFBZTtRQUNmLHdCQUF3QjtRQUN4Qiw4QkFBOEI7UUFDOUIsNEJBQTRCLGFBRXRCLDBCQUEwQjtxSEFFM0IsdUJBQXVCLFlBaEI1QixZQUFZO1FBQ1osY0FBYztRQUNkLFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLGFBQWE7UUFDYixlQUFlO1FBQ2Ysd0JBQXdCO1FBQ3hCLDhCQUE4QjtRQUM5Qiw0QkFBNEI7MkZBSXZCLHVCQUF1QjtrQkFuQm5DLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIsOEJBQThCO3dCQUM5Qiw0QkFBNEI7cUJBQy9CO29CQUNELE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5VGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nTW9kdWxlIH0gZnJvbSAnLi9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLm1vZHVsZSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nTW9kdWxlIH0gZnJvbSAnLi9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kaWFsb2cubW9kdWxlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05neE1hdEVudGl0eVRhYmxlQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICAgICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgICAgICBOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dNb2R1bGUsXG4gICAgICAgIE5neE1hdEVudGl0eUVkaXREaWFsb2dNb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtOZ3hNYXRFbnRpdHlUYWJsZUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0RW50aXR5VGFibGVNb2R1bGUge30iXX0=
@@ -1,4 +1,4 @@
1
- import { DateUtilities } from '../../classes/date.utilities';
1
+ import { DateUtilities } from '../../utilities/date.utilities';
2
2
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
3
3
  /**
4
4
  * The internal EntityArrayDecoratorConfig. Sets default values.
@@ -135,4 +135,4 @@ function getDefaultDuplicateErrorDialogData(data) {
135
135
  confirmationText: data.duplicatesErrorDialog?.confirmationText
136
136
  };
137
137
  }
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZGVjb3JhdG9yLWludGVybmFsLmRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2FycmF5L2FycmF5LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU03RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUkzRjs7R0FFRztBQUNILE1BQU0sT0FBTyxrQ0FDVCxTQUFRLCtCQUErQjtJQXVCdkMsWUFBWSxJQUE0QztRQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxxQ0FBcUMsQ0FBQztRQUM3RixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hE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QUksQ0FBQyxxQkFBcUIsR0FBRyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDSjtBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxrQ0FBa0MsQ0FBQyxJQUEwQjtJQUNsRSxPQUFPO1FBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLElBQUksV0FBVztRQUNyRCxJQUFJLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksSUFBSSxDQUFDLHVEQUF1RCxDQUFDO1FBQ25HLEtBQUssRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsS0FBSyxJQUFJLDZCQUE2QjtRQUN6RSxrQkFBa0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsa0JBQWtCO1FBQ2xFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxpQkFBaUI7UUFDaEUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLG1CQUFtQjtRQUNwRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsZ0JBQWdCO0tBQ2pFLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRm4gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IERhdGVVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2RhdGUudXRpbGl0aWVzJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBDcmVhdGVEaWFsb2dEYXRhLCBEaXNwbGF5Q29sdW1uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vYmFzZS9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vYmFzZS9kcm9wZG93bi12YWx1ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uL2Jhc2UvcHJvcGVydHktZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi4vZGF0ZS9kYXRlLWRlY29yYXRvci5kYXRhJztcbmltcG9ydCB7IEFycmF5RGVjb3JhdG9yQ29uZmlnLCBBdXRvY29tcGxldGVTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnLCBEYXRlQXJyYXlEZWNvcmF0b3JDb25maWcsIERhdGVSYW5nZUFycmF5RGVjb3JhdG9yQ29uZmlnLCBEYXRlVGltZUFycmF5RGVjb3JhdG9yQ29uZmlnLCBFbnRpdHlBcnJheURlY29yYXRvckNvbmZpZywgU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZyB9IGZyb20gJy4vYXJyYXktZGVjb3JhdG9yLmRhdGEnO1xuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBFbnRpdHlBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudGl0eUFycmF5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBpbXBsZW1lbnRzIEVudGl0eUFycmF5RGVjb3JhdG9yQ29uZmlnPEVudGl0eVR5cGU+IHtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLk9CSkVDVDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RHVwbGljYXRlczogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGR1cGxpY2F0ZXNFcnJvckRpYWxvZzogQ29uZmlybURpYWxvZ0RhdGE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBFbnRpdHlDbGFzczogRW50aXR5Q2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RW50aXR5VHlwZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZURpYWxvZ0RhdGE/OiBDcmVhdGVEaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY3JlYXRlSW5saW5lOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWlzc2luZ0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWRkQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlbW92ZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBFbnRpdHlBcnJheURlY29yYXRvckNvbmZpZzxFbnRpdHlUeXBlPikge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5jcmVhdGVJbmxpbmUgPSBkYXRhLmNyZWF0ZUlubGluZSA/PyB0cnVlO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEpO1xuICAgICAgICB0aGlzLkVudGl0eUNsYXNzID0gZGF0YS5FbnRpdHlDbGFzcztcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyA9IGRhdGEuZGlzcGxheUNvbHVtbnM7XG4gICAgICAgIHRoaXMuY3JlYXRlSW5saW5lID0gZGF0YS5jcmVhdGVJbmxpbmUgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5taXNzaW5nRXJyb3JNZXNzYWdlID0gZGF0YS5taXNzaW5nRXJyb3JNZXNzYWdlID8/ICdOZWVkcyB0byBjb250YWluIGF0IGxlYXN0IG9uZSB2YWx1ZSc7XG4gICAgICAgIHRoaXMuZGVmYXVsdFdpZHRocyA9IGRhdGEuZGVmYXVsdFdpZHRocyA/PyBbMTIsIDEyLCAxMl07XG4gICAgICAgIHRoaXMuYWRkQnV0dG9uTGFiZWwgPSBkYXRhLmFkZEJ1dHRvbkxhYmVsID8/ICdBZGQnO1xuICAgICAgICB0aGlzLnJlbW92ZUJ1dHRvbkxhYmVsID0gZGF0YS5yZW1vdmVCdXR0b25MYWJlbCA/PyAnUmVtb3ZlJztcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIERhdGVBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVBcnJheURlY29yYXRvckNvbmZpZ0ludGVybmFsIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBpbXBsZW1lbnRzIERhdGVBcnJheURlY29yYXRvckNvbmZpZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBpdGVtVHlwZTogRGVjb3JhdG9yVHlwZXMuREFURTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RHVwbGljYXRlczogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGR1cGxpY2F0ZXNFcnJvckRpYWxvZzogQ29uZmlybURpYWxvZ0RhdGE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxEYXRlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWRkQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlbW92ZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaXNzaW5nRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW4/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXg/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmaWx0ZXI/OiBEYXRlRmlsdGVyRm48RGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ+O1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0ZUFycmF5RGVjb3JhdG9yQ29uZmlnKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEpO1xuICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gZGF0YS5kaXNwbGF5Q29sdW1ucztcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFsxMiwgMTIsIDEyXTtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25MYWJlbCA9IGRhdGEuYWRkQnV0dG9uTGFiZWwgPz8gJ0FkZCc7XG4gICAgICAgIHRoaXMucmVtb3ZlQnV0dG9uTGFiZWwgPSBkYXRhLnJlbW92ZUJ1dHRvbkxhYmVsID8/ICdSZW1vdmUnO1xuICAgICAgICB0aGlzLm1pc3NpbmdFcnJvck1lc3NhZ2UgPSBkYXRhLm1pc3NpbmdFcnJvck1lc3NhZ2UgPz8gJ05lZWRzIHRvIGNvbnRhaW4gYXQgbGVhc3Qgb25lIHZhbHVlJztcbiAgICAgICAgdGhpcy5taW4gPSBkYXRhLm1pbjtcbiAgICAgICAgdGhpcy5tYXggPSBkYXRhLm1heDtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSBkYXRhLmZpbHRlcjtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIERhdGVUaW1lQXJyYXlEZWNvcmF0b3JDb25maWcuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlVGltZUFycmF5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIGltcGxlbWVudHMgRGF0ZVRpbWVBcnJheURlY29yYXRvckNvbmZpZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBpdGVtVHlwZTogRGVjb3JhdG9yVHlwZXMuREFURV9USU1FO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEdXBsaWNhdGVzOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHVwbGljYXRlc0Vycm9yRGlhbG9nOiBDb25maXJtRGlhbG9nRGF0YTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPERhdGU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhZGRCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcmVtb3ZlQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pc3NpbmdFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRpbWVzOiBEcm9wZG93blZhbHVlPFRpbWU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0aW1lRGlzcGxheU5hbWU6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pbkRhdGU/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhEYXRlPzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZmlsdGVyRGF0ZT86IERhdGVGaWx0ZXJGbjxEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5UaW1lPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4VGltZT86IChkYXRlPzogRGF0ZSkgPT4gVGltZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZpbHRlclRpbWU/OiAoKHRpbWU6IFRpbWUpID0+IGJvb2xlYW4pIHwgKCgpID0+IGJvb2xlYW4pO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogRGF0ZVRpbWVBcnJheURlY29yYXRvckNvbmZpZykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5pdGVtVHlwZSA9IGRhdGEuaXRlbVR5cGU7XG4gICAgICAgIHRoaXMuYWxsb3dEdXBsaWNhdGVzID0gZGF0YS5hbGxvd0R1cGxpY2F0ZXMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuZHVwbGljYXRlc0Vycm9yRGlhbG9nID0gZ2V0RGVmYXVsdER1cGxpY2F0ZUVycm9yRGlhbG9nRGF0YShkYXRhKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyA9IGRhdGEuZGlzcGxheUNvbHVtbnM7XG4gICAgICAgIHRoaXMuZGVmYXVsdFdpZHRocyA9IGRhdGEuZGVmYXVsdFdpZHRocyA/PyBbMTIsIDEyLCAxMl07XG4gICAgICAgIHRoaXMuYWRkQnV0dG9uTGFiZWwgPSBkYXRhLmFkZEJ1dHRvbkxhYmVsID8/ICdBZGQnO1xuICAgICAgICB0aGlzLnJlbW92ZUJ1dHRvbkxhYmVsID0gZGF0YS5yZW1vdmVCdXR0b25MYWJlbCA/PyAnUmVtb3ZlJztcbiAgICAgICAgdGhpcy5taXNzaW5nRXJyb3JNZXNzYWdlID0gZGF0YS5taXNzaW5nRXJyb3JNZXNzYWdlID8/ICdOZWVkcyB0byBjb250YWluIGF0IGxlYXN0IG9uZSB2YWx1ZSc7XG4gICAgICAgIHRoaXMudGltZXMgPSBkYXRhLnRpbWVzID8/IERhdGVVdGlsaXRpZXMuZ2V0RGVmYXVsdFRpbWVzKCk7XG4gICAgICAgIHRoaXMudGltZURpc3BsYXlOYW1lID0gZGF0YS50aW1lRGlzcGxheU5hbWUgPz8gJ1RpbWUnO1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBkYXRhLm1pbkRhdGU7XG4gICAgICAgIHRoaXMubWF4RGF0ZSA9IGRhdGEubWF4RGF0ZTtcbiAgICAgICAgdGhpcy5maWx0ZXJEYXRlID0gZGF0YS5maWx0ZXJEYXRlO1xuICAgICAgICB0aGlzLm1pblRpbWUgPSBkYXRhLm1pblRpbWU7XG4gICAgICAgIHRoaXMubWF4VGltZSA9IGRhdGEubWF4VGltZTtcbiAgICAgICAgdGhpcy5maWx0ZXJUaW1lID0gZGF0YS5maWx0ZXJUaW1lO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRGF0ZVJhbmdlQXJyYXlEZWNvcmF0b3JDb25maWcuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VBcnJheURlY29yYXRvckNvbmZpZ0ludGVybmFsIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBpbXBsZW1lbnRzIERhdGVSYW5nZUFycmF5RGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5EQVRFX1JBTkdFO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEdXBsaWNhdGVzOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHVwbGljYXRlc0Vycm9yRGlhbG9nOiBDb25maXJtRGlhbG9nRGF0YTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPERhdGVSYW5nZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFkZEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZW1vdmVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWlzc2luZ0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcGxhY2Vob2xkZXJTdGFydDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcGxhY2Vob2xkZXJFbmQ6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pblN0YXJ0PzogKGRhdGU/OiBEYXRlKSA9PiBEYXRlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4U3RhcnQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5FbmQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhFbmQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmaWx0ZXI/OiBEYXRlRmlsdGVyRm48RGF0ZT47XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRlUmFuZ2VBcnJheURlY29yYXRvckNvbmZpZykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5pdGVtVHlwZSA9IGRhdGEuaXRlbVR5cGU7XG4gICAgICAgIHRoaXMuYWxsb3dEdXBsaWNhdGVzID0gZGF0YS5hbGxvd0R1cGxpY2F0ZXMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuZHVwbGljYXRlc0Vycm9yRGlhbG9nID0gZ2V0RGVmYXVsdER1cGxpY2F0ZUVycm9yRGlhbG9nRGF0YShkYXRhKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyA9IGRhdGEuZGlzcGxheUNvbHVtbnM7XG4gICAgICAgIHRoaXMuZGVmYXVsdFdpZHRocyA9IGRhdGEuZGVmYXVsdFdpZHRocyA/PyBbMTIsIDEyLCAxMl07XG4gICAgICAgIHRoaXMuYWRkQnV0dG9uTGFiZWwgPSBkYXRhLmFkZEJ1dHRvbkxhYmVsID8/ICdBZGQnO1xuICAgICAgICB0aGlzLnJlbW92ZUJ1dHRvbkxhYmVsID0gZGF0YS5yZW1vdmVCdXR0b25MYWJlbCA/PyAnUmVtb3ZlJztcbiAgICAgICAgdGhpcy5taXNzaW5nRXJyb3JNZXNzYWdlID0gZGF0YS5taXNzaW5nRXJyb3JNZXNzYWdlID8/ICdOZWVkcyB0byBjb250YWluIGF0IGxlYXN0IG9uZSB2YWx1ZSc7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXJTdGFydCA9IGRhdGEucGxhY2Vob2xkZXJTdGFydCA/PyAnU3RhcnQnO1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyRW5kID0gZGF0YS5wbGFjZWhvbGRlckVuZCA/PyAnRW5kJztcbiAgICAgICAgdGhpcy5taW5TdGFydCA9IGRhdGEubWluU3RhcnQ7XG4gICAgICAgIHRoaXMubWF4U3RhcnQgPSBkYXRhLm1heFN0YXJ0O1xuICAgICAgICB0aGlzLm1pbkVuZCA9IGRhdGEubWluRW5kO1xuICAgICAgICB0aGlzLm1heEVuZCA9IGRhdGEubWF4RW5kO1xuICAgICAgICB0aGlzLmZpbHRlciA9IGRhdGEuZmlsdGVyO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBleHRlbmRzIFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgaW1wbGVtZW50cyBTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5TVFJJTkc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGVsZXRlSWNvbjogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcmVnZXg/OiBSZWdFeHA7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLmRlbGV0ZUljb24gPSBkYXRhLmRlbGV0ZUljb24gPz8gJ2ZhcyBmYS1jaXJjbGUtbWludXMnO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEpO1xuICAgICAgICB0aGlzLm1heExlbmd0aCA9IGRhdGEubWF4TGVuZ3RoO1xuICAgICAgICB0aGlzLm1pbkxlbmd0aCA9IGRhdGEubWluTGVuZ3RoO1xuICAgICAgICB0aGlzLnJlZ2V4ID0gZGF0YS5yZWdleDtcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFs2LCAxMiwgMTJdO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgQXV0b2NvbXBsZXRlU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWdJbnRlcm5hbFxuICAgIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBpbXBsZW1lbnRzIEF1dG9jb21wbGV0ZVN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYXV0b2NvbXBsZXRlVmFsdWVzOiBzdHJpbmdbXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5TVFJJTkdfQVVUT0NPTVBMRVRFO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEdXBsaWNhdGVzOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHVwbGljYXRlc0Vycm9yRGlhbG9nOiBDb25maXJtRGlhbG9nRGF0YTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRlbGV0ZUljb246IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1heExlbmd0aD86IG51bWJlcjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlZ2V4PzogUmVnRXhwO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogQXV0b2NvbXBsZXRlU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZykge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMgPSBkYXRhLmF1dG9jb21wbGV0ZVZhbHVlcztcbiAgICAgICAgdGhpcy5kZWxldGVJY29uID0gZGF0YS5kZWxldGVJY29uID8/ICdmYXMgZmEtY2lyY2xlLW1pbnVzJztcbiAgICAgICAgdGhpcy5pdGVtVHlwZSA9IGRhdGEuaXRlbVR5cGU7XG4gICAgICAgIHRoaXMuYWxsb3dEdXBsaWNhdGVzID0gZGF0YS5hbGxvd0R1cGxpY2F0ZXMgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMuZHVwbGljYXRlc0Vycm9yRGlhbG9nID0gZ2V0RGVmYXVsdER1cGxpY2F0ZUVycm9yRGlhbG9nRGF0YShkYXRhKTtcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPSBkYXRhLm1heExlbmd0aDtcbiAgICAgICAgdGhpcy5taW5MZW5ndGggPSBkYXRhLm1pbkxlbmd0aDtcbiAgICAgICAgdGhpcy5yZWdleCA9IGRhdGEucmVnZXg7XG4gICAgICAgIHRoaXMuZGVmYXVsdFdpZHRocyA9IGRhdGEuZGVmYXVsdFdpZHRocyA/PyBbNiwgMTIsIDEyXTtcbiAgICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZGVmYXVsdCBkaWFsb2cgZGF0YSBmb3IgdGhlIGVycm9yIGRpYWxvZyB0byBkaXNwbGF5IHdoZW4gdGhlIHVzZXIgdHJpZXMgdG8gYWRkIGEgZHVwbGljYXRlIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIEFycmF5IERlY29yYXRvciBkYXRhLlxuICogQHJldHVybnMgVGhlIGRpYWxvZyBkYXRhIHdpdGggc2V0IGRlZmF1bHQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGE6IEFycmF5RGVjb3JhdG9yQ29uZmlnKTogQ29uZmlybURpYWxvZ0RhdGEge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IGRhdGEuZHVwbGljYXRlc0Vycm9yRGlhbG9nPy50eXBlID8/ICdpbmZvLW9ubHknLFxuICAgICAgICB0ZXh0OiBkYXRhLmR1cGxpY2F0ZXNFcnJvckRpYWxvZz8udGV4dCA/PyBbJ0FkZGluZyBkdXBsaWNhdGUgZW50cmllcyB0byB0aGUgYXJyYXkgaXMgbm90IGFsbG93ZWQuJ10sXG4gICAgICAgIHRpdGxlOiBkYXRhLmR1cGxpY2F0ZXNFcnJvckRpYWxvZz8udGl0bGUgPz8gJ0Vycm9yIGFkZGluZyBkdXBsaWNhdGUgaXRlbScsXG4gICAgICAgIGNvbmZpcm1CdXR0b25MYWJlbDogZGF0YS5kdXBsaWNhdGVzRXJyb3JEaWFsb2c/LmNvbmZpcm1CdXR0b25MYWJlbCxcbiAgICAgICAgY2FuY2VsQnV0dG9uTGFiZWw6IGRhdGEuZHVwbGljYXRlc0Vycm9yRGlhbG9nPy5jYW5jZWxCdXR0b25MYWJlbCxcbiAgICAgICAgcmVxdWlyZUNvbmZpcm1hdGlvbjogZGF0YS5kdXBsaWNhdGVzRXJyb3JEaWFsb2c/LnJlcXVpcmVDb25maXJtYXRpb24sXG4gICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IGRhdGEuZHVwbGljYXRlc0Vycm9yRGlhbG9nPy5jb25maXJtYXRpb25UZXh0XG4gICAgfTtcbn0iXX0=
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZGVjb3JhdG9yLWludGVybmFsLmRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2FycmF5L2FycmF5LWRlY29yYXRvci1pbnRlcm5hbC5kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUcvRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUkzRjs7R0FFRztBQUNILE1BQU0sT0FBTyxrQ0FDVCxTQUFRLCtCQUErQjtJQXVCdkMsWUFBWSxJQUE0QztRQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO1FBQ3JELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxxQ0FBcUMsQ0FBQztRQUM3RixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hE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QUksQ0FBQyxxQkFBcUIsR0FBRyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDSjtBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxrQ0FBa0MsQ0FBQyxJQUEwQjtJQUNsRSxPQUFPO1FBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLElBQUksV0FBVztRQUNyRCxJQUFJLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksSUFBSSxDQUFDLHVEQUF1RCxDQUFDO1FBQ25HLEtBQUssRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsS0FBSyxJQUFJLDZCQUE2QjtRQUN6RSxrQkFBa0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsa0JBQWtCO1FBQ2xFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxpQkFBaUI7UUFDaEUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLG1CQUFtQjtRQUNwRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsZ0JBQWdCO0tBQ2pFLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRm4gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBDcmVhdGVEaWFsb2dEYXRhLCBEaXNwbGF5Q29sdW1uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhJztcbmltcG9ydCB7IERhdGVVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZGF0ZS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IERyb3Bkb3duVmFsdWUgfSBmcm9tICcuLi9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIH0gZnJvbSAnLi4vYmFzZS9wcm9wZXJ0eS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBEYXRlUmFuZ2UgfSBmcm9tICcuLi9kYXRlL2RhdGUtZGVjb3JhdG9yLmRhdGEnO1xuaW1wb3J0IHsgQXJyYXlEZWNvcmF0b3JDb25maWcsIEF1dG9jb21wbGV0ZVN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcsIERhdGVBcnJheURlY29yYXRvckNvbmZpZywgRGF0ZVJhbmdlQXJyYXlEZWNvcmF0b3JDb25maWcsIERhdGVUaW1lQXJyYXlEZWNvcmF0b3JDb25maWcsIEVudGl0eUFycmF5RGVjb3JhdG9yQ29uZmlnLCBTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnIH0gZnJvbSAnLi9hcnJheS1kZWNvcmF0b3IuZGF0YSc7XG5cbi8qKlxuICogVGhlIGludGVybmFsIEVudGl0eUFycmF5RGVjb3JhdG9yQ29uZmlnLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgRW50aXR5QXJyYXlEZWNvcmF0b3JDb25maWdJbnRlcm5hbDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIGltcGxlbWVudHMgRW50aXR5QXJyYXlEZWNvcmF0b3JDb25maWc8RW50aXR5VHlwZT4ge1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBpdGVtVHlwZTogRGVjb3JhdG9yVHlwZXMuT0JKRUNUO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEdXBsaWNhdGVzOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHVwbGljYXRlc0Vycm9yRGlhbG9nOiBDb25maXJtRGlhbG9nRGF0YTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eUNsYXNzOiBFbnRpdHlDbGFzc05ld2FibGU8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY3JlYXRlRGlhbG9nRGF0YT86IENyZWF0ZURpYWxvZ0RhdGE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGVJbmxpbmU6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaXNzaW5nRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhZGRCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcmVtb3ZlQnV0dG9uTGFiZWw6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IEVudGl0eUFycmF5RGVjb3JhdG9yQ29uZmlnPEVudGl0eVR5cGU+KSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLmNyZWF0ZUlubGluZSA9IGRhdGEuY3JlYXRlSW5saW5lID8/IHRydWU7XG4gICAgICAgIHRoaXMuaXRlbVR5cGUgPSBkYXRhLml0ZW1UeXBlO1xuICAgICAgICB0aGlzLmFsbG93RHVwbGljYXRlcyA9IGRhdGEuYWxsb3dEdXBsaWNhdGVzID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmR1cGxpY2F0ZXNFcnJvckRpYWxvZyA9IGdldERlZmF1bHREdXBsaWNhdGVFcnJvckRpYWxvZ0RhdGEoZGF0YSk7XG4gICAgICAgIHRoaXMuRW50aXR5Q2xhc3MgPSBkYXRhLkVudGl0eUNsYXNzO1xuICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gZGF0YS5kaXNwbGF5Q29sdW1ucztcbiAgICAgICAgdGhpcy5jcmVhdGVJbmxpbmUgPSBkYXRhLmNyZWF0ZUlubGluZSA/PyB0cnVlO1xuICAgICAgICB0aGlzLm1pc3NpbmdFcnJvck1lc3NhZ2UgPSBkYXRhLm1pc3NpbmdFcnJvck1lc3NhZ2UgPz8gJ05lZWRzIHRvIGNvbnRhaW4gYXQgbGVhc3Qgb25lIHZhbHVlJztcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFsxMiwgMTIsIDEyXTtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25MYWJlbCA9IGRhdGEuYWRkQnV0dG9uTGFiZWwgPz8gJ0FkZCc7XG4gICAgICAgIHRoaXMucmVtb3ZlQnV0dG9uTGFiZWwgPSBkYXRhLnJlbW92ZUJ1dHRvbkxhYmVsID8/ICdSZW1vdmUnO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRGF0ZUFycmF5RGVjb3JhdG9yQ29uZmlnLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgRGF0ZUFycmF5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIGltcGxlbWVudHMgRGF0ZUFycmF5RGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5EQVRFO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEdXBsaWNhdGVzOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZHVwbGljYXRlc0Vycm9yRGlhbG9nOiBDb25maXJtRGlhbG9nRGF0YTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPERhdGU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhZGRCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcmVtb3ZlQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pc3NpbmdFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pbj86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1heD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZpbHRlcj86IERhdGVGaWx0ZXJGbjxEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZD47XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRlQXJyYXlEZWNvcmF0b3JDb25maWcpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuaXRlbVR5cGUgPSBkYXRhLml0ZW1UeXBlO1xuICAgICAgICB0aGlzLmFsbG93RHVwbGljYXRlcyA9IGRhdGEuYWxsb3dEdXBsaWNhdGVzID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmR1cGxpY2F0ZXNFcnJvckRpYWxvZyA9IGdldERlZmF1bHREdXBsaWNhdGVFcnJvckRpYWxvZ0RhdGEoZGF0YSk7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMgPSBkYXRhLmRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB0aGlzLmRlZmF1bHRXaWR0aHMgPSBkYXRhLmRlZmF1bHRXaWR0aHMgPz8gWzEyLCAxMiwgMTJdO1xuICAgICAgICB0aGlzLmFkZEJ1dHRvbkxhYmVsID0gZGF0YS5hZGRCdXR0b25MYWJlbCA/PyAnQWRkJztcbiAgICAgICAgdGhpcy5yZW1vdmVCdXR0b25MYWJlbCA9IGRhdGEucmVtb3ZlQnV0dG9uTGFiZWwgPz8gJ1JlbW92ZSc7XG4gICAgICAgIHRoaXMubWlzc2luZ0Vycm9yTWVzc2FnZSA9IGRhdGEubWlzc2luZ0Vycm9yTWVzc2FnZSA/PyAnTmVlZHMgdG8gY29udGFpbiBhdCBsZWFzdCBvbmUgdmFsdWUnO1xuICAgICAgICB0aGlzLm1pbiA9IGRhdGEubWluO1xuICAgICAgICB0aGlzLm1heCA9IGRhdGEubWF4O1xuICAgICAgICB0aGlzLmZpbHRlciA9IGRhdGEuZmlsdGVyO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRGF0ZVRpbWVBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVUaW1lQXJyYXlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBleHRlbmRzIFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgaW1wbGVtZW50cyBEYXRlVGltZUFycmF5RGVjb3JhdG9yQ29uZmlnIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGl0ZW1UeXBlOiBEZWNvcmF0b3JUeXBlcy5EQVRFX1RJTUU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RGF0ZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFkZEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZW1vdmVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWlzc2luZ0Vycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGltZXM6IERyb3Bkb3duVmFsdWU8VGltZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRpbWVEaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWluRGF0ZT86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1heERhdGU/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBmaWx0ZXJEYXRlPzogRGF0ZUZpbHRlckZuPERhdGUgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pblRpbWU/OiAoZGF0ZT86IERhdGUpID0+IFRpbWU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhUaW1lPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZmlsdGVyVGltZT86ICgodGltZTogVGltZSkgPT4gYm9vbGVhbikgfCAoKCkgPT4gYm9vbGVhbik7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBEYXRlVGltZUFycmF5RGVjb3JhdG9yQ29uZmlnKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEpO1xuICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gZGF0YS5kaXNwbGF5Q29sdW1ucztcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFsxMiwgMTIsIDEyXTtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25MYWJlbCA9IGRhdGEuYWRkQnV0dG9uTGFiZWwgPz8gJ0FkZCc7XG4gICAgICAgIHRoaXMucmVtb3ZlQnV0dG9uTGFiZWwgPSBkYXRhLnJlbW92ZUJ1dHRvbkxhYmVsID8/ICdSZW1vdmUnO1xuICAgICAgICB0aGlzLm1pc3NpbmdFcnJvck1lc3NhZ2UgPSBkYXRhLm1pc3NpbmdFcnJvck1lc3NhZ2UgPz8gJ05lZWRzIHRvIGNvbnRhaW4gYXQgbGVhc3Qgb25lIHZhbHVlJztcbiAgICAgICAgdGhpcy50aW1lcyA9IGRhdGEudGltZXMgPz8gRGF0ZVV0aWxpdGllcy5nZXREZWZhdWx0VGltZXMoKTtcbiAgICAgICAgdGhpcy50aW1lRGlzcGxheU5hbWUgPSBkYXRhLnRpbWVEaXNwbGF5TmFtZSA/PyAnVGltZSc7XG4gICAgICAgIHRoaXMubWluRGF0ZSA9IGRhdGEubWluRGF0ZTtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gZGF0YS5tYXhEYXRlO1xuICAgICAgICB0aGlzLmZpbHRlckRhdGUgPSBkYXRhLmZpbHRlckRhdGU7XG4gICAgICAgIHRoaXMubWluVGltZSA9IGRhdGEubWluVGltZTtcbiAgICAgICAgdGhpcy5tYXhUaW1lID0gZGF0YS5tYXhUaW1lO1xuICAgICAgICB0aGlzLmZpbHRlclRpbWUgPSBkYXRhLmZpbHRlclRpbWU7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBEYXRlUmFuZ2VBcnJheURlY29yYXRvckNvbmZpZy4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVSYW5nZUFycmF5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIGltcGxlbWVudHMgRGF0ZVJhbmdlQXJyYXlEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLkRBVEVfUkFOR0U7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RGF0ZVJhbmdlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWRkQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHJlbW92ZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaXNzaW5nRXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwbGFjZWhvbGRlclN0YXJ0OiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwbGFjZWhvbGRlckVuZDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWluU3RhcnQ/OiAoZGF0ZT86IERhdGUpID0+IERhdGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhTdGFydD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1pbkVuZD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG1heEVuZD86IChkYXRlPzogRGF0ZSkgPT4gRGF0ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGZpbHRlcj86IERhdGVGaWx0ZXJGbjxEYXRlPjtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IERhdGVSYW5nZUFycmF5RGVjb3JhdG9yQ29uZmlnKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEpO1xuICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gZGF0YS5kaXNwbGF5Q29sdW1ucztcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFsxMiwgMTIsIDEyXTtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25MYWJlbCA9IGRhdGEuYWRkQnV0dG9uTGFiZWwgPz8gJ0FkZCc7XG4gICAgICAgIHRoaXMucmVtb3ZlQnV0dG9uTGFiZWwgPSBkYXRhLnJlbW92ZUJ1dHRvbkxhYmVsID8/ICdSZW1vdmUnO1xuICAgICAgICB0aGlzLm1pc3NpbmdFcnJvck1lc3NhZ2UgPSBkYXRhLm1pc3NpbmdFcnJvck1lc3NhZ2UgPz8gJ05lZWRzIHRvIGNvbnRhaW4gYXQgbGVhc3Qgb25lIHZhbHVlJztcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlclN0YXJ0ID0gZGF0YS5wbGFjZWhvbGRlclN0YXJ0ID8/ICdTdGFydCc7XG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXJFbmQgPSBkYXRhLnBsYWNlaG9sZGVyRW5kID8/ICdFbmQnO1xuICAgICAgICB0aGlzLm1pblN0YXJ0ID0gZGF0YS5taW5TdGFydDtcbiAgICAgICAgdGhpcy5tYXhTdGFydCA9IGRhdGEubWF4U3RhcnQ7XG4gICAgICAgIHRoaXMubWluRW5kID0gZGF0YS5taW5FbmQ7XG4gICAgICAgIHRoaXMubWF4RW5kID0gZGF0YS5tYXhFbmQ7XG4gICAgICAgIHRoaXMuZmlsdGVyID0gZGF0YS5maWx0ZXI7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZ0ludGVybmFsIGV4dGVuZHMgUHJvcGVydHlEZWNvcmF0b3JDb25maWdJbnRlcm5hbCBpbXBsZW1lbnRzIFN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLlNUUklORztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RHVwbGljYXRlczogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGR1cGxpY2F0ZXNFcnJvckRpYWxvZzogQ29uZmlybURpYWxvZ0RhdGE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkZWxldGVJY29uOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZWdleD86IFJlZ0V4cDtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFN0cmluZ0NoaXBzQXJyYXlEZWNvcmF0b3JDb25maWcpIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgICAgIHRoaXMuZGVsZXRlSWNvbiA9IGRhdGEuZGVsZXRlSWNvbiA/PyAnZmFzIGZhLWNpcmNsZS1taW51cyc7XG4gICAgICAgIHRoaXMuaXRlbVR5cGUgPSBkYXRhLml0ZW1UeXBlO1xuICAgICAgICB0aGlzLmFsbG93RHVwbGljYXRlcyA9IGRhdGEuYWxsb3dEdXBsaWNhdGVzID8/IGZhbHNlO1xuICAgICAgICB0aGlzLmR1cGxpY2F0ZXNFcnJvckRpYWxvZyA9IGdldERlZmF1bHREdXBsaWNhdGVFcnJvckRpYWxvZ0RhdGEoZGF0YSk7XG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID0gZGF0YS5tYXhMZW5ndGg7XG4gICAgICAgIHRoaXMubWluTGVuZ3RoID0gZGF0YS5taW5MZW5ndGg7XG4gICAgICAgIHRoaXMucmVnZXggPSBkYXRhLnJlZ2V4O1xuICAgICAgICB0aGlzLmRlZmF1bHRXaWR0aHMgPSBkYXRhLmRlZmF1bHRXaWR0aHMgPz8gWzYsIDEyLCAxMl07XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBBdXRvY29tcGxldGVTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZ0ludGVybmFsXG4gICAgZXh0ZW5kcyBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsIGltcGxlbWVudHMgQXV0b2NvbXBsZXRlU3RyaW5nQ2hpcHNBcnJheURlY29yYXRvckNvbmZpZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhdXRvY29tcGxldGVWYWx1ZXM6IHN0cmluZ1tdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaXRlbVR5cGU6IERlY29yYXRvclR5cGVzLlNUUklOR19BVVRPQ09NUExFVEU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0R1cGxpY2F0ZXM6IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkdXBsaWNhdGVzRXJyb3JEaWFsb2c6IENvbmZpcm1EaWFsb2dEYXRhO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGVsZXRlSWNvbjogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcmVnZXg/OiBSZWdFeHA7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBBdXRvY29tcGxldGVTdHJpbmdDaGlwc0FycmF5RGVjb3JhdG9yQ29uZmlnKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVZhbHVlcyA9IGRhdGEuYXV0b2NvbXBsZXRlVmFsdWVzO1xuICAgICAgICB0aGlzLmRlbGV0ZUljb24gPSBkYXRhLmRlbGV0ZUljb24gPz8gJ2ZhcyBmYS1jaXJjbGUtbWludXMnO1xuICAgICAgICB0aGlzLml0ZW1UeXBlID0gZGF0YS5pdGVtVHlwZTtcbiAgICAgICAgdGhpcy5hbGxvd0R1cGxpY2F0ZXMgPSBkYXRhLmFsbG93RHVwbGljYXRlcyA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5kdXBsaWNhdGVzRXJyb3JEaWFsb2cgPSBnZXREZWZhdWx0RHVwbGljYXRlRXJyb3JEaWFsb2dEYXRhKGRhdGEpO1xuICAgICAgICB0aGlzLm1heExlbmd0aCA9IGRhdGEubWF4TGVuZ3RoO1xuICAgICAgICB0aGlzLm1pbkxlbmd0aCA9IGRhdGEubWluTGVuZ3RoO1xuICAgICAgICB0aGlzLnJlZ2V4ID0gZGF0YS5yZWdleDtcbiAgICAgICAgdGhpcy5kZWZhdWx0V2lkdGhzID0gZGF0YS5kZWZhdWx0V2lkdGhzID8/IFs2LCAxMiwgMTJdO1xuICAgIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBkZWZhdWx0IGRpYWxvZyBkYXRhIGZvciB0aGUgZXJyb3IgZGlhbG9nIHRvIGRpc3BsYXkgd2hlbiB0aGUgdXNlciB0cmllcyB0byBhZGQgYSBkdXBsaWNhdGUgdmFsdWUuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBUaGUgQXJyYXkgRGVjb3JhdG9yIGRhdGEuXG4gKiBAcmV0dXJucyBUaGUgZGlhbG9nIGRhdGEgd2l0aCBzZXQgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIGdldERlZmF1bHREdXBsaWNhdGVFcnJvckRpYWxvZ0RhdGEoZGF0YTogQXJyYXlEZWNvcmF0b3JDb25maWcpOiBDb25maXJtRGlhbG9nRGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogZGF0YS5kdXBsaWNhdGVzRXJyb3JEaWFsb2c/LnR5cGUgPz8gJ2luZm8tb25seScsXG4gICAgICAgIHRleHQ6IGRhdGEuZHVwbGljYXRlc0Vycm9yRGlhbG9nPy50ZXh0ID8/IFsnQWRkaW5nIGR1cGxpY2F0ZSBlbnRyaWVzIHRvIHRoZSBhcnJheSBpcyBub3QgYWxsb3dlZC4nXSxcbiAgICAgICAgdGl0bGU6IGRhdGEuZHVwbGljYXRlc0Vycm9yRGlhbG9nPy50aXRsZSA/PyAnRXJyb3IgYWRkaW5nIGR1cGxpY2F0ZSBpdGVtJyxcbiAgICAgICAgY29uZmlybUJ1dHRvbkxhYmVsOiBkYXRhLmR1cGxpY2F0ZXNFcnJvckRpYWxvZz8uY29uZmlybUJ1dHRvbkxhYmVsLFxuICAgICAgICBjYW5jZWxCdXR0b25MYWJlbDogZGF0YS5kdXBsaWNhdGVzRXJyb3JEaWFsb2c/LmNhbmNlbEJ1dHRvbkxhYmVsLFxuICAgICAgICByZXF1aXJlQ29uZmlybWF0aW9uOiBkYXRhLmR1cGxpY2F0ZXNFcnJvckRpYWxvZz8ucmVxdWlyZUNvbmZpcm1hdGlvbixcbiAgICAgICAgY29uZmlybWF0aW9uVGV4dDogZGF0YS5kdXBsaWNhdGVzRXJyb3JEaWFsb2c/LmNvbmZpcm1hdGlvblRleHRcbiAgICB9O1xufSJdfQ==
@@ -1,5 +1,5 @@
1
- import { EntityUtilities } from '../../classes/entity.utilities';
2
1
  import { ReflectUtilities } from '../../encapsulation/reflect.utilities';
2
+ import { EntityUtilities } from '../../utilities/entity.utilities';
3
3
  /**
4
4
  * The base decorator for setting metadata on properties.
5
5
  *
@@ -16,4 +16,4 @@ export function baseProperty(metadata, type, metadataKeysToReset) {
16
16
  ReflectUtilities.defineMetadata(EntityUtilities.METADATA_KEYS_TO_RESET_KEY, metadataKeysToReset, target, propertyKey);
17
17
  };
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm9wZXJ0eS5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2Jhc2UvYmFzZS1wcm9wZXJ0eS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3pFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUcxQixRQUE4QyxFQUFFLElBQU8sRUFBRSxtQkFBOEI7SUFDckYsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQjtRQUNoRCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBMkIsQ0FBQyxDQUFDO1FBQzNGLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUEyQixDQUFDLENBQUM7UUFDbkYsbUNBQW1DO1FBQ25DLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsMEJBQTBCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFdBQTJCLENBQUMsQ0FBQztJQUMxSSxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IFJlZmxlY3RVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi9lbmNhcHN1bGF0aW9uL3JlZmxlY3QudXRpbGl0aWVzJztcbmltcG9ydCB7IERlY29yYXRvclR5cGUsIERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi9kZWNvcmF0b3ItdHlwZXMuZW51bSc7XG5cbi8qKlxuICogVGhlIGJhc2UgZGVjb3JhdG9yIGZvciBzZXR0aW5nIG1ldGFkYXRhIG9uIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIG1ldGFkYXRhIC0gVGhlIG1ldGFkYXRhIHRvIGRlZmluZS5cbiAqIEBwYXJhbSB0eXBlIC0gVGhlIHR5cGUgb2YgbWV0YWRhdGEuXG4gKiBAcGFyYW0gbWV0YWRhdGFLZXlzVG9SZXNldCAtIEFueSBtZXRhZGF0YSBrZXlzIHdoaWNoIHZhbHVlcyBzaG91bGQgYmUgc2V0IHRvIHVuZGVmaW5lZCBvbiByZXNldC5cbiAqIEByZXR1cm5zIFRoZSBtZXRob2QgdGhhdCBzZXRzIHRoZSBtZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eTxcbiAgICBUIGV4dGVuZHMgRGVjb3JhdG9yVHlwZXMsXG4gICAgQ3VzdG9tTWV0YWRhdGFUeXBlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4obWV0YWRhdGE6IERlY29yYXRvclR5cGU8VCwgQ3VzdG9tTWV0YWRhdGFUeXBlPiwgdHlwZTogVCwgbWV0YWRhdGFLZXlzVG9SZXNldD86IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IG9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykge1xuICAgICAgICBSZWZsZWN0VXRpbGl0aWVzLmRlZmluZU1ldGFkYXRhKCdtZXRhZGF0YScsIG1ldGFkYXRhLCB0YXJnZXQsIHByb3BlcnR5S2V5IGFzIGtleW9mIG9iamVjdCk7XG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoJ3R5cGUnLCB0eXBlLCB0YXJnZXQsIHByb3BlcnR5S2V5IGFzIGtleW9mIG9iamVjdCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLk1FVEFEQVRBX0tFWVNfVE9fUkVTRVRfS0VZLCBtZXRhZGF0YUtleXNUb1Jlc2V0LCB0YXJnZXQsIHByb3BlcnR5S2V5IGFzIGtleW9mIG9iamVjdCk7XG4gICAgfTtcbn0iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm9wZXJ0eS5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9kZWNvcmF0b3JzL2Jhc2UvYmFzZS1wcm9wZXJ0eS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR25FOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUcxQixRQUE4QyxFQUFFLElBQU8sRUFBRSxtQkFBOEI7SUFDckYsT0FBTyxVQUFVLE1BQWMsRUFBRSxXQUFtQjtRQUNoRCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBMkIsQ0FBQyxDQUFDO1FBQzNGLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUEyQixDQUFDLENBQUM7UUFDbkYsbUNBQW1DO1FBQ25DLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsMEJBQTBCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLFdBQTJCLENBQUMsQ0FBQztJQUMxSSxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVmbGVjdFV0aWxpdGllcyB9IGZyb20gJy4uLy4uL2VuY2Fwc3VsYXRpb24vcmVmbGVjdC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZSwgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuL2RlY29yYXRvci10eXBlcy5lbnVtJztcblxuLyoqXG4gKiBUaGUgYmFzZSBkZWNvcmF0b3IgZm9yIHNldHRpbmcgbWV0YWRhdGEgb24gcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gbWV0YWRhdGEgLSBUaGUgbWV0YWRhdGEgdG8gZGVmaW5lLlxuICogQHBhcmFtIHR5cGUgLSBUaGUgdHlwZSBvZiBtZXRhZGF0YS5cbiAqIEBwYXJhbSBtZXRhZGF0YUtleXNUb1Jlc2V0IC0gQW55IG1ldGFkYXRhIGtleXMgd2hpY2ggdmFsdWVzIHNob3VsZCBiZSBzZXQgdG8gdW5kZWZpbmVkIG9uIHJlc2V0LlxuICogQHJldHVybnMgVGhlIG1ldGhvZCB0aGF0IHNldHMgdGhlIG1ldGFkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZVByb3BlcnR5PFxuICAgIFQgZXh0ZW5kcyBEZWNvcmF0b3JUeXBlcyxcbiAgICBDdXN0b21NZXRhZGF0YVR5cGUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuPihtZXRhZGF0YTogRGVjb3JhdG9yVHlwZTxULCBDdXN0b21NZXRhZGF0YVR5cGU+LCB0eXBlOiBULCBtZXRhZGF0YUtleXNUb1Jlc2V0Pzogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSB7XG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoJ21ldGFkYXRhJywgbWV0YWRhdGEsIHRhcmdldCwgcHJvcGVydHlLZXkgYXMga2V5b2Ygb2JqZWN0KTtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YSgndHlwZScsIHR5cGUsIHRhcmdldCwgcHJvcGVydHlLZXkgYXMga2V5b2Ygb2JqZWN0KTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuTUVUQURBVEFfS0VZU19UT19SRVNFVF9LRVksIG1ldGFkYXRhS2V5c1RvUmVzZXQsIHRhcmdldCwgcHJvcGVydHlLZXkgYXMga2V5b2Ygb2JqZWN0KTtcbiAgICB9O1xufSJdfQ==