@valtimo/connector-management 4.15.2 → 4.16.0-next-main.19
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.
- package/README.md +16 -7
- package/bundles/valtimo-connector-management.umd.js +282 -234
- package/bundles/valtimo-connector-management.umd.js.map +1 -1
- package/bundles/valtimo-connector-management.umd.min.js +2 -2
- package/bundles/valtimo-connector-management.umd.min.js.map +1 -1
- package/esm2015/lib/components/add-connector/add-connector.component.js +12 -8
- package/esm2015/lib/components/connector-link-extension/connector-link-extension.component.js +21 -12
- package/esm2015/lib/components/connector-link-extension-modal/connector-link-extension-modal.component.js +19 -17
- package/esm2015/lib/components/connector-management/connector-management.component.js +23 -15
- package/esm2015/lib/components/connector-modal/connector-modal.component.js +2 -2
- package/esm2015/lib/components/edit-connector-form/edit-connector-form.component.js +1 -1
- package/esm2015/lib/components/edit-connector-properties/edit-connector-properties.component.js +17 -13
- package/esm2015/lib/components/edit-product-aanvragen-connector/edit-product-aanvragen-connector.component.js +39 -59
- package/esm2015/lib/components/edit-product-aanvragen-connector/edit-product-aanvragen-connector.form.js +108 -102
- package/esm2015/lib/components/modify-connector/modify-connector.component.js +9 -7
- package/esm2015/lib/components/multi-value-connector-property/multi-value-connector-property.component.js +15 -11
- package/esm2015/lib/connector-management-routing.js +5 -8
- package/esm2015/lib/connector-management.module.js +5 -7
- package/esm2015/lib/extension/connector-management.extension.init.js +3 -3
- package/esm2015/lib/models/connector.model.js +1 -0
- package/esm2015/lib/models/index.js +20 -0
- package/esm2015/lib/models/object-sync.js +1 -0
- package/esm2015/lib/services/connector-management/connector-management.service.js +2 -2
- package/esm2015/lib/services/connector-management-state/connector-management-state.service.js +2 -2
- package/esm2015/lib/services/object-api-sync/object-api-sync.service.js +2 -2
- package/esm2015/public-api.js +2 -1
- package/esm2015/valtimo-connector-management.js +1 -1
- package/fesm2015/valtimo-connector-management.js +281 -251
- package/fesm2015/valtimo-connector-management.js.map +1 -1
- package/lib/components/add-connector/add-connector.component.d.ts +1 -1
- package/lib/components/connector-link-extension/connector-link-extension.component.d.ts +1 -1
- package/lib/components/connector-link-extension-modal/connector-link-extension-modal.component.d.ts +2 -2
- package/lib/components/connector-management/connector-management.component.d.ts +2 -1
- package/lib/components/connector-modal/connector-modal.component.d.ts +1 -1
- package/lib/components/edit-connector-form/edit-connector-form.component.d.ts +1 -1
- package/lib/components/edit-connector-properties/edit-connector-properties.component.d.ts +1 -1
- package/lib/components/edit-product-aanvragen-connector/edit-product-aanvragen-connector.component.d.ts +10 -8
- package/lib/components/edit-product-aanvragen-connector/edit-product-aanvragen-connector.form.d.ts +24 -14
- package/lib/components/modify-connector/modify-connector.component.d.ts +1 -1
- package/lib/components/multi-value-connector-property/multi-value-connector-property.component.d.ts +1 -1
- package/lib/models/connector.model.d.ts +36 -0
- package/lib/models/index.d.ts +2 -0
- package/lib/models/object-sync.d.ts +19 -0
- package/lib/services/connector-management/connector-management.service.d.ts +2 -1
- package/lib/services/connector-management-state/connector-management-state.service.d.ts +1 -1
- package/lib/services/object-api-sync/object-api-sync.service.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/valtimo-connector-management.metadata.json +1 -1
package/esm2015/lib/components/edit-connector-properties/edit-connector-properties.component.js
CHANGED
|
@@ -28,10 +28,14 @@ export class EditConnectorPropertiesComponent {
|
|
|
28
28
|
this.modifiedProperties$ = new BehaviorSubject(undefined);
|
|
29
29
|
this.editFields$ = new BehaviorSubject([]);
|
|
30
30
|
this.connectorName$ = new BehaviorSubject('');
|
|
31
|
-
this.saveButtonDisabled$ = combineLatest([
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
this.saveButtonDisabled$ = combineLatest([
|
|
32
|
+
this.editFields$,
|
|
33
|
+
this.modifiedProperties$,
|
|
34
|
+
this.connectorName$,
|
|
35
|
+
]).pipe(map(([editFields, modifiedProperties, connectorName]) => {
|
|
36
|
+
const values = editFields.map(field => get(modifiedProperties, field.key));
|
|
37
|
+
const validValues = values.filter(value => Array.isArray(value) ? value.length > 0 : value === 0 || value);
|
|
38
|
+
return editFields.length !== validValues.length || !connectorName;
|
|
35
39
|
}));
|
|
36
40
|
this.disabled$ = this.stateService.inputDisabled$;
|
|
37
41
|
}
|
|
@@ -44,13 +48,13 @@ export class EditConnectorPropertiesComponent {
|
|
|
44
48
|
this.setName();
|
|
45
49
|
}
|
|
46
50
|
multiFieldValuesSet(event) {
|
|
47
|
-
this.modifiedProperties$.pipe(take(1)).subscribe(
|
|
51
|
+
this.modifiedProperties$.pipe(take(1)).subscribe(properties => {
|
|
48
52
|
set(properties, event.editFieldKey, event.values);
|
|
49
53
|
this.modifiedProperties$.next(properties);
|
|
50
54
|
});
|
|
51
55
|
}
|
|
52
56
|
onSingleValueChange(value, editField) {
|
|
53
|
-
this.modifiedProperties$.pipe(take(1)).subscribe(
|
|
57
|
+
this.modifiedProperties$.pipe(take(1)).subscribe(properties => {
|
|
54
58
|
set(properties, editField.key, editField.editType === 'string' ? value.trim() : parseInt(value, 10));
|
|
55
59
|
this.modifiedProperties$.next(properties);
|
|
56
60
|
});
|
|
@@ -61,7 +65,8 @@ export class EditConnectorPropertiesComponent {
|
|
|
61
65
|
onSave() {
|
|
62
66
|
this.stateService.disableInput();
|
|
63
67
|
combineLatest([this.modifiedProperties$, this.connectorName$])
|
|
64
|
-
.pipe(take(1))
|
|
68
|
+
.pipe(take(1))
|
|
69
|
+
.subscribe(([properties, name]) => {
|
|
65
70
|
this.propertiesSave.emit({ properties, name });
|
|
66
71
|
});
|
|
67
72
|
}
|
|
@@ -80,7 +85,7 @@ export class EditConnectorPropertiesComponent {
|
|
|
80
85
|
setModifiedProperties(editFields) {
|
|
81
86
|
const propertiesCopy = cloneDeep(this.properties);
|
|
82
87
|
if (!this.withDefaults) {
|
|
83
|
-
editFields.forEach(
|
|
88
|
+
editFields.forEach(editField => {
|
|
84
89
|
set(propertiesCopy, editField.key, undefined);
|
|
85
90
|
});
|
|
86
91
|
}
|
|
@@ -90,9 +95,8 @@ export class EditConnectorPropertiesComponent {
|
|
|
90
95
|
const editFields = [];
|
|
91
96
|
const keysToFilter = ['className'];
|
|
92
97
|
const handlePropertyLevel = (propertyLevel, previousKeys) => {
|
|
93
|
-
const propertyLevelKeys = Object.keys(propertyLevel)
|
|
94
|
-
|
|
95
|
-
propertyLevelKeys.forEach((key) => {
|
|
98
|
+
const propertyLevelKeys = Object.keys(propertyLevel).filter(key => !keysToFilter.includes(key));
|
|
99
|
+
propertyLevelKeys.forEach(key => {
|
|
96
100
|
const propertyValue = propertyLevel[key];
|
|
97
101
|
const baseEditField = Object.assign({ key: previousKeys + key }, (this.withDefaults && { defaultValue: propertyValue }));
|
|
98
102
|
if (typeof propertyValue === 'number') {
|
|
@@ -122,7 +126,7 @@ export class EditConnectorPropertiesComponent {
|
|
|
122
126
|
EditConnectorPropertiesComponent.decorators = [
|
|
123
127
|
{ type: Component, args: [{
|
|
124
128
|
selector: 'valtimo-edit-connector-properties',
|
|
125
|
-
template: "<!--\n ~ Copyright 2015-2020 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<div
|
|
129
|
+
template: "<!--\n ~ Copyright 2015-2020 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<div\n class=\"edit-fields\"\n *ngIf=\"{editFields: editFields$ | async, disabled: disabled$ | async} as obs\"\n>\n <ng-container *ngTemplateOutlet=\"nameInput; context: {disabled: obs.disabled}\"></ng-container>\n <ng-container *ngFor=\"let editField of obs.editFields\">\n <ng-container *ngIf=\"editField.editType === 'string' || editField.editType === 'number'\">\n <ng-container\n *ngTemplateOutlet=\"singleInput; context: {editField: editField, disabled: obs.disabled}\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"editField.editType === 'string[]' || editField.editType === 'number[]'\">\n <valtimo-multi-value-connector-property\n [editField]=\"editField\"\n (valuesSet)=\"multiFieldValuesSet($event)\"\n [disabled]=\"obs.disabled\"\n [defaultValue]=\"withDefaults && editField.defaultValue\"\n >\n </valtimo-multi-value-connector-property>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"buttons; context: {disabled: obs.disabled}\"></ng-container>\n</div>\n\n<ng-template #nameInput let-disabled=\"disabled\">\n <div class=\"form-group row\">\n <label class=\"col-3 col-form-label text-sm-right\">\n {{ 'connectorManagement.inputLabels.connectorName' | translate }}\n </label>\n <div class=\"col-7\">\n <input\n class=\"form-control\"\n type=\"text\"\n (input)=\"onNameValueChange($event.target.value)\"\n [disabled]=\"disabled\"\n [value]=\"withDefaults && defaultName ? defaultName : ''\"\n />\n </div>\n </div>\n</ng-template>\n\n<ng-template #singleInput let-editField=\"editField\" let-disabled=\"disabled\">\n <div class=\"form-group row\">\n <label class=\"col-3 col-form-label text-sm-right\">\n {{ 'connectorManagement.inputLabels.' + editField.key | translate }}\n </label>\n <div class=\"col-7\">\n <input\n *ngIf=\"editField.editType === 'string'\"\n class=\"form-control\"\n type=\"text\"\n (input)=\"onSingleValueChange($event.target.value, editField)\"\n [disabled]=\"disabled\"\n [value]=\"withDefaults ? editField.defaultValue : ''\"\n />\n <input\n *ngIf=\"editField.editType === 'number'\"\n class=\"form-control\"\n type=\"number\"\n step=\"1\"\n min=\"0\"\n oninput=\"validity.valid||(value='');\"\n (input)=\"onSingleValueChange($event.target.value, editField)\"\n [disabled]=\"disabled\"\n [value]=\"withDefaults ? editField.defaultValue : ''\"\n />\n </div>\n </div>\n</ng-template>\n\n<ng-template #buttons let-disabled=\"disabled\">\n <div class=\"border-top mt-3 pt-6\">\n <div class=\"button-container\">\n <button\n class=\"btn btn-primary\"\n [disabled]=\"disabled || (saveButtonDisabled$ | async)\"\n (click)=\"onSave()\"\n >\n <i class=\"icon mdi mdi-save mr-1\"></i>\n {{ 'connectorManagement.save' | translate }}\n </button>\n <button\n *ngIf=\"showDeleteButton\"\n class=\"btn btn-danger btn-space\"\n (click)=\"onDelete()\"\n [disabled]=\"disabled\"\n >\n <i class=\"icon mdi mdi-delete mr-1\"></i>\n {{ 'connectorManagement.remove' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n",
|
|
126
130
|
styles: ["/*!\n * Copyright 2015-2020 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 */.button-container{display:flex;flex-flow:row-reverse;justify-content:space-between;width:100%}"]
|
|
127
131
|
},] }
|
|
128
132
|
];
|
|
@@ -137,4 +141,4 @@ EditConnectorPropertiesComponent.propDecorators = {
|
|
|
137
141
|
propertiesSave: [{ type: Output }],
|
|
138
142
|
connectorDelete: [{ type: Output }]
|
|
139
143
|
};
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1jb25uZWN0b3ItcHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Nvbm5lY3Rvci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9lZGl0LWNvbm5lY3Rvci1wcm9wZXJ0aWVzL2VkaXQtY29ubmVjdG9yLXByb3BlcnRpZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDM0MsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sOEVBQThFLENBQUM7QUFPN0gsTUFBTSxPQUFPLGdDQUFnQztJQTBCM0MsWUFDbUIsWUFBNkM7UUFBN0MsaUJBQVksR0FBWixZQUFZLENBQWlDO1FBekJ2RCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFHeEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBbUQsQ0FBQztRQUNyRixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFJM0Msd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQXNCLFNBQVMsQ0FBQyxDQUFDO1FBRTFFLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQW9DLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFD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LENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs7WUEzSUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQ0FBbUM7Z0JBQzdDLDIxSEFBeUQ7O2FBRTFEOzs7WUFOTywrQkFBK0I7Ozt5QkFRcEMsS0FBSzsyQkFDTCxLQUFLOytCQUNMLEtBQUs7MEJBQ0wsS0FBSzs2QkFFTCxNQUFNOzhCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Nvbm5lY3RvclByb3BlcnRpZXMsIENvbm5lY3RvclByb3BlcnR5RWRpdEZpZWxkLCBDb25uZWN0b3JQcm9wZXJ0eVZhbHVlVHlwZX0gZnJvbSAnQHZhbHRpbW8vY29udHJhY3QnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7c2V0LCBnZXQsIGNsb25lRGVlcH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Q29ubmVjdG9yTWFuYWdlbWVudFN0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29ubmVjdG9yLW1hbmFnZW1lbnQtc3RhdGUvY29ubmVjdG9yLW1hbmFnZW1lbnQtc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZWRpdC1jb25uZWN0b3ItcHJvcGVydGllcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LWNvbm5lY3Rvci1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdC1jb25uZWN0b3ItcHJvcGVydGllcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRDb25uZWN0b3JQcm9wZXJ0aWVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwcm9wZXJ0aWVzOiBDb25uZWN0b3JQcm9wZXJ0aWVzO1xuICBASW5wdXQoKSB3aXRoRGVmYXVsdHMgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0RlbGV0ZUJ1dHRvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkZWZhdWx0TmFtZSE6IHN0cmluZztcblxuICBAT3V0cHV0KCkgcHJvcGVydGllc1NhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHtwcm9wZXJ0aWVzOiBDb25uZWN0b3JQcm9wZXJ0aWVzLCBuYW1lOiBzdHJpbmd9PigpO1xuICBAT3V0cHV0KCkgY29ubmVjdG9yRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICByZWFkb25seSBtb2RpZmllZFByb3BlcnRpZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25uZWN0b3JQcm9wZXJ0aWVzPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGVkaXRGaWVsZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb25uZWN0b3JQcm9wZXJ0eUVkaXRGaWVsZD4+KFtdKTtcblxuICByZWFkb25seSBjb25uZWN0b3JOYW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgcmVhZG9ubHkgc2F2ZUJ1dHRvbkRpc2FibGVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZWRpdEZpZWxkcyQsIHRoaXMubW9kaWZpZWRQcm9wZXJ0aWVzJCwgdGhpcy5jb25uZWN0b3JOYW1lJF0pLnBpcGUoXG4gICAgbWFwKChbZWRpdEZpZWxkcywgbW9kaWZpZWRQcm9wZXJ0aWVzLCBjb25uZWN0b3JOYW1lXSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gZWRpdEZpZWxkcy5tYXAoKGZpZWxkKSA9PiBnZXQobW9kaWZpZWRQcm9wZXJ0aWVzLCBmaWVsZC5rZXkpKTtcbiAgICAgIGNvbnN0IHZhbGlkVmFsdWVzID0gdmFsdWVzLmZpbHRlcigodmFsdWUpID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubGVuZ3RoID4gMCA6IHZhbHVlID09PSAwIHx8IHZhbHVlKTtcblxuICAgICAgcmV0dXJuIChlZGl0RmllbGRzLmxlbmd0aCAhPT0gdmFsaWRWYWx1ZXMubGVuZ3RoKSB8fCAhY29ubmVjdG9yTmFtZTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdGVTZXJ2aWNlOiBDb25uZWN0b3JNYW5hZ2VtZW50U3RhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZGlzYWJsZWQkID0gdGhpcy5zdGF0ZVNlcnZpY2UuaW5wdXREaXNhYmxlZCQ7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEVkaXRGaWVsZHMoKTtcbiAgICB0aGlzLnNldE5hbWUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RWRpdEZpZWxkcygpO1xuICAgIHRoaXMuc2V0TmFtZSgpO1xuICB9XG5cbiAgbXVsdGlGaWVsZFZhbHVlc1NldChldmVudDogeyBlZGl0RmllbGRLZXk6IHN0cmluZywgdmFsdWVzOiBBcnJheTxzdHJpbmc+IHwgQXJyYXk8bnVtYmVyPiB9KTogdm9pZCB7XG4gICAgdGhpcy5tb2RpZmllZFByb3BlcnRpZXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChwcm9wZXJ0aWVzKSA9PiB7XG4gICAgICBzZXQocHJvcGVydGllcywgZXZlbnQuZWRpdEZpZWxkS2V5LCBldmVudC52YWx1ZXMpO1xuICAgICAgdGhpcy5tb2RpZmllZFByb3BlcnRpZXMkLm5leHQocHJvcGVydGllcyk7XG4gICAgfSk7XG4gIH1cblxuICBvblNpbmdsZVZhbHVlQ2hhbmdlKHZhbHVlOiBhbnksIGVkaXRGaWVsZDogQ29ubmVjdG9yUHJvcGVydHlFZGl0RmllbGQpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGlmaWVkUHJvcGVydGllcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHByb3BlcnRpZXMpID0+IHtcbiAgICAgIHNldChwcm9wZXJ0aWVzLCBlZGl0RmllbGQua2V5LCBlZGl0RmllbGQuZWRpdFR5cGUgPT09ICdzdHJpbmcnID8gdmFsdWUudHJpbSgpIDogcGFyc2VJbnQodmFsdWUsIDEwKSk7XG4gICAgICB0aGlzLm1vZGlmaWVkUHJvcGVydGllcyQubmV4dChwcm9wZXJ0aWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uTmFtZVZhbHVlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3Rvck5hbWUkLm5leHQodmFsdWUudHJpbSgpKTtcbiAgfVxuXG4gIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZS5kaXNhYmxlSW5wdXQoKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubW9kaWZpZWRQcm9wZXJ0aWVzJCwgdGhpcy5jb25uZWN0b3JOYW1lJF0pXG4gICAgICAucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKFtwcm9wZXJ0aWVzLCBuYW1lXSkgPT4ge1xuICAgICAgICB0aGlzLnByb3BlcnRpZXNTYXZlLmVtaXQoe3Byb3BlcnRpZXMsIG5hbWUgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTZXJ2aWNlLmRpc2FibGVJbnB1dCgpO1xuICAgIHRoaXMuY29ubmVjdG9yRGVsZXRlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TmFtZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53aXRoRGVmYXVsdHMgJiYgdGhpcy5kZWZhdWx0TmFtZSkge1xuICAgICAgdGhpcy5jb25uZWN0b3JOYW1lJC5uZXh0KHRoaXMuZGVmYXVsdE5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbm5lY3Rvck5hbWUkLm5leHQoJycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0TW9kaWZpZWRQcm9wZXJ0aWVzKGVkaXRGaWVsZHM6IEFycmF5PENvbm5lY3RvclByb3BlcnR5RWRpdEZpZWxkPik6IHZvaWQge1xuICAgIGNvbnN0IHByb3BlcnRpZXNDb3B5ID0gY2xvbmVEZWVwKHRoaXMucHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMud2l0aERlZmF1bHRzKSB7XG4gICAgICBlZGl0RmllbGRzLmZvckVhY2goKGVkaXRGaWVsZCkgPT4ge1xuICAgICAgICBzZXQoXG4gICAgICAgICAgcHJvcGVydGllc0NvcHksXG4gICAgICAgICAgZWRpdEZpZWxkLmtleSxcbiAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMubW9kaWZpZWRQcm9wZXJ0aWVzJC5uZXh0KHByb3BlcnRpZXNDb3B5KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RWRpdEZpZWxkcygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0RmllbGRzOiBBcnJheTxDb25uZWN0b3JQcm9wZXJ0eUVkaXRGaWVsZD4gPSBbXTtcbiAgICBjb25zdCBrZXlzVG9GaWx0ZXIgPSBbJ2NsYXNzTmFtZSddO1xuXG4gICAgY29uc3QgaGFuZGxlUHJvcGVydHlMZXZlbCA9IChwcm9wZXJ0eUxldmVsOiBDb25uZWN0b3JQcm9wZXJ0aWVzLCBwcmV2aW91c0tleXM6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydHlMZXZlbEtleXMgPSBPYmplY3Qua2V5cyhwcm9wZXJ0eUxldmVsKVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+ICFrZXlzVG9GaWx0ZXIuaW5jbHVkZXMoa2V5KSk7XG5cbiAgICAgIHByb3BlcnR5TGV2ZWxLZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlMZXZlbFtrZXldO1xuICAgICAgICBjb25zdCBiYXNlRWRpdEZpZWxkID0ge1xuICAgICAgICAgIGtleTogcHJldmlvdXNLZXlzICsga2V5LFxuICAgICAgICAgIC4uLih0aGlzLndpdGhEZWZhdWx0cyAmJiB7ZGVmYXVsdFZhbHVlOiAocHJvcGVydHlWYWx1ZSBhcyBDb25uZWN0b3JQcm9wZXJ0eVZhbHVlVHlwZSl9KVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHlWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBlZGl0RmllbGRzLnB1c2goey4uLmJhc2VFZGl0RmllbGQsIGVkaXRUeXBlOiAnbnVtYmVyJ30pO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydHlWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAocHJvcGVydHlWYWx1ZVswXSAmJiB0eXBlb2YgcHJvcGVydHlWYWx1ZVswXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGVkaXRGaWVsZHMucHVzaCh7Li4uYmFzZUVkaXRGaWVsZCwgZWRpdFR5cGU6ICdudW1iZXJbXSd9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWRpdEZpZWxkcy5wdXNoKHsuLi5iYXNlRWRpdEZpZWxkLCBlZGl0VHlwZTogJ3N0cmluZ1tdJ30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcGVydHlWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBlZGl0RmllbGRzLnB1c2goey4uLmJhc2VFZGl0RmllbGQsIGVkaXRUeXBlOiAnc3RyaW5nJ30pO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wZXJ0eVZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGhhbmRsZVByb3BlcnR5TGV2ZWwocHJvcGVydHlWYWx1ZSwgYCR7cHJldmlvdXNLZXlzfSR7a2V5fS5gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGhhbmRsZVByb3BlcnR5TGV2ZWwodGhpcy5wcm9wZXJ0aWVzLCAnJyk7XG5cbiAgICB0aGlzLmVkaXRGaWVsZHMkLm5leHQoZWRpdEZpZWxkcyk7XG4gICAgdGhpcy5zZXRNb2RpZmllZFByb3BlcnRpZXMoZWRpdEZpZWxkcyk7XG4gIH1cbn1cbiJdfQ==
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1jb25uZWN0b3ItcHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL3RtcC9qZW5raW5zLWE3MzRhYWRjL3dvcmtzcGFjZS9WYWx0aW1vXy1fQW5ndWxhcl9MaWJyYXJpZXNfbWFpbi9wcm9qZWN0cy92YWx0aW1vL2Nvbm5lY3Rvci1tYW5hZ2VtZW50L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2VkaXQtY29ubmVjdG9yLXByb3BlcnRpZXMvZWRpdC1jb25uZWN0b3ItcHJvcGVydGllcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU14RixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSw4RUFBOEUsQ0FBQztBQU83SCxNQUFNLE9BQU8sZ0NBQWdDO0lBZ0MzQyxZQUE2QixZQUE2QztRQUE3QyxpQkFBWSxHQUFaLFlBQVksQ0FBaUM7UUE5QmpFLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUd4QixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFtRCxDQUFDO1FBQ3JGLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUkzQyx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsU0FBUyxDQUFDLENBQUM7UUFFMUUsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBb0MsRUFBRSxDQUFDLENBQUM7UUFFekUsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUVqRCx3QkFBbUIsR0FBRyxhQUFhLENBQUM7WUFDM0MsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMsY0FBYztTQUNwQixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDdEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ3hDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FDL0QsQ0FBQztZQUVGLE9BQU8sVUFBVSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUNILENBQUM7UUFHQSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDO0lBQ3BELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQW9FO1FBQ3RGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVELEdBQUcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFVLEVBQUUsU0FBcUM7UUFDbkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUQsR0FBRyxDQUNELFVBQVUsRUFDVixTQUFTLENBQUMsR0FBRyxFQUNiLFNBQVMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ3JFLENBQUM7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRWpDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLEVB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QUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs7WUFoSkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQ0FBbUM7Z0JBQzdDLGs5SEFBeUQ7O2FBRTFEOzs7WUFOTywrQkFBK0I7Ozt5QkFRcEMsS0FBSzsyQkFDTCxLQUFLOytCQUNMLEtBQUs7MEJBQ0wsS0FBSzs2QkFFTCxNQUFNOzhCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb25uZWN0b3JQcm9wZXJ0aWVzLFxuICBDb25uZWN0b3JQcm9wZXJ0eUVkaXRGaWVsZCxcbiAgQ29ubmVjdG9yUHJvcGVydHlWYWx1ZVR5cGUsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtzZXQsIGdldCwgY2xvbmVEZWVwfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtDb25uZWN0b3JNYW5hZ2VtZW50U3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25uZWN0b3ItbWFuYWdlbWVudC1zdGF0ZS9jb25uZWN0b3ItbWFuYWdlbWVudC1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1lZGl0LWNvbm5lY3Rvci1wcm9wZXJ0aWVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtY29ubmVjdG9yLXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LWNvbm5lY3Rvci1wcm9wZXJ0aWVzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRDb25uZWN0b3JQcm9wZXJ0aWVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwcm9wZXJ0aWVzOiBDb25uZWN0b3JQcm9wZXJ0aWVzO1xuICBASW5wdXQoKSB3aXRoRGVmYXVsdHMgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0RlbGV0ZUJ1dHRvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkZWZhdWx0TmFtZSE6IHN0cmluZztcblxuICBAT3V0cHV0KCkgcHJvcGVydGllc1NhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHtwcm9wZXJ0aWVzOiBDb25uZWN0b3JQcm9wZXJ0aWVzOyBuYW1lOiBzdHJpbmd9PigpO1xuICBAT3V0cHV0KCkgY29ubmVjdG9yRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQkITogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICByZWFkb25seSBtb2RpZmllZFByb3BlcnRpZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25uZWN0b3JQcm9wZXJ0aWVzPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IGVkaXRGaWVsZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb25uZWN0b3JQcm9wZXJ0eUVkaXRGaWVsZD4+KFtdKTtcblxuICByZWFkb25seSBjb25uZWN0b3JOYW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgcmVhZG9ubHkgc2F2ZUJ1dHRvbkRpc2FibGVkJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZWRpdEZpZWxkcyQsXG4gICAgdGhpcy5tb2RpZmllZFByb3BlcnRpZXMkLFxuICAgIHRoaXMuY29ubmVjdG9yTmFtZSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbZWRpdEZpZWxkcywgbW9kaWZpZWRQcm9wZXJ0aWVzLCBjb25uZWN0b3JOYW1lXSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gZWRpdEZpZWxkcy5tYXAoZmllbGQgPT4gZ2V0KG1vZGlmaWVkUHJvcGVydGllcywgZmllbGQua2V5KSk7XG4gICAgICBjb25zdCB2YWxpZFZhbHVlcyA9IHZhbHVlcy5maWx0ZXIodmFsdWUgPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggPiAwIDogdmFsdWUgPT09IDAgfHwgdmFsdWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBlZGl0RmllbGRzLmxlbmd0aCAhPT0gdmFsaWRWYWx1ZXMubGVuZ3RoIHx8ICFjb25uZWN0b3JOYW1lO1xuICAgIH0pXG4gICk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdGF0ZVNlcnZpY2U6IENvbm5lY3Rvck1hbmFnZW1lbnRTdGF0ZVNlcnZpY2UpIHtcbiAgICB0aGlzLmRpc2FibGVkJCA9IHRoaXMuc3RhdGVTZXJ2aWNlLmlucHV0RGlzYWJsZWQkO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRFZGl0RmllbGRzKCk7XG4gICAgdGhpcy5zZXROYW1lKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNldEVkaXRGaWVsZHMoKTtcbiAgICB0aGlzLnNldE5hbWUoKTtcbiAgfVxuXG4gIG11bHRpRmllbGRWYWx1ZXNTZXQoZXZlbnQ6IHtlZGl0RmllbGRLZXk6IHN0cmluZzsgdmFsdWVzOiBBcnJheTxzdHJpbmc+IHwgQXJyYXk8bnVtYmVyPn0pOiB2b2lkIHtcbiAgICB0aGlzLm1vZGlmaWVkUHJvcGVydGllcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocHJvcGVydGllcyA9PiB7XG4gICAgICBzZXQocHJvcGVydGllcywgZXZlbnQuZWRpdEZpZWxkS2V5LCBldmVudC52YWx1ZXMpO1xuICAgICAgdGhpcy5tb2RpZmllZFByb3BlcnRpZXMkLm5leHQocHJvcGVydGllcyk7XG4gICAgfSk7XG4gIH1cblxuICBvblNpbmdsZVZhbHVlQ2hhbmdlKHZhbHVlOiBhbnksIGVkaXRGaWVsZDogQ29ubmVjdG9yUHJvcGVydHlFZGl0RmllbGQpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGlmaWVkUHJvcGVydGllcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocHJvcGVydGllcyA9PiB7XG4gICAgICBzZXQoXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIGVkaXRGaWVsZC5rZXksXG4gICAgICAgIGVkaXRGaWVsZC5lZGl0VHlwZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS50cmltKCkgOiBwYXJzZUludCh2YWx1ZSwgMTApXG4gICAgICApO1xuICAgICAgdGhpcy5tb2RpZmllZFByb3BlcnRpZXMkLm5leHQocHJvcGVydGllcyk7XG4gICAgfSk7XG4gIH1cblxuICBvbk5hbWVWYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0b3JOYW1lJC5uZXh0KHZhbHVlLnRyaW0oKSk7XG4gIH1cblxuICBvblNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVNlcnZpY2UuZGlzYWJsZUlucHV0KCk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLm1vZGlmaWVkUHJvcGVydGllcyQsIHRoaXMuY29ubmVjdG9yTmFtZSRdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtwcm9wZXJ0aWVzLCBuYW1lXSkgPT4ge1xuICAgICAgICB0aGlzLnByb3BlcnRpZXNTYXZlLmVtaXQoe3Byb3BlcnRpZXMsIG5hbWV9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgb25EZWxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVNlcnZpY2UuZGlzYWJsZUlucHV0KCk7XG4gICAgdGhpcy5jb25uZWN0b3JEZWxldGUuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXROYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndpdGhEZWZhdWx0cyAmJiB0aGlzLmRlZmF1bHROYW1lKSB7XG4gICAgICB0aGlzLmNvbm5lY3Rvck5hbWUkLm5leHQodGhpcy5kZWZhdWx0TmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29ubmVjdG9yTmFtZSQubmV4dCgnJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNb2RpZmllZFByb3BlcnRpZXMoZWRpdEZpZWxkczogQXJyYXk8Q29ubmVjdG9yUHJvcGVydHlFZGl0RmllbGQ+KTogdm9pZCB7XG4gICAgY29uc3QgcHJvcGVydGllc0NvcHkgPSBjbG9uZURlZXAodGhpcy5wcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy53aXRoRGVmYXVsdHMpIHtcbiAgICAgIGVkaXRGaWVsZHMuZm9yRWFjaChlZGl0RmllbGQgPT4ge1xuICAgICAgICBzZXQocHJvcGVydGllc0NvcHksIGVkaXRGaWVsZC5rZXksIHVuZGVmaW5lZCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLm1vZGlmaWVkUHJvcGVydGllcyQubmV4dChwcm9wZXJ0aWVzQ29weSk7XG4gIH1cblxuICBwcml2YXRlIHNldEVkaXRGaWVsZHMoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdEZpZWxkczogQXJyYXk8Q29ubmVjdG9yUHJvcGVydHlFZGl0RmllbGQ+ID0gW107XG4gICAgY29uc3Qga2V5c1RvRmlsdGVyID0gWydjbGFzc05hbWUnXTtcblxuICAgIGNvbnN0IGhhbmRsZVByb3BlcnR5TGV2ZWwgPSAocHJvcGVydHlMZXZlbDogQ29ubmVjdG9yUHJvcGVydGllcywgcHJldmlvdXNLZXlzOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHByb3BlcnR5TGV2ZWxLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydHlMZXZlbCkuZmlsdGVyKFxuICAgICAgICBrZXkgPT4gIWtleXNUb0ZpbHRlci5pbmNsdWRlcyhrZXkpXG4gICAgICApO1xuXG4gICAgICBwcm9wZXJ0eUxldmVsS2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWUgPSBwcm9wZXJ0eUxldmVsW2tleV07XG4gICAgICAgIGNvbnN0IGJhc2VFZGl0RmllbGQgPSB7XG4gICAgICAgICAga2V5OiBwcmV2aW91c0tleXMgKyBrZXksXG4gICAgICAgICAgLi4uKHRoaXMud2l0aERlZmF1bHRzICYmIHtkZWZhdWx0VmFsdWU6IHByb3BlcnR5VmFsdWUgYXMgQ29ubmVjdG9yUHJvcGVydHlWYWx1ZVR5cGV9KSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgZWRpdEZpZWxkcy5wdXNoKHsuLi5iYXNlRWRpdEZpZWxkLCBlZGl0VHlwZTogJ251bWJlcid9KTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHByb3BlcnR5VmFsdWUpKSB7XG4gICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWVbMF0gJiYgdHlwZW9mIHByb3BlcnR5VmFsdWVbMF0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBlZGl0RmllbGRzLnB1c2goey4uLmJhc2VFZGl0RmllbGQsIGVkaXRUeXBlOiAnbnVtYmVyW10nfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVkaXRGaWVsZHMucHVzaCh7Li4uYmFzZUVkaXRGaWVsZCwgZWRpdFR5cGU6ICdzdHJpbmdbXSd9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BlcnR5VmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgZWRpdEZpZWxkcy5wdXNoKHsuLi5iYXNlRWRpdEZpZWxkLCBlZGl0VHlwZTogJ3N0cmluZyd9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcGVydHlWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBoYW5kbGVQcm9wZXJ0eUxldmVsKHByb3BlcnR5VmFsdWUsIGAke3ByZXZpb3VzS2V5c30ke2tleX0uYCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBoYW5kbGVQcm9wZXJ0eUxldmVsKHRoaXMucHJvcGVydGllcywgJycpO1xuXG4gICAgdGhpcy5lZGl0RmllbGRzJC5uZXh0KGVkaXRGaWVsZHMpO1xuICAgIHRoaXMuc2V0TW9kaWZpZWRQcm9wZXJ0aWVzKGVkaXRGaWVsZHMpO1xuICB9XG59XG4iXX0=
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
17
17
|
import { editProductAanvragenConnectorForm } from './edit-product-aanvragen-connector.form';
|
|
18
|
-
import {
|
|
19
|
-
import { DocumentService } from '@valtimo/document';
|
|
18
|
+
import { FormMappingService, FormTranslationService } from '@valtimo/form';
|
|
19
|
+
import { DocumentService, } from '@valtimo/document';
|
|
20
20
|
import { BehaviorSubject, combineLatest, Subject } from 'rxjs';
|
|
21
21
|
import { cloneDeep } from 'lodash';
|
|
22
22
|
import { TranslateService } from '@ngx-translate/core';
|
|
23
|
-
import { map } from 'rxjs/operators';
|
|
23
|
+
import { map, switchMap, tap } from 'rxjs/operators';
|
|
24
24
|
export class EditProductAanvragenConnectorComponent {
|
|
25
25
|
constructor(formTranslationService, formMappingService, documentService, translateService) {
|
|
26
26
|
this.formTranslationService = formTranslationService;
|
|
@@ -32,56 +32,30 @@ export class EditProductAanvragenConnectorComponent {
|
|
|
32
32
|
this.connectorDelete = new EventEmitter();
|
|
33
33
|
this.formRefresh$ = new Subject();
|
|
34
34
|
this.formDefinition$ = new BehaviorSubject(undefined);
|
|
35
|
-
this.translatedFormDefinition$ = this.formDefinition$.pipe(map(
|
|
36
|
-
this.
|
|
35
|
+
this.translatedFormDefinition$ = this.formDefinition$.pipe(map(definition => this.formTranslationService.translateForm(definition)));
|
|
36
|
+
this.caseDefinitionOptions = [];
|
|
37
|
+
this.processDocumentDefinitionOptions = {};
|
|
37
38
|
this.options = {
|
|
38
|
-
disableAlerts: true
|
|
39
|
+
disableAlerts: true,
|
|
39
40
|
};
|
|
40
41
|
this.mapCaseDefinitionKeyComponent = (component) => {
|
|
41
|
-
var _a;
|
|
42
42
|
if (component.key === 'caseDefinitionKey') {
|
|
43
|
-
|
|
44
|
-
return Object.assign(Object.assign({}, component), { disabled: false, data: { values: definitionOptions } });
|
|
45
|
-
}
|
|
46
|
-
return component;
|
|
47
|
-
};
|
|
48
|
-
this.mapProcessDefinitionKeyComponent = (component) => {
|
|
49
|
-
var _a;
|
|
50
|
-
if (component.key === 'processDefinitionKey') {
|
|
51
|
-
const processOptions = this.processDocumentDefinitions.map((definition) => ({ label: definition.processName, value: definition.id.processDefinitionKey }));
|
|
52
|
-
if (((_a = this.processDocumentDefinitions) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
53
|
-
return Object.assign(Object.assign({}, component), { disabled: false, data: { values: processOptions } });
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
return Object.assign(Object.assign({}, component), { disabled: true, data: { values: [] } });
|
|
57
|
-
}
|
|
43
|
+
return Object.assign(Object.assign({}, component), { disabled: false, data: { values: this.caseDefinitionOptions } });
|
|
58
44
|
}
|
|
59
45
|
return component;
|
|
60
46
|
};
|
|
61
47
|
}
|
|
62
48
|
ngOnInit() {
|
|
49
|
+
window['productRequestDefinitions'] = {};
|
|
63
50
|
this.openFormDefinitionSubscription();
|
|
64
51
|
this.formDefinition$.next(editProductAanvragenConnectorForm);
|
|
65
|
-
this.
|
|
52
|
+
this.loadDefinitions();
|
|
66
53
|
}
|
|
67
54
|
ngOnDestroy() {
|
|
68
55
|
var _a, _b;
|
|
69
56
|
(_a = this.formDefinitionSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
70
57
|
(_b = this.translateSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
71
58
|
}
|
|
72
|
-
onChange(object) {
|
|
73
|
-
var _a;
|
|
74
|
-
const caseDefinitionKeyValue = (_a = object === null || object === void 0 ? void 0 : object.data) === null || _a === void 0 ? void 0 : _a.caseDefinitionKey;
|
|
75
|
-
const currentCaseDefinitionId = this.caseDefinitionId$.getValue();
|
|
76
|
-
if (caseDefinitionKeyValue && caseDefinitionKeyValue !== currentCaseDefinitionId) {
|
|
77
|
-
this.documentService.findProcessDocumentDefinitions(caseDefinitionKeyValue).subscribe((processDocumentDefinitions) => {
|
|
78
|
-
this.processDocumentDefinitions = processDocumentDefinitions;
|
|
79
|
-
const definitionWithProcessDefinitionKeyValues = this.formMappingService.mapComponents(this.formDefinition$.getValue(), this.mapProcessDefinitionKeyComponent);
|
|
80
|
-
this.formDefinition$.next(definitionWithProcessDefinitionKeyValues);
|
|
81
|
-
this.caseDefinitionId$.next(caseDefinitionKeyValue);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
59
|
onSubmit(event) {
|
|
86
60
|
const submission = event.data;
|
|
87
61
|
const properties = cloneDeep(this.properties);
|
|
@@ -96,23 +70,20 @@ export class EditProductAanvragenConnectorComponent {
|
|
|
96
70
|
properties.openNotificatieProperties.baseUrl = submission.openNotificationsBaseUrl;
|
|
97
71
|
properties.openNotificatieProperties.clientId = submission.openNotificationsClientId;
|
|
98
72
|
properties.openNotificatieProperties.secret = submission.openNotificationsSecret;
|
|
99
|
-
properties.openNotificatieProperties.callbackBaseUrl =
|
|
73
|
+
properties.openNotificatieProperties.callbackBaseUrl =
|
|
74
|
+
submission.openNotificationsCallbackBaseUrl;
|
|
100
75
|
properties.aanvragerRolTypeUrl = submission.applicantRoleTypeUrl;
|
|
101
|
-
properties.typeMapping =
|
|
102
|
-
{
|
|
103
|
-
productAanvraagType: submission.productAanvraagType,
|
|
104
|
-
caseDefinitionKey: submission.caseDefinitionKey,
|
|
105
|
-
processDefinitionKey: submission.processDefinitionKey
|
|
106
|
-
}
|
|
107
|
-
];
|
|
76
|
+
properties.typeMapping = submission.productAanvraagTypes;
|
|
108
77
|
this.propertiesSave.emit({ properties, name: submission.connectorName });
|
|
109
78
|
}
|
|
110
79
|
onDelete() {
|
|
111
80
|
this.connectorDelete.emit();
|
|
112
81
|
}
|
|
113
82
|
openFormDefinitionSubscription() {
|
|
114
|
-
this.formDefinitionSubscription = combineLatest([
|
|
115
|
-
.
|
|
83
|
+
this.formDefinitionSubscription = combineLatest([
|
|
84
|
+
this.formDefinition$,
|
|
85
|
+
this.translateService.stream('key'),
|
|
86
|
+
]).subscribe(([form]) => {
|
|
116
87
|
const translatedForm = this.formTranslationService.translateForm(form);
|
|
117
88
|
this.refreshForm({ form: translatedForm });
|
|
118
89
|
});
|
|
@@ -131,34 +102,43 @@ export class EditProductAanvragenConnectorComponent {
|
|
|
131
102
|
submission.openNotificationsBaseUrl = properties.openNotificatieProperties.baseUrl;
|
|
132
103
|
submission.openNotificationsClientId = properties.openNotificatieProperties.clientId;
|
|
133
104
|
submission.openNotificationsSecret = properties.openNotificatieProperties.secret;
|
|
134
|
-
submission.openNotificationsCallbackBaseUrl =
|
|
105
|
+
submission.openNotificationsCallbackBaseUrl =
|
|
106
|
+
properties.openNotificatieProperties.callbackBaseUrl;
|
|
135
107
|
submission.applicantRoleTypeUrl = properties.aanvragerRolTypeUrl;
|
|
136
|
-
submission.
|
|
137
|
-
submission.caseDefinitionKey = properties.typeMapping[0].caseDefinitionKey;
|
|
138
|
-
submission.processDefinitionKey = properties.typeMapping[0].processDefinitionKey;
|
|
108
|
+
submission.productAanvraagTypes = properties.typeMapping;
|
|
139
109
|
submission.connectorName = this.defaultName;
|
|
140
110
|
this.refreshForm({ submission: { data: submission } });
|
|
141
111
|
}
|
|
142
112
|
refreshForm(refreshValue) {
|
|
143
113
|
this.formRefresh$.next(refreshValue);
|
|
144
114
|
}
|
|
145
|
-
|
|
146
|
-
|
|
115
|
+
loadDefinitions() {
|
|
116
|
+
let documentDefinitions;
|
|
117
|
+
this.documentService
|
|
118
|
+
.getAllDefinitions()
|
|
119
|
+
.pipe(tap(resDocumentDefinitions => (documentDefinitions = resDocumentDefinitions.content)), switchMap(resDocumentDefinitions => combineLatest(resDocumentDefinitions.content.map(definition => this.documentService.findProcessDocumentDefinitions(definition.id.name)))), tap(res => {
|
|
147
120
|
var _a;
|
|
148
|
-
this.
|
|
149
|
-
|
|
150
|
-
|
|
121
|
+
this.caseDefinitionOptions = documentDefinitions.map(documentDefinition => {
|
|
122
|
+
return { label: documentDefinition.id.name, value: documentDefinition.id.name };
|
|
123
|
+
});
|
|
124
|
+
documentDefinitions.forEach((documentDefinition, index) => {
|
|
125
|
+
this.processDocumentDefinitionOptions[documentDefinition.id.name] = res[index].map(processDocumentDefinition => processDocumentDefinition.id.processDefinitionKey);
|
|
126
|
+
});
|
|
127
|
+
window['productRequestDefinitions'] = this.processDocumentDefinitionOptions;
|
|
128
|
+
const definitionWithCaseDefinitionOptions = this.formMappingService.mapComponents(this.formDefinition$.getValue(), this.mapCaseDefinitionKeyComponent);
|
|
129
|
+
this.formDefinition$.next(definitionWithCaseDefinitionOptions);
|
|
151
130
|
if ((_a = this.properties) === null || _a === void 0 ? void 0 : _a.aanvragerRolTypeUrl) {
|
|
152
131
|
this.prefillForm();
|
|
153
132
|
}
|
|
154
|
-
})
|
|
133
|
+
}))
|
|
134
|
+
.subscribe();
|
|
155
135
|
}
|
|
156
136
|
}
|
|
157
137
|
EditProductAanvragenConnectorComponent.decorators = [
|
|
158
138
|
{ type: Component, args: [{
|
|
159
139
|
selector: 'valtimo-edit-product-aanvragen-connector',
|
|
160
|
-
template: "<!--\n ~ Copyright 2015-2021 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<div\n *ngIf=\"translatedFormDefinition$ | async as definition\"\n class=\"edit-product-request\"\n [ngClass]=\"{'has-delete': showDeleteButton}\"\n>\n <valtimo-form-io\n [form]=\"definition\"\n [formRefresh$]=\"formRefresh$\"\n [
|
|
161
|
-
styles: ["/*!\n * Copyright 2015-2021 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 */.edit-product-request ::ng-deep .btn-wizard-nav-cancel{display:none}.edit-product-request ::ng-deep .list-inline{display:flex;flex-direction:row;justify-content:flex-end}.edit-product-request.has-delete ::ng-deep .list-inline{margin-bottom:-30px}.edit-product-request .btn-danger{position:relative}"]
|
|
140
|
+
template: "<!--\n ~ Copyright 2015-2021 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<div\n *ngIf=\"translatedFormDefinition$ | async as definition\"\n class=\"edit-product-request\"\n [ngClass]=\"{'has-delete': showDeleteButton}\"\n>\n <valtimo-form-io\n [form]=\"definition\"\n [formRefresh$]=\"formRefresh$\"\n [options]=\"options\"\n (submit)=\"onSubmit($event)\"\n >\n </valtimo-form-io>\n\n <button *ngIf=\"showDeleteButton\" class=\"btn btn-danger btn-space\" (click)=\"onDelete()\">\n <i class=\"icon mdi mdi-delete mr-1\"></i>\n {{ 'connectorManagement.remove' | translate }}\n </button>\n</div>\n",
|
|
141
|
+
styles: ["/*!\n * Copyright 2015-2021 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 */.edit-product-request ::ng-deep .btn-wizard-nav-cancel{display:none}.edit-product-request ::ng-deep .list-inline{display:flex;flex-direction:row;justify-content:flex-end}.edit-product-request ::ng-deep .col-sm-2{flex:0 0 25%;max-width:25%}.edit-product-request ::ng-deep .edit-grid-component>label{display:none}.edit-product-request.has-delete ::ng-deep .list-inline{margin-bottom:-30px}.edit-product-request .btn-danger{position:relative}"]
|
|
162
142
|
},] }
|
|
163
143
|
];
|
|
164
144
|
EditProductAanvragenConnectorComponent.ctorParameters = () => [
|
|
@@ -174,4 +154,4 @@ EditProductAanvragenConnectorComponent.propDecorators = {
|
|
|
174
154
|
propertiesSave: [{ type: Output }],
|
|
175
155
|
connectorDelete: [{ type: Output }]
|
|
176
156
|
};
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1wcm9kdWN0LWFhbnZyYWdlbi1jb25uZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb25uZWN0b3ItbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdC1wcm9kdWN0LWFhbnZyYWdlbi1jb25uZWN0b3IvZWRpdC1wcm9kdWN0LWFhbnZyYWdlbi1jb25uZWN0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDMUYsT0FBTyxFQUFDLHNCQUFzQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFJM0UsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFPbkMsTUFBTSxPQUFPLHNDQUFzQztJQXdCakQsWUFDbUIsc0JBQThDLEVBQzlDLGtCQUFzQyxFQUN0QyxlQUFnQyxFQUNoQyxnQkFBa0M7UUFIbEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JB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QkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUU3RyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBRWpFLFVBQUksSUFBSSxDQUFDLFVBQVUsMENBQUUsbUJBQW1CLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBdExGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMENBQTBDO2dCQUNwRCxpd0NBQWdFOzthQUVqRTs7O1lBZk8sc0JBQXNCO1lBQUUsa0JBQWtCO1lBQzFDLGVBQWU7WUFPZixnQkFBZ0I7Ozt5QkFTckIsS0FBSzswQkFDTCxLQUFLOytCQUNMLEtBQUs7NkJBRUwsTUFBTTs4QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjEgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtlZGl0UHJvZHVjdEFhbnZyYWdlbkNvbm5lY3RvckZvcm19IGZyb20gJy4vZWRpdC1wcm9kdWN0LWFhbnZyYWdlbi1jb25uZWN0b3IuZm9ybSc7XG5pbXBvcnQge0Zvcm1UcmFuc2xhdGlvblNlcnZpY2UsIEZvcm1NYXBwaW5nU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZm9ybSc7XG5pbXBvcnQge0RvY3VtZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtFeHRlbmRlZENvbXBvbmVudFNjaGVtYX0gZnJvbSAnZm9ybWlvanMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0RvY3VtZW50RGVmaW5pdGlvbnMsIFByb2Nlc3NEb2N1bWVudERlZmluaXRpb24sIENvbm5lY3RvclByb3BlcnRpZXN9IGZyb20gJ0B2YWx0aW1vL2NvbnRyYWN0JztcbmltcG9ydCB7Rm9ybWlvRm9ybSwgRm9ybWlvUmVmcmVzaFZhbHVlfSBmcm9tICdhbmd1bGFyLWZvcm1pbyc7XG5pbXBvcnQge0Zvcm1pb09wdGlvbnN9IGZyb20gJ2FuZ3VsYXItZm9ybWlvL2Zvcm1pby5jb21tb24nO1xuaW1wb3J0IHtjbG9uZURlZXB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1lZGl0LXByb2R1Y3QtYWFudnJhZ2VuLWNvbm5lY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LXByb2R1Y3QtYWFudnJhZ2VuLWNvbm5lY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VkaXQtcHJvZHVjdC1hYW52cmFnZW4tY29ubmVjdG9yLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRWRpdFByb2R1Y3RBYW52cmFnZW5Db25uZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHByb3BlcnRpZXM6IENvbm5lY3RvclByb3BlcnRpZXM7XG4gIEBJbnB1dCgpIGRlZmF1bHROYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93RGVsZXRlQnV0dG9uID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHByb3BlcnRpZXNTYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx7cHJvcGVydGllczogQ29ubmVjdG9yUHJvcGVydGllcywgbmFtZTogc3RyaW5nfT4oKTtcbiAgQE91dHB1dCgpIGNvbm5lY3RvckRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGZvcm1SZWZyZXNoJCA9IG5ldyBTdWJqZWN0PEZvcm1pb1JlZnJlc2hWYWx1ZT4oKTtcbiAgZm9ybURlZmluaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtaW9Gb3JtPih1bmRlZmluZWQpO1xuICB0cmFuc2xhdGVkRm9ybURlZmluaXRpb24kID0gdGhpcy5mb3JtRGVmaW5pdGlvbiQucGlwZShcbiAgICBtYXAoKGRlZmluaXRpb24pID0+IHRoaXMuZm9ybVRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVGb3JtKGRlZmluaXRpb24pKVxuICApO1xuICBjYXNlRGVmaW5pdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIGRvY3VtZW50RGVmaW5pdGlvbnM6IERvY3VtZW50RGVmaW5pdGlvbnM7XG4gIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uW107XG5cbiAgcmVhZG9ubHkgb3B0aW9uczogRm9ybWlvT3B0aW9ucyA9IHtcbiAgICBkaXNhYmxlQWxlcnRzOiB0cnVlXG4gIH07XG5cbiAgcHJpdmF0ZSBmb3JtRGVmaW5pdGlvblN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtVHJhbnNsYXRpb25TZXJ2aWNlOiBGb3JtVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybU1hcHBpbmdTZXJ2aWNlOiBGb3JtTWFwcGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5Gb3JtRGVmaW5pdGlvblN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMuZm9ybURlZmluaXRpb24kLm5leHQoZWRpdFByb2R1Y3RBYW52cmFnZW5Db25uZWN0b3JGb3JtKTtcbiAgICB0aGlzLmxvYWREb2N1bWVudERlZmluaXRpb25zKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1EZWZpbml0aW9uU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMudHJhbnNsYXRlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgb25DaGFuZ2Uob2JqZWN0OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBjYXNlRGVmaW5pdGlvbktleVZhbHVlID0gb2JqZWN0Py5kYXRhPy5jYXNlRGVmaW5pdGlvbktleTtcbiAgICBjb25zdCBjdXJyZW50Q2FzZURlZmluaXRpb25JZCA9IHRoaXMuY2FzZURlZmluaXRpb25JZCQuZ2V0VmFsdWUoKTtcblxuICAgIGlmIChjYXNlRGVmaW5pdGlvbktleVZhbHVlICYmIGNhc2VEZWZpbml0aW9uS2V5VmFsdWUgIT09IGN1cnJlbnRDYXNlRGVmaW5pdGlvbklkKSB7XG4gICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5maW5kUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMoY2FzZURlZmluaXRpb25LZXlWYWx1ZSkuc3Vic2NyaWJlKChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zID0gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnM7XG4gICAgICAgIGNvbnN0IGRlZmluaXRpb25XaXRoUHJvY2Vzc0RlZmluaXRpb25LZXlWYWx1ZXMgPVxuICAgICAgICAgIHRoaXMuZm9ybU1hcHBpbmdTZXJ2aWNlLm1hcENvbXBvbmVudHModGhpcy5mb3JtRGVmaW5pdGlvbiQuZ2V0VmFsdWUoKSwgdGhpcy5tYXBQcm9jZXNzRGVmaW5pdGlvbktleUNvbXBvbmVudCk7XG5cbiAgICAgICAgdGhpcy5mb3JtRGVmaW5pdGlvbiQubmV4dChkZWZpbml0aW9uV2l0aFByb2Nlc3NEZWZpbml0aW9uS2V5VmFsdWVzKTtcbiAgICAgICAgdGhpcy5jYXNlRGVmaW5pdGlvbklkJC5uZXh0KGNhc2VEZWZpbml0aW9uS2V5VmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25TdWJtaXQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHN1Ym1pc3Npb24gPSBldmVudC5kYXRhO1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBjbG9uZURlZXAodGhpcy5wcm9wZXJ0aWVzKTtcblxuICAgIHByb3BlcnRpZXMub2JqZWN0c0FwaVByb3BlcnRpZXMub2JqZWN0c0FwaS51cmwgPSBzdWJtaXNzaW9uLm9iamVjdHNBcGlVcmw7XG4gICAgcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RzQXBpLnRva2VuID0gc3VibWlzc2lvbi5vYmplY3RzQXBpVG9rZW47XG4gICAgcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RzVHlwZUFwaS51cmwgPSBzdWJtaXNzaW9uLm9iamVjdFR5cGVzQXBpVXJsO1xuICAgIHByb3BlcnRpZXMub2JqZWN0c0FwaVByb3BlcnRpZXMub2JqZWN0c1R5cGVBcGkudG9rZW4gPSBzdWJtaXNzaW9uLm9iamVjdFR5cGVzQXBpVG9rZW47XG5cbiAgICBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdFR5cGUubmFtZSA9IHN1Ym1pc3Npb24ub2JqZWN0VHlwZU5hbWU7XG4gICAgcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RUeXBlLnRpdGxlID0gc3VibWlzc2lvbi5vYmplY3RUeXBlVGl0bGU7XG4gICAgcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RUeXBlLnVybCA9IHN1Ym1pc3Npb24ub2JqZWN0VHlwZVVybDtcbiAgICBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdFR5cGUudHlwZVZlcnNpb24gPSBzdWJtaXNzaW9uLm9iamVjdFR5cGVWZXJzaW9uO1xuXG4gICAgcHJvcGVydGllcy5vcGVuTm90aWZpY2F0aWVQcm9wZXJ0aWVzLmJhc2VVcmwgPSBzdWJtaXNzaW9uLm9wZW5Ob3RpZmljYXRpb25zQmFzZVVybDtcbiAgICBwcm9wZXJ0aWVzLm9wZW5Ob3RpZmljYXRpZVByb3BlcnRpZXMuY2xpZW50SWQgPSBzdWJtaXNzaW9uLm9wZW5Ob3RpZmljYXRpb25zQ2xpZW50SWQ7XG4gICAgcHJvcGVydGllcy5vcGVuTm90aWZpY2F0aWVQcm9wZXJ0aWVzLnNlY3JldCA9IHN1Ym1pc3Npb24ub3Blbk5vdGlmaWNhdGlvbnNTZWNyZXQ7XG4gICAgcHJvcGVydGllcy5vcGVuTm90aWZpY2F0aWVQcm9wZXJ0aWVzLmNhbGxiYWNrQmFzZVVybCA9IHN1Ym1pc3Npb24ub3Blbk5vdGlmaWNhdGlvbnNDYWxsYmFja0Jhc2VVcmw7XG5cbiAgICBwcm9wZXJ0aWVzLmFhbnZyYWdlclJvbFR5cGVVcmwgPSBzdWJtaXNzaW9uLmFwcGxpY2FudFJvbGVUeXBlVXJsO1xuXG4gICAgcHJvcGVydGllcy50eXBlTWFwcGluZyA9IFtcbiAgICAgIHtcbiAgICAgICAgcHJvZHVjdEFhbnZyYWFnVHlwZTogc3VibWlzc2lvbi5wcm9kdWN0QWFudnJhYWdUeXBlLFxuICAgICAgICBjYXNlRGVmaW5pdGlvbktleTogc3VibWlzc2lvbi5jYXNlRGVmaW5pdGlvbktleSxcbiAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25LZXk6IHN1Ym1pc3Npb24ucHJvY2Vzc0RlZmluaXRpb25LZXlcbiAgICAgIH1cbiAgICBdO1xuXG4gICAgdGhpcy5wcm9wZXJ0aWVzU2F2ZS5lbWl0KHtwcm9wZXJ0aWVzLCBuYW1lOiBzdWJtaXNzaW9uLmNvbm5lY3Rvck5hbWV9KTtcbiAgfVxuXG4gIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgIHRoaXMuY29ubmVjdG9yRGVsZXRlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkZvcm1EZWZpbml0aW9uU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybURlZmluaXRpb25TdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmZvcm1EZWZpbml0aW9uJCwgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyldKVxuICAgICAgLnN1YnNjcmliZSgoW2Zvcm1dKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRGb3JtID0gdGhpcy5mb3JtVHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUZvcm0oZm9ybSk7XG4gICAgICAgIHRoaXMucmVmcmVzaEZvcm0oe2Zvcm06IHRyYW5zbGF0ZWRGb3JtfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlZmlsbEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IGNsb25lRGVlcCh0aGlzLnByb3BlcnRpZXMpO1xuICAgIGNvbnN0IHN1Ym1pc3Npb246IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge307XG5cbiAgICBzdWJtaXNzaW9uLm9iamVjdHNBcGlVcmwgPSBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdHNBcGkudXJsO1xuICAgIHN1Ym1pc3Npb24ub2JqZWN0c0FwaVRva2VuID0gcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RzQXBpLnRva2VuO1xuICAgIHN1Ym1pc3Npb24ub2JqZWN0VHlwZXNBcGlVcmwgPSBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdHNUeXBlQXBpLnVybDtcbiAgICBzdWJtaXNzaW9uLm9iamVjdFR5cGVzQXBpVG9rZW4gPSBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdHNUeXBlQXBpLnRva2VuO1xuXG4gICAgc3VibWlzc2lvbi5vYmplY3RUeXBlTmFtZSA9IHByb3BlcnRpZXMub2JqZWN0c0FwaVByb3BlcnRpZXMub2JqZWN0VHlwZS5uYW1lO1xuICAgIHN1Ym1pc3Npb24ub2JqZWN0VHlwZVRpdGxlID0gcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RUeXBlLnRpdGxlO1xuICAgIHN1Ym1pc3Npb24ub2JqZWN0VHlwZVVybCA9IHByb3BlcnRpZXMub2JqZWN0c0FwaVByb3BlcnRpZXMub2JqZWN0VHlwZS51cmw7XG4gICAgc3VibWlzc2lvbi5vYmplY3RUeXBlVmVyc2lvbiA9IHByb3BlcnRpZXMub2JqZWN0c0FwaVByb3BlcnRpZXMub2JqZWN0VHlwZS50eXBlVmVyc2lvbjtcblxuICAgIHN1Ym1pc3Npb24ub3Blbk5vdGlmaWNhdGlvbnNCYXNlVXJsID0gcHJvcGVydGllcy5vcGVuTm90aWZpY2F0aWVQcm9wZXJ0aWVzLmJhc2VVcmw7XG4gICAgc3VibWlzc2lvbi5vcGVuTm90aWZpY2F0aW9uc0NsaWVudElkID0gcHJvcGVydGllcy5vcGVuTm90aWZpY2F0aWVQcm9wZXJ0aWVzLmNsaWVudElkO1xuICAgIHN1Ym1pc3Npb24ub3Blbk5vdGlmaWNhdGlvbnNTZWNyZXQgPSBwcm9wZXJ0aWVzLm9wZW5Ob3RpZmljYXRpZVByb3BlcnRpZXMuc2VjcmV0O1xuICAgIHN1Ym1pc3Npb24ub3Blbk5vdGlmaWNhdGlvbnNDYWxsYmFja0Jhc2VVcmwgPSBwcm9wZXJ0aWVzLm9wZW5Ob3RpZmljYXRpZVByb3BlcnRpZXMuY2FsbGJhY2tCYXNlVXJsO1xuXG4gICAgc3VibWlzc2lvbi5hcHBsaWNhbnRSb2xlVHlwZVVybCA9IHByb3BlcnRpZXMuYWFudnJhZ2VyUm9sVHlwZVVybDtcblxuICAgIHN1Ym1pc3Npb24ucHJvZHVjdEFhbnZyYWFnVHlwZSA9IHByb3BlcnRpZXMudHlwZU1hcHBpbmdbMF0ucHJvZHVjdEFhbnZyYWFnVHlwZTtcbiAgICBzdWJtaXNzaW9uLmNhc2VEZWZpbml0aW9uS2V5ID0gcHJvcGVydGllcy50eXBlTWFwcGluZ1swXS5jYXNlRGVmaW5pdGlvbktleTtcbiAgICBzdWJtaXNzaW9uLnByb2Nlc3NEZWZpbml0aW9uS2V5ID0gcHJvcGVydGllcy50eXBlTWFwcGluZ1swXS5wcm9jZXNzRGVmaW5pdGlvbktleTtcblxuICAgIHN1Ym1pc3Npb24uY29ubmVjdG9yTmFtZSA9IHRoaXMuZGVmYXVsdE5hbWU7XG5cbiAgICB0aGlzLnJlZnJlc2hGb3JtKHtzdWJtaXNzaW9uOiB7ZGF0YTogc3VibWlzc2lvbn19KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwQ2FzZURlZmluaXRpb25LZXlDb21wb25lbnQgPSAoY29tcG9uZW50OiBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSk6IEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hID0+IHtcbiAgICBpZiAoY29tcG9uZW50LmtleSA9PT0gJ2Nhc2VEZWZpbml0aW9uS2V5Jykge1xuICAgICAgY29uc3QgZGVmaW5pdGlvbk9wdGlvbnMgPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbnM/LmNvbnRlbnQubWFwKFxuICAgICAgICAoZGVmaW5pdGlvbikgPT4gKHtsYWJlbDogZGVmaW5pdGlvbi5pZC5uYW1lLCB2YWx1ZTogZGVmaW5pdGlvbi5pZC5uYW1lfSlcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7Li4uY29tcG9uZW50LCBkaXNhYmxlZDogZmFsc2UsIGRhdGE6IHt2YWx1ZXM6IGRlZmluaXRpb25PcHRpb25zfX07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgfVxuXG4gIHByaXZhdGUgbWFwUHJvY2Vzc0RlZmluaXRpb25LZXlDb21wb25lbnQgPSAoY29tcG9uZW50OiBFeHRlbmRlZENvbXBvbmVudFNjaGVtYSk6IEV4dGVuZGVkQ29tcG9uZW50U2NoZW1hID0+IHtcbiAgICBpZiAoY29tcG9uZW50LmtleSA9PT0gJ3Byb2Nlc3NEZWZpbml0aW9uS2V5Jykge1xuICAgICAgY29uc3QgcHJvY2Vzc09wdGlvbnMgPSB0aGlzLnByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLm1hcChcbiAgICAgICAgKGRlZmluaXRpb24pID0+ICh7bGFiZWw6IGRlZmluaXRpb24ucHJvY2Vzc05hbWUsIHZhbHVlOiBkZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5fSlcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLnByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB7Li4uY29tcG9uZW50LCBkaXNhYmxlZDogZmFsc2UsIGRhdGE6IHt2YWx1ZXM6IHByb2Nlc3NPcHRpb25zfX07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gey4uLmNvbXBvbmVudCwgZGlzYWJsZWQ6IHRydWUsIGRhdGE6IHt2YWx1ZXM6IFtdfX07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaEZvcm0ocmVmcmVzaFZhbHVlOiBGb3JtaW9SZWZyZXNoVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1SZWZyZXNoJC5uZXh0KHJlZnJlc2hWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWREb2N1bWVudERlZmluaXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldEFsbERlZmluaXRpb25zKCkuc3Vic2NyaWJlKChkZWZpbml0aW9ucykgPT4ge1xuICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG4gICAgICBjb25zdCBkZWZpbml0aW9uV2l0aENhc2VEZWZpbml0aW9uS2V5VmFsdWVzID1cbiAgICAgICAgdGhpcy5mb3JtTWFwcGluZ1NlcnZpY2UubWFwQ29tcG9uZW50cyh0aGlzLmZvcm1EZWZpbml0aW9uJC5nZXRWYWx1ZSgpLCB0aGlzLm1hcENhc2VEZWZpbml0aW9uS2V5Q29tcG9uZW50KTtcblxuICAgICAgdGhpcy5mb3JtRGVmaW5pdGlvbiQubmV4dChkZWZpbml0aW9uV2l0aENhc2VEZWZpbml0aW9uS2V5VmFsdWVzKTtcblxuICAgICAgaWYgKHRoaXMucHJvcGVydGllcz8uYWFudnJhZ2VyUm9sVHlwZVVybCkge1xuICAgICAgICB0aGlzLnByZWZpbGxGb3JtKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1wcm9kdWN0LWFhbnZyYWdlbi1jb25uZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii90bXAvamVua2lucy1hNzM0YWFkYy93b3Jrc3BhY2UvVmFsdGltb18tX0FuZ3VsYXJfTGlicmFyaWVzX21haW4vcHJvamVjdHMvdmFsdGltby9jb25uZWN0b3ItbWFuYWdlbWVudC9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lZGl0LXByb2R1Y3QtYWFudnJhZ2VuLWNvbm5lY3Rvci9lZGl0LXByb2R1Y3QtYWFudnJhZ2VuLWNvbm5lY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRixPQUFPLEVBQUMsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUNMLGVBQWUsR0FJaEIsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFJM0UsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQU9uRCxNQUFNLE9BQU8sc0NBQXNDO0lBdUJqRCxZQUNtQixzQkFBOEMsRUFDOUMsa0JBQXNDLEVBQ3RDLGVBQWdDLEVBQ2hDLGdCQUFrQztRQUhsQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHVCQUFrQixHQUFs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QyxFQUFFLENBQUMsb0JBQW9CLENBQy9FLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQztZQUU1RSxNQUFNLG1DQUFtQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEVBQy9CLElBQUksQ0FBQyw2QkFBNkIsQ0FDbkMsQ0FBQztZQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFFL0QsVUFBSSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxtQkFBbUIsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BCO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzs7WUEzS0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwwQ0FBMEM7Z0JBQ3BELCtyQ0FBZ0U7O2FBRWpFOzs7WUFwQjJCLHNCQUFzQjtZQUExQyxrQkFBa0I7WUFFeEIsZUFBZTtZQVdULGdCQUFnQjs7O3lCQVNyQixLQUFLOzBCQUNMLEtBQUs7K0JBQ0wsS0FBSzs2QkFFTCxNQUFNOzhCQUNOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMSBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2VkaXRQcm9kdWN0QWFudnJhZ2VuQ29ubmVjdG9yRm9ybX0gZnJvbSAnLi9lZGl0LXByb2R1Y3QtYWFudnJhZ2VuLWNvbm5lY3Rvci5mb3JtJztcbmltcG9ydCB7Rm9ybU1hcHBpbmdTZXJ2aWNlLCBGb3JtVHJhbnNsYXRpb25TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9mb3JtJztcbmltcG9ydCB7XG4gIERvY3VtZW50U2VydmljZSxcbiAgRG9jdW1lbnREZWZpbml0aW9uLFxuICBEb2N1bWVudERlZmluaXRpb25zLFxuICBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLFxufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge0V4dGVuZGVkQ29tcG9uZW50U2NoZW1hfSBmcm9tICdmb3JtaW9qcyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q29ubmVjdG9yUHJvcGVydGllc30gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7Rm9ybWlvRm9ybSwgRm9ybWlvUmVmcmVzaFZhbHVlfSBmcm9tICdhbmd1bGFyLWZvcm1pbyc7XG5pbXBvcnQge0Zvcm1pb09wdGlvbnN9IGZyb20gJ2FuZ3VsYXItZm9ybWlvL2Zvcm1pby5jb21tb24nO1xuaW1wb3J0IHtjbG9uZURlZXB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHttYXAsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZWRpdC1wcm9kdWN0LWFhbnZyYWdlbi1jb25uZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1wcm9kdWN0LWFhbnZyYWdlbi1jb25uZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LXByb2R1Y3QtYWFudnJhZ2VuLWNvbm5lY3Rvci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBFZGl0UHJvZHVjdEFhbnZyYWdlbkNvbm5lY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcGVydGllczogQ29ubmVjdG9yUHJvcGVydGllcztcbiAgQElucHV0KCkgZGVmYXVsdE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dEZWxldGVCdXR0b24gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgcHJvcGVydGllc1NhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHtwcm9wZXJ0aWVzOiBDb25uZWN0b3JQcm9wZXJ0aWVzOyBuYW1lOiBzdHJpbmd9PigpO1xuICBAT3V0cHV0KCkgY29ubmVjdG9yRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgZm9ybVJlZnJlc2gkID0gbmV3IFN1YmplY3Q8Rm9ybWlvUmVmcmVzaFZhbHVlPigpO1xuICBmb3JtRGVmaW5pdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1pb0Zvcm0+KHVuZGVmaW5lZCk7XG4gIHRyYW5zbGF0ZWRGb3JtRGVmaW5pdGlvbiQgPSB0aGlzLmZvcm1EZWZpbml0aW9uJC5waXBlKFxuICAgIG1hcChkZWZpbml0aW9uID0+IHRoaXMuZm9ybVRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVGb3JtKGRlZmluaXRpb24pKVxuICApO1xuICBjYXNlRGVmaW5pdGlvbk9wdGlvbnM6IEFycmF5PHtsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nfT4gPSBbXTtcbiAgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbk9wdGlvbnM6IHtbY2FzZURlZmluaXRpb25JZDogc3RyaW5nXTogQXJyYXk8c3RyaW5nPn0gPSB7fTtcblxuICByZWFkb25seSBvcHRpb25zOiBGb3JtaW9PcHRpb25zID0ge1xuICAgIGRpc2FibGVBbGVydHM6IHRydWUsXG4gIH07XG5cbiAgcHJpdmF0ZSBmb3JtRGVmaW5pdGlvblN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtVHJhbnNsYXRpb25TZXJ2aWNlOiBGb3JtVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybU1hcHBpbmdTZXJ2aWNlOiBGb3JtTWFwcGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHdpbmRvd1sncHJvZHVjdFJlcXVlc3REZWZpbml0aW9ucyddID0ge307XG4gICAgdGhpcy5vcGVuRm9ybURlZmluaXRpb25TdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLmZvcm1EZWZpbml0aW9uJC5uZXh0KGVkaXRQcm9kdWN0QWFudnJhZ2VuQ29ubmVjdG9yRm9ybSk7XG4gICAgdGhpcy5sb2FkRGVmaW5pdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybURlZmluaXRpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy50cmFuc2xhdGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvblN1Ym1pdChldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3Qgc3VibWlzc2lvbiA9IGV2ZW50LmRhdGE7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IGNsb25lRGVlcCh0aGlzLnByb3BlcnRpZXMpO1xuXG4gICAgcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RzQXBpLnVybCA9IHN1Ym1pc3Npb24ub2JqZWN0c0FwaVVybDtcbiAgICBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdHNBcGkudG9rZW4gPSBzdWJtaXNzaW9uLm9iamVjdHNBcGlUb2tlbjtcbiAgICBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdHNUeXBlQXBpLnVybCA9IHN1Ym1pc3Npb24ub2JqZWN0VHlwZXNBcGlVcmw7XG4gICAgcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RzVHlwZUFwaS50b2tlbiA9IHN1Ym1pc3Npb24ub2JqZWN0VHlwZXNBcGlUb2tlbjtcblxuICAgIHByb3BlcnRpZXMub2JqZWN0c0FwaVByb3BlcnRpZXMub2JqZWN0VHlwZS5uYW1lID0gc3VibWlzc2lvbi5vYmplY3RUeXBlTmFtZTtcbiAgICBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdFR5cGUudGl0bGUgPSBzdWJtaXNzaW9uLm9iamVjdFR5cGVUaXRsZTtcbiAgICBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdFR5cGUudXJsID0gc3VibWlzc2lvbi5vYmplY3RUeXBlVXJsO1xuICAgIHByb3BlcnRpZXMub2JqZWN0c0FwaVByb3BlcnRpZXMub2JqZWN0VHlwZS50eXBlVmVyc2lvbiA9IHN1Ym1pc3Npb24ub2JqZWN0VHlwZVZlcnNpb247XG5cbiAgICBwcm9wZXJ0aWVzLm9wZW5Ob3RpZmljYXRpZVByb3BlcnRpZXMuYmFzZVVybCA9IHN1Ym1pc3Npb24ub3Blbk5vdGlmaWNhdGlvbnNCYXNlVXJsO1xuICAgIHByb3BlcnRpZXMub3Blbk5vdGlmaWNhdGllUHJvcGVydGllcy5jbGllbnRJZCA9IHN1Ym1pc3Npb24ub3Blbk5vdGlmaWNhdGlvbnNDbGllbnRJZDtcbiAgICBwcm9wZXJ0aWVzLm9wZW5Ob3RpZmljYXRpZVByb3BlcnRpZXMuc2VjcmV0ID0gc3VibWlzc2lvbi5vcGVuTm90aWZpY2F0aW9uc1NlY3JldDtcbiAgICBwcm9wZXJ0aWVzLm9wZW5Ob3RpZmljYXRpZVByb3BlcnRpZXMuY2FsbGJhY2tCYXNlVXJsID1cbiAgICAgIHN1Ym1pc3Npb24ub3Blbk5vdGlmaWNhdGlvbnNDYWxsYmFja0Jhc2VVcmw7XG5cbiAgICBwcm9wZXJ0aWVzLmFhbnZyYWdlclJvbFR5cGVVcmwgPSBzdWJtaXNzaW9uLmFwcGxpY2FudFJvbGVUeXBlVXJsO1xuXG4gICAgcHJvcGVydGllcy50eXBlTWFwcGluZyA9IHN1Ym1pc3Npb24ucHJvZHVjdEFhbnZyYWFnVHlwZXM7XG5cbiAgICB0aGlzLnByb3BlcnRpZXNTYXZlLmVtaXQoe3Byb3BlcnRpZXMsIG5hbWU6IHN1Ym1pc3Npb24uY29ubmVjdG9yTmFtZX0pO1xuICB9XG5cbiAgb25EZWxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0b3JEZWxldGUuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRm9ybURlZmluaXRpb25TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtRGVmaW5pdGlvblN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mb3JtRGVmaW5pdGlvbiQsXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICBdKS5zdWJzY3JpYmUoKFtmb3JtXSkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNsYXRlZEZvcm0gPSB0aGlzLmZvcm1UcmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlRm9ybShmb3JtKTtcbiAgICAgIHRoaXMucmVmcmVzaEZvcm0oe2Zvcm06IHRyYW5zbGF0ZWRGb3JtfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByZWZpbGxGb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBjbG9uZURlZXAodGhpcy5wcm9wZXJ0aWVzKTtcbiAgICBjb25zdCBzdWJtaXNzaW9uOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuXG4gICAgc3VibWlzc2lvbi5vYmplY3RzQXBpVXJsID0gcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RzQXBpLnVybDtcbiAgICBzdWJtaXNzaW9uLm9iamVjdHNBcGlUb2tlbiA9IHByb3BlcnRpZXMub2JqZWN0c0FwaVByb3BlcnRpZXMub2JqZWN0c0FwaS50b2tlbjtcbiAgICBzdWJtaXNzaW9uLm9iamVjdFR5cGVzQXBpVXJsID0gcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RzVHlwZUFwaS51cmw7XG4gICAgc3VibWlzc2lvbi5vYmplY3RUeXBlc0FwaVRva2VuID0gcHJvcGVydGllcy5vYmplY3RzQXBpUHJvcGVydGllcy5vYmplY3RzVHlwZUFwaS50b2tlbjtcblxuICAgIHN1Ym1pc3Npb24ub2JqZWN0VHlwZU5hbWUgPSBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdFR5cGUubmFtZTtcbiAgICBzdWJtaXNzaW9uLm9iamVjdFR5cGVUaXRsZSA9IHByb3BlcnRpZXMub2JqZWN0c0FwaVByb3BlcnRpZXMub2JqZWN0VHlwZS50aXRsZTtcbiAgICBzdWJtaXNzaW9uLm9iamVjdFR5cGVVcmwgPSBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdFR5cGUudXJsO1xuICAgIHN1Ym1pc3Npb24ub2JqZWN0VHlwZVZlcnNpb24gPSBwcm9wZXJ0aWVzLm9iamVjdHNBcGlQcm9wZXJ0aWVzLm9iamVjdFR5cGUudHlwZVZlcnNpb247XG5cbiAgICBzdWJtaXNzaW9uLm9wZW5Ob3RpZmljYXRpb25zQmFzZVVybCA9IHByb3BlcnRpZXMub3Blbk5vdGlmaWNhdGllUHJvcGVydGllcy5iYXNlVXJsO1xuICAgIHN1Ym1pc3Npb24ub3Blbk5vdGlmaWNhdGlvbnNDbGllbnRJZCA9IHByb3BlcnRpZXMub3Blbk5vdGlmaWNhdGllUHJvcGVydGllcy5jbGllbnRJZDtcbiAgICBzdWJtaXNzaW9uLm9wZW5Ob3RpZmljYXRpb25zU2VjcmV0ID0gcHJvcGVydGllcy5vcGVuTm90aWZpY2F0aWVQcm9wZXJ0aWVzLnNlY3JldDtcbiAgICBzdWJtaXNzaW9uLm9wZW5Ob3RpZmljYXRpb25zQ2FsbGJhY2tCYXNlVXJsID1cbiAgICAgIHByb3BlcnRpZXMub3Blbk5vdGlmaWNhdGllUHJvcGVydGllcy5jYWxsYmFja0Jhc2VVcmw7XG5cbiAgICBzdWJtaXNzaW9uLmFwcGxpY2FudFJvbGVUeXBlVXJsID0gcHJvcGVydGllcy5hYW52cmFnZXJSb2xUeXBlVXJsO1xuXG4gICAgc3VibWlzc2lvbi5wcm9kdWN0QWFudnJhYWdUeXBlcyA9IHByb3BlcnRpZXMudHlwZU1hcHBpbmc7XG5cbiAgICBzdWJtaXNzaW9uLmNvbm5lY3Rvck5hbWUgPSB0aGlzLmRlZmF1bHROYW1lO1xuXG4gICAgdGhpcy5yZWZyZXNoRm9ybSh7c3VibWlzc2lvbjoge2RhdGE6IHN1Ym1pc3Npb259fSk7XG4gIH1cblxuICBwcml2YXRlIG1hcENhc2VEZWZpbml0aW9uS2V5Q29tcG9uZW50ID0gKFxuICAgIGNvbXBvbmVudDogRXh0ZW5kZWRDb21wb25lbnRTY2hlbWFcbiAgKTogRXh0ZW5kZWRDb21wb25lbnRTY2hlbWEgPT4ge1xuICAgIGlmIChjb21wb25lbnQua2V5ID09PSAnY2FzZURlZmluaXRpb25LZXknKSB7XG4gICAgICByZXR1cm4gey4uLmNvbXBvbmVudCwgZGlzYWJsZWQ6IGZhbHNlLCBkYXRhOiB7dmFsdWVzOiB0aGlzLmNhc2VEZWZpbml0aW9uT3B0aW9uc319O1xuICAgIH1cblxuICAgIHJldHVybiBjb21wb25lbnQ7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWZyZXNoRm9ybShyZWZyZXNoVmFsdWU6IEZvcm1pb1JlZnJlc2hWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVJlZnJlc2gkLm5leHQocmVmcmVzaFZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZERlZmluaXRpb25zKCk6IHZvaWQge1xuICAgIGxldCBkb2N1bWVudERlZmluaXRpb25zOiBBcnJheTxEb2N1bWVudERlZmluaXRpb24+O1xuXG4gICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcbiAgICAgIC5nZXRBbGxEZWZpbml0aW9ucygpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHJlc0RvY3VtZW50RGVmaW5pdGlvbnMgPT4gKGRvY3VtZW50RGVmaW5pdGlvbnMgPSByZXNEb2N1bWVudERlZmluaXRpb25zLmNvbnRlbnQpKSxcbiAgICAgICAgc3dpdGNoTWFwKHJlc0RvY3VtZW50RGVmaW5pdGlvbnMgPT5cbiAgICAgICAgICBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgICAgcmVzRG9jdW1lbnREZWZpbml0aW9ucy5jb250ZW50Lm1hcChkZWZpbml0aW9uID0+XG4gICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmZpbmRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyhkZWZpbml0aW9uLmlkLm5hbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0YXAocmVzID0+IHtcbiAgICAgICAgICB0aGlzLmNhc2VEZWZpbml0aW9uT3B0aW9ucyA9IGRvY3VtZW50RGVmaW5pdGlvbnMubWFwKGRvY3VtZW50RGVmaW5pdGlvbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge2xhYmVsOiBkb2N1bWVudERlZmluaXRpb24uaWQubmFtZSwgdmFsdWU6IGRvY3VtZW50RGVmaW5pdGlvbi5pZC5uYW1lfTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbnMuZm9yRWFjaCgoZG9jdW1lbnREZWZpbml0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uT3B0aW9uc1tkb2N1bWVudERlZmluaXRpb24uaWQubmFtZV0gPSByZXNbaW5kZXhdLm1hcChcbiAgICAgICAgICAgICAgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiA9PiBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmlkLnByb2Nlc3NEZWZpbml0aW9uS2V5XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgd2luZG93Wydwcm9kdWN0UmVxdWVzdERlZmluaXRpb25zJ10gPSB0aGlzLnByb2Nlc3NEb2N1bWVudERlZmluaXRpb25PcHRpb25zO1xuXG4gICAgICAgICAgY29uc3QgZGVmaW5pdGlvbldpdGhDYXNlRGVmaW5pdGlvbk9wdGlvbnMgPSB0aGlzLmZvcm1NYXBwaW5nU2VydmljZS5tYXBDb21wb25lbnRzKFxuICAgICAgICAgICAgdGhpcy5mb3JtRGVmaW5pdGlvbiQuZ2V0VmFsdWUoKSxcbiAgICAgICAgICAgIHRoaXMubWFwQ2FzZURlZmluaXRpb25LZXlDb21wb25lbnRcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5mb3JtRGVmaW5pdGlvbiQubmV4dChkZWZpbml0aW9uV2l0aENhc2VEZWZpbml0aW9uT3B0aW9ucyk7XG5cbiAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0aWVzPy5hYW52cmFnZXJSb2xUeXBlVXJsKSB7XG4gICAgICAgICAgICB0aGlzLnByZWZpbGxGb3JtKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|