@seniorsistemas/angular-components 18.1.0-feature-sds-276-69157a05 → 18.1.0-feature-sds-276-a92584d0
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/dynamic-form/dynamic-form/components/grid/row/row.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +4 -4
- package/dynamic-form/dynamic-form/components/structure/fieldset/fieldset.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/components/structure/section/section.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +12 -1
- package/dynamic-form/dynamic-form/dynamic-form.d.ts +3 -7
- package/dynamic-form/dynamic-form/dynamic-form.directive.d.ts +1 -1
- package/dynamic-form/dynamic-form/dynamic-form.module.d.ts +6 -74
- package/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/file-upload/file-upload-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/lookup/lookup-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/slider/slider-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/star-rating/star-rating-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.d.ts +1 -1
- package/dynamic-form/dynamic-form/form-field/fields/text-area-ia/text-area-ia-field.component.d.ts +1 -1
- package/dynamic-form/public-api.d.ts +3 -3
- package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/components/grid/row/row.component.mjs +11 -9
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +54 -27
- package/esm2022/dynamic-form/dynamic-form/components/structure/fieldset/fieldset.component.mjs +5 -4
- package/esm2022/dynamic-form/dynamic-form/components/structure/section/section.component.mjs +4 -4
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +15 -4
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.directive.mjs +6 -5
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.mjs +4 -8
- package/esm2022/dynamic-form/dynamic-form/dynamic-form.module.mjs +6 -268
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +7 -6
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +24 -11
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +9 -8
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +10 -7
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.mjs +4 -4
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +10 -8
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +5 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.mjs +11 -9
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +6 -4
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +11 -10
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/file-upload/file-upload-field.component.mjs +6 -6
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/lookup/lookup-field.component.mjs +7 -6
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +27 -12
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +22 -10
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.mjs +8 -6
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +17 -9
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/select/select-field.component.mjs +7 -6
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/slider/slider-field.component.mjs +8 -6
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/star-rating/star-rating-field.component.mjs +6 -5
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +25 -11
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +8 -6
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area-ia/text-area-ia-field.component.mjs +8 -6
- package/esm2022/dynamic-form/public-api.mjs +10 -8
- package/esm2022/dynamic-form/src/optional-fields/editor/public-api.mjs +1 -18
- package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-lookup/inline-edit-lookup.component.mjs +3 -5
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form-src-optional-fields-editor.mjs +0 -18
- package/fesm2022/seniorsistemas-angular-components-dynamic-form-src-optional-fields-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +1871 -1995
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +7 -8
- package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { Component, inject, input } from '@angular/core';
|
|
2
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
|
+
import { NgClass } from '@angular/common';
|
|
4
|
+
import { ButtonComponent } from '@seniorsistemas/angular-components/button';
|
|
5
|
+
import { ControlErrorsModule } from '@seniorsistemas/angular-components/control-errors';
|
|
2
6
|
import { STRUCTURE_TYPES_LIST } from '../../../configurations/structure/structure';
|
|
3
7
|
import { FieldSize } from '../../../form-field/configurations/field-size';
|
|
4
8
|
import { FormFieldUtilsService } from '../../../services/form-field-utils.service';
|
|
9
|
+
import { DynamicFormDirective } from '../../../dynamic-form.directive';
|
|
5
10
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@seniorsistemas/angular-components/
|
|
7
|
-
import * as i2 from "@angular/
|
|
8
|
-
import * as i3 from "@seniorsistemas/angular-components/control-errors";
|
|
9
|
-
import * as i4 from "@angular/forms";
|
|
10
|
-
import * as i5 from "../../../dynamic-form.directive";
|
|
11
|
+
import * as i1 from "@seniorsistemas/angular-components/control-errors";
|
|
12
|
+
import * as i2 from "@angular/forms";
|
|
11
13
|
export class RowComponent {
|
|
12
14
|
id = input();
|
|
13
15
|
config = input.required();
|
|
@@ -17,7 +19,7 @@ export class RowComponent {
|
|
|
17
19
|
getErrorMessages(errorMessages) {
|
|
18
20
|
if (errorMessages)
|
|
19
21
|
return this.isFunction(errorMessages) ? errorMessages() : errorMessages;
|
|
20
|
-
return this.errorMessages;
|
|
22
|
+
return this.errorMessages();
|
|
21
23
|
}
|
|
22
24
|
isFunction(value) {
|
|
23
25
|
return value instanceof Function;
|
|
@@ -30,10 +32,10 @@ export class RowComponent {
|
|
|
30
32
|
return Object.keys(fieldSize).map((key) => `ui-${key}-${fieldSize[key]}`);
|
|
31
33
|
}
|
|
32
34
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RowComponent, selector: "s-row", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"p-fluid\"\n [formGroup]=\"group()\"\n>\n @let rowConfig = config();\n @let rowIsVisible = formUtils.getFieldProperty(rowConfig.visible, true);\n @if (rowIsVisible) {\n <div class=\"ui-g\">\n @for (field of config().fields; let i = $index; track i) {\n @if (fieldIsExpandedDynamicType(field)) {\n @let fieldVisible = formUtils.getFieldProperty(field.visible, true);\n @if (fieldVisible) {\n <div [ngClass]=\"fieldGridClass(field)\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n\n @if (field.name) {\n <s-control-errors\n [form]=\"group\"\n [control]=\"group().controls[field.name]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\"\n ></s-control-errors>\n }\n\n @if (field.footer) {\n @if (field.footer.help) {\n @if (\n field.name &&\n field.footer.help.visible &&\n field.footer.help.visible({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n ) {\n <span style=\"color: #888b99\">\n {{ field.footer.help.text }}\n </span>\n }\n }\n }\n\n @if (field.footer) {\n @if (\n field.name &&\n field.footer.link?.visible({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n ) {\n <div\n class=\"ui-g\"\n style=\"margin-left: -17px\"\n >\n <s-button\n [label]=\"field.footer.link?.label\"\n priority=\"link\"\n (clicked)=\"\n field.footer.link?.onClick({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n \"\n [auxiliary]=\"true\"\n ></s-button>\n </div>\n }\n }\n @if (field.bottomTemplate) {\n <ng-template [ngTemplateOutlet]=\"field.bottomTemplate\"></ng-template>\n }\n </div>\n }\n } @else {\n @let gridClass = fieldGridClass(field);\n <div [ngClass]=\"gridClass\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n </div>\n }\n }\n </div>\n }\n</div>\n\n", dependencies: [{ kind: "component", type: i1.
|
|
35
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RowComponent, isStandalone: true, selector: "s-row", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: true, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"p-fluid\"\n [formGroup]=\"group()\"\n>\n @let rowConfig = config();\n @let rowIsVisible = formUtils.getFieldProperty(rowConfig.visible, true);\n @if (rowIsVisible) {\n <div class=\"ui-g\">\n @for (field of config().fields; let i = $index; track i) {\n @if (fieldIsExpandedDynamicType(field)) {\n @let fieldVisible = formUtils.getFieldProperty(field.visible, true);\n @if (fieldVisible) {\n <div [ngClass]=\"fieldGridClass(field)\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n\n @if (field.name) {\n <s-control-errors\n [form]=\"group\"\n [control]=\"group().controls[field.name]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\"\n ></s-control-errors>\n }\n\n @if (field.footer) {\n @if (field.footer.help) {\n @if (\n field.name &&\n field.footer.help.visible &&\n field.footer.help.visible({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n ) {\n <span style=\"color: #888b99\">\n {{ field.footer.help.text }}\n </span>\n }\n }\n }\n\n @if (field.footer) {\n @if (\n field.name &&\n field.footer.link?.visible({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n ) {\n <div\n class=\"ui-g\"\n style=\"margin-left: -17px\"\n >\n <s-button\n [label]=\"field.footer.link?.label\"\n priority=\"link\"\n (clicked)=\"\n field.footer.link?.onClick({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n \"\n [auxiliary]=\"true\"\n ></s-button>\n </div>\n }\n }\n @if (field.bottomTemplate) {\n <ng-template [ngTemplateOutlet]=\"field.bottomTemplate\"></ng-template>\n }\n </div>\n }\n } @else {\n @let gridClass = fieldGridClass(field);\n <div [ngClass]=\"gridClass\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n </div>\n }\n }\n </div>\n }\n</div>\n\n", dependencies: [{ kind: "ngmodule", type: ControlErrorsModule }, { kind: "component", type: i1.ControlErrorsComponent, selector: "s-control-errors", inputs: ["id", "control", "errorMessages", "form"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "directive", type: DynamicFormDirective, selector: "[sDynamicForm]", inputs: ["sDynamicForm"] }] });
|
|
34
36
|
}
|
|
35
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowComponent, decorators: [{
|
|
36
38
|
type: Component,
|
|
37
|
-
args: [{ selector: 's-row', template: "<div\n class=\"p-fluid\"\n [formGroup]=\"group()\"\n>\n @let rowConfig = config();\n @let rowIsVisible = formUtils.getFieldProperty(rowConfig.visible, true);\n @if (rowIsVisible) {\n <div class=\"ui-g\">\n @for (field of config().fields; let i = $index; track i) {\n @if (fieldIsExpandedDynamicType(field)) {\n @let fieldVisible = formUtils.getFieldProperty(field.visible, true);\n @if (fieldVisible) {\n <div [ngClass]=\"fieldGridClass(field)\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n\n @if (field.name) {\n <s-control-errors\n [form]=\"group\"\n [control]=\"group().controls[field.name]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\"\n ></s-control-errors>\n }\n\n @if (field.footer) {\n @if (field.footer.help) {\n @if (\n field.name &&\n field.footer.help.visible &&\n field.footer.help.visible({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n ) {\n <span style=\"color: #888b99\">\n {{ field.footer.help.text }}\n </span>\n }\n }\n }\n\n @if (field.footer) {\n @if (\n field.name &&\n field.footer.link?.visible({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n ) {\n <div\n class=\"ui-g\"\n style=\"margin-left: -17px\"\n >\n <s-button\n [label]=\"field.footer.link?.label\"\n priority=\"link\"\n (clicked)=\"\n field.footer.link?.onClick({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n \"\n [auxiliary]=\"true\"\n ></s-button>\n </div>\n }\n }\n @if (field.bottomTemplate) {\n <ng-template [ngTemplateOutlet]=\"field.bottomTemplate\"></ng-template>\n }\n </div>\n }\n } @else {\n @let gridClass = fieldGridClass(field);\n <div [ngClass]=\"gridClass\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n </div>\n }\n }\n </div>\n }\n</div>\n\n" }]
|
|
39
|
+
args: [{ selector: 's-row', standalone: true, imports: [ControlErrorsModule, ReactiveFormsModule, NgClass, ButtonComponent, DynamicFormDirective], template: "<div\n class=\"p-fluid\"\n [formGroup]=\"group()\"\n>\n @let rowConfig = config();\n @let rowIsVisible = formUtils.getFieldProperty(rowConfig.visible, true);\n @if (rowIsVisible) {\n <div class=\"ui-g\">\n @for (field of config().fields; let i = $index; track i) {\n @if (fieldIsExpandedDynamicType(field)) {\n @let fieldVisible = formUtils.getFieldProperty(field.visible, true);\n @if (fieldVisible) {\n <div [ngClass]=\"fieldGridClass(field)\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n\n @if (field.name) {\n <s-control-errors\n [form]=\"group\"\n [control]=\"group().controls[field.name]\"\n [errorMessages]=\"getErrorMessages(field.errorMessages)\"\n ></s-control-errors>\n }\n\n @if (field.footer) {\n @if (field.footer.help) {\n @if (\n field.name &&\n field.footer.help.visible &&\n field.footer.help.visible({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n ) {\n <span style=\"color: #888b99\">\n {{ field.footer.help.text }}\n </span>\n }\n }\n }\n\n @if (field.footer) {\n @if (\n field.name &&\n field.footer.link?.visible({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n ) {\n <div\n class=\"ui-g\"\n style=\"margin-left: -17px\"\n >\n <s-button\n [label]=\"field.footer.link?.label\"\n priority=\"link\"\n (clicked)=\"\n field.footer.link?.onClick({\n abstractControl: group().controls[field.name],\n formField: field,\n })\n \"\n [auxiliary]=\"true\"\n ></s-button>\n </div>\n }\n }\n @if (field.bottomTemplate) {\n <ng-template [ngTemplateOutlet]=\"field.bottomTemplate\"></ng-template>\n }\n </div>\n }\n } @else {\n @let gridClass = fieldGridClass(field);\n <div [ngClass]=\"gridClass\">\n <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n </div>\n }\n }\n </div>\n }\n</div>\n\n" }]
|
|
38
40
|
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vY29tcG9uZW50cy9ncmlkL3Jvdy9yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2dyaWQvcm93L3Jvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTekQsT0FBTyxFQUFFLG9CQUFvQixFQUFpQixNQUFNLDZDQUE2QyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sK0NBQStDLENBQUM7QUFFM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7QUFPbkYsTUFBTSxPQUFPLFlBQVk7SUFDckIsRUFBRSxHQUFHLEtBQUssRUFBVSxDQUFDO0lBQ3JCLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFhLENBQUM7SUFFckMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWEsQ0FBQztJQUNwQyxhQUFhLEdBQUcsS0FBSyxFQUFPLENBQUM7SUFFVixTQUFTLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFbkQsZ0JBQWdCLENBQUMsYUFBa0I7UUFDekMsSUFBSSxhQUFhO1lBQUUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzNGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRVMsVUFBVSxDQUFDLEtBQVU7UUFDM0IsT0FBTyxLQUFLLFlBQVksUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFFUywwQkFBMEIsQ0FDaEMsS0FBbUU7UUFFbkUsT0FBTyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBcUIsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBMkM7UUFDaEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxTQUFVLENBQUMsR0FBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRyxDQUFDO3dHQTNCUSxZQUFZOzRGQUFaLFlBQVkseWlCQ25CekIsdzlIQWtGQTs7NEZEL0RhLFlBQVk7a0JBSnhCLFNBQVM7K0JBRUksT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICAgIEV4cGFuZGVkRHluYW1pY1N0cnVjdHVyZSxcbiAgICBFeHBhbmRlZER5bmFtaWNUeXBlLFxuICAgIFJvd0NvbmZpZyxcbiAgICBSb3dUeXBlLFxufSBmcm9tICcuLi8uLi8uLi9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvcm93JztcbmltcG9ydCB7IFNUUlVDVFVSRV9UWVBFU19MSVNULCBTdHJ1Y3R1cmVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbnMvc3RydWN0dXJlL3N0cnVjdHVyZSc7XG5pbXBvcnQgeyBGaWVsZFNpemUsIEZpZWxkU2l6ZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGQtc2l6ZSc7XG5pbXBvcnQgeyBEeW5hbWljVHlwZSB9IGZyb20gJy4uLy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2ZpZWxkJztcbmltcG9ydCB7IEZvcm1GaWVsZFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0tZmllbGQtdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlU3RydWN0dXJlQ29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vc3RydWN0dXJlL2Jhc2Utc3RydWN0dXJlLWNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHNlbGVjdG9yOiAncy1yb3cnLFxufSlcbmV4cG9ydCBjbGFzcyBSb3dDb21wb25lbnQgaW1wbGVtZW50cyBCYXNlU3RydWN0dXJlQ29tcG9uZW50Q29uZmlnIHtcbiAgICBpZCA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxSb3dDb25maWc+KCk7XG5cbiAgICBncm91cCA9IGlucHV0LnJlcXVpcmVkPEZvcm1Hcm91cD4oKTtcbiAgICBlcnJvck1lc3NhZ2VzID0gaW5wdXQ8YW55PigpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm1VdGlscyA9IGluamVjdChGb3JtRmllbGRVdGlsc1NlcnZpY2UpO1xuXG4gICAgcHJvdGVjdGVkIGdldEVycm9yTWVzc2FnZXMoZXJyb3JNZXNzYWdlczogYW55KSB7XG4gICAgICAgIGlmIChlcnJvck1lc3NhZ2VzKSByZXR1cm4gdGhpcy5pc0Z1bmN0aW9uKGVycm9yTWVzc2FnZXMpID8gZXJyb3JNZXNzYWdlcygpIDogZXJyb3JNZXNzYWdlcztcbiAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JNZXNzYWdlcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNGdW5jdGlvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaWVsZElzRXhwYW5kZWREeW5hbWljVHlwZShcbiAgICAgICAgZmllbGQ6IEV4cGFuZGVkRHluYW1pY1R5cGUgfCBFeHBhbmRlZER5bmFtaWNTdHJ1Y3R1cmUgfCBEeW5hbWljVHlwZSxcbiAgICApOiBmaWVsZCBpcyBFeHBhbmRlZER5bmFtaWNUeXBlIHtcbiAgICAgICAgcmV0dXJuICFTVFJVQ1RVUkVfVFlQRVNfTElTVC5pbmNsdWRlcyhmaWVsZC50eXBlIGFzIFN0cnVjdHVyZVR5cGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaWVsZEdyaWRDbGFzcyhmaWVsZDogUm93VHlwZSAmIHsgc2l6ZT86IEZpZWxkU2l6ZUNvbmZpZyB9KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkU2l6ZSA9IG5ldyBGaWVsZFNpemUoZmllbGQuc2l6ZSA/PyB7fSk7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmaWVsZFNpemUpLm1hcCgoa2V5KSA9PiBgdWktJHtrZXl9LSR7ZmllbGRTaXplIVtrZXkgYXMga2V5b2YgRmllbGRTaXplXX1gKTtcbiAgICB9XG59XG5cbiIsIjxkaXZcbiAgICBjbGFzcz1cInAtZmx1aWRcIlxuICAgIFtmb3JtR3JvdXBdPVwiZ3JvdXAoKVwiXG4+XG4gICAgQGxldCByb3dDb25maWcgPSBjb25maWcoKTtcbiAgICBAbGV0IHJvd0lzVmlzaWJsZSA9IGZvcm1VdGlscy5nZXRGaWVsZFByb3BlcnR5KHJvd0NvbmZpZy52aXNpYmxlLCB0cnVlKTtcbiAgICBAaWYgKHJvd0lzVmlzaWJsZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwidWktZ1wiPlxuICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgY29uZmlnKCkuZmllbGRzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICAgICAgICAgIEBpZiAoZmllbGRJc0V4cGFuZGVkRHluYW1pY1R5cGUoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgZmllbGRWaXNpYmxlID0gZm9ybVV0aWxzLmdldEZpZWxkUHJvcGVydHkoZmllbGQudmlzaWJsZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZmllbGRWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkR3JpZENsYXNzKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnNEeW5hbWljRm9ybT1cInsgaWQ6IGlkKCksIGNvbmZpZzogZmllbGQsIGdyb3VwOiBncm91cCgpIH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmllbGQubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cy1jb250cm9sLWVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ3JvdXAoKS5jb250cm9sc1tmaWVsZC5uYW1lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlc109XCJnZXRFcnJvck1lc3NhZ2VzKGZpZWxkLmVycm9yTWVzc2FnZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcy1jb250cm9sLWVycm9ycz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmZvb3Rlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmZvb3Rlci5oZWxwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5mb290ZXIuaGVscC52aXNpYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZm9vdGVyLmhlbHAudmlzaWJsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RyYWN0Q29udHJvbDogZ3JvdXAoKS5jb250cm9sc1tmaWVsZC5uYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJjb2xvcjogIzg4OGI5OVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5mb290ZXIuaGVscC50ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWVsZC5mb290ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZvb3Rlci5saW5rPy52aXNpYmxlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdENvbnRyb2w6IGdyb3VwKCkuY29udHJvbHNbZmllbGQubmFtZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWktZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTE3cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZmllbGQuZm9vdGVyLmxpbms/LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5mb290ZXIubGluaz8ub25DbGljayh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3RDb250cm9sOiBncm91cCgpLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZDogZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV4aWxpYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3MtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWVsZC5ib3R0b21UZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmllbGQuYm90dG9tVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgZ3JpZENsYXNzID0gZmllbGRHcmlkQ2xhc3MoZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdyaWRDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqc0R5bmFtaWNGb3JtPVwieyBpZDogaWQoKSwgY29uZmlnOiBmaWVsZCwgZ3JvdXA6IGdyb3VwKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuXG4iXX0=
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vY29tcG9uZW50cy9ncmlkL3Jvdy9yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2dyaWQvcm93L3Jvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQU94RixPQUFPLEVBQUUsb0JBQW9CLEVBQWlCLE1BQU0sNkNBQTZDLENBQUM7QUFDbEcsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSwrQ0FBK0MsQ0FBQztBQUUzRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQVF2RSxNQUFNLE9BQU8sWUFBWTtJQUNyQixFQUFFLEdBQUcsS0FBSyxFQUFVLENBQUM7SUFDckIsTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWEsQ0FBQztJQUVyQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBYSxDQUFDO0lBQ3BDLGFBQWEsR0FBRyxLQUFLLEVBQU8sQ0FBQztJQUVWLFNBQVMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUVuRCxnQkFBZ0IsQ0FBQyxhQUFrQjtRQUN6QyxJQUFJLGFBQWE7WUFBRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDM0YsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVTLFVBQVUsQ0FBQyxLQUFVO1FBQzNCLE9BQU8sS0FBSyxZQUFZLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBRVMsMEJBQTBCLENBQ2hDLEtBQW1FO1FBRW5FLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQXFCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRVMsY0FBYyxDQUFDLEtBQTJDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksU0FBVSxDQUFDLEdBQXNCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEcsQ0FBQzt3R0EzQlEsWUFBWTs0RkFBWixZQUFZLDZqQkN6QnpCLHc5SEFrRkEsMkNEM0RjLG1CQUFtQix3S0FBRSxtQkFBbUIsNFVBQUUsT0FBTyxvRkFBRSxlQUFlLHNUQUFFLG9CQUFvQjs7NEZBRXpGLFlBQVk7a0JBTnhCLFNBQVM7K0JBRUksT0FBTyxjQUNMLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBDb250cm9sRXJyb3JzTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jb250cm9sLWVycm9ycyc7XG5pbXBvcnQge1xuICAgIEV4cGFuZGVkRHluYW1pY1N0cnVjdHVyZSxcbiAgICBFeHBhbmRlZER5bmFtaWNUeXBlLFxuICAgIFJvd0NvbmZpZyxcbiAgICBSb3dUeXBlLFxufSBmcm9tICcuLi8uLi8uLi9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvcm93JztcbmltcG9ydCB7IFNUUlVDVFVSRV9UWVBFU19MSVNULCBTdHJ1Y3R1cmVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29uZmlndXJhdGlvbnMvc3RydWN0dXJlL3N0cnVjdHVyZSc7XG5pbXBvcnQgeyBGaWVsZFNpemUsIEZpZWxkU2l6ZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGQtc2l6ZSc7XG5pbXBvcnQgeyBEeW5hbWljVHlwZSB9IGZyb20gJy4uLy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2ZpZWxkJztcbmltcG9ydCB7IEZvcm1GaWVsZFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0tZmllbGQtdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlU3RydWN0dXJlQ29tcG9uZW50Q29uZmlnIH0gZnJvbSAnLi4vLi4vc3RydWN0dXJlL2Jhc2Utc3RydWN0dXJlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljRm9ybURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2R5bmFtaWMtZm9ybS5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vcm93LmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ3Mtcm93JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb250cm9sRXJyb3JzTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBOZ0NsYXNzLCBCdXR0b25Db21wb25lbnQsIER5bmFtaWNGb3JtRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgUm93Q29tcG9uZW50IGltcGxlbWVudHMgQmFzZVN0cnVjdHVyZUNvbXBvbmVudENvbmZpZyB7XG4gICAgaWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8Um93Q29uZmlnPigpO1xuXG4gICAgZ3JvdXAgPSBpbnB1dC5yZXF1aXJlZDxGb3JtR3JvdXA+KCk7XG4gICAgZXJyb3JNZXNzYWdlcyA9IGlucHV0PGFueT4oKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBmb3JtVXRpbHMgPSBpbmplY3QoRm9ybUZpZWxkVXRpbHNTZXJ2aWNlKTtcblxuICAgIHByb3RlY3RlZCBnZXRFcnJvck1lc3NhZ2VzKGVycm9yTWVzc2FnZXM6IGFueSkge1xuICAgICAgICBpZiAoZXJyb3JNZXNzYWdlcykgcmV0dXJuIHRoaXMuaXNGdW5jdGlvbihlcnJvck1lc3NhZ2VzKSA/IGVycm9yTWVzc2FnZXMoKSA6IGVycm9yTWVzc2FnZXM7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yTWVzc2FnZXMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNGdW5jdGlvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaWVsZElzRXhwYW5kZWREeW5hbWljVHlwZShcbiAgICAgICAgZmllbGQ6IEV4cGFuZGVkRHluYW1pY1R5cGUgfCBFeHBhbmRlZER5bmFtaWNTdHJ1Y3R1cmUgfCBEeW5hbWljVHlwZSxcbiAgICApOiBmaWVsZCBpcyBFeHBhbmRlZER5bmFtaWNUeXBlIHtcbiAgICAgICAgcmV0dXJuICFTVFJVQ1RVUkVfVFlQRVNfTElTVC5pbmNsdWRlcyhmaWVsZC50eXBlIGFzIFN0cnVjdHVyZVR5cGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaWVsZEdyaWRDbGFzcyhmaWVsZDogUm93VHlwZSAmIHsgc2l6ZT86IEZpZWxkU2l6ZUNvbmZpZyB9KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkU2l6ZSA9IG5ldyBGaWVsZFNpemUoZmllbGQuc2l6ZSA/PyB7fSk7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmaWVsZFNpemUpLm1hcCgoa2V5KSA9PiBgdWktJHtrZXl9LSR7ZmllbGRTaXplIVtrZXkgYXMga2V5b2YgRmllbGRTaXplXX1gKTtcbiAgICB9XG59XG5cbiIsIjxkaXZcbiAgICBjbGFzcz1cInAtZmx1aWRcIlxuICAgIFtmb3JtR3JvdXBdPVwiZ3JvdXAoKVwiXG4+XG4gICAgQGxldCByb3dDb25maWcgPSBjb25maWcoKTtcbiAgICBAbGV0IHJvd0lzVmlzaWJsZSA9IGZvcm1VdGlscy5nZXRGaWVsZFByb3BlcnR5KHJvd0NvbmZpZy52aXNpYmxlLCB0cnVlKTtcbiAgICBAaWYgKHJvd0lzVmlzaWJsZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwidWktZ1wiPlxuICAgICAgICAgICAgQGZvciAoZmllbGQgb2YgY29uZmlnKCkuZmllbGRzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgaSkge1xuICAgICAgICAgICAgICAgIEBpZiAoZmllbGRJc0V4cGFuZGVkRHluYW1pY1R5cGUoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgZmllbGRWaXNpYmxlID0gZm9ybVV0aWxzLmdldEZpZWxkUHJvcGVydHkoZmllbGQudmlzaWJsZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZmllbGRWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpZWxkR3JpZENsYXNzKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnNEeW5hbWljRm9ybT1cInsgaWQ6IGlkKCksIGNvbmZpZzogZmllbGQsIGdyb3VwOiBncm91cCgpIH1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmllbGQubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cy1jb250cm9sLWVycm9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRyb2xdPVwiZ3JvdXAoKS5jb250cm9sc1tmaWVsZC5uYW1lXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlc109XCJnZXRFcnJvck1lc3NhZ2VzKGZpZWxkLmVycm9yTWVzc2FnZXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcy1jb250cm9sLWVycm9ycz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmZvb3Rlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkLmZvb3Rlci5oZWxwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5mb290ZXIuaGVscC52aXNpYmxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZm9vdGVyLmhlbHAudmlzaWJsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3RyYWN0Q29udHJvbDogZ3JvdXAoKS5jb250cm9sc1tmaWVsZC5uYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJjb2xvcjogIzg4OGI5OVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5mb290ZXIuaGVscC50ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWVsZC5mb290ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmZvb3Rlci5saW5rPy52aXNpYmxlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdENvbnRyb2w6IGdyb3VwKCkuY29udHJvbHNbZmllbGQubmFtZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWktZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTE3cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZmllbGQuZm9vdGVyLmxpbms/LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5mb290ZXIubGluaz8ub25DbGljayh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3RDb250cm9sOiBncm91cCgpLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1GaWVsZDogZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV4aWxpYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3MtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWVsZC5ib3R0b21UZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmllbGQuYm90dG9tVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgZ3JpZENsYXNzID0gZmllbGRHcmlkQ2xhc3MoZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdyaWRDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqc0R5bmFtaWNGb3JtPVwieyBpZDogaWQoKSwgY29uZmlnOiBmaWVsZCwgZ3JvdXA6IGdyb3VwKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuXG4iXX0=
|