@valtimo/plugin 12.21.1 → 12.23.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 (31) hide show
  1. package/esm2022/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.mjs +5 -5
  2. package/esm2022/lib/plugins/zaken-api/components/get-zaak-informatieobjecten/get-zaak-informatieobjecten.component.mjs +83 -0
  3. package/esm2022/lib/plugins/zaken-api/components/patch-zaak/patch-zaak-configuration.component.mjs +135 -0
  4. package/esm2022/lib/plugins/zaken-api/components/zaken-api-configuration/zaken-api-configuration.component.mjs +1 -1
  5. package/esm2022/lib/plugins/zaken-api/models/config.mjs +1 -1
  6. package/esm2022/lib/plugins/zaken-api/models/create-zaak-properties.mjs +17 -2
  7. package/esm2022/lib/plugins/zaken-api/models/patch-zaak-properties.mjs +33 -0
  8. package/esm2022/lib/plugins/zaken-api/zaken-api-plugin.module.mjs +13 -3
  9. package/esm2022/lib/plugins/zaken-api/zaken-api-plugin.specification.mjs +68 -1
  10. package/esm2022/public-api.mjs +3 -1
  11. package/fesm2022/valtimo-plugin.mjs +349 -27
  12. package/fesm2022/valtimo-plugin.mjs.map +1 -1
  13. package/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.d.ts +6 -6
  14. package/lib/plugins/zaken-api/components/create-zaak/create-zaak-configuration.component.d.ts.map +1 -1
  15. package/lib/plugins/zaken-api/components/get-zaak-informatieobjecten/get-zaak-informatieobjecten.component.d.ts +34 -0
  16. package/lib/plugins/zaken-api/components/get-zaak-informatieobjecten/get-zaak-informatieobjecten.component.d.ts.map +1 -0
  17. package/lib/plugins/zaken-api/components/patch-zaak/patch-zaak-configuration.component.d.ts +41 -0
  18. package/lib/plugins/zaken-api/components/patch-zaak/patch-zaak-configuration.component.d.ts.map +1 -0
  19. package/lib/plugins/zaken-api/components/zaken-api-configuration/zaken-api-configuration.component.d.ts.map +1 -1
  20. package/lib/plugins/zaken-api/models/config.d.ts +21 -1
  21. package/lib/plugins/zaken-api/models/config.d.ts.map +1 -1
  22. package/lib/plugins/zaken-api/models/create-zaak-properties.d.ts +2 -2
  23. package/lib/plugins/zaken-api/models/create-zaak-properties.d.ts.map +1 -1
  24. package/lib/plugins/zaken-api/models/patch-zaak-properties.d.ts +3 -0
  25. package/lib/plugins/zaken-api/models/patch-zaak-properties.d.ts.map +1 -0
  26. package/lib/plugins/zaken-api/zaken-api-plugin.module.d.ts +23 -21
  27. package/lib/plugins/zaken-api/zaken-api-plugin.module.d.ts.map +1 -1
  28. package/lib/plugins/zaken-api/zaken-api-plugin.specification.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/public-api.d.ts +2 -0
  31. package/public-api.d.ts.map +1 -1
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
2
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
3
3
  *
4
4
  * Licensed under EUPL, Version 1.2 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
17
17
  import { BehaviorSubject, combineLatest, filter, map, switchMap, take, tap, } from 'rxjs';
18
18
  import { PluginTranslatePipe } from '../../../../pipes';
19
19
  import { Add16, TrashCan16 } from '@carbon/icons';
20
- import { ExtraPropertiesOptions } from '../../models/create-zaak-properties';
20
+ import { CreateZaakExtraPropertyOptions, } from '../../models/create-zaak-properties';
21
21
  import * as i0 from "@angular/core";
22
22
  import * as i1 from "@valtimo/resource";
23
23
  import * as i2 from "@valtimo/document";
@@ -81,7 +81,7 @@ export class CreateZaakConfigurationComponent {
81
81
  ngOnInit() {
82
82
  this.openSaveSubscription();
83
83
  this.prefillConfiguration$.pipe(take(1)).subscribe(prefill => {
84
- ExtraPropertiesOptions.filter(property => !!prefill[property]).forEach(property => this.addCaseProperty(property));
84
+ CreateZaakExtraPropertyOptions.filter(property => prefill && !!prefill[property]).forEach(property => this.addCaseProperty(property));
85
85
  });
86
86
  }
87
87
  ngOnDestroy() {
@@ -155,7 +155,7 @@ export class CreateZaakConfigurationComponent {
155
155
  }
156
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateZaakConfigurationComponent, decorators: [{
157
157
  type: Component,
158
- args: [{ selector: 'valtimo-create-zaak-configuration', providers: [PluginTranslatePipe], 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<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: obs.pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: obs.pluginId | async\"\n [widthPx]=\"350\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakTypeToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.zaakTypeSelectItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [required]=\"true\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n ></v-select>\n </ng-container>\n\n @for (property of propertyList; track property) {\n @if (property === 'description') {\n <div class=\"property-input\">\n <v-input\n name=\"description\"\n [title]=\"'beschrijving' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.description\"\n [required]=\"true\"\n (valueChange)=\"onPropertyChanged('description', $event)\"\n />\n\n <button class=\"btn btn-space delete-button\" (click)=\"removeCaseProperty('description')\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n } @else if (property === 'plannedEndDate') {\n <div class=\"property-input\">\n <v-input\n name=\"plannedEndDate\"\n [title]=\"'plannedEndDate' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.plannedEndDate\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onPropertyChanged('plannedEndDate', $event)\"\n ></v-input>\n\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeCaseProperty('plannedEndDate')\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n } @else if (property === 'finalDeliveryDate') {\n <div class=\"property-input\">\n <v-input\n name=\"finalDeliveryDate\"\n [title]=\"'finalDeliveryDate' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.finalDeliveryDate\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onPropertyChanged('finalDeliveryDate', $event)\"\n ></v-input>\n\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeCaseProperty('finalDeliveryDate')\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n }\n }\n\n <button\n cdsButton=\"primary\"\n [size]=\"'md'\"\n [cdsOverflowMenu]=\"addCasePropertyList\"\n [customPane]=\"true\"\n placement=\"bottom\"\n >\n {{ 'addZaakProperty' | pluginTranslate: obs.pluginId | async }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #addCasePropertyList>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('description')\"\n *ngIf=\"!hasPropertyBeenAdded('description')\"\n >\n {{ 'beschrijving' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('plannedEndDate')\"\n *ngIf=\"!hasPropertyBeenAdded('plannedEndDate')\"\n >\n {{ 'plannedEndDate' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('finalDeliveryDate')\"\n *ngIf=\"!hasPropertyBeenAdded('finalDeliveryDate')\"\n >\n {{ 'finalDeliveryDate' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}::ng-deep .cds--overflow-menu-options{z-index:10000!important;width:230px}.property-input{display:flex}.property-input v-input,.property-input cds-date-picker-input{flex-grow:1}.property-input button{height:46px;width:46px;margin:16px}.delete-button:hover{background-color:#e12717}\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"] }]
158
+ args: [{ standalone: false, selector: 'valtimo-create-zaak-configuration', providers: [PluginTranslatePipe], 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<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n pluginId: pluginId$ | async,\n selectedInputOption: selectedInputOption$ | async,\n zaakTypeSelectItems: zaakTypeItems$ | async,\n loading: loading$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'createZaakInformation' | pluginTranslate: obs.pluginId | async }}\n </v-paragraph>\n <v-form (valueChange)=\"formValueChange($event)\">\n <v-input\n name=\"rsin\"\n [title]=\"'rsin' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.rsin\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'rsinTooltip' | pluginTranslate: obs.pluginId | async\"\n [widthPx]=\"350\"\n >\n </v-input>\n <v-radio\n name=\"inputTypeZaakTypeToggle\"\n [disabled]=\"obs.disabled\"\n [title]=\"'inputTypeZaakTypeToggle' | pluginTranslate: obs.pluginId | async\"\n [radioValues]=\"inputTypeOptions$ | async\"\n [defaultValue]=\"selectedInputOption$ | async\"\n [margin]=\"true\"\n >\n </v-radio>\n <v-input\n *ngIf=\"obs.selectedInputOption === 'text'\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakTypeUrl' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.zaaktypeUrl\"\n [disabled]=\"obs.disabled || obs.selectedInputOption === 'selection'\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'zaakTypeTooltip' | pluginTranslate: obs.pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n <ng-container *ngIf=\"obs.selectedInputOption === 'selection'\">\n <v-select\n [items]=\"obs.zaakTypeSelectItems\"\n [margin]=\"true\"\n [widthInPx]=\"350\"\n name=\"zaaktypeUrl\"\n [title]=\"'zaakType' | pluginTranslate: obs.pluginId | async\"\n [disabled]=\"\n obs.disabled ||\n obs.selectedInputOption === 'text' ||\n oneSelectItem(obs.zaakTypeSelectItems)\n \"\n [defaultSelectionId]=\"\n (selectItemsIncludeId(obs.zaakTypeSelectItems, obs.prefill?.zaaktypeUrl) &&\n obs.prefill?.zaaktypeUrl) ||\n (oneSelectItem(obs.zaakTypeSelectItems) && obs.zaakTypeSelectItems[0].id)\n \"\n [required]=\"true\"\n [loading]=\"!obs.zaakTypeSelectItems\"\n [tooltip]=\"'zaakTypeSelectTooltip' | pluginTranslate: obs.pluginId | async\"\n ></v-select>\n </ng-container>\n\n @for (property of propertyList; track property) {\n @if (property === 'description') {\n <div class=\"property-input\">\n <v-input\n name=\"description\"\n [title]=\"'beschrijving' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.description\"\n [required]=\"true\"\n (valueChange)=\"onPropertyChanged('description', $event)\"\n />\n\n <button class=\"btn btn-space delete-button\" (click)=\"removeCaseProperty('description')\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n } @else if (property === 'plannedEndDate') {\n <div class=\"property-input\">\n <v-input\n name=\"plannedEndDate\"\n [title]=\"'plannedEndDate' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.plannedEndDate\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onPropertyChanged('plannedEndDate', $event)\"\n ></v-input>\n\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeCaseProperty('plannedEndDate')\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n } @else if (property === 'finalDeliveryDate') {\n <div class=\"property-input\">\n <v-input\n name=\"finalDeliveryDate\"\n [title]=\"'finalDeliveryDate' | pluginTranslate: obs.pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.finalDeliveryDate\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: obs.pluginId | async\"\n (valueChange)=\"onPropertyChanged('finalDeliveryDate', $event)\"\n ></v-input>\n\n <button\n class=\"btn btn-space delete-button\"\n (click)=\"removeCaseProperty('finalDeliveryDate')\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n }\n }\n\n <button\n cdsButton=\"primary\"\n [size]=\"'md'\"\n [cdsOverflowMenu]=\"addCasePropertyList\"\n [customPane]=\"true\"\n placement=\"bottom\"\n >\n {{ 'addZaakProperty' | pluginTranslate: obs.pluginId | async }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </v-form>\n </ng-container>\n</ng-container>\n\n<ng-template #loading>\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #addCasePropertyList>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('description')\"\n *ngIf=\"!hasPropertyBeenAdded('description')\"\n >\n {{ 'beschrijving' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('plannedEndDate')\"\n *ngIf=\"!hasPropertyBeenAdded('plannedEndDate')\"\n >\n {{ 'plannedEndDate' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n <cds-overflow-menu-option\n (click)=\"addCaseProperty('finalDeliveryDate')\"\n *ngIf=\"!hasPropertyBeenAdded('finalDeliveryDate')\"\n >\n {{ 'finalDeliveryDate' | pluginTranslate: (pluginId$ | async) | async }}\n </cds-overflow-menu-option>\n</ng-template>\n", styles: [".loading-container{display:flex;flex-direction:row;justify-content:center;height:100%;width:100%;align-items:center}::ng-deep .cds--overflow-menu-options{z-index:10000!important;width:230px}.property-input{display:flex}.property-input v-input,.property-input cds-date-picker-input{flex-grow:1}.property-input button{height:46px;width:46px;margin:16px}.delete-button:hover{background-color:#e12717}\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"] }]
159
159
  }], ctorParameters: () => [{ type: i1.OpenZaakService }, { type: i2.DocumentService }, { type: i3.ModalService }, { type: i4.PluginTranslatePipe }, { type: i5.IconService }], propDecorators: { save$: [{
160
160
  type: Input
161
161
  }], disabled$: [{
@@ -169,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
169
169
  }], configuration: [{
170
170
  type: Output
171
171
  }] } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWsvY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWsvY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBR0gsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFLZCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUMsc0JBQXNCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7OztBQVE1RixNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQThFRCxZQUNtQixlQUFnQyxFQUNoQyxlQUFnQyxFQUNoQyxZQUEwQixFQUMxQixt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Qyw4cU9BMkxBOzs0RkQvSWEsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLG1DQUFtQyxhQUdsQyxDQUFDLG1CQUFtQixDQUFDO3lNQUt2QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxRQUFRO3NCQUFwQixLQUFLO2dCQUdHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0NyZWF0ZVphYWtDb25maWcsIElucHV0T3B0aW9ufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtPcGVuWmFha1NlcnZpY2UsIFphYWtUeXBlLCBaYWFrVHlwZUxpbmt9IGZyb20gJ0B2YWx0aW1vL3Jlc291cmNlJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge01vZGFsU2VydmljZSwgUmFkaW9WYWx1ZSwgU2VsZWN0SXRlbX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1BsdWdpblRyYW5zbGF0ZVBpcGV9IGZyb20gJy4uLy4uLy4uLy4uL3BpcGVzJztcbmltcG9ydCB7QWRkMTYsIFRyYXNoQ2FuMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtJY29uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0V4dHJhUHJvcGVydGllc09wdGlvbnMsIEV4dHJhUHJvcGVydGllc30gZnJvbSAnLi4vLi4vbW9kZWxzL2NyZWF0ZS16YWFrLXByb3BlcnRpZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWNyZWF0ZS16YWFrLWNvbmZpZ3VyYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS16YWFrLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbUGx1Z2luVHJhbnNsYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZVphYWtDb25maWd1cmF0aW9uQ29tcG9uZW50XG4gIGltcGxlbWVudHMgRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBzYXZlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgQElucHV0KCkgZGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBzZXQgcGx1Z2luSWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucGx1Z2luSWQkLm5leHQodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHByZWZpbGxDb25maWd1cmF0aW9uJDogT2JzZXJ2YWJsZTxDcmVhdGVaYWFrQ29uZmlnPjtcbiAgQE91dHB1dCgpIHZhbGlkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBjb25maWd1cmF0aW9uOiBFdmVudEVtaXR0ZXI8Q3JlYXRlWmFha0NvbmZpZz4gPSBuZXcgRXZlbnRFbWl0dGVyPENyZWF0ZVphYWtDb25maWc+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHByb3BlcnR5TGlzdDogQXJyYXk8RXh0cmFQcm9wZXJ0aWVzPiA9IFtdO1xuXG4gIHJlYWRvbmx5IHBsdWdpbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkSW5wdXRPcHRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbnB1dE9wdGlvbj4oJ3NlbGVjdGlvbicpO1xuXG4gIHJlYWRvbmx5IGlucHV0VHlwZU9wdGlvbnMkOiBPYnNlcnZhYmxlPEFycmF5PFJhZGlvVmFsdWU+PiA9IHRoaXMucGx1Z2luSWQkLnBpcGUoXG4gICAgZmlsdGVyKHBsdWdpbklkID0+ICEhcGx1Z2luSWQpLFxuICAgIHN3aXRjaE1hcChwbHVnaW5JZCA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMucGx1Z2luVHJhbnNsYXRlUGlwZS50cmFuc2Zvcm0oJ3NlbGVjdGlvbicsIHBsdWdpbklkKSxcbiAgICAgICAgdGhpcy5wbHVnaW5UcmFuc2xhdGVQaXBlLnRyYW5zZm9ybSgndGV4dCcsIHBsdWdpbklkKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtzZWxlY3Rpb25UcmFuc2xhdGlvbiwgdGV4dFRyYW5zbGF0aW9uXSkgPT4gW1xuICAgICAge3ZhbHVlOiAnc2VsZWN0aW9uJywgdGl0bGU6IHNlbGVjdGlvblRyYW5zbGF0aW9ufSxcbiAgICAgIHt2YWx1ZTogJ3RleHQnLCB0aXRsZTogdGV4dFRyYW5zbGF0aW9ufSxcbiAgICBdKVxuICApO1xuXG4gIHByaXZhdGUgc2F2ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENyZWF0ZVphYWtDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvcGVydGllcyA9IG5ldyBNYXA8RXh0cmFQcm9wZXJ0aWVzLCBzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IHphYWtUeXBlSXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PFNlbGVjdEl0ZW0+PiA9IHRoaXMubW9kYWxTZXJ2aWNlLm1vZGFsRGF0YSQucGlwZShcbiAgICBzd2l0Y2hNYXAocGFyYW1zID0+XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNCeVByb2Nlc3NEZWZpbml0aW9uS2V5KFxuICAgICAgICBwYXJhbXM/LnByb2Nlc3NEZWZpbml0aW9uS2V5XG4gICAgICApXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZXMoKSxcbiAgICAgICAgLi4ucHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPT5cbiAgICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZUxpbmsoXG4gICAgICAgICAgICBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLmRvY3VtZW50RGVmaW5pdGlvbklkLm5hbWVcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgY29uc3QgemFha1R5cGVzID0gcmVzdWx0c1swXSBhcyBBcnJheTxaYWFrVHlwZT47XG4gICAgICBjb25zdCB6YWFrVHlwZUxpbmtzID0gcmVzdWx0cy5maWx0ZXIoKHJlc3VsdCwgaW5kZXgpID0+IGluZGV4ICE9PSAwKSBhcyBBcnJheTxaYWFrVHlwZUxpbms+O1xuXG4gICAgICByZXR1cm4gemFha1R5cGVMaW5rc1xuICAgICAgICAuZmlsdGVyKHphYWtUeXBlTGluayA9PiAhIXphYWtUeXBlTGluaz8uemFha1R5cGVVcmwpXG4gICAgICAgIC5tYXAoemFha1R5cGVMaW5rID0+ICh7XG4gICAgICAgICAgaWQ6IHphYWtUeXBlTGluay56YWFrVHlwZVVybCxcbiAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgemFha1R5cGVzLmZpbmQoemFha1R5cGUgPT4gemFha1R5cGUudXJsID09PSB6YWFrVHlwZUxpbmsuemFha1R5cGVVcmwpPy5vbXNjaHJpanZpbmcgfHxcbiAgICAgICAgICAgIHphYWtUeXBlTGluay56YWFrVHlwZVVybCxcbiAgICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHRhcCh6YWFrVHlwZVNlbGVjdEl0ZW1zID0+IHtcbiAgICAgIHRoaXMucHJlZmlsbENvbmZpZ3VyYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHByZWZpbGxDb25maWcgPT4ge1xuICAgICAgICBjb25zdCB6YWFrVHlwZVVybCA9IHByZWZpbGxDb25maWc/LnphYWt0eXBlVXJsO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB6YWFrVHlwZVVybCAmJlxuICAgICAgICAgICEoKHphYWtUeXBlU2VsZWN0SXRlbXMgYXMgQXJyYXk8U2VsZWN0SXRlbT4pIHx8IFtdKS5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gemFha1R5cGVVcmwpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbnB1dE9wdGlvbiQubmV4dCgndGV4dCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlblphYWtTZXJ2aWNlOiBPcGVuWmFha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luVHJhbnNsYXRlUGlwZTogUGx1Z2luVHJhbnNsYXRlUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtBZGQxNiwgVHJhc2hDYW4xNl0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2F2ZVN1YnNjcmlwdGlvbigpO1xuXG4gICAgdGhpcy5wcmVmaWxsQ29uZmlndXJhdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocHJlZmlsbCA9PiB7XG4gICAgICBFeHRyYVByb3BlcnRpZXNPcHRpb25zLmZpbHRlcihwcm9wZXJ0eSA9PiAhIXByZWZpbGxbcHJvcGVydHldKS5mb3JFYWNoKHByb3BlcnR5ID0+XG4gICAgICAgIHRoaXMuYWRkQ2FzZVByb3BlcnR5KHByb3BlcnR5KVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGZvcm1WYWx1ZUNoYW5nZShmb3JtVmFsdWU6IENyZWF0ZVphYWtDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IChmb3JtVmFsdWVba2V5XSA9IHZhbHVlKSk7XG5cbiAgICBjb25zdCBpbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZSA9IGZvcm1WYWx1ZS5pbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZTtcbiAgICB0aGlzLmZvcm1WYWx1ZSQubmV4dChmb3JtVmFsdWUpO1xuICAgIHRoaXMuaGFuZGxlVmFsaWQoZm9ybVZhbHVlKTtcblxuICAgIGlmIChpbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZElucHV0T3B0aW9uJC5uZXh0KGlucHV0VHlwZVphYWtUeXBlVG9nZ2xlKTtcbiAgICB9XG4gIH1cblxuICBvbmVTZWxlY3RJdGVtKHNlbGVjdEl0ZW1zOiBBcnJheTxTZWxlY3RJdGVtPik6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdEl0ZW1zKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdEl0ZW1zLmxlbmd0aCA9PT0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZWxlY3RJdGVtc0luY2x1ZGVJZChzZWxlY3RJdGVtczogQXJyYXk8U2VsZWN0SXRlbT4sIGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RJdGVtcykpIHtcbiAgICAgIHJldHVybiAhIXNlbGVjdEl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBpZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWxpZChmb3JtVmFsdWU6IENyZWF0ZVphYWtDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBpc1Byb3BlcnR5SW52YWxpZCA9IHRoaXMucHJvcGVydHlMaXN0LnNvbWUocHJvcGVydHkgPT4gISEhZm9ybVZhbHVlW3Byb3BlcnR5XSk7XG4gICAgY29uc3QgdmFsaWQgPSAhIShmb3JtVmFsdWUucnNpbiAmJiBmb3JtVmFsdWUuemFha3R5cGVVcmwpICYmICFpc1Byb3BlcnR5SW52YWxpZDtcblxuICAgIHRoaXMudmFsaWQkLm5leHQodmFsaWQpO1xuICAgIHRoaXMudmFsaWQuZW1pdCh2YWxpZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TYXZlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc2F2ZSQ/LnN1YnNjcmliZShzYXZlID0+IHtcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybVZhbHVlJCwgdGhpcy52YWxpZCRdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZm9ybVZhbHVlLCB2YWxpZF0pID0+IHtcbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQ6IENyZWF0ZVphYWtDb25maWcgPSB7XG4gICAgICAgICAgICAgIHJzaW46IGZvcm1WYWx1ZS5yc2luLFxuICAgICAgICAgICAgICB6YWFrdHlwZVVybDogZm9ybVZhbHVlLnphYWt0eXBlVXJsLFxuICAgICAgICAgICAgICBtYW51YWxaYWFrVHlwZVVybDogZm9ybVZhbHVlLm1hbnVhbFphYWtUeXBlVXJsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlMaXN0LmZvckVhY2gocHJvcGVydHkgPT4gKHBheWxvYWRbcHJvcGVydHldID0gZm9ybVZhbHVlW3Byb3BlcnR5XSkpO1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmVtaXQocGF5bG9hZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDYXNlUHJvcGVydHkocHJvcGVydHk6IEV4dHJhUHJvcGVydGllcyk6IHZvaWQge1xuICAgIHRoaXMucHJvcGVydHlMaXN0LnB1c2gocHJvcGVydHkpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUNhc2VQcm9wZXJ0eShwcm9wZXJ0eTogRXh0cmFQcm9wZXJ0aWVzKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wZXJ0eUxpc3Quc3BsaWNlKHRoaXMucHJvcGVydHlMaXN0LmluZGV4T2YocHJvcGVydHkpLCAxKTtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzLmRlbGV0ZShwcm9wZXJ0eSk7XG4gICAgdGhpcy5vblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNQcm9wZXJ0eUJlZW5BZGRlZChwcm9wZXJ0eTogRXh0cmFQcm9wZXJ0aWVzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlMaXN0LmluZGV4T2YocHJvcGVydHkpICE9PSAtMTtcbiAgfVxuXG4gIHB1YmxpYyBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eTogRXh0cmFQcm9wZXJ0aWVzLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fcHJvcGVydGllcy5zZXQocHJvcGVydHksIHZhbHVlKTtcbiAgICB0aGlzLmZvcm1WYWx1ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoZm9ybVZhbHVlID0+IGZvcm1WYWx1ZSAhPT0gbnVsbCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgICAgdGhpcy5mb3JtVmFsdWVDaGFuZ2UoZm9ybVZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLFxuICAgIHByZWZpbGw6IHByZWZpbGxDb25maWd1cmF0aW9uJCA/IChwcmVmaWxsQ29uZmlndXJhdGlvbiQgfCBhc3luYykgOiBudWxsLFxuICAgIHBsdWdpbklkOiBwbHVnaW5JZCQgfCBhc3luYyxcbiAgICBzZWxlY3RlZElucHV0T3B0aW9uOiBzZWxlY3RlZElucHV0T3B0aW9uJCB8IGFzeW5jLFxuICAgIHphYWtUeXBlU2VsZWN0SXRlbXM6IHphYWtUeXBlSXRlbXMkIHwgYXN5bmMsXG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRpbmcgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8di1wYXJhZ3JhcGggW21hcmdpbl09XCJ0cnVlXCIgW2l0YWxpY109XCJ0cnVlXCI+XG4gICAgICB7eyAnY3JlYXRlWmFha0luZm9ybWF0aW9uJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmMgfX1cbiAgICA8L3YtcGFyYWdyYXBoPlxuICAgIDx2LWZvcm0gKHZhbHVlQ2hhbmdlKT1cImZvcm1WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8di1pbnB1dFxuICAgICAgICBuYW1lPVwicnNpblwiXG4gICAgICAgIFt0aXRsZV09XCIncnNpbicgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8ucnNpblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgICBbdG9vbHRpcF09XCIncnNpblRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFt3aWR0aFB4XT1cIjM1MFwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQ+XG4gICAgICA8di1yYWRpb1xuICAgICAgICBuYW1lPVwiaW5wdXRUeXBlWmFha1R5cGVUb2dnbGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgW3RpdGxlXT1cIidpbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZScgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW3JhZGlvVmFsdWVzXT1cImlucHV0VHlwZU9wdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInNlbGVjdGVkSW5wdXRPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgPlxuICAgICAgPC92LXJhZGlvPlxuICAgICAgPHYtaW5wdXRcbiAgICAgICAgKm5nSWY9XCJvYnMuc2VsZWN0ZWRJbnB1dE9wdGlvbiA9PT0gJ3RleHQnXCJcbiAgICAgICAgbmFtZT1cInphYWt0eXBlVXJsXCJcbiAgICAgICAgW3RpdGxlXT1cIid6YWFrVHlwZVVybCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8uemFha3R5cGVVcmxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkIHx8IG9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAnc2VsZWN0aW9uJ1wiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW3RyaW1dPVwidHJ1ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIid6YWFrVHlwZVRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICdzZWxlY3Rpb24nXCI+XG4gICAgICAgIDx2LXNlbGVjdFxuICAgICAgICAgIFtpdGVtc109XCJvYnMuemFha1R5cGVTZWxlY3RJdGVtc1wiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbd2lkdGhJblB4XT1cIjM1MFwiXG4gICAgICAgICAgbmFtZT1cInphYWt0eXBlVXJsXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3phYWtUeXBlJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgIG9icy5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgb2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICAgb25lU2VsZWN0SXRlbShvYnMuemFha1R5cGVTZWxlY3RJdGVtcylcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwiXG4gICAgICAgICAgICAoc2VsZWN0SXRlbXNJbmNsdWRlSWQob2JzLnphYWtUeXBlU2VsZWN0SXRlbXMsIG9icy5wcmVmaWxsPy56YWFrdHlwZVVybCkgJiZcbiAgICAgICAgICAgICAgb2JzLnByZWZpbGw/LnphYWt0eXBlVXJsKSB8fFxuICAgICAgICAgICAgKG9uZVNlbGVjdEl0ZW0ob2JzLnphYWtUeXBlU2VsZWN0SXRlbXMpICYmIG9icy56YWFrVHlwZVNlbGVjdEl0ZW1zWzBdLmlkKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgIFtsb2FkaW5nXT1cIiFvYnMuemFha1R5cGVTZWxlY3RJdGVtc1wiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ3phYWtUeXBlU2VsZWN0VG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgQGZvciAocHJvcGVydHkgb2YgcHJvcGVydHlMaXN0OyB0cmFjayBwcm9wZXJ0eSkge1xuICAgICAgICBAaWYgKHByb3BlcnR5ID09PSAnZGVzY3JpcHRpb24nKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWlucHV0XCI+XG4gICAgICAgICAgICA8di1pbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2Jlc2NocmlqdmluZycgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblByb3BlcnR5Q2hhbmdlZCgnZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNwYWNlIGRlbGV0ZS1idXR0b25cIiAoY2xpY2spPVwicmVtb3ZlQ2FzZVByb3BlcnR5KCdkZXNjcmlwdGlvbicpXCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ0cmFzaC1jYW5cIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChwcm9wZXJ0eSA9PT0gJ3BsYW5uZWRFbmREYXRlJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1pbnB1dFwiPlxuICAgICAgICAgICAgPHYtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cInBsYW5uZWRFbmREYXRlXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGFubmVkRW5kRGF0ZScgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8ucGxhbm5lZEVuZERhdGVcIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInZGF0ZWZvcm1hdFRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblByb3BlcnR5Q2hhbmdlZCgncGxhbm5lZEVuZERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3YtaW5wdXQ+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNwYWNlIGRlbGV0ZS1idXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2FzZVByb3BlcnR5KCdwbGFubmVkRW5kRGF0ZScpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKHByb3BlcnR5ID09PSAnZmluYWxEZWxpdmVyeURhdGUnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWlucHV0XCI+XG4gICAgICAgICAgICA8di1pbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZmluYWxEZWxpdmVyeURhdGVcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2ZpbmFsRGVsaXZlcnlEYXRlJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy5maW5hbERlbGl2ZXJ5RGF0ZVwiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3RyaW1dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIidkYXRlZm9ybWF0VG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUHJvcGVydHlDaGFuZ2VkKCdmaW5hbERlbGl2ZXJ5RGF0ZScsICRldmVudClcIlxuICAgICAgICAgICAgPjwvdi1pbnB1dD5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3BhY2UgZGVsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDYXNlUHJvcGVydHkoJ2ZpbmFsRGVsaXZlcnlEYXRlJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICBbc2l6ZV09XCInbWQnXCJcbiAgICAgICAgW2Nkc092ZXJmbG93TWVudV09XCJhZGRDYXNlUHJvcGVydHlMaXN0XCJcbiAgICAgICAgW2N1c3RvbVBhbmVdPVwidHJ1ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdhZGRaYWFrUHJvcGVydHknIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luYyB9fVxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3YtZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICA8Y2RzLWxvYWRpbmc+PC9jZHMtbG9hZGluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FkZENhc2VQcm9wZXJ0eUxpc3Q+XG4gIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAoY2xpY2spPVwiYWRkQ2FzZVByb3BlcnR5KCdkZXNjcmlwdGlvbicpXCJcbiAgICAqbmdJZj1cIiFoYXNQcm9wZXJ0eUJlZW5BZGRlZCgnZGVzY3JpcHRpb24nKVwiXG4gID5cbiAgICB7eyAnYmVzY2hyaWp2aW5nJyB8IHBsdWdpblRyYW5zbGF0ZTogKHBsdWdpbklkJCB8IGFzeW5jKSB8IGFzeW5jIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgKGNsaWNrKT1cImFkZENhc2VQcm9wZXJ0eSgncGxhbm5lZEVuZERhdGUnKVwiXG4gICAgKm5nSWY9XCIhaGFzUHJvcGVydHlCZWVuQWRkZWQoJ3BsYW5uZWRFbmREYXRlJylcIlxuICA+XG4gICAge3sgJ3BsYW5uZWRFbmREYXRlJyB8IHBsdWdpblRyYW5zbGF0ZTogKHBsdWdpbklkJCB8IGFzeW5jKSB8IGFzeW5jIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgKGNsaWNrKT1cImFkZENhc2VQcm9wZXJ0eSgnZmluYWxEZWxpdmVyeURhdGUnKVwiXG4gICAgKm5nSWY9XCIhaGFzUHJvcGVydHlCZWVuQWRkZWQoJ2ZpbmFsRGVsaXZlcnlEYXRlJylcIlxuICA+XG4gICAge3sgJ2ZpbmFsRGVsaXZlcnlEYXRlJyB8IHBsdWdpblRyYW5zbGF0ZTogKHBsdWdpbklkJCB8IGFzeW5jKSB8IGFzeW5jIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWsvY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvY3JlYXRlLXphYWsvY3JlYXRlLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBR0gsU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFLZCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBRUwsOEJBQThCLEdBQy9CLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7OztBQVM3QyxNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLElBQWEsUUFBUSxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQThFRCxZQUNtQixlQUFnQyxFQUNoQyxlQUFnQyxFQUNoQyxZQUEwQixFQUMxQixt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QUFDLDBCQzlDbEMsOHFPQTJMQTs7NEZEM0lhLGdDQUFnQztrQkFQNUMsU0FBUztpQ0FDSSxLQUFLLFlBQ1AsbUNBQW1DLGFBR2xDLENBQUMsbUJBQW1CLENBQUM7eU1BS3ZCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBR0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjUgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q3JlYXRlWmFha0NvbmZpZywgSW5wdXRPcHRpb259IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge09wZW5aYWFrU2VydmljZSwgWmFha1R5cGUsIFphYWtUeXBlTGlua30gZnJvbSAnQHZhbHRpbW8vcmVzb3VyY2UnO1xuaW1wb3J0IHtEb2N1bWVudFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2RvY3VtZW50JztcbmltcG9ydCB7TW9kYWxTZXJ2aWNlLCBSYWRpb1ZhbHVlLCBTZWxlY3RJdGVtfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7UGx1Z2luVHJhbnNsYXRlUGlwZX0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHtBZGQxNiwgVHJhc2hDYW4xNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5pbXBvcnQge0ljb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIENyZWF0ZVphYWtFeHRyYVByb3BlcnRpZXMsXG4gIENyZWF0ZVphYWtFeHRyYVByb3BlcnR5T3B0aW9ucyxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL2NyZWF0ZS16YWFrLXByb3BlcnRpZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG4gIHNlbGVjdG9yOiAndmFsdGltby1jcmVhdGUtemFhay1jb25maWd1cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS16YWFrLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtemFhay1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1BsdWdpblRyYW5zbGF0ZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVaYWFrQ29uZmlndXJhdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgc2F2ZSQ6IE9ic2VydmFibGU8dm9pZD47XG4gIEBJbnB1dCgpIGRpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgc2V0IHBsdWdpbklkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBsdWdpbklkJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBwcmVmaWxsQ29uZmlndXJhdGlvbiQ6IE9ic2VydmFibGU8Q3JlYXRlWmFha0NvbmZpZz47XG4gIEBPdXRwdXQoKSB2YWxpZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPENyZWF0ZVphYWtDb25maWc+ID0gbmV3IEV2ZW50RW1pdHRlcjxDcmVhdGVaYWFrQ29uZmlnPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9wZXJ0eUxpc3Q6IEFycmF5PENyZWF0ZVphYWtFeHRyYVByb3BlcnRpZXM+ID0gW107XG5cbiAgcmVhZG9ubHkgcGx1Z2luSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJbnB1dE9wdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElucHV0T3B0aW9uPignc2VsZWN0aW9uJyk7XG5cbiAgcmVhZG9ubHkgaW5wdXRUeXBlT3B0aW9ucyQ6IE9ic2VydmFibGU8QXJyYXk8UmFkaW9WYWx1ZT4+ID0gdGhpcy5wbHVnaW5JZCQucGlwZShcbiAgICBmaWx0ZXIocGx1Z2luSWQgPT4gISFwbHVnaW5JZCksXG4gICAgc3dpdGNoTWFwKHBsdWdpbklkID0+XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5wbHVnaW5UcmFuc2xhdGVQaXBlLnRyYW5zZm9ybSgnc2VsZWN0aW9uJywgcGx1Z2luSWQpLFxuICAgICAgICB0aGlzLnBsdWdpblRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKCd0ZXh0JywgcGx1Z2luSWQpLFxuICAgICAgXSlcbiAgICApLFxuICAgIG1hcCgoW3NlbGVjdGlvblRyYW5zbGF0aW9uLCB0ZXh0VHJhbnNsYXRpb25dKSA9PiBbXG4gICAgICB7dmFsdWU6ICdzZWxlY3Rpb24nLCB0aXRsZTogc2VsZWN0aW9uVHJhbnNsYXRpb259LFxuICAgICAge3ZhbHVlOiAndGV4dCcsIHRpdGxlOiB0ZXh0VHJhbnNsYXRpb259LFxuICAgIF0pXG4gICk7XG5cbiAgcHJpdmF0ZSBzYXZlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q3JlYXRlWmFha0NvbmZpZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wcm9wZXJ0aWVzID0gbmV3IE1hcDxDcmVhdGVaYWFrRXh0cmFQcm9wZXJ0aWVzLCBzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHJlYWRvbmx5IHphYWtUeXBlSXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PFNlbGVjdEl0ZW0+PiA9IHRoaXMubW9kYWxTZXJ2aWNlLm1vZGFsRGF0YSQucGlwZShcbiAgICBzd2l0Y2hNYXAocGFyYW1zID0+XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNCeVByb2Nlc3NEZWZpbml0aW9uS2V5KFxuICAgICAgICBwYXJhbXM/LnByb2Nlc3NEZWZpbml0aW9uS2V5XG4gICAgICApXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZXMoKSxcbiAgICAgICAgLi4ucHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gPT5cbiAgICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZUxpbmsoXG4gICAgICAgICAgICBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLmRvY3VtZW50RGVmaW5pdGlvbklkLm5hbWVcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICBdKVxuICAgICksXG4gICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgY29uc3QgemFha1R5cGVzID0gcmVzdWx0c1swXSBhcyBBcnJheTxaYWFrVHlwZT47XG4gICAgICBjb25zdCB6YWFrVHlwZUxpbmtzID0gcmVzdWx0cy5maWx0ZXIoKHJlc3VsdCwgaW5kZXgpID0+IGluZGV4ICE9PSAwKSBhcyBBcnJheTxaYWFrVHlwZUxpbms+O1xuXG4gICAgICByZXR1cm4gemFha1R5cGVMaW5rc1xuICAgICAgICAuZmlsdGVyKHphYWtUeXBlTGluayA9PiAhIXphYWtUeXBlTGluaz8uemFha1R5cGVVcmwpXG4gICAgICAgIC5tYXAoemFha1R5cGVMaW5rID0+ICh7XG4gICAgICAgICAgaWQ6IHphYWtUeXBlTGluay56YWFrVHlwZVVybCxcbiAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgemFha1R5cGVzLmZpbmQoemFha1R5cGUgPT4gemFha1R5cGUudXJsID09PSB6YWFrVHlwZUxpbmsuemFha1R5cGVVcmwpPy5vbXNjaHJpanZpbmcgfHxcbiAgICAgICAgICAgIHphYWtUeXBlTGluay56YWFrVHlwZVVybCxcbiAgICAgICAgfSkpO1xuICAgIH0pLFxuICAgIHRhcCh6YWFrVHlwZVNlbGVjdEl0ZW1zID0+IHtcbiAgICAgIHRoaXMucHJlZmlsbENvbmZpZ3VyYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHByZWZpbGxDb25maWcgPT4ge1xuICAgICAgICBjb25zdCB6YWFrVHlwZVVybCA9IHByZWZpbGxDb25maWc/LnphYWt0eXBlVXJsO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB6YWFrVHlwZVVybCAmJlxuICAgICAgICAgICEoKHphYWtUeXBlU2VsZWN0SXRlbXMgYXMgQXJyYXk8U2VsZWN0SXRlbT4pIHx8IFtdKS5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gemFha1R5cGVVcmwpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbnB1dE9wdGlvbiQubmV4dCgndGV4dCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlblphYWtTZXJ2aWNlOiBPcGVuWmFha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luVHJhbnNsYXRlUGlwZTogUGx1Z2luVHJhbnNsYXRlUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZVxuICApIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtBZGQxNiwgVHJhc2hDYW4xNl0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2F2ZVN1YnNjcmlwdGlvbigpO1xuXG4gICAgdGhpcy5wcmVmaWxsQ29uZmlndXJhdGlvbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocHJlZmlsbCA9PiB7XG4gICAgICBDcmVhdGVaYWFrRXh0cmFQcm9wZXJ0eU9wdGlvbnMuZmlsdGVyKHByb3BlcnR5ID0+IHByZWZpbGwgJiYgISFwcmVmaWxsW3Byb3BlcnR5XSkuZm9yRWFjaChcbiAgICAgICAgcHJvcGVydHkgPT4gdGhpcy5hZGRDYXNlUHJvcGVydHkocHJvcGVydHkpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZm9ybVZhbHVlQ2hhbmdlKGZvcm1WYWx1ZTogQ3JlYXRlWmFha0NvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuX3Byb3BlcnRpZXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gKGZvcm1WYWx1ZVtrZXldID0gdmFsdWUpKTtcblxuICAgIGNvbnN0IGlucHV0VHlwZVphYWtUeXBlVG9nZ2xlID0gZm9ybVZhbHVlLmlucHV0VHlwZVphYWtUeXBlVG9nZ2xlO1xuICAgIHRoaXMuZm9ybVZhbHVlJC5uZXh0KGZvcm1WYWx1ZSk7XG4gICAgdGhpcy5oYW5kbGVWYWxpZChmb3JtVmFsdWUpO1xuXG4gICAgaWYgKGlucHV0VHlwZVphYWtUeXBlVG9nZ2xlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5wdXRPcHRpb24kLm5leHQoaW5wdXRUeXBlWmFha1R5cGVUb2dnbGUpO1xuICAgIH1cbiAgfVxuXG4gIG9uZVNlbGVjdEl0ZW0oc2VsZWN0SXRlbXM6IEFycmF5PFNlbGVjdEl0ZW0+KTogYm9vbGVhbiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0SXRlbXMpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0SXRlbXMubGVuZ3RoID09PSAxO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNlbGVjdEl0ZW1zSW5jbHVkZUlkKHNlbGVjdEl0ZW1zOiBBcnJheTxTZWxlY3RJdGVtPiwgaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdEl0ZW1zKSkge1xuICAgICAgcmV0dXJuICEhc2VsZWN0SXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZhbGlkKGZvcm1WYWx1ZTogQ3JlYXRlWmFha0NvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGlzUHJvcGVydHlJbnZhbGlkID0gdGhpcy5wcm9wZXJ0eUxpc3Quc29tZShwcm9wZXJ0eSA9PiAhISFmb3JtVmFsdWVbcHJvcGVydHldKTtcbiAgICBjb25zdCB2YWxpZCA9ICEhKGZvcm1WYWx1ZS5yc2luICYmIGZvcm1WYWx1ZS56YWFrdHlwZVVybCkgJiYgIWlzUHJvcGVydHlJbnZhbGlkO1xuXG4gICAgdGhpcy52YWxpZCQubmV4dCh2YWxpZCk7XG4gICAgdGhpcy52YWxpZC5lbWl0KHZhbGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNhdmVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uID0gdGhpcy5zYXZlJD8uc3Vic2NyaWJlKHNhdmUgPT4ge1xuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5mb3JtVmFsdWUkLCB0aGlzLnZhbGlkJF0pXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKFtmb3JtVmFsdWUsIHZhbGlkXSkgPT4ge1xuICAgICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZDogQ3JlYXRlWmFha0NvbmZpZyA9IHtcbiAgICAgICAgICAgICAgcnNpbjogZm9ybVZhbHVlLnJzaW4sXG4gICAgICAgICAgICAgIHphYWt0eXBlVXJsOiBmb3JtVmFsdWUuemFha3R5cGVVcmwsXG4gICAgICAgICAgICAgIG1hbnVhbFphYWtUeXBlVXJsOiBmb3JtVmFsdWUubWFudWFsWmFha1R5cGVVcmwsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eUxpc3QuZm9yRWFjaChwcm9wZXJ0eSA9PiAocGF5bG9hZFtwcm9wZXJ0eV0gPSBmb3JtVmFsdWVbcHJvcGVydHldKSk7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZW1pdChwYXlsb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZENhc2VQcm9wZXJ0eShwcm9wZXJ0eTogQ3JlYXRlWmFha0V4dHJhUHJvcGVydGllcyk6IHZvaWQge1xuICAgIHRoaXMucHJvcGVydHlMaXN0LnB1c2gocHJvcGVydHkpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUNhc2VQcm9wZXJ0eShwcm9wZXJ0eTogQ3JlYXRlWmFha0V4dHJhUHJvcGVydGllcyk6IHZvaWQge1xuICAgIHRoaXMucHJvcGVydHlMaXN0LnNwbGljZSh0aGlzLnByb3BlcnR5TGlzdC5pbmRleE9mKHByb3BlcnR5KSwgMSk7XG4gICAgdGhpcy5fcHJvcGVydGllcy5kZWxldGUocHJvcGVydHkpO1xuICAgIHRoaXMub25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHksIHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgaGFzUHJvcGVydHlCZWVuQWRkZWQocHJvcGVydHk6IENyZWF0ZVphYWtFeHRyYVByb3BlcnRpZXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eUxpc3QuaW5kZXhPZihwcm9wZXJ0eSkgIT09IC0xO1xuICB9XG5cbiAgcHVibGljIG9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5OiBDcmVhdGVaYWFrRXh0cmFQcm9wZXJ0aWVzLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fcHJvcGVydGllcy5zZXQocHJvcGVydHksIHZhbHVlKTtcbiAgICB0aGlzLmZvcm1WYWx1ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoZm9ybVZhbHVlID0+IGZvcm1WYWx1ZSAhPT0gbnVsbCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgICAgdGhpcy5mb3JtVmFsdWVDaGFuZ2UoZm9ybVZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLFxuICAgIHByZWZpbGw6IHByZWZpbGxDb25maWd1cmF0aW9uJCA/IChwcmVmaWxsQ29uZmlndXJhdGlvbiQgfCBhc3luYykgOiBudWxsLFxuICAgIHBsdWdpbklkOiBwbHVnaW5JZCQgfCBhc3luYyxcbiAgICBzZWxlY3RlZElucHV0T3B0aW9uOiBzZWxlY3RlZElucHV0T3B0aW9uJCB8IGFzeW5jLFxuICAgIHphYWtUeXBlU2VsZWN0SXRlbXM6IHphYWtUeXBlSXRlbXMkIHwgYXN5bmMsXG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRpbmcgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8di1wYXJhZ3JhcGggW21hcmdpbl09XCJ0cnVlXCIgW2l0YWxpY109XCJ0cnVlXCI+XG4gICAgICB7eyAnY3JlYXRlWmFha0luZm9ybWF0aW9uJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmMgfX1cbiAgICA8L3YtcGFyYWdyYXBoPlxuICAgIDx2LWZvcm0gKHZhbHVlQ2hhbmdlKT1cImZvcm1WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8di1pbnB1dFxuICAgICAgICBuYW1lPVwicnNpblwiXG4gICAgICAgIFt0aXRsZV09XCIncnNpbicgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8ucnNpblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgICBbdG9vbHRpcF09XCIncnNpblRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFt3aWR0aFB4XT1cIjM1MFwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQ+XG4gICAgICA8di1yYWRpb1xuICAgICAgICBuYW1lPVwiaW5wdXRUeXBlWmFha1R5cGVUb2dnbGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgW3RpdGxlXT1cIidpbnB1dFR5cGVaYWFrVHlwZVRvZ2dsZScgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW3JhZGlvVmFsdWVzXT1cImlucHV0VHlwZU9wdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInNlbGVjdGVkSW5wdXRPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgPlxuICAgICAgPC92LXJhZGlvPlxuICAgICAgPHYtaW5wdXRcbiAgICAgICAgKm5nSWY9XCJvYnMuc2VsZWN0ZWRJbnB1dE9wdGlvbiA9PT0gJ3RleHQnXCJcbiAgICAgICAgbmFtZT1cInphYWt0eXBlVXJsXCJcbiAgICAgICAgW3RpdGxlXT1cIid6YWFrVHlwZVVybCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8uemFha3R5cGVVcmxcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkIHx8IG9icy5zZWxlY3RlZElucHV0T3B0aW9uID09PSAnc2VsZWN0aW9uJ1wiXG4gICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgW3RyaW1dPVwidHJ1ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIid6YWFrVHlwZVRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICdzZWxlY3Rpb24nXCI+XG4gICAgICAgIDx2LXNlbGVjdFxuICAgICAgICAgIFtpdGVtc109XCJvYnMuemFha1R5cGVTZWxlY3RJdGVtc1wiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbd2lkdGhJblB4XT1cIjM1MFwiXG4gICAgICAgICAgbmFtZT1cInphYWt0eXBlVXJsXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3phYWtUeXBlJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgIG9icy5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgb2JzLnNlbGVjdGVkSW5wdXRPcHRpb24gPT09ICd0ZXh0JyB8fFxuICAgICAgICAgICAgb25lU2VsZWN0SXRlbShvYnMuemFha1R5cGVTZWxlY3RJdGVtcylcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwiXG4gICAgICAgICAgICAoc2VsZWN0SXRlbXNJbmNsdWRlSWQob2JzLnphYWtUeXBlU2VsZWN0SXRlbXMsIG9icy5wcmVmaWxsPy56YWFrdHlwZVVybCkgJiZcbiAgICAgICAgICAgICAgb2JzLnByZWZpbGw/LnphYWt0eXBlVXJsKSB8fFxuICAgICAgICAgICAgKG9uZVNlbGVjdEl0ZW0ob2JzLnphYWtUeXBlU2VsZWN0SXRlbXMpICYmIG9icy56YWFrVHlwZVNlbGVjdEl0ZW1zWzBdLmlkKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgIFtsb2FkaW5nXT1cIiFvYnMuemFha1R5cGVTZWxlY3RJdGVtc1wiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ3phYWtUeXBlU2VsZWN0VG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgQGZvciAocHJvcGVydHkgb2YgcHJvcGVydHlMaXN0OyB0cmFjayBwcm9wZXJ0eSkge1xuICAgICAgICBAaWYgKHByb3BlcnR5ID09PSAnZGVzY3JpcHRpb24nKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWlucHV0XCI+XG4gICAgICAgICAgICA8di1pbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2Jlc2NocmlqdmluZycgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8uZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblByb3BlcnR5Q2hhbmdlZCgnZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNwYWNlIGRlbGV0ZS1idXR0b25cIiAoY2xpY2spPVwicmVtb3ZlQ2FzZVByb3BlcnR5KCdkZXNjcmlwdGlvbicpXCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJ0cmFzaC1jYW5cIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChwcm9wZXJ0eSA9PT0gJ3BsYW5uZWRFbmREYXRlJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1pbnB1dFwiPlxuICAgICAgICAgICAgPHYtaW5wdXRcbiAgICAgICAgICAgICAgbmFtZT1cInBsYW5uZWRFbmREYXRlXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidwbGFubmVkRW5kRGF0ZScgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJvYnMucHJlZmlsbD8ucGxhbm5lZEVuZERhdGVcIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInZGF0ZWZvcm1hdFRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblByb3BlcnR5Q2hhbmdlZCgncGxhbm5lZEVuZERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID48L3YtaW5wdXQ+XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNwYWNlIGRlbGV0ZS1idXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ2FzZVByb3BlcnR5KCdwbGFubmVkRW5kRGF0ZScpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKHByb3BlcnR5ID09PSAnZmluYWxEZWxpdmVyeURhdGUnKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWlucHV0XCI+XG4gICAgICAgICAgICA8di1pbnB1dFxuICAgICAgICAgICAgICBuYW1lPVwiZmluYWxEZWxpdmVyeURhdGVcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2ZpbmFsRGVsaXZlcnlEYXRlJyB8IHBsdWdpblRyYW5zbGF0ZTogb2JzLnBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy5maW5hbERlbGl2ZXJ5RGF0ZVwiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3RyaW1dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIidkYXRlZm9ybWF0VG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IG9icy5wbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUHJvcGVydHlDaGFuZ2VkKCdmaW5hbERlbGl2ZXJ5RGF0ZScsICRldmVudClcIlxuICAgICAgICAgICAgPjwvdi1pbnB1dD5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3BhY2UgZGVsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDYXNlUHJvcGVydHkoJ2ZpbmFsRGVsaXZlcnlEYXRlJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICBbc2l6ZV09XCInbWQnXCJcbiAgICAgICAgW2Nkc092ZXJmbG93TWVudV09XCJhZGRDYXNlUHJvcGVydHlMaXN0XCJcbiAgICAgICAgW2N1c3RvbVBhbmVdPVwidHJ1ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdhZGRaYWFrUHJvcGVydHknIHwgcGx1Z2luVHJhbnNsYXRlOiBvYnMucGx1Z2luSWQgfCBhc3luYyB9fVxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L3YtZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICA8Y2RzLWxvYWRpbmc+PC9jZHMtbG9hZGluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FkZENhc2VQcm9wZXJ0eUxpc3Q+XG4gIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAoY2xpY2spPVwiYWRkQ2FzZVByb3BlcnR5KCdkZXNjcmlwdGlvbicpXCJcbiAgICAqbmdJZj1cIiFoYXNQcm9wZXJ0eUJlZW5BZGRlZCgnZGVzY3JpcHRpb24nKVwiXG4gID5cbiAgICB7eyAnYmVzY2hyaWp2aW5nJyB8IHBsdWdpblRyYW5zbGF0ZTogKHBsdWdpbklkJCB8IGFzeW5jKSB8IGFzeW5jIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgKGNsaWNrKT1cImFkZENhc2VQcm9wZXJ0eSgncGxhbm5lZEVuZERhdGUnKVwiXG4gICAgKm5nSWY9XCIhaGFzUHJvcGVydHlCZWVuQWRkZWQoJ3BsYW5uZWRFbmREYXRlJylcIlxuICA+XG4gICAge3sgJ3BsYW5uZWRFbmREYXRlJyB8IHBsdWdpblRyYW5zbGF0ZTogKHBsdWdpbklkJCB8IGFzeW5jKSB8IGFzeW5jIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgKGNsaWNrKT1cImFkZENhc2VQcm9wZXJ0eSgnZmluYWxEZWxpdmVyeURhdGUnKVwiXG4gICAgKm5nSWY9XCIhaGFzUHJvcGVydHlCZWVuQWRkZWQoJ2ZpbmFsRGVsaXZlcnlEYXRlJylcIlxuICA+XG4gICAge3sgJ2ZpbmFsRGVsaXZlcnlEYXRlJyB8IHBsdWdpblRyYW5zbGF0ZTogKHBsdWdpbklkJCB8IGFzeW5jKSB8IGFzeW5jIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,83 @@
1
+ /*
2
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
17
+ import { BehaviorSubject, combineLatest, map, tap, withLatestFrom } from 'rxjs';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "../../../../services";
20
+ import * as i2 from "@ngx-translate/core";
21
+ import * as i3 from "@angular/common";
22
+ import * as i4 from "@valtimo/components";
23
+ import * as i5 from "../../../../pipes/plugin-translate/plugin-translate.pipe";
24
+ export class GetZaakInformatieobjectenComponent {
25
+ constructor(pluginManagementService, translateService, pluginTranslationService) {
26
+ this.pluginManagementService = pluginManagementService;
27
+ this.translateService = translateService;
28
+ this.pluginTranslationService = pluginTranslationService;
29
+ this.valid = new EventEmitter();
30
+ this.configuration = new EventEmitter();
31
+ this.formValue$ = new BehaviorSubject(null);
32
+ this.valid$ = new BehaviorSubject(false);
33
+ this.authenticationPluginSelectItems$ = combineLatest([
34
+ this.pluginManagementService.getPluginConfigurationsByCategory('get-zaak-informatieobjecten'),
35
+ this.translateService.stream('key'),
36
+ ]).pipe(map(([configurations]) => configurations.map(configuration => ({
37
+ id: configuration.id,
38
+ text: `${configuration.title} - ${this.pluginTranslationService.instant('title', configuration.pluginDefinition.key)}`,
39
+ }))));
40
+ }
41
+ ngOnInit() {
42
+ this.openSaveSubscription();
43
+ }
44
+ ngOnDestroy() {
45
+ this.saveSubscription?.unsubscribe();
46
+ }
47
+ formValueChange(formValue) {
48
+ this.formValue$.next(formValue);
49
+ this.handleValid(formValue);
50
+ }
51
+ handleValid(formValue) {
52
+ const valid = !!formValue.resultProcessVariable;
53
+ this.valid$.next(valid);
54
+ this.valid.emit(valid);
55
+ }
56
+ openSaveSubscription() {
57
+ this.saveSubscription = this.save$
58
+ .pipe(withLatestFrom(this.formValue$, this.valid$), map(([_, formValue, valid]) => valid ? formValue : null), tap(formValue => {
59
+ if (formValue)
60
+ this.configuration.emit(formValue);
61
+ }))
62
+ .subscribe();
63
+ }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GetZaakInformatieobjectenComponent, deps: [{ token: i1.PluginManagementService }, { token: i2.TranslateService }, { token: i1.PluginTranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GetZaakInformatieobjectenComponent, selector: "valtimo-get-zaak-informatieobjecten-configuration", inputs: { save$: "save$", disabled$: "disabled$", pluginId: "pluginId", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n } as obs\"\n>\n <v-input\n name=\"resultProcessVariable\"\n [title]=\"'resultProcessVariable' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.resultProcessVariable\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'resultProcessVariableTooltip' | pluginTranslate: pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n</v-form>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i4.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim"], outputs: ["valueChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.PluginTranslatePipe, name: "pluginTranslate" }] }); }
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GetZaakInformatieobjectenComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ standalone: false, selector: 'valtimo-get-zaak-informatieobjecten-configuration', template: "<!--\n ~ Copyright 2015-2025 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<v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n } as obs\"\n>\n <v-input\n name=\"resultProcessVariable\"\n [title]=\"'resultProcessVariable' | pluginTranslate: pluginId | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.prefill?.resultProcessVariable\"\n [disabled]=\"obs.disabled\"\n [required]=\"true\"\n [trim]=\"true\"\n [tooltip]=\"'resultProcessVariableTooltip' | pluginTranslate: pluginId | async\"\n [fullWidth]=\"true\"\n >\n </v-input>\n</v-form>\n" }]
70
+ }], ctorParameters: () => [{ type: i1.PluginManagementService }, { type: i2.TranslateService }, { type: i1.PluginTranslationService }], propDecorators: { save$: [{
71
+ type: Input
72
+ }], disabled$: [{
73
+ type: Input
74
+ }], pluginId: [{
75
+ type: Input
76
+ }], prefillConfiguration$: [{
77
+ type: Input
78
+ }], valid: [{
79
+ type: Output
80
+ }], configuration: [{
81
+ type: Output
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXphYWstaW5mb3JtYXRpZW9iamVjdGVuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcGx1Z2luL3NyYy9saWIvcGx1Z2lucy96YWtlbi1hcGkvY29tcG9uZW50cy9nZXQtemFhay1pbmZvcm1hdGllb2JqZWN0ZW4vZ2V0LXphYWstaW5mb3JtYXRpZW9iamVjdGVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcGx1Z2luL3NyYy9saWIvcGx1Z2lucy96YWtlbi1hcGkvY29tcG9uZW50cy9nZXQtemFhay1pbmZvcm1hdGllb2JqZWN0ZW4vZ2V0LXphYWstaW5mb3JtYXRpZW9iamVjdGVuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFrQyxHQUFHLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBVTlHLE1BQU0sT0FBTyxrQ0FBa0M7SUFnQzdDLFlBQ21CLHVCQUFnRCxFQUNoRCxnQkFBa0MsRUFDbEMsd0JBQWtEO1FBRmxELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBNUIzRCxVQUFLLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDM0Qsa0JBQWEsR0FDckIsSUFBSSxZQUFZLEVBQW1DLENBQUM7UUFJckMsZUFBVSxHQUFHLElBQUksZUFBZSxDQUF5QyxJQUFJLENBQUMsQ0FBQztRQUMvRSxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFckQscUNBQWdDLEdBQ3ZDLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQ0FBaUMsQ0FBQyw2QkFBNkIsQ0FBQztZQUM3RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUN2QixjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUNyRSxPQUFPLEVBQ1AsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FDbkMsRUFBRTtTQUNKLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQztJQU1ELENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlLENBQUMsU0FBMEM7UUFDL0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQTBDO1FBQzVELE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUM7UUFFaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUs7YUFDL0IsSUFBSSxDQUNILGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDNUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQ3hELEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNkLElBQUksU0FBUztnQkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7K0dBcEVVLGtDQUFrQzttR0FBbEMsa0NBQWtDLGdSQzVCL0MsbzBDQW9DQTs7NEZEUmEsa0NBQWtDO2tCQUw5QyxTQUFTO2lDQUNJLEtBQUssWUFDUCxtREFBbUQ7a0tBTXBELEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjUgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGdW5jdGlvbkNvbmZpZ3VyYXRpb25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRha2UsIHRhcCwgd2l0aExhdGVzdEZyb219IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQbHVnaW5NYW5hZ2VtZW50U2VydmljZSwgUGx1Z2luVHJhbnNsYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtHZXRaYWFrSW5mb3JtYXRpZW9iamVjdGVuQ29uZmlnfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG4gIHNlbGVjdG9yOiAndmFsdGltby1nZXQtemFhay1pbmZvcm1hdGllb2JqZWN0ZW4tY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9nZXQtemFhay1pbmZvcm1hdGllb2JqZWN0ZW4uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRaYWFrSW5mb3JtYXRpZW9iamVjdGVuQ29tcG9uZW50XG4gIGltcGxlbWVudHMgRnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBzYXZlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgQElucHV0KCkgZGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBwbHVnaW5JZDogc3RyaW5nO1xuICBASW5wdXQoKSBwcmVmaWxsQ29uZmlndXJhdGlvbiQ6IE9ic2VydmFibGU8R2V0WmFha0luZm9ybWF0aWVvYmplY3RlbkNvbmZpZz47XG4gIEBPdXRwdXQoKSB2YWxpZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPEdldFphYWtJbmZvcm1hdGllb2JqZWN0ZW5Db25maWc+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEdldFphYWtJbmZvcm1hdGllb2JqZWN0ZW5Db25maWc+KCk7XG5cbiAgcHJpdmF0ZSBzYXZlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R2V0WmFha0luZm9ybWF0aWVvYmplY3RlbkNvbmZpZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbGlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uUGx1Z2luU2VsZWN0SXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PHtpZDogc3RyaW5nOyB0ZXh0OiBzdHJpbmd9Pj4gPVxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5wbHVnaW5NYW5hZ2VtZW50U2VydmljZS5nZXRQbHVnaW5Db25maWd1cmF0aW9uc0J5Q2F0ZWdvcnkoJ2dldC16YWFrLWluZm9ybWF0aWVvYmplY3RlbicpLFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2NvbmZpZ3VyYXRpb25zXSkgPT5cbiAgICAgICAgY29uZmlndXJhdGlvbnMubWFwKGNvbmZpZ3VyYXRpb24gPT4gKHtcbiAgICAgICAgICBpZDogY29uZmlndXJhdGlvbi5pZCxcbiAgICAgICAgICB0ZXh0OiBgJHtjb25maWd1cmF0aW9uLnRpdGxlfSAtICR7dGhpcy5wbHVnaW5UcmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICd0aXRsZScsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uLnBsdWdpbkRlZmluaXRpb24ua2V5XG4gICAgICAgICAgKX1gLFxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luTWFuYWdlbWVudFNlcnZpY2U6IFBsdWdpbk1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpblRyYW5zbGF0aW9uU2VydmljZTogUGx1Z2luVHJhbnNsYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2F2ZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtVmFsdWVDaGFuZ2UoZm9ybVZhbHVlOiBHZXRaYWFrSW5mb3JtYXRpZW9iamVjdGVuQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtVmFsdWUkLm5leHQoZm9ybVZhbHVlKTtcbiAgICB0aGlzLmhhbmRsZVZhbGlkKGZvcm1WYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZhbGlkKGZvcm1WYWx1ZTogR2V0WmFha0luZm9ybWF0aWVvYmplY3RlbkNvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkID0gISFmb3JtVmFsdWUucmVzdWx0UHJvY2Vzc1ZhcmlhYmxlO1xuXG4gICAgdGhpcy52YWxpZCQubmV4dCh2YWxpZCk7XG4gICAgdGhpcy52YWxpZC5lbWl0KHZhbGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNhdmVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uID0gdGhpcy5zYXZlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuZm9ybVZhbHVlJCwgdGhpcy52YWxpZCQpLFxuICAgICAgICBtYXAoKFtfLCBmb3JtVmFsdWUsIHZhbGlkXSkgPT4gdmFsaWQgPyBmb3JtVmFsdWUgOiBudWxsKSxcbiAgICAgICAgdGFwKGZvcm1WYWx1ZSA9PiB7XG4gICAgICAgICAgaWYgKGZvcm1WYWx1ZSkgdGhpcy5jb25maWd1cmF0aW9uLmVtaXQoZm9ybVZhbHVlKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjUgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48di1mb3JtXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJmb3JtVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICpuZ0lmPVwie1xuICAgIGRpc2FibGVkOiBkaXNhYmxlZCQgfCBhc3luYyxcbiAgICBwcmVmaWxsOiBwcmVmaWxsQ29uZmlndXJhdGlvbiQgPyAocHJlZmlsbENvbmZpZ3VyYXRpb24kIHwgYXN5bmMpIDogbnVsbCxcbiAgfSBhcyBvYnNcIlxuPlxuICA8di1pbnB1dFxuICAgICAgICAgIG5hbWU9XCJyZXN1bHRQcm9jZXNzVmFyaWFibGVcIlxuICAgICAgICAgIFt0aXRsZV09XCIncmVzdWx0UHJvY2Vzc1ZhcmlhYmxlJyB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy5yZXN1bHRQcm9jZXNzVmFyaWFibGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbdHJpbV09XCJ0cnVlXCJcbiAgICAgICAgICBbdG9vbHRpcF09XCIncmVzdWx0UHJvY2Vzc1ZhcmlhYmxlVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gID5cbiAgPC92LWlucHV0PlxuPC92LWZvcm0+XG4iXX0=
@@ -0,0 +1,135 @@
1
+ /*
2
+ * Copyright 2015-2025 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
17
+ import { BehaviorSubject, combineLatest, take } from 'rxjs';
18
+ import { Add16, TrashCan16 } from '@carbon/icons';
19
+ import { PatchZaakPropertyOptions } from '../../models/patch-zaak-properties';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "carbon-components-angular";
22
+ import * as i2 from "@angular/common";
23
+ import * as i3 from "@valtimo/components";
24
+ import * as i4 from "../../../../pipes/plugin-translate/plugin-translate.pipe";
25
+ export class PatchZaakConfigurationComponent {
26
+ constructor(iconService) {
27
+ this.iconService = iconService;
28
+ this.valid = new EventEmitter();
29
+ this.configuration = new EventEmitter();
30
+ this.propertyOptions = Object.values(PatchZaakPropertyOptions);
31
+ this.propertyList = [];
32
+ this.CASE_GEOMETRY_TYPE = 'caseGeometryType';
33
+ this.CASE_GEOMETRY_COORDINATES = 'caseGeometryCoordinates';
34
+ this.PAYMENT_INDICATION_TYPE = 'paymentIndication';
35
+ this._formValue$ = new BehaviorSubject({});
36
+ this._properties = new Map();
37
+ this._valid$ = new BehaviorSubject(false);
38
+ this.iconService.registerAll([Add16, TrashCan16]);
39
+ }
40
+ ngOnInit() {
41
+ this.openSaveSubscription();
42
+ this.prefillConfiguration$.pipe(take(1)).subscribe(prefill => {
43
+ if (prefill) {
44
+ PatchZaakPropertyOptions.filter(property => !!prefill[property]).forEach(property => this.addProperty(property));
45
+ }
46
+ });
47
+ }
48
+ ngOnDestroy() {
49
+ this._saveSubscription?.unsubscribe();
50
+ }
51
+ onFormValueChanged(formValue) {
52
+ this._formValue$.next(formValue);
53
+ this.handleValid(formValue);
54
+ }
55
+ onPropertyChanged(property, value) {
56
+ this._properties.set(property, value);
57
+ const formValue = this._formValue$.value;
58
+ this._properties.forEach((value, key) => {
59
+ formValue[key] = value;
60
+ });
61
+ this.onFormValueChanged(formValue);
62
+ }
63
+ prefillValueFor(property, prefill) {
64
+ return prefill != null ? prefill[property] : null;
65
+ }
66
+ translationKeyFor(property) {
67
+ return property === 'description' ? 'omschrijving' : property;
68
+ }
69
+ translationKeyForPropertyList(property) {
70
+ return property === this.CASE_GEOMETRY_TYPE ? 'caseGeometry' : this.translationKeyFor(property);
71
+ }
72
+ addProperty(property) {
73
+ // only add the property to the list if it is not in the list
74
+ if (this.propertyList.indexOf(property) == -1) {
75
+ this.propertyList.push(property);
76
+ this.onPropertyChanged(property, undefined);
77
+ }
78
+ // add linked field coordinates
79
+ if (property === this.CASE_GEOMETRY_TYPE) {
80
+ this.addProperty(this.CASE_GEOMETRY_COORDINATES);
81
+ }
82
+ }
83
+ removeProperty(property) {
84
+ // only remove the property from the list if it is in the list
85
+ if (this.propertyList.indexOf(property) != -1) {
86
+ this.propertyList.splice(this.propertyList.indexOf(property), 1);
87
+ this.onPropertyChanged(property, undefined);
88
+ }
89
+ // remove linked field coordinates
90
+ if (property === this.CASE_GEOMETRY_TYPE) {
91
+ this.removeProperty(this.CASE_GEOMETRY_COORDINATES);
92
+ }
93
+ }
94
+ hasPropertyBeenAdded(property) {
95
+ return this.propertyList.indexOf(property) !== -1;
96
+ }
97
+ handleValid(formValue) {
98
+ const isPropertyInvalid = this.propertyList.some(property => !!!formValue[property]);
99
+ const valid = !isPropertyInvalid;
100
+ this._valid$.next(valid);
101
+ this.valid.emit(valid);
102
+ }
103
+ openSaveSubscription() {
104
+ this._saveSubscription = this.save$?.subscribe(save => {
105
+ combineLatest([this._formValue$, this._valid$])
106
+ .pipe(take(1))
107
+ .subscribe(([formValue, valid]) => {
108
+ if (valid) {
109
+ const payload = {};
110
+ this.propertyList.forEach(property => (payload[property] = formValue[property]));
111
+ this.configuration.emit(formValue);
112
+ }
113
+ });
114
+ });
115
+ }
116
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PatchZaakConfigurationComponent, deps: [{ token: i1.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PatchZaakConfigurationComponent, selector: "valtimo-patch-zaak-configuration", inputs: { disabled$: "disabled$", pluginId: "pluginId", save$: "save$", prefillConfiguration$: "prefillConfiguration$" }, outputs: { valid: "valid", configuration: "configuration" }, ngImport: i0, template: "<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n } as obs\"\n>\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'patchZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <button\n cdsButton=\"primary\"\n [size]=\"'md'\"\n [cdsOverflowMenu]=\"addPropertyList\"\n [customPane]=\"true\"\n placement=\"bottom\"\n class=\"add-button\"\n >\n {{ 'addPatchZaakProperty' | pluginTranslate: pluginId | async }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n @for (property of propertyList; track property) {\n <div class=\"row\">\n <div class=\"col-11\">\n @if (property === CASE_GEOMETRY_TYPE) {\n <v-input\n [name]=\"CASE_GEOMETRY_TYPE\"\n [title]=\"translationKeyFor(CASE_GEOMETRY_TYPE) | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(CASE_GEOMETRY_TYPE, obs.prefill)\"\n [margin]=\"true\"\n [tooltip]=\"'caseGeometryTypeTooltip' | pluginTranslate: pluginId | async\"\n (valueChange)=\"onPropertyChanged(CASE_GEOMETRY_TYPE, $event)\"\n />\n } @else if (property === CASE_GEOMETRY_COORDINATES) {\n <v-input\n [name]=\"CASE_GEOMETRY_COORDINATES\"\n [title]=\"\n translationKeyFor(CASE_GEOMETRY_COORDINATES) | pluginTranslate: pluginId | async\n \"\n [tooltip]=\"'caseGeometryCoordinatesTooltip' | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(CASE_GEOMETRY_COORDINATES, obs.prefill)\"\n [margin]=\"true\"\n (valueChange)=\"onPropertyChanged(CASE_GEOMETRY_COORDINATES, $event)\"\n />\n } @else if (property === PAYMENT_INDICATION_TYPE) {\n <v-input\n [name]=\"property\"\n [title]=\"translationKeyFor(property) | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property, obs.prefill)\"\n [margin]=\"true\"\n [tooltip]=\"'paymentIndicationTooltip' | pluginTranslate: pluginId | async\"\n [trim]=\"true\"\n (valueChange)=\"onPropertyChanged(property, $event)\"\n />\n } @else if (property.includes('Date')) {\n <v-input\n [name]=\"property\"\n [title]=\"translationKeyFor(property) | pluginTranslate: pluginId | async\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property, obs.prefill)\"\n [margin]=\"true\"\n [trim]=\"true\"\n (valueChange)=\"onPropertyChanged(property, $event)\"\n ></v-input>\n } @else {\n <v-input\n [name]=\"property\"\n [title]=\"translationKeyFor(property) | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property, obs.prefill)\"\n [margin]=\"true\"\n [trim]=\"true\"\n (valueChange)=\"onPropertyChanged(property, $event)\"\n />\n }\n </div>\n <div class=\"col-1\">\n @if (property !== CASE_GEOMETRY_COORDINATES) {\n <button class=\"btn btn-space delete-button\" (click)=\"removeProperty(property)\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </v-form>\n</ng-container>\n\n<ng-template #addPropertyList>\n @for (propertyOption of propertyOptions; track propertyOption) {\n @if (propertyOption !== CASE_GEOMETRY_COORDINATES) {\n <cds-overflow-menu-option\n *ngIf=\"!hasPropertyBeenAdded(propertyOption)\"\n (click)=\"addProperty(propertyOption)\"\n >\n {{ translationKeyForPropertyList(propertyOption) | pluginTranslate: pluginId | async }}\n </cds-overflow-menu-option>\n }\n }\n</ng-template>\n", styles: ["div.presets{margin-top:.2em;margin-block-end:var(--v-input-margin);font-size:var(--v-font-size-smaller)}div.presets span:first-child{padding-right:.3em}div.presets a.preset{cursor:pointer;font-style:italic}button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}button.add-button{margin-block-end:var(--v-input-margin)}::ng-deep .cds--overflow-menu-options{z-index:10000!important;width:230px}\n/*!\n * Copyright 2015-2025 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: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FormComponent, selector: "v-form", inputs: ["className"], outputs: ["valueChange"] }, { kind: "component", type: i3.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder", "dataTestId", "trim"], outputs: ["valueChange"] }, { kind: "component", type: i3.ParagraphComponent, selector: "v-paragraph", inputs: ["center", "fullWidth", "margin", "italic", "loading", "dataTestId"] }, { kind: "directive", type: i1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i1.OverflowMenuDirective, selector: "[cdsOverflowMenu], [ibmOverflowMenu]", inputs: ["ibmOverflowMenu", "cdsOverflowMenu", "flip", "offset", "wrapperClass", "customPane"], exportAs: ["overflowMenu"] }, { kind: "component", type: i1.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "directive", type: i1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.PluginTranslatePipe, name: "pluginTranslate" }] }); }
118
+ }
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PatchZaakConfigurationComponent, decorators: [{
120
+ type: Component,
121
+ args: [{ standalone: false, selector: 'valtimo-patch-zaak-configuration', template: "<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n prefill: prefillConfiguration$ ? (prefillConfiguration$ | async) : null,\n } as obs\"\n>\n <v-paragraph [margin]=\"true\" [italic]=\"true\">\n {{ 'patchZaakInformation' | pluginTranslate: pluginId | async }}\n </v-paragraph>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <button\n cdsButton=\"primary\"\n [size]=\"'md'\"\n [cdsOverflowMenu]=\"addPropertyList\"\n [customPane]=\"true\"\n placement=\"bottom\"\n class=\"add-button\"\n >\n {{ 'addPatchZaakProperty' | pluginTranslate: pluginId | async }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n\n <v-form (valueChange)=\"onFormValueChanged($event)\">\n @for (property of propertyList; track property) {\n <div class=\"row\">\n <div class=\"col-11\">\n @if (property === CASE_GEOMETRY_TYPE) {\n <v-input\n [name]=\"CASE_GEOMETRY_TYPE\"\n [title]=\"translationKeyFor(CASE_GEOMETRY_TYPE) | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(CASE_GEOMETRY_TYPE, obs.prefill)\"\n [margin]=\"true\"\n [tooltip]=\"'caseGeometryTypeTooltip' | pluginTranslate: pluginId | async\"\n (valueChange)=\"onPropertyChanged(CASE_GEOMETRY_TYPE, $event)\"\n />\n } @else if (property === CASE_GEOMETRY_COORDINATES) {\n <v-input\n [name]=\"CASE_GEOMETRY_COORDINATES\"\n [title]=\"\n translationKeyFor(CASE_GEOMETRY_COORDINATES) | pluginTranslate: pluginId | async\n \"\n [tooltip]=\"'caseGeometryCoordinatesTooltip' | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(CASE_GEOMETRY_COORDINATES, obs.prefill)\"\n [margin]=\"true\"\n (valueChange)=\"onPropertyChanged(CASE_GEOMETRY_COORDINATES, $event)\"\n />\n } @else if (property === PAYMENT_INDICATION_TYPE) {\n <v-input\n [name]=\"property\"\n [title]=\"translationKeyFor(property) | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property, obs.prefill)\"\n [margin]=\"true\"\n [tooltip]=\"'paymentIndicationTooltip' | pluginTranslate: pluginId | async\"\n [trim]=\"true\"\n (valueChange)=\"onPropertyChanged(property, $event)\"\n />\n } @else if (property.includes('Date')) {\n <v-input\n [name]=\"property\"\n [title]=\"translationKeyFor(property) | pluginTranslate: pluginId | async\"\n [tooltip]=\"'dateformatTooltip' | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property, obs.prefill)\"\n [margin]=\"true\"\n [trim]=\"true\"\n (valueChange)=\"onPropertyChanged(property, $event)\"\n ></v-input>\n } @else {\n <v-input\n [name]=\"property\"\n [title]=\"translationKeyFor(property) | pluginTranslate: pluginId | async\"\n [required]=\"true\"\n [defaultValue]=\"prefillValueFor(property, obs.prefill)\"\n [margin]=\"true\"\n [trim]=\"true\"\n (valueChange)=\"onPropertyChanged(property, $event)\"\n />\n }\n </div>\n <div class=\"col-1\">\n @if (property !== CASE_GEOMETRY_COORDINATES) {\n <button class=\"btn btn-space delete-button\" (click)=\"removeProperty(property)\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n }\n </div>\n </div>\n }\n </v-form>\n</ng-container>\n\n<ng-template #addPropertyList>\n @for (propertyOption of propertyOptions; track propertyOption) {\n @if (propertyOption !== CASE_GEOMETRY_COORDINATES) {\n <cds-overflow-menu-option\n *ngIf=\"!hasPropertyBeenAdded(propertyOption)\"\n (click)=\"addProperty(propertyOption)\"\n >\n {{ translationKeyForPropertyList(propertyOption) | pluginTranslate: pluginId | async }}\n </cds-overflow-menu-option>\n }\n }\n</ng-template>\n", styles: ["div.presets{margin-top:.2em;margin-block-end:var(--v-input-margin);font-size:var(--v-font-size-smaller)}div.presets span:first-child{padding-right:.3em}div.presets a.preset{cursor:pointer;font-style:italic}button.delete-button{height:46px;width:46px;margin-top:20px}button.delete-button:hover{background-color:#e12717}button.add-button{margin-block-end:var(--v-input-margin)}::ng-deep .cds--overflow-menu-options{z-index:10000!important;width:230px}\n/*!\n * Copyright 2015-2025 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"] }]
122
+ }], ctorParameters: () => [{ type: i1.IconService }], propDecorators: { disabled$: [{
123
+ type: Input
124
+ }], pluginId: [{
125
+ type: Input
126
+ }], save$: [{
127
+ type: Input
128
+ }], prefillConfiguration$: [{
129
+ type: Input
130
+ }], valid: [{
131
+ type: Output
132
+ }], configuration: [{
133
+ type: Output
134
+ }] } });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2gtemFhay1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcGx1Z2luL3NyYy9saWIvcGx1Z2lucy96YWtlbi1hcGkvY29tcG9uZW50cy9wYXRjaC16YWFrL3BhdGNoLXphYWstY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3BsdWdpbi9zcmMvbGliL3BsdWdpbnMvemFrZW4tYXBpL2NvbXBvbmVudHMvcGF0Y2gtemFhay9wYXRjaC16YWFrLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV4RixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBNEIsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3BGLE9BQU8sRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBc0Isd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7O0FBUWpHLE1BQU0sT0FBTywrQkFBK0I7SUFzQjFDLFlBQTZCLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBZjNDLFVBQUssR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMzRCxrQkFBYSxHQUFrQyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQUU3RSxvQkFBZSxHQUFhLE1BQU0sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNwRSxpQkFBWSxHQUErQixFQUFFLENBQUM7UUFFM0MsdUJBQWtCLEdBQVcsa0JBQWtC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QUFvQjtRQUMxQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEQsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixNQUFNLE9BQU8sR0FBb0IsRUFBRSxDQUFDO29CQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBbkhVLCtCQUErQjttR0FBL0IsK0JBQStCLCtQQzlCNUMsdTdJQThHQTs7NEZEaEZhLCtCQUErQjtrQkFOM0MsU0FBUztpQ0FDSSxLQUFLLFlBQ1Asa0NBQWtDO2dGQU9uQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI1IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RnVuY3Rpb25Db25maWd1cmF0aW9uQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGFrZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1BhdGNoWmFha0NvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7SWNvblNlcnZpY2V9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtBZGQxNiwgVHJhc2hDYW4xNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5pbXBvcnQge1BhdGNoWmFha1Byb3BlcnRpZXMsIFBhdGNoWmFha1Byb3BlcnR5T3B0aW9uc30gZnJvbSAnLi4vLi4vbW9kZWxzL3BhdGNoLXphYWstcHJvcGVydGllcyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiBmYWxzZSxcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXBhdGNoLXphYWstY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXRjaC16YWFrLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcGF0Y2gtemFhay1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgUGF0Y2haYWFrQ29uZmlndXJhdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEZ1bmN0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgZGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBwbHVnaW5JZDogc3RyaW5nO1xuICBASW5wdXQoKSBzYXZlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgQElucHV0KCkgcHJlZmlsbENvbmZpZ3VyYXRpb24kOiBPYnNlcnZhYmxlPFBhdGNoWmFha0NvbmZpZz47XG4gIEBPdXRwdXQoKSB2YWxpZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPFBhdGNoWmFha0NvbmZpZz4gPSBuZXcgRXZlbnRFbWl0dGVyPFBhdGNoWmFha0NvbmZpZz4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvcGVydHlPcHRpb25zOiBzdHJpbmdbXSA9IE9iamVjdC52YWx1ZXMoUGF0Y2haYWFrUHJvcGVydHlPcHRpb25zKTtcbiAgcHVibGljIHJlYWRvbmx5IHByb3BlcnR5TGlzdDogQXJyYXk8UGF0Y2haYWFrUHJvcGVydGllcz4gPSBbXTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ0FTRV9HRU9NRVRSWV9UWVBFOiBzdHJpbmcgPSAnY2FzZUdlb21ldHJ5VHlwZSc7XG4gIHByb3RlY3RlZCByZWFkb25seSBDQVNFX0dFT01FVFJZX0NPT1JESU5BVEVTOiBzdHJpbmcgPSAnY2FzZUdlb21ldHJ5Q29vcmRpbmF0ZXMnO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgUEFZTUVOVF9JTkRJQ0FUSU9OX1RZUEU6IHN0cmluZyA9ICdwYXltZW50SW5kaWNhdGlvbic7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGF0Y2haYWFrQ29uZmlnPih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Byb3BlcnRpZXMgPSBuZXcgTWFwPFBhdGNoWmFha1Byb3BlcnRpZXMsIHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBfc2F2ZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmFsaWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UpIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtBZGQxNiwgVHJhc2hDYW4xNl0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlblNhdmVTdWJzY3JpcHRpb24oKTtcblxuICAgIHRoaXMucHJlZmlsbENvbmZpZ3VyYXRpb24kLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHByZWZpbGwgPT4ge1xuICAgICAgaWYgKHByZWZpbGwpIHtcbiAgICAgICAgUGF0Y2haYWFrUHJvcGVydHlPcHRpb25zLmZpbHRlcihwcm9wZXJ0eSA9PiAhIXByZWZpbGxbcHJvcGVydHldKS5mb3JFYWNoKHByb3BlcnR5ID0+XG4gICAgICAgICAgdGhpcy5hZGRQcm9wZXJ0eShwcm9wZXJ0eSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zYXZlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRm9ybVZhbHVlQ2hhbmdlZChmb3JtVmFsdWU6IFBhdGNoWmFha0NvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1WYWx1ZSQubmV4dChmb3JtVmFsdWUpO1xuICAgIHRoaXMuaGFuZGxlVmFsaWQoZm9ybVZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eTogUGF0Y2haYWFrUHJvcGVydGllcywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3Byb3BlcnRpZXMuc2V0KHByb3BlcnR5LCB2YWx1ZSk7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5fZm9ybVZhbHVlJC52YWx1ZTtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGZvcm1WYWx1ZVtrZXldID0gdmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5vbkZvcm1WYWx1ZUNoYW5nZWQoZm9ybVZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmVmaWxsVmFsdWVGb3IocHJvcGVydHk6IHN0cmluZywgcHJlZmlsbDogUGF0Y2haYWFrQ29uZmlnKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHByZWZpbGwgIT0gbnVsbCA/IHByZWZpbGxbcHJvcGVydHldIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2xhdGlvbktleUZvcihwcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcHJvcGVydHkgPT09ICdkZXNjcmlwdGlvbicgPyAnb21zY2hyaWp2aW5nJyA6IHByb3BlcnR5O1xuICB9XG5cbiAgcHVibGljIHRyYW5zbGF0aW9uS2V5Rm9yUHJvcGVydHlMaXN0KHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwcm9wZXJ0eSA9PT0gdGhpcy5DQVNFX0dFT01FVFJZX1RZUEUgPyAnY2FzZUdlb21ldHJ5JyA6IHRoaXMudHJhbnNsYXRpb25LZXlGb3IocHJvcGVydHkpO1xuICB9XG5cbiAgcHVibGljIGFkZFByb3BlcnR5KHByb3BlcnR5OiBQYXRjaFphYWtQcm9wZXJ0aWVzKTogdm9pZCB7XG4gICAgLy8gb25seSBhZGQgdGhlIHByb3BlcnR5IHRvIHRoZSBsaXN0IGlmIGl0IGlzIG5vdCBpbiB0aGUgbGlzdFxuICAgIGlmICh0aGlzLnByb3BlcnR5TGlzdC5pbmRleE9mKHByb3BlcnR5KSA9PSAtMSkge1xuICAgICAgdGhpcy5wcm9wZXJ0eUxpc3QucHVzaChwcm9wZXJ0eSk7XG4gICAgICB0aGlzLm9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5LCB1bmRlZmluZWQpO1xuICAgIH1cbiAgICAvLyBhZGQgbGlua2VkIGZpZWxkIGNvb3JkaW5hdGVzXG4gICAgaWYgKHByb3BlcnR5ID09PSB0aGlzLkNBU0VfR0VPTUVUUllfVFlQRSkge1xuICAgICAgdGhpcy5hZGRQcm9wZXJ0eSh0aGlzLkNBU0VfR0VPTUVUUllfQ09PUkRJTkFURVMgYXMgUGF0Y2haYWFrUHJvcGVydGllcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbW92ZVByb3BlcnR5KHByb3BlcnR5OiBQYXRjaFphYWtQcm9wZXJ0aWVzKTogdm9pZCB7XG4gICAgLy8gb25seSByZW1vdmUgdGhlIHByb3BlcnR5IGZyb20gdGhlIGxpc3QgaWYgaXQgaXMgaW4gdGhlIGxpc3RcbiAgICBpZiAodGhpcy5wcm9wZXJ0eUxpc3QuaW5kZXhPZihwcm9wZXJ0eSkgIT0gLTEpIHtcbiAgICAgIHRoaXMucHJvcGVydHlMaXN0LnNwbGljZSh0aGlzLnByb3BlcnR5TGlzdC5pbmRleE9mKHByb3BlcnR5KSwgMSk7XG4gICAgICB0aGlzLm9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5LCB1bmRlZmluZWQpO1xuICAgIH1cbiAgICAvLyByZW1vdmUgbGlua2VkIGZpZWxkIGNvb3JkaW5hdGVzXG4gICAgaWYgKHByb3BlcnR5ID09PSB0aGlzLkNBU0VfR0VPTUVUUllfVFlQRSkge1xuICAgICAgdGhpcy5yZW1vdmVQcm9wZXJ0eSh0aGlzLkNBU0VfR0VPTUVUUllfQ09PUkRJTkFURVMgYXMgUGF0Y2haYWFrUHJvcGVydGllcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1Byb3BlcnR5QmVlbkFkZGVkKHByb3BlcnR5OiBQYXRjaFphYWtQcm9wZXJ0aWVzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlMaXN0LmluZGV4T2YocHJvcGVydHkpICE9PSAtMTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmFsaWQoZm9ybVZhbHVlOiBQYXRjaFphYWtDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBpc1Byb3BlcnR5SW52YWxpZCA9IHRoaXMucHJvcGVydHlMaXN0LnNvbWUocHJvcGVydHkgPT4gISEhZm9ybVZhbHVlW3Byb3BlcnR5XSk7XG4gICAgY29uc3QgdmFsaWQgPSAhaXNQcm9wZXJ0eUludmFsaWQ7XG4gICAgdGhpcy5fdmFsaWQkLm5leHQodmFsaWQpO1xuICAgIHRoaXMudmFsaWQuZW1pdCh2YWxpZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TYXZlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVTdWJzY3JpcHRpb24gPSB0aGlzLnNhdmUkPy5zdWJzY3JpYmUoc2F2ZSA9PiB7XG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9mb3JtVmFsdWUkLCB0aGlzLl92YWxpZCRdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZm9ybVZhbHVlLCB2YWxpZF0pID0+IHtcbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQ6IFBhdGNoWmFha0NvbmZpZyA9IHt9O1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eUxpc3QuZm9yRWFjaChwcm9wZXJ0eSA9PiAocGF5bG9hZFtwcm9wZXJ0eV0gPSBmb3JtVmFsdWVbcHJvcGVydHldKSk7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uZW1pdChmb3JtVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmMsXG4gICAgcHJlZmlsbDogcHJlZmlsbENvbmZpZ3VyYXRpb24kID8gKHByZWZpbGxDb25maWd1cmF0aW9uJCB8IGFzeW5jKSA6IG51bGwsXG4gIH0gYXMgb2JzXCJcbj5cbiAgPHYtcGFyYWdyYXBoIFttYXJnaW5dPVwidHJ1ZVwiIFtpdGFsaWNdPVwidHJ1ZVwiPlxuICAgIHt7ICdwYXRjaFphYWtJbmZvcm1hdGlvbicgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmMgfX1cbiAgPC92LXBhcmFncmFwaD5cblxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgW3NpemVdPVwiJ21kJ1wiXG4gICAgICAgIFtjZHNPdmVyZmxvd01lbnVdPVwiYWRkUHJvcGVydHlMaXN0XCJcbiAgICAgICAgW2N1c3RvbVBhbmVdPVwidHJ1ZVwiXG4gICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgIGNsYXNzPVwiYWRkLWJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIHt7ICdhZGRQYXRjaFphYWtQcm9wZXJ0eScgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmMgfX1cbiAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDx2LWZvcm0gKHZhbHVlQ2hhbmdlKT1cIm9uRm9ybVZhbHVlQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgQGZvciAocHJvcGVydHkgb2YgcHJvcGVydHlMaXN0OyB0cmFjayBwcm9wZXJ0eSkge1xuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTExXCI+XG4gICAgICAgICAgQGlmIChwcm9wZXJ0eSA9PT0gQ0FTRV9HRU9NRVRSWV9UWVBFKSB7XG4gICAgICAgICAgICA8di1pbnB1dFxuICAgICAgICAgICAgICBbbmFtZV09XCJDQVNFX0dFT01FVFJZX1RZUEVcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwidHJhbnNsYXRpb25LZXlGb3IoQ0FTRV9HRU9NRVRSWV9UWVBFKSB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJwcmVmaWxsVmFsdWVGb3IoQ0FTRV9HRU9NRVRSWV9UWVBFLCBvYnMucHJlZmlsbClcIlxuICAgICAgICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCInY2FzZUdlb21ldHJ5VHlwZVRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBwbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUHJvcGVydHlDaGFuZ2VkKENBU0VfR0VPTUVUUllfVFlQRSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH0gQGVsc2UgaWYgKHByb3BlcnR5ID09PSBDQVNFX0dFT01FVFJZX0NPT1JESU5BVEVTKSB7XG4gICAgICAgICAgICA8di1pbnB1dFxuICAgICAgICAgICAgICBbbmFtZV09XCJDQVNFX0dFT01FVFJZX0NPT1JESU5BVEVTXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uS2V5Rm9yKENBU0VfR0VPTUVUUllfQ09PUkRJTkFURVMpIHwgcGx1Z2luVHJhbnNsYXRlOiBwbHVnaW5JZCB8IGFzeW5jXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwXT1cIidjYXNlR2VvbWV0cnlDb29yZGluYXRlc1Rvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBwbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInByZWZpbGxWYWx1ZUZvcihDQVNFX0dFT01FVFJZX0NPT1JESU5BVEVTLCBvYnMucHJlZmlsbClcIlxuICAgICAgICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25Qcm9wZXJ0eUNoYW5nZWQoQ0FTRV9HRU9NRVRSWV9DT09SRElOQVRFUywgJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH0gQGVsc2UgaWYgKHByb3BlcnR5ID09PSBQQVlNRU5UX0lORElDQVRJT05fVFlQRSkge1xuICAgICAgICAgICAgPHYtaW5wdXRcbiAgICAgICAgICAgICAgW25hbWVdPVwicHJvcGVydHlcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwidHJhbnNsYXRpb25LZXlGb3IocHJvcGVydHkpIHwgcGx1Z2luVHJhbnNsYXRlOiBwbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInByZWZpbGxWYWx1ZUZvcihwcm9wZXJ0eSwgb2JzLnByZWZpbGwpXCJcbiAgICAgICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ3BheW1lbnRJbmRpY2F0aW9uVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbdHJpbV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfSBAZWxzZSBpZiAocHJvcGVydHkuaW5jbHVkZXMoJ0RhdGUnKSkge1xuICAgICAgICAgICAgPHYtaW5wdXRcbiAgICAgICAgICAgICAgW25hbWVdPVwicHJvcGVydHlcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwidHJhbnNsYXRpb25LZXlGb3IocHJvcGVydHkpIHwgcGx1Z2luVHJhbnNsYXRlOiBwbHVnaW5JZCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ2RhdGVmb3JtYXRUb29sdGlwJyB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJwcmVmaWxsVmFsdWVGb3IocHJvcGVydHksIG9icy5wcmVmaWxsKVwiXG4gICAgICAgICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHksICRldmVudClcIlxuICAgICAgICAgICAgPjwvdi1pbnB1dD5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDx2LWlucHV0XG4gICAgICAgICAgICAgIFtuYW1lXT1cInByb3BlcnR5XCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cInRyYW5zbGF0aW9uS2V5Rm9yKHByb3BlcnR5KSB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJwcmVmaWxsVmFsdWVGb3IocHJvcGVydHksIG9icy5wcmVmaWxsKVwiXG4gICAgICAgICAgICAgIFttYXJnaW5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFt0cmltXT1cInRydWVcIlxuICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25Qcm9wZXJ0eUNoYW5nZWQocHJvcGVydHksICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTFcIj5cbiAgICAgICAgICBAaWYgKHByb3BlcnR5ICE9PSBDQVNFX0dFT01FVFJZX0NPT1JESU5BVEVTKSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zcGFjZSBkZWxldGUtYnV0dG9uXCIgKGNsaWNrKT1cInJlbW92ZVByb3BlcnR5KHByb3BlcnR5KVwiPlxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L3YtZm9ybT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2FkZFByb3BlcnR5TGlzdD5cbiAgQGZvciAocHJvcGVydHlPcHRpb24gb2YgcHJvcGVydHlPcHRpb25zOyB0cmFjayBwcm9wZXJ0eU9wdGlvbikge1xuICAgIEBpZiAocHJvcGVydHlPcHRpb24gIT09IENBU0VfR0VPTUVUUllfQ09PUkRJTkFURVMpIHtcbiAgICAgIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAgICAgKm5nSWY9XCIhaGFzUHJvcGVydHlCZWVuQWRkZWQocHJvcGVydHlPcHRpb24pXCJcbiAgICAgICAgKGNsaWNrKT1cImFkZFByb3BlcnR5KHByb3BlcnR5T3B0aW9uKVwiXG4gICAgICA+XG4gICAgICAgIHt7IHRyYW5zbGF0aW9uS2V5Rm9yUHJvcGVydHlMaXN0KHByb3BlcnR5T3B0aW9uKSB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luYyB9fVxuICAgICAgPC9jZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24+XG4gICAgfVxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
85
85
  }], configuration: [{
86
86
  type: Output
87
87
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFrZW4tYXBpLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wbHVnaW4vc3JjL2xpYi9wbHVnaW5zL3pha2VuLWFwaS9jb21wb25lbnRzL3pha2VuLWFwaS1jb25maWd1cmF0aW9uL3pha2VuLWFwaS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcGx1Z2luL3NyYy9saWIvcGx1Z2lucy96YWtlbi1hcGkvY29tcG9uZW50cy96YWtlbi1hcGktY29uZmlndXJhdGlvbi96YWtlbi1hcGktY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBNEIsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBVXpGLE1BQU0sT0FBTyw4QkFBOEI7SUErQnpDLFlBQ21CLHVCQUFnRCxFQUNoRCxnQkFBa0MsRUFDbEMsd0JBQWtEO1FBRmxELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBM0IzRCxVQUFLLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDM0Qsa0JBQWEsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFJMUUsZUFBVSxHQUFHLElBQUksZUFBZSxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUM5RCxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFckQscUNBQWdDLEdBQ3ZDLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQ0FBaUMsQ0FBQywwQkFBMEIsQ0FBQztZQUMxRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUN2QixjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUNyRSxPQUFPLEVBQ1AsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FDbkMsRUFBRTtTQUNKLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQztJQU1ELENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUF5QjtRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTyxXQUFXLENBQUMsU0FBeUI7UUFDM0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQ2QsU0FBUyxDQUFDLGtCQUFrQjtZQUM1QixTQUFTLENBQUMsR0FBRztZQUNiLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FDNUMsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25ELGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNiLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F2RVUsOEJBQThCO21HQUE5Qiw4QkFBOEIsOFBDNUIzQyxrMEVBK0RBOzs0RkRuQ2EsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNFLGlDQUFpQztrS0FPbEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsdWdpbkNvbmZpZ3VyYXRpb25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQbHVnaW5NYW5hZ2VtZW50U2VydmljZSwgUGx1Z2luVHJhbnNsYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtaYWtlbkFwaUNvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby16YWtlbi1hcGktY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi96YWtlbi1hcGktY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3pha2VuLWFwaS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFpha2VuQXBpQ29uZmlndXJhdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIFBsdWdpbkNvbmZpZ3VyYXRpb25Db21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHNhdmUkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICBASW5wdXQoKSBkaXNhYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIEBJbnB1dCgpIHBsdWdpbklkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZWZpbGxDb25maWd1cmF0aW9uJDogT2JzZXJ2YWJsZTxaYWtlbkFwaUNvbmZpZz47XG4gIEBPdXRwdXQoKSB2YWxpZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgY29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPFpha2VuQXBpQ29uZmlnPiA9IG5ldyBFdmVudEVtaXR0ZXI8WmFrZW5BcGlDb25maWc+KCk7XG5cbiAgcHJpdmF0ZSBzYXZlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8WmFrZW5BcGlDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBhdXRoZW50aWNhdGlvblBsdWdpblNlbGVjdEl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTx7aWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nfT4+ID1cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMucGx1Z2luTWFuYWdlbWVudFNlcnZpY2UuZ2V0UGx1Z2luQ29uZmlndXJhdGlvbnNCeUNhdGVnb3J5KCd6YWtlbi1hcGktYXV0aGVudGljYXRpb24nKSxcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtjb25maWd1cmF0aW9uc10pID0+XG4gICAgICAgIGNvbmZpZ3VyYXRpb25zLm1hcChjb25maWd1cmF0aW9uID0+ICh7XG4gICAgICAgICAgaWQ6IGNvbmZpZ3VyYXRpb24uaWQsXG4gICAgICAgICAgdGV4dDogYCR7Y29uZmlndXJhdGlvbi50aXRsZX0gLSAke3RoaXMucGx1Z2luVHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAndGl0bGUnLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wbHVnaW5EZWZpbml0aW9uLmtleVxuICAgICAgICAgICl9YCxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbk1hbmFnZW1lbnRTZXJ2aWNlOiBQbHVnaW5NYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW5UcmFuc2xhdGlvblNlcnZpY2U6IFBsdWdpblRyYW5zbGF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2F2ZVN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zYXZlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZm9ybVZhbHVlQ2hhbmdlKGZvcm1WYWx1ZTogWmFrZW5BcGlDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1WYWx1ZSQubmV4dChmb3JtVmFsdWUpO1xuICAgIHRoaXMuaGFuZGxlVmFsaWQoZm9ybVZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmFsaWQoZm9ybVZhbHVlOiBaYWtlbkFwaUNvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkID0gISEoXG4gICAgICBmb3JtVmFsdWUuY29uZmlndXJhdGlvblRpdGxlICYmXG4gICAgICBmb3JtVmFsdWUudXJsICYmXG4gICAgICBmb3JtVmFsdWUuYXV0aGVudGljYXRpb25QbHVnaW5Db25maWd1cmF0aW9uXG4gICAgKTtcblxuICAgIHRoaXMudmFsaWQkLm5leHQodmFsaWQpO1xuICAgIHRoaXMudmFsaWQuZW1pdCh2YWxpZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TYXZlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc2F2ZSQ/LnN1YnNjcmliZShzYXZlID0+IHtcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybVZhbHVlJCwgdGhpcy52YWxpZCRdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZm9ybVZhbHVlLCB2YWxpZF0pID0+IHtcbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5lbWl0KGZvcm1WYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48di1mb3JtXG4gICh2YWx1ZUNoYW5nZSk9XCJmb3JtVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICpuZ0lmPVwie1xuICAgIGRpc2FibGVkOiBkaXNhYmxlZCQgfCBhc3luYyxcbiAgICBwcmVmaWxsOiBwcmVmaWxsQ29uZmlndXJhdGlvbiQgPyAocHJlZmlsbENvbmZpZ3VyYXRpb24kIHwgYXN5bmMpIDogbnVsbCxcbiAgfSBhcyBvYnNcIlxuPlxuICA8di1pbnB1dFxuICAgIG5hbWU9XCJjb25maWd1cmF0aW9uVGl0bGVcIlxuICAgIFt0aXRsZV09XCInY29uZmlndXJhdGlvblRpdGxlJyB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luY1wiXG4gICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy5jb25maWd1cmF0aW9uVGl0bGVcIlxuICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICBbdHJpbV09XCJ0cnVlXCJcbiAgICBbdG9vbHRpcF09XCInY29uZmlndXJhdGlvblRpdGxlVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmNcIlxuICAgIHBsYWNlaG9sZGVyPVwiWmFrZW4gQVBJIFBsdWdpblwiXG4gID5cbiAgPC92LWlucHV0PlxuICA8di1pbnB1dFxuICAgIG5hbWU9XCJ1cmxcIlxuICAgIFt0aXRsZV09XCIndXJsJyB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luY1wiXG4gICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy51cmxcIlxuICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICBbdHJpbV09XCJ0cnVlXCJcbiAgICBbdG9vbHRpcF09XCIndXJsVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmNcIlxuICAgIHBsYWNlaG9sZGVyPVwiaHR0cHM6Ly9vcGVuemFhay5leGFtcGxlLmNvbS96YWtlbi9hcGkvdjEvIFwiXG4gID5cbiAgPC92LWlucHV0PlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7YXV0aGVudGljYXRpb25QbHVnaW5TZWxlY3RJdGVtczogYXV0aGVudGljYXRpb25QbHVnaW5TZWxlY3RJdGVtcyQgfCBhc3luY30gYXMgYXV0aE9ic1wiXG4gID5cbiAgICA8di1zZWxlY3RcbiAgICAgIFtsb2FkaW5nXT1cIiFhdXRoT2JzLmF1dGhlbnRpY2F0aW9uUGx1Z2luU2VsZWN0SXRlbXNcIlxuICAgICAgW2l0ZW1zXT1cImF1dGhPYnMuYXV0aGVudGljYXRpb25QbHVnaW5TZWxlY3RJdGVtc1wiXG4gICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgbmFtZT1cImF1dGhlbnRpY2F0aW9uUGx1Z2luQ29uZmlndXJhdGlvblwiXG4gICAgICBbdGl0bGVdPVwiJ2F1dGhlbnRpY2F0aW9uUGx1Z2luQ29uZmlndXJhdGlvbicgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbZGVmYXVsdFNlbGVjdGlvbklkXT1cIm9icy5wcmVmaWxsPy5hdXRoZW50aWNhdGlvblBsdWdpbkNvbmZpZ3VyYXRpb25cIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3Rvb2x0aXBdPVwiJ2F1dGhlbnRpY2F0aW9uUGx1Z2luQ29uZmlndXJhdGlvblRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBwbHVnaW5JZCB8IGFzeW5jXCJcbiAgICA+PC92LXNlbGVjdD5cbiAgPC9uZy1jb250YWluZXI+XG48L3YtZm9ybT5cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFrZW4tYXBpLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wbHVnaW4vc3JjL2xpYi9wbHVnaW5zL3pha2VuLWFwaS9jb21wb25lbnRzL3pha2VuLWFwaS1jb25maWd1cmF0aW9uL3pha2VuLWFwaS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcGx1Z2luL3NyYy9saWIvcGx1Z2lucy96YWtlbi1hcGkvY29tcG9uZW50cy96YWtlbi1hcGktY29uZmlndXJhdGlvbi96YWtlbi1hcGktY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBNEIsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBVXpGLE1BQU0sT0FBTyw4QkFBOEI7SUErQnpDLFlBQ21CLHVCQUFnRCxFQUNoRCxnQkFBa0MsRUFDbEMsd0JBQWtEO1FBRmxELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBM0JwRCxVQUFLLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDM0Qsa0JBQWEsR0FBaUMsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFJakYsZUFBVSxHQUFHLElBQUksZUFBZSxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUM5RCxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFckQscUNBQWdDLEdBQ3ZDLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQ0FBaUMsQ0FBQywwQkFBMEIsQ0FBQztZQUMxRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUN2QixjQUFjLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUNyRSxPQUFPLEVBQ1AsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FDbkMsRUFBRTtTQUNKLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQztJQU1ELENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlLENBQUMsU0FBeUI7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQXlCO1FBQzNDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUNkLFNBQVMsQ0FBQyxrQkFBa0I7WUFDNUIsU0FBUyxDQUFDLEdBQUc7WUFDYixTQUFTLENBQUMsaUNBQWlDLENBQzVDLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuRCxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBdkVVLDhCQUE4QjttR0FBOUIsOEJBQThCLDhQQzVCM0MsazBFQStEQTs7NEZEbkNhLDhCQUE4QjtrQkFMMUMsU0FBUzsrQkFDRSxpQ0FBaUM7a0tBTzNCLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkFDVyxLQUFLO3NCQUFyQixNQUFNO2dCQUNVLGFBQWE7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsdWdpbkNvbmZpZ3VyYXRpb25Db21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQbHVnaW5NYW5hZ2VtZW50U2VydmljZSwgUGx1Z2luVHJhbnNsYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtaYWtlbkFwaUNvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby16YWtlbi1hcGktY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi96YWtlbi1hcGktY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3pha2VuLWFwaS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFpha2VuQXBpQ29uZmlndXJhdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIFBsdWdpbkNvbmZpZ3VyYXRpb25Db21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlJDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgcHVibGljIHBsdWdpbklkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcmVmaWxsQ29uZmlndXJhdGlvbiQ6IE9ic2VydmFibGU8WmFrZW5BcGlDb25maWc+O1xuICBAT3V0cHV0KCkgcHVibGljIHZhbGlkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPFpha2VuQXBpQ29uZmlnPiA9IG5ldyBFdmVudEVtaXR0ZXI8WmFrZW5BcGlDb25maWc+KCk7XG5cbiAgcHJpdmF0ZSBzYXZlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8WmFrZW5BcGlDb25maWcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBhdXRoZW50aWNhdGlvblBsdWdpblNlbGVjdEl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTx7aWQ6IHN0cmluZzsgdGV4dDogc3RyaW5nfT4+ID1cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMucGx1Z2luTWFuYWdlbWVudFNlcnZpY2UuZ2V0UGx1Z2luQ29uZmlndXJhdGlvbnNCeUNhdGVnb3J5KCd6YWtlbi1hcGktYXV0aGVudGljYXRpb24nKSxcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtjb25maWd1cmF0aW9uc10pID0+XG4gICAgICAgIGNvbmZpZ3VyYXRpb25zLm1hcChjb25maWd1cmF0aW9uID0+ICh7XG4gICAgICAgICAgaWQ6IGNvbmZpZ3VyYXRpb24uaWQsXG4gICAgICAgICAgdGV4dDogYCR7Y29uZmlndXJhdGlvbi50aXRsZX0gLSAke3RoaXMucGx1Z2luVHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAndGl0bGUnLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wbHVnaW5EZWZpbml0aW9uLmtleVxuICAgICAgICAgICl9YCxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbk1hbmFnZW1lbnRTZXJ2aWNlOiBQbHVnaW5NYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW5UcmFuc2xhdGlvblNlcnZpY2U6IFBsdWdpblRyYW5zbGF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlblNhdmVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNhdmVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9ybVZhbHVlQ2hhbmdlKGZvcm1WYWx1ZTogWmFrZW5BcGlDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1WYWx1ZSQubmV4dChmb3JtVmFsdWUpO1xuICAgIHRoaXMuaGFuZGxlVmFsaWQoZm9ybVZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmFsaWQoZm9ybVZhbHVlOiBaYWtlbkFwaUNvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkID0gISEoXG4gICAgICBmb3JtVmFsdWUuY29uZmlndXJhdGlvblRpdGxlICYmXG4gICAgICBmb3JtVmFsdWUudXJsICYmXG4gICAgICBmb3JtVmFsdWUuYXV0aGVudGljYXRpb25QbHVnaW5Db25maWd1cmF0aW9uXG4gICAgKTtcblxuICAgIHRoaXMudmFsaWQkLm5leHQodmFsaWQpO1xuICAgIHRoaXMudmFsaWQuZW1pdCh2YWxpZCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5TYXZlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc2F2ZSQ/LnN1YnNjcmliZShzYXZlID0+IHtcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybVZhbHVlJCwgdGhpcy52YWxpZCRdKVxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKChbZm9ybVZhbHVlLCB2YWxpZF0pID0+IHtcbiAgICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5lbWl0KGZvcm1WYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48di1mb3JtXG4gICh2YWx1ZUNoYW5nZSk9XCJmb3JtVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICpuZ0lmPVwie1xuICAgIGRpc2FibGVkOiBkaXNhYmxlZCQgfCBhc3luYyxcbiAgICBwcmVmaWxsOiBwcmVmaWxsQ29uZmlndXJhdGlvbiQgPyAocHJlZmlsbENvbmZpZ3VyYXRpb24kIHwgYXN5bmMpIDogbnVsbCxcbiAgfSBhcyBvYnNcIlxuPlxuICA8di1pbnB1dFxuICAgIG5hbWU9XCJjb25maWd1cmF0aW9uVGl0bGVcIlxuICAgIFt0aXRsZV09XCInY29uZmlndXJhdGlvblRpdGxlJyB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luY1wiXG4gICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy5jb25maWd1cmF0aW9uVGl0bGVcIlxuICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICBbdHJpbV09XCJ0cnVlXCJcbiAgICBbdG9vbHRpcF09XCInY29uZmlndXJhdGlvblRpdGxlVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmNcIlxuICAgIHBsYWNlaG9sZGVyPVwiWmFrZW4gQVBJIFBsdWdpblwiXG4gID5cbiAgPC92LWlucHV0PlxuICA8di1pbnB1dFxuICAgIG5hbWU9XCJ1cmxcIlxuICAgIFt0aXRsZV09XCIndXJsJyB8IHBsdWdpblRyYW5zbGF0ZTogcGx1Z2luSWQgfCBhc3luY1wiXG4gICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICBbZGVmYXVsdFZhbHVlXT1cIm9icy5wcmVmaWxsPy51cmxcIlxuICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcbiAgICBbdHJpbV09XCJ0cnVlXCJcbiAgICBbdG9vbHRpcF09XCIndXJsVG9vbHRpcCcgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmNcIlxuICAgIHBsYWNlaG9sZGVyPVwiaHR0cHM6Ly9vcGVuemFhay5leGFtcGxlLmNvbS96YWtlbi9hcGkvdjEvIFwiXG4gID5cbiAgPC92LWlucHV0PlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7YXV0aGVudGljYXRpb25QbHVnaW5TZWxlY3RJdGVtczogYXV0aGVudGljYXRpb25QbHVnaW5TZWxlY3RJdGVtcyQgfCBhc3luY30gYXMgYXV0aE9ic1wiXG4gID5cbiAgICA8di1zZWxlY3RcbiAgICAgIFtsb2FkaW5nXT1cIiFhdXRoT2JzLmF1dGhlbnRpY2F0aW9uUGx1Z2luU2VsZWN0SXRlbXNcIlxuICAgICAgW2l0ZW1zXT1cImF1dGhPYnMuYXV0aGVudGljYXRpb25QbHVnaW5TZWxlY3RJdGVtc1wiXG4gICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgbmFtZT1cImF1dGhlbnRpY2F0aW9uUGx1Z2luQ29uZmlndXJhdGlvblwiXG4gICAgICBbdGl0bGVdPVwiJ2F1dGhlbnRpY2F0aW9uUGx1Z2luQ29uZmlndXJhdGlvbicgfCBwbHVnaW5UcmFuc2xhdGU6IHBsdWdpbklkIHwgYXN5bmNcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICBbZGVmYXVsdFNlbGVjdGlvbklkXT1cIm9icy5wcmVmaWxsPy5hdXRoZW50aWNhdGlvblBsdWdpbkNvbmZpZ3VyYXRpb25cIlxuICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgW3Rvb2x0aXBdPVwiJ2F1dGhlbnRpY2F0aW9uUGx1Z2luQ29uZmlndXJhdGlvblRvb2x0aXAnIHwgcGx1Z2luVHJhbnNsYXRlOiBwbHVnaW5JZCB8IGFzeW5jXCJcbiAgICA+PC92LXNlbGVjdD5cbiAgPC9uZy1jb250YWluZXI+XG48L3YtZm9ybT5cbiJdfQ==