@valtimo/dossier-management 12.6.0 → 12.7.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 (33) hide show
  1. package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +1 -1
  2. package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +1 -1
  3. package/esm2022/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.mjs +13 -8
  4. package/esm2022/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.mjs +17 -12
  5. package/esm2022/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.mjs +15 -10
  6. package/esm2022/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.mjs +14 -9
  7. package/esm2022/lib/components/dossier-management-widget-configurators/index.mjs +4 -3
  8. package/esm2022/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.mjs +100 -0
  9. package/esm2022/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.mjs +14 -9
  10. package/esm2022/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.mjs +12 -1
  11. package/esm2022/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.mjs +2 -2
  12. package/esm2022/lib/services/widget-wizard.service.mjs +5 -2
  13. package/fesm2022/valtimo-dossier-management.mjs +482 -368
  14. package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
  15. package/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.d.ts +4 -1
  16. package/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.d.ts.map +1 -1
  17. package/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.d.ts +8 -5
  18. package/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.d.ts.map +1 -1
  19. package/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.d.ts +6 -2
  20. package/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.d.ts.map +1 -1
  21. package/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.d.ts +4 -1
  22. package/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.d.ts.map +1 -1
  23. package/lib/components/dossier-management-widget-configurators/index.d.ts +3 -2
  24. package/lib/components/dossier-management-widget-configurators/index.d.ts.map +1 -1
  25. package/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.d.ts +29 -0
  26. package/lib/components/dossier-management-widget-configurators/process-selector/dossier-management-widget-process-selector.component.d.ts.map +1 -0
  27. package/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.d.ts +4 -1
  28. package/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.d.ts.map +1 -1
  29. package/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.d.ts +1 -0
  30. package/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.d.ts.map +1 -1
  31. package/lib/services/widget-wizard.service.d.ts +2 -1
  32. package/lib/services/widget-wizard.service.d.ts.map +1 -1
  33. package/package.json +1 -1
@@ -13,9 +13,10 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export * from './fields/dossier-management-widget-fields.component';
16
+ export * from './collection/dossier-management-widget-collection.component';
17
17
  export * from './custom/dossier-management-widget-custom.component';
18
+ export * from './fields/dossier-management-widget-fields.component';
18
19
  export * from './formio/dossier-management-widget-formio.component';
20
+ export * from './process-selector/dossier-management-widget-process-selector.component';
19
21
  export * from './table/dossier-management-widget-table.component';
20
- export * from './collection/dossier-management-widget-collection.component';
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb25maWd1cmF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDZEQUE2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9maWVsZHMvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1maWVsZHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY3VzdG9tL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY3VzdG9tLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1pby9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZvcm1pby5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb24vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudCc7XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb25maWd1cmF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHlFQUF5RSxDQUFDO0FBQ3hGLGNBQWMsbURBQW1ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbGxlY3Rpb24vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2N1c3RvbS9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWN1c3RvbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9maWVsZHMvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1maWVsZHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWlvL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtZm9ybWlvLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2Nlc3Mtc2VsZWN0b3IvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1wcm9jZXNzLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGUuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,100 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { TranslateModule } from '@ngx-translate/core';
5
+ import { DropdownModule, InputModule } from 'carbon-components-angular';
6
+ import { BehaviorSubject, debounceTime, map, startWith, Subscription, switchMap, } from 'rxjs';
7
+ import { CARBON_THEME, CurrentCarbonTheme } from '@valtimo/components';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@valtimo/components";
10
+ import * as i2 from "@valtimo/document";
11
+ import * as i3 from "@angular/forms";
12
+ import * as i4 from "../../../services";
13
+ import * as i5 from "@angular/common";
14
+ import * as i6 from "@ngx-translate/core";
15
+ import * as i7 from "carbon-components-angular";
16
+ export class DossierManagementWidgetProcessSelectorComponent {
17
+ set documentDefinitionName(value) {
18
+ this._documentDefinitionName$.next(value);
19
+ }
20
+ constructor(cdsThemeService, documentService, fb, widgetWizardService) {
21
+ this.cdsThemeService = cdsThemeService;
22
+ this.documentService = documentService;
23
+ this.fb = fb;
24
+ this.widgetWizardService = widgetWizardService;
25
+ this._documentDefinitionName$ = new BehaviorSubject(null);
26
+ this.formGroup = this.fb.group({
27
+ name: this.fb.control({
28
+ value: this.widgetWizardService.widgetActions()?.[0]?.name ?? '',
29
+ disabled: !this.widgetWizardService.widgetActions()?.length,
30
+ }),
31
+ processDefinitionKey: this.fb.control({
32
+ content: '',
33
+ key: this.widgetWizardService.widgetActions()?.[0]?.processDefinitionKey,
34
+ selected: false,
35
+ }),
36
+ });
37
+ this.processDefinitionItems$ = this._documentDefinitionName$.pipe(switchMap((documentDefinitionName) => this.documentService.findProcessDocumentDefinitionsByStartableByUser(documentDefinitionName ?? '', true)), map((processDocumentDefinitions) => {
38
+ const selectedProcessKey = this.widgetWizardService.editMode()
39
+ ? this.widgetWizardService.widgetActions()?.[0]?.processDefinitionKey
40
+ : undefined;
41
+ return processDocumentDefinitions.map((definition) => {
42
+ const mappedItem = {
43
+ content: definition.processName,
44
+ key: definition.id.processDefinitionKey,
45
+ selected: selectedProcessKey === definition.id.processDefinitionKey,
46
+ };
47
+ if (mappedItem.selected)
48
+ this.formGroup.patchValue({ processDefinitionKey: mappedItem }, { emitEvent: false });
49
+ return mappedItem;
50
+ });
51
+ }), startWith([]));
52
+ this.theme$ = this.cdsThemeService.currentTheme$.pipe(map((theme) => theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90));
53
+ this._subscriptions = new Subscription();
54
+ }
55
+ ngOnInit() {
56
+ this._subscriptions.add(this.formGroup.valueChanges
57
+ .pipe(debounceTime(100))
58
+ .subscribe((changes) => {
59
+ const { name, processDefinitionKey } = changes;
60
+ this.widgetWizardService.widgetActions.update((value) => {
61
+ if (!value)
62
+ return [
63
+ {
64
+ name: !name ? processDefinitionKey?.content : name,
65
+ processDefinitionKey: processDefinitionKey?.key,
66
+ },
67
+ ];
68
+ const edittedProcess = value.find((process) => process.processDefinitionKey === processDefinitionKey?.key);
69
+ return !!edittedProcess
70
+ ? value.map((process) => process.processDefinitionKey === edittedProcess.processDefinitionKey
71
+ ? {
72
+ ...process,
73
+ name: !name ? processDefinitionKey?.content : name,
74
+ }
75
+ : process)
76
+ : [
77
+ ...value,
78
+ {
79
+ name: !name ? processDefinitionKey?.content : name,
80
+ processDefinitionKey: processDefinitionKey?.key,
81
+ },
82
+ ];
83
+ });
84
+ }));
85
+ }
86
+ onProcessSelected() {
87
+ if (!this.formGroup.get('name')?.disabled)
88
+ return;
89
+ this.formGroup.get('name')?.enable();
90
+ }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetProcessSelectorComponent, deps: [{ token: i1.CdsThemeService }, { token: i2.DocumentService }, { token: i3.FormBuilder }, { token: i4.WidgetWizardService }], target: i0.ɵɵFactoryTarget.Component }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementWidgetProcessSelectorComponent, isStandalone: true, selector: "valtimo-dossier-management-widget-process-selector", inputs: { documentDefinitionName: "documentDefinitionName" }, ngImport: i0, template: "<form\n [attr.data-carbon-theme]=\"theme$ | async\"\n [formGroup]=\"formGroup\"\n class=\"valtimo-dossier-management-widget-process-selector\"\n>\n <cds-dropdown\n [label]=\"'widgetTabManagement.processes.buttonTextLabel' | translate\"\n [placeholder]=\"'widgetTabManagement.processes.selectorPlaceholder' | translate\"\n formControlName=\"processDefinitionKey\"\n (selected)=\"onProcessSelected()\"\n >\n <cds-dropdown-list [items]=\"processDefinitionItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-text-label>\n {{ 'widgetTabManagement.processes.buttonTextLabel' | translate }}\n\n <input\n cdsText\n type=\"text\"\n formControlName=\"name\"\n [placeholder]=\"'widgetTabManagement.processes.buttonTextPlaceholder' | translate\"\n />\n </cds-text-label>\n</form>\n", styles: [".valtimo-dossier-management-widget-process-selector{display:flex;gap:16px}.valtimo-dossier-management-widget-process-selector>*{max-width:288px;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i7.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i7.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i7.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i7.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
93
+ }
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetProcessSelectorComponent, decorators: [{
95
+ type: Component,
96
+ args: [{ selector: 'valtimo-dossier-management-widget-process-selector', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, DropdownModule, InputModule, ReactiveFormsModule], template: "<form\n [attr.data-carbon-theme]=\"theme$ | async\"\n [formGroup]=\"formGroup\"\n class=\"valtimo-dossier-management-widget-process-selector\"\n>\n <cds-dropdown\n [label]=\"'widgetTabManagement.processes.buttonTextLabel' | translate\"\n [placeholder]=\"'widgetTabManagement.processes.selectorPlaceholder' | translate\"\n formControlName=\"processDefinitionKey\"\n (selected)=\"onProcessSelected()\"\n >\n <cds-dropdown-list [items]=\"processDefinitionItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n\n <cds-text-label>\n {{ 'widgetTabManagement.processes.buttonTextLabel' | translate }}\n\n <input\n cdsText\n type=\"text\"\n formControlName=\"name\"\n [placeholder]=\"'widgetTabManagement.processes.buttonTextPlaceholder' | translate\"\n />\n </cds-text-label>\n</form>\n", styles: [".valtimo-dossier-management-widget-process-selector{display:flex;gap:16px}.valtimo-dossier-management-widget-process-selector>*{max-width:288px;width:100%}\n"] }]
97
+ }], ctorParameters: () => [{ type: i1.CdsThemeService }, { type: i2.DocumentService }, { type: i3.FormBuilder }, { type: i4.WidgetWizardService }], propDecorators: { documentDefinitionName: [{
98
+ type: Input
99
+ }] } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1wcm9jZXNzLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbmZpZ3VyYXRvcnMvcHJvY2Vzcy1zZWxlY3Rvci9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXByb2Nlc3Mtc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy9wcm9jZXNzLXNlbGVjdG9yL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtcHJvY2Vzcy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFjLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3BELE9BQU8sRUFBQyxjQUFjLEVBQUUsV0FBVyxFQUFXLE1BQU0sMkJBQTJCLENBQUM7QUFDaEYsT0FBTyxFQUNMLGVBQWUsRUFDZixZQUFZLEVBQ1osR0FBRyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFDLFlBQVksRUFBbUIsa0JBQWtCLEVBQUMsTUFBTSxx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O3dCQUNFLEdBQUcsS0FBSzt3QkFDUjs0QkFDRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTs0QkFDbEQsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsR0FBRzt5QkFDaEQ7cUJBQ0YsQ0FBQztZQUNSLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUNGLENBQ0osQ0FBQztJQUNKLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVE7WUFBRSxPQUFPO1FBRWxELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3ZDLENBQUM7K0dBL0dVLCtDQUErQzttR0FBL0MsK0NBQStDLDRLQzNCNUQsbzBCQXlCQSxzTkRBWSxZQUFZLG1GQUFFLGVBQWUsMkZBQUUsY0FBYyxnc0JBQUUsV0FBVywyYUFBRSxtQkFBbUI7OzRGQUU5RSwrQ0FBK0M7a0JBUjNELFNBQVM7K0JBQ0Usb0RBQW9ELG1CQUc3Qyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQzs4S0FJdEUsc0JBQXNCO3NCQUF6QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtEb2N1bWVudFNlcnZpY2UsIFByb2Nlc3NEb2N1bWVudERlZmluaXRpb259IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7Q2FzZVdpZGdldEFjdGlvbn0gZnJvbSAnQHZhbHRpbW8vZG9zc2llcic7XG5pbXBvcnQge0Ryb3Bkb3duTW9kdWxlLCBJbnB1dE1vZHVsZSwgTGlzdEl0ZW19IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1dpZGdldFdpemFyZFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7Q0FSQk9OX1RIRU1FLCBDZHNUaGVtZVNlcnZpY2UsIEN1cnJlbnRDYXJib25UaGVtZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1wcm9jZXNzLXNlbGVjdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtcHJvY2Vzcy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXByb2Nlc3Mtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBEcm9wZG93bk1vZHVsZSwgSW5wdXRNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudFdpZGdldFByb2Nlc3NTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50RGVmaW5pdGlvbk5hbWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgQElucHV0KCkgcHVibGljIHNldCBkb2N1bWVudERlZmluaXRpb25OYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kb2N1bWVudERlZmluaXRpb25OYW1lJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICBuYW1lOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPih7XG4gICAgICB2YWx1ZTogdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldEFjdGlvbnMoKT8uWzBdPy5uYW1lID8/ICcnLFxuICAgICAgZGlzYWJsZWQ6ICF0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0QWN0aW9ucygpPy5sZW5ndGgsXG4gICAgfSksXG4gICAgcHJvY2Vzc0RlZmluaXRpb25LZXk6IHRoaXMuZmIuY29udHJvbDxMaXN0SXRlbT4oe1xuICAgICAgY29udGVudDogJycsXG4gICAgICBrZXk6IHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRBY3Rpb25zKCk/LlswXT8ucHJvY2Vzc0RlZmluaXRpb25LZXksXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgfSksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9jZXNzRGVmaW5pdGlvbkl0ZW1zJDogT2JzZXJ2YWJsZTxMaXN0SXRlbVtdPiA9XG4gICAgdGhpcy5fZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nIHwgbnVsbCkgPT5cbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZmluZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zQnlTdGFydGFibGVCeVVzZXIoXG4gICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZSA/PyAnJyxcbiAgICAgICAgICB0cnVlXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBtYXAoKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uW10pID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQcm9jZXNzS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLndpZGdldFdpemFyZFNlcnZpY2UuZWRpdE1vZGUoKVxuICAgICAgICAgID8gdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldEFjdGlvbnMoKT8uWzBdPy5wcm9jZXNzRGVmaW5pdGlvbktleVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5tYXAoKGRlZmluaXRpb246IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBtYXBwZWRJdGVtOiBMaXN0SXRlbSA9IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IGRlZmluaXRpb24ucHJvY2Vzc05hbWUsXG4gICAgICAgICAgICBrZXk6IGRlZmluaXRpb24uaWQucHJvY2Vzc0RlZmluaXRpb25LZXksXG4gICAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWRQcm9jZXNzS2V5ID09PSBkZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5LFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAobWFwcGVkSXRlbS5zZWxlY3RlZClcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe3Byb2Nlc3NEZWZpbml0aW9uS2V5OiBtYXBwZWRJdGVtfSwge2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgICAgICAgIHJldHVybiBtYXBwZWRJdGVtO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgc3RhcnRXaXRoKFtdKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lJCA9IHRoaXMuY2RzVGhlbWVTZXJ2aWNlLmN1cnJlbnRUaGVtZSQucGlwZShcbiAgICBtYXAoKHRoZW1lOiBDdXJyZW50Q2FyYm9uVGhlbWUpID0+XG4gICAgICB0aGVtZSA9PT0gQ3VycmVudENhcmJvblRoZW1lLkcxMCA/IENBUkJPTl9USEVNRS5XSElURSA6IENBUkJPTl9USEVNRS5HOTBcbiAgICApXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkc1RoZW1lU2VydmljZTogQ2RzVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRXaXphcmRTZXJ2aWNlOiBXaWRnZXRXaXphcmRTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKGNoYW5nZXM6IFBhcnRpYWw8e25hbWU6IHN0cmluZyB8IG51bGw7IHByb2Nlc3NEZWZpbml0aW9uS2V5OiBMaXN0SXRlbSB8IG51bGx9PikgPT4ge1xuICAgICAgICAgICAgY29uc3Qge25hbWUsIHByb2Nlc3NEZWZpbml0aW9uS2V5fSA9IGNoYW5nZXM7XG4gICAgICAgICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0QWN0aW9ucy51cGRhdGUoXG4gICAgICAgICAgICAgICh2YWx1ZTogQ2FzZVdpZGdldEFjdGlvbltdIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSlcbiAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAhbmFtZSA/IHByb2Nlc3NEZWZpbml0aW9uS2V5Py5jb250ZW50IDogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogcHJvY2Vzc0RlZmluaXRpb25LZXk/LmtleSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlZGl0dGVkUHJvY2VzcyA9IHZhbHVlLmZpbmQoXG4gICAgICAgICAgICAgICAgICAocHJvY2VzczogQ2FzZVdpZGdldEFjdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5wcm9jZXNzRGVmaW5pdGlvbktleSA9PT0gcHJvY2Vzc0RlZmluaXRpb25LZXk/LmtleVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gISFlZGl0dGVkUHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgPyB2YWx1ZS5tYXAoKHByb2Nlc3M6IENhc2VXaWRnZXRBY3Rpb24pID0+XG4gICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5wcm9jZXNzRGVmaW5pdGlvbktleSA9PT0gZWRpdHRlZFByb2Nlc3MucHJvY2Vzc0RlZmluaXRpb25LZXlcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByb2Nlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIW5hbWUgPyBwcm9jZXNzRGVmaW5pdGlvbktleT8uY29udGVudCA6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAhbmFtZSA/IHByb2Nlc3NEZWZpbml0aW9uS2V5Py5jb250ZW50IDogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uS2V5OiBwcm9jZXNzRGVmaW5pdGlvbktleT8ua2V5LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvblByb2Nlc3NTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmdldCgnbmFtZScpPy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCduYW1lJyk/LmVuYWJsZSgpO1xuICB9XG59XG4iLCI8Zm9ybVxuICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJ0aGVtZSQgfCBhc3luY1wiXG4gIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtcHJvY2Vzcy1zZWxlY3RvclwiXG4+XG4gIDxjZHMtZHJvcGRvd25cbiAgICBbbGFiZWxdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQucHJvY2Vzc2VzLmJ1dHRvblRleHRMYWJlbCcgfCB0cmFuc2xhdGVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5wcm9jZXNzZXMuc2VsZWN0b3JQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgIGZvcm1Db250cm9sTmFtZT1cInByb2Nlc3NEZWZpbml0aW9uS2V5XCJcbiAgICAoc2VsZWN0ZWQpPVwib25Qcm9jZXNzU2VsZWN0ZWQoKVwiXG4gID5cbiAgICA8Y2RzLWRyb3Bkb3duLWxpc3QgW2l0ZW1zXT1cInByb2Nlc3NEZWZpbml0aW9uSXRlbXMkIHwgYXN5bmNcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICA8L2Nkcy1kcm9wZG93bj5cblxuICA8Y2RzLXRleHQtbGFiZWw+XG4gICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQucHJvY2Vzc2VzLmJ1dHRvblRleHRMYWJlbCcgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxpbnB1dFxuICAgICAgY2RzVGV4dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQucHJvY2Vzc2VzLmJ1dHRvblRleHRQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgIC8+XG4gIDwvY2RzLXRleHQtbGFiZWw+XG48L2Zvcm0+XG4iXX0=
@@ -21,18 +21,21 @@ import { CARBON_THEME, CurrentCarbonTheme, InputLabelModule, } from '@valtimo/co
21
21
  import { ButtonModule, InputModule, ToggleModule } from 'carbon-components-angular';
22
22
  import { debounceTime, map, Subscription } from 'rxjs';
23
23
  import { DossierManagementWidgetFieldsColumnComponent } from '../fields/column/dossier-management-widget-fields-column.component';
24
+ import { DossierManagementWidgetProcessSelectorComponent } from '../process-selector/dossier-management-widget-process-selector.component';
24
25
  import * as i0 from "@angular/core";
25
26
  import * as i1 from "@valtimo/components";
26
27
  import * as i2 from "@angular/forms";
27
28
  import * as i3 from "../../../services";
28
- import * as i4 from "@angular/common";
29
- import * as i5 from "@ngx-translate/core";
30
- import * as i6 from "carbon-components-angular";
29
+ import * as i4 from "@angular/router";
30
+ import * as i5 from "@angular/common";
31
+ import * as i6 from "@ngx-translate/core";
32
+ import * as i7 from "carbon-components-angular";
31
33
  export class DossierManagementWidgetTableComponent {
32
- constructor(cdsThemeService, fb, widgetWizardService) {
34
+ constructor(cdsThemeService, fb, widgetWizardService, route) {
33
35
  this.cdsThemeService = cdsThemeService;
34
36
  this.fb = fb;
35
37
  this.widgetWizardService = widgetWizardService;
38
+ this.route = route;
36
39
  this.class = 'valtimo-dossier-management-widget-table';
37
40
  this.changeValidEvent = new EventEmitter();
38
41
  this.form = this.fb.group({
@@ -44,6 +47,7 @@ export class DossierManagementWidgetTableComponent {
44
47
  this.content = this.widgetWizardService
45
48
  .widgetContent;
46
49
  this.checked = computed(() => this.widgetWizardService.widgetContent()?.firstColumnAsTitle || false);
50
+ this.documentDefinitionName$ = this.route.paramMap.pipe(map((paramMap) => paramMap.get('name') ?? ''));
47
51
  this._contentValid = signal(this.widgetWizardService.editMode());
48
52
  this._subscriptions = new Subscription();
49
53
  }
@@ -73,8 +77,8 @@ export class DossierManagementWidgetTableComponent {
73
77
  onCheckedChange(firstColumnAsTitle) {
74
78
  this.widgetWizardService.widgetContent.update((content) => ({ ...content, firstColumnAsTitle }));
75
79
  }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetTableComponent, deps: [{ token: i1.CdsThemeService }, { token: i2.FormBuilder }, { token: i3.WidgetWizardService }], target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementWidgetTableComponent, isStandalone: true, selector: "ng-component", outputs: { changeValidEvent: "changeValidEvent" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n *ngIf=\"{theme: theme$ | async} as obs\"\n [formGroup]=\"form\"\n class=\"valtimo-dossier-management-widget-table__form\"\n>\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.defaultPageSizePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n</form>\n\n<span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.columns' | translate }}\n</span>\n\n<valtimo-dossier-management-widget-fields-column\n [addTranslateKey]=\"'widgetTabManagement.content.table.addColumn'\"\n [columnData]=\"content()?.columns\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n></valtimo-dossier-management-widget-fields-column>\n\n<section class=\"valtimo-dossier-management-widget-table__toggle\">\n <span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.options' | translate }}\n </span>\n\n <cds-toggle\n [checked]=\"checked()\"\n [label]=\"'widgetTabManagement.content.table.firstColumnAsTitle' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n (checkedChange)=\"onCheckedChange($event)\"\n ></cds-toggle>\n</section>\n", styles: [".valtimo-dossier-management-widget-table{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-table__form{display:flex;gap:16px}.valtimo-dossier-management-widget-table__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-table__toggle{display:flex;flex-direction:column;gap:8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: DossierManagementWidgetFieldsColumnComponent, selector: "valtimo-dossier-management-widget-fields-column", inputs: ["columnData", "addTranslateKey", "isFieldWidget", "fieldWidthDropdown"], outputs: ["columnUpdateEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i6.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "skeleton"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetTableComponent, deps: [{ token: i1.CdsThemeService }, { token: i2.FormBuilder }, { token: i3.WidgetWizardService }, { token: i4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DossierManagementWidgetTableComponent, isStandalone: true, selector: "ng-component", outputs: { changeValidEvent: "changeValidEvent" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n *ngIf=\"{theme: theme$ | async} as obs\"\n [formGroup]=\"form\"\n class=\"valtimo-dossier-management-widget-table__form\"\n>\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.defaultPageSizePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n</form>\n\n<valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n></valtimo-dossier-management-widget-process-selector>\n\n<span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.columns' | translate }}\n</span>\n\n<valtimo-dossier-management-widget-fields-column\n [addTranslateKey]=\"'widgetTabManagement.content.table.addColumn'\"\n [columnData]=\"content()?.columns\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n></valtimo-dossier-management-widget-fields-column>\n\n<section class=\"valtimo-dossier-management-widget-table__toggle\">\n <span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.options' | translate }}\n </span>\n\n <cds-toggle\n [checked]=\"checked()\"\n [label]=\"'widgetTabManagement.content.table.firstColumnAsTitle' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n (checkedChange)=\"onCheckedChange($event)\"\n ></cds-toggle>\n</section>\n", styles: [".valtimo-dossier-management-widget-table{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-table__form{display:flex;gap:16px}.valtimo-dossier-management-widget-table__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-table__toggle{display:flex;flex-direction:column;gap:8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "component", type: DossierManagementWidgetFieldsColumnComponent, selector: "valtimo-dossier-management-widget-fields-column", inputs: ["columnData", "addTranslateKey", "isFieldWidget", "fieldWidthDropdown"], outputs: ["columnUpdateEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i7.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i7.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i7.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "skeleton"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: InputLabelModule }, { kind: "component", type: i1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: DossierManagementWidgetProcessSelectorComponent, selector: "valtimo-dossier-management-widget-process-selector", inputs: ["documentDefinitionName"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
78
82
  }
79
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierManagementWidgetTableComponent, decorators: [{
80
84
  type: Component,
@@ -87,11 +91,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
87
91
  ToggleModule,
88
92
  ButtonModule,
89
93
  InputLabelModule,
90
- ], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n *ngIf=\"{theme: theme$ | async} as obs\"\n [formGroup]=\"form\"\n class=\"valtimo-dossier-management-widget-table__form\"\n>\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.defaultPageSizePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n</form>\n\n<span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.columns' | translate }}\n</span>\n\n<valtimo-dossier-management-widget-fields-column\n [addTranslateKey]=\"'widgetTabManagement.content.table.addColumn'\"\n [columnData]=\"content()?.columns\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n></valtimo-dossier-management-widget-fields-column>\n\n<section class=\"valtimo-dossier-management-widget-table__toggle\">\n <span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.options' | translate }}\n </span>\n\n <cds-toggle\n [checked]=\"checked()\"\n [label]=\"'widgetTabManagement.content.table.firstColumnAsTitle' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n (checkedChange)=\"onCheckedChange($event)\"\n ></cds-toggle>\n</section>\n", styles: [".valtimo-dossier-management-widget-table{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-table__form{display:flex;gap:16px}.valtimo-dossier-management-widget-table__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-table__toggle{display:flex;flex-direction:column;gap:8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
91
- }], ctorParameters: () => [{ type: i1.CdsThemeService }, { type: i2.FormBuilder }, { type: i3.WidgetWizardService }], propDecorators: { class: [{
94
+ DossierManagementWidgetProcessSelectorComponent,
95
+ ], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n *ngIf=\"{theme: theme$ | async} as obs\"\n [formGroup]=\"form\"\n class=\"valtimo-dossier-management-widget-table__form\"\n>\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.widgetTitle' | translate\"\n [tooltip]=\"'widgetTabManagement.content.widgetTitleTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.defaultPageSize' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.defaultPageSizeTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.defaultPageSizePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n <v-input-label\n [title]=\"'widgetTabManagement.content.table.collection' | translate\"\n [tooltip]=\"'widgetTabManagement.content.table.collectionTooltip' | translate\"\n >\n </v-input-label>\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.table.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n</form>\n\n<valtimo-dossier-management-widget-process-selector\n [documentDefinitionName]=\"documentDefinitionName$ | async\"\n></valtimo-dossier-management-widget-process-selector>\n\n<span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.columns' | translate }}\n</span>\n\n<valtimo-dossier-management-widget-fields-column\n [addTranslateKey]=\"'widgetTabManagement.content.table.addColumn'\"\n [columnData]=\"content()?.columns\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n></valtimo-dossier-management-widget-fields-column>\n\n<section class=\"valtimo-dossier-management-widget-table__toggle\">\n <span class=\"valtimo-dossier-management-widget-table__subtitle\">\n {{ 'widgetTabManagement.content.table.options' | translate }}\n </span>\n\n <cds-toggle\n [checked]=\"checked()\"\n [label]=\"'widgetTabManagement.content.table.firstColumnAsTitle' | translate\"\n [onText]=\"'interface.yes' | translate\"\n [offText]=\"'interface.no' | translate\"\n (checkedChange)=\"onCheckedChange($event)\"\n ></cds-toggle>\n</section>\n", styles: [".valtimo-dossier-management-widget-table{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-table__form{display:flex;gap:16px}.valtimo-dossier-management-widget-table__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-table__toggle{display:flex;flex-direction:column;gap:8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
96
+ }], ctorParameters: () => [{ type: i1.CdsThemeService }, { type: i2.FormBuilder }, { type: i3.WidgetWizardService }, { type: i4.ActivatedRoute }], propDecorators: { class: [{
92
97
  type: HostBinding,
93
98
  args: ['class']
94
99
  }], changeValidEvent: [{
95
100
  type: Output
96
101
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb25maWd1cmF0b3JzL3RhYmxlL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy90YWJsZS9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osV0FBVyxFQUdYLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsbUJBQW1CLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxZQUFZLEVBRVosa0JBQWtCLEVBQ2xCLGdCQUFnQixHQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxZQUFZLEVB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RCxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZiw0Q0FBNEM7d0JBQzVDLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osZ0JBQWdCO3FCQUNqQjtnSkFLcUMsS0FBSztzQkFBMUMsV0FBVzt1QkFBQyxPQUFPO2dCQUNNLGdCQUFnQjtzQkFBekMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIENBUkJPTl9USEVNRSxcbiAgQ2RzVGhlbWVTZXJ2aWNlLFxuICBDdXJyZW50Q2FyYm9uVGhlbWUsXG4gIElucHV0TGFiZWxNb2R1bGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtGaWVsZHNDYXNlV2lkZ2V0VmFsdWUsIFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzLCBXaWRnZXRUYWJsZUNvbnRlbnR9IGZyb20gJ0B2YWx0aW1vL2Rvc3NpZXInO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGUsIElucHV0TW9kdWxlLCBUb2dnbGVNb2R1bGV9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7V2lkZ2V0Q29udGVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7V2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFdpZGdldEZpZWxkc0NvbHVtbkNvbXBvbmVudH0gZnJvbSAnLi4vZmllbGRzL2NvbHVtbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGUuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRG9zc2llck1hbmFnZW1lbnRXaWRnZXRGaWVsZHNDb2x1bW5Db21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBUb2dnbGVNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIElucHV0TGFiZWxNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0VGFibGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBXaWRnZXRDb250ZW50Q29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHVibGljIHJlYWRvbmx5IGNsYXNzID0gJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC10YWJsZSc7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlVmFsaWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybTogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KFxuICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldFRpdGxlKCkgPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICBjb2xsZWN0aW9uOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPihcbiAgICAgICh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldFRhYmxlQ29udGVudCk/LmNvbGxlY3Rpb24gPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICBkZWZhdWx0UGFnZVNpemU6IHRoaXMuZmIuY29udHJvbDxudW1iZXI+KFxuICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0VGFibGVDb250ZW50KT8uZGVmYXVsdFBhZ2VTaXplID8/IDUsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lJDogT2JzZXJ2YWJsZTxDQVJCT05fVEhFTUU+ID0gdGhpcy5jZHNUaGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJC5waXBlKFxuICAgIG1hcCgoY3VycmVudFRoZW1lOiBDdXJyZW50Q2FyYm9uVGhlbWUpID0+XG4gICAgICBjdXJyZW50VGhlbWUgPT09IEN1cnJlbnRDYXJib25UaGVtZS5HMTAgPyBDQVJCT05fVEhFTUUuV0hJVEUgOiBDQVJCT05fVEhFTUUuRzkwXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb250ZW50ID0gdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlXG4gICAgLndpZGdldENvbnRlbnQgYXMgV3JpdGFibGVTaWduYWw8V2lkZ2V0VGFibGVDb250ZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IGNoZWNrZWQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0VGFibGVDb250ZW50KT8uZmlyc3RDb2x1bW5Bc1RpdGxlIHx8IGZhbHNlXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRWYWxpZCA9IHNpZ25hbDxib29sZWFuPih0aGlzLndpZGdldFdpemFyZFNlcnZpY2UuZWRpdE1vZGUoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHNUaGVtZVNlcnZpY2U6IENkc1RoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFdpemFyZFNlcnZpY2U6IFdpZGdldFdpemFyZFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldFRpdGxlLnNldCh2YWx1ZT8udGl0bGUgPz8gJycpO1xuXG4gICAgICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50LnVwZGF0ZShcbiAgICAgICAgICAoY29udGVudDogV2lkZ2V0Q29udGVudFByb3BlcnRpZXMgfCBudWxsKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogdmFsdWU/LmNvbGxlY3Rpb24gfHwgJycsXG4gICAgICAgICAgICAgIGRlZmF1bHRQYWdlU2l6ZTogdmFsdWU/LmRlZmF1bHRQYWdlU2l6ZSB8fCA1LFxuICAgICAgICAgICAgfSkgYXMgV2lkZ2V0VGFibGVDb250ZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQodGhpcy5mb3JtLnZhbGlkICYmIHRoaXMuX2NvbnRlbnRWYWxpZCgpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250ZW50VmFsaWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbiAgcHVibGljIG9uQ29sdW1uVXBkYXRlRXZlbnQoZXZlbnQ6IHtkYXRhOiBGaWVsZHNDYXNlV2lkZ2V0VmFsdWVbXTsgdmFsaWQ6IGJvb2xlYW59KTogdm9pZCB7XG4gICAgY29uc3Qge2RhdGEsIHZhbGlkfSA9IGV2ZW50O1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50LnVwZGF0ZShcbiAgICAgIChjb250ZW50OiBXaWRnZXRDb250ZW50UHJvcGVydGllcyB8IG51bGwpID0+XG4gICAgICAgICh7Li4uY29udGVudCwgY29sdW1uczogZGF0YX0pIGFzIFdpZGdldFRhYmxlQ29udGVudFxuICAgICk7XG4gICAgdGhpcy5fY29udGVudFZhbGlkLnNldCh2YWxpZCk7XG4gICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQodmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrZWRDaGFuZ2UoZmlyc3RDb2x1bW5Bc1RpdGxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKFxuICAgICAgKGNvbnRlbnQ6IFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzIHwgbnVsbCkgPT5cbiAgICAgICAgKHsuLi5jb250ZW50LCBmaXJzdENvbHVtbkFzVGl0bGV9KSBhcyBXaWRnZXRUYWJsZUNvbnRlbnRcbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxmb3JtXG4gICpuZ0lmPVwie3RoZW1lOiB0aGVtZSQgfCBhc3luY30gYXMgb2JzXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGVfX2Zvcm1cIlxuPlxuICA8Y2RzLXRleHQtbGFiZWwgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCI+XG4gICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgIFt0aXRsZV09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICA8aW5wdXRcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgIGNkc1RleHRcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAvPlxuICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuZGVmYXVsdFBhZ2VTaXplJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LnRhYmxlLmRlZmF1bHRQYWdlU2l6ZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgPC92LWlucHV0LWxhYmVsPlxuXG4gICAgPGlucHV0XG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0UGFnZVNpemVcIlxuICAgICAgY2RzVGV4dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuZGVmYXVsdFBhZ2VTaXplUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAvPlxuICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuY29sbGVjdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC50YWJsZS5jb2xsZWN0aW9uVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICA8aW5wdXRcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbGxlY3Rpb25cIlxuICAgICAgY2RzVGV4dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuY29sbGVjdGlvblBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgLz5cbiAgPC9jZHMtdGV4dC1sYWJlbD5cbjwvZm9ybT5cblxuPHNwYW4gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGVfX3N1YnRpdGxlXCI+XG4gIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuY29sdW1ucycgfCB0cmFuc2xhdGUgfX1cbjwvc3Bhbj5cblxuPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1maWVsZHMtY29sdW1uXG4gIFthZGRUcmFuc2xhdGVLZXldPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC50YWJsZS5hZGRDb2x1bW4nXCJcbiAgW2NvbHVtbkRhdGFdPVwiY29udGVudCgpPy5jb2x1bW5zXCJcbiAgKGNvbHVtblVwZGF0ZUV2ZW50KT1cIm9uQ29sdW1uVXBkYXRlRXZlbnQoJGV2ZW50KVwiXG4+PC92YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtZmllbGRzLWNvbHVtbj5cblxuPHNlY3Rpb24gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGVfX3RvZ2dsZVwiPlxuICA8c3BhbiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC10YWJsZV9fc3VidGl0bGVcIj5cbiAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LnRhYmxlLm9wdGlvbnMnIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cblxuICA8Y2RzLXRvZ2dsZVxuICAgIFtjaGVja2VkXT1cImNoZWNrZWQoKVwiXG4gICAgW2xhYmVsXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuZmlyc3RDb2x1bW5Bc1RpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgW29uVGV4dF09XCInaW50ZXJmYWNlLnllcycgfCB0cmFuc2xhdGVcIlxuICAgIFtvZmZUZXh0XT1cIidpbnRlcmZhY2Uubm8nIHwgdHJhbnNsYXRlXCJcbiAgICAoY2hlY2tlZENoYW5nZSk9XCJvbkNoZWNrZWRDaGFuZ2UoJGV2ZW50KVwiXG4gID48L2Nkcy10b2dnbGU+XG48L3NlY3Rpb24+XG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb25maWd1cmF0b3JzL3RhYmxlL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy90YWJsZS9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osV0FBVyxFQUdYLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsbUJBQW1CLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxZQUFZLEVBRVosa0JBQWtCLEVBQ2xCLGdCQUFnQixHQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxZQUFZLEVB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Q0FBdUIsQ0FDM0QsQ0FBQztJQUNKLENBQUM7K0dBekZVLHFDQUFxQzttR0FBckMscUNBQXFDLDRLQ2hFbEQsNHlHQThGQSxraENEekNJLFlBQVksdUxBQ1osZUFBZSw0RkFDZiw0Q0FBNEMsNk1BQzVDLG1CQUFtQiw0OEJBQ25CLFdBQVcsMmFBQ1gsWUFBWSxtTEFDWixZQUFZLDhCQUNaLGdCQUFnQix1UEFDaEIsK0NBQStDOzs0RkFHdEMscUNBQXFDO2tCQWxCakQsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksaUJBQ0QsaUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsNENBQTRDO3dCQUM1QyxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsK0NBQStDO3FCQUNoRDs2S0FLcUMsS0FBSztzQkFBMUMsV0FBVzt1QkFBQyxPQUFPO2dCQUNNLGdCQUFnQjtzQkFBekMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIENBUkJPTl9USEVNRSxcbiAgQ2RzVGhlbWVTZXJ2aWNlLFxuICBDdXJyZW50Q2FyYm9uVGhlbWUsXG4gIElucHV0TGFiZWxNb2R1bGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtGaWVsZHNDYXNlV2lkZ2V0VmFsdWUsIFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzLCBXaWRnZXRUYWJsZUNvbnRlbnR9IGZyb20gJ0B2YWx0aW1vL2Rvc3NpZXInO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGUsIElucHV0TW9kdWxlLCBUb2dnbGVNb2R1bGV9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7V2lkZ2V0Q29udGVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7V2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFdpZGdldEZpZWxkc0NvbHVtbkNvbXBvbmVudH0gZnJvbSAnLi4vZmllbGRzL2NvbHVtbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7RG9zc2llck1hbmFnZW1lbnRXaWRnZXRQcm9jZXNzU2VsZWN0b3JDb21wb25lbnR9IGZyb20gJy4uL3Byb2Nlc3Mtc2VsZWN0b3IvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1wcm9jZXNzLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBQYXJhbU1hcH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGUuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRG9zc2llck1hbmFnZW1lbnRXaWRnZXRGaWVsZHNDb2x1bW5Db21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBUb2dnbGVNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIElucHV0TGFiZWxNb2R1bGUsXG4gICAgRG9zc2llck1hbmFnZW1lbnRXaWRnZXRQcm9jZXNzU2VsZWN0b3JDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0VGFibGVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBXaWRnZXRDb250ZW50Q29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHVibGljIHJlYWRvbmx5IGNsYXNzID0gJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC10YWJsZSc7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlVmFsaWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybTogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbDxzdHJpbmc+KFxuICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldFRpdGxlKCkgPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICBjb2xsZWN0aW9uOiB0aGlzLmZiLmNvbnRyb2w8c3RyaW5nPihcbiAgICAgICh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldFRhYmxlQ29udGVudCk/LmNvbGxlY3Rpb24gPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICBkZWZhdWx0UGFnZVNpemU6IHRoaXMuZmIuY29udHJvbDxudW1iZXI+KFxuICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0VGFibGVDb250ZW50KT8uZGVmYXVsdFBhZ2VTaXplID8/IDUsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lJDogT2JzZXJ2YWJsZTxDQVJCT05fVEhFTUU+ID0gdGhpcy5jZHNUaGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJC5waXBlKFxuICAgIG1hcCgoY3VycmVudFRoZW1lOiBDdXJyZW50Q2FyYm9uVGhlbWUpID0+XG4gICAgICBjdXJyZW50VGhlbWUgPT09IEN1cnJlbnRDYXJib25UaGVtZS5HMTAgPyBDQVJCT05fVEhFTUUuV0hJVEUgOiBDQVJCT05fVEhFTUUuRzkwXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb250ZW50ID0gdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlXG4gICAgLndpZGdldENvbnRlbnQgYXMgV3JpdGFibGVTaWduYWw8V2lkZ2V0VGFibGVDb250ZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IGNoZWNrZWQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0VGFibGVDb250ZW50KT8uZmlyc3RDb2x1bW5Bc1RpdGxlIHx8IGZhbHNlXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbU1hcDogUGFyYW1NYXApID0+IHBhcmFtTWFwLmdldCgnbmFtZScpID8/ICcnKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnRWYWxpZCA9IHNpZ25hbDxib29sZWFuPih0aGlzLndpZGdldFdpemFyZFNlcnZpY2UuZWRpdE1vZGUoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHNUaGVtZVNlcnZpY2U6IENkc1RoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFdpemFyZFNlcnZpY2U6IFdpZGdldFdpemFyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldFRpdGxlLnNldCh2YWx1ZT8udGl0bGUgPz8gJycpO1xuXG4gICAgICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50LnVwZGF0ZShcbiAgICAgICAgICAoY29udGVudDogV2lkZ2V0Q29udGVudFByb3BlcnRpZXMgfCBudWxsKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgICAgICAgY29sbGVjdGlvbjogdmFsdWU/LmNvbGxlY3Rpb24gfHwgJycsXG4gICAgICAgICAgICAgIGRlZmF1bHRQYWdlU2l6ZTogdmFsdWU/LmRlZmF1bHRQYWdlU2l6ZSB8fCA1LFxuICAgICAgICAgICAgfSkgYXMgV2lkZ2V0VGFibGVDb250ZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQodGhpcy5mb3JtLnZhbGlkICYmIHRoaXMuX2NvbnRlbnRWYWxpZCgpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250ZW50VmFsaWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbiAgcHVibGljIG9uQ29sdW1uVXBkYXRlRXZlbnQoZXZlbnQ6IHtkYXRhOiBGaWVsZHNDYXNlV2lkZ2V0VmFsdWVbXTsgdmFsaWQ6IGJvb2xlYW59KTogdm9pZCB7XG4gICAgY29uc3Qge2RhdGEsIHZhbGlkfSA9IGV2ZW50O1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50LnVwZGF0ZShcbiAgICAgIChjb250ZW50OiBXaWRnZXRDb250ZW50UHJvcGVydGllcyB8IG51bGwpID0+XG4gICAgICAgICh7Li4uY29udGVudCwgY29sdW1uczogZGF0YX0pIGFzIFdpZGdldFRhYmxlQ29udGVudFxuICAgICk7XG4gICAgdGhpcy5fY29udGVudFZhbGlkLnNldCh2YWxpZCk7XG4gICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQodmFsaWQgJiYgdGhpcy5mb3JtLnZhbGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrZWRDaGFuZ2UoZmlyc3RDb2x1bW5Bc1RpdGxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKFxuICAgICAgKGNvbnRlbnQ6IFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzIHwgbnVsbCkgPT5cbiAgICAgICAgKHsuLi5jb250ZW50LCBmaXJzdENvbHVtbkFzVGl0bGV9KSBhcyBXaWRnZXRUYWJsZUNvbnRlbnRcbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxmb3JtXG4gICpuZ0lmPVwie3RoZW1lOiB0aGVtZSQgfCBhc3luY30gYXMgb2JzXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGVfX2Zvcm1cIlxuPlxuICA8Y2RzLXRleHQtbGFiZWwgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCI+XG4gICAgPHYtaW5wdXQtbGFiZWxcbiAgICAgIFt0aXRsZV09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICA8aW5wdXRcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgIGNkc1RleHRcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAvPlxuICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuZGVmYXVsdFBhZ2VTaXplJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdG9vbHRpcF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LnRhYmxlLmRlZmF1bHRQYWdlU2l6ZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgPC92LWlucHV0LWxhYmVsPlxuXG4gICAgPGlucHV0XG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0UGFnZVNpemVcIlxuICAgICAgY2RzVGV4dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuZGVmYXVsdFBhZ2VTaXplUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAvPlxuICA8L2Nkcy10ZXh0LWxhYmVsPlxuXG4gIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICA8di1pbnB1dC1sYWJlbFxuICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuY29sbGVjdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3Rvb2x0aXBdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC50YWJsZS5jb2xsZWN0aW9uVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICA8L3YtaW5wdXQtbGFiZWw+XG5cbiAgICA8aW5wdXRcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbGxlY3Rpb25cIlxuICAgICAgY2RzVGV4dFxuICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuY29sbGVjdGlvblBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgLz5cbiAgPC9jZHMtdGV4dC1sYWJlbD5cbjwvZm9ybT5cblxuPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1wcm9jZXNzLXNlbGVjdG9yXG4gIFtkb2N1bWVudERlZmluaXRpb25OYW1lXT1cImRvY3VtZW50RGVmaW5pdGlvbk5hbWUkIHwgYXN5bmNcIlxuPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXByb2Nlc3Mtc2VsZWN0b3I+XG5cbjxzcGFuIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYmxlX19zdWJ0aXRsZVwiPlxuICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LnRhYmxlLmNvbHVtbnMnIHwgdHJhbnNsYXRlIH19XG48L3NwYW4+XG5cbjx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtZmllbGRzLWNvbHVtblxuICBbYWRkVHJhbnNsYXRlS2V5XT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQudGFibGUuYWRkQ29sdW1uJ1wiXG4gIFtjb2x1bW5EYXRhXT1cImNvbnRlbnQoKT8uY29sdW1uc1wiXG4gIChjb2x1bW5VcGRhdGVFdmVudCk9XCJvbkNvbHVtblVwZGF0ZUV2ZW50KCRldmVudClcIlxuPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4+XG5cbjxzZWN0aW9uIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYmxlX190b2dnbGVcIj5cbiAgPHNwYW4gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFibGVfX3N1YnRpdGxlXCI+XG4gICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC50YWJsZS5vcHRpb25zJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG5cbiAgPGNkcy10b2dnbGVcbiAgICBbY2hlY2tlZF09XCJjaGVja2VkKClcIlxuICAgIFtsYWJlbF09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LnRhYmxlLmZpcnN0Q29sdW1uQXNUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgIFtvblRleHRdPVwiJ2ludGVyZmFjZS55ZXMnIHwgdHJhbnNsYXRlXCJcbiAgICBbb2ZmVGV4dF09XCInaW50ZXJmYWNlLm5vJyB8IHRyYW5zbGF0ZVwiXG4gICAgKGNoZWNrZWRDaGFuZ2UpPVwib25DaGVja2VkQ2hhbmdlKCRldmVudClcIlxuICA+PC9jZHMtdG9nZ2xlPlxuPC9zZWN0aW9uPlxuIl19
@@ -21,6 +21,7 @@ import { ButtonModule, IconModule, TabsModule } from 'carbon-components-angular'
21
21
  import { BehaviorSubject, combineLatest, map, Subject, take } from 'rxjs';
22
22
  import { AVAILABLE_WIDGETS, WidgetStyle, WidgetTypeTags } from '../../../models';
23
23
  import { DossierManagementWidgetWizardComponent } from '../../dossier-management-widget-wizard/dossier-management-widget-wizard.component';
24
+ import { cloneDeep } from 'lodash';
24
25
  import * as i0 from "@angular/core";
25
26
  import * as i1 from "@valtimo/components";
26
27
  import * as i2 from "@ngx-translate/core";
@@ -77,6 +78,10 @@ export class DossierManagementWidgetsEditorComponent {
77
78
  label: 'interface.edit',
78
79
  callback: this.editWidget.bind(this),
79
80
  },
81
+ {
82
+ label: 'interface.duplicate',
83
+ callback: this.duplicateWidget.bind(this),
84
+ },
80
85
  {
81
86
  label: 'interface.delete',
82
87
  callback: this.deleteWidget.bind(this),
@@ -111,8 +116,14 @@ export class DossierManagementWidgetsEditorComponent {
111
116
  this.widgetWizardService.widgetContent.set(tabWidget.properties);
112
117
  this.widgetWizardService.editMode.set(true);
113
118
  this.widgetWizardService.widgetKey.set(tabWidget.key);
119
+ this.widgetWizardService.widgetActions.set(tabWidget.actions);
114
120
  this.isWizardOpen$.next(true);
115
121
  }
122
+ duplicateWidget(tabWidget) {
123
+ const tabWidgetClone = cloneDeep(tabWidget);
124
+ tabWidgetClone.key = null;
125
+ this.editWidget(tabWidgetClone);
126
+ }
116
127
  openAddModal() {
117
128
  this.isWizardOpen$.next(true);
118
129
  }
@@ -205,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
205
216
  }], changeSaved: [{
206
217
  type: Output
207
218
  }] } });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYi9lZGl0b3IvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYi9lZGl0b3IvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFHTCxnQkFBZ0IsRUFFaEIsdUJBQXVCLEVBRXZCLFFBQVEsR0FDVCxNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0UsT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0sbUZBQW1GLENBQUM7Ozs7Ozs7QUFrQnpJLE1BQU0sT0FBTyx1Q0FBdUM7SUFJbEQsSUFBb0IsZ0JBQWdCLENBQUMsS0FBcUI7UUFDeEQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRW5CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQXdFRCxZQUNtQixtQkFBd0MsRUFDeEMsZ0JBQWtDLEVBQ2xDLDBCQUFzRCxFQUN0RCxtQkFBd0M7UUFIeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQTFFakMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTNDLFdBQU0sR0FBbUI7WUFDdkM7Z0JBQ0UsR0FBRyxFQUFFLE9BQU87Z0JBQ1osS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2FBQ3hCO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLE1BQU07Z0JBQ1gsS0FBSyxFQUFFLGtDQUFrQztnQkFDekMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2FBQ3hCO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTthQUN4QjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxrQkFBa0I7Z0JBQ3ZCLEtBQUssRUFBRSxtQ0FBbUM7Z0JBQzFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTthQUN4QjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxjQUFjO2dCQUNuQixLQUFLLEVBQUUsMENBQTBDO2dCQUNqRCxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87YUFDM0I7U0FDRixDQUFDO1FBRWMsaUJBQVksR0FBaUI7WUFDM0M7Z0JBQ0UsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNyQztZQUNEO2dCQUNFLEtBQUssRUFBRSxrQkFBa0I7Z0JBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRixDQUFDO1FBRWUsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFtQixFQUFFLENBQUMsQ0FBQztRQUNyRCxXQUFNLEdBQWlDLGFBQWEsQ0FBQztZQUNuRSxJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQ2QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsR0FBRyxJQUFJO1lBQ1AsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hGLElBQUksRUFBRTtnQkFDSjtvQkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDO29CQUN0RixJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2hDO2FBQ0Y7U0FDRixDQUFDLENBQUMsQ0FDSixDQUNGLENBQUM7UUFFYyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBQy9DLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUV0Qyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFTakQsQ0FBQztJQUVHLFVBQVUsQ0FBQyxTQUFxQjtRQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQ3RDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQ3pFLENBQUM7UUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3pDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FDL0UsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxTQUFpQjtRQUN0QyxJQUFJLENBQUMsMEJBQTBCO2FBQzVCLGFBQWEsQ0FBQztZQUNiLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQztTQUNsRixDQUFDO2FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFlBQVksQ0FBQyxZQUE2QixFQUFFLGVBQTZCO1FBQzlFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFMUIsSUFBSSxDQUFDLDBCQUEwQjthQUM1QixhQUFhLENBQUM7WUFDYixrQkFBa0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1lBQy9DLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHO2dCQUN6QixDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQXVCLEVBQUUsRUFBRSxDQUM5QyxNQUFNLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUN4RDtnQkFDSCxDQUFDLENBQUM7b0JBQ0UsR0FBRyxlQUFlO29CQUNsQjt3QkFDRSxHQUFHLFlBQVk7d0JBQ2YsR0FBRyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO3FCQUMvRTtpQkFDRjtTQUNOLENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsT0FBcUI7UUFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsMEJBQTBCO2FBQzVCLGFBQWEsQ0FBQztZQUNiLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUN4QixPQUFPO1NBQ1IsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxZQUFZLENBQUMsU0FBYztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8sc0JBQXNCLENBQUMsS0FBYTtRQUMxQyxRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2QsS0FBSyxDQUFDO2dCQUNKLE9BQU8sdUNBQXVDLENBQUM7WUFDakQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sd0NBQXdDLENBQUM7WUFDbEQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sdUNBQXVDLENBQUM7WUFDakQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sMkNBQTJDLENBQUM7WUFDckQ7Z0JBQ0UsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzsrR0F4TFUsdUNBQXVDO21HQUF2Qyx1Q0FBdUMsZ1JDMURwRCxtM0VBbUVBLDJDRG5CSSxZQUFZLDhWQUNaLGVBQWUsMkZBQ2YsZ0JBQWdCLHcxQkFDaEIsWUFBWSxnTUFDWixVQUFVLDROQUNWLFVBQVUsK0JBQ1Ysc0NBQXNDLDJJQUN0Qyx1QkFBdUI7OzRGQUdkLHVDQUF1QztrQkFoQm5ELFNBQVM7K0JBQ0UsMkNBQTJDLG1CQUVwQyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixzQ0FBc0M7d0JBQ3RDLHVCQUF1QjtxQkFDeEI7a01BR2Usc0JBQXNCO3NCQUFyQyxLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRWMsZ0JBQWdCO3NCQUFuQyxLQUFLO2dCQVlvQixXQUFXO3NCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBBY3Rpb25JdGVtLFxuICBDYXJib25MaXN0SXRlbSxcbiAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgQ29sdW1uQ29uZmlnLFxuICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgS2V5R2VuZXJhdG9yU2VydmljZSxcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtCYXNpY0Nhc2VXaWRnZXQsIENhc2VXaWRnZXQsIENhc2VXaWRnZXRzUmVzfSBmcm9tICdAdmFsdGltby9kb3NzaWVyJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJY29uTW9kdWxlLCBUYWJzTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBVkFJTEFCTEVfV0lER0VUUywgV2lkZ2V0U3R5bGUsIFdpZGdldFR5cGVUYWdzfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtXaWRnZXRUYWJNYW5hZ2VtZW50U2VydmljZSwgV2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFdpZGdldFdpemFyZENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC13aXphcmQvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC13aXphcmQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0cy1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgVGFic01vZHVsZSxcbiAgICBEb3NzaWVyTWFuYWdlbWVudFdpZGdldFdpemFyZENvbXBvbmVudCxcbiAgICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRXaWRnZXRzRWRpdG9yQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHRhYldpZGdldEtleTogc3RyaW5nO1xuICBwcml2YXRlIF9jdXJyZW50V2lkZ2V0VGFiOiBDYXNlV2lkZ2V0c1JlcztcbiAgQElucHV0KCkgcHVibGljIHNldCBjdXJyZW50V2lkZ2V0VGFiKHZhbHVlOiBDYXNlV2lkZ2V0c1Jlcykge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgIHRoaXMuX2N1cnJlbnRXaWRnZXRUYWIgPSB2YWx1ZTtcbiAgICB0aGlzLl9pdGVtcyQubmV4dCh2YWx1ZT8ud2lkZ2V0cyk7XG4gICAgdGhpcy5fdXNlZEtleXMgPSB2YWx1ZT8ud2lkZ2V0cy5tYXAod2lkZ2V0ID0+IHdpZGdldC5rZXkpO1xuICAgIHRoaXMuZHJhZ0FuZERyb3BEaXNhYmxlZC5zZXQoZmFsc2UpO1xuICB9XG4gIHB1YmxpYyBnZXQgY3VycmVudFdpZGdldFRhYigpOiBDYXNlV2lkZ2V0c1JlcyB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRXaWRnZXRUYWI7XG4gIH1cblxuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZVNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBGSUVMRFM6IENvbHVtbkNvbmZpZ1tdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ3RpdGxlJyxcbiAgICAgIGxhYmVsOiAnaW50ZXJmYWNlLnRpdGxlJyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URVhULFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndGFncycsXG4gICAgICBsYWJlbDogJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29sdW1ucy50eXBlJyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5UQUdTLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAna2V5JyxcbiAgICAgIGxhYmVsOiAnaW50ZXJmYWNlLmtleScsXG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3dpZHRoVHJhbnNsYXRpb24nLFxuICAgICAgbGFiZWw6ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbHVtbnMud2lkdGgnLFxuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdoaWdoQ29udHJhc3QnLFxuICAgICAgbGFiZWw6ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbHVtbnMuaGlnaENvbnRyYXN0JyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5CT09MRUFOLFxuICAgIH0sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IEFDVElPTl9JVEVNUzogQWN0aW9uSXRlbVtdID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnaW50ZXJmYWNlLmVkaXQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuZWRpdFdpZGdldC5iaW5kKHRoaXMpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdpbnRlcmZhY2UuZGVsZXRlJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLmRlbGV0ZVdpZGdldC5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgfSxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhcmJvbkxpc3RJdGVtW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IGl0ZW1zJDogT2JzZXJ2YWJsZTxDYXJib25MaXN0SXRlbVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX2l0ZW1zJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpdGVtc10pID0+XG4gICAgICBpdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICB3aWR0aFRyYW5zbGF0aW9uOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLmdldFdpZHRoVHJhbnNsYXRpb25LZXkoaXRlbS53aWR0aCkpLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYHdpZGdldFRhYk1hbmFnZW1lbnQudHlwZXMuJHtpdGVtLnR5cGV9LnRpdGxlYCksXG4gICAgICAgICAgICB0eXBlOiBXaWRnZXRUeXBlVGFnc1tpdGVtLnR5cGVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzV2l6YXJkT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzRWRpdE1vZGUgPSB0aGlzLndpZGdldFdpemFyZFNlcnZpY2UuZWRpdE1vZGU7XG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVNb2RhbE9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVSb3dLZXkkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBkcmFnQW5kRHJvcERpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIF91c2VkS2V5czogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlHZW5lcmF0b3JTZXJ2aWNlOiBLZXlHZW5lcmF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFRhYk1hbmFnZW1lbnRTZXJ2aWNlOiBXaWRnZXRUYWJNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFdpemFyZFNlcnZpY2U6IFdpZGdldFdpemFyZFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBlZGl0V2lkZ2V0KHRhYldpZGdldDogQ2FzZVdpZGdldCk6IHZvaWQge1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRUaXRsZS5zZXQodGFiV2lkZ2V0LnRpdGxlKTtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0U3R5bGUuc2V0KFxuICAgICAgdGFiV2lkZ2V0LmhpZ2hDb250cmFzdCA/IFdpZGdldFN0eWxlLkhJR0hfQ09OVFJBU1QgOiBXaWRnZXRTdHlsZS5ERUZBVUxUXG4gICAgKTtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0V2lkdGguc2V0KHRhYldpZGdldC53aWR0aCk7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLnNlbGVjdGVkV2lkZ2V0LnNldChcbiAgICAgIEFWQUlMQUJMRV9XSURHRVRTLmZpbmQoYXZhaWxhYmxlID0+IGF2YWlsYWJsZS50eXBlID09PSB0YWJXaWRnZXQudHlwZSkgPz8gbnVsbFxuICAgICk7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQuc2V0KHRhYldpZGdldC5wcm9wZXJ0aWVzKTtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2UuZWRpdE1vZGUuc2V0KHRydWUpO1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRLZXkuc2V0KHRhYldpZGdldC5rZXkpO1xuICAgIHRoaXMuaXNXaXphcmRPcGVuJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9wZW5BZGRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzV2l6YXJkT3BlbiQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZUNvbmZpcm0od2lkZ2V0S2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLndpZGdldFRhYk1hbmFnZW1lbnRTZXJ2aWNlXG4gICAgICAudXBkYXRlV2lkZ2V0cyh7XG4gICAgICAgIC4uLnRoaXMuY3VycmVudFdpZGdldFRhYixcbiAgICAgICAgd2lkZ2V0czogdGhpcy5jdXJyZW50V2lkZ2V0VGFiLndpZGdldHMuZmlsdGVyKHdpZGdldCA9PiB3aWRnZXQua2V5ICE9PSB3aWRnZXRLZXkpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VTYXZlZC5lbWl0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlRXZlbnQod2lkZ2V0UmVzdWx0OiBCYXNpY0Nhc2VXaWRnZXQsIGV4aXN0aW5nV2lkZ2V0czogQ2FzZVdpZGdldFtdKTogdm9pZCB7XG4gICAgdGhpcy5pc1dpemFyZE9wZW4kLm5leHQoZmFsc2UpO1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS5yZXNldFdpemFyZCgpO1xuXG4gICAgaWYgKCF3aWRnZXRSZXN1bHQpIHJldHVybjtcblxuICAgIHRoaXMud2lkZ2V0VGFiTWFuYWdlbWVudFNlcnZpY2VcbiAgICAgIC51cGRhdGVXaWRnZXRzKHtcbiAgICAgICAgY2FzZURlZmluaXRpb25OYW1lOiB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICAgIGtleTogdGhpcy50YWJXaWRnZXRLZXksXG4gICAgICAgIHdpZGdldHM6ICEhd2lkZ2V0UmVzdWx0LmtleVxuICAgICAgICAgID8gZXhpc3RpbmdXaWRnZXRzLm1hcCgod2lkZ2V0OiBCYXNpY0Nhc2VXaWRnZXQpID0+XG4gICAgICAgICAgICAgIHdpZGdldC5rZXkgPT09IHdpZGdldFJlc3VsdC5rZXkgPyB3aWRnZXRSZXN1bHQgOiB3aWRnZXRcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgLi4uZXhpc3RpbmdXaWRnZXRzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4ud2lkZ2V0UmVzdWx0LFxuICAgICAgICAgICAgICAgIGtleTogdGhpcy5rZXlHZW5lcmF0b3JTZXJ2aWNlLmdldFVuaXF1ZUtleSh3aWRnZXRSZXN1bHQudGl0bGUsIHRoaXMuX3VzZWRLZXlzKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZVNhdmVkLmVtaXQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uSXRlbXNSZW9yZGVyZWQod2lkZ2V0czogQ2FzZVdpZGdldFtdKTogdm9pZCB7XG4gICAgdGhpcy5kcmFnQW5kRHJvcERpc2FibGVkLnNldCh0cnVlKTtcblxuICAgIHRoaXMud2lkZ2V0VGFiTWFuYWdlbWVudFNlcnZpY2VcbiAgICAgIC51cGRhdGVXaWRnZXRzKHtcbiAgICAgICAgLi4udGhpcy5jdXJyZW50V2lkZ2V0VGFiLFxuICAgICAgICB3aWRnZXRzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VTYXZlZC5lbWl0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlV2lkZ2V0KHRhYldpZGdldDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVSb3dLZXkkLm5leHQodGFiV2lkZ2V0LmtleSk7XG4gICAgdGhpcy5kZWxldGVNb2RhbE9wZW4kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFdpZHRoVHJhbnNsYXRpb25LZXkod2lkdGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgc3dpdGNoICh3aWR0aCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGguc21hbGwudGl0bGUnO1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGgubWVkaXVtLnRpdGxlJztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgcmV0dXJuICd3aWRnZXRUYWJNYW5hZ2VtZW50LndpZHRoLmxhcmdlLnRpdGxlJztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgcmV0dXJuICd3aWRnZXRUYWJNYW5hZ2VtZW50LndpZHRoLnh0cmFMYXJnZS50aXRsZSc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIGlzV2l6YXJkT3BlbjogaXNXaXphcmRPcGVuJCB8IGFzeW5jLFxuICAgIGl0ZW1zOiBpdGVtcyQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8dmFsdGltby1jYXJib24tbGlzdFxuICAgIFthY3Rpb25JdGVtc109XCJBQ1RJT05fSVRFTVNcIlxuICAgIFtmaWVsZHNdPVwiRklFTERTXCJcbiAgICBbaGVhZGVyXT1cImZhbHNlXCJcbiAgICBbaXRlbXNdPVwib2JzLml0ZW1zXCJcbiAgICBbZHJhZ0FuZERyb3BdPVwidHJ1ZVwiXG4gICAgW2RyYWdBbmREcm9wRGlzYWJsZWRdPVwiZHJhZ0FuZERyb3BEaXNhYmxlZCgpXCJcbiAgICAoaXRlbXNSZW9yZGVyZWQpPVwib25JdGVtc1Jlb3JkZXJlZCgkZXZlbnQpXCJcbiAgICAocm93Q2xpY2tlZCk9XCJlZGl0V2lkZ2V0KCRldmVudClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciBjYXJib25Ub29sYmFyQ29udGVudD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRXaWRnZXRCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwiYWRkV2lkZ2V0QnV0dG9uXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5saXN0Lm5vUmVzdWx0cy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50Lmxpc3Qubm9SZXN1bHRzLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICA8L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG5cbiAgPG5nLXRlbXBsYXRlICNhZGRXaWRnZXRCdXR0b24+XG4gICAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5BZGRNb2RhbCgpXCI+XG4gICAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5saXN0LmFkZCcgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDx2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtd2l6YXJkXG4gICAgW2VkaXRNb2RlXT1cImlzRWRpdE1vZGUoKVwiXG4gICAgW29wZW5dPVwib2JzLmlzV2l6YXJkT3BlblwiXG4gICAgKGNsb3NlRXZlbnQpPVwib25DbG9zZUV2ZW50KCRldmVudCwgb2JzLml0ZW1zKVwiXG4gID48L3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC13aXphcmQ+XG5cbiAgPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gICAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5kZWxldGVcIlxuICAgIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgd2lkZ2V0P1wiXG4gICAgW291dHB1dE9uQ29uZmlybV09XCJkZWxldGVSb3dLZXkkIHwgYXN5bmNcIlxuICAgIFtzaG93TW9kYWxTdWJqZWN0JF09XCJkZWxldGVNb2RhbE9wZW4kXCJcbiAgICB0aXRsZVRyYW5zbGF0aW9uS2V5PVwiaW50ZXJmYWNlLmRlbGV0ZVwiXG4gICAgKGNvbmZpcm1FdmVudCk9XCJvbkRlbGV0ZUNvbmZpcm0oJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYi9lZGl0b3IvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYi9lZGl0b3IvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFHTCxnQkFBZ0IsRUFFaEIsdUJBQXVCLEVBRXZCLFFBQVEsR0FDVCxNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxXQUFX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QWdCO3dCQUNoQixZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixzQ0FBc0M7d0JBQ3RDLHVCQUF1QjtxQkFDeEI7a01BR2Usc0JBQXNCO3NCQUFyQyxLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRWMsZ0JBQWdCO3NCQUFuQyxLQUFLO2dCQVlvQixXQUFXO3NCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBBY3Rpb25JdGVtLFxuICBDYXJib25MaXN0SXRlbSxcbiAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgQ29sdW1uQ29uZmlnLFxuICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgS2V5R2VuZXJhdG9yU2VydmljZSxcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtCYXNpY0Nhc2VXaWRnZXQsIENhc2VXaWRnZXQsIENhc2VXaWRnZXRzUmVzfSBmcm9tICdAdmFsdGltby9kb3NzaWVyJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJY29uTW9kdWxlLCBUYWJzTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBVkFJTEFCTEVfV0lER0VUUywgV2lkZ2V0U3R5bGUsIFdpZGdldFR5cGVUYWdzfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtXaWRnZXRUYWJNYW5hZ2VtZW50U2VydmljZSwgV2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFdpZGdldFdpemFyZENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC13aXphcmQvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC13aXphcmQuY29tcG9uZW50JztcbmltcG9ydCB7Y2xvbmVEZWVwfSBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXRzLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0cy1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0V2l6YXJkQ29tcG9uZW50LFxuICAgIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudFdpZGdldHNFZGl0b3JDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgdGFiV2lkZ2V0S2V5OiBzdHJpbmc7XG4gIHByaXZhdGUgX2N1cnJlbnRXaWRnZXRUYWI6IENhc2VXaWRnZXRzUmVzO1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IGN1cnJlbnRXaWRnZXRUYWIodmFsdWU6IENhc2VXaWRnZXRzUmVzKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fY3VycmVudFdpZGdldFRhYiA9IHZhbHVlO1xuICAgIHRoaXMuX2l0ZW1zJC5uZXh0KHZhbHVlPy53aWRnZXRzKTtcbiAgICB0aGlzLl91c2VkS2V5cyA9IHZhbHVlPy53aWRnZXRzLm1hcCh3aWRnZXQgPT4gd2lkZ2V0LmtleSk7XG4gICAgdGhpcy5kcmFnQW5kRHJvcERpc2FibGVkLnNldChmYWxzZSk7XG4gIH1cbiAgcHVibGljIGdldCBjdXJyZW50V2lkZ2V0VGFiKCk6IENhc2VXaWRnZXRzUmVzIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFdpZGdldFRhYjtcbiAgfVxuXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlU2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IEZJRUxEUzogQ29sdW1uQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAga2V5OiAndGl0bGUnLFxuICAgICAgbGFiZWw6ICdpbnRlcmZhY2UudGl0bGUnLFxuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICd0YWdzJyxcbiAgICAgIGxhYmVsOiAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb2x1bW5zLnR5cGUnLFxuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRBR1MsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdrZXknLFxuICAgICAgbGFiZWw6ICdpbnRlcmZhY2Uua2V5JyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URVhULFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnd2lkdGhUcmFuc2xhdGlvbicsXG4gICAgICBsYWJlbDogJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29sdW1ucy53aWR0aCcsXG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2hpZ2hDb250cmFzdCcsXG4gICAgICBsYWJlbDogJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29sdW1ucy5oaWdoQ29udHJhc3QnLFxuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLkJPT0xFQU4sXG4gICAgfSxcbiAgXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgQUNUSU9OX0lURU1TOiBBY3Rpb25JdGVtW10gPSBbXG4gICAge1xuICAgICAgbGFiZWw6ICdpbnRlcmZhY2UuZWRpdCcsXG4gICAgICBjYWxsYmFjazogdGhpcy5lZGl0V2lkZ2V0LmJpbmQodGhpcyksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2ludGVyZmFjZS5kdXBsaWNhdGUnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuZHVwbGljYXRlV2lkZ2V0LmJpbmQodGhpcyksXG4gICAgfSxcbiAgICB7XG4gICAgICBsYWJlbDogJ2ludGVyZmFjZS5kZWxldGUnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuZGVsZXRlV2lkZ2V0LmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICB9LFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2l0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FyYm9uTGlzdEl0ZW1bXT4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXRlbXMkOiBPYnNlcnZhYmxlPENhcmJvbkxpc3RJdGVtW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5faXRlbXMkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2l0ZW1zXSkgPT5cbiAgICAgIGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIHdpZHRoVHJhbnNsYXRpb246IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuZ2V0V2lkdGhUcmFuc2xhdGlvbktleShpdGVtLndpZHRoKSksXG4gICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgd2lkZ2V0VGFiTWFuYWdlbWVudC50eXBlcy4ke2l0ZW0udHlwZX0udGl0bGVgKSxcbiAgICAgICAgICAgIHR5cGU6IFdpZGdldFR5cGVUYWdzW2l0ZW0udHlwZV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNXaXphcmRPcGVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNFZGl0TW9kZSA9IHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS5lZGl0TW9kZTtcbiAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZU1vZGFsT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGRlbGV0ZVJvd0tleSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRyYWdBbmREcm9wRGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByaXZhdGUgX3VzZWRLZXlzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleUdlbmVyYXRvclNlcnZpY2U6IEtleUdlbmVyYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2lkZ2V0VGFiTWFuYWdlbWVudFNlcnZpY2U6IFdpZGdldFRhYk1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2lkZ2V0V2l6YXJkU2VydmljZTogV2lkZ2V0V2l6YXJkU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIGVkaXRXaWRnZXQodGFiV2lkZ2V0OiBDYXNlV2lkZ2V0KTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldFRpdGxlLnNldCh0YWJXaWRnZXQudGl0bGUpO1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRTdHlsZS5zZXQoXG4gICAgICB0YWJXaWRnZXQuaGlnaENvbnRyYXN0ID8gV2lkZ2V0U3R5bGUuSElHSF9DT05UUkFTVCA6IFdpZGdldFN0eWxlLkRFRkFVTFRcbiAgICApO1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRXaWR0aC5zZXQodGFiV2lkZ2V0LndpZHRoKTtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uuc2VsZWN0ZWRXaWRnZXQuc2V0KFxuICAgICAgQVZBSUxBQkxFX1dJREdFVFMuZmluZChhdmFpbGFibGUgPT4gYXZhaWxhYmxlLnR5cGUgPT09IHRhYldpZGdldC50eXBlKSA/PyBudWxsXG4gICAgKTtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudC5zZXQodGFiV2lkZ2V0LnByb3BlcnRpZXMpO1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS5lZGl0TW9kZS5zZXQodHJ1ZSk7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldEtleS5zZXQodGFiV2lkZ2V0LmtleSk7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldEFjdGlvbnMuc2V0KHRhYldpZGdldC5hY3Rpb25zKTtcbiAgICB0aGlzLmlzV2l6YXJkT3BlbiQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBkdXBsaWNhdGVXaWRnZXQodGFiV2lkZ2V0OiBDYXNlV2lkZ2V0KTogdm9pZCB7XG4gICAgY29uc3QgdGFiV2lkZ2V0Q2xvbmUgPSBjbG9uZURlZXAodGFiV2lkZ2V0KTtcbiAgICB0YWJXaWRnZXRDbG9uZS5rZXkgPSBudWxsO1xuICAgIHRoaXMuZWRpdFdpZGdldCh0YWJXaWRnZXRDbG9uZSk7XG4gIH1cblxuICBwdWJsaWMgb3BlbkFkZE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNXaXphcmRPcGVuJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlQ29uZmlybSh3aWRnZXRLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMud2lkZ2V0VGFiTWFuYWdlbWVudFNlcnZpY2VcbiAgICAgIC51cGRhdGVXaWRnZXRzKHtcbiAgICAgICAgLi4udGhpcy5jdXJyZW50V2lkZ2V0VGFiLFxuICAgICAgICB3aWRnZXRzOiB0aGlzLmN1cnJlbnRXaWRnZXRUYWIud2lkZ2V0cy5maWx0ZXIod2lkZ2V0ID0+IHdpZGdldC5rZXkgIT09IHdpZGdldEtleSksXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZVNhdmVkLmVtaXQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VFdmVudCh3aWRnZXRSZXN1bHQ6IEJhc2ljQ2FzZVdpZGdldCwgZXhpc3RpbmdXaWRnZXRzOiBDYXNlV2lkZ2V0W10pOiB2b2lkIHtcbiAgICB0aGlzLmlzV2l6YXJkT3BlbiQubmV4dChmYWxzZSk7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLnJlc2V0V2l6YXJkKCk7XG5cbiAgICBpZiAoIXdpZGdldFJlc3VsdCkgcmV0dXJuO1xuXG4gICAgdGhpcy53aWRnZXRUYWJNYW5hZ2VtZW50U2VydmljZVxuICAgICAgLnVwZGF0ZVdpZGdldHMoe1xuICAgICAgICBjYXNlRGVmaW5pdGlvbk5hbWU6IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAga2V5OiB0aGlzLnRhYldpZGdldEtleSxcbiAgICAgICAgd2lkZ2V0czogISF3aWRnZXRSZXN1bHQua2V5XG4gICAgICAgICAgPyBleGlzdGluZ1dpZGdldHMubWFwKCh3aWRnZXQ6IEJhc2ljQ2FzZVdpZGdldCkgPT5cbiAgICAgICAgICAgICAgd2lkZ2V0LmtleSA9PT0gd2lkZ2V0UmVzdWx0LmtleSA/IHdpZGdldFJlc3VsdCA6IHdpZGdldFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAuLi5leGlzdGluZ1dpZGdldHMsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi53aWRnZXRSZXN1bHQsXG4gICAgICAgICAgICAgICAga2V5OiB0aGlzLmtleUdlbmVyYXRvclNlcnZpY2UuZ2V0VW5pcXVlS2V5KHdpZGdldFJlc3VsdC50aXRsZSwgdGhpcy5fdXNlZEtleXMpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlU2F2ZWQuZW1pdCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25JdGVtc1Jlb3JkZXJlZCh3aWRnZXRzOiBDYXNlV2lkZ2V0W10pOiB2b2lkIHtcbiAgICB0aGlzLmRyYWdBbmREcm9wRGlzYWJsZWQuc2V0KHRydWUpO1xuXG4gICAgdGhpcy53aWRnZXRUYWJNYW5hZ2VtZW50U2VydmljZVxuICAgICAgLnVwZGF0ZVdpZGdldHMoe1xuICAgICAgICAuLi50aGlzLmN1cnJlbnRXaWRnZXRUYWIsXG4gICAgICAgIHdpZGdldHMsXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZVNhdmVkLmVtaXQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVXaWRnZXQodGFiV2lkZ2V0OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZVJvd0tleSQubmV4dCh0YWJXaWRnZXQua2V5KTtcbiAgICB0aGlzLmRlbGV0ZU1vZGFsT3BlbiQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2lkdGhUcmFuc2xhdGlvbktleSh3aWR0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHdpZHRoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiAnd2lkZ2V0VGFiTWFuYWdlbWVudC53aWR0aC5zbWFsbC50aXRsZSc7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiAnd2lkZ2V0VGFiTWFuYWdlbWVudC53aWR0aC5tZWRpdW0udGl0bGUnO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGgubGFyZ2UudGl0bGUnO1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGgueHRyYUxhcmdlLnRpdGxlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgaXNXaXphcmRPcGVuOiBpc1dpemFyZE9wZW4kIHwgYXN5bmMsXG4gICAgaXRlbXM6IGl0ZW1zJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4+XG4gIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgW2FjdGlvbkl0ZW1zXT1cIkFDVElPTl9JVEVNU1wiXG4gICAgW2ZpZWxkc109XCJGSUVMRFNcIlxuICAgIFtoZWFkZXJdPVwiZmFsc2VcIlxuICAgIFtpdGVtc109XCJvYnMuaXRlbXNcIlxuICAgIFtkcmFnQW5kRHJvcF09XCJ0cnVlXCJcbiAgICBbZHJhZ0FuZERyb3BEaXNhYmxlZF09XCJkcmFnQW5kRHJvcERpc2FibGVkKClcIlxuICAgIChpdGVtc1Jlb3JkZXJlZCk9XCJvbkl0ZW1zUmVvcmRlcmVkKCRldmVudClcIlxuICAgIChyb3dDbGlja2VkKT1cImVkaXRXaWRnZXQoJGV2ZW50KVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGNhcmJvblRvb2xiYXJDb250ZW50PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZFdpZGdldEJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2FjdGlvbl09XCJhZGRXaWRnZXRCdXR0b25cIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50Lmxpc3Qubm9SZXN1bHRzLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQubGlzdC5ub1Jlc3VsdHMudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIDwvdmFsdGltby1jYXJib24tbGlzdD5cblxuICA8bmctdGVtcGxhdGUgI2FkZFdpZGdldEJ1dHRvbj5cbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbkFkZE1vZGFsKClcIj5cbiAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50Lmxpc3QuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC13aXphcmRcbiAgICBbZWRpdE1vZGVdPVwiaXNFZGl0TW9kZSgpXCJcbiAgICBbb3Blbl09XCJvYnMuaXNXaXphcmRPcGVuXCJcbiAgICAoY2xvc2VFdmVudCk9XCJvbkNsb3NlRXZlbnQoJGV2ZW50LCBvYnMuaXRlbXMpXCJcbiAgPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXdpemFyZD5cblxuICA8dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiaW50ZXJmYWNlLmRlbGV0ZVwiXG4gICAgY29uZmlybUJ1dHRvblR5cGU9XCJkYW5nZXJcIlxuICAgIGNvbnRlbnRUcmFuc2xhdGlvbktleT1cIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyB3aWRnZXQ/XCJcbiAgICBbb3V0cHV0T25Db25maXJtXT1cImRlbGV0ZVJvd0tleSQgfCBhc3luY1wiXG4gICAgW3Nob3dNb2RhbFN1YmplY3QkXT1cImRlbGV0ZU1vZGFsT3BlbiRcIlxuICAgIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2UuZGVsZXRlXCJcbiAgICAoY29uZmlybUV2ZW50KT1cIm9uRGVsZXRlQ29uZmlybSgkZXZlbnQpXCJcbiAgPjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==