@valtimo/components 10.0.1 → 10.2.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 (49) hide show
  1. package/assets/css/carbon-beagle-compatibility.scss +2 -1
  2. package/assets/css/carbon.scss +6 -0
  3. package/esm2020/lib/components/confirmation-modal/confirmation-modal.component.mjs +82 -0
  4. package/esm2020/lib/components/confirmation-modal/confirmation-modal.module.mjs +35 -0
  5. package/esm2020/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.mjs +1 -1
  6. package/esm2020/lib/components/form-io/form-io-current-user/form-io-current-user-edit-form.mjs +59 -0
  7. package/esm2020/lib/components/form-io/form-io-current-user/form-io-current-user.component.mjs +41 -0
  8. package/esm2020/lib/components/form-io/form-io-current-user/form-io-current-user.formio.mjs +34 -0
  9. package/esm2020/lib/components/form-io/form-io.module.mjs +8 -3
  10. package/esm2020/lib/components/list/list.component.mjs +3 -3
  11. package/esm2020/lib/components/menu/menu.service.mjs +4 -3
  12. package/esm2020/lib/components/multi-input/carbon-multi-input.component.mjs +164 -0
  13. package/esm2020/lib/components/multi-input/carbon-multi-input.module.mjs +59 -0
  14. package/esm2020/lib/components/right-sidebar/right-sidebar.component.mjs +12 -8
  15. package/esm2020/lib/components/search-fields/search-fields.component.mjs +3 -3
  16. package/esm2020/lib/components/timeline/timeline.component.mjs +3 -3
  17. package/esm2020/lib/components/topbar/topbar.component.mjs +4 -3
  18. package/esm2020/lib/components/view-content/type-converters/booleanTypeConverter.mjs +12 -4
  19. package/esm2020/public_api.mjs +7 -1
  20. package/fesm2015/valtimo-components.mjs +521 -59
  21. package/fesm2015/valtimo-components.mjs.map +1 -1
  22. package/fesm2020/valtimo-components.mjs +516 -58
  23. package/fesm2020/valtimo-components.mjs.map +1 -1
  24. package/lib/components/confirmation-modal/confirmation-modal.component.d.ts +25 -0
  25. package/lib/components/confirmation-modal/confirmation-modal.component.d.ts.map +1 -0
  26. package/lib/components/confirmation-modal/confirmation-modal.module.d.ts +11 -0
  27. package/lib/components/confirmation-modal/confirmation-modal.module.d.ts.map +1 -0
  28. package/lib/components/form-io/form-io-current-user/form-io-current-user-edit-form.d.ts +44 -0
  29. package/lib/components/form-io/form-io-current-user/form-io-current-user-edit-form.d.ts.map +1 -0
  30. package/lib/components/form-io/form-io-current-user/form-io-current-user.component.d.ts +14 -0
  31. package/lib/components/form-io/form-io-current-user/form-io-current-user.component.d.ts.map +1 -0
  32. package/lib/components/form-io/form-io-current-user/form-io-current-user.formio.d.ts +3 -0
  33. package/lib/components/form-io/form-io-current-user/form-io-current-user.formio.d.ts.map +1 -0
  34. package/lib/components/form-io/form-io.module.d.ts +11 -10
  35. package/lib/components/form-io/form-io.module.d.ts.map +1 -1
  36. package/lib/components/menu/menu.service.d.ts +3 -2
  37. package/lib/components/menu/menu.service.d.ts.map +1 -1
  38. package/lib/components/multi-input/carbon-multi-input.component.d.ts +40 -0
  39. package/lib/components/multi-input/carbon-multi-input.component.d.ts.map +1 -0
  40. package/lib/components/multi-input/carbon-multi-input.module.d.ts +12 -0
  41. package/lib/components/multi-input/carbon-multi-input.module.d.ts.map +1 -0
  42. package/lib/components/right-sidebar/right-sidebar.component.d.ts +4 -2
  43. package/lib/components/right-sidebar/right-sidebar.component.d.ts.map +1 -1
  44. package/lib/components/topbar/topbar.component.d.ts +1 -0
  45. package/lib/components/topbar/topbar.component.d.ts.map +1 -1
  46. package/lib/components/view-content/type-converters/booleanTypeConverter.d.ts.map +1 -1
  47. package/package.json +2 -1
  48. package/public_api.d.ts +6 -0
  49. package/public_api.d.ts.map +1 -1
@@ -0,0 +1,164 @@
1
+ /*
2
+ * Copyright 2015-2020 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 } from 'rxjs';
18
+ import { map, take } from 'rxjs/operators';
19
+ import { v4 as uuidv4 } from 'uuid';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@angular/common";
22
+ import * as i2 from "@valtimo/user-interface";
23
+ import * as i3 from "carbon-components-angular";
24
+ import * as i4 from "@ngx-translate/core";
25
+ export class CarbonMultiInputComponent {
26
+ constructor() {
27
+ this.name = '';
28
+ this.title = '';
29
+ this.titleTranslationKey = '';
30
+ this.type = 'value';
31
+ this.initialAmountOfRows = 1;
32
+ this.minimumAmountOfRows = 1;
33
+ this.maxRows = 20;
34
+ this.addRowText = '';
35
+ this.addRowTranslationKey = '';
36
+ this.deleteRowText = '';
37
+ this.deleteRowTranslationKey = '';
38
+ this.disabled = false;
39
+ this.margin = false;
40
+ this.tooltip = '';
41
+ this.required = false;
42
+ this.valueChange = new EventEmitter();
43
+ this.values$ = new BehaviorSubject([]);
44
+ this.mappedValues$ = this.values$.pipe(map(values => values
45
+ .map(value => this.getMappedValue(value))
46
+ .filter(value => this.type === 'value'
47
+ ? value
48
+ : value.value && value.key)));
49
+ this.addRowEnabled$ = this.values$.pipe(map(values => !!(values.length < this.maxRows)));
50
+ }
51
+ ngOnInit() {
52
+ this.values$.next(this.getInitialRows());
53
+ this.openValuesSubscription();
54
+ }
55
+ ngOnDestroy() {
56
+ this.valuesSubscription?.unsubscribe();
57
+ }
58
+ addRow() {
59
+ combineLatest([this.values$, this.addRowEnabled$])
60
+ .pipe(take(1))
61
+ .subscribe(([values, addRowEnabled]) => {
62
+ if (addRowEnabled) {
63
+ this.values$.next([...values, this.getEmptyValue()]);
64
+ }
65
+ });
66
+ }
67
+ deleteRow(uuid) {
68
+ this.values$.pipe(take(1)).subscribe(values => {
69
+ if (values.length > this.minimumAmountOfRows) {
70
+ this.values$.next(values.filter(value => value.uuid !== uuid));
71
+ }
72
+ });
73
+ }
74
+ trackByFn(index, value) {
75
+ return value.uuid;
76
+ }
77
+ onValueChange(templateValue, inputValue, change) {
78
+ this.values$.pipe(take(1)).subscribe(values => {
79
+ this.values$.next(values.map(stateValue => {
80
+ if (stateValue.uuid === templateValue.uuid) {
81
+ if (change === 'value') {
82
+ return { ...stateValue, value: inputValue };
83
+ }
84
+ else if (change === 'key') {
85
+ return { ...stateValue, key: inputValue };
86
+ }
87
+ }
88
+ return stateValue;
89
+ }));
90
+ });
91
+ }
92
+ getInitialRows() {
93
+ const minimumRows = this.minimumAmountOfRows;
94
+ const initialRows = this.initialAmountOfRows;
95
+ const amountOfInitalRows = minimumRows > initialRows ? minimumRows : initialRows > 1 ? initialRows : 1;
96
+ if (!this.defaultValues) {
97
+ return new Array(amountOfInitalRows).fill(this.getEmptyValue());
98
+ }
99
+ else {
100
+ return this.defaultValues.map(defaultValue => ({ ...defaultValue, uuid: uuidv4() }));
101
+ }
102
+ }
103
+ getEmptyValue() {
104
+ return {
105
+ key: '',
106
+ value: '',
107
+ uuid: uuidv4(),
108
+ };
109
+ }
110
+ getMappedValue(valueToMap) {
111
+ if (this.type === 'keyValue') {
112
+ return { key: valueToMap.key, value: valueToMap.value };
113
+ }
114
+ else {
115
+ return valueToMap.value;
116
+ }
117
+ }
118
+ openValuesSubscription() {
119
+ this.valuesSubscription = this.mappedValues$.subscribe(values => {
120
+ this.valueChange.emit(values);
121
+ });
122
+ }
123
+ }
124
+ CarbonMultiInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CarbonMultiInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
125
+ CarbonMultiInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: { name: "name", title: "title", titleTranslationKey: "titleTranslationKey", type: "type", initialAmountOfRows: "initialAmountOfRows", minimumAmountOfRows: "minimumAmountOfRows", maxRows: "maxRows", addRowText: "addRowText", addRowTranslationKey: "addRowTranslationKey", deleteRowText: "deleteRowText", deleteRowTranslationKey: "deleteRowTranslationKey", disabled: "disabled", defaultValues: "defaultValues", margin: "margin", tooltip: "tooltip", required: "required" }, outputs: { valueChange: "valueChange" }, ngImport: i0, 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=\"v-multi-input\"\n [ngClass]=\"{'v-multi-input--margin': margin}\"\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate)\n } as vars\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [title]=\"title\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [name]=\"name\"\n [tooltip]=\"tooltip\"\n [required]=\"required\"\n >\n </v-input-label>\n <div class=\"v-multi-input__rows\">\n <div\n class=\"v-multi-input__row\"\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn\"\n >\n <ng-container *ngIf=\"type === 'value'\">\n <ng-container *ngTemplateOutlet=\"singleValue; context: {value: value}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"type === 'keyValue'\">\n <ng-container *ngTemplateOutlet=\"keyValue; context: {value: value}\"></ng-container>\n </ng-container>\n <button\n [disabled]=\"values?.length <= this.minimumAmountOfRows || disabled\"\n ibmButton=\"danger\"\n size=\"md\"\n [iconOnly]=\"true\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n >\n <svg class=\"cds--btn__icon\" ibmIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n <div class=\"v-multi-input__add-button\">\n <button\n (click)=\"addRow()\"\n ibmButton=\"primary\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || disabled\"\n >\n {{ vars.addRowText }}\n <svg class=\"cds--btn__icon\" ibmIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #singleValue let-value=\"value\">\n <div class=\"v-multi-input__input\">\n <input\n ibmText\n (change)=\"onValueChange(value, $event, 'value')\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value.value\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyValue let-value=\"value\">\n <div class=\"v-multi-input__input\">\n <input\n ibmText\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value.key\"\n />\n </div>\n <div class=\"v-multi-input__input\">\n <input\n ibmText\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value.value\"\n />\n </div>\n</ng-template>\n", styles: [".v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:center;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.InputLabelComponent, selector: "v-input-label", inputs: ["name", "title", "titleTranslationKey", "tooltip", "required", "largeMargin", "small"] }, { kind: "directive", type: i3.Button, selector: "[ibmButton]", inputs: ["ibmButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i3.IconDirective, selector: "[ibmIcon]", inputs: ["ibmIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i3.TextInput, selector: "[ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CarbonMultiInputComponent, decorators: [{
127
+ type: Component,
128
+ args: [{ selector: 'valtimo-carbon-multi-input', 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=\"v-multi-input\"\n [ngClass]=\"{'v-multi-input--margin': margin}\"\n *ngIf=\"{\n addRowText:\n addRowText || addRowTranslationKey\n ? addRowTranslationKey\n ? (addRowTranslationKey | translate)\n : addRowText\n : ('interface.addRow' | translate),\n deleteRowText:\n deleteRowText || deleteRowTranslationKey\n ? deleteRowTranslationKey\n ? (deleteRowTranslationKey | translate)\n : deleteRowText\n : ('interface.deleteRow' | translate)\n } as vars\"\n>\n <v-input-label\n *ngIf=\"title || titleTranslationKey\"\n [title]=\"title\"\n [titleTranslationKey]=\"titleTranslationKey\"\n [name]=\"name\"\n [tooltip]=\"tooltip\"\n [required]=\"required\"\n >\n </v-input-label>\n <div class=\"v-multi-input__rows\">\n <div\n class=\"v-multi-input__row\"\n *ngFor=\"let value of values$ | async as values; trackBy: trackByFn\"\n >\n <ng-container *ngIf=\"type === 'value'\">\n <ng-container *ngTemplateOutlet=\"singleValue; context: {value: value}\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"type === 'keyValue'\">\n <ng-container *ngTemplateOutlet=\"keyValue; context: {value: value}\"></ng-container>\n </ng-container>\n <button\n [disabled]=\"values?.length <= this.minimumAmountOfRows || disabled\"\n ibmButton=\"danger\"\n size=\"md\"\n [iconOnly]=\"true\"\n (click)=\"deleteRow(value.uuid)\"\n [title]=\"vars.deleteRowText\"\n >\n <svg class=\"cds--btn__icon\" ibmIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </div>\n <div class=\"v-multi-input__add-button\">\n <button\n (click)=\"addRow()\"\n ibmButton=\"primary\"\n size=\"md\"\n [disabled]=\"(addRowEnabled$ | async) === false || disabled\"\n >\n {{ vars.addRowText }}\n <svg class=\"cds--btn__icon\" ibmIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n</div>\n\n<ng-template #singleValue let-value=\"value\">\n <div class=\"v-multi-input__input\">\n <input\n ibmText\n (change)=\"onValueChange(value, $event, 'value')\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value.value\"\n />\n </div>\n</ng-template>\n\n<ng-template #keyValue let-value=\"value\">\n <div class=\"v-multi-input__input\">\n <input\n ibmText\n (input)=\"onValueChange(value, $event.target.value, 'key')\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value.key\"\n />\n </div>\n <div class=\"v-multi-input__input\">\n <input\n ibmText\n (input)=\"onValueChange(value, $event.target.value, 'value')\"\n [disabled]=\"disabled\"\n [defaultValue]=\"value.value\"\n />\n </div>\n</ng-template>\n", styles: [".v-multi-input--margin{margin-block-end:var(--v-input-margin)}.v-multi-input__row{display:flex;flex-direction:row;align-items:center;margin-block-end:var(--v-multi-input-row-spacing-block)}.v-multi-input__input{margin-inline-end:var(--v-multi-input-input-spacing-inline)}\n"] }]
129
+ }], propDecorators: { name: [{
130
+ type: Input
131
+ }], title: [{
132
+ type: Input
133
+ }], titleTranslationKey: [{
134
+ type: Input
135
+ }], type: [{
136
+ type: Input
137
+ }], initialAmountOfRows: [{
138
+ type: Input
139
+ }], minimumAmountOfRows: [{
140
+ type: Input
141
+ }], maxRows: [{
142
+ type: Input
143
+ }], addRowText: [{
144
+ type: Input
145
+ }], addRowTranslationKey: [{
146
+ type: Input
147
+ }], deleteRowText: [{
148
+ type: Input
149
+ }], deleteRowTranslationKey: [{
150
+ type: Input
151
+ }], disabled: [{
152
+ type: Input
153
+ }], defaultValues: [{
154
+ type: Input
155
+ }], margin: [{
156
+ type: Input
157
+ }], tooltip: [{
158
+ type: Input
159
+ }], required: [{
160
+ type: Input
161
+ }], valueChange: [{
162
+ type: Output
163
+ }] } });
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyYm9uLW11bHRpLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktaW5wdXQvY2FyYm9uLW11bHRpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktaW5wdXQvY2FyYm9uLW11bHRpLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFPeEYsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLEVBQUUsSUFBSSxNQUFNLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7OztBQU9sQyxNQUFNLE9BQU8seUJBQXlCO0lBTHRDO1FBTVcsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCx3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIsU0FBSSxHQUFtQixPQUFPLENBQUM7UUFDL0Isd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUN4QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQix5QkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDMUIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsNEJBQXVCLEdB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IEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNdWx0aUlucHV0S2V5VmFsdWUsXG4gIE11bHRpSW5wdXRPdXRwdXQsXG4gIE11bHRpSW5wdXRUeXBlLFxuICBNdWx0aUlucHV0VmFsdWVzLFxufSBmcm9tICdAdmFsdGltby91c2VyLWludGVyZmFjZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSAndXVpZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tY2FyYm9uLW11bHRpLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmJvbi1tdWx0aS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhcmJvbi1tdWx0aS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJib25NdWx0aUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBuYW1lID0gJyc7XG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHRpdGxlVHJhbnNsYXRpb25LZXkgPSAnJztcbiAgQElucHV0KCkgdHlwZTogTXVsdGlJbnB1dFR5cGUgPSAndmFsdWUnO1xuICBASW5wdXQoKSBpbml0aWFsQW1vdW50T2ZSb3dzID0gMTtcbiAgQElucHV0KCkgbWluaW11bUFtb3VudE9mUm93cyA9IDE7XG4gIEBJbnB1dCgpIG1heFJvd3MgPSAyMDtcbiAgQElucHV0KCkgYWRkUm93VGV4dCA9ICcnO1xuICBASW5wdXQoKSBhZGRSb3dUcmFuc2xhdGlvbktleSA9ICcnO1xuICBASW5wdXQoKSBkZWxldGVSb3dUZXh0ID0gJyc7XG4gIEBJbnB1dCgpIGRlbGV0ZVJvd1RyYW5zbGF0aW9uS2V5ID0gJyc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZXMhOiBNdWx0aUlucHV0VmFsdWVzO1xuICBASW5wdXQoKSBtYXJnaW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdG9vbHRpcCA9ICcnO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPE11bHRpSW5wdXRPdXRwdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHJlYWRvbmx5IHZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE11bHRpSW5wdXRWYWx1ZXM+KFtdKTtcbiAgcmVhZG9ubHkgbWFwcGVkVmFsdWVzJDogT2JzZXJ2YWJsZTxNdWx0aUlucHV0T3V0cHV0PiA9IHRoaXMudmFsdWVzJC5waXBlKFxuICAgIG1hcChcbiAgICAgIHZhbHVlcyA9PlxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgICAubWFwKHZhbHVlID0+IHRoaXMuZ2V0TWFwcGVkVmFsdWUodmFsdWUpKVxuICAgICAgICAgIC5maWx0ZXIodmFsdWUgPT5cbiAgICAgICAgICAgIHRoaXMudHlwZSA9PT0gJ3ZhbHVlJ1xuICAgICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICAgIDogKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkudmFsdWUgJiYgKHZhbHVlIGFzIE11bHRpSW5wdXRLZXlWYWx1ZSkua2V5XG4gICAgICAgICAgKSBhcyBNdWx0aUlucHV0T3V0cHV0XG4gICAgKVxuICApO1xuICByZWFkb25seSBhZGRSb3dFbmFibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMudmFsdWVzJC5waXBlKFxuICAgIG1hcCh2YWx1ZXMgPT4gISEodmFsdWVzLmxlbmd0aCA8IHRoaXMubWF4Um93cykpXG4gICk7XG5cbiAgcHJpdmF0ZSB2YWx1ZXNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXMkLm5leHQodGhpcy5nZXRJbml0aWFsUm93cygpKTtcbiAgICB0aGlzLm9wZW5WYWx1ZXNTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgYWRkUm93KCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMudmFsdWVzJCwgdGhpcy5hZGRSb3dFbmFibGVkJF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoW3ZhbHVlcywgYWRkUm93RW5hYmxlZF0pID0+IHtcbiAgICAgICAgaWYgKGFkZFJvd0VuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLnZhbHVlcyQubmV4dChbLi4udmFsdWVzLCB0aGlzLmdldEVtcHR5VmFsdWUoKV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZVJvdyh1dWlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUodmFsdWVzID0+IHtcbiAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gdGhpcy5taW5pbXVtQW1vdW50T2ZSb3dzKSB7XG4gICAgICAgIHRoaXMudmFsdWVzJC5uZXh0KHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUudXVpZCAhPT0gdXVpZCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIHZhbHVlOiBNdWx0aUlucHV0S2V5VmFsdWUpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZS51dWlkIGFzIHN0cmluZztcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UoXG4gICAgdGVtcGxhdGVWYWx1ZTogTXVsdGlJbnB1dEtleVZhbHVlLFxuICAgIGlucHV0VmFsdWU6IHN0cmluZyxcbiAgICBjaGFuZ2U6ICdrZXknIHwgJ3ZhbHVlJ1xuICApOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUodmFsdWVzID0+IHtcbiAgICAgIHRoaXMudmFsdWVzJC5uZXh0KFxuICAgICAgICB2YWx1ZXMubWFwKHN0YXRlVmFsdWUgPT4ge1xuICAgICAgICAgIGlmIChzdGF0ZVZhbHVlLnV1aWQgPT09IHRlbXBsYXRlVmFsdWUudXVpZCkge1xuICAgICAgICAgICAgaWYgKGNoYW5nZSA9PT0gJ3ZhbHVlJykge1xuICAgICAgICAgICAgICByZXR1cm4gey4uLnN0YXRlVmFsdWUsIHZhbHVlOiBpbnB1dFZhbHVlfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlID09PSAna2V5Jykge1xuICAgICAgICAgICAgICByZXR1cm4gey4uLnN0YXRlVmFsdWUsIGtleTogaW5wdXRWYWx1ZX07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdGF0ZVZhbHVlO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5pdGlhbFJvd3MoKTogTXVsdGlJbnB1dFZhbHVlcyB7XG4gICAgY29uc3QgbWluaW11bVJvd3MgPSB0aGlzLm1pbmltdW1BbW91bnRPZlJvd3M7XG4gICAgY29uc3QgaW5pdGlhbFJvd3MgPSB0aGlzLmluaXRpYWxBbW91bnRPZlJvd3M7XG4gICAgY29uc3QgYW1vdW50T2ZJbml0YWxSb3dzID1cbiAgICAgIG1pbmltdW1Sb3dzID4gaW5pdGlhbFJvd3MgPyBtaW5pbXVtUm93cyA6IGluaXRpYWxSb3dzID4gMSA/IGluaXRpYWxSb3dzIDogMTtcblxuICAgIGlmICghdGhpcy5kZWZhdWx0VmFsdWVzKSB7XG4gICAgICByZXR1cm4gbmV3IEFycmF5KGFtb3VudE9mSW5pdGFsUm93cykuZmlsbCh0aGlzLmdldEVtcHR5VmFsdWUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRWYWx1ZXMubWFwKGRlZmF1bHRWYWx1ZSA9PiAoey4uLmRlZmF1bHRWYWx1ZSwgdXVpZDogdXVpZHY0KCl9KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbXB0eVZhbHVlKCk6IE11bHRpSW5wdXRLZXlWYWx1ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogJycsXG4gICAgICB2YWx1ZTogJycsXG4gICAgICB1dWlkOiB1dWlkdjQoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXBwZWRWYWx1ZSh2YWx1ZVRvTWFwOiBNdWx0aUlucHV0S2V5VmFsdWUpOiBNdWx0aUlucHV0S2V5VmFsdWUgfCBzdHJpbmcge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdrZXlWYWx1ZScpIHtcbiAgICAgIHJldHVybiB7a2V5OiB2YWx1ZVRvTWFwLmtleSwgdmFsdWU6IHZhbHVlVG9NYXAudmFsdWV9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWVUb01hcC52YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5WYWx1ZXNTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXNTdWJzY3JpcHRpb24gPSB0aGlzLm1hcHBlZFZhbHVlcyQuc3Vic2NyaWJlKHZhbHVlcyA9PiB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWVzKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2XG4gIGNsYXNzPVwidi1tdWx0aS1pbnB1dFwiXG4gIFtuZ0NsYXNzXT1cInsndi1tdWx0aS1pbnB1dC0tbWFyZ2luJzogbWFyZ2lufVwiXG4gICpuZ0lmPVwie1xuICAgIGFkZFJvd1RleHQ6XG4gICAgICBhZGRSb3dUZXh0IHx8IGFkZFJvd1RyYW5zbGF0aW9uS2V5XG4gICAgICAgID8gYWRkUm93VHJhbnNsYXRpb25LZXlcbiAgICAgICAgICA/IChhZGRSb3dUcmFuc2xhdGlvbktleSB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICA6IGFkZFJvd1RleHRcbiAgICAgICAgOiAoJ2ludGVyZmFjZS5hZGRSb3cnIHwgdHJhbnNsYXRlKSxcbiAgICBkZWxldGVSb3dUZXh0OlxuICAgICAgZGVsZXRlUm93VGV4dCB8fCBkZWxldGVSb3dUcmFuc2xhdGlvbktleVxuICAgICAgICA/IGRlbGV0ZVJvd1RyYW5zbGF0aW9uS2V5XG4gICAgICAgICAgPyAoZGVsZXRlUm93VHJhbnNsYXRpb25LZXkgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgOiBkZWxldGVSb3dUZXh0XG4gICAgICAgIDogKCdpbnRlcmZhY2UuZGVsZXRlUm93JyB8IHRyYW5zbGF0ZSlcbiAgfSBhcyB2YXJzXCJcbj5cbiAgPHYtaW5wdXQtbGFiZWxcbiAgICAqbmdJZj1cInRpdGxlIHx8IHRpdGxlVHJhbnNsYXRpb25LZXlcIlxuICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgW3RpdGxlVHJhbnNsYXRpb25LZXldPVwidGl0bGVUcmFuc2xhdGlvbktleVwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW3Rvb2x0aXBdPVwidG9vbHRpcFwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgPlxuICA8L3YtaW5wdXQtbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19yb3dzXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ2LW11bHRpLWlucHV0X19yb3dcIlxuICAgICAgKm5nRm9yPVwibGV0IHZhbHVlIG9mIHZhbHVlcyQgfCBhc3luYyBhcyB2YWx1ZXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICd2YWx1ZSdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbmdsZVZhbHVlOyBjb250ZXh0OiB7dmFsdWU6IHZhbHVlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ2tleVZhbHVlJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwia2V5VmFsdWU7IGNvbnRleHQ6IHt2YWx1ZTogdmFsdWV9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cInZhbHVlcz8ubGVuZ3RoIDw9IHRoaXMubWluaW11bUFtb3VudE9mUm93cyB8fCBkaXNhYmxlZFwiXG4gICAgICAgIGlibUJ1dHRvbj1cImRhbmdlclwiXG4gICAgICAgIHNpemU9XCJtZFwiXG4gICAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJvdyh2YWx1ZS51dWlkKVwiXG4gICAgICAgIFt0aXRsZV09XCJ2YXJzLmRlbGV0ZVJvd1RleHRcIlxuICAgICAgPlxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBpYm1JY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidi1tdWx0aS1pbnB1dF9fYWRkLWJ1dHRvblwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiYWRkUm93KClcIlxuICAgICAgICBpYm1CdXR0b249XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cIm1kXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIihhZGRSb3dFbmFibGVkJCB8IGFzeW5jKSA9PT0gZmFsc2UgfHwgZGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICB7eyB2YXJzLmFkZFJvd1RleHQgfX1cbiAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgaWJtSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlVmFsdWUgbGV0LXZhbHVlPVwidmFsdWVcIj5cbiAgPGRpdiBjbGFzcz1cInYtbXVsdGktaW5wdXRfX2lucHV0XCI+XG4gICAgPGlucHV0XG4gICAgICBpYm1UZXh0XG4gICAgICAoY2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UodmFsdWUsICRldmVudCwgJ3ZhbHVlJylcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwidmFsdWUudmFsdWVcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNrZXlWYWx1ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiPlxuICA8ZGl2IGNsYXNzPVwidi1tdWx0aS1pbnB1dF9faW5wdXRcIj5cbiAgICA8aW5wdXRcbiAgICAgIGlibVRleHRcbiAgICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKHZhbHVlLCAkZXZlbnQudGFyZ2V0LnZhbHVlLCAna2V5JylcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwidmFsdWUua2V5XCJcbiAgICAvPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInYtbXVsdGktaW5wdXRfX2lucHV0XCI+XG4gICAgPGlucHV0XG4gICAgICBpYm1UZXh0XG4gICAgICAoaW5wdXQpPVwib25WYWx1ZUNoYW5nZSh2YWx1ZSwgJGV2ZW50LnRhcmdldC52YWx1ZSwgJ3ZhbHVlJylcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtkZWZhdWx0VmFsdWVdPVwidmFsdWUudmFsdWVcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Copyright 2015-2020 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 { NgModule } from '@angular/core';
17
+ import { CommonModule } from '@angular/common';
18
+ import { CarbonMultiInputComponent } from './carbon-multi-input.component';
19
+ import { ButtonModule, InputLabelModule, InputModule } from '@valtimo/user-interface';
20
+ import { TranslateModule } from '@ngx-translate/core';
21
+ import { ButtonModule as CarbonButtonModule, IconModule, InputModule as CarbonInputModule, } from 'carbon-components-angular';
22
+ import * as i0 from "@angular/core";
23
+ export class CarbonMultiInputModule {
24
+ }
25
+ CarbonMultiInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CarbonMultiInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
26
+ CarbonMultiInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: CarbonMultiInputModule, declarations: [CarbonMultiInputComponent], imports: [CommonModule,
27
+ InputLabelModule,
28
+ InputModule,
29
+ ButtonModule,
30
+ TranslateModule,
31
+ CarbonButtonModule,
32
+ IconModule,
33
+ CarbonInputModule], exports: [CarbonMultiInputComponent] });
34
+ CarbonMultiInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CarbonMultiInputModule, imports: [CommonModule,
35
+ InputLabelModule,
36
+ InputModule,
37
+ ButtonModule,
38
+ TranslateModule,
39
+ CarbonButtonModule,
40
+ IconModule,
41
+ CarbonInputModule] });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CarbonMultiInputModule, decorators: [{
43
+ type: NgModule,
44
+ args: [{
45
+ declarations: [CarbonMultiInputComponent],
46
+ imports: [
47
+ CommonModule,
48
+ InputLabelModule,
49
+ InputModule,
50
+ ButtonModule,
51
+ TranslateModule,
52
+ CarbonButtonModule,
53
+ IconModule,
54
+ CarbonInputModule,
55
+ ],
56
+ exports: [CarbonMultiInputComponent],
57
+ }]
58
+ }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyYm9uLW11bHRpLWlucHV0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbXVsdGktaW5wdXQvY2FyYm9uLW11bHRpLWlucHV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxZQUFZLElBQUksa0JBQWtCLEVBQ2xDLFVBQVUsRUFDVixXQUFXLElBQUksaUJBQWlCLEdBQ2pDLE1BQU0sMkJBQTJCLENBQUM7O0FBZ0JuQyxNQUFNLE9BQU8sc0JBQXNCOztvSEFBdEIsc0JBQXNCO3FIQUF0QixzQkFBc0IsaUJBYmxCLHlCQUF5QixhQUV0QyxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFdBQVc7UUFDWCxZQUFZO1FBQ1osZUFBZTtRQUNmLGtCQUFrQjtRQUNsQixVQUFVO1FBQ1YsaUJBQWlCLGFBRVQseUJBQXlCO3FIQUV4QixzQkFBc0IsWUFYL0IsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixXQUFXO1FBQ1gsWUFBWTtRQUNaLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsVUFBVTtRQUNWLGlCQUFpQjs0RkFJUixzQkFBc0I7a0JBZGxDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixVQUFVO3dCQUNWLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2FyYm9uTXVsdGlJbnB1dENvbXBvbmVudH0gZnJvbSAnLi9jYXJib24tbXVsdGktaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJbnB1dExhYmVsTW9kdWxlLCBJbnB1dE1vZHVsZX0gZnJvbSAnQHZhbHRpbW8vdXNlci1pbnRlcmZhY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlIGFzIENhcmJvbkJ1dHRvbk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUgYXMgQ2FyYm9uSW5wdXRNb2R1bGUsXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDYXJib25NdWx0aUlucHV0Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJbnB1dExhYmVsTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQ2FyYm9uQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgQ2FyYm9uSW5wdXRNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtDYXJib25NdWx0aUlucHV0Q29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyYm9uTXVsdGlJbnB1dE1vZHVsZSB7fVxuIl19