ngx-material-entity 1.0.0 → 1.1.0

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 (112) hide show
  1. package/README.md +11 -5
  2. package/capsulation/jszip.utilities.d.ts +12 -0
  3. package/capsulation/reflect.utilities.d.ts +1 -1
  4. package/classes/date.utilities.d.ts +3 -3
  5. package/classes/entity.model.d.ts +1 -1
  6. package/classes/entity.utilities.d.ts +26 -5
  7. package/classes/file.utilities.d.ts +13 -0
  8. package/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.d.ts +1 -2
  9. package/components/input/array/array-string-chips-input/array-string-chips-input.component.d.ts +1 -3
  10. package/components/input/array/array-table.class.d.ts +5 -6
  11. package/components/input/base-input.component.d.ts +29 -3
  12. package/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.d.ts +1 -1
  13. package/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.d.ts +1 -1
  14. package/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.d.ts +1 -1
  15. package/components/input/custom/custom.component.d.ts +3 -3
  16. package/components/input/date/date-input/date-input.component.d.ts +1 -3
  17. package/components/input/date/date-range-input/date-range-input.component.d.ts +2 -3
  18. package/components/input/date/date-time-input/date-time-input.component.d.ts +2 -3
  19. package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
  20. package/components/input/file/file-image-input/file-image-input.component.d.ts +1 -1
  21. package/components/input/file/file-input/file-input.component.d.ts +8 -7
  22. package/components/input/input.component.d.ts +17 -5
  23. package/components/input/input.module.d.ts +38 -34
  24. package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +1 -1
  25. package/components/input/number/number-input/number-input.component.d.ts +1 -1
  26. package/components/input/number/number-slider-input/number-slider-input.component.d.ts +9 -0
  27. package/components/input/string/string-autocomplete-input/string-autocomplete-input.component.d.ts +2 -2
  28. package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +1 -1
  29. package/components/input/string/string-input/string-input.component.d.ts +1 -1
  30. package/components/input/string/string-password-input/string-password-input.component.d.ts +15 -0
  31. package/components/input/string/string-textbox-input/string-textbox-input.component.d.ts +1 -1
  32. package/components/table/create-dialog/create-entity-dialog.component.d.ts +2 -2
  33. package/components/table/create-dialog/create-entity-dialog.module.d.ts +2 -1
  34. package/components/table/edit-dialog/edit-entity-dialog-data.d.ts +4 -0
  35. package/components/table/edit-dialog/edit-entity-dialog.builder.d.ts +2 -1
  36. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +8 -4
  37. package/components/table/edit-dialog/edit-entity-dialog.module.d.ts +3 -2
  38. package/components/table/table-data.builder.d.ts +4 -3
  39. package/components/table/table-data.d.ts +12 -4
  40. package/decorators/base/decorator-types.enum.d.ts +5 -3
  41. package/decorators/base/property-decorator-internal.data.d.ts +2 -0
  42. package/decorators/base/property-decorator.data.d.ts +15 -0
  43. package/decorators/custom/custom-decorator.data.d.ts +4 -0
  44. package/decorators/file/file-decorator-internal.data.d.ts +2 -0
  45. package/decorators/file/file-decorator.data.d.ts +9 -1
  46. package/decorators/number/number-decorator-internal.data.d.ts +20 -1
  47. package/decorators/number/number-decorator.data.d.ts +27 -1
  48. package/decorators/number/number.decorator.d.ts +2 -2
  49. package/decorators/string/string-decorator-internal.data.d.ts +14 -1
  50. package/decorators/string/string-decorator.data.d.ts +37 -1
  51. package/decorators/string/string.decorator.d.ts +2 -2
  52. package/esm2020/capsulation/jszip.utilities.mjs +18 -0
  53. package/esm2020/capsulation/reflect.utilities.mjs +1 -1
  54. package/esm2020/classes/date.utilities.mjs +3 -3
  55. package/esm2020/classes/entity.model.mjs +1 -1
  56. package/esm2020/classes/entity.utilities.mjs +108 -31
  57. package/esm2020/classes/file.utilities.mjs +42 -2
  58. package/esm2020/components/confirm-dialog/confirm-dialog.component.mjs +2 -2
  59. package/esm2020/components/input/array/array-date-input/array-date-input.component.mjs +6 -6
  60. package/esm2020/components/input/array/array-date-range-input/array-date-range-input.component.mjs +5 -5
  61. package/esm2020/components/input/array/array-date-time-input/array-date-time-input.component.mjs +6 -6
  62. package/esm2020/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +9 -25
  63. package/esm2020/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +9 -28
  64. package/esm2020/components/input/array/array-table.class.mjs +10 -13
  65. package/esm2020/components/input/base-input.component.mjs +28 -2
  66. package/esm2020/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +4 -6
  67. package/esm2020/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +3 -3
  68. package/esm2020/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +4 -6
  69. package/esm2020/components/input/custom/custom.component.mjs +2 -1
  70. package/esm2020/components/input/date/date-input/date-input.component.mjs +3 -4
  71. package/esm2020/components/input/date/date-range-input/date-range-input.component.mjs +6 -6
  72. package/esm2020/components/input/date/date-time-input/date-time-input.component.mjs +13 -13
  73. package/esm2020/components/input/file/file-default-input/file-default-input.component.mjs +4 -5
  74. package/esm2020/components/input/file/file-image-input/file-image-input.component.mjs +21 -16
  75. package/esm2020/components/input/file/file-input/file-input.component.mjs +58 -31
  76. package/esm2020/components/input/input.component.mjs +36 -30
  77. package/esm2020/components/input/input.module.mjs +18 -4
  78. package/esm2020/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +3 -3
  79. package/esm2020/components/input/number/number-input/number-input.component.mjs +3 -3
  80. package/esm2020/components/input/number/number-slider-input/number-slider-input.component.mjs +17 -0
  81. package/esm2020/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +5 -7
  82. package/esm2020/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +3 -3
  83. package/esm2020/components/input/string/string-input/string-input.component.mjs +3 -3
  84. package/esm2020/components/input/string/string-password-input/string-password-input.component.mjs +36 -0
  85. package/esm2020/components/input/string/string-textbox-input/string-textbox-input.component.mjs +3 -3
  86. package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +9 -8
  87. package/esm2020/components/table/create-dialog/create-entity-dialog.module.mjs +8 -4
  88. package/esm2020/components/table/edit-dialog/edit-entity-dialog-data.mjs +1 -1
  89. package/esm2020/components/table/edit-dialog/edit-entity-dialog.builder.mjs +4 -3
  90. package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +16 -12
  91. package/esm2020/components/table/edit-dialog/edit-entity-dialog.module.mjs +5 -1
  92. package/esm2020/components/table/table-data.builder.mjs +13 -10
  93. package/esm2020/components/table/table-data.mjs +1 -1
  94. package/esm2020/components/table/table.component.mjs +16 -14
  95. package/esm2020/decorators/base/base-property.decorator.mjs +1 -1
  96. package/esm2020/decorators/base/decorator-types.enum.mjs +3 -1
  97. package/esm2020/decorators/base/property-decorator-internal.data.mjs +6 -1
  98. package/esm2020/decorators/base/property-decorator.data.mjs +1 -1
  99. package/esm2020/decorators/custom/custom-decorator.data.mjs +1 -1
  100. package/esm2020/decorators/file/file-decorator-internal.data.mjs +3 -1
  101. package/esm2020/decorators/file/file-decorator.data.mjs +1 -1
  102. package/esm2020/decorators/number/number-decorator-internal.data.mjs +24 -1
  103. package/esm2020/decorators/number/number-decorator.data.mjs +1 -1
  104. package/esm2020/decorators/number/number.decorator.mjs +9 -7
  105. package/esm2020/decorators/string/string-decorator-internal.data.mjs +16 -1
  106. package/esm2020/decorators/string/string-decorator.data.mjs +1 -1
  107. package/esm2020/decorators/string/string.decorator.mjs +13 -13
  108. package/fesm2015/ngx-material-entity.mjs +567 -287
  109. package/fesm2015/ngx-material-entity.mjs.map +1 -1
  110. package/fesm2020/ngx-material-entity.mjs +536 -270
  111. package/fesm2020/ngx-material-entity.mjs.map +1 -1
  112. package/package.json +2 -1
@@ -6,10 +6,11 @@ import { ConfirmDialogDataBuilder } from '../../confirm-dialog/confirm-dialog-da
6
6
  import { CreateEntityDialogDataBuilder } from './create-entity-dialog-data.builder';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/material/dialog";
9
- import * as i2 from "../../input/input.component";
10
- import * as i3 from "@angular/material/button";
11
- import * as i4 from "@angular/forms";
12
- import * as i5 from "@angular/common";
9
+ import * as i2 from "@angular/material/tabs";
10
+ import * as i3 from "../../input/input.component";
11
+ import * as i4 from "@angular/material/button";
12
+ import * as i5 from "@angular/forms";
13
+ import * as i6 from "@angular/common";
13
14
  /**
14
15
  * The default dialog used to create new entities based on the configuration passed in the MAT_DIALOG_DATA "inputData".
15
16
  * Used by the ngx-mat-entity-table.
@@ -28,7 +29,7 @@ export class NgxMatEntityCreateDialogComponent {
28
29
  ngOnInit() {
29
30
  this.data = new CreateEntityDialogDataBuilder(this.inputData).getResult();
30
31
  this.dialogRef.disableClose = true;
31
- this.entityRows = EntityUtilities.getEntityRows(this.data.entity, true);
32
+ this.entityTabs = EntityUtilities.getEntityTabs(this.data.entity, true);
32
33
  this.entityService = this.injector.get(this.data.EntityServiceClass);
33
34
  }
34
35
  /**
@@ -73,12 +74,12 @@ export class NgxMatEntityCreateDialogComponent {
73
74
  }
74
75
  }
75
76
  NgxMatEntityCreateDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityCreateDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i0.Injector }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
76
- NgxMatEntityCreateDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NgxMatEntityCreateDialogComponent, selector: "ngx-mat-entity-create-dialog", ngImport: i0, template: "<h2 mat-dialog-title>{{data.createDialogData.title}}</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\">\n <div class=\"row\" *ngFor=\"let row of entityRows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForCreate]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkIsEntityValid()\"\n >\n </ngx-mat-entity-input>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"create()\" [disabled]=\"!isEntityValid\">\n {{data.createDialogData.createButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.createDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;justify-content:space-between}\n"], components: [{ type: i2.NgxMatEntityInputComponent, selector: "ngx-mat-entity-input", inputs: ["entity", "propertyKey", "getValidationErrorMessage", "hideOmitForCreate", "hideOmitForEdit"], outputs: ["inputChangeEvent"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
77
+ NgxMatEntityCreateDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NgxMatEntityCreateDialogComponent, selector: "ngx-mat-entity-create-dialog", ngImport: i0, template: "<h2 mat-dialog-title>{{data.createDialogData.title}}</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\">\n <mat-tab-group *ngIf=\"entityTabs.length > 1\" preserveContent>\n <mat-tab *ngFor=\"let tab of entityTabs\" [label]=\"tab.tabName\">\n <div class=\"row\" *ngFor=\"let row of tab.rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForCreate]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkIsEntityValid()\"\n >\n </ngx-mat-entity-input>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <div *ngIf=\"entityTabs.length <= 1\">\n <div class=\"row\" *ngFor=\"let row of entityTabs[0].rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForCreate]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkIsEntityValid()\"\n >\n </ngx-mat-entity-input>\n </div>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"create()\" [disabled]=\"!isEntityValid\">\n {{data.createDialogData.createButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.createDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{justify-content:space-between}\n"], components: [{ type: i2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i3.NgxMatEntityInputComponent, selector: "ngx-mat-entity-input", inputs: ["entity", "propertyKey", "getValidationErrorMessage", "hideOmitForCreate", "hideOmitForEdit", "isReadOnly"], outputs: ["inputChangeEvent"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
77
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityCreateDialogComponent, decorators: [{
78
79
  type: Component,
79
- args: [{ selector: 'ngx-mat-entity-create-dialog', template: "<h2 mat-dialog-title>{{data.createDialogData.title}}</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\">\n <div class=\"row\" *ngFor=\"let row of entityRows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForCreate]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkIsEntityValid()\"\n >\n </ngx-mat-entity-input>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"create()\" [disabled]=\"!isEntityValid\">\n {{data.createDialogData.createButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.createDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;justify-content:space-between}\n"] }]
80
+ args: [{ selector: 'ngx-mat-entity-create-dialog', template: "<h2 mat-dialog-title>{{data.createDialogData.title}}</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\">\n <mat-tab-group *ngIf=\"entityTabs.length > 1\" preserveContent>\n <mat-tab *ngFor=\"let tab of entityTabs\" [label]=\"tab.tabName\">\n <div class=\"row\" *ngFor=\"let row of tab.rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForCreate]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkIsEntityValid()\"\n >\n </ngx-mat-entity-input>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <div *ngIf=\"entityTabs.length <= 1\">\n <div class=\"row\" *ngFor=\"let row of entityTabs[0].rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForCreate]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkIsEntityValid()\"\n >\n </ngx-mat-entity-input>\n </div>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"create()\" [disabled]=\"!isEntityValid\">\n {{data.createDialogData.createButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.createDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{justify-content:space-between}\n"] }]
80
81
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
81
82
  type: Inject,
82
83
  args: [MAT_DIALOG_DATA]
83
84
  }] }, { type: i1.MatDialogRef }, { type: i0.Injector }, { type: i1.MatDialog }]; } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWVudGl0eS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFcEYsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSxrREFBa0QsQ0FBQztBQUN2SCxPQUFPLEVBQUUsNkJBQTZCLEVBQWtDLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7QUFJcEg7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8saUNBQWlDO0lBVzFDLFlBRXFCLFNBQTZDLEVBQ3ZELFNBQXNFLEVBQzVELFFBQWtCLEVBQ2xCLE1BQWlCO1FBSGpCLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQ3ZELGNBQVMsR0FBVCxTQUFTLENBQTZEO1FBQzVELGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQWZ0QyxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQVFsQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztJQVE1QixDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDMUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQThCLENBQUM7SUFDdEcsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLEVBQUU7WUFDekQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLE9BQU87U0FDVjtRQUNELE1BQU0sVUFBVSxHQUE4QixJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUM7YUFDekgsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7YUFDbEUsV0FBVyxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQzthQUMzQyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQzthQUM5QixTQUFTLEVBQUUsQ0FBQztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRTtZQUNuRSxJQUFJLEVBQUUsVUFBVTtZQUNoQixTQUFTLEVBQUUsS0FBSztZQUNoQixZQUFZLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN4QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNPLGFBQWE7UUFDakIsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7K0hBbkVRLGlDQUFpQyxrQkFZOUIsZUFBZTttSEFabEIsaUNBQWlDLG9FQ3JCOUMsNmtDQTBCQTs0RkRMYSxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0ksOEJBQThCOzswQkFnQm5DLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudGl0eVJvdywgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi4vLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IENyZWF0ZUVudGl0eURpYWxvZ0RhdGFCdWlsZGVyLCBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2NyZWF0ZS1lbnRpdHktZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhIH0gZnJvbSAnLi9jcmVhdGUtZW50aXR5LWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IGRpYWxvZyB1c2VkIHRvIGNyZWF0ZSBuZXcgZW50aXRpZXMgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gcGFzc2VkIGluIHRoZSBNQVRfRElBTE9HX0RBVEEgXCJpbnB1dERhdGFcIi5cbiAqIFVzZWQgYnkgdGhlIG5neC1tYXQtZW50aXR5LXRhYmxlLlxuICpcbiAqIEl0IG9mZmVycyBhIGxvdCBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMgd2hpY2ggY2FuIGJlIGZvdW5kIGluIFwiQ3JlYXRlRW50aXR5RGlhbG9nRGF0YVwiLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1tYXQtZW50aXR5LWNyZWF0ZS1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLWVudGl0eS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgRW50aXR5VXRpbGl0aWVzID0gRW50aXR5VXRpbGl0aWVzO1xuXG4gICAgZW50aXR5Um93cyE6IEVudGl0eVJvdzxFbnRpdHlUeXBlPltdO1xuXG4gICAgZW50aXR5U2VydmljZSE6IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT47XG5cbiAgICBkYXRhITogQ3JlYXRlRW50aXR5RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgaXNFbnRpdHlWYWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YTogQ3JlYXRlRW50aXR5RGlhbG9nRGF0YTxFbnRpdHlUeXBlPixcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudDxFbnRpdHlUeXBlPj4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG5ldyBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhQnVpbGRlcih0aGlzLmlucHV0RGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgICAgIHRoaXMuZW50aXR5Um93cyA9IEVudGl0eVV0aWxpdGllcy5nZXRFbnRpdHlSb3dzKHRoaXMuZGF0YS5lbnRpdHksIHRydWUpO1xuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldCh0aGlzLmRhdGEuRW50aXR5U2VydmljZUNsYXNzKSBhcyBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZW50aXR5IGlzIHZhbGlkLlxuICAgICAqL1xuICAgIGNoZWNrSXNFbnRpdHlWYWxpZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0VudGl0eVZhbGlkID0gRW50aXR5VXRpbGl0aWVzLmlzRW50aXR5VmFsaWQodGhpcy5kYXRhLmVudGl0eSwgJ2NyZWF0ZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIGFkZCB0aGUgbmV3IGVudGl0eSBhbmQgY2xvc2UgdGhlIGRpYWxvZyBhZnRlcndhcmRzLlxuICAgICAqIEFsc28gaGFuZGxlcyB0aGUgY29uZmlybWF0aW9uIGlmIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEuY3JlYXRlRGlhbG9nRGF0YS5jcmVhdGVSZXF1aXJlc0NvbmZpcm1EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybUNyZWF0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZGF0YS5jcmVhdGVEaWFsb2dEYXRhLmNvbmZpcm1DcmVhdGVEaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgWydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY3JlYXRlIHRoaXMgZW50aXR5PyddKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCdjb25maXJtQnV0dG9uTGFiZWwnLCAnQ3JlYXRlJylcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCAnQ3JlYXRlJylcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1DcmVhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgY29uZmlybUNyZWF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdm9pZCB0aGlzLmVudGl0eVNlcnZpY2UuY3JlYXRlKHRoaXMuZGF0YS5lbnRpdHkpLnRoZW4oKCkgPT4gdGhpcy5kaWFsb2dSZWYuY2xvc2UoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cbn0iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT57e2RhdGEuY3JlYXRlRGlhbG9nRGF0YS50aXRsZX19PC9oMj5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8Zm9ybSAjZm9ybT1cIm5nRm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBlbnRpdHlSb3dzXCI+XG4gICAgICAgICAgICA8bmd4LW1hdC1lbnRpdHktaW5wdXRcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICBbZW50aXR5XT1cImRhdGEuZW50aXR5XCJcbiAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICBbaGlkZU9taXRGb3JDcmVhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGcte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ2xnJyl9fSBjb2wtbWQte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ21kJyl9fSBjb2wtc20te3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ3NtJyl9fVwiXG4gICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tJc0VudGl0eVZhbGlkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZ3gtbWF0LWVudGl0eS1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY3JlYXRlKClcIiBbZGlzYWJsZWRdPVwiIWlzRW50aXR5VmFsaWRcIj5cbiAgICAgICAge3tkYXRhLmNyZWF0ZURpYWxvZ0RhdGEuY3JlYXRlQnV0dG9uTGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCI+XG4gICAgICAgIHt7ZGF0YS5jcmVhdGVEaWFsb2dEYXRhLmNhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWVudGl0eS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFcEYsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSxrREFBa0QsQ0FBQztBQUN2SCxPQUFPLEVBQUUsNkJBQTZCLEVBQWtDLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7O0FBSXBIOzs7OztHQUtHO0FBTUgsTUFBTSxPQUFPLGlDQUFpQztJQVcxQyxZQUVxQixTQUE2QyxFQUN2RCxTQUFzRSxFQUM1RCxRQUFrQixFQUNsQixNQUFpQjtRQUhqQixjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUN2RCxjQUFTLEdBQVQsU0FBUyxDQUE2RDtRQUM1RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFmdEMsb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFRbEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7SUFRNUIsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksNkJBQTZCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUE4QixDQUFDO0lBQ3RHLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQjtRQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDJCQUEyQixFQUFFO1lBQ3pELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFVBQVUsR0FBOEIsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDO2FBQ3pILFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO2FBQ2xFLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUM7YUFDM0MsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7YUFDOUIsU0FBUyxFQUFFLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLEVBQUU7WUFDbkUsSUFBSSxFQUFFLFVBQVU7WUFDaEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQzlDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEI7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDTyxhQUFhO1FBQ2pCLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7OytIQW5FUSxpQ0FBaUMsa0JBWTlCLGVBQWU7bUhBWmxCLGlDQUFpQyxvRUNyQjlDLG9rRUE0Q0E7NEZEdkJhLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDSSw4QkFBOEI7OzBCQWdCbkMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW50aXR5VGFiLCBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIsIENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuLi8uLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgQ3JlYXRlRW50aXR5RGlhbG9nRGF0YUJ1aWxkZXIsIENyZWF0ZUVudGl0eURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vY3JlYXRlLWVudGl0eS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IENyZWF0ZUVudGl0eURpYWxvZ0RhdGEgfSBmcm9tICcuL2NyZWF0ZS1lbnRpdHktZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgZGlhbG9nIHVzZWQgdG8gY3JlYXRlIG5ldyBlbnRpdGllcyBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBwYXNzZWQgaW4gdGhlIE1BVF9ESUFMT0dfREFUQSBcImlucHV0RGF0YVwiLlxuICogVXNlZCBieSB0aGUgbmd4LW1hdC1lbnRpdHktdGFibGUuXG4gKlxuICogSXQgb2ZmZXJzIGEgbG90IG9mIGN1c3RvbWl6YXRpb24gb3B0aW9ucyB3aGljaCBjYW4gYmUgZm91bmQgaW4gXCJDcmVhdGVFbnRpdHlEaWFsb2dEYXRhXCIuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktY3JlYXRlLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBFbnRpdHlVdGlsaXRpZXMgPSBFbnRpdHlVdGlsaXRpZXM7XG5cbiAgICBlbnRpdHlUYWJzITogRW50aXR5VGFiPEVudGl0eVR5cGU+W107XG5cbiAgICBlbnRpdHlTZXJ2aWNlITogRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPjtcblxuICAgIGRhdGEhOiBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT47XG5cbiAgICBpc0VudGl0eVZhbGlkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREYXRhOiBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhPEVudGl0eVR5cGU+LFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50PEVudGl0eVR5cGU+PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2dcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IENyZWF0ZUVudGl0eURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuaW5wdXREYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lbnRpdHlUYWJzID0gRW50aXR5VXRpbGl0aWVzLmdldEVudGl0eVRhYnModGhpcy5kYXRhLmVudGl0eSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZW50aXR5U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KHRoaXMuZGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MpIGFzIEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZSBlbnRpdHkgaXMgdmFsaWQuXG4gICAgICovXG4gICAgY2hlY2tJc0VudGl0eVZhbGlkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRW50aXR5VmFsaWQgPSBFbnRpdHlVdGlsaXRpZXMuaXNFbnRpdHlWYWxpZCh0aGlzLmRhdGEuZW50aXR5LCAnY3JlYXRlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgYWRkIHRoZSBuZXcgZW50aXR5IGFuZCBjbG9zZSB0aGUgZGlhbG9nIGFmdGVyd2FyZHMuXG4gICAgICogQWxzbyBoYW5kbGVzIHRoZSBjb25maXJtYXRpb24gaWYgcmVxdWlyZWQuXG4gICAgICovXG4gICAgY3JlYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YS5jcmVhdGVEaWFsb2dEYXRhLmNyZWF0ZVJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtQ3JlYXRlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5kYXRhLmNyZWF0ZURpYWxvZ0RhdGEuY29uZmlybUNyZWF0ZURpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCBbJ0RvIHlvdSByZWFsbHkgd2FudCB0byBjcmVhdGUgdGhpcyBlbnRpdHk/J10pXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ2NvbmZpcm1CdXR0b25MYWJlbCcsICdDcmVhdGUnKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsICdDcmVhdGUnKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybUNyZWF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBjb25maXJtQ3JlYXRlKCk6IHZvaWQge1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZS5jcmVhdGUodGhpcy5kYXRhLmVudGl0eSkudGhlbigoKSA9PiB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxufSIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlPnt7ZGF0YS5jcmVhdGVEaWFsb2dEYXRhLnRpdGxlfX08L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxmb3JtICNmb3JtPVwibmdGb3JtXCI+XG4gICAgICAgIDxtYXQtdGFiLWdyb3VwICpuZ0lmPVwiZW50aXR5VGFicy5sZW5ndGggPiAxXCIgcHJlc2VydmVDb250ZW50PlxuICAgICAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBlbnRpdHlUYWJzXCIgW2xhYmVsXT1cInRhYi50YWJOYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCByb3cgb2YgdGFiLnJvd3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5neC1tYXQtZW50aXR5LWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZGF0YS5lbnRpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BlcnR5S2V5XT1cImtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGlkZU9taXRGb3JDcmVhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChkYXRhLmVudGl0eSwga2V5LCAnbGcnKX19IGNvbC1tZC17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChkYXRhLmVudGl0eSwga2V5LCAnbWQnKX19IGNvbC1zbS17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChkYXRhLmVudGl0eSwga2V5LCAnc20nKX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZUV2ZW50KT1cImNoZWNrSXNFbnRpdHlWYWxpZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L25neC1tYXQtZW50aXR5LWlucHV0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L21hdC10YWItZ3JvdXA+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cImVudGl0eVRhYnMubGVuZ3RoIDw9IDFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGVudGl0eVRhYnNbMF0ucm93c1wiPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgW2VudGl0eV09XCJkYXRhLmVudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgIFtwcm9wZXJ0eUtleV09XCJrZXlcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZU9taXRGb3JDcmVhdGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLXt7RW50aXR5VXRpbGl0aWVzLmdldFdpZHRoKGRhdGEuZW50aXR5LCBrZXksICdsZycpfX0gY29sLW1kLXt7RW50aXR5VXRpbGl0aWVzLmdldFdpZHRoKGRhdGEuZW50aXR5LCBrZXksICdtZCcpfX0gY29sLXNtLXt7RW50aXR5VXRpbGl0aWVzLmdldFdpZHRoKGRhdGEuZW50aXR5LCBrZXksICdzbScpfX1cIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2VFdmVudCk9XCJjaGVja0lzRW50aXR5VmFsaWQoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmd4LW1hdC1lbnRpdHktaW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY3JlYXRlKClcIiBbZGlzYWJsZWRdPVwiIWlzRW50aXR5VmFsaWRcIj5cbiAgICAgICAge3tkYXRhLmNyZWF0ZURpYWxvZ0RhdGEuY3JlYXRlQnV0dG9uTGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCI+XG4gICAgICAgIHt7ZGF0YS5jcmVhdGVEaWFsb2dEYXRhLmNhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
@@ -5,6 +5,7 @@ import { NgxMatEntityInputModule } from '../../input/input.module';
5
5
  import { MatDialogModule } from '@angular/material/dialog';
6
6
  import { FormsModule } from '@angular/forms';
7
7
  import { MatButtonModule } from '@angular/material/button';
8
+ import { MatTabsModule } from '@angular/material/tabs';
8
9
  import * as i0 from "@angular/core";
9
10
  export class NgxMatEntityCreateDialogModule {
10
11
  }
@@ -13,13 +14,15 @@ NgxMatEntityCreateDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "1
13
14
  NgxMatEntityInputModule,
14
15
  MatDialogModule,
15
16
  FormsModule,
16
- MatButtonModule], exports: [NgxMatEntityCreateDialogComponent] });
17
+ MatButtonModule,
18
+ MatTabsModule], exports: [NgxMatEntityCreateDialogComponent] });
17
19
  NgxMatEntityCreateDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityCreateDialogModule, imports: [[
18
20
  CommonModule,
19
21
  NgxMatEntityInputModule,
20
22
  MatDialogModule,
21
23
  FormsModule,
22
- MatButtonModule
24
+ MatButtonModule,
25
+ MatTabsModule
23
26
  ]] });
24
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityCreateDialogModule, decorators: [{
25
28
  type: NgModule,
@@ -30,9 +33,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
30
33
  NgxMatEntityInputModule,
31
34
  MatDialogModule,
32
35
  FormsModule,
33
- MatButtonModule
36
+ MatButtonModule,
37
+ MatTabsModule
34
38
  ],
35
39
  exports: [NgxMatEntityCreateDialogComponent]
36
40
  }]
37
41
  }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWVudGl0eS1kaWFsb2cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFhM0QsTUFBTSxPQUFPLDhCQUE4Qjs7NEhBQTlCLDhCQUE4Qjs2SEFBOUIsOEJBQThCLGlCQVZ4QixpQ0FBaUMsYUFFNUMsWUFBWTtRQUNaLHVCQUF1QjtRQUN2QixlQUFlO1FBQ2YsV0FBVztRQUNYLGVBQWUsYUFFVCxpQ0FBaUM7NkhBRWxDLDhCQUE4QixZQVQ5QjtZQUNMLFlBQVk7WUFDWix1QkFBdUI7WUFDdkIsZUFBZTtZQUNmLFdBQVc7WUFDWCxlQUFlO1NBQ2xCOzRGQUdRLDhCQUE4QjtrQkFYMUMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDakQsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsZUFBZTtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NyZWF0ZS1lbnRpdHktZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlJbnB1dE1vZHVsZSB9IGZyb20gJy4uLy4uL2lucHV0L2lucHV0Lm1vZHVsZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE5neE1hdEVudGl0eUlucHV0TW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtOZ3hNYXRFbnRpdHlDcmVhdGVEaWFsb2dDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ01vZHVsZSB7fSJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWVudGl0eS1kaWFsb2cubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1lbnRpdHktZGlhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBY3ZELE1BQU0sT0FBTyw4QkFBOEI7OzRIQUE5Qiw4QkFBOEI7NkhBQTlCLDhCQUE4QixpQkFYeEIsaUNBQWlDLGFBRTVDLFlBQVk7UUFDWix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLFdBQVc7UUFDWCxlQUFlO1FBQ2YsYUFBYSxhQUVQLGlDQUFpQzs2SEFFbEMsOEJBQThCLFlBVjlCO1lBQ0wsWUFBWTtZQUNaLHVCQUF1QjtZQUN2QixlQUFlO1lBQ2YsV0FBVztZQUNYLGVBQWU7WUFDZixhQUFhO1NBQ2hCOzRGQUdRLDhCQUE4QjtrQkFaMUMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztvQkFDakQsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixhQUFhO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY3JlYXRlLWVudGl0eS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IE5neE1hdEVudGl0eUlucHV0TW9kdWxlIH0gZnJvbSAnLi4vLi4vaW5wdXQvaW5wdXQubW9kdWxlJztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VGFic01vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW05neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nTW9kdWxlIHt9Il19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRpYWxvZy1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0RGlhbG9nRGF0YSB9IGZyb20gJy4uL3RhYmxlLWRhdGEnO1xuXG4vKipcbiAqIFRoZSBEZWZpbml0aW9uIG9mIHRoZSBFZGl0IEVudGl0eSBEaWFsb2cgRGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGl0RW50aXR5RGlhbG9nRGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgZW50aXR5IHRvIGVkaXQuXG4gICAgICovXG4gICAgZW50aXR5OiBFbnRpdHlUeXBlLFxuICAgIC8qKlxuICAgICAqIFRoZSBFbnRpdHkgU2VydmljZSBjbGFzcyB1c2VkIGZvciB1cGRhdGluZy9kZWxldGluZyB0aGUgZW50aXR5LlxuICAgICAqL1xuICAgIEVudGl0eVNlcnZpY2VDbGFzczogbmV3IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+LFxuICAgIC8qKlxuICAgICAqIFRoZSBpbmZvIG9mIHRoZSBnZW5lcmljIGVkaXQtZGlhbG9nLlxuICAgICAqL1xuICAgIGVkaXREaWFsb2dEYXRhPzogRWRpdERpYWxvZ0RhdGE8RW50aXR5VHlwZT4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGRlbGV0ZSB0aGlzIHNwZWNpZmljIGVudGl0eS5cbiAgICAgKi9cbiAgICBhbGxvd0RlbGV0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW5cbn0iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRpYWxvZy1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0RGlhbG9nRGF0YSB9IGZyb20gJy4uL3RhYmxlLWRhdGEnO1xuXG4vKipcbiAqIFRoZSBEZWZpbml0aW9uIG9mIHRoZSBFZGl0IEVudGl0eSBEaWFsb2cgRGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGl0RW50aXR5RGlhbG9nRGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgZW50aXR5IHRvIGVkaXQuXG4gICAgICovXG4gICAgZW50aXR5OiBFbnRpdHlUeXBlLFxuICAgIC8qKlxuICAgICAqIFRoZSBFbnRpdHkgU2VydmljZSBjbGFzcyB1c2VkIGZvciB1cGRhdGluZy9kZWxldGluZyB0aGUgZW50aXR5LlxuICAgICAqL1xuICAgIEVudGl0eVNlcnZpY2VDbGFzczogbmV3IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+LFxuICAgIC8qKlxuICAgICAqIFRoZSBpbmZvIG9mIHRoZSBnZW5lcmljIGVkaXQtZGlhbG9nLlxuICAgICAqL1xuICAgIGVkaXREaWFsb2dEYXRhPzogRWRpdERpYWxvZ0RhdGE8RW50aXR5VHlwZT4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGRlbGV0ZSB0aGlzIHNwZWNpZmljIGVudGl0eS5cbiAgICAgKi9cbiAgICBhbGxvd0RlbGV0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIHVwZGF0ZSB0aGlzIHNwZWNpZmljIGVudGl0eS5cbiAgICAgKi9cbiAgICBhbGxvd1VwZGF0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW5cbn0iXX0=
@@ -4,11 +4,12 @@ import { BaseBuilder } from '../../../classes/base.builder';
4
4
  * The internal EditEntityDialogData. Requires all default values the user can leave out.
5
5
  */
6
6
  export class EditEntityDialogDataInternal {
7
- constructor(entity, EntityServiceClass, editDialogData, allowDelete) {
7
+ constructor(entity, EntityServiceClass, editDialogData, allowUpdate, allowDelete) {
8
8
  this.entity = entity;
9
9
  this.EntityServiceClass = EntityServiceClass;
10
10
  this.editDialogData = editDialogData;
11
11
  this.allowDelete = allowDelete;
12
+ this.allowUpdate = allowUpdate;
12
13
  }
13
14
  }
14
15
  /**
@@ -21,7 +22,7 @@ export class EditEntityDialogDataBuilder extends BaseBuilder {
21
22
  // eslint-disable-next-line jsdoc/require-jsdoc
22
23
  generateBaseData(data) {
23
24
  const editDialogData = new EditDialogDataBuilder(data.editDialogData).getResult();
24
- return new EditEntityDialogDataInternal(data.entity, data.EntityServiceClass, editDialogData, data.allowDelete ?? (() => true));
25
+ return new EditEntityDialogDataInternal(data.entity, data.EntityServiceClass, editDialogData, data.allowUpdate ?? (() => true), data.allowDelete ?? (() => true));
25
26
  }
26
27
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRpYWxvZy5idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxxQkFBcUIsRUFBMEIsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHNUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sNEJBQTRCO0lBVXJDLFlBQ0ksTUFBa0IsRUFDbEIsa0JBQTZFLEVBQzdFLGNBQWtELEVBQ2xELFdBQTRDO1FBRTVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTywyQkFDVCxTQUFRLFdBQXVGO0lBRS9GLFlBQVksSUFBc0M7UUFDOUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDckMsZ0JBQWdCLENBQUMsSUFBc0M7UUFDN0QsTUFBTSxjQUFjLEdBQXVDLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RILE9BQU8sSUFBSSw0QkFBNEIsQ0FDbkMsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLGNBQWMsRUFDZCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ25DLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRWRpdEVudGl0eURpYWxvZ0RhdGEgfSBmcm9tICcuL2VkaXQtZW50aXR5LWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IEVkaXREaWFsb2dEYXRhQnVpbGRlciwgRWRpdERpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vZWRpdC1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IEJhc2VCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlLmJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5cbi8qKlxuICogVGhlIGludGVybmFsIEVkaXRFbnRpdHlEaWFsb2dEYXRhLiBSZXF1aXJlcyBhbGwgZGVmYXVsdCB2YWx1ZXMgdGhlIHVzZXIgY2FuIGxlYXZlIG91dC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVkaXRFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIEVkaXRFbnRpdHlEaWFsb2dEYXRhPEVudGl0eVR5cGU+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGVudGl0eTogRW50aXR5VHlwZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eVNlcnZpY2VDbGFzczogbmV3IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZWRpdERpYWxvZ0RhdGE6IEVkaXREaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0RlbGV0ZTogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbnRpdHk6IEVudGl0eVR5cGUsXG4gICAgICAgIEVudGl0eVNlcnZpY2VDbGFzczogbmV3IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+LFxuICAgICAgICBlZGl0RGlhbG9nRGF0YTogRWRpdERpYWxvZ0RhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPixcbiAgICAgICAgYWxsb3dEZWxldGU6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW5cbiAgICApIHtcbiAgICAgICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG4gICAgICAgIHRoaXMuRW50aXR5U2VydmljZUNsYXNzID0gRW50aXR5U2VydmljZUNsYXNzO1xuICAgICAgICB0aGlzLmVkaXREaWFsb2dEYXRhID0gZWRpdERpYWxvZ0RhdGE7XG4gICAgICAgIHRoaXMuYWxsb3dEZWxldGUgPSBhbGxvd0RlbGV0ZTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIEJ1aWxkZXIgZm9yIHRoZSBFZGl0RW50aXR5RGlhbG9nRGF0YS4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVkaXRFbnRpdHlEaWFsb2dEYXRhQnVpbGRlcjxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBCYXNlQnVpbGRlcjxFZGl0RW50aXR5RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+LCBFZGl0RW50aXR5RGlhbG9nRGF0YTxFbnRpdHlUeXBlPj4ge1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogRWRpdEVudGl0eURpYWxvZ0RhdGE8RW50aXR5VHlwZT4pIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVCYXNlRGF0YShkYXRhOiBFZGl0RW50aXR5RGlhbG9nRGF0YTxFbnRpdHlUeXBlPik6IEVkaXRFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4ge1xuICAgICAgICBjb25zdCBlZGl0RGlhbG9nRGF0YTogRWRpdERpYWxvZ0RhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBFZGl0RGlhbG9nRGF0YUJ1aWxkZXIoZGF0YS5lZGl0RGlhbG9nRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdEVudGl0eURpYWxvZ0RhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPihcbiAgICAgICAgICAgIGRhdGEuZW50aXR5LFxuICAgICAgICAgICAgZGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MsXG4gICAgICAgICAgICBlZGl0RGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGRhdGEuYWxsb3dEZWxldGUgPz8gKCgpID0+IHRydWUpXG4gICAgICAgICk7XG4gICAgfVxufSJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRpYWxvZy5idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxxQkFBcUIsRUFBMEIsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHNUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sNEJBQTRCO0lBWXJDLFlBQ0ksTUFBa0IsRUFDbEIsa0JBQTZFLEVBQzdFLGNBQWtELEVBQ2xELFdBQTRDLEVBQzVDLFdBQTRDO1FBRTVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyxDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTywyQkFDVCxTQUFRLFdBQXVGO0lBRS9GLFlBQVksSUFBc0M7UUFDOUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDckMsZ0JBQWdCLENBQUMsSUFBc0M7UUFDN0QsTUFBTSxjQUFjLEdBQXVDLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RILE9BQU8sSUFBSSw0QkFBNEIsQ0FDbkMsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLGNBQWMsRUFDZCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQ2hDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDbkMsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGlhbG9nRGF0YSB9IGZyb20gJy4vZWRpdC1lbnRpdHktZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgRWRpdERpYWxvZ0RhdGFCdWlsZGVyLCBFZGl0RGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi9lZGl0LWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2Jhc2UuYnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgRWRpdEVudGl0eURpYWxvZ0RhdGEuIFJlcXVpcmVzIGFsbCBkZWZhdWx0IHZhbHVlcyB0aGUgdXNlciBjYW4gbGVhdmUgb3V0LlxuICovXG5leHBvcnQgY2xhc3MgRWRpdEVudGl0eURpYWxvZ0RhdGFJbnRlcm5hbDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGltcGxlbWVudHMgRWRpdEVudGl0eURpYWxvZ0RhdGE8RW50aXR5VHlwZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZW50aXR5OiBFbnRpdHlUeXBlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgRW50aXR5U2VydmljZUNsYXNzOiBuZXcgKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpID0+IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBlZGl0RGlhbG9nRGF0YTogRWRpdERpYWxvZ0RhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93VXBkYXRlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEZWxldGU6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZW50aXR5OiBFbnRpdHlUeXBlLFxuICAgICAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IG5ldyAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT4gRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPixcbiAgICAgICAgZWRpdERpYWxvZ0RhdGE6IEVkaXREaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4sXG4gICAgICAgIGFsbG93VXBkYXRlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuLFxuICAgICAgICBhbGxvd0RlbGV0ZTogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhblxuICAgICkge1xuICAgICAgICB0aGlzLmVudGl0eSA9IGVudGl0eTtcbiAgICAgICAgdGhpcy5FbnRpdHlTZXJ2aWNlQ2xhc3MgPSBFbnRpdHlTZXJ2aWNlQ2xhc3M7XG4gICAgICAgIHRoaXMuZWRpdERpYWxvZ0RhdGEgPSBlZGl0RGlhbG9nRGF0YTtcbiAgICAgICAgdGhpcy5hbGxvd0RlbGV0ZSA9IGFsbG93RGVsZXRlO1xuICAgICAgICB0aGlzLmFsbG93VXBkYXRlID0gYWxsb3dVcGRhdGU7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBCdWlsZGVyIGZvciB0aGUgRWRpdEVudGl0eURpYWxvZ0RhdGEuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFZGl0RW50aXR5RGlhbG9nRGF0YUJ1aWxkZXI8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgQmFzZUJ1aWxkZXI8RWRpdEVudGl0eURpYWxvZ0RhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiwgRWRpdEVudGl0eURpYWxvZ0RhdGE8RW50aXR5VHlwZT4+IHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IEVkaXRFbnRpdHlEaWFsb2dEYXRhPEVudGl0eVR5cGU+KSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlQmFzZURhdGEoZGF0YTogRWRpdEVudGl0eURpYWxvZ0RhdGE8RW50aXR5VHlwZT4pOiBFZGl0RW50aXR5RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+IHtcbiAgICAgICAgY29uc3QgZWRpdERpYWxvZ0RhdGE6IEVkaXREaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgRWRpdERpYWxvZ0RhdGFCdWlsZGVyKGRhdGEuZWRpdERpYWxvZ0RhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICByZXR1cm4gbmV3IEVkaXRFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4oXG4gICAgICAgICAgICBkYXRhLmVudGl0eSxcbiAgICAgICAgICAgIGRhdGEuRW50aXR5U2VydmljZUNsYXNzLFxuICAgICAgICAgICAgZWRpdERpYWxvZ0RhdGEsXG4gICAgICAgICAgICBkYXRhLmFsbG93VXBkYXRlID8/ICgoKSA9PiB0cnVlKSxcbiAgICAgICAgICAgIGRhdGEuYWxsb3dEZWxldGUgPz8gKCgpID0+IHRydWUpXG4gICAgICAgICk7XG4gICAgfVxufSJdfQ==
@@ -8,9 +8,10 @@ import { LodashUtilities } from '../../../capsulation/lodash.utilities';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/material/dialog";
10
10
  import * as i2 from "@angular/material/button";
11
- import * as i3 from "../../input/input.component";
12
- import * as i4 from "@angular/common";
13
- import * as i5 from "@angular/forms";
11
+ import * as i3 from "@angular/material/tabs";
12
+ import * as i4 from "../../input/input.component";
13
+ import * as i5 from "@angular/common";
14
+ import * as i6 from "@angular/forms";
14
15
  /**
15
16
  * The default dialog used to edit an existing entity based on the configuration passed in the MAT_DIALOG_DATA "inputData".
16
17
  * Used by the ngx-mat-entity-table.
@@ -25,19 +26,22 @@ export class NgxMatEntityEditDialogComponent {
25
26
  this.dialog = dialog;
26
27
  this.EntityUtilities = EntityUtilities;
27
28
  this.isEntityValid = true;
28
- this.isEntityDirty = (async () => false).call(this);
29
+ this.isEntityDirty = false;
29
30
  }
30
31
  ngOnInit() {
31
32
  this.data = new EditEntityDialogDataBuilder(this.inputData).getResult();
33
+ this.entityPriorChanges = LodashUtilities.cloneDeep(this.data.entity);
34
+ this.isReadOnly = !this.data.allowUpdate(this.entityPriorChanges);
32
35
  this.dialogRef.disableClose = true;
33
- this.entityRows = EntityUtilities.getEntityRows(this.data.entity, false, true);
36
+ this.entityTabs = EntityUtilities.getEntityTabs(this.data.entity, false, true);
34
37
  this.entityService = this.injector.get(this.data.EntityServiceClass);
35
- this.entityPriorChanges = LodashUtilities.cloneDeep(this.data.entity);
36
38
  }
37
- // eslint-disable-next-line jsdoc/require-jsdoc
38
- checkEntity() {
39
+ /**
40
+ * Checks if the entity has become invalid or dirty.
41
+ */
42
+ async checkEntity() {
39
43
  this.isEntityValid = EntityUtilities.isEntityValid(this.data.entity, 'update');
40
- this.isEntityDirty = EntityUtilities.dirty(this.data.entity, this.entityPriorChanges);
44
+ this.isEntityDirty = await EntityUtilities.isDirty(this.data.entity, this.entityPriorChanges);
41
45
  }
42
46
  /**
43
47
  * Tries to save the changes and close the dialog afterwards.
@@ -105,12 +109,12 @@ export class NgxMatEntityEditDialogComponent {
105
109
  }
106
110
  }
107
111
  NgxMatEntityEditDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityEditDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i0.Injector }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
108
- NgxMatEntityEditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NgxMatEntityEditDialogComponent, selector: "ngx-mat-entity-edit-dialog", ngImport: i0, template: "<h2 mat-dialog-title>\n {{data.editDialogData.title(data.entity)}}\n <button *ngIf=\"data.allowDelete(data.entity)\" mat-raised-button (click)=\"delete()\" color=\"warn\" class=\"delete-button\" tabindex=\"-1\">\n {{data.editDialogData.deleteButtonLabel}}\n </button>\n</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\" class=\"row\">\n <div class=\"row\" *ngFor=\"let row of entityRows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkEntity()\"\n >\n </ngx-mat-entity-input>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"edit()\" [disabled]=\"!isEntityValid || (isEntityDirty | async) === false\">\n {{data.editDialogData.confirmButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.editDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;justify-content:space-between}.delete-button{float:right}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.NgxMatEntityInputComponent, selector: "ngx-mat-entity-input", inputs: ["entity", "propertyKey", "getValidationErrorMessage", "hideOmitForCreate", "hideOmitForEdit"], outputs: ["inputChangeEvent"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], pipes: { "async": i4.AsyncPipe } });
112
+ NgxMatEntityEditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NgxMatEntityEditDialogComponent, selector: "ngx-mat-entity-edit-dialog", ngImport: i0, template: "<h2 mat-dialog-title>\n {{data.editDialogData.title(data.entity)}}\n <button *ngIf=\"data.allowDelete(data.entity)\" mat-raised-button (click)=\"delete()\" color=\"warn\" class=\"delete-button\" tabindex=\"-1\">\n {{data.editDialogData.deleteButtonLabel}}\n </button>\n</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\" class=\"row\">\n <mat-tab-group *ngIf=\"entityTabs.length > 1\" preserveContent>\n <mat-tab *ngFor=\"let tab of entityTabs\" [label]=\"tab.tabName\">\n <div class=\"row\" *ngFor=\"let row of tab.rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkEntity()\"\n [isReadOnly]=\"isReadOnly\"\n >\n </ngx-mat-entity-input>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <div *ngIf=\"entityTabs.length <= 1\">\n <div class=\"row\" *ngFor=\"let row of entityTabs[0].rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkEntity()\"\n [isReadOnly]=\"isReadOnly\"\n >\n </ngx-mat-entity-input>\n </div>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"edit()\" [disabled]=\"isReadOnly || !isEntityValid || !isEntityDirty\">\n {{data.editDialogData.confirmButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.editDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{justify-content:space-between}.delete-button{float:right}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i4.NgxMatEntityInputComponent, selector: "ngx-mat-entity-input", inputs: ["entity", "propertyKey", "getValidationErrorMessage", "hideOmitForCreate", "hideOmitForEdit", "isReadOnly"], outputs: ["inputChangeEvent"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
109
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityEditDialogComponent, decorators: [{
110
114
  type: Component,
111
- args: [{ selector: 'ngx-mat-entity-edit-dialog', template: "<h2 mat-dialog-title>\n {{data.editDialogData.title(data.entity)}}\n <button *ngIf=\"data.allowDelete(data.entity)\" mat-raised-button (click)=\"delete()\" color=\"warn\" class=\"delete-button\" tabindex=\"-1\">\n {{data.editDialogData.deleteButtonLabel}}\n </button>\n</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\" class=\"row\">\n <div class=\"row\" *ngFor=\"let row of entityRows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkEntity()\"\n >\n </ngx-mat-entity-input>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"edit()\" [disabled]=\"!isEntityValid || (isEntityDirty | async) === false\">\n {{data.editDialogData.confirmButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.editDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;justify-content:space-between}.delete-button{float:right}\n"] }]
115
+ args: [{ selector: 'ngx-mat-entity-edit-dialog', template: "<h2 mat-dialog-title>\n {{data.editDialogData.title(data.entity)}}\n <button *ngIf=\"data.allowDelete(data.entity)\" mat-raised-button (click)=\"delete()\" color=\"warn\" class=\"delete-button\" tabindex=\"-1\">\n {{data.editDialogData.deleteButtonLabel}}\n </button>\n</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\" class=\"row\">\n <mat-tab-group *ngIf=\"entityTabs.length > 1\" preserveContent>\n <mat-tab *ngFor=\"let tab of entityTabs\" [label]=\"tab.tabName\">\n <div class=\"row\" *ngFor=\"let row of tab.rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkEntity()\"\n [isReadOnly]=\"isReadOnly\"\n >\n </ngx-mat-entity-input>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <div *ngIf=\"entityTabs.length <= 1\">\n <div class=\"row\" *ngFor=\"let row of entityTabs[0].rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(data.entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(data.entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(data.entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkEntity()\"\n [isReadOnly]=\"isReadOnly\"\n >\n </ngx-mat-entity-input>\n </div>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"edit()\" [disabled]=\"isReadOnly || !isEntityValid || !isEntityDirty\">\n {{data.editDialogData.confirmButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.editDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{justify-content:space-between}.delete-button{float:right}\n"] }]
112
116
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
113
117
  type: Inject,
114
118
  args: [MAT_DIALOG_DATA]
115
119
  }] }, { type: i1.MatDialogRef }, { type: i0.Injector }, { type: i1.MatDialog }]; } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkcsT0FBTyxFQUFFLHdCQUF3QixFQUE2QixNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZILE9BQU8sRUFBRSwyQkFBMkIsRUFBZ0MsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7QUFHeEU7Ozs7O0dBS0c7QUFNSCxNQUFNLE9BQU8sK0JBQStCO0lBY3hDLFlBRXFCLFNBQTJDLEVBQ3JELFNBQW9FLEVBQzFELFFBQWtCLEVBQ2xCLE1BQWlCO1FBSGpCLGNBQVMsR0FBVCxTQUFTLENBQWtDO1FBQ3JELGNBQVMsR0FBVCxTQUFTLENBQTJEO1FBQzFELGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQWxCdEMsb0JBQWUsR0FB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QTs0RkRUYSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0ksNEJBQTRCOzswQkFtQmpDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudGl0eVJvdywgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IEVkaXRFbnRpdHlEaWFsb2dEYXRhIH0gZnJvbSAnLi9lZGl0LWVudGl0eS1kaWFsb2ctZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4uLy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGlhbG9nRGF0YUJ1aWxkZXIsIEVkaXRFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2VkaXQtZW50aXR5LWRpYWxvZy5idWlsZGVyJztcbmltcG9ydCB7IExvZGFzaFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uL2NhcHN1bGF0aW9uL2xvZGFzaC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgZGlhbG9nIHVzZWQgdG8gZWRpdCBhbiBleGlzdGluZyBlbnRpdHkgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gcGFzc2VkIGluIHRoZSBNQVRfRElBTE9HX0RBVEEgXCJpbnB1dERhdGFcIi5cbiAqIFVzZWQgYnkgdGhlIG5neC1tYXQtZW50aXR5LXRhYmxlLlxuICpcbiAqIEl0IG9mZmVycyBhIGxvdCBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMgd2hpY2ggY2FuIGJlIGZvdW5kIGluIFwiRWRpdEVudGl0eURpYWxvZ0RhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS1lZGl0LWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtZW50aXR5LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBFbnRpdHlVdGlsaXRpZXMgPSBFbnRpdHlVdGlsaXRpZXM7XG5cbiAgICBlbnRpdHlSb3dzITogRW50aXR5Um93PEVudGl0eVR5cGU+W107XG5cbiAgICBlbnRpdHlTZXJ2aWNlITogRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPjtcblxuICAgIGVudGl0eVByaW9yQ2hhbmdlcyE6IEVudGl0eVR5cGU7XG5cbiAgICBkYXRhITogRWRpdEVudGl0eURpYWxvZ0RhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIGlzRW50aXR5VmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIGlzRW50aXR5RGlydHk6IFByb21pc2U8Ym9vbGVhbj4gPSAoYXN5bmMgKCkgPT4gZmFsc2UpLmNhbGwodGhpcyk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREYXRhOiBFZGl0RW50aXR5RGlhbG9nRGF0YTxFbnRpdHlUeXBlPixcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQ8RW50aXR5VHlwZT4+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZ1xuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgRWRpdEVudGl0eURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuaW5wdXREYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lbnRpdHlSb3dzID0gRW50aXR5VXRpbGl0aWVzLmdldEVudGl0eVJvd3ModGhpcy5kYXRhLmVudGl0eSwgZmFsc2UsIHRydWUpO1xuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldCh0aGlzLmRhdGEuRW50aXR5U2VydmljZUNsYXNzKSBhcyBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgICAgICB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5kYXRhLmVudGl0eSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjaGVja0VudGl0eSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0VudGl0eVZhbGlkID0gRW50aXR5VXRpbGl0aWVzLmlzRW50aXR5VmFsaWQodGhpcy5kYXRhLmVudGl0eSwgJ3VwZGF0ZScpO1xuICAgICAgICB0aGlzLmlzRW50aXR5RGlydHkgPSBFbnRpdHlVdGlsaXRpZXMuZGlydHkodGhpcy5kYXRhLmVudGl0eSwgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIHNhdmUgdGhlIGNoYW5nZXMgYW5kIGNsb3NlIHRoZSBkaWFsb2cgYWZ0ZXJ3YXJkcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgdGhlIGNvbmZpcm1hdGlvbiBpZiByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBlZGl0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5lZGl0UmVxdWlyZXNDb25maXJtRGlhbG9nKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1FZGl0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1FZGl0RGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIFsnRG8geW91IHJlYWxseSB3YW50IHRvIHNhdmUgYWxsIGNoYW5nZXM/J10pXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ2NvbmZpcm1CdXR0b25MYWJlbCcsICdTYXZlJylcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCAnRWRpdCcpXG4gICAgICAgICAgICAuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlczogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtRWRpdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1FZGl0KCk6IHZvaWQge1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZS51cGRhdGUodGhpcy5kYXRhLmVudGl0eSwgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpLnRoZW4oKCkgPT4gdGhpcy5kaWFsb2dSZWYuY2xvc2UoMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIGRlbGV0ZSB0aGUgZW50aXR5IGFuZCBjbG9zZSB0aGUgZGlhbG9nIGFmdGVyd2FyZHMuXG4gICAgICogQWxzbyBoYW5kbGVzIHRoZSBjb25maXJtYXRpb24gaWYgcmVxdWlyZWQuXG4gICAgICovXG4gICAgZGVsZXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5kZWxldGVSZXF1aXJlc0NvbmZpcm1EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybURlbGV0ZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtRGVsZXRlRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIFsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGVudGl0eT8nXSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndHlwZScsICdkZWxldGUnKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCdjb25maXJtQnV0dG9uTGFiZWwnLCAnRGVsZXRlJylcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCAnRGVsZXRlJylcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maXJtRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZS5kZWxldGUodGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpLnRoZW4oKCkgPT4gdGhpcy5kaWFsb2dSZWYuY2xvc2UoMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVydHMgYWxsIGNoYW5nZXMgbWFkZSBhbmQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICBFbnRpdHlVdGlsaXRpZXMucmVzZXRDaGFuZ2VzT25FbnRpdHkodGhpcy5kYXRhLmVudGl0eSwgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgwKTtcbiAgICB9XG59IiwiPGgyIG1hdC1kaWFsb2ctdGl0bGU+XG4gICAge3tkYXRhLmVkaXREaWFsb2dEYXRhLnRpdGxlKGRhdGEuZW50aXR5KX19XG4gICAgPGJ1dHRvbiAqbmdJZj1cImRhdGEuYWxsb3dEZWxldGUoZGF0YS5lbnRpdHkpXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImRlbGV0ZSgpXCIgY29sb3I9XCJ3YXJuXCIgY2xhc3M9XCJkZWxldGUtYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICB7e2RhdGEuZWRpdERpYWxvZ0RhdGEuZGVsZXRlQnV0dG9uTGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuPC9oMj5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8Zm9ybSAjZm9ybT1cIm5nRm9ybVwiIGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIGVudGl0eVJvd3NcIj5cbiAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS1pbnB1dFxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2Ygcm93LmtleXNcIlxuICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZGF0YS5lbnRpdHlcIlxuICAgICAgICAgICAgICAgIFtwcm9wZXJ0eUtleV09XCJrZXlcIlxuICAgICAgICAgICAgICAgIFtoaWRlT21pdEZvckVkaXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGcte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ2xnJyl9fSBjb2wtbWQte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ21kJyl9fSBjb2wtc20te3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ3NtJyl9fVwiXG4gICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tFbnRpdHkoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25neC1tYXQtZW50aXR5LWlucHV0PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJlZGl0KClcIiBbZGlzYWJsZWRdPVwiIWlzRW50aXR5VmFsaWQgfHwgKGlzRW50aXR5RGlydHkgfCBhc3luYykgPT09IGZhbHNlXCI+XG4gICAgICAgIHt7ZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCI+XG4gICAgICAgIHt7ZGF0YS5lZGl0RGlhbG9nRGF0YS5jYW5jZWxCdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkcsT0FBTyxFQUFFLHdCQUF3QixFQUE2QixNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZILE9BQU8sRUFBRSwyQkFBMkIsRUFBZ0MsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7O0FBR3hFOzs7OztHQUtHO0FBTUgsTUFBTSxPQUFPLCtCQUErQjtJQWdCeEMsWUFFcUIsU0FBMkMsRUFDckQsU0FBb0UsRUFDMUQsUUFBa0IsRUFDbEIsTUFBaUI7UUFIakIsY0FBUyxHQUFULFNBQVMsQ0FBa0M7UUFDckQsY0FBUyxHQUFULFNBQVMsQ0FBMkQ7UUFDMUQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBcEJ0QyxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQVVsQyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixrQkFBYSxHQUFZLEtBQUssQ0FBQztJQVU1QixDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUE4QixDQUFDO0lBQ3RHLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXO1FBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJO1FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFO1lBQ3JELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixPQUFPO1NBQ1Y7UUFDRCxNQUFNLFVBQVUsR0FBOEIsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQzthQUNySCxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMseUNBQXlDLENBQUMsQ0FBQzthQUNoRSxXQUFXLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO2FBQ3pDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO2FBQzVCLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO1lBQ25FLElBQUksRUFBRSxVQUFVO1lBQ2hCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFlBQVksRUFBRSxLQUFLO1NBQ3RCLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUM5QyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3RCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sV0FBVztRQUNmLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEgsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsMkJBQTJCLEVBQUU7WUFDdkQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLE9BQU87U0FDVjtRQUNELE1BQU0sVUFBVSxHQUE4QixJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDO2FBQ3ZILFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO2FBQ2xFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQzdCLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUM7YUFDM0MsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7YUFDOUIsU0FBUyxFQUFFLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLEVBQUU7WUFDbkUsSUFBSSxFQUFFLFVBQVU7WUFDaEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQzlDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEI7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxhQUFhO1FBQ2pCLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNGLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDOzs2SEE1R1EsK0JBQStCLGtCQWlCNUIsZUFBZTtpSEFqQmxCLCtCQUErQixrRUN0QjVDLDA2RUFtREE7NEZEN0JhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDSSw0QkFBNEI7OzBCQXFCakMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW50aXR5VGFiLCBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgRWRpdEVudGl0eURpYWxvZ0RhdGEgfSBmcm9tICcuL2VkaXQtZW50aXR5LWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi4vLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IEVkaXRFbnRpdHlEaWFsb2dEYXRhQnVpbGRlciwgRWRpdEVudGl0eURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vZWRpdC1lbnRpdHktZGlhbG9nLmJ1aWxkZXInO1xuaW1wb3J0IHsgTG9kYXNoVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBkaWFsb2cgdXNlZCB0byBlZGl0IGFuIGV4aXN0aW5nIGVudGl0eSBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBwYXNzZWQgaW4gdGhlIE1BVF9ESUFMT0dfREFUQSBcImlucHV0RGF0YVwiLlxuICogVXNlZCBieSB0aGUgbmd4LW1hdC1lbnRpdHktdGFibGUuXG4gKlxuICogSXQgb2ZmZXJzIGEgbG90IG9mIGN1c3RvbWl6YXRpb24gb3B0aW9ucyB3aGljaCBjYW4gYmUgZm91bmQgaW4gXCJFZGl0RW50aXR5RGlhbG9nRGF0YVwiLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25neC1tYXQtZW50aXR5LWVkaXQtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0LWVudGl0eS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nQ29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEVudGl0eVV0aWxpdGllcyA9IEVudGl0eVV0aWxpdGllcztcblxuICAgIGVudGl0eVRhYnMhOiBFbnRpdHlUYWI8RW50aXR5VHlwZT5bXTtcblxuICAgIGVudGl0eVNlcnZpY2UhOiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuXG4gICAgZW50aXR5UHJpb3JDaGFuZ2VzITogRW50aXR5VHlwZTtcblxuICAgIGRhdGEhOiBFZGl0RW50aXR5RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgaXNFbnRpdHlWYWxpZDogYm9vbGVhbiA9IHRydWU7XG4gICAgaXNFbnRpdHlEaXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaXNSZWFkT25seSE6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREYXRhOiBFZGl0RW50aXR5RGlhbG9nRGF0YTxFbnRpdHlUeXBlPixcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQ8RW50aXR5VHlwZT4+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZ1xuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgRWRpdEVudGl0eURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuaW5wdXREYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKHRoaXMuZGF0YS5lbnRpdHkpO1xuICAgICAgICB0aGlzLmlzUmVhZE9ubHkgPSAhdGhpcy5kYXRhLmFsbG93VXBkYXRlKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lbnRpdHlUYWJzID0gRW50aXR5VXRpbGl0aWVzLmdldEVudGl0eVRhYnModGhpcy5kYXRhLmVudGl0eSwgZmFsc2UsIHRydWUpO1xuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldCh0aGlzLmRhdGEuRW50aXR5U2VydmljZUNsYXNzKSBhcyBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZW50aXR5IGhhcyBiZWNvbWUgaW52YWxpZCBvciBkaXJ0eS5cbiAgICAgKi9cbiAgICBhc3luYyBjaGVja0VudGl0eSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5pc0VudGl0eVZhbGlkID0gRW50aXR5VXRpbGl0aWVzLmlzRW50aXR5VmFsaWQodGhpcy5kYXRhLmVudGl0eSwgJ3VwZGF0ZScpO1xuICAgICAgICB0aGlzLmlzRW50aXR5RGlydHkgPSBhd2FpdCBFbnRpdHlVdGlsaXRpZXMuaXNEaXJ0eSh0aGlzLmRhdGEuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gc2F2ZSB0aGUgY2hhbmdlcyBhbmQgY2xvc2UgdGhlIGRpYWxvZyBhZnRlcndhcmRzLlxuICAgICAqIEFsc28gaGFuZGxlcyB0aGUgY29uZmlybWF0aW9uIGlmIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGVkaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmVkaXRSZXF1aXJlc0NvbmZpcm1EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybUVkaXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmRhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybUVkaXREaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgWydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gc2F2ZSBhbGwgY2hhbmdlcz8nXSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgnY29uZmlybUJ1dHRvbkxhYmVsJywgJ1NhdmUnKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsICdFZGl0JylcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1FZGl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybUVkaXQoKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLnVwZGF0ZSh0aGlzLmRhdGEuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcykudGhlbigoKSA9PiB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gZGVsZXRlIHRoZSBlbnRpdHkgYW5kIGNsb3NlIHRoZSBkaWFsb2cgYWZ0ZXJ3YXJkcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgdGhlIGNvbmZpcm1hdGlvbiBpZiByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBkZWxldGUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmRlbGV0ZVJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtRGVsZXRlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1EZWxldGVEaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgWydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZW50aXR5PyddKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0eXBlJywgJ2RlbGV0ZScpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ2NvbmZpcm1CdXR0b25MYWJlbCcsICdEZWxldGUnKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsICdEZWxldGUnKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybURlbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1EZWxldGUoKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLmRlbGV0ZSh0aGlzLmVudGl0eVByaW9yQ2hhbmdlcykudGhlbigoKSA9PiB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJ0cyBhbGwgY2hhbmdlcyBtYWRlIGFuZCBjbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIEVudGl0eVV0aWxpdGllcy5yZXNldENoYW5nZXNPbkVudGl0eSh0aGlzLmRhdGEuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKDApO1xuICAgIH1cbn0iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT5cbiAgICB7e2RhdGEuZWRpdERpYWxvZ0RhdGEudGl0bGUoZGF0YS5lbnRpdHkpfX1cbiAgICA8YnV0dG9uICpuZ0lmPVwiZGF0YS5hbGxvd0RlbGV0ZShkYXRhLmVudGl0eSlcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlKClcIiBjb2xvcj1cIndhcm5cIiBjbGFzcz1cImRlbGV0ZS1idXR0b25cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgIHt7ZGF0YS5lZGl0RGlhbG9nRGF0YS5kZWxldGVCdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG48L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxmb3JtICNmb3JtPVwibmdGb3JtXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJlbnRpdHlUYWJzLmxlbmd0aCA+IDFcIiBwcmVzZXJ2ZUNvbnRlbnQ+XG4gICAgICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIGVudGl0eVRhYnNcIiBbbGFiZWxdPVwidGFiLnRhYk5hbWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiB0YWIucm93c1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmd4LW1hdC1lbnRpdHktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2Ygcm93LmtleXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2VudGl0eV09XCJkYXRhLmVudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlT21pdEZvckVkaXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChkYXRhLmVudGl0eSwga2V5LCAnbGcnKX19IGNvbC1tZC17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChkYXRhLmVudGl0eSwga2V5LCAnbWQnKX19IGNvbC1zbS17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChkYXRhLmVudGl0eSwga2V5LCAnc20nKX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZUV2ZW50KT1cImNoZWNrRW50aXR5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3gtbWF0LWVudGl0eS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJlbnRpdHlUYWJzLmxlbmd0aCA8PSAxXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBlbnRpdHlUYWJzWzBdLnJvd3NcIj5cbiAgICAgICAgICAgICAgICA8bmd4LW1hdC1lbnRpdHktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGtleSBvZiByb3cua2V5c1wiXG4gICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZGF0YS5lbnRpdHlcIlxuICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZGVPbWl0Rm9yRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGcte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ2xnJyl9fSBjb2wtbWQte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ21kJyl9fSBjb2wtc20te3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ3NtJyl9fVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZUV2ZW50KT1cImNoZWNrRW50aXR5KClcIlxuICAgICAgICAgICAgICAgICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9uZ3gtbWF0LWVudGl0eS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJlZGl0KClcIiBbZGlzYWJsZWRdPVwiaXNSZWFkT25seSB8fCAhaXNFbnRpdHlWYWxpZCB8fCAhaXNFbnRpdHlEaXJ0eVwiPlxuICAgICAgICB7e2RhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybUJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiPlxuICAgICAgICB7e2RhdGEuZWRpdERpYWxvZ0RhdGEuY2FuY2VsQnV0dG9uTGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
@@ -6,6 +6,7 @@ import { MatDialogModule } from '@angular/material/dialog';
6
6
  import { FormsModule } from '@angular/forms';
7
7
  import { MatButtonModule } from '@angular/material/button';
8
8
  import { NgxMatEntityConfirmDialogModule } from '../../confirm-dialog/confirm-dialog.module';
9
+ import { MatTabsModule } from '@angular/material/tabs';
9
10
  import * as i0 from "@angular/core";
10
11
  export class NgxMatEntityEditDialogModule {
11
12
  }
@@ -15,6 +16,7 @@ NgxMatEntityEditDialogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.
15
16
  MatDialogModule,
16
17
  FormsModule,
17
18
  MatButtonModule,
19
+ MatTabsModule,
18
20
  NgxMatEntityConfirmDialogModule], exports: [NgxMatEntityEditDialogComponent] });
19
21
  NgxMatEntityEditDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityEditDialogModule, imports: [[
20
22
  CommonModule,
@@ -22,6 +24,7 @@ NgxMatEntityEditDialogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.
22
24
  MatDialogModule,
23
25
  FormsModule,
24
26
  MatButtonModule,
27
+ MatTabsModule,
25
28
  NgxMatEntityConfirmDialogModule
26
29
  ]] });
27
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityEditDialogModule, decorators: [{
@@ -34,9 +37,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
34
37
  MatDialogModule,
35
38
  FormsModule,
36
39
  MatButtonModule,
40
+ MatTabsModule,
37
41
  NgxMatEntityConfirmDialogModule
38
42
  ],
39
43
  exports: [NgxMatEntityEditDialogComponent]
40
44
  }]
41
45
  }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFjN0YsTUFBTSxPQUFPLDRCQUE0Qjs7MEhBQTVCLDRCQUE0QjsySEFBNUIsNEJBQTRCLGlCQVhyQiwrQkFBK0IsYUFFM0MsWUFBWTtRQUNaLHVCQUF1QjtRQUN2QixlQUFlO1FBQ2YsV0FBVztRQUNYLGVBQWU7UUFDZiwrQkFBK0IsYUFFeEIsK0JBQStCOzJIQUVqQyw0QkFBNEIsWUFWNUI7WUFDTCxZQUFZO1lBQ1osdUJBQXVCO1lBQ3ZCLGVBQWU7WUFDZixXQUFXO1lBQ1gsZUFBZTtZQUNmLCtCQUErQjtTQUNsQzs0RkFHUSw0QkFBNEI7a0JBWnhDLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUUsK0JBQStCLENBQUM7b0JBQ2hELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsK0JBQStCO3FCQUNsQztvQkFDRCxPQUFPLEVBQUUsQ0FBRSwrQkFBK0IsQ0FBQztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2VkaXQtZW50aXR5LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUgfSBmcm9tICcuLi8uLi9pbnB1dC9pbnB1dC5tb2R1bGUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICcuLi8uLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogWyBOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ01vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogWyBOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nTW9kdWxlIHt9Il19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBZXZELE1BQU0sT0FBTyw0QkFBNEI7OzBIQUE1Qiw0QkFBNEI7MkhBQTVCLDRCQUE0QixpQkFackIsK0JBQStCLGFBRTNDLFlBQVk7UUFDWix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLFdBQVc7UUFDWCxlQUFlO1FBQ2YsYUFBYTtRQUNiLCtCQUErQixhQUV4QiwrQkFBK0I7MkhBRWpDLDRCQUE0QixZQVg1QjtZQUNMLFlBQVk7WUFDWix1QkFBdUI7WUFDdkIsZUFBZTtZQUNmLFdBQVc7WUFDWCxlQUFlO1lBQ2YsYUFBYTtZQUNiLCtCQUErQjtTQUNsQzs0RkFHUSw0QkFBNEI7a0JBYnhDLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUUsK0JBQStCLENBQUM7b0JBQ2hELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYiwrQkFBK0I7cUJBQ2xDO29CQUNELE9BQU8sRUFBRSxDQUFFLCtCQUErQixDQUFDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlJbnB1dE1vZHVsZSB9IGZyb20gJy4uLy4uL2lucHV0L2lucHV0Lm1vZHVsZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJy4uLy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLm1vZHVsZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbIE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBOZ3hNYXRFbnRpdHlJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRUYWJzTW9kdWxlLFxuICAgICAgICBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nTW9kdWxlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbIE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUVkaXREaWFsb2dNb2R1bGUge30iXX0=
@@ -20,14 +20,14 @@ export class BaseDataBuilder extends BaseBuilder {
20
20
  }
21
21
  // eslint-disable-next-line jsdoc/require-jsdoc
22
22
  generateBaseData(data) {
23
- return new BaseDataInternal(data.title, data.displayColumns, data.EntityServiceClass, data.searchLabel ?? 'Search', data.createButtonLabel ?? 'Create', data.searchString ?? defaultSearchFunction, data.allowCreate ?? true, data.allowEdit ?? (() => true), data.allowDelete ?? (() => true), data.multiSelectActions ?? [], data.multiSelectLabel ?? 'Actions', data.EntityClass, data.edit, data.create);
23
+ return new BaseDataInternal(data.title, data.displayColumns, data.EntityServiceClass, data.searchLabel ?? 'Search', data.createButtonLabel ?? 'Create', data.searchString ?? defaultSearchFunction, data.allowCreate ?? (() => true), data.allowRead ?? (() => true), data.allowUpdate ?? (() => true), data.allowDelete ?? (() => true), data.multiSelectActions ?? [], data.multiSelectLabel ?? 'Actions', data.EntityClass, data.edit, data.create);
24
24
  }
25
25
  }
26
26
  /**
27
27
  * The internal TableData. Requires all default values the user can leave out.
28
28
  */
29
29
  export class BaseDataInternal {
30
- constructor(title, displayColumns, EntityServiceClass, searchLabel, createButtonLabel, searchString, allowCreate, allowEdit, allowDelete, multiSelectActions, multiSelectLabel, EntityClass, edit, create) {
30
+ constructor(title, displayColumns, EntityServiceClass, searchLabel, createButtonLabel, searchString, allowCreate, allowRead, allowUpdate, allowDelete, multiSelectActions, multiSelectLabel, EntityClass, edit, create) {
31
31
  this.title = title;
32
32
  this.displayColumns = displayColumns;
33
33
  this.EntityServiceClass = EntityServiceClass;
@@ -36,7 +36,8 @@ export class BaseDataInternal {
36
36
  this.createButtonLabel = createButtonLabel;
37
37
  this.searchString = searchString;
38
38
  this.allowCreate = allowCreate;
39
- this.allowEdit = allowEdit;
39
+ this.allowRead = allowRead;
40
+ this.allowUpdate = allowUpdate;
40
41
  this.allowDelete = allowDelete;
41
42
  this.multiSelectActions = multiSelectActions;
42
43
  this.multiSelectLabel = multiSelectLabel;
@@ -64,24 +65,26 @@ export class TableDataBuilder extends BaseBuilder {
64
65
  throw new Error(`The name "select" for a display column is reserved for the multi-select action functionality.
65
66
  Please choose a different name.`);
66
67
  }
67
- if ((data.baseData.allowEdit && data.baseData.allowEdit !== (() => false)
68
- || data.baseData.allowDelete && data.baseData.allowDelete !== (() => false)
69
- || data.baseData.allowCreate === true)
68
+ if ((data.baseData.allowCreate !== (() => false)
69
+ || data.baseData.allowRead !== (() => false)
70
+ || data.baseData.allowUpdate !== (() => false)
71
+ || data.baseData.allowDelete !== (() => false))
70
72
  && !data.baseData.EntityClass) {
71
73
  throw new Error(`
72
74
  Missing required Input data "EntityClass".
73
75
  You can only omit this value if you can neither create or update entities.`);
74
76
  }
75
- if (data.baseData.allowCreate !== false && !data.baseData.create && !data.createDialogData) {
77
+ if (data.baseData.allowCreate !== (() => false) && !data.baseData.create && !data.createDialogData) {
76
78
  throw new Error(`Missing required Input data "createDialogData".
77
79
  You can only omit this value when creation is disallowed or done with a custom create method.`);
78
80
  }
79
- if ((data.baseData.allowEdit !== (() => false)
81
+ if ((data.baseData.allowRead !== (() => false)
82
+ || data.baseData.allowUpdate !== (() => false)
80
83
  || data.baseData.allowDelete !== (() => false))
81
84
  && !data.baseData.edit
82
85
  && !data.editDialogData) {
83
86
  throw new Error(`Missing required Input data "editDialogData".
84
- You can only omit this value when editing and deleting is disallowed or done with a custom edit method.`);
87
+ You can only omit this value when viewing, editing and deleting is disallowed or done with a custom edit method.`);
85
88
  }
86
89
  }
87
90
  }
@@ -102,4 +105,4 @@ function defaultSearchFunction(entity) {
102
105
  .toLowerCase();
103
106
  return searchString;
104
107
  }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUE0QixNQUFNLDRDQUE0QyxDQUFDO0FBQy9HLE9BQU8sRUFBRSxxQkFBcUIsRUFBMEIsTUFBTSx3Q0FBd0MsQ0FBQztBQUd2RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHekQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBUTFCLFlBQ0ksUUFBc0MsRUFDdEMsZ0JBQTBDLEVBQzFDLGNBQWtEO1FBRWxELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN6QyxDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUNULFNBQVEsV0FBK0Q7SUFFdkUsWUFBWSxJQUEwQjtRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELCtDQUErQztJQUNyQyxnQkFBZ0IsQ0FBQyxJQUEwQjtRQUNqRCxPQUFPLElBQUksZ0JBQWdCLENBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsRUFDNUIsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsRUFDbEMsSUFBSSxDQUFDLFlBQVksSUFBSSxxQkFBcUIsRUFDMUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQ3hCLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDOUIsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNoQyxJQUFJLENBQUMsa0JBQWtCLElBQUksRUFBRSxFQUM3QixJQUFJLENBQUMsZ0JBQWdCLElBQUksU0FBUyxFQUNsQyxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxNQUFNLENBQ2QsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQStCekIsWUFDSSxLQUFhLEVBQ2IsY0FBMkMsRUFDM0Msa0JBQTZFLEVBQzdFLFdBQW1CLEVBQ25CLGlCQUF5QixFQUN6QixZQUE0QyxFQUM1QyxXQUFvQixFQUNwQixTQUEwQyxFQUMxQyxXQUE0QyxFQUM1QyxrQkFBbUQsRUFDbkQsZ0JBQXdCLEVBRXhCLFdBQTRDLEVBQzVDLElBQXNDLEVBQ3RDLE1BQXdDO1FBRXhDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFDVCxTQUFRLFdBQWlFO0lBRXpFLFlBQVksSUFBMkI7UUFDbkMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDckMsZ0JBQWdCLENBQUMsSUFBMkI7UUFDbEQsTUFBTSxnQkFBZ0IsR0FBNkIsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsSCxNQUFNLGNBQWMsR0FBdUMsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEgsTUFBTSxRQUFRLEdBQWlDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5RixPQUFPLElBQUksaUJBQWlCLENBQ3hCLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsY0FBYyxDQUNqQixDQUFDO0lBQ04sQ0FBQztJQUVELCtDQUErQztJQUM1QixhQUFhLENBQUMsSUFBMkI7UUFDeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxFQUFFO1lBQ2xILE1BQU0sSUFBSSxLQUFLLENBQ1g7Z0RBQ2dDLENBQ25DLENBQUM7U0FDTDtRQUNELElBQ0ksQ0FDSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQ3hDO2VBQ0UsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFDL0I7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDOzsyRkFFK0QsQ0FDOUUsQ0FBQztTQUNMO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4RixNQUFNLElBQUksS0FBSyxDQUNYOzhHQUM4RixDQUNqRyxDQUFDO1NBQ0w7UUFDRCxJQUNJLENBQ0ksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7ZUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FDakQ7ZUFDRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtlQUNuQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQ3pCO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FDWDt3SEFDd0csQ0FDM0csQ0FBQztTQUNMO0lBQ0wsQ0FBQztDQUNKO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHFCQUFxQixDQUFnRCxNQUFrQjtJQUM1RixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNuQyxNQUFNLENBQUMsQ0FBQyxXQUFtQixFQUFFLEdBQVcsRUFBRSxFQUFFO1FBQ3pDLE9BQU8sR0FBRyxXQUFXLEdBQUksTUFBa0MsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ3hFLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDTCxXQUFXLEVBQUUsQ0FBQztJQUNuQixPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlYXRlRGlhbG9nRGF0YUJ1aWxkZXIsIENyZWF0ZURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBFZGl0RGlhbG9nRGF0YUJ1aWxkZXIsIEVkaXREaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlRGF0YSwgRGlzcGxheUNvbHVtbiwgTXVsdGlTZWxlY3RBY3Rpb24sIFRhYmxlRGF0YSB9IGZyb20gJy4vdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UuYnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSwgRW50aXR5Q2xhc3NOZXdhYmxlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBUYWJsZURhdGEuIFJlcXVpcmVzIGFsbCBkZWZhdWx0IHZhbHVlcyB0aGUgdXNlciBjYW4gbGVhdmUgb3V0LlxuICovXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIFRhYmxlRGF0YTxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBiYXNlRGF0YTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZURpYWxvZ0RhdGE6IENyZWF0ZURpYWxvZ0RhdGFJbnRlcm5hbDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGVkaXREaWFsb2dEYXRhOiBFZGl0RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGJhc2VEYXRhOiBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LFxuICAgICAgICBjcmVhdGVEaWFsb2dEYXRhOiBDcmVhdGVEaWFsb2dEYXRhSW50ZXJuYWwsXG4gICAgICAgIGVkaXREaWFsb2dEYXRhOiBFZGl0RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuYmFzZURhdGEgPSBiYXNlRGF0YTtcbiAgICAgICAgdGhpcy5jcmVhdGVEaWFsb2dEYXRhID0gY3JlYXRlRGlhbG9nRGF0YTtcbiAgICAgICAgdGhpcy5lZGl0RGlhbG9nRGF0YSA9IGVkaXREaWFsb2dEYXRhO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgQnVpbGRlciBmb3IgdGhlIHRhYmxlIEJhc2VEYXRhLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgQmFzZURhdGFCdWlsZGVyPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIEJhc2VCdWlsZGVyPEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4sIEJhc2VEYXRhPEVudGl0eVR5cGU+PiB7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBCYXNlRGF0YTxFbnRpdHlUeXBlPikge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBnZW5lcmF0ZUJhc2VEYXRhKGRhdGE6IEJhc2VEYXRhPEVudGl0eVR5cGU+KTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiB7XG4gICAgICAgIHJldHVybiBuZXcgQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPihcbiAgICAgICAgICAgIGRhdGEudGl0bGUsXG4gICAgICAgICAgICBkYXRhLmRpc3BsYXlDb2x1bW5zLFxuICAgICAgICAgICAgZGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MsXG4gICAgICAgICAgICBkYXRhLnNlYXJjaExhYmVsID8/ICdTZWFyY2gnLFxuICAgICAgICAgICAgZGF0YS5jcmVhdGVCdXR0b25MYWJlbCA/PyAnQ3JlYXRlJyxcbiAgICAgICAgICAgIGRhdGEuc2VhcmNoU3RyaW5nID8/IGRlZmF1bHRTZWFyY2hGdW5jdGlvbixcbiAgICAgICAgICAgIGRhdGEuYWxsb3dDcmVhdGUgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGRhdGEuYWxsb3dFZGl0ID8/ICgoKSA9PiB0cnVlKSxcbiAgICAgICAgICAgIGRhdGEuYWxsb3dEZWxldGUgPz8gKCgpID0+IHRydWUpLFxuICAgICAgICAgICAgZGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMgPz8gW10sXG4gICAgICAgICAgICBkYXRhLm11bHRpU2VsZWN0TGFiZWwgPz8gJ0FjdGlvbnMnLFxuICAgICAgICAgICAgZGF0YS5FbnRpdHlDbGFzcyxcbiAgICAgICAgICAgIGRhdGEuZWRpdCxcbiAgICAgICAgICAgIGRhdGEuY3JlYXRlXG4gICAgICAgICk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBUYWJsZURhdGEuIFJlcXVpcmVzIGFsbCBkZWZhdWx0IHZhbHVlcyB0aGUgdXNlciBjYW4gbGVhdmUgb3V0LlxuICovXG5leHBvcnQgY2xhc3MgQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGltcGxlbWVudHMgQmFzZURhdGE8RW50aXR5VHlwZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGl0bGU6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IG5ldyAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT4gRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHNlYXJjaExhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgc2VhcmNoU3RyaW5nOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0NyZWF0ZTogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RWRpdDogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RGVsZXRlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbXVsdGlTZWxlY3RBY3Rpb25zOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbXVsdGlTZWxlY3RMYWJlbDogc3RyaW5nO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBFbnRpdHlDbGFzcz86IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGVkaXQ/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY3JlYXRlPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gdW5rbm93bjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICB0aXRsZTogc3RyaW5nLFxuICAgICAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPltdLFxuICAgICAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IG5ldyAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT4gRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPixcbiAgICAgICAgc2VhcmNoTGFiZWw6IHN0cmluZyxcbiAgICAgICAgY3JlYXRlQnV0dG9uTGFiZWw6IHN0cmluZyxcbiAgICAgICAgc2VhcmNoU3RyaW5nOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmcsXG4gICAgICAgIGFsbG93Q3JlYXRlOiBib29sZWFuLFxuICAgICAgICBhbGxvd0VkaXQ6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW4sXG4gICAgICAgIGFsbG93RGVsZXRlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuLFxuICAgICAgICBtdWx0aVNlbGVjdEFjdGlvbnM6IE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+W10sXG4gICAgICAgIG11bHRpU2VsZWN0TGFiZWw6IHN0cmluZyxcblxuICAgICAgICBFbnRpdHlDbGFzcz86IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAgICAgZWRpdD86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd24sXG4gICAgICAgIGNyZWF0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd24sXG4gICAgKSB7XG4gICAgICAgIHRoaXMudGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1ucyA9IGRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB0aGlzLkVudGl0eVNlcnZpY2VDbGFzcyA9IEVudGl0eVNlcnZpY2VDbGFzcztcbiAgICAgICAgdGhpcy5FbnRpdHlDbGFzcyA9IEVudGl0eUNsYXNzO1xuICAgICAgICB0aGlzLnNlYXJjaExhYmVsID0gc2VhcmNoTGFiZWw7XG4gICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uTGFiZWwgPSBjcmVhdGVCdXR0b25MYWJlbDtcbiAgICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPSBzZWFyY2hTdHJpbmc7XG4gICAgICAgIHRoaXMuYWxsb3dDcmVhdGUgPSBhbGxvd0NyZWF0ZTtcbiAgICAgICAgdGhpcy5hbGxvd0VkaXQgPSBhbGxvd0VkaXQ7XG4gICAgICAgIHRoaXMuYWxsb3dEZWxldGUgPSBhbGxvd0RlbGV0ZTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdEFjdGlvbnMgPSBtdWx0aVNlbGVjdEFjdGlvbnM7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RMYWJlbCA9IG11bHRpU2VsZWN0TGFiZWw7XG4gICAgICAgIHRoaXMuZWRpdCA9IGVkaXQ7XG4gICAgICAgIHRoaXMuY3JlYXRlID0gY3JlYXRlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgQnVpbGRlciBmb3IgdGhlIGNvbXBsZXRlIFRhYmxlRGF0YS4gU2V0cyBkZWZhdWx0IHZhbHVlcyBhbmQgdmFsaWRhdGVzIHVzZXIgaW5wdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFCdWlsZGVyPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIEJhc2VCdWlsZGVyPFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LCBUYWJsZURhdGE8RW50aXR5VHlwZT4+IHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPikge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBnZW5lcmF0ZUJhc2VEYXRhKGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+IHtcbiAgICAgICAgY29uc3QgY3JlYXRlRGlhbG9nRGF0YTogQ3JlYXRlRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENyZWF0ZURpYWxvZ0RhdGFCdWlsZGVyKGRhdGEuY3JlYXRlRGlhbG9nRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGVkaXREaWFsb2dEYXRhOiBFZGl0RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+ID0gbmV3IEVkaXREaWFsb2dEYXRhQnVpbGRlcihkYXRhLmVkaXREaWFsb2dEYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgYmFzZURhdGE6IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgQmFzZURhdGFCdWlsZGVyKGRhdGEuYmFzZURhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+KFxuICAgICAgICAgICAgYmFzZURhdGEsXG4gICAgICAgICAgICBjcmVhdGVEaWFsb2dEYXRhLFxuICAgICAgICAgICAgZWRpdERpYWxvZ0RhdGFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZUlucHV0KGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnM/Lmxlbmd0aCAmJiBkYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zLmZpbmQoZHAgPT4gZHAuZGlzcGxheU5hbWUgPT09ICdzZWxlY3QnKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBUaGUgbmFtZSBcInNlbGVjdFwiIGZvciBhIGRpc3BsYXkgY29sdW1uIGlzIHJlc2VydmVkIGZvciB0aGUgbXVsdGktc2VsZWN0IGFjdGlvbiBmdW5jdGlvbmFsaXR5LlxuICAgICAgICAgICAgICAgIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgbmFtZS5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBkYXRhLmJhc2VEYXRhLmFsbG93RWRpdCAmJiBkYXRhLmJhc2VEYXRhLmFsbG93RWRpdCAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dEZWxldGUgJiYgZGF0YS5iYXNlRGF0YS5hbGxvd0RlbGV0ZSAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dDcmVhdGUgPT09IHRydWVcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICYmICFkYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcbiAgICAgICAgICAgICAgICBNaXNzaW5nIHJlcXVpcmVkIElucHV0IGRhdGEgXCJFbnRpdHlDbGFzc1wiLlxuICAgICAgICAgICAgICAgIFlvdSBjYW4gb25seSBvbWl0IHRoaXMgdmFsdWUgaWYgeW91IGNhbiBuZWl0aGVyIGNyZWF0ZSBvciB1cGRhdGUgZW50aXRpZXMuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSAhPT0gZmFsc2UgJiYgIWRhdGEuYmFzZURhdGEuY3JlYXRlICYmICFkYXRhLmNyZWF0ZURpYWxvZ0RhdGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBJbnB1dCBkYXRhIFwiY3JlYXRlRGlhbG9nRGF0YVwiLlxuICAgICAgICAgICAgICAgIFlvdSBjYW4gb25seSBvbWl0IHRoaXMgdmFsdWUgd2hlbiBjcmVhdGlvbiBpcyBkaXNhbGxvd2VkIG9yIGRvbmUgd2l0aCBhIGN1c3RvbSBjcmVhdGUgbWV0aG9kLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIGRhdGEuYmFzZURhdGEuYWxsb3dFZGl0ICE9PSAoKCkgPT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgfHwgZGF0YS5iYXNlRGF0YS5hbGxvd0RlbGV0ZSAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgJiYgIWRhdGEuYmFzZURhdGEuZWRpdFxuICAgICAgICAgICAgJiYgIWRhdGEuZWRpdERpYWxvZ0RhdGFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgSW5wdXQgZGF0YSBcImVkaXREaWFsb2dEYXRhXCIuXG4gICAgICAgICAgICAgICAgWW91IGNhbiBvbmx5IG9taXQgdGhpcyB2YWx1ZSB3aGVuIGVkaXRpbmcgYW5kIGRlbGV0aW5nIGlzIGRpc2FsbG93ZWQgb3IgZG9uZSB3aXRoIGEgY3VzdG9tIGVkaXQgbWV0aG9kLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgc2VhcmNoIGZ1bmN0aW9uIHRha2VuIGZyb20gZ29vZ2xlcyBtYXQgdGFibGUuXG4gKiBUaGlzIHdpbGwgYmUgdXNlZCBpZiBubyBjdXN0b20gc2VhcmNoIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IHRoZSBjb25maWd1cmF0aW9uLlxuICpcbiAqIEl0IGdlbmVyYXRlcyBhIHN0cmluZyBmcm9tIGFuIGVudGl0eSB3aGljaCBpcyB0aGVuIHVzZWQgdG8gY29tcGFyZSBpdCB0byB0aGUgc2VhcmNoIGlucHV0LlxuICpcbiAqIEBwYXJhbSBlbnRpdHkgLSBBbiBlbnRpdHkgdGhhdCBpcyBpbiB0aGUgc2VhcmNoLlxuICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBzdHJpbmcgb2YgdGhlIGdpdmVuIGVudGl0eSB1c2VkIGZvciBjb21wYXJpc29uIHdpdGggdGhlIHNlYXJjaCBpbnB1dC5cbiAqL1xuZnVuY3Rpb24gZGVmYXVsdFNlYXJjaEZ1bmN0aW9uPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4oZW50aXR5OiBFbnRpdHlUeXBlKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWFyY2hTdHJpbmcgPSBPYmplY3Qua2V5cyhlbnRpdHkpXG4gICAgICAgIC5yZWR1Y2UoKGN1cnJlbnRUZXJtOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7Y3VycmVudFRlcm19JHsoZW50aXR5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldfeKXrGA7XG4gICAgICAgIH0sICcnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gc2VhcmNoU3RyaW5nO1xufSJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUE0QixNQUFNLDRDQUE0QyxDQUFDO0FBQy9HLE9BQU8sRUFBRSxxQkFBcUIsRUFBMEIsTUFBTSx3Q0FBd0MsQ0FBQztBQUd2RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHekQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBUTFCLFlBQ0ksUUFBc0MsRUFDdEMsZ0JBQTBDLEVBQzFDLGNBQWtEO1FBRWxELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN6QyxDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUNULFNBQVEsV0FBK0Q7SUFFdkUsWUFBWSxJQUEwQjtRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELCtDQUErQztJQUNyQyxnQkFBZ0IsQ0FBQyxJQUEwQjtRQUNqRCxPQUFPLElBQUksZ0JBQWdCLENBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsRUFDNUIsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsRUFDbEMsSUFBSSxDQUFDLFlBQVksSUFBSSxxQkFBcUIsRUFDMUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNoQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQzlCLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDaEMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNoQyxJQUFJLENBQUMsa0JBQWtCLElBQUksRUFBRSxFQUM3QixJQUFJLENBQUMsZ0JBQWdCLElBQUksU0FBUyxFQUNsQyxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxNQUFNLENBQ2QsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQWlDekIsWUFDSSxLQUFhLEVBQ2IsY0FBMkMsRUFDM0Msa0JBQTZFLEVBQzdFLFdBQW1CLEVBQ25CLGlCQUF5QixFQUN6QixZQUE0QyxFQUM1QyxXQUEwQixFQUMxQixTQUEwQyxFQUMxQyxXQUE0QyxFQUM1QyxXQUE0QyxFQUM1QyxrQkFBbUQsRUFDbkQsZ0JBQXdCLEVBQ3hCLFdBQTRDLEVBQzVDLElBQXNDLEVBQ3RDLE1BQXdDO1FBRXhDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFDVCxTQUFRLFdBQWlFO0lBRXpFLFlBQVksSUFBMkI7UUFDbkMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDckMsZ0JBQWdCLENBQUMsSUFBMkI7UUFDbEQsTUFBTSxnQkFBZ0IsR0FBNkIsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsSCxNQUFNLGNBQWMsR0FBdUMsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEgsTUFBTSxRQUFRLEdBQWlDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5RixPQUFPLElBQUksaUJBQWlCLENBQ3hCLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsY0FBYyxDQUNqQixDQUFDO0lBQ04sQ0FBQztJQUVELCtDQUErQztJQUM1QixhQUFhLENBQUMsSUFBMkI7UUFDeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxFQUFFO1lBQ2xILE1BQU0sSUFBSSxLQUFLLENBQ1g7Z0RBQ2dDLENBQ25DLENBQUM7U0FDTDtRQUNELElBQ0ksQ0FDSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUNqRDtlQUNFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQy9CO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQzs7MkZBRStELENBQzlFLENBQUM7U0FDTDtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ2hHLE1BQU0sSUFBSSxLQUFLLENBQ1g7OEdBQzhGLENBQ2pHLENBQUM7U0FDTDtRQUNELElBQ0ksQ0FDSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUNqRDtlQUNFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO2VBQ25CLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFDekI7WUFDRSxNQUFNLElBQUksS0FBSyxDQUNYO2lJQUNpSCxDQUNwSCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0NBQ0o7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMscUJBQXFCLENBQWdELE1BQWtCO0lBQzVGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ25DLE1BQU0sQ0FBQyxDQUFDLFdBQW1CLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDekMsT0FBTyxHQUFHLFdBQVcsR0FBSSxNQUFrQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDeEUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUNMLFdBQVcsRUFBRSxDQUFDO0lBQ25CLE9BQU8sWUFBWSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVhdGVEaWFsb2dEYXRhQnVpbGRlciwgQ3JlYXRlRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IEVkaXREaWFsb2dEYXRhQnVpbGRlciwgRWRpdERpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IEJhc2VEYXRhLCBEaXNwbGF5Q29sdW1uLCBNdWx0aVNlbGVjdEFjdGlvbiwgVGFibGVEYXRhIH0gZnJvbSAnLi90YWJsZS1kYXRhJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS5idWlsZGVyJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5cbi8qKlxuICogVGhlIGludGVybmFsIFRhYmxlRGF0YS4gUmVxdWlyZXMgYWxsIGRlZmF1bHQgdmFsdWVzIHRoZSB1c2VyIGNhbiBsZWF2ZSBvdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGltcGxlbWVudHMgVGFibGVEYXRhPEVudGl0eVR5cGU+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGJhc2VEYXRhOiBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY3JlYXRlRGlhbG9nRGF0YTogQ3JlYXRlRGlhbG9nRGF0YUludGVybmFsO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZWRpdERpYWxvZ0RhdGE6IEVkaXREaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgYmFzZURhdGE6IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4sXG4gICAgICAgIGNyZWF0ZURpYWxvZ0RhdGE6IENyZWF0ZURpYWxvZ0RhdGFJbnRlcm5hbCxcbiAgICAgICAgZWRpdERpYWxvZ0RhdGE6IEVkaXREaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT5cbiAgICApIHtcbiAgICAgICAgdGhpcy5iYXNlRGF0YSA9IGJhc2VEYXRhO1xuICAgICAgICB0aGlzLmNyZWF0ZURpYWxvZ0RhdGEgPSBjcmVhdGVEaWFsb2dEYXRhO1xuICAgICAgICB0aGlzLmVkaXREaWFsb2dEYXRhID0gZWRpdERpYWxvZ0RhdGE7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBCdWlsZGVyIGZvciB0aGUgdGFibGUgQmFzZURhdGEuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlRGF0YUJ1aWxkZXI8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgQmFzZUJ1aWxkZXI8QmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiwgQmFzZURhdGE8RW50aXR5VHlwZT4+IHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IEJhc2VEYXRhPEVudGl0eVR5cGU+KSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlQmFzZURhdGEoZGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4pOiBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+KFxuICAgICAgICAgICAgZGF0YS50aXRsZSxcbiAgICAgICAgICAgIGRhdGEuZGlzcGxheUNvbHVtbnMsXG4gICAgICAgICAgICBkYXRhLkVudGl0eVNlcnZpY2VDbGFzcyxcbiAgICAgICAgICAgIGRhdGEuc2VhcmNoTGFiZWwgPz8gJ1NlYXJjaCcsXG4gICAgICAgICAgICBkYXRhLmNyZWF0ZUJ1dHRvbkxhYmVsID8/ICdDcmVhdGUnLFxuICAgICAgICAgICAgZGF0YS5zZWFyY2hTdHJpbmcgPz8gZGVmYXVsdFNlYXJjaEZ1bmN0aW9uLFxuICAgICAgICAgICAgZGF0YS5hbGxvd0NyZWF0ZSA/PyAoKCkgPT4gdHJ1ZSksXG4gICAgICAgICAgICBkYXRhLmFsbG93UmVhZCA/PyAoKCkgPT4gdHJ1ZSksXG4gICAgICAgICAgICBkYXRhLmFsbG93VXBkYXRlID8/ICgoKSA9PiB0cnVlKSxcbiAgICAgICAgICAgIGRhdGEuYWxsb3dEZWxldGUgPz8gKCgpID0+IHRydWUpLFxuICAgICAgICAgICAgZGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMgPz8gW10sXG4gICAgICAgICAgICBkYXRhLm11bHRpU2VsZWN0TGFiZWwgPz8gJ0FjdGlvbnMnLFxuICAgICAgICAgICAgZGF0YS5FbnRpdHlDbGFzcyxcbiAgICAgICAgICAgIGRhdGEuZWRpdCxcbiAgICAgICAgICAgIGRhdGEuY3JlYXRlXG4gICAgICAgICk7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBUYWJsZURhdGEuIFJlcXVpcmVzIGFsbCBkZWZhdWx0IHZhbHVlcyB0aGUgdXNlciBjYW4gbGVhdmUgb3V0LlxuICovXG5leHBvcnQgY2xhc3MgQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGltcGxlbWVudHMgQmFzZURhdGE8RW50aXR5VHlwZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGl0bGU6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IG5ldyAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT4gRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHNlYXJjaExhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGVCdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgc2VhcmNoU3RyaW5nOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd0NyZWF0ZTogKCkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93UmVhZDogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93VXBkYXRlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEZWxldGU6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtdWx0aVNlbGVjdEFjdGlvbnM6IE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtdWx0aVNlbGVjdExhYmVsOiBzdHJpbmc7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eUNsYXNzPzogRW50aXR5Q2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZWRpdD86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd247XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGU+W10sXG4gICAgICAgIEVudGl0eVNlcnZpY2VDbGFzczogbmV3IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+LFxuICAgICAgICBzZWFyY2hMYWJlbDogc3RyaW5nLFxuICAgICAgICBjcmVhdGVCdXR0b25MYWJlbDogc3RyaW5nLFxuICAgICAgICBzZWFyY2hTdHJpbmc6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZyxcbiAgICAgICAgYWxsb3dDcmVhdGU6ICgpID0+IGJvb2xlYW4sXG4gICAgICAgIGFsbG93UmVhZDogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbixcbiAgICAgICAgYWxsb3dVcGRhdGU6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW4sXG4gICAgICAgIGFsbG93RGVsZXRlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuLFxuICAgICAgICBtdWx0aVNlbGVjdEFjdGlvbnM6IE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+W10sXG4gICAgICAgIG11bHRpU2VsZWN0TGFiZWw6IHN0cmluZyxcbiAgICAgICAgRW50aXR5Q2xhc3M/OiBFbnRpdHlDbGFzc05ld2FibGU8RW50aXR5VHlwZT4sXG4gICAgICAgIGVkaXQ/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duLFxuICAgICAgICBjcmVhdGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duLFxuICAgICkge1xuICAgICAgICB0aGlzLnRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMgPSBkaXNwbGF5Q29sdW1ucztcbiAgICAgICAgdGhpcy5FbnRpdHlTZXJ2aWNlQ2xhc3MgPSBFbnRpdHlTZXJ2aWNlQ2xhc3M7XG4gICAgICAgIHRoaXMuRW50aXR5Q2xhc3MgPSBFbnRpdHlDbGFzcztcbiAgICAgICAgdGhpcy5zZWFyY2hMYWJlbCA9IHNlYXJjaExhYmVsO1xuICAgICAgICB0aGlzLmNyZWF0ZUJ1dHRvbkxhYmVsID0gY3JlYXRlQnV0dG9uTGFiZWw7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gc2VhcmNoU3RyaW5nO1xuICAgICAgICB0aGlzLmFsbG93Q3JlYXRlID0gYWxsb3dDcmVhdGU7XG4gICAgICAgIHRoaXMuYWxsb3dSZWFkID0gYWxsb3dSZWFkO1xuICAgICAgICB0aGlzLmFsbG93VXBkYXRlID0gYWxsb3dVcGRhdGU7XG4gICAgICAgIHRoaXMuYWxsb3dEZWxldGUgPSBhbGxvd0RlbGV0ZTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdEFjdGlvbnMgPSBtdWx0aVNlbGVjdEFjdGlvbnM7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RMYWJlbCA9IG11bHRpU2VsZWN0TGFiZWw7XG4gICAgICAgIHRoaXMuZWRpdCA9IGVkaXQ7XG4gICAgICAgIHRoaXMuY3JlYXRlID0gY3JlYXRlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgQnVpbGRlciBmb3IgdGhlIGNvbXBsZXRlIFRhYmxlRGF0YS4gU2V0cyBkZWZhdWx0IHZhbHVlcyBhbmQgdmFsaWRhdGVzIHVzZXIgaW5wdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFCdWlsZGVyPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIEJhc2VCdWlsZGVyPFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LCBUYWJsZURhdGE8RW50aXR5VHlwZT4+IHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPikge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBnZW5lcmF0ZUJhc2VEYXRhKGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+IHtcbiAgICAgICAgY29uc3QgY3JlYXRlRGlhbG9nRGF0YTogQ3JlYXRlRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENyZWF0ZURpYWxvZ0RhdGFCdWlsZGVyKGRhdGEuY3JlYXRlRGlhbG9nRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGVkaXREaWFsb2dEYXRhOiBFZGl0RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+ID0gbmV3IEVkaXREaWFsb2dEYXRhQnVpbGRlcihkYXRhLmVkaXREaWFsb2dEYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgYmFzZURhdGE6IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgQmFzZURhdGFCdWlsZGVyKGRhdGEuYmFzZURhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+KFxuICAgICAgICAgICAgYmFzZURhdGEsXG4gICAgICAgICAgICBjcmVhdGVEaWFsb2dEYXRhLFxuICAgICAgICAgICAgZWRpdERpYWxvZ0RhdGFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZUlucHV0KGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnM/Lmxlbmd0aCAmJiBkYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zLmZpbmQoZHAgPT4gZHAuZGlzcGxheU5hbWUgPT09ICdzZWxlY3QnKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBUaGUgbmFtZSBcInNlbGVjdFwiIGZvciBhIGRpc3BsYXkgY29sdW1uIGlzIHJlc2VydmVkIGZvciB0aGUgbXVsdGktc2VsZWN0IGFjdGlvbiBmdW5jdGlvbmFsaXR5LlxuICAgICAgICAgICAgICAgIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgbmFtZS5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlICE9PSAoKCkgPT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgfHwgZGF0YS5iYXNlRGF0YS5hbGxvd1JlYWQgIT09ICgoKSA9PiBmYWxzZSlcbiAgICAgICAgICAgICAgICB8fCBkYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlICE9PSAoKCkgPT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgfHwgZGF0YS5iYXNlRGF0YS5hbGxvd0RlbGV0ZSAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgJiYgIWRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3NcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICAgICAgICAgIE1pc3NpbmcgcmVxdWlyZWQgSW5wdXQgZGF0YSBcIkVudGl0eUNsYXNzXCIuXG4gICAgICAgICAgICAgICAgWW91IGNhbiBvbmx5IG9taXQgdGhpcyB2YWx1ZSBpZiB5b3UgY2FuIG5laXRoZXIgY3JlYXRlIG9yIHVwZGF0ZSBlbnRpdGllcy5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlICE9PSAoKCkgPT4gZmFsc2UpICYmICFkYXRhLmJhc2VEYXRhLmNyZWF0ZSAmJiAhZGF0YS5jcmVhdGVEaWFsb2dEYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgSW5wdXQgZGF0YSBcImNyZWF0ZURpYWxvZ0RhdGFcIi5cbiAgICAgICAgICAgICAgICBZb3UgY2FuIG9ubHkgb21pdCB0aGlzIHZhbHVlIHdoZW4gY3JlYXRpb24gaXMgZGlzYWxsb3dlZCBvciBkb25lIHdpdGggYSBjdXN0b20gY3JlYXRlIG1ldGhvZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBkYXRhLmJhc2VEYXRhLmFsbG93UmVhZCAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dVcGRhdGUgIT09ICgoKSA9PiBmYWxzZSlcbiAgICAgICAgICAgICAgICB8fCBkYXRhLmJhc2VEYXRhLmFsbG93RGVsZXRlICE9PSAoKCkgPT4gZmFsc2UpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAmJiAhZGF0YS5iYXNlRGF0YS5lZGl0XG4gICAgICAgICAgICAmJiAhZGF0YS5lZGl0RGlhbG9nRGF0YVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBJbnB1dCBkYXRhIFwiZWRpdERpYWxvZ0RhdGFcIi5cbiAgICAgICAgICAgICAgICBZb3UgY2FuIG9ubHkgb21pdCB0aGlzIHZhbHVlIHdoZW4gdmlld2luZywgZWRpdGluZyBhbmQgZGVsZXRpbmcgaXMgZGlzYWxsb3dlZCBvciBkb25lIHdpdGggYSBjdXN0b20gZWRpdCBtZXRob2QuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBzZWFyY2ggZnVuY3Rpb24gdGFrZW4gZnJvbSBnb29nbGVzIG1hdCB0YWJsZS5cbiAqIFRoaXMgd2lsbCBiZSB1c2VkIGlmIG5vIGN1c3RvbSBzZWFyY2ggZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkgdGhlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogSXQgZ2VuZXJhdGVzIGEgc3RyaW5nIGZyb20gYW4gZW50aXR5IHdoaWNoIGlzIHRoZW4gdXNlZCB0byBjb21wYXJlIGl0IHRvIHRoZSBzZWFyY2ggaW5wdXQuXG4gKlxuICogQHBhcmFtIGVudGl0eSAtIEFuIGVudGl0eSB0aGF0IGlzIGluIHRoZSBzZWFyY2guXG4gKiBAcmV0dXJucyBUaGUgZ2VuZXJhdGVkIHN0cmluZyBvZiB0aGUgZ2l2ZW4gZW50aXR5IHVzZWQgZm9yIGNvbXBhcmlzb24gd2l0aCB0aGUgc2VhcmNoIGlucHV0LlxuICovXG5mdW5jdGlvbiBkZWZhdWx0U2VhcmNoRnVuY3Rpb248RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PihlbnRpdHk6IEVudGl0eVR5cGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlYXJjaFN0cmluZyA9IE9iamVjdC5rZXlzKGVudGl0eSlcbiAgICAgICAgLnJlZHVjZSgoY3VycmVudFRlcm06IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgJHtjdXJyZW50VGVybX0keyhlbnRpdHkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV194pesYDtcbiAgICAgICAgfSwgJycpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBzZWFyY2hTdHJpbmc7XG59Il19