ets-fe-ng-sdk 17.0.308 → 17.0.310
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/esm2022/lib/Reusables/reusable-comps/find-item/find-item.component.mjs +2 -2
- package/esm2022/lib/Shared/components/btn/btn.model.mjs +1 -1
- package/esm2022/lib/Shared/components/btn/btn.service.mjs +168 -164
- package/esm2022/lib/Shared/components/editable-text-case/editable-text-case.component.mjs +2 -2
- package/esm2022/lib/Shared/components/file-upload/file-upload.component.mjs +17 -5
- package/esm2022/lib/Shared/components/form-generator/form-generator.base.component.mjs +1 -1
- package/esm2022/lib/Shared/components/form-generator/form-generator.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/day-hour-min-input/day-hour-min-input.component.mjs +1 -1
- package/esm2022/lib/Shared/components/input/input-base.component.mjs +6 -2
- package/esm2022/lib/Shared/components/input/input-basic.component.mjs +3 -7
- package/esm2022/lib/Shared/components/input/input-control.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/input-td-rf.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/input.component.mjs +3 -3
- package/esm2022/lib/Shared/components/input/validation-message/validation-message.component.mjs +6 -10
- package/esm2022/lib/Shared/components/input-table/input-table.component.mjs +2 -2
- package/esm2022/lib/Shared/components/table-input/table-input-row/table-input-row.component.mjs +2 -2
- package/esm2022/lib/Shared/components/table-plain/table-plain.component.mjs +2 -2
- package/esm2022/lib/Shared/components/webcam-media/webcam-media.component.mjs +266 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ets-fe-ng-sdk.mjs +548 -283
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/utility.service.d.ts +1 -1
- package/lib/Shared/components/btn/btn.component.d.ts +1 -1
- package/lib/Shared/components/btn/btn.model.d.ts +1 -1
- package/lib/Shared/components/btn/btn.service.d.ts +7 -0
- package/lib/Shared/components/file-upload/file-upload.component.d.ts +9 -3
- package/lib/Shared/components/form-generator/form-generator.base.component.d.ts +2 -0
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/components/input/input-base.component.d.ts +3 -1
- package/lib/Shared/components/input/input-basic.component.d.ts +1 -3
- package/lib/Shared/components/input/validation-message/validation-message.component.d.ts +3 -3
- package/lib/Shared/components/webcam-media/webcam-media.component.d.ts +88 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -262,7 +262,7 @@ export class InputTableComponent {
|
|
|
262
262
|
this.downloadCSV([this.templateObj], 'template ' + this.label);
|
|
263
263
|
}
|
|
264
264
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InputTableComponent, deps: [{ token: i1.UtilityService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
265
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: InputTableComponent, isStandalone: true, selector: "app-input-table", inputs: { bordered: "bordered", ioFormatted: "ioFormatted", keyField: "keyField", label: "label", pageSizeOptions: "pageSizeOptions", realTimeValidation: "realTimeValidation", showAddRow: "showAddRow", showCSV: "showCSV", showEditRow: "showEditRow", showExportBtn: "showExportBtn", showIOBtns: "showIOBtns", showSN: "showSN", submitFunc: "submitFunc", validationFunc: "validationFunc", _numOfRows: ["numOfRows", "_numOfRows"], _schemas: ["schemas", "_schemas"], _data: ["data", "_data"] }, outputs: { submitted: "submitted" }, viewQueries: [{ propertyName: "errorListTag", first: true, predicate: ["errorList"], descendants: true }], ngImport: i0, template: "<loader [loading]=\"loading\"> \n <div [ngClass]=\"{ border: bordered, unbordered: !bordered }\">\n <div class=\"overflow-auto position-relative\">\n <!-- <div class=\"overflow-auto position-relative\" PSBox> -->\n <table matSort (matSortChange)=\"sortData($event)\" class=\"w-100 d-table mb-0 input-table\">\n <thead>\n <tr class=\"text-primary\">\n @if (showSN) {\n <th class=\"text-center\">{{ 'S/N' | appTranslate | async }}</th>\n }\n @for (item of schemas; track item) {\n\n @if (!item.hidden) {\n <th mat-sort-header=\"{{ item[keyField|toAny] }}\">\n {{ item.label | appTranslate | async }}\n </th>\n }\n\n }\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (\n subForm of form.controls|toAny; track subFormTrackBy(si,\n subForm); let si = $index) {\n <tr [id]=\"subForm.value.__rowID\">\n @if (showSN) {\n <td>\n <div class=\"center\">{{ si + 1 }}</div>\n </td>\n }\n @for (scheme of schemas; track schemeTrackBy(ci, scheme); let ci = $index) {\n\n <td class=\"content-cell\" [hidden]=\"scheme.hidden\">\n\n @switch (true) {\n @case (scheme.type == 'tel') {\n\n <app-phone-number [form]=\"subForm\" [label]=\"scheme.label\" [name]=\"scheme[keyField]\"\n [id]=\"subForm.value.__rowID|toAny\" [showLabel]=\"false\" [showValidation]=\"scheme.showValidation\"\n [showValidationIcon]=\"scheme.showValidationIcon\" [stacked]=\"true\" [countryCode3]=\"\n cellCountryCode3s[scheme.getCountryCode3Key+si] || scheme.countryCode3\n \" [disabled]=\"\n scheme.disabledIf\n | functionCaller2: subForm.value:scheme[keyField]\n \" #inputTag>\n </app-phone-number>\n <app-validation-message [input]=\"inputTag\" />\n\n }\n @case (scheme.type == 'autocomplete') {\n\n <app-autocomplete [form]=\"subForm\" [label]=\"scheme.label\" [labelField]=\"scheme.labelField\"\n [id]=\"subForm.value.__rowID|toAny\" [autoPickValueField]=\"true\" [labelType]=\"scheme.labelType\"\n [name]=\"scheme[keyField|toAny]\" [optionFormatter]=\"scheme.optionFormatter\" [showLabel]=\"false\"\n [stacked]=\"true\" [valueField]=\"scheme.valueField\" (mchange)=\"addCellOption(scheme,subForm,$event,si)\"\n [options]=\"\n scheme.options||schemaMap[scheme.field|toAny]?.options||cellOptions[scheme.optionsKey+si]\n \" [hint]=\"scheme.hint\" [disabled]=\"\n scheme.disabledIf\n | functionCaller2: subForm.value:scheme[keyField]\n \" #inputTag></app-autocomplete>\n <app-validation-message [input]=\"inputTag\" />\n\n }\n @default {\n\n <app-input-basic #inputTag [decimalPoints]=\"scheme.decimalPoints\" [form]=\"subForm\"\n [id]=\"subForm.value.__rowID|toAny\" [hint]=\"scheme.hint\" [label]=\"scheme.label\"\n [labelField]=\"scheme.labelField\" [autoPickValueField]=\"true\" [labelType]=\"scheme.labelType\"\n [max]=\"scheme.max\" [min]=\"scheme.min\" [name]=\"scheme[keyField|toAny]\"\n [optionFormatter]=\"scheme.optionFormatter\" [placeholder]=\"scheme.placeholder\" [showLabel]=\"false\"\n [showValidation]=\"scheme.showValidation\" [showValidationIcon]=\"scheme.showValidationIcon\"\n [type]=\"scheme.type\" [valueField]=\"scheme.valueField\"\n (mchange)=\"addCellOption(scheme,subForm,$event,si)\" [options]=\"\n scheme.options||schemaMap[scheme.field|toAny]?.options||cellOptions[scheme.optionsKey+si]\n \" [disabled]=\"\n scheme.disabledIf\n | functionCaller2: subForm.value:scheme[keyField]\n \" />\n <app-validation-message [input]=\"inputTag\" />\n\n }\n }\n\n </td>\n\n }\n <td>\n <div class=\"d-flex justify-content-center\">\n @if (showEditRow) {\n\n <app-btn group=\"edit\" (mclick)=\"editRow(si)\"></app-btn>\n <span class=\"mx-1\"></span>\n\n }\n <app-btn group=\"delete\" (mclick)=\"removeRow(si)\"></app-btn>\n @if (showAddRow) {\n\n <span class=\"mx-1\"></span>\n <app-btn group=\"add\" (mclick)=\"addRow(si + 1)\"></app-btn>\n\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n <!-- <mat-paginator *ngIf=\"batchUpload\" [length]=\"form?.length\" [pageSize]=\"pageSizeOptions[0]\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"openPage($event)\" aria-label=\"Select page\">\n </mat-paginator> -->\n <!-- <mat-paginator [length]=\"thi\" [pageSizeOptions]=\"pageSizeOptions\" [pageSize]=\"pageSize\"\n showFirstLastButtons>\n </mat-paginator> -->\n </div>\n @if (submitFunc) {\n <div class=\"row align-items-center justify-content-end mt-3\">\n <div class=\"col-auto d-flex\">\n <app-btn (mclick)=\"submit()\" text=\"Submit\" [form]=\"form\" type=\"secondary\" icon=\"save\">\n </app-btn>\n </div>\n </div>\n }\n</loader>", styles: ["tr{vertical-align:top}.content-cell{min-width:200px}th:first-child,td:first-child{position:sticky;left:0;z-index:2}th{position:sticky;left:0;z-index:1;font-weight:500}th:last-child,td:last-child{position:sticky;right:0;z-index:2;width:1%}th,td{background-color:#fff;padding:5px}.border th,.border td{border:1px solid #d4d4d4}.unbordered th,.unbordered td{border:none}::ng-deep .mat-sort-header-content{overflow:auto;white-space:nowrap}::ng-deep .mat-expansion-panel-header{padding:0 10px!important}::ng-deep .mat-expansion-panel-body{padding:0 10px!important}.invalidRow td,td.invalidCell{background-color:#ffe4e4}\n"], dependencies: [{ kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: PhoneNumberComponent, selector: "app-phone-number", inputs: ["showLabel", "countryCode3", "config"], outputs: ["onCountrySelect"] }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"] }, { kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "input", "contextData", "decimalPoints", "files", "hide", "hint", "labelLink", "lblCl", "light", "loading", "
|
|
265
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: InputTableComponent, isStandalone: true, selector: "app-input-table", inputs: { bordered: "bordered", ioFormatted: "ioFormatted", keyField: "keyField", label: "label", pageSizeOptions: "pageSizeOptions", realTimeValidation: "realTimeValidation", showAddRow: "showAddRow", showCSV: "showCSV", showEditRow: "showEditRow", showExportBtn: "showExportBtn", showIOBtns: "showIOBtns", showSN: "showSN", submitFunc: "submitFunc", validationFunc: "validationFunc", _numOfRows: ["numOfRows", "_numOfRows"], _schemas: ["schemas", "_schemas"], _data: ["data", "_data"] }, outputs: { submitted: "submitted" }, viewQueries: [{ propertyName: "errorListTag", first: true, predicate: ["errorList"], descendants: true }], ngImport: i0, template: "<loader [loading]=\"loading\"> \n <div [ngClass]=\"{ border: bordered, unbordered: !bordered }\">\n <div class=\"overflow-auto position-relative\">\n <!-- <div class=\"overflow-auto position-relative\" PSBox> -->\n <table matSort (matSortChange)=\"sortData($event)\" class=\"w-100 d-table mb-0 input-table\">\n <thead>\n <tr class=\"text-primary\">\n @if (showSN) {\n <th class=\"text-center\">{{ 'S/N' | appTranslate | async }}</th>\n }\n @for (item of schemas; track item) {\n\n @if (!item.hidden) {\n <th mat-sort-header=\"{{ item[keyField|toAny] }}\">\n {{ item.label | appTranslate | async }}\n </th>\n }\n\n }\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (\n subForm of form.controls|toAny; track subFormTrackBy(si,\n subForm); let si = $index) {\n <tr [id]=\"subForm.value.__rowID\">\n @if (showSN) {\n <td>\n <div class=\"center\">{{ si + 1 }}</div>\n </td>\n }\n @for (scheme of schemas; track schemeTrackBy(ci, scheme); let ci = $index) {\n\n <td class=\"content-cell\" [hidden]=\"scheme.hidden\">\n\n @switch (true) {\n @case (scheme.type == 'tel') {\n\n <app-phone-number [form]=\"subForm\" [label]=\"scheme.label\" [name]=\"scheme[keyField]\"\n [id]=\"subForm.value.__rowID|toAny\" [showLabel]=\"false\" [showValidation]=\"scheme.showValidation\"\n [showValidationIcon]=\"scheme.showValidationIcon\" [stacked]=\"true\" [countryCode3]=\"\n cellCountryCode3s[scheme.getCountryCode3Key+si] || scheme.countryCode3\n \" [disabled]=\"\n scheme.disabledIf\n | functionCaller2: subForm.value:scheme[keyField]\n \" #inputTag>\n </app-phone-number>\n <app-validation-message [input]=\"inputTag\" />\n\n }\n @case (scheme.type == 'autocomplete') {\n\n <app-autocomplete [form]=\"subForm\" [label]=\"scheme.label\" [labelField]=\"scheme.labelField\"\n [id]=\"subForm.value.__rowID|toAny\" [autoPickValueField]=\"true\" [labelType]=\"scheme.labelType\"\n [name]=\"scheme[keyField|toAny]\" [optionFormatter]=\"scheme.optionFormatter\" [showLabel]=\"false\"\n [stacked]=\"true\" [valueField]=\"scheme.valueField\" (mchange)=\"addCellOption(scheme,subForm,$event,si)\"\n [options]=\"\n scheme.options||schemaMap[scheme.field|toAny]?.options||cellOptions[scheme.optionsKey+si]\n \" [hint]=\"scheme.hint\" [disabled]=\"\n scheme.disabledIf\n | functionCaller2: subForm.value:scheme[keyField]\n \" #inputTag></app-autocomplete>\n <app-validation-message [input]=\"inputTag\" />\n\n }\n @default {\n\n <app-input-basic #inputTag [decimalPoints]=\"scheme.decimalPoints\" [form]=\"subForm\"\n [id]=\"subForm.value.__rowID|toAny\" [hint]=\"scheme.hint\" [label]=\"scheme.label\"\n [labelField]=\"scheme.labelField\" [autoPickValueField]=\"true\" [labelType]=\"scheme.labelType\"\n [max]=\"scheme.max\" [min]=\"scheme.min\" [name]=\"scheme[keyField|toAny]\"\n [optionFormatter]=\"scheme.optionFormatter\" [placeholder]=\"scheme.placeholder\" [showLabel]=\"false\"\n [showValidation]=\"scheme.showValidation\" [showValidationIcon]=\"scheme.showValidationIcon\"\n [type]=\"scheme.type\" [valueField]=\"scheme.valueField\"\n (mchange)=\"addCellOption(scheme,subForm,$event,si)\" [options]=\"\n scheme.options||schemaMap[scheme.field|toAny]?.options||cellOptions[scheme.optionsKey+si]\n \" [disabled]=\"\n scheme.disabledIf\n | functionCaller2: subForm.value:scheme[keyField]\n \" />\n <app-validation-message [input]=\"inputTag\" />\n\n }\n }\n\n </td>\n\n }\n <td>\n <div class=\"d-flex justify-content-center\">\n @if (showEditRow) {\n\n <app-btn group=\"edit\" (mclick)=\"editRow(si)\"></app-btn>\n <span class=\"mx-1\"></span>\n\n }\n <app-btn group=\"delete\" (mclick)=\"removeRow(si)\"></app-btn>\n @if (showAddRow) {\n\n <span class=\"mx-1\"></span>\n <app-btn group=\"add\" (mclick)=\"addRow(si + 1)\"></app-btn>\n\n }\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n <!-- <mat-paginator *ngIf=\"batchUpload\" [length]=\"form?.length\" [pageSize]=\"pageSizeOptions[0]\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"openPage($event)\" aria-label=\"Select page\">\n </mat-paginator> -->\n <!-- <mat-paginator [length]=\"thi\" [pageSizeOptions]=\"pageSizeOptions\" [pageSize]=\"pageSize\"\n showFirstLastButtons>\n </mat-paginator> -->\n </div>\n @if (submitFunc) {\n <div class=\"row align-items-center justify-content-end mt-3\">\n <div class=\"col-auto d-flex\">\n <app-btn (mclick)=\"submit()\" text=\"Submit\" [form]=\"form\" type=\"secondary\" icon=\"save\">\n </app-btn>\n </div>\n </div>\n }\n</loader>", styles: ["tr{vertical-align:top}.content-cell{min-width:200px}th:first-child,td:first-child{position:sticky;left:0;z-index:2}th{position:sticky;left:0;z-index:1;font-weight:500}th:last-child,td:last-child{position:sticky;right:0;z-index:2;width:1%}th,td{background-color:#fff;padding:5px}.border th,.border td{border:1px solid #d4d4d4}.unbordered th,.unbordered td{border:none}::ng-deep .mat-sort-header-content{overflow:auto;white-space:nowrap}::ng-deep .mat-expansion-panel-header{padding:0 10px!important}::ng-deep .mat-expansion-panel-body{padding:0 10px!important}.invalidRow td,td.invalidCell{background-color:#ffe4e4}\n"], dependencies: [{ kind: "component", type: LoaderComponent, selector: "loader", inputs: ["class", "text", "loading", "height"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: PhoneNumberComponent, selector: "app-phone-number", inputs: ["showLabel", "countryCode3", "config"], outputs: ["onCountrySelect"] }, { kind: "component", type: ValidationMessageComponent, selector: "app-validation-message", inputs: ["debug", "label", "hideOverflow", "minLength", "maxLength", "ignoreDirtiness", "customMessage", "control", "input"] }, { kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "input", "contextData", "decimalPoints", "files", "hide", "hint", "labelLink", "lblCl", "light", "loading", "multiple", "optionsFunc", "theme", "vms", "xsmall", "setCurrentDate", "options", "mvalue"], outputs: ["mSelectOptionChange", "mSelectedOptionLabel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FunctionCaller2, name: "functionCaller2" }, { kind: "pipe", type: ToAnyPipe, name: "toAny" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
|
|
266
266
|
}
|
|
267
267
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: InputTableComponent, decorators: [{
|
|
268
268
|
type: Component,
|
|
@@ -313,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
313
313
|
function compare(a, b, isAsc) {
|
|
314
314
|
return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
|
|
315
315
|
}
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2lucHV0LXRhYmxlL2lucHV0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC10YWJsZS9pbnB1dC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUFFLFNBQVMsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBUSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9B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UyxFQUFFLGFBQWEsQ0FBQzttSEFHNVIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFha0IsVUFBVTtzQkFBakMsS0FBSzt1QkFBQyxXQUFXO2dCQUlJLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsU0FBUztnQkFVRyxLQUFLO3NCQUF2QixLQUFLO3VCQUFDLE1BQU07Z0JBSVcsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXOztBQXlPeEIsU0FBUyxPQUFPLENBQUMsQ0FBa0IsRUFBRSxDQUFrQixFQUFFLEtBQWM7SUFDckUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgVW50eXBlZEZvcm1BcnJheSxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUFycmF5LFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgU29ydCwgTWF0U29ydE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnOyBcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJzsgXG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJSW5wdXRUYWJsZVNjaGVtZSwgSVZhbGlkYXRpb25SZXNwIH0gZnJvbSAnLi9pbnB1dC10YWJsZS5tb2RlbCc7IFxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gXCIuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZVwiO1xuaW1wb3J0IHsgSW5wdXRCYXNpY0NvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L3ZhbGlkYXRpb24tbWVzc2FnZS92YWxpZGF0aW9uLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBob25lTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcGhvbmUtbnVtYmVyL3Bob25lLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtY29udHJvbC5jb21wb25lbnQnOyBcbmltcG9ydCB7IE5nSWYsIE5nQ2xhc3MsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJRm9ybU9wdGlvbnMsIElGb3JtU2NoZW1hIH0gZnJvbSAnLi4vZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICAvLyBcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtMb2FkZXJDb21wb25lbnQsIE5nSWYsICAgSW5wdXRDb250cm9sQ29tcG9uZW50LCBCdG5Db21wb25lbnQsIE5nQ2xhc3MsIE1hdFNvcnRNb2R1bGUsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBQaG9uZU51bWJlckNvbXBvbmVudCwgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsIEF1dG9jb21wbGV0ZUNvbXBvbmVudCwgTmdTd2l0Y2hEZWZhdWx0LCBJbnB1dEJhc2ljQ29tcG9uZW50LCBBc3luY1BpcGUsIEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlLCBUcmFuc2xhdGVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYm9yZGVyZWQgPSB0cnVlO1xuICBASW5wdXQoKSBpb0Zvcm1hdHRlZCA9IHRydWU7XG4gIEBJbnB1dCgpIGtleUZpZWxkOiAnZmllbGQnIHwgJ2xhYmVsJyA9ICdmaWVsZCc7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgNTAsIDEwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDUwMDBdO1xuICBASW5wdXQoKSByZWFsVGltZVZhbGlkYXRpb24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93QWRkUm93ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0NTViA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dFZGl0Um93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dFeHBvcnRCdG4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93SU9CdG5zID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NOID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzdWJtaXRGdW5jOiAoYXJyVmFsdWVzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+O1xuICBASW5wdXQoKSB2YWxpZGF0aW9uRnVuYzogKGFyclZhbDogYW55W10pID0+IFByb21pc2U8SVZhbGlkYXRpb25SZXNwPGFueT5bXT47XG4gIGRhdGE6IGFueVtdO1xuICBmb3JtID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcbiAgY2VsbE9wdGlvbnM6IElGb3JtT3B0aW9ucyA9IHt9O1xuICBjZWxsQ291bnRyeUNvZGUzczogSUZvcm1PcHRpb25zID0ge307XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIG51bU9mUm93c0N0cmw6IEZvcm1Db250cm9sO1xuICBzY2hlbWFzOiBJSW5wdXRUYWJsZVNjaGVtZVtdID0gW107XG4gIHRlbXBsYXRlT2JqOiB7fTtcbiAgcHJpdmF0ZSBoYXNBZGRlZFZhbGlkYXRvcnM6IGJvb2xlYW47XG4gIGxvYWRpbmdFcnJvckxpc3Q6IGJvb2xlYW47XG4gIGVycm9yczogSVZhbGlkYXRpb25SZXNwPGFueT5bXTtcbiAgYUVycm9yczogSVZhbGlkYXRpb25SZXNwPGFueT5bXTtcbiAgQElucHV0KCdudW1PZlJvd3MnKSBzZXQgX251bU9mUm93cyh2OiBudW1iZXIpIHtcbiAgICBpZiAodikgdGhpcy5udW1PZlJvd3NDdHJsID0gbmV3IEZvcm1Db250cm9sKHYpO1xuICAgIGVsc2UgdGhpcy5udW1PZlJvd3NDdHJsID0gbnVsbDtcbiAgfVxuICBASW5wdXQoJ3NjaGVtYXMnKSBzZXQgX3NjaGVtYXModmFsdWU6IElJbnB1dFRhYmxlU2NoZW1lW10pIHtcbiAgICB2YWx1ZS5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICB4LnR5cGUgPSB4LnR5cGUgfHwgJ3RleHQnO1xuICAgICAgeC5fX0lEID0gdGhpcy51Uy5nZW5SYW5kb21JRDtcbiAgICAgIHRoaXMuc2NoZW1hTWFwW3guZmllbGQgYXMgc3RyaW5nXSA9IHg7XG4gICAgfSk7XG4gICAgdGhpcy5zY2hlbWFzID0gdmFsdWU7XG4gICAgXG4gICAgdGhpcy5pbml0aWF0ZUZvcm0odmFsdWUpO1xuICB9XG4gIEBJbnB1dCgnZGF0YScpIHNldCBfZGF0YSh2YWx1ZTogYW55W10pIHtcbiAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcbiAgfVxuICBzY2hlbWFNYXA6IHsgW3g6IHN0cmluZ106IElJbnB1dFRhYmxlU2NoZW1lIH0gPSB7fTtcbiAgQFZpZXdDaGlsZCgnZXJyb3JMaXN0JykgZXJyb3JMaXN0VGFnOiBNb2RhbENvbXBvbmVudDtcbiAgY29uc3RydWN0b3IocHVibGljIHVTOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIHRoaXMuaW5pdGlhdGVGb3JtKClcblxuICAgIHRoaXMuZm9ybS5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICB9IFxuICBhZGRDZWxsT3B0aW9uID0gYXN5bmMgKFxuICAgIHNjaGVtZTogSUZvcm1TY2hlbWEsXG4gICAgZm9ybTogRm9ybUdyb3VwLFxuICAgIGNlbGxWYWw6IGFueSxcbiAgICBpbmRleDogbnVtYmVyXG4gICkgPT4ge1xuICAgIGlmIChcbiAgICAgICghc2NoZW1lLm9uQ2hhbmdlRnVuYyAmJiAhc2NoZW1lLnNldEFzQ291bnRyeUNvZGUzKSB8fFxuICAgICAgZm9ybS5jb250cm9sc1tzY2hlbWUuZmllbGQgYXMgc3RyaW5nXS5pbnZhbGlkXG4gICAgKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGFyciA9IGF3YWl0ICg8T2JzZXJ2YWJsZTxhbnlbXT4+KFxuICAgICAgc2NoZW1lLm9uQ2hhbmdlRnVuYyhmb3JtLnZhbHVlLCBjZWxsVmFsKVxuICAgICkpLnRvUHJvbWlzZSgpO1xuICAgIHRoaXMuY2VsbE9wdGlvbnNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpICsgaW5kZXhdID0gYXJyO1xuICAgIGlmIChzY2hlbWUuc2V0QXNDb3VudHJ5Q29kZTMpXG4gICAgICB0aGlzLmNlbGxDb3VudHJ5Q29kZTNzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKSArIGluZGV4XSA9IGNlbGxWYWw7XG4gIH07XG5cbiAgaW5pdGlhdGVGb3JtKF9zY2hlbWFzID0gdGhpcy5zY2hlbWFzKSB7XG4gICAgaWYgKCFfc2NoZW1hcykgcmV0dXJuO1xuICAgIGlmICh0aGlzLmRhdGE/Lmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YSkge1xuICAgICAgICB0aGlzLmFkZFJvdyhudWxsLCB0aGlzLmNyZWF0ZVJvd0Zvcm0oaXRlbSwgX3NjaGVtYXMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2VcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTsgaSsrKSB7XG4gICAgICAgIHRoaXMuYWRkUm93KGksIHRoaXMuY3JlYXRlUm93Rm9ybShudWxsLCBfc2NoZW1hcykpO1xuICAgICAgfVxuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIF9zY2hlbWFzKSB7XG4gICAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYykge1xuICAgICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jLnN1YnNjcmliZShcbiAgICAgICAgICAocikgPT4gKHRoaXMuc2NoZW1hTWFwW3NjaGVtZS5maWVsZCBhcyBzdHJpbmddLm9wdGlvbnMgPSByKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzb3J0RGF0YShzb3J0OiBTb3J0KSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZm9ybS5jb250cm9scy5zbGljZSgpO1xuICAgIGlmICghc29ydD8uYWN0aXZlIHx8IHNvcnQuZGlyZWN0aW9uID09PSAnJykge1xuICAgICAgdGhpcy5mb3JtID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoXG4gICAgICBkYXRhLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgaXNBc2MgPSBzb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYyc7XG4gICAgICAgIHJldHVybiBjb21wYXJlKGEudmFsdWVbc29ydC5hY3RpdmVdLCBiLnZhbHVlW3NvcnQuYWN0aXZlXSwgaXNBc2MpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG4gIGFzeW5jIHN1Ym1pdCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQgJiYgdGhpcy52YWxpZGF0aW9uRnVuYykgYXdhaXQgdGhpcy52YWxpZGF0ZUFzeW5jKCk7XG5cbiAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICB0aHJvdyBgUGxlYXNlIHJlc29sdmUgdGhlIGVycm9ycyBiZWZvcmUgc3VibWlzc2lvbmA7XG4gICAgICB9XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnN1Ym1pdEZ1bmModGhpcy5mb3JtPy52YWx1ZSk7XG4gICAgICB0aGlzLnVTLmluZm8oYCR7dGhpcy5sYWJlbH0gaGFzIGJlZW4gc3VibWl0dGVkIHN1Y2Nlc3NmdWxseWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHRoaXMudVMuaW5mbyhlcnJvciwgMCk7XG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBkaXNhYmxlUm93cyhpbmRleD86IG51bWJlcikge1xuICAgIGlmIChpbmRleCkgdGhpcy5mb3JtLmNvbnRyb2xzW2luZGV4XT8uZGlzYWJsZSgpO1xuICAgIGVsc2UgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgfVxuICBlbmFibGVSb3dzKCkge1xuICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgfVxuICBzdWJGb3JtVHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpID0+IHtcbiAgICByZXR1cm4gaXRlbS52YWx1ZS5fX3Jvd0lEO1xuICB9O1xuICBzY2hlbWVUcmFja0J5ID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IElJbnB1dFRhYmxlU2NoZW1lKSA9PiB7XG4gICAgcmV0dXJuIGl0ZW0uX19JRDtcbiAgfTtcbiAgZWRpdFJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb3JtPy5jb250cm9sc1tpbmRleF0/LmRpc2FibGVkXG4gICAgICA/IHRoaXMuZm9ybT8uY29udHJvbHNbaW5kZXhdLmVuYWJsZSgpXG4gICAgICA6IHRoaXMuZm9ybT8uY29udHJvbHNbaW5kZXhdLmRpc2FibGUoKTtcbiAgfVxuXG4gIHJlbW92ZVJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZm9ybT8uY29udHJvbHM/Lmxlbmd0aCA9PSAxKSB0aGlzLmZvcm0uY29udHJvbHNbMF0/LnJlc2V0KCk7XG4gICAgZWxzZSB0aGlzLmZvcm0ucmVtb3ZlQXQoaW5kZXgpO1xuICB9XG5cbiAgY3JlYXRlUm93Rm9ybSA9IChkYXRhPzogYW55LCBfc2NoZW1hcyA9IHRoaXMuc2NoZW1hcykgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICghX3NjaGVtYXM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgY29udHJvbHM6IHsgW3g6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbCB9ID0ge1xuICAgICAgX19yb3dJRDogbmV3IEZvcm1Db250cm9sKHRoaXMudVMuZ2VuUmFuZG9tSUQpLFxuICAgIH07XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIF9zY2hlbWFzKSB7XG4gICAgICBjb250cm9sc1tpdGVtW3RoaXMua2V5RmllbGQgYXMgc3RyaW5nXV0gPSBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgIGl0ZW0udmFsdWUsXG4gICAgICAgIHRoaXMucmVhbFRpbWVWYWxpZGF0aW9uID8gaXRlbS52YWxpZGF0b3JzIDogbnVsbCxcbiAgICAgICAgdGhpcy5yZWFsVGltZVZhbGlkYXRpb24gPyBpdGVtLmFzeW5jVmFsaWRhdG9ycyA6IG51bGxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybUdyb3VwKGNvbnRyb2xzKTtcbiAgICBpZiAoZGF0YSkgZm9ybS5wYXRjaFZhbHVlKGRhdGEpO1xuICAgIHJldHVybiBmb3JtO1xuICB9O1xuXG4gIGdldCBmb3JtSXNQZW5kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uc3RhdHVzID09ICdQRU5ESU5HJztcbiAgfVxuXG4gIGxvZ0Zvcm0oKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5mb3JtKTtcbiAgfVxuICBqdW1wVG8ocm93aWQ6IHN0cmluZykge1xuICAgIGlmIChyb3dpZClcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHJvd2lkKS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnYXV0bycgfSk7XG4gIH1cbiAgc2hvd0Vycm9ycygpIHtcbiAgICB0aGlzLmxvYWRpbmdFcnJvckxpc3QgPSB0cnVlO1xuICAgIGlmICghdGhpcy5lcnJvcnM/Lmxlbmd0aClcbiAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLmZvcm0uY29udHJvbHMubGVuZ3RoOyByb3dJbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm0uY29udHJvbHNbcm93SW5kZXhdO1xuICAgICAgICBpZiAoIWZvcm0uaW52YWxpZCkgY29udGludWU7XG4gICAgICAgIGNvbnN0IGVycjogSVZhbGlkYXRpb25SZXNwPGFueT4gPSB7XG4gICAgICAgICAgcm93SUQ6IGZvcm0udmFsdWUuX19yb3dJRCxcbiAgICAgICAgICByb3dJbmRleDogcm93SW5kZXggKyAxLFxuICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3QgY3RybEtleSBpbiBmb3JtLmNvbnRyb2xzKSB7XG4gICAgICAgICAgY29uc3QgY3RybCA9IGZvcm0uY29udHJvbHNbY3RybEtleV07XG4gICAgICAgICAgaWYgKCFjdHJsLmludmFsaWQpIGNvbnRpbnVlO1xuICAgICAgICAgIGZvciAoY29uc3QgZXJyS2V5IGluIGN0cmwuZXJyb3JzKSB7XG4gICAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIGVyci5lcnJvcnMucHVzaChjdHJsLmVycm9yc1tlcnJLZXldICsgJyAnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy5lcnJvcnMgPSBbZXJyXTtcbiAgICAgICAgdGhpcy5lcnJvcnMucHVzaChlcnIpO1xuICAgICAgfVxuICAgIHRoaXMuZXJyb3JMaXN0VGFnLm9wZW4oKTtcbiAgICB0aGlzLmxvYWRpbmdFcnJvckxpc3QgPSBmYWxzZTtcbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgY29uc3Qgc3luY1NjaGVtYXMgPSB0aGlzLnNjaGVtYXMuZmlsdGVyKCh4KSA9PiB4LnZhbGlkYXRvcnM/Lmxlbmd0aCk7XG4gICAgZm9yIChjb25zdCBmb3JtIG9mIHRoaXMuZm9ybS5jb250cm9scykge1xuICAgICAgZm9yIChjb25zdCBzY2hlbWUgb2Ygc3luY1NjaGVtYXMpIHtcbiAgICAgICAgZm9ybS5jb250cm9sc1tzY2hlbWUuZmllbGQgYXMgc3RyaW5nXS5zZXRWYWxpZGF0b3JzKHNjaGVtZS52YWxpZGF0b3JzKTtcbiAgICAgICAgZm9ybS5jb250cm9sc1tzY2hlbWUuZmllbGQgYXMgc3RyaW5nXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgICBmb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB9XG4gICAgdGhpcy5oYXNBZGRlZFZhbGlkYXRvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICB9XG4gIGFzeW5jIHZhbGlkYXRlQXN5bmMoKSB7XG4gICAgdGhpcy5hRXJyb3JzID0gYXdhaXQgdGhpcy52YWxpZGF0aW9uRnVuYyh0aGlzLmZvcm0udmFsdWUpO1xuICAgIGNvbnN0IG1hcHA6IHsgW3g6IHN0cmluZ106IElWYWxpZGF0aW9uUmVzcDxhbnk+IH0gPSB7fTtcbiAgICB0aGlzLmFFcnJvcnM/LmZvckVhY2goKHgpID0+IChtYXBwW3gucm93SURdID0geCkpO1xuICAgIGZvciAoY29uc3QgZm9ybSBvZiB0aGlzLmZvcm0uY29udHJvbHMpIHtcbiAgICAgIGNvbnN0IHZSZXMgPSBtYXBwW2Zvcm0udmFsdWUuX19yb3dJRF07XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtLmNvbnRyb2xzKSB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSBmb3JtLmNvbnRyb2xzW2tleV07XG4gICAgICAgIGN0cmwuc2V0RXJyb3JzKHZSZXMuZGF0YVtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRSb3cgPSAoXG4gICAgaW5kZXg6IG51bWJlciA9IHRoaXMuZm9ybS5jb250cm9scy5sZW5ndGgsXG4gICAgZm9ybSA9IHRoaXMuY3JlYXRlUm93Rm9ybSgpXG4gICkgPT4ge1xuICAgIGlmICghZm9ybSkgcmV0dXJuIG51bGw7XG4gICAgdGhpcy5oYXNBZGRlZFZhbGlkYXRvcnMgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm0uaW5zZXJ0KGluZGV4LCBmb3JtKTtcbiAgICBpZiAodGhpcy5zaG93RWRpdFJvdykge1xuICAgICAgdGhpcy5kaXNhYmxlUm93cyhpbmRleCk7XG4gICAgfVxuICB9O1xuIFxuICBvcGVuUGFnZShlOiBQYWdlRXZlbnQpIHt9XG4gIFxuICBkb3dubG9hZENTVihyb3dzOiBhbnlbXSA9IHRoaXMuZm9ybS52YWx1ZSBhcyBhbnksIGxhYmVsID0gdGhpcy5sYWJlbCkge1xuICAgIGNvbnN0IGNzdkFycmF5ID1cbiAgICAgIGAke3RoaXMuc2NoZW1hc1xuICAgICAgICAubWFwKCh4KSA9PiAodGhpcy5pb0Zvcm1hdHRlZCA/IHgubGFiZWwgOiB4LmZpZWxkKSlcbiAgICAgICAgLmpvaW4oJywnKX1cXHJcXG5gICtcbiAgICAgIHJvd3NcbiAgICAgICAgLm1hcCgoeCkgPT4gdGhpcy5zY2hlbWFzLm1hcCgoeSkgPT4geFt5LmZpZWxkXSkuam9pbignLCcpKVxuICAgICAgICAuam9pbignXFxyXFxuJyk7XG4gICAgLy8gY29uc29sZS5sb2coY3N2QXJyYXkpO1xuICAgIC8vIGRlYnVnZ2VyXG5cbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY3N2QXJyYXldLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICBhLmhyZWYgPSB1cmw7XG4gICAgYS5kb3dubG9hZCA9IGAke2xhYmVsfSAke3RoaXMuc2NoZW1hcz8ubGVuZ3RofXgke3Jvd3M/Lmxlbmd0aH0uY3N2YDtcbiAgICBhLmNsaWNrKCk7XG4gICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICBhLnJlbW92ZSgpO1xuICB9XG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XG4gICAgaWYgKCF0aGlzLnRlbXBsYXRlT2JqKSB7XG4gICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNjaGVtYXMpIHtcbiAgICAgICAgb2JqW2l0ZW0uZmllbGRdID0gaXRlbS50ZW1wbGF0ZVZhbHVlO1xuICAgICAgfVxuICAgICAgdGhpcy50ZW1wbGF0ZU9iaiA9IG9iajtcbiAgICB9XG4gICAgdGhpcy5kb3dubG9hZENTVihbdGhpcy50ZW1wbGF0ZU9ial0sICd0ZW1wbGF0ZSAnICsgdGhpcy5sYWJlbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGFyZShhOiBudW1iZXIgfCBzdHJpbmcsIGI6IG51bWJlciB8IHN0cmluZywgaXNBc2M6IGJvb2xlYW4pIHtcbiAgcmV0dXJuIChhIDwgYiA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xufVxuIiwiPGxvYWRlciBbbG9hZGluZ109XCJsb2FkaW5nXCI+IFxuICA8ZGl2IFtuZ0NsYXNzXT1cInsgYm9yZGVyOiBib3JkZXJlZCwgdW5ib3JkZXJlZDogIWJvcmRlcmVkIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBwb3NpdGlvbi1yZWxhdGl2ZVwiIFBTQm94PiAtLT5cbiAgICAgIDx0YWJsZSBtYXRTb3J0IChtYXRTb3J0Q2hhbmdlKT1cInNvcnREYXRhKCRldmVudClcIiBjbGFzcz1cInctMTAwIGQtdGFibGUgbWItMCBpbnB1dC10YWJsZVwiPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICBAaWYgKHNob3dTTikge1xuICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyAnUy9OJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19PC90aD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc2NoZW1hczsgdHJhY2sgaXRlbSkge1xuXG4gICAgICAgICAgICBAaWYgKCFpdGVtLmhpZGRlbikge1xuICAgICAgICAgICAgPHRoIG1hdC1zb3J0LWhlYWRlcj1cInt7IGl0ZW1ba2V5RmllbGR8dG9BbnldIH19XCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgIHN1YkZvcm0gb2YgZm9ybS5jb250cm9sc3x0b0FueTsgdHJhY2sgc3ViRm9ybVRyYWNrQnkoc2ksXG4gICAgICAgICAgc3ViRm9ybSk7IGxldCBzaSA9ICRpbmRleCkge1xuICAgICAgICAgIDx0ciBbaWRdPVwic3ViRm9ybS52YWx1ZS5fX3Jvd0lEXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dTTikge1xuICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+e3sgc2kgKyAxIH19PC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoc2NoZW1lIG9mIHNjaGVtYXM7IHRyYWNrIHNjaGVtZVRyYWNrQnkoY2ksIHNjaGVtZSk7IGxldCBjaSA9ICRpbmRleCkge1xuXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJjb250ZW50LWNlbGxcIiBbaGlkZGVuXT1cInNjaGVtZS5oaWRkZW5cIj5cblxuICAgICAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAndGVsJykge1xuXG4gICAgICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyIFtmb3JtXT1cInN1YkZvcm1cIiBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCIgW25hbWVdPVwic2NoZW1lW2tleUZpZWxkXVwiXG4gICAgICAgICAgICAgICAgW2lkXT1cInN1YkZvcm0udmFsdWUuX19yb3dJRHx0b0FueVwiIFtzaG93TGFiZWxdPVwiZmFsc2VcIiBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIiBbc3RhY2tlZF09XCJ0cnVlXCIgW2NvdW50cnlDb2RlM109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2VsbENvdW50cnlDb2RlM3Nbc2NoZW1lLmdldENvdW50cnlDb2RlM0tleStzaV0gfHwgc2NoZW1lLmNvdW50cnlDb2RlM1xuICAgICAgICAgICAgICAgICAgICAgIFwiIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZElmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25DYWxsZXIyOiBzdWJGb3JtLnZhbHVlOnNjaGVtZVtrZXlGaWVsZF1cbiAgICAgICAgICAgICAgICAgICAgICBcIiAjaW5wdXRUYWc+XG4gICAgICAgICAgICAgIDwvYXBwLXBob25lLW51bWJlcj5cbiAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImlucHV0VGFnXCIgLz5cblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuXG4gICAgICAgICAgICAgIDxhcHAtYXV0b2NvbXBsZXRlIFtmb3JtXT1cInN1YkZvcm1cIiBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCIgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJzdWJGb3JtLnZhbHVlLl9fcm93SUR8dG9BbnlcIiBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInRydWVcIiBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGVcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZVtrZXlGaWVsZHx0b0FueV1cIiBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIiBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJ0cnVlXCIgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIiAobWNoYW5nZSk9XCJhZGRDZWxsT3B0aW9uKHNjaGVtZSxzdWJGb3JtLCRldmVudCxzaSlcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWUub3B0aW9uc3x8c2NoZW1hTWFwW3NjaGVtZS5maWVsZHx0b0FueV0/Lm9wdGlvbnN8fGNlbGxPcHRpb25zW3NjaGVtZS5vcHRpb25zS2V5K3NpXVxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtoaW50XT1cInNjaGVtZS5oaW50XCIgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkSWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbkNhbGxlcjI6IHN1YkZvcm0udmFsdWU6c2NoZW1lW2tleUZpZWxkXVxuICAgICAgICAgICAgICAgICAgICAgIFwiICNpbnB1dFRhZz48L2FwcC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJpbnB1dFRhZ1wiIC8+XG5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAZGVmYXVsdCB7XG5cbiAgICAgICAgICAgICAgPGFwcC1pbnB1dC1iYXNpYyAjaW5wdXRUYWcgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIiBbZm9ybV09XCJzdWJGb3JtXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwic3ViRm9ybS52YWx1ZS5fX3Jvd0lEfHRvQW55XCIgW2hpbnRdPVwic2NoZW1lLmhpbnRcIiBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiIFthdXRvUGlja1ZhbHVlRmllbGRdPVwidHJ1ZVwiIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZVwiXG4gICAgICAgICAgICAgICAgW21heF09XCJzY2hlbWUubWF4XCIgW21pbl09XCJzY2hlbWUubWluXCIgW25hbWVdPVwic2NoZW1lW2tleUZpZWxkfHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCIgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25cIiBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCIgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cImFkZENlbGxPcHRpb24oc2NoZW1lLHN1YkZvcm0sJGV2ZW50LHNpKVwiIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWUub3B0aW9uc3x8c2NoZW1hTWFwW3NjaGVtZS5maWVsZHx0b0FueV0/Lm9wdGlvbnN8fGNlbGxPcHRpb25zW3NjaGVtZS5vcHRpb25zS2V5K3NpXVxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZElmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25DYWxsZXIyOiBzdWJGb3JtLnZhbHVlOnNjaGVtZVtrZXlGaWVsZF1cbiAgICAgICAgICAgICAgICAgICAgICBcIiAvPlxuICAgICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbaW5wdXRdPVwiaW5wdXRUYWdcIiAvPlxuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd0VkaXRSb3cpIHtcblxuICAgICAgICAgICAgICAgIDxhcHAtYnRuIGdyb3VwPVwiZWRpdFwiIChtY2xpY2spPVwiZWRpdFJvdyhzaSlcIj48L2FwcC1idG4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxhcHAtYnRuIGdyb3VwPVwiZGVsZXRlXCIgKG1jbGljayk9XCJyZW1vdmVSb3coc2kpXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd0FkZFJvdykge1xuXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxhcHAtYnRuIGdyb3VwPVwiYWRkXCIgKG1jbGljayk9XCJhZGRSb3coc2kgKyAxKVwiPjwvYXBwLWJ0bj5cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIDxtYXQtcGFnaW5hdG9yICpuZ0lmPVwiYmF0Y2hVcGxvYWRcIiBbbGVuZ3RoXT1cImZvcm0/Lmxlbmd0aFwiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZU9wdGlvbnNbMF1cIlxuICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgKHBhZ2UpPVwib3BlblBhZ2UoJGV2ZW50KVwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgcGFnZVwiPlxuICAgIDwvbWF0LXBhZ2luYXRvcj4gLS0+XG4gICAgPCEtLSA8bWF0LXBhZ2luYXRvciAgW2xlbmd0aF09XCJ0aGlcIiBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM+XG4gIDwvbWF0LXBhZ2luYXRvcj4gLS0+XG4gIDwvZGl2PlxuICBAaWYgKHN1Ym1pdEZ1bmMpIHtcbiAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBtdC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGQtZmxleFwiPlxuICAgICAgPGFwcC1idG4gKG1jbGljayk9XCJzdWJtaXQoKVwiIHRleHQ9XCJTdWJtaXRcIiBbZm9ybV09XCJmb3JtXCIgdHlwZT1cInNlY29uZGFyeVwiIGljb249XCJzYXZlXCI+XG4gICAgICA8L2FwcC1idG4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB9XG48L2xvYWRlcj4iXX0=
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2lucHV0LXRhYmxlL2lucHV0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC10YWJsZS9pbnB1dC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUFFLFNBQVMsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBUSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9B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UyxFQUFFLGFBQWEsQ0FBQzttSEFHNVIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFha0IsVUFBVTtzQkFBakMsS0FBSzt1QkFBQyxXQUFXO2dCQUlJLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsU0FBUztnQkFVRyxLQUFLO3NCQUF2QixLQUFLO3VCQUFDLE1BQU07Z0JBSVcsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXOztBQXlPeEIsU0FBUyxPQUFPLENBQUMsQ0FBa0IsRUFBRSxDQUFrQixFQUFFLEtBQWM7SUFDckUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgVW50eXBlZEZvcm1BcnJheSxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUFycmF5LFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgU29ydCwgTWF0U29ydE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnOyBcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJzsgXG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJSW5wdXRUYWJsZVNjaGVtZSwgSVZhbGlkYXRpb25SZXNwIH0gZnJvbSAnLi9pbnB1dC10YWJsZS5tb2RlbCc7IFxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gXCIuLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZVwiO1xuaW1wb3J0IHsgSW5wdXRCYXNpY0NvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L3ZhbGlkYXRpb24tbWVzc2FnZS92YWxpZGF0aW9uLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBob25lTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcGhvbmUtbnVtYmVyL3Bob25lLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtY29udHJvbC5jb21wb25lbnQnOyBcbmltcG9ydCB7IE5nSWYsIE5nQ2xhc3MsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJRm9ybU9wdGlvbnMsIElGb3JtU2NoZW1hIH0gZnJvbSAnLi4vZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgICAvLyBcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtMb2FkZXJDb21wb25lbnQsIE5nSWYsICAgSW5wdXRDb250cm9sQ29tcG9uZW50LCBCdG5Db21wb25lbnQsIE5nQ2xhc3MsIE1hdFNvcnRNb2R1bGUsIE5nRm9yLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBQaG9uZU51bWJlckNvbXBvbmVudCwgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsIEF1dG9jb21wbGV0ZUNvbXBvbmVudCwgTmdTd2l0Y2hEZWZhdWx0LCBJbnB1dEJhc2ljQ29tcG9uZW50LCBBc3luY1BpcGUsIEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlLCBUcmFuc2xhdGVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYm9yZGVyZWQgPSB0cnVlO1xuICBASW5wdXQoKSBpb0Zvcm1hdHRlZCA9IHRydWU7XG4gIEBJbnB1dCgpIGtleUZpZWxkOiAnZmllbGQnIHwgJ2xhYmVsJyA9ICdmaWVsZCc7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IFs1LCAxMCwgNTAsIDEwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDUwMDBdO1xuICBASW5wdXQoKSByZWFsVGltZVZhbGlkYXRpb24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93QWRkUm93ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0NTViA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dFZGl0Um93ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dFeHBvcnRCdG4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93SU9CdG5zID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NOID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBzdWJtaXRGdW5jOiAoYXJyVmFsdWVzOiBhbnlbXSkgPT4gUHJvbWlzZTxhbnk+O1xuICBASW5wdXQoKSB2YWxpZGF0aW9uRnVuYzogKGFyclZhbDogYW55W10pID0+IFByb21pc2U8SVZhbGlkYXRpb25SZXNwPGFueT5bXT47XG4gIGRhdGE6IGFueVtdO1xuICBmb3JtID0gbmV3IEZvcm1BcnJheTxGb3JtR3JvdXA+KFtdKTtcbiAgY2VsbE9wdGlvbnM6IElGb3JtT3B0aW9ucyA9IHt9O1xuICBjZWxsQ291bnRyeUNvZGUzczogSUZvcm1PcHRpb25zID0ge307XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIG51bU9mUm93c0N0cmw6IEZvcm1Db250cm9sO1xuICBzY2hlbWFzOiBJSW5wdXRUYWJsZVNjaGVtZVtdID0gW107XG4gIHRlbXBsYXRlT2JqOiB7fTtcbiAgcHJpdmF0ZSBoYXNBZGRlZFZhbGlkYXRvcnM6IGJvb2xlYW47XG4gIGxvYWRpbmdFcnJvckxpc3Q6IGJvb2xlYW47XG4gIGVycm9yczogSVZhbGlkYXRpb25SZXNwPGFueT5bXTtcbiAgYUVycm9yczogSVZhbGlkYXRpb25SZXNwPGFueT5bXTtcbiAgQElucHV0KCdudW1PZlJvd3MnKSBzZXQgX251bU9mUm93cyh2OiBudW1iZXIpIHtcbiAgICBpZiAodikgdGhpcy5udW1PZlJvd3NDdHJsID0gbmV3IEZvcm1Db250cm9sKHYpO1xuICAgIGVsc2UgdGhpcy5udW1PZlJvd3NDdHJsID0gbnVsbDtcbiAgfVxuICBASW5wdXQoJ3NjaGVtYXMnKSBzZXQgX3NjaGVtYXModmFsdWU6IElJbnB1dFRhYmxlU2NoZW1lW10pIHtcbiAgICB2YWx1ZS5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICB4LnR5cGUgPSB4LnR5cGUgfHwgJ3RleHQnO1xuICAgICAgeC5fX0lEID0gdGhpcy51Uy5nZW5SYW5kb21JRDtcbiAgICAgIHRoaXMuc2NoZW1hTWFwW3guZmllbGQgYXMgc3RyaW5nXSA9IHg7XG4gICAgfSk7XG4gICAgdGhpcy5zY2hlbWFzID0gdmFsdWU7XG4gICAgXG4gICAgdGhpcy5pbml0aWF0ZUZvcm0odmFsdWUpO1xuICB9XG4gIEBJbnB1dCgnZGF0YScpIHNldCBfZGF0YSh2YWx1ZTogYW55W10pIHtcbiAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcbiAgfVxuICBzY2hlbWFNYXA6IHsgW3g6IHN0cmluZ106IElJbnB1dFRhYmxlU2NoZW1lIH0gPSB7fTtcbiAgQFZpZXdDaGlsZCgnZXJyb3JMaXN0JykgZXJyb3JMaXN0VGFnOiBNb2RhbENvbXBvbmVudDtcbiAgY29uc3RydWN0b3IocHVibGljIHVTOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIHRoaXMuaW5pdGlhdGVGb3JtKClcblxuICAgIHRoaXMuZm9ybS5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICB9IFxuICBhZGRDZWxsT3B0aW9uID0gYXN5bmMgKFxuICAgIHNjaGVtZTogSUZvcm1TY2hlbWEsXG4gICAgZm9ybTogRm9ybUdyb3VwLFxuICAgIGNlbGxWYWw6IGFueSxcbiAgICBpbmRleDogbnVtYmVyXG4gICkgPT4ge1xuICAgIGlmIChcbiAgICAgICghc2NoZW1lLm9uQ2hhbmdlRnVuYyAmJiAhc2NoZW1lLnNldEFzQ291bnRyeUNvZGUzKSB8fFxuICAgICAgZm9ybS5jb250cm9sc1tzY2hlbWUuZmllbGQgYXMgc3RyaW5nXS5pbnZhbGlkXG4gICAgKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGFyciA9IGF3YWl0ICg8T2JzZXJ2YWJsZTxhbnlbXT4+KFxuICAgICAgc2NoZW1lLm9uQ2hhbmdlRnVuYyhmb3JtLnZhbHVlLCBjZWxsVmFsKVxuICAgICkpLnRvUHJvbWlzZSgpO1xuICAgIHRoaXMuY2VsbE9wdGlvbnNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpICsgaW5kZXhdID0gYXJyO1xuICAgIGlmIChzY2hlbWUuc2V0QXNDb3VudHJ5Q29kZTMpXG4gICAgICB0aGlzLmNlbGxDb3VudHJ5Q29kZTNzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKSArIGluZGV4XSA9IGNlbGxWYWw7XG4gIH07XG5cbiAgaW5pdGlhdGVGb3JtKF9zY2hlbWFzID0gdGhpcy5zY2hlbWFzKSB7XG4gICAgaWYgKCFfc2NoZW1hcykgcmV0dXJuO1xuICAgIGlmICh0aGlzLmRhdGE/Lmxlbmd0aCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZGF0YSkge1xuICAgICAgICB0aGlzLmFkZFJvdyhudWxsLCB0aGlzLmNyZWF0ZVJvd0Zvcm0oaXRlbSwgX3NjaGVtYXMpKTtcbiAgICAgIH1cbiAgICB9IGVsc2VcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTsgaSsrKSB7XG4gICAgICAgIHRoaXMuYWRkUm93KGksIHRoaXMuY3JlYXRlUm93Rm9ybShudWxsLCBfc2NoZW1hcykpO1xuICAgICAgfVxuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIF9zY2hlbWFzKSB7XG4gICAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYykge1xuICAgICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jLnN1YnNjcmliZShcbiAgICAgICAgICAocikgPT4gKHRoaXMuc2NoZW1hTWFwW3NjaGVtZS5maWVsZCBhcyBzdHJpbmddLm9wdGlvbnMgPSByKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzb3J0RGF0YShzb3J0OiBTb3J0KSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZm9ybS5jb250cm9scy5zbGljZSgpO1xuICAgIGlmICghc29ydD8uYWN0aXZlIHx8IHNvcnQuZGlyZWN0aW9uID09PSAnJykge1xuICAgICAgdGhpcy5mb3JtID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoXG4gICAgICBkYXRhLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgaXNBc2MgPSBzb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYyc7XG4gICAgICAgIHJldHVybiBjb21wYXJlKGEudmFsdWVbc29ydC5hY3RpdmVdLCBiLnZhbHVlW3NvcnQuYWN0aXZlXSwgaXNBc2MpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG4gIGFzeW5jIHN1Ym1pdCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQgJiYgdGhpcy52YWxpZGF0aW9uRnVuYykgYXdhaXQgdGhpcy52YWxpZGF0ZUFzeW5jKCk7XG5cbiAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICB0aHJvdyBgUGxlYXNlIHJlc29sdmUgdGhlIGVycm9ycyBiZWZvcmUgc3VibWlzc2lvbmA7XG4gICAgICB9XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnN1Ym1pdEZ1bmModGhpcy5mb3JtPy52YWx1ZSk7XG4gICAgICB0aGlzLnVTLmluZm8oYCR7dGhpcy5sYWJlbH0gaGFzIGJlZW4gc3VibWl0dGVkIHN1Y2Nlc3NmdWxseWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHRoaXMudVMuaW5mbyhlcnJvciwgMCk7XG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBkaXNhYmxlUm93cyhpbmRleD86IG51bWJlcikge1xuICAgIGlmIChpbmRleCkgdGhpcy5mb3JtLmNvbnRyb2xzW2luZGV4XT8uZGlzYWJsZSgpO1xuICAgIGVsc2UgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgfVxuICBlbmFibGVSb3dzKCkge1xuICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgfVxuICBzdWJGb3JtVHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpID0+IHtcbiAgICByZXR1cm4gaXRlbS52YWx1ZS5fX3Jvd0lEO1xuICB9O1xuICBzY2hlbWVUcmFja0J5ID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IElJbnB1dFRhYmxlU2NoZW1lKSA9PiB7XG4gICAgcmV0dXJuIGl0ZW0uX19JRDtcbiAgfTtcbiAgZWRpdFJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb3JtPy5jb250cm9sc1tpbmRleF0/LmRpc2FibGVkXG4gICAgICA/IHRoaXMuZm9ybT8uY29udHJvbHNbaW5kZXhdLmVuYWJsZSgpXG4gICAgICA6IHRoaXMuZm9ybT8uY29udHJvbHNbaW5kZXhdLmRpc2FibGUoKTtcbiAgfVxuXG4gIHJlbW92ZVJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZm9ybT8uY29udHJvbHM/Lmxlbmd0aCA9PSAxKSB0aGlzLmZvcm0uY29udHJvbHNbMF0/LnJlc2V0KCk7XG4gICAgZWxzZSB0aGlzLmZvcm0ucmVtb3ZlQXQoaW5kZXgpO1xuICB9XG5cbiAgY3JlYXRlUm93Rm9ybSA9IChkYXRhPzogYW55LCBfc2NoZW1hcyA9IHRoaXMuc2NoZW1hcykgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICghX3NjaGVtYXM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgY29udHJvbHM6IHsgW3g6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbCB9ID0ge1xuICAgICAgX19yb3dJRDogbmV3IEZvcm1Db250cm9sKHRoaXMudVMuZ2VuUmFuZG9tSUQpLFxuICAgIH07XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIF9zY2hlbWFzKSB7XG4gICAgICBjb250cm9sc1tpdGVtW3RoaXMua2V5RmllbGQgYXMgc3RyaW5nXV0gPSBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgIGl0ZW0udmFsdWUsXG4gICAgICAgIHRoaXMucmVhbFRpbWVWYWxpZGF0aW9uID8gaXRlbS52YWxpZGF0b3JzIDogbnVsbCxcbiAgICAgICAgdGhpcy5yZWFsVGltZVZhbGlkYXRpb24gPyBpdGVtLmFzeW5jVmFsaWRhdG9ycyA6IG51bGxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybUdyb3VwKGNvbnRyb2xzKTtcbiAgICBpZiAoZGF0YSkgZm9ybS5wYXRjaFZhbHVlKGRhdGEpO1xuICAgIHJldHVybiBmb3JtO1xuICB9O1xuXG4gIGdldCBmb3JtSXNQZW5kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uc3RhdHVzID09ICdQRU5ESU5HJztcbiAgfVxuXG4gIGxvZ0Zvcm0oKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5mb3JtKTtcbiAgfVxuICBqdW1wVG8ocm93aWQ6IHN0cmluZykge1xuICAgIGlmIChyb3dpZClcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHJvd2lkKS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnYXV0bycgfSk7XG4gIH1cbiAgc2hvd0Vycm9ycygpIHtcbiAgICB0aGlzLmxvYWRpbmdFcnJvckxpc3QgPSB0cnVlO1xuICAgIGlmICghdGhpcy5lcnJvcnM/Lmxlbmd0aClcbiAgICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCB0aGlzLmZvcm0uY29udHJvbHMubGVuZ3RoOyByb3dJbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm0uY29udHJvbHNbcm93SW5kZXhdO1xuICAgICAgICBpZiAoIWZvcm0uaW52YWxpZCkgY29udGludWU7XG4gICAgICAgIGNvbnN0IGVycjogSVZhbGlkYXRpb25SZXNwPGFueT4gPSB7XG4gICAgICAgICAgcm93SUQ6IGZvcm0udmFsdWUuX19yb3dJRCxcbiAgICAgICAgICByb3dJbmRleDogcm93SW5kZXggKyAxLFxuICAgICAgICAgIGVycm9yczogW10sXG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3QgY3RybEtleSBpbiBmb3JtLmNvbnRyb2xzKSB7XG4gICAgICAgICAgY29uc3QgY3RybCA9IGZvcm0uY29udHJvbHNbY3RybEtleV07XG4gICAgICAgICAgaWYgKCFjdHJsLmludmFsaWQpIGNvbnRpbnVlO1xuICAgICAgICAgIGZvciAoY29uc3QgZXJyS2V5IGluIGN0cmwuZXJyb3JzKSB7XG4gICAgICAgICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgICAgICAgIGVyci5lcnJvcnMucHVzaChjdHJsLmVycm9yc1tlcnJLZXldICsgJyAnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy5lcnJvcnMgPSBbZXJyXTtcbiAgICAgICAgdGhpcy5lcnJvcnMucHVzaChlcnIpO1xuICAgICAgfVxuICAgIHRoaXMuZXJyb3JMaXN0VGFnLm9wZW4oKTtcbiAgICB0aGlzLmxvYWRpbmdFcnJvckxpc3QgPSBmYWxzZTtcbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgY29uc3Qgc3luY1NjaGVtYXMgPSB0aGlzLnNjaGVtYXMuZmlsdGVyKCh4KSA9PiB4LnZhbGlkYXRvcnM/Lmxlbmd0aCk7XG4gICAgZm9yIChjb25zdCBmb3JtIG9mIHRoaXMuZm9ybS5jb250cm9scykge1xuICAgICAgZm9yIChjb25zdCBzY2hlbWUgb2Ygc3luY1NjaGVtYXMpIHtcbiAgICAgICAgZm9ybS5jb250cm9sc1tzY2hlbWUuZmllbGQgYXMgc3RyaW5nXS5zZXRWYWxpZGF0b3JzKHNjaGVtZS52YWxpZGF0b3JzKTtcbiAgICAgICAgZm9ybS5jb250cm9sc1tzY2hlbWUuZmllbGQgYXMgc3RyaW5nXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG4gICAgICBmb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB9XG4gICAgdGhpcy5oYXNBZGRlZFZhbGlkYXRvcnMgPSB0cnVlO1xuICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICB9XG4gIGFzeW5jIHZhbGlkYXRlQXN5bmMoKSB7XG4gICAgdGhpcy5hRXJyb3JzID0gYXdhaXQgdGhpcy52YWxpZGF0aW9uRnVuYyh0aGlzLmZvcm0udmFsdWUpO1xuICAgIGNvbnN0IG1hcHA6IHsgW3g6IHN0cmluZ106IElWYWxpZGF0aW9uUmVzcDxhbnk+IH0gPSB7fTtcbiAgICB0aGlzLmFFcnJvcnM/LmZvckVhY2goKHgpID0+IChtYXBwW3gucm93SURdID0geCkpO1xuICAgIGZvciAoY29uc3QgZm9ybSBvZiB0aGlzLmZvcm0uY29udHJvbHMpIHtcbiAgICAgIGNvbnN0IHZSZXMgPSBtYXBwW2Zvcm0udmFsdWUuX19yb3dJRF07XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtLmNvbnRyb2xzKSB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSBmb3JtLmNvbnRyb2xzW2tleV07XG4gICAgICAgIGN0cmwuc2V0RXJyb3JzKHZSZXMuZGF0YVtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRSb3cgPSAoXG4gICAgaW5kZXg6IG51bWJlciA9IHRoaXMuZm9ybS5jb250cm9scy5sZW5ndGgsXG4gICAgZm9ybSA9IHRoaXMuY3JlYXRlUm93Rm9ybSgpXG4gICkgPT4ge1xuICAgIGlmICghZm9ybSkgcmV0dXJuIG51bGw7XG4gICAgdGhpcy5oYXNBZGRlZFZhbGlkYXRvcnMgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm0uaW5zZXJ0KGluZGV4LCBmb3JtKTtcbiAgICBpZiAodGhpcy5zaG93RWRpdFJvdykge1xuICAgICAgdGhpcy5kaXNhYmxlUm93cyhpbmRleCk7XG4gICAgfVxuICB9O1xuIFxuICBvcGVuUGFnZShlOiBQYWdlRXZlbnQpIHt9XG4gIFxuICBkb3dubG9hZENTVihyb3dzOiBhbnlbXSA9IHRoaXMuZm9ybS52YWx1ZSBhcyBhbnksIGxhYmVsID0gdGhpcy5sYWJlbCkge1xuICAgIGNvbnN0IGNzdkFycmF5ID1cbiAgICAgIGAke3RoaXMuc2NoZW1hc1xuICAgICAgICAubWFwKCh4KSA9PiAodGhpcy5pb0Zvcm1hdHRlZCA/IHgubGFiZWwgOiB4LmZpZWxkKSlcbiAgICAgICAgLmpvaW4oJywnKX1cXHJcXG5gICtcbiAgICAgIHJvd3NcbiAgICAgICAgLm1hcCgoeCkgPT4gdGhpcy5zY2hlbWFzLm1hcCgoeSkgPT4geFt5LmZpZWxkXSkuam9pbignLCcpKVxuICAgICAgICAuam9pbignXFxyXFxuJyk7XG4gICAgLy8gY29uc29sZS5sb2coY3N2QXJyYXkpO1xuICAgIC8vIGRlYnVnZ2VyXG5cbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY3N2QXJyYXldLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICBhLmhyZWYgPSB1cmw7XG4gICAgYS5kb3dubG9hZCA9IGAke2xhYmVsfSAke3RoaXMuc2NoZW1hcz8ubGVuZ3RofXgke3Jvd3M/Lmxlbmd0aH0uY3N2YDtcbiAgICBhLmNsaWNrKCk7XG4gICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICBhLnJlbW92ZSgpO1xuICB9XG4gIGRvd25sb2FkVGVtcGxhdGUoKSB7XG4gICAgaWYgKCF0aGlzLnRlbXBsYXRlT2JqKSB7XG4gICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNjaGVtYXMpIHtcbiAgICAgICAgb2JqW2l0ZW0uZmllbGRdID0gaXRlbS50ZW1wbGF0ZVZhbHVlO1xuICAgICAgfVxuICAgICAgdGhpcy50ZW1wbGF0ZU9iaiA9IG9iajtcbiAgICB9XG4gICAgdGhpcy5kb3dubG9hZENTVihbdGhpcy50ZW1wbGF0ZU9ial0sICd0ZW1wbGF0ZSAnICsgdGhpcy5sYWJlbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGFyZShhOiBudW1iZXIgfCBzdHJpbmcsIGI6IG51bWJlciB8IHN0cmluZywgaXNBc2M6IGJvb2xlYW4pIHtcbiAgcmV0dXJuIChhIDwgYiA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xufVxuIiwiPGxvYWRlciBbbG9hZGluZ109XCJsb2FkaW5nXCI+IFxuICA8ZGl2IFtuZ0NsYXNzXT1cInsgYm9yZGVyOiBib3JkZXJlZCwgdW5ib3JkZXJlZDogIWJvcmRlcmVkIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBwb3NpdGlvbi1yZWxhdGl2ZVwiIFBTQm94PiAtLT5cbiAgICAgIDx0YWJsZSBtYXRTb3J0IChtYXRTb3J0Q2hhbmdlKT1cInNvcnREYXRhKCRldmVudClcIiBjbGFzcz1cInctMTAwIGQtdGFibGUgbWItMCBpbnB1dC10YWJsZVwiPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+XG4gICAgICAgICAgICBAaWYgKHNob3dTTikge1xuICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyAnUy9OJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19PC90aD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc2NoZW1hczsgdHJhY2sgaXRlbSkge1xuXG4gICAgICAgICAgICBAaWYgKCFpdGVtLmhpZGRlbikge1xuICAgICAgICAgICAgPHRoIG1hdC1zb3J0LWhlYWRlcj1cInt7IGl0ZW1ba2V5RmllbGR8dG9BbnldIH19XCI+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgIHN1YkZvcm0gb2YgZm9ybS5jb250cm9sc3x0b0FueTsgdHJhY2sgc3ViRm9ybVRyYWNrQnkoc2ksXG4gICAgICAgICAgc3ViRm9ybSk7IGxldCBzaSA9ICRpbmRleCkge1xuICAgICAgICAgIDx0ciBbaWRdPVwic3ViRm9ybS52YWx1ZS5fX3Jvd0lEXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dTTikge1xuICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+e3sgc2kgKyAxIH19PC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoc2NoZW1lIG9mIHNjaGVtYXM7IHRyYWNrIHNjaGVtZVRyYWNrQnkoY2ksIHNjaGVtZSk7IGxldCBjaSA9ICRpbmRleCkge1xuXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJjb250ZW50LWNlbGxcIiBbaGlkZGVuXT1cInNjaGVtZS5oaWRkZW5cIj5cblxuICAgICAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAndGVsJykge1xuXG4gICAgICAgICAgICAgIDxhcHAtcGhvbmUtbnVtYmVyIFtmb3JtXT1cInN1YkZvcm1cIiBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCIgW25hbWVdPVwic2NoZW1lW2tleUZpZWxkXVwiXG4gICAgICAgICAgICAgICAgW2lkXT1cInN1YkZvcm0udmFsdWUuX19yb3dJRHx0b0FueVwiIFtzaG93TGFiZWxdPVwiZmFsc2VcIiBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIiBbc3RhY2tlZF09XCJ0cnVlXCIgW2NvdW50cnlDb2RlM109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2VsbENvdW50cnlDb2RlM3Nbc2NoZW1lLmdldENvdW50cnlDb2RlM0tleStzaV0gfHwgc2NoZW1lLmNvdW50cnlDb2RlM1xuICAgICAgICAgICAgICAgICAgICAgIFwiIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZElmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25DYWxsZXIyOiBzdWJGb3JtLnZhbHVlOnNjaGVtZVtrZXlGaWVsZF1cbiAgICAgICAgICAgICAgICAgICAgICBcIiAjaW5wdXRUYWc+XG4gICAgICAgICAgICAgIDwvYXBwLXBob25lLW51bWJlcj5cbiAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImlucHV0VGFnXCIgLz5cblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuXG4gICAgICAgICAgICAgIDxhcHAtYXV0b2NvbXBsZXRlIFtmb3JtXT1cInN1YkZvcm1cIiBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCIgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJzdWJGb3JtLnZhbHVlLl9fcm93SUR8dG9BbnlcIiBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInRydWVcIiBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGVcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZVtrZXlGaWVsZHx0b0FueV1cIiBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIiBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJ0cnVlXCIgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIiAobWNoYW5nZSk9XCJhZGRDZWxsT3B0aW9uKHNjaGVtZSxzdWJGb3JtLCRldmVudCxzaSlcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWUub3B0aW9uc3x8c2NoZW1hTWFwW3NjaGVtZS5maWVsZHx0b0FueV0/Lm9wdGlvbnN8fGNlbGxPcHRpb25zW3NjaGVtZS5vcHRpb25zS2V5K3NpXVxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtoaW50XT1cInNjaGVtZS5oaW50XCIgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkSWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbkNhbGxlcjI6IHN1YkZvcm0udmFsdWU6c2NoZW1lW2tleUZpZWxkXVxuICAgICAgICAgICAgICAgICAgICAgIFwiICNpbnB1dFRhZz48L2FwcC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJpbnB1dFRhZ1wiIC8+XG5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAZGVmYXVsdCB7XG5cbiAgICAgICAgICAgICAgPGFwcC1pbnB1dC1iYXNpYyAjaW5wdXRUYWcgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIiBbZm9ybV09XCJzdWJGb3JtXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwic3ViRm9ybS52YWx1ZS5fX3Jvd0lEfHRvQW55XCIgW2hpbnRdPVwic2NoZW1lLmhpbnRcIiBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxGaWVsZF09XCJzY2hlbWUubGFiZWxGaWVsZFwiIFthdXRvUGlja1ZhbHVlRmllbGRdPVwidHJ1ZVwiIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZVwiXG4gICAgICAgICAgICAgICAgW21heF09XCJzY2hlbWUubWF4XCIgW21pbl09XCJzY2hlbWUubWluXCIgW25hbWVdPVwic2NoZW1lW2tleUZpZWxkfHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbkZvcm1hdHRlcl09XCJzY2hlbWUub3B0aW9uRm9ybWF0dGVyXCIgW3BsYWNlaG9sZGVyXT1cInNjaGVtZS5wbGFjZWhvbGRlclwiIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25cIiBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIlxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCIgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cImFkZENlbGxPcHRpb24oc2NoZW1lLHN1YkZvcm0sJGV2ZW50LHNpKVwiIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWUub3B0aW9uc3x8c2NoZW1hTWFwW3NjaGVtZS5maWVsZHx0b0FueV0/Lm9wdGlvbnN8fGNlbGxPcHRpb25zW3NjaGVtZS5vcHRpb25zS2V5K3NpXVxuICAgICAgICAgICAgICAgICAgICAgIFwiIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZElmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25DYWxsZXIyOiBzdWJGb3JtLnZhbHVlOnNjaGVtZVtrZXlGaWVsZF1cbiAgICAgICAgICAgICAgICAgICAgICBcIiAvPlxuICAgICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbaW5wdXRdPVwiaW5wdXRUYWdcIiAvPlxuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd0VkaXRSb3cpIHtcblxuICAgICAgICAgICAgICAgIDxhcHAtYnRuIGdyb3VwPVwiZWRpdFwiIChtY2xpY2spPVwiZWRpdFJvdyhzaSlcIj48L2FwcC1idG4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxhcHAtYnRuIGdyb3VwPVwiZGVsZXRlXCIgKG1jbGljayk9XCJyZW1vdmVSb3coc2kpXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd0FkZFJvdykge1xuXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxhcHAtYnRuIGdyb3VwPVwiYWRkXCIgKG1jbGljayk9XCJhZGRSb3coc2kgKyAxKVwiPjwvYXBwLWJ0bj5cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIDxtYXQtcGFnaW5hdG9yICpuZ0lmPVwiYmF0Y2hVcGxvYWRcIiBbbGVuZ3RoXT1cImZvcm0/Lmxlbmd0aFwiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZU9wdGlvbnNbMF1cIlxuICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgKHBhZ2UpPVwib3BlblBhZ2UoJGV2ZW50KVwiIGFyaWEtbGFiZWw9XCJTZWxlY3QgcGFnZVwiPlxuICAgIDwvbWF0LXBhZ2luYXRvcj4gLS0+XG4gICAgPCEtLSA8bWF0LXBhZ2luYXRvciAgW2xlbmd0aF09XCJ0aGlcIiBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgc2hvd0ZpcnN0TGFzdEJ1dHRvbnM+XG4gIDwvbWF0LXBhZ2luYXRvcj4gLS0+XG4gIDwvZGl2PlxuICBAaWYgKHN1Ym1pdEZ1bmMpIHtcbiAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZCBtdC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIGQtZmxleFwiPlxuICAgICAgPGFwcC1idG4gKG1jbGljayk9XCJzdWJtaXQoKVwiIHRleHQ9XCJTdWJtaXRcIiBbZm9ybV09XCJmb3JtXCIgdHlwZT1cInNlY29uZGFyeVwiIGljb249XCJzYXZlXCI+XG4gICAgICA8L2FwcC1idG4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB9XG48L2xvYWRlcj4iXX0=
|
package/esm2022/lib/Shared/components/table-input/table-input-row/table-input-row.component.mjs
CHANGED
|
@@ -31,7 +31,7 @@ export class TableInputRowComponent extends FormGeneratorComponent {
|
|
|
31
31
|
this.childrenFormSchemaMap = input({});
|
|
32
32
|
}
|
|
33
33
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: TableInputRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: TableInputRowComponent, isStandalone: true, selector: "tr[table-input-row]", inputs: { isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, hideAdd: { classPropertyName: "hideAdd", publicName: "hideAdd", isSignal: true, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, childrenFormSchemaMap: { classPropertyName: "childrenFormSchemaMap", publicName: "childrenFormSchemaMap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDeleteRowFunc: "onDeleteRowFunc", onAddRowFunc: "onAddRowFunc", onActionButtonClick: "onActionButtonClick" }, usesInheritance: true, ngImport: i0, template: "@for (scheme of formSchema(); track scheme.field) {\n @switch (true) {\n @case (scheme.type == 'tel') {\n <td class=\"{{ scheme.cls }}\">\n <app-phone-number\n [form]=\"form\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n [showValidation]=\"scheme.showValidation\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"scheme.countryCode3\"\n [showValidationMsg]=\"true\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form.value : (scheme.field | toAny))\"\n #inputTag></app-phone-number>\n </td>\n }\n @case (scheme.type == 'autocomplete') {\n <td class=\"{{ scheme.cls }}\">\n <app-autocomplete\n [form]=\"form\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [labelField]=\"scheme.labelField\"\n [noFormat]=\"scheme.noFormat\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"true\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field | toAny\"\n [debug]=\"scheme.debug\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form.value : (scheme.field | toAny))\"\n #inputTag></app-autocomplete>\n </td>\n }\n @case (scheme.type == 'button') {\n <td class=\"{{ scheme.cls }} w-1\">\n <div class=\"d-flex\">\n <app-btn\n [text]=\"scheme.label\"\n [type]=\"\n (form | hasFormValue: (childrenFormSchemaMap()[scheme.field].formSchemaStr | toAny) : (form.valueChanges | async))\n ? 'primary'\n : 'secondary'\n \"\n onFormInvalid=\"warn\"\n [form]=\"form\"\n [icon]=\"scheme.icon\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n [matTooltip]=\"form.value | formValue: childrenFormSchemaMap()[scheme.field].formSchema | toAny\"\n (mclick)=\"dModal.open()\" />\n </div>\n <modal-comp #dModal [showFooter]=\"false\" header=\"{{ scheme.label }} Form\" width=\"70%\">\n <ng-template modalBody>\n <form-generator\n [form]=\"form\"\n [gridXXLStyle]=\"4\"\n [gridLGStyle]=\"4\"\n [showSubmitBtn]=\"false\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n (onSubmit)=\"dModal.close()\"></form-generator>\n @if (!isShow) {\n <div class=\"d-flex justify-content-end\">\n <app-btn (mclick)=\"dModal.close()\" text=\"Done\" />\n </div>\n }\n </ng-template>\n </modal-comp>\n </td>\n }\n @default {\n <td class=\"{{ scheme.cls }}\">\n <app-input-basic\n #formField\n [name]=\"scheme.field | toAny\"\n [form]=\"form\"\n [dontFormatAsInput]=\"scheme.dontFormatAsInput\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [type]=\"scheme.type\"\n [valueField]=\"scheme.valueField\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"true\"\n [checkedSignal]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [noFormat]=\"scheme.noFormat\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [debug]=\"scheme.debug\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form.value : (scheme.field | toAny))\"></app-input-basic>\n </td>\n }\n }\n}\n@if (!isShow()) {\n @if (onDeleteRowFunc) {\n <td class=\"w-1\">\n <app-btn group=\"delete\" [iconBtn]=\"true\" (mclick)=\"onDeleteRowFunc.emit({ btn: deleteBtn })\" #deleteBtn />\n </td>\n }\n @if (onAddRowFunc) {\n <td class=\"w-1\">\n <app-btn [iconBtn]=\"true\" group=\"add\" [disabled]=\"hideAdd()\" (mclick)=\"onAddRowFunc.emit({ btn: addBtn })\" #addBtn></app-btn>\n </td>\n }\n @for (actionBtn of actionBtns(); track actionBtn.icon) {\n <td class=\"w-1\">\n <app-btn\n [iconBtn]=\"true\"\n [group]=\"actionBtn.group\"\n [icon]=\"actionBtn.icon\"\n (mclick)=\"\n onActionButtonClick.emit({\n btn: actionBtnTemp,\n actionButton: actionBtn\n })\n \"\n #actionBtnTemp></app-btn>\n </td>\n }\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "component", type: FormGeneratorComponent, selector: "form-generator", inputs: ["keyField", "presetValueForSingleOption", "isCreate", "submitOnEnterKey", "submitFunc", "submitBtnText", "submitBtnTemplate", "submitSuccessText", "showSubmitBtn", "gridStyle", "gridMDStyle", "gridLGStyle", "gridXXLStyle", "formGridClass", "useLoader", "loading", "form", "formSchema", "isShow"], outputs: ["onSubmit", "mchange", "submissionResponse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: FormValuePipe, name: "formValue" }, { kind: "pipe", type: FunctionCaller2, name: "functionCaller2" }, { kind: "pipe", type: HasFormValuePipe, name: "hasFormValue" }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "input", "contextData", "decimalPoints", "files", "hide", "hint", "labelLink", "lblCl", "light", "loading", "
|
|
34
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: TableInputRowComponent, isStandalone: true, selector: "tr[table-input-row]", inputs: { isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, hideAdd: { classPropertyName: "hideAdd", publicName: "hideAdd", isSignal: true, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, childrenFormSchemaMap: { classPropertyName: "childrenFormSchemaMap", publicName: "childrenFormSchemaMap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDeleteRowFunc: "onDeleteRowFunc", onAddRowFunc: "onAddRowFunc", onActionButtonClick: "onActionButtonClick" }, usesInheritance: true, ngImport: i0, template: "@for (scheme of formSchema(); track scheme.field) {\n @switch (true) {\n @case (scheme.type == 'tel') {\n <td class=\"{{ scheme.cls }}\">\n <app-phone-number\n [form]=\"form\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [name]=\"scheme.field\"\n [showLabel]=\"false\"\n [noFormat]=\"scheme.noFormat\"\n [debug]=\"scheme.debug\"\n [showValidation]=\"scheme.showValidation\"\n [showValidationIcon]=\"scheme.showValidationIcon\"\n [countryCode3]=\"scheme.countryCode3\"\n [showValidationMsg]=\"true\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form.value : (scheme.field | toAny))\"\n #inputTag></app-phone-number>\n </td>\n }\n @case (scheme.type == 'autocomplete') {\n <td class=\"{{ scheme.cls }}\">\n <app-autocomplete\n [form]=\"form\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [labelField]=\"scheme.labelField\"\n [noFormat]=\"scheme.noFormat\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"true\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [name]=\"scheme.field | toAny\"\n [debug]=\"scheme.debug\"\n [optionFormatter]=\"scheme.optionFormatter\"\n [valueField]=\"scheme.valueField\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [hint]=\"scheme.hint\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form.value : (scheme.field | toAny))\"\n #inputTag></app-autocomplete>\n </td>\n }\n @case (scheme.type == 'button') {\n <td class=\"{{ scheme.cls }} w-1\">\n <div class=\"d-flex\">\n <app-btn\n [text]=\"scheme.label\"\n [type]=\"\n (form | hasFormValue: (childrenFormSchemaMap()[scheme.field].formSchemaStr | toAny) : (form.valueChanges | async))\n ? 'primary'\n : 'secondary'\n \"\n onFormInvalid=\"warn\"\n [form]=\"form\"\n [icon]=\"scheme.icon\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n [matTooltip]=\"form.value | formValue: childrenFormSchemaMap()[scheme.field].formSchema | toAny\"\n (mclick)=\"dModal.open()\" />\n </div>\n <modal-comp #dModal [showFooter]=\"false\" header=\"{{ scheme.label }} Form\" width=\"70%\">\n <ng-template modalBody>\n <form-generator\n [form]=\"form\"\n [gridXXLStyle]=\"4\"\n [gridLGStyle]=\"4\"\n [showSubmitBtn]=\"false\"\n [formSchema]=\"childrenFormSchemaMap()[scheme.field].formSchema\"\n (onSubmit)=\"dModal.close()\"></form-generator>\n @if (!isShow) {\n <div class=\"d-flex justify-content-end\">\n <app-btn (mclick)=\"dModal.close()\" text=\"Done\" />\n </div>\n }\n </ng-template>\n </modal-comp>\n </td>\n }\n @default {\n <td class=\"{{ scheme.cls }}\">\n <app-input-basic\n #formField\n [name]=\"scheme.field | toAny\"\n [form]=\"form\"\n [dontFormatAsInput]=\"scheme.dontFormatAsInput\"\n [clearOnDisable]=\"scheme.clearOnDisable\"\n [type]=\"scheme.type\"\n [valueField]=\"scheme.valueField\"\n [labelType]=\"scheme.labelType | toAny\"\n [showValidationMsg]=\"true\"\n [checkedSignal]=\"scheme.checked\"\n [showValidation]=\"!!scheme.asyncValidators\"\n [noFormat]=\"scheme.noFormat\"\n [showValidationIcon]=\"!!scheme.asyncValidators\"\n [debug]=\"scheme.debug\"\n [labelField]=\"scheme.labelField\"\n [optionFormatter]=\"scheme.optionFormatter\"\n (mSelectedOptionLabel)=\"setOptionLabel($event, scheme)\"\n [options]=\"scheme.options || optionsMap[scheme.field | toAny]\"\n [decimalPoints]=\"scheme.decimalPoints\"\n [hint]=\"scheme.hint\"\n [max]=\"scheme.max\"\n [min]=\"scheme.min\"\n [placeholder]=\"scheme.placeholder\"\n [disabled]=\"scheme.disabled || (scheme.disabledIf | functionCaller2: form.value : (scheme.field | toAny))\"></app-input-basic>\n </td>\n }\n }\n}\n@if (!isShow()) {\n @if (onDeleteRowFunc) {\n <td class=\"w-1\">\n <app-btn group=\"delete\" [iconBtn]=\"true\" (mclick)=\"onDeleteRowFunc.emit({ btn: deleteBtn })\" #deleteBtn />\n </td>\n }\n @if (onAddRowFunc) {\n <td class=\"w-1\">\n <app-btn [iconBtn]=\"true\" group=\"add\" [disabled]=\"hideAdd()\" (mclick)=\"onAddRowFunc.emit({ btn: addBtn })\" #addBtn></app-btn>\n </td>\n }\n @for (actionBtn of actionBtns(); track actionBtn.icon) {\n <td class=\"w-1\">\n <app-btn\n [iconBtn]=\"true\"\n [group]=\"actionBtn.group\"\n [icon]=\"actionBtn.icon\"\n (mclick)=\"\n onActionButtonClick.emit({\n btn: actionBtnTemp,\n actionButton: actionBtn\n })\n \"\n #actionBtnTemp></app-btn>\n </td>\n }\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: AutocompleteComponent, selector: "app-autocomplete,autocomplete", inputs: ["showRequiredTag", "validate", "options"] }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "disabled", "form", "forms", "help", "iconBtn", "loading", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid"], outputs: ["mclick"] }, { kind: "component", type: FormGeneratorComponent, selector: "form-generator", inputs: ["keyField", "presetValueForSingleOption", "isCreate", "submitOnEnterKey", "submitFunc", "submitBtnText", "submitBtnTemplate", "submitSuccessText", "showSubmitBtn", "gridStyle", "gridMDStyle", "gridLGStyle", "gridXXLStyle", "formGridClass", "useLoader", "loading", "form", "formSchema", "isShow"], outputs: ["onSubmit", "mchange", "submissionResponse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "pipe", type: FormValuePipe, name: "formValue" }, { kind: "pipe", type: FunctionCaller2, name: "functionCaller2" }, { kind: "pipe", type: HasFormValuePipe, name: "hasFormValue" }, { kind: "component", type: InputBasicComponent, selector: "app-input-basic,app-input", inputs: ["accept", "autocomplete", "input", "contextData", "decimalPoints", "files", "hide", "hint", "labelLink", "lblCl", "light", "loading", "multiple", "optionsFunc", "theme", "vms", "xsmall", "setCurrentDate", "options", "mvalue"], outputs: ["mSelectOptionChange", "mSelectedOptionLabel"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i2.ModalComponent, selector: "modal-comp", inputs: ["header", "bodyTemplateRef", "footerTemplateRef", "showHeader", "loading", "isFullscreen", "showFooter", "width", "minWidth", "height", "maxHeight", "icon", "data", "disableClose", "hasBackdrop"], outputs: ["modalOpen", "modalClose"] }, { kind: "directive", type: i3.ModalBodyDirective, selector: "[modalBody]" }, { kind: "component", type: PhoneNumberComponent, selector: "app-phone-number", inputs: ["showLabel", "countryCode3", "config"], outputs: ["onCountrySelect"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: ToAnyPipe, name: "toAny" }] }); }
|
|
35
35
|
}
|
|
36
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: TableInputRowComponent, decorators: [{
|
|
37
37
|
type: Component,
|
|
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
72
72
|
}], onActionButtonClick: [{
|
|
73
73
|
type: Output
|
|
74
74
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFlLE1BQU0sK0NBQStDLENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDekcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7O0FBdUM5RCxNQUFNLE9BQU8sc0JBSVgsU0FBUSxzQkFBa0M7SUF4QzVDOztRQXlDWSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQzdELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFDMUQsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQXdELENBQUM7UUFDekcsV0FBTSxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzFCLFlBQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUMzQixlQUFVLEdBQUcsS0FBSyxFQUFvQixDQUFDO1FBRXZDLDBCQUFxQixHQUFHLEtBQUssQ0FLMUIsRUFBRSxDQUFDLENBQUM7S0FFUjs4R0FuQlksc0JBQXNCO2tHQUF0QixzQkFBc0IscXhCQ3hEbkMsd3JLQW9JQSxxREQ1R0ksU0FBUyw4Q0FDVCxxQkFBcUIsOEhBQ3JCLFlBQVksNmJBRVosc0JBQXNCLG9hQUN0QixXQUFXLDBCQUNYLGFBQWEsNkNBQ2IsZUFBZSxtREFDZixnQkFBZ0IscURBQ2hCLG1CQUFtQixxWUFHbkIsa0JBQWtCLDhCQUNsQixnQkFBZ0Isc3NCQVVoQixvQkFBb0IsMklBQ3BCLG1CQUFtQiwwQkFDbkIsU0FBUzs7MkZBT0Esc0JBQXNCO2tCQXBDbEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsUUFBUTt3QkFDUixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLDBCQUEwQjtxQkFDM0I7OEJBU1MsZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgSnNvblBpcGUsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsIEZvcm1WYWx1ZVBpcGUsIEZ1bmN0aW9uQ2FsbGVyMiwgSGFzRm9ybVZhbHVlUGlwZSwgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi8uLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50LCBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudHMgfSBmcm9tICcuLi8uLi9tb2RhbC1jb21wb25lbnRzL21vZGFsLmNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUGFnaW5hdG9yUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3BhZ2luYXRvci5waXBlJztcbmltcG9ydCB7IElUYWJsZUlucHV0QnRuIH0gZnJvbSAnLi4vdGFibGUtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndHJbdGFibGUtaW5wdXQtcm93XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gICAgRm9ybUdlbmVyYXRvckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGb3JtVmFsdWVQaXBlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBIYXNGb3JtVmFsdWVQaXBlLFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgSnNvblBpcGUsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1vZGFsQ29tcG9uZW50cyxcbiAgICBOZ0NsYXNzLFxuICAgIE5nRm9yLFxuICAgIE5nSWYsXG4gICAgTmdTd2l0Y2gsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgUGFnaW5hdG9yUGlwZSxcbiAgICBQaG9uZU51bWJlckNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRvQW55UGlwZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5wdXRSb3dDb21wb25lbnQ8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4+IGV4dGVuZHMgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPiB7XG4gIEBPdXRwdXQoKSBvbkRlbGV0ZVJvd0Z1bmMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgYnRuPzogQnRuQ29tcG9uZW50IH0+KCk7XG4gIEBPdXRwdXQoKSBvbkFkZFJvd0Z1bmMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgYnRuPzogQnRuQ29tcG9uZW50IH0+KCk7XG4gIEBPdXRwdXQoKSBvbkFjdGlvbkJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJ0bj86IEJ0bkNvbXBvbmVudDsgYWN0aW9uQnV0dG9uOiBJVGFibGVJbnB1dEJ0biB9PigpO1xuICBpc1Nob3cgPSBpbnB1dDxib29sZWFuPigpO1xuICBoaWRlQWRkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgYWN0aW9uQnRucyA9IGlucHV0PElUYWJsZUlucHV0QnRuW10+KCk7XG5cbiAgY2hpbGRyZW5Gb3JtU2NoZW1hTWFwID0gaW5wdXQ8e1xuICAgIFtrIGluIGtleW9mIFRGb3JtR3JvdXBdPzoge1xuICAgICAgZm9ybVNjaGVtYTogSUZvcm1TY2hlbWFbXTtcbiAgICAgIGZvcm1TY2hlbWFTdHI6IHN0cmluZ1tdO1xuICAgIH07XG4gIH0+KHt9KTtcblxufVxuIiwiQGZvciAoc2NoZW1lIG9mIGZvcm1TY2hlbWEoKTsgdHJhY2sgc2NoZW1lLmZpZWxkKSB7XG4gIEBzd2l0Y2ggKHRydWUpIHtcbiAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgIDx0ZCBjbGFzcz1cInt7IHNjaGVtZS5jbHMgfX1cIj5cbiAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25cIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvblwiXG4gICAgICAgICAgW2NvdW50cnlDb2RlM109XCJzY2hlbWUuY291bnRyeUNvZGUzXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwidHJ1ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZCB8fCAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm0udmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVwiXG4gICAgICAgICAgI2lucHV0VGFnPjwvYXBwLXBob25lLW51bWJlcj5cbiAgICAgIDwvdGQ+XG4gICAgfVxuICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgPHRkIGNsYXNzPVwie3sgc2NoZW1lLmNscyB9fVwiPlxuICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInRydWVcIlxuICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZCB8IHRvQW55XCJcbiAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWQgfHwgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcIlxuICAgICAgICAgICNpbnB1dFRhZz48L2FwcC1hdXRvY29tcGxldGU+XG4gICAgICA8L3RkPlxuICAgIH1cbiAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ2J1dHRvbicpIHtcbiAgICAgIDx0ZCBjbGFzcz1cInt7IHNjaGVtZS5jbHMgfX0gdy0xXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgW3RleHRdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIlxuICAgICAgICAgICAgICAoZm9ybSB8IGhhc0Zvcm1WYWx1ZTogKGNoaWxkcmVuRm9ybVNjaGVtYU1hcCgpW3NjaGVtZS5maWVsZF0uZm9ybVNjaGVtYVN0ciB8IHRvQW55KSA6IChmb3JtLnZhbHVlQ2hhbmdlcyB8IGFzeW5jKSlcbiAgICAgICAgICAgICAgICA/ICdwcmltYXJ5J1xuICAgICAgICAgICAgICAgIDogJ3NlY29uZGFyeSdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBvbkZvcm1JbnZhbGlkPVwid2FyblwiXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICAgIFtpY29uXT1cInNjaGVtZS5pY29uXCJcbiAgICAgICAgICAgIFtmb3JtU2NoZW1hXT1cImNoaWxkcmVuRm9ybVNjaGVtYU1hcCgpW3NjaGVtZS5maWVsZF0uZm9ybVNjaGVtYVwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmb3JtLnZhbHVlIHwgZm9ybVZhbHVlOiBjaGlsZHJlbkZvcm1TY2hlbWFNYXAoKVtzY2hlbWUuZmllbGRdLmZvcm1TY2hlbWEgfCB0b0FueVwiXG4gICAgICAgICAgICAobWNsaWNrKT1cImRNb2RhbC5vcGVuKClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1vZGFsLWNvbXAgI2RNb2RhbCBbc2hvd0Zvb3Rlcl09XCJmYWxzZVwiIGhlYWRlcj1cInt7IHNjaGVtZS5sYWJlbCB9fSBGb3JtXCIgd2lkdGg9XCI3MCVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbW9kYWxCb2R5PlxuICAgICAgICAgICAgPGZvcm0tZ2VuZXJhdG9yXG4gICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgICAgICBbZ3JpZFhYTFN0eWxlXT1cIjRcIlxuICAgICAgICAgICAgICBbZ3JpZExHU3R5bGVdPVwiNFwiXG4gICAgICAgICAgICAgIFtzaG93U3VibWl0QnRuXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2Zvcm1TY2hlbWFdPVwiY2hpbGRyZW5Gb3JtU2NoZW1hTWFwKClbc2NoZW1lLmZpZWxkXS5mb3JtU2NoZW1hXCJcbiAgICAgICAgICAgICAgKG9uU3VibWl0KT1cImRNb2RhbC5jbG9zZSgpXCI+PC9mb3JtLWdlbmVyYXRvcj5cbiAgICAgICAgICAgIEBpZiAoIWlzU2hvdykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWJ0biAobWNsaWNrKT1cImRNb2RhbC5jbG9zZSgpXCIgdGV4dD1cIkRvbmVcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21vZGFsLWNvbXA+XG4gICAgICA8L3RkPlxuICAgIH1cbiAgICBAZGVmYXVsdCB7XG4gICAgICA8dGQgY2xhc3M9XCJ7eyBzY2hlbWUuY2xzIH19XCI+XG4gICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICAjZm9ybUZpZWxkXG4gICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkIHwgdG9BbnlcIlxuICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgIFtkb250Rm9ybWF0QXNJbnB1dF09XCJzY2hlbWUuZG9udEZvcm1hdEFzSW5wdXRcIlxuICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCJcbiAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJ0cnVlXCJcbiAgICAgICAgICBbY2hlY2tlZFNpZ25hbF09XCJzY2hlbWUuY2hlY2tlZFwiXG4gICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICBbZGVjaW1hbFBvaW50c109XCJzY2hlbWUuZGVjaW1hbFBvaW50c1wiXG4gICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgIFttYXhdPVwic2NoZW1lLm1heFwiXG4gICAgICAgICAgW21pbl09XCJzY2hlbWUubWluXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2NoZW1lLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkIHx8IChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXCI+PC9hcHAtaW5wdXQtYmFzaWM+XG4gICAgICA8L3RkPlxuICAgIH1cbiAgfVxufVxuQGlmICghaXNTaG93KCkpIHtcbiAgQGlmIChvbkRlbGV0ZVJvd0Z1bmMpIHtcbiAgICA8dGQgY2xhc3M9XCJ3LTFcIj5cbiAgICAgIDxhcHAtYnRuIGdyb3VwPVwiZGVsZXRlXCIgW2ljb25CdG5dPVwidHJ1ZVwiIChtY2xpY2spPVwib25EZWxldGVSb3dGdW5jLmVtaXQoeyBidG46IGRlbGV0ZUJ0biB9KVwiICNkZWxldGVCdG4gLz5cbiAgICA8L3RkPlxuICB9XG4gIEBpZiAob25BZGRSb3dGdW5jKSB7XG4gICAgPHRkIGNsYXNzPVwidy0xXCI+XG4gICAgICA8YXBwLWJ0biBbaWNvbkJ0bl09XCJ0cnVlXCIgZ3JvdXA9XCJhZGRcIiBbZGlzYWJsZWRdPVwiaGlkZUFkZCgpXCIgKG1jbGljayk9XCJvbkFkZFJvd0Z1bmMuZW1pdCh7IGJ0bjogYWRkQnRuIH0pXCIgI2FkZEJ0bj48L2FwcC1idG4+XG4gICAgPC90ZD5cbiAgfVxuICBAZm9yIChhY3Rpb25CdG4gb2YgYWN0aW9uQnRucygpOyB0cmFjayBhY3Rpb25CdG4uaWNvbikge1xuICAgIDx0ZCBjbGFzcz1cInctMVwiPlxuICAgICAgPGFwcC1idG5cbiAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgIFtncm91cF09XCJhY3Rpb25CdG4uZ3JvdXBcIlxuICAgICAgICBbaWNvbl09XCJhY3Rpb25CdG4uaWNvblwiXG4gICAgICAgIChtY2xpY2spPVwiXG4gICAgICAgICAgb25BY3Rpb25CdXR0b25DbGljay5lbWl0KHtcbiAgICAgICAgICAgIGJ0bjogYWN0aW9uQnRuVGVtcCxcbiAgICAgICAgICAgIGFjdGlvbkJ1dHRvbjogYWN0aW9uQnRuXG4gICAgICAgICAgfSlcbiAgICAgICAgXCJcbiAgICAgICAgI2FjdGlvbkJ0blRlbXA+PC9hcHAtYnRuPlxuICAgIDwvdGQ+XG4gIH1cbn1cbiJdfQ==
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC1yb3cvdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFlLE1BQU0sK0NBQStDLENBQUM7QUFDcEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDekcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7O0FBdUM5RCxNQUFNLE9BQU8sc0JBSVgsU0FBUSxzQkFBa0M7SUF4QzVDOztRQXlDWSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQzdELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFDMUQsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQXdELENBQUM7UUFDekcsV0FBTSxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzFCLFlBQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUMzQixlQUFVLEdBQUcsS0FBSyxFQUFvQixDQUFDO1FBRXZDLDBCQUFxQixHQUFHLEtBQUssQ0FLMUIsRUFBRSxDQUFDLENBQUM7S0FFUjs4R0FuQlksc0JBQXNCO2tHQUF0QixzQkFBc0IscXhCQ3hEbkMsd3JLQW9JQSxxREQ1R0ksU0FBUyw4Q0FDVCxxQkFBcUIsOEhBQ3JCLFlBQVksNmJBRVosc0JBQXNCLG9hQUN0QixXQUFXLDBCQUNYLGFBQWEsNkNBQ2IsZUFBZSxtREFDZixnQkFBZ0IscURBQ2hCLG1CQUFtQiwyV0FHbkIsa0JBQWtCLDhCQUNsQixnQkFBZ0Isc3NCQVVoQixvQkFBb0IsMklBQ3BCLG1CQUFtQiwwQkFDbkIsU0FBUzs7MkZBT0Esc0JBQXNCO2tCQXBDbEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsUUFBUTt3QkFDUixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsU0FBUzt3QkFDVCxhQUFhO3dCQUNiLDBCQUEwQjtxQkFDM0I7OEJBU1MsZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgSnNvblBpcGUsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBQYWdpbmF0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsIEZvcm1WYWx1ZVBpcGUsIEZ1bmN0aW9uQ2FsbGVyMiwgSGFzRm9ybVZhbHVlUGlwZSwgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy90cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi8uLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50LCBJRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudHMgfSBmcm9tICcuLi8uLi9tb2RhbC1jb21wb25lbnRzL21vZGFsLmNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUGFnaW5hdG9yUGlwZSB9IGZyb20gJy4uLy4uLy4uL3BpcGVzL3BhZ2luYXRvci5waXBlJztcbmltcG9ydCB7IElUYWJsZUlucHV0QnRuIH0gZnJvbSAnLi4vdGFibGUtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndHJbdGFibGUtaW5wdXQtcm93XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gICAgRm9ybUdlbmVyYXRvckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGb3JtVmFsdWVQaXBlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBIYXNGb3JtVmFsdWVQaXBlLFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgSnNvblBpcGUsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1vZGFsQ29tcG9uZW50cyxcbiAgICBOZ0NsYXNzLFxuICAgIE5nRm9yLFxuICAgIE5nSWYsXG4gICAgTmdTd2l0Y2gsXG4gICAgTmdTd2l0Y2hDYXNlLFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgUGFnaW5hdG9yUGlwZSxcbiAgICBQaG9uZU51bWJlckNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRvQW55UGlwZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtaW5wdXQtcm93LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5wdXRSb3dDb21wb25lbnQ8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7XG4gICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gIH0gPSBhbnksXG4+IGV4dGVuZHMgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPiB7XG4gIEBPdXRwdXQoKSBvbkRlbGV0ZVJvd0Z1bmMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgYnRuPzogQnRuQ29tcG9uZW50IH0+KCk7XG4gIEBPdXRwdXQoKSBvbkFkZFJvd0Z1bmMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgYnRuPzogQnRuQ29tcG9uZW50IH0+KCk7XG4gIEBPdXRwdXQoKSBvbkFjdGlvbkJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IGJ0bj86IEJ0bkNvbXBvbmVudDsgYWN0aW9uQnV0dG9uOiBJVGFibGVJbnB1dEJ0biB9PigpO1xuICBpc1Nob3cgPSBpbnB1dDxib29sZWFuPigpO1xuICBoaWRlQWRkID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgYWN0aW9uQnRucyA9IGlucHV0PElUYWJsZUlucHV0QnRuW10+KCk7XG5cbiAgY2hpbGRyZW5Gb3JtU2NoZW1hTWFwID0gaW5wdXQ8e1xuICAgIFtrIGluIGtleW9mIFRGb3JtR3JvdXBdPzoge1xuICAgICAgZm9ybVNjaGVtYTogSUZvcm1TY2hlbWFbXTtcbiAgICAgIGZvcm1TY2hlbWFTdHI6IHN0cmluZ1tdO1xuICAgIH07XG4gIH0+KHt9KTtcblxufVxuIiwiQGZvciAoc2NoZW1lIG9mIGZvcm1TY2hlbWEoKTsgdHJhY2sgc2NoZW1lLmZpZWxkKSB7XG4gIEBzd2l0Y2ggKHRydWUpIHtcbiAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgIDx0ZCBjbGFzcz1cInt7IHNjaGVtZS5jbHMgfX1cIj5cbiAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25cIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uSWNvblwiXG4gICAgICAgICAgW2NvdW50cnlDb2RlM109XCJzY2hlbWUuY291bnRyeUNvZGUzXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwidHJ1ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZCB8fCAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm0udmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVwiXG4gICAgICAgICAgI2lucHV0VGFnPjwvYXBwLXBob25lLW51bWJlcj5cbiAgICAgIDwvdGQ+XG4gICAgfVxuICAgIEBjYXNlIChzY2hlbWUudHlwZSA9PSAnYXV0b2NvbXBsZXRlJykge1xuICAgICAgPHRkIGNsYXNzPVwie3sgc2NoZW1lLmNscyB9fVwiPlxuICAgICAgICA8YXBwLWF1dG9jb21wbGV0ZVxuICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgW3Nob3dWYWxpZGF0aW9uTXNnXT1cInRydWVcIlxuICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZCB8IHRvQW55XCJcbiAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJzY2hlbWUub3B0aW9ucyB8fCBvcHRpb25zTWFwW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWQgfHwgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtLnZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcIlxuICAgICAgICAgICNpbnB1dFRhZz48L2FwcC1hdXRvY29tcGxldGU+XG4gICAgICA8L3RkPlxuICAgIH1cbiAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ2J1dHRvbicpIHtcbiAgICAgIDx0ZCBjbGFzcz1cInt7IHNjaGVtZS5jbHMgfX0gdy0xXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgW3RleHRdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIlxuICAgICAgICAgICAgICAoZm9ybSB8IGhhc0Zvcm1WYWx1ZTogKGNoaWxkcmVuRm9ybVNjaGVtYU1hcCgpW3NjaGVtZS5maWVsZF0uZm9ybVNjaGVtYVN0ciB8IHRvQW55KSA6IChmb3JtLnZhbHVlQ2hhbmdlcyB8IGFzeW5jKSlcbiAgICAgICAgICAgICAgICA/ICdwcmltYXJ5J1xuICAgICAgICAgICAgICAgIDogJ3NlY29uZGFyeSdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBvbkZvcm1JbnZhbGlkPVwid2FyblwiXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICAgIFtpY29uXT1cInNjaGVtZS5pY29uXCJcbiAgICAgICAgICAgIFtmb3JtU2NoZW1hXT1cImNoaWxkcmVuRm9ybVNjaGVtYU1hcCgpW3NjaGVtZS5maWVsZF0uZm9ybVNjaGVtYVwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJmb3JtLnZhbHVlIHwgZm9ybVZhbHVlOiBjaGlsZHJlbkZvcm1TY2hlbWFNYXAoKVtzY2hlbWUuZmllbGRdLmZvcm1TY2hlbWEgfCB0b0FueVwiXG4gICAgICAgICAgICAobWNsaWNrKT1cImRNb2RhbC5vcGVuKClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1vZGFsLWNvbXAgI2RNb2RhbCBbc2hvd0Zvb3Rlcl09XCJmYWxzZVwiIGhlYWRlcj1cInt7IHNjaGVtZS5sYWJlbCB9fSBGb3JtXCIgd2lkdGg9XCI3MCVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbW9kYWxCb2R5PlxuICAgICAgICAgICAgPGZvcm0tZ2VuZXJhdG9yXG4gICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgICAgICBbZ3JpZFhYTFN0eWxlXT1cIjRcIlxuICAgICAgICAgICAgICBbZ3JpZExHU3R5bGVdPVwiNFwiXG4gICAgICAgICAgICAgIFtzaG93U3VibWl0QnRuXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2Zvcm1TY2hlbWFdPVwiY2hpbGRyZW5Gb3JtU2NoZW1hTWFwKClbc2NoZW1lLmZpZWxkXS5mb3JtU2NoZW1hXCJcbiAgICAgICAgICAgICAgKG9uU3VibWl0KT1cImRNb2RhbC5jbG9zZSgpXCI+PC9mb3JtLWdlbmVyYXRvcj5cbiAgICAgICAgICAgIEBpZiAoIWlzU2hvdykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWJ0biAobWNsaWNrKT1cImRNb2RhbC5jbG9zZSgpXCIgdGV4dD1cIkRvbmVcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21vZGFsLWNvbXA+XG4gICAgICA8L3RkPlxuICAgIH1cbiAgICBAZGVmYXVsdCB7XG4gICAgICA8dGQgY2xhc3M9XCJ7eyBzY2hlbWUuY2xzIH19XCI+XG4gICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICAjZm9ybUZpZWxkXG4gICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkIHwgdG9BbnlcIlxuICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgIFtkb250Rm9ybWF0QXNJbnB1dF09XCJzY2hlbWUuZG9udEZvcm1hdEFzSW5wdXRcIlxuICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCJcbiAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJ0cnVlXCJcbiAgICAgICAgICBbY2hlY2tlZFNpZ25hbF09XCJzY2hlbWUuY2hlY2tlZFwiXG4gICAgICAgICAgW3Nob3dWYWxpZGF0aW9uXT1cIiEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdFwiXG4gICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgIFtkZWJ1Z109XCJzY2hlbWUuZGVidWdcIlxuICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgIChtU2VsZWN0ZWRPcHRpb25MYWJlbCk9XCJzZXRPcHRpb25MYWJlbCgkZXZlbnQsIHNjaGVtZSlcIlxuICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkIHwgdG9BbnldXCJcbiAgICAgICAgICBbZGVjaW1hbFBvaW50c109XCJzY2hlbWUuZGVjaW1hbFBvaW50c1wiXG4gICAgICAgICAgW2hpbnRdPVwic2NoZW1lLmhpbnRcIlxuICAgICAgICAgIFttYXhdPVwic2NoZW1lLm1heFwiXG4gICAgICAgICAgW21pbl09XCJzY2hlbWUubWluXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2NoZW1lLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwic2NoZW1lLmRpc2FibGVkIHx8IChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybS52YWx1ZSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXCI+PC9hcHAtaW5wdXQtYmFzaWM+XG4gICAgICA8L3RkPlxuICAgIH1cbiAgfVxufVxuQGlmICghaXNTaG93KCkpIHtcbiAgQGlmIChvbkRlbGV0ZVJvd0Z1bmMpIHtcbiAgICA8dGQgY2xhc3M9XCJ3LTFcIj5cbiAgICAgIDxhcHAtYnRuIGdyb3VwPVwiZGVsZXRlXCIgW2ljb25CdG5dPVwidHJ1ZVwiIChtY2xpY2spPVwib25EZWxldGVSb3dGdW5jLmVtaXQoeyBidG46IGRlbGV0ZUJ0biB9KVwiICNkZWxldGVCdG4gLz5cbiAgICA8L3RkPlxuICB9XG4gIEBpZiAob25BZGRSb3dGdW5jKSB7XG4gICAgPHRkIGNsYXNzPVwidy0xXCI+XG4gICAgICA8YXBwLWJ0biBbaWNvbkJ0bl09XCJ0cnVlXCIgZ3JvdXA9XCJhZGRcIiBbZGlzYWJsZWRdPVwiaGlkZUFkZCgpXCIgKG1jbGljayk9XCJvbkFkZFJvd0Z1bmMuZW1pdCh7IGJ0bjogYWRkQnRuIH0pXCIgI2FkZEJ0bj48L2FwcC1idG4+XG4gICAgPC90ZD5cbiAgfVxuICBAZm9yIChhY3Rpb25CdG4gb2YgYWN0aW9uQnRucygpOyB0cmFjayBhY3Rpb25CdG4uaWNvbikge1xuICAgIDx0ZCBjbGFzcz1cInctMVwiPlxuICAgICAgPGFwcC1idG5cbiAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgIFtncm91cF09XCJhY3Rpb25CdG4uZ3JvdXBcIlxuICAgICAgICBbaWNvbl09XCJhY3Rpb25CdG4uaWNvblwiXG4gICAgICAgIChtY2xpY2spPVwiXG4gICAgICAgICAgb25BY3Rpb25CdXR0b25DbGljay5lbWl0KHtcbiAgICAgICAgICAgIGJ0bjogYWN0aW9uQnRuVGVtcCxcbiAgICAgICAgICAgIGFjdGlvbkJ1dHRvbjogYWN0aW9uQnRuXG4gICAgICAgICAgfSlcbiAgICAgICAgXCJcbiAgICAgICAgI2FjdGlvbkJ0blRlbXA+PC9hcHAtYnRuPlxuICAgIDwvdGQ+XG4gIH1cbn1cbiJdfQ==
|