ets-fe-ng-sdk 17.0.355 → 17.0.356
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/Shared/components/fields-to-display/fields-to-display.component.mjs +8 -8
- package/esm2022/lib/Shared/components/input/input-td-rf.component.mjs +16 -11
- package/esm2022/lib/Shared/components/table-https/table-https.component.mjs +2 -2
- package/esm2022/lib/Shared/components/table-plain/table-plain.component.mjs +2 -2
- package/fesm2022/ets-fe-ng-sdk.mjs +22 -18
- 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/fields-to-display/fields-to-display.component.d.ts +3 -3
- package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
- package/lib/Shared/components/input/input-td-rf.component.d.ts +1 -0
- package/lib/Shared/components/page-template/page-template.component.d.ts +1 -1
- package/lib/Shared/components/table-https/table-https.component.d.ts +3 -3
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { moveItemInArray, transferArrayItem, CdkDropList, CdkDrag, CdkDragPlaceholder, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
2
|
-
import { Component, EventEmitter, Input, Output, computed, inject, signal } from '@angular/core';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, computed, inject, model, signal } from '@angular/core';
|
|
3
3
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
4
4
|
import { cloneDeep, uniqBy } from 'lodash-es';
|
|
5
5
|
import { FilterArrayByStringPipe, ResponsiveValPipe } from '../../pipes/utility.pipe';
|
|
@@ -32,14 +32,14 @@ export class FieldsToDisplayComponent {
|
|
|
32
32
|
}) || []).concat(allFields), 'f'));
|
|
33
33
|
}
|
|
34
34
|
constructor() {
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
35
|
+
this.query1 = model(undefined);
|
|
36
|
+
this.query2 = model(undefined);
|
|
37
37
|
this.allFields = signal([]);
|
|
38
|
-
this.filteredAllFields = computed(() => this.filterArrayByStringPipe.transform(this.allFields(), this.
|
|
38
|
+
this.filteredAllFields = computed(() => this.filterArrayByStringPipe.transform(this.allFields(), this.query1(), ['f', 't']));
|
|
39
39
|
this.activeFields = computed(() => this.allFields().filter((x) => x.active));
|
|
40
40
|
// activeFields = signal<TableCol[]>([]);
|
|
41
41
|
this.nonActiveFields = computed(() => this.filterArrayByStringPipe
|
|
42
|
-
.transform(this.allFields().filter((x) => !x.active), this.
|
|
42
|
+
.transform(this.allFields().filter((x) => !x.active), this.query2(), ['f', 't'])
|
|
43
43
|
.sort2('t', true));
|
|
44
44
|
this.fieldsChanged = new EventEmitter();
|
|
45
45
|
this.filterArrayByStringPipe = inject(FilterArrayByStringPipe);
|
|
@@ -75,7 +75,7 @@ export class FieldsToDisplayComponent {
|
|
|
75
75
|
e ? (item.type = 'number') : null;
|
|
76
76
|
}
|
|
77
77
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: FieldsToDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: FieldsToDisplayComponent, isStandalone: true, selector: "fields-to-display", inputs: { _fields: ["fields", "_fields"], _currentColumns: ["currentColumns", "_currentColumns"] }, outputs: { fieldsChanged: "fieldsChanged" }, providers: [FilterArrayByStringPipe], ngImport: i0, template: "<app-btn\n type=\"outline\"\n customIcon=\"fa fa-bars\"\n iconPosition=\"right\"\n text=\"Define Outputs\"\n (mclick)=\"acModal.open()\" />\n<modal-comp\n header=\"Arrange Columns\"\n [width]=\"{ XLarge: '70%', Large: '80%' } | responsiveVal\"\n height=\"80vh\"\n #acModal>\n <div *modalBody>\n @if (uS.isMobileSignal()) {\n <div class=\"mb-2\">\n <app-input-td-rf [model]=\"query()\" (modelChange)=\"query.set($event)\" placeholder=\"Filter\" />\n </div>\n <div class=\"border rounded-10\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Column' | appTranslate | async }}</th>\n <th>{{ 'Visible' | appTranslate | async }}</th>\n <th>{{ 'Sticky' | appTranslate | async }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredAllFields(); track item) {\n <tr>\n <td scope=\"row\">\n {{ item.t | titlecase | appTranslate | async }}\n </td>\n <td>\n <mat-slide-toggle [(ngModel)]=\"item.active\"></mat-slide-toggle>\n </td>\n <td>\n @if (item.active) {\n <mat-slide-toggle [(ngModel)]=\"item.sticky\"></mat-slide-toggle>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <div class=\"row row-cols-2\">\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Non-Selected Columns' | appTranslate | async }}\n </div>\n <!-- <div class=\"mb-2\">\n <app-input-td-rf [(model)]=\"query\" placeholder=\"Filter\" />\n </div> -->\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div class=\"row my-2 mx-0 justify-content-center\">\n <div class=\"col-sm-10\">\n <app-input-td-rf\n #search \n [model]=\"searchInput()\"\n (modelChange)=\"searchInput.set($event)\"\n placeholder=\"Search by name\"></app-input-td-rf>\n </div>\n </div>\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #sourceList=\"cdkDropList\"\n [cdkDropListData]=\"nonActiveFields()\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[destinationList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of nonActiveFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the selected columns group\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div class=\"col-md-auto\">\n <div class=\"row\">\n <div class=\"col-md-auto\" *ngIf=\"!uS.environment.production\">\n {{ item.type }}\n </div>\n <!-- <div class=\"col-md-auto\">\n <app-input-td-rf [xsmall]=\"true\" [label]=\"'Is Number?'\"\n [stacked]=\"false\" type=\"checkbox\"\n (modelChange)=\"isNumType($event, item)\" />\n </div> -->\n <div class=\"col-md-auto\">\n <app-btn text=\"Select\" (mclick)=\"changeToActive(item)\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Selected Columns' | appTranslate | async }}\n </div>\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #destinationList=\"cdkDropList\"\n [cdkDropListData]=\"activeFields()\"\n [cdkDropListConnectedTo]=\"[sourceList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of activeFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the non-selected columns group or re-order\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div>\n <mat-slide-toggle *ngIf=\"item.active\" [(ngModel)]=\"item.sticky\">\n {{ 'Sticky' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"w-100 pt-2 d-flex justify-content-end\" *modalFooter>\n <app-btn text=\"Update Columns\" (mclick)=\"emitFieldsChanged(); acModal.close()\" />\n </div>\n</modal-comp>\n", styles: [".example-custom-placeholder{background:#ccc;border:dotted 3px #999;border-radius:var(--border-radius);min-height:42px;transition:transform .25s cubic-bezier(0,0,.2,1)}.cage{height:calc(80vh - 215px)}\n"], dependencies: [{ 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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model", "disabled"], outputs: ["modelChange"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "component", type: i4.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: i5.ModalBodyDirective, selector: "[modalBody]" }, { kind: "directive", type: i6.ModalFooterDirective, selector: "[modalFooter]" }, { kind: "pipe", type: ResponsiveValPipe, name: "responsiveVal" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
|
|
78
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: FieldsToDisplayComponent, isStandalone: true, selector: "fields-to-display", inputs: { query1: { classPropertyName: "query1", publicName: "query1", isSignal: true, isRequired: false, transformFunction: null }, query2: { classPropertyName: "query2", publicName: "query2", isSignal: true, isRequired: false, transformFunction: null }, _fields: { classPropertyName: "_fields", publicName: "fields", isSignal: false, isRequired: false, transformFunction: null }, _currentColumns: { classPropertyName: "_currentColumns", publicName: "currentColumns", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { query1: "query1Change", query2: "query2Change", fieldsChanged: "fieldsChanged" }, providers: [FilterArrayByStringPipe], ngImport: i0, template: "<app-btn\n type=\"outline\"\n customIcon=\"fa fa-bars\"\n iconPosition=\"right\"\n text=\"Define Outputs\"\n (mclick)=\"acModal.open()\" />\n<modal-comp\n header=\"Arrange Columns\"\n [width]=\"{ XLarge: '70%', Large: '80%' } | responsiveVal\"\n height=\"80vh\"\n #acModal>\n <div *modalBody>\n @if (uS.isMobileSignal()) {\n <div class=\"mb-2\">\n <app-input-td-rf [noFormat]=\"true\" [(model)]=\"query1\" placeholder=\"Filter\" />\n </div>\n <div class=\"border rounded-10\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Column' | appTranslate | async }}</th>\n <th>{{ 'Visible' | appTranslate | async }}</th>\n <th>{{ 'Sticky' | appTranslate | async }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredAllFields(); track item) {\n <tr>\n <td scope=\"row\">\n {{ item.t | titlecase | appTranslate | async }}\n </td>\n <td>\n <mat-slide-toggle [(ngModel)]=\"item.active\"></mat-slide-toggle>\n </td>\n <td>\n @if (item.active) {\n <mat-slide-toggle [(ngModel)]=\"item.sticky\"></mat-slide-toggle>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <!-- <div>query2 {{ query2() }}</div>\n <div class=\"\">\n searchRef.valueSignal {{ searchRef.valueSignal() }}\n </div> -->\n <div class=\"row row-cols-2\">\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Non-Selected Columns' | appTranslate | async }}\n </div>\n <!-- <div class=\"mb-2\">\n <app-input-td-rf [(model)]=\"query\" placeholder=\"Filter\" />\n </div> -->\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div class=\"row my-2 mx-0 justify-content-center\">\n <div class=\"col-sm-10\">\n <app-input-td-rf\n #searchRef\n [noFormat]=\"true\"\n [(model)]=\"query2\"\n placeholder=\"Search by name\"/>\n </div>\n </div>\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #sourceList=\"cdkDropList\"\n [cdkDropListData]=\"nonActiveFields()\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[destinationList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of nonActiveFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the selected columns group\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div class=\"col-md-auto\">\n <div class=\"row\">\n <div class=\"col-md-auto\" *ngIf=\"!uS.environment.production\">\n {{ item.type }}\n </div>\n <!-- <div class=\"col-md-auto\">\n <app-input-td-rf [xsmall]=\"true\" [label]=\"'Is Number?'\"\n [stacked]=\"false\" type=\"checkbox\"\n (modelChange)=\"isNumType($event, item)\" />\n </div> -->\n <div class=\"col-md-auto\">\n <app-btn text=\"Select\" (mclick)=\"changeToActive(item)\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Selected Columns' | appTranslate | async }}\n </div>\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #destinationList=\"cdkDropList\"\n [cdkDropListData]=\"activeFields()\"\n [cdkDropListConnectedTo]=\"[sourceList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of activeFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the non-selected columns group or re-order\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div>\n <mat-slide-toggle *ngIf=\"item.active\" [(ngModel)]=\"item.sticky\">\n {{ 'Sticky' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"w-100 pt-2 d-flex justify-content-end\" *modalFooter>\n <app-btn text=\"Update Columns\" (mclick)=\"emitFieldsChanged(); acModal.close()\" />\n </div>\n</modal-comp>\n", styles: [".example-custom-placeholder{background:#ccc;border:dotted 3px #999;border-radius:var(--border-radius);min-height:42px;transition:transform .25s cubic-bezier(0,0,.2,1)}.cage{height:calc(80vh - 215px)}\n"], dependencies: [{ 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: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputTD_RFComponent, selector: "app-input-td-rf", inputs: ["validators", "asyncValidators", "model", "disabled"], outputs: ["modelChange"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "component", type: i4.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: i5.ModalBodyDirective, selector: "[modalBody]" }, { kind: "directive", type: i6.ModalFooterDirective, selector: "[modalFooter]" }, { kind: "pipe", type: ResponsiveValPipe, name: "responsiveVal" }, { kind: "pipe", type: TranslatePipe, name: "appTranslate" }] }); }
|
|
79
79
|
}
|
|
80
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: FieldsToDisplayComponent, decorators: [{
|
|
81
81
|
type: Component,
|
|
@@ -97,7 +97,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
97
97
|
ModalComponents,
|
|
98
98
|
ResponsiveValPipe,
|
|
99
99
|
TranslatePipe,
|
|
100
|
-
], providers: [FilterArrayByStringPipe], template: "<app-btn\n type=\"outline\"\n customIcon=\"fa fa-bars\"\n iconPosition=\"right\"\n text=\"Define Outputs\"\n (mclick)=\"acModal.open()\" />\n<modal-comp\n header=\"Arrange Columns\"\n [width]=\"{ XLarge: '70%', Large: '80%' } | responsiveVal\"\n height=\"80vh\"\n #acModal>\n <div *modalBody>\n @if (uS.isMobileSignal()) {\n <div class=\"mb-2\">\n <app-input-td-rf [
|
|
100
|
+
], providers: [FilterArrayByStringPipe], template: "<app-btn\n type=\"outline\"\n customIcon=\"fa fa-bars\"\n iconPosition=\"right\"\n text=\"Define Outputs\"\n (mclick)=\"acModal.open()\" />\n<modal-comp\n header=\"Arrange Columns\"\n [width]=\"{ XLarge: '70%', Large: '80%' } | responsiveVal\"\n height=\"80vh\"\n #acModal>\n <div *modalBody>\n @if (uS.isMobileSignal()) {\n <div class=\"mb-2\">\n <app-input-td-rf [noFormat]=\"true\" [(model)]=\"query1\" placeholder=\"Filter\" />\n </div>\n <div class=\"border rounded-10\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'Column' | appTranslate | async }}</th>\n <th>{{ 'Visible' | appTranslate | async }}</th>\n <th>{{ 'Sticky' | appTranslate | async }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredAllFields(); track item) {\n <tr>\n <td scope=\"row\">\n {{ item.t | titlecase | appTranslate | async }}\n </td>\n <td>\n <mat-slide-toggle [(ngModel)]=\"item.active\"></mat-slide-toggle>\n </td>\n <td>\n @if (item.active) {\n <mat-slide-toggle [(ngModel)]=\"item.sticky\"></mat-slide-toggle>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n } @else {\n <!-- <div>query2 {{ query2() }}</div>\n <div class=\"\">\n searchRef.valueSignal {{ searchRef.valueSignal() }}\n </div> -->\n <div class=\"row row-cols-2\">\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Non-Selected Columns' | appTranslate | async }}\n </div>\n <!-- <div class=\"mb-2\">\n <app-input-td-rf [(model)]=\"query\" placeholder=\"Filter\" />\n </div> -->\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div class=\"row my-2 mx-0 justify-content-center\">\n <div class=\"col-sm-10\">\n <app-input-td-rf\n #searchRef\n [noFormat]=\"true\"\n [(model)]=\"query2\"\n placeholder=\"Search by name\"/>\n </div>\n </div>\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #sourceList=\"cdkDropList\"\n [cdkDropListData]=\"nonActiveFields()\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[destinationList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of nonActiveFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the selected columns group\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div class=\"col-md-auto\">\n <div class=\"row\">\n <div class=\"col-md-auto\" *ngIf=\"!uS.environment.production\">\n {{ item.type }}\n </div>\n <!-- <div class=\"col-md-auto\">\n <app-input-td-rf [xsmall]=\"true\" [label]=\"'Is Number?'\"\n [stacked]=\"false\" type=\"checkbox\"\n (modelChange)=\"isNumType($event, item)\" />\n </div> -->\n <div class=\"col-md-auto\">\n <app-btn text=\"Select\" (mclick)=\"changeToActive(item)\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n <div>\n <div class=\"text-primary f-600 mb-2\">\n {{ 'Selected Columns' | appTranslate | async }}\n </div>\n <div class=\"border rounded-10 p-2 bg-light cage overflow-auto\">\n <div\n class=\"row row-cols-1 g-2\"\n cdkDropList\n #destinationList=\"cdkDropList\"\n [cdkDropListData]=\"activeFields()\"\n [cdkDropListConnectedTo]=\"[sourceList]\"\n (cdkDropListDropped)=\"drop($event)\">\n @for (item of activeFields(); track item.f; let i = $index) {\n <div class=\"\" cdkDrag>\n <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"border p-2 rounded-10 bg-white\">\n <div class=\"row row-cols-auto justify-content-between\">\n <div class=\"d-flex align-items-center\">\n <i\n cdkDragHandle\n matTooltip=\"Drag the icon to move the column to the non-selected columns group or re-order\"\n class=\"drag-cursor material-icons\">\n drag_handle\n </i>\n {{ item.t | titlecase | appTranslate | async }}\n </div>\n <div>\n <mat-slide-toggle *ngIf=\"item.active\" [(ngModel)]=\"item.sticky\">\n {{ 'Sticky' | appTranslate | async }}\n </mat-slide-toggle>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n <div class=\"w-100 pt-2 d-flex justify-content-end\" *modalFooter>\n <app-btn text=\"Update Columns\" (mclick)=\"emitFieldsChanged(); acModal.close()\" />\n </div>\n</modal-comp>\n", styles: [".example-custom-placeholder{background:#ccc;border:dotted 3px #999;border-radius:var(--border-radius);min-height:42px;transition:transform .25s cubic-bezier(0,0,.2,1)}.cage{height:calc(80vh - 215px)}\n"] }]
|
|
101
101
|
}], ctorParameters: () => [], propDecorators: { _fields: [{
|
|
102
102
|
type: Input,
|
|
103
103
|
args: ['fields']
|
|
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
107
107
|
}], fieldsChanged: [{
|
|
108
108
|
type: Output
|
|
109
109
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2ZpZWxkcy10by1kaXNwbGF5L2ZpZWxkcy10by1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9maWVsZHMtdG8tZGlzcGxheS9maWVsZHMtdG8tZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEosT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxJQUFJLEVBQUUs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QUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BDLENBQUM7OEdBbkZVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLGlOQUZ4QixDQUFDLHVCQUF1QixDQUFDLDBCQ3ZDdEMsZzVNQXdKQSxtUURuSUksWUFBWSw2YkFDWixJQUFJLDZGQUNKLG1CQUFtQixxSkFFbkIsb0JBQW9CLGtXQUNwQixXQUFXLCtWQUNYLFdBQVcsK2RBQ1gsT0FBTyx3YkFDUCxrQkFBa0IsOEZBQ2xCLGFBQWEsOEZBQ2IsZ0JBQWdCLHdUQUNoQixTQUFTLHlDQUNULGFBQWEsdWdCQUdiLGlCQUFpQixpREFDakIsYUFBYTs7MkZBSUosd0JBQXdCO2tCQTFCcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FHakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osSUFBSTt3QkFDSixtQkFBbUI7d0JBQ25CLEtBQUs7d0JBQ0wsb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsYUFBYTtxQkFDZCxhQUNVLENBQUMsdUJBQXVCLENBQUM7d0RBTWYsT0FBTztzQkFBM0IsS0FBSzt1QkFBQyxRQUFRO2dCQVNjLGVBQWU7c0JBQTNDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQStCYixhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0sIENka0Ryb3BMaXN0LCBDZGtEcmFnLCBDZGtEcmFnUGxhY2Vob2xkZXIsIENka0RyYWdIYW5kbGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEZpbHRlckFycmF5QnlTdHJpbmdQaXBlLCBSZXNwb25zaXZlVmFsUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbnB1dFREX1JGQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQvaW5wdXQtdGQtcmYuY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBBc3luY1BpcGUsIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnRzIH0gZnJvbSAnLi4vbW9kYWwtY29tcG9uZW50cy9tb2RhbC5jb21wb25lbnRzJztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29sIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmllbGRzLXRvLWRpc3BsYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWVsZHMtdG8tZGlzcGxheS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIE5nSWYsXG4gICAgSW5wdXRURF9SRkNvbXBvbmVudCxcbiAgICBOZ0ZvcixcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICBDZGtEcmFnLFxuICAgIENka0RyYWdQbGFjZWhvbGRlcixcbiAgICBDZGtEcmFnSGFuZGxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIFRpdGxlQ2FzZVBpcGUsXG4gICAgRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUsXG4gICAgTW9kYWxDb21wb25lbnRzLFxuICAgIFJlc3BvbnNpdmVWYWxQaXBlLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW0ZpbHRlckFycmF5QnlTdHJpbmdQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgRmllbGRzVG9EaXNwbGF5Q29tcG9uZW50IHtcbiAgcXVlcnkgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBzZWFyY2hJbnB1dCA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgQElucHV0KCdmaWVsZHMnKSBzZXQgX2ZpZWxkcyh2OiBUYWJsZUNvbFtdKSB7XG4gICAgdGhpcy5hbGxGaWVsZHMuc2V0KFxuICAgICAgY2xvbmVEZWVwKHYpLm1hcCgoeCkgPT4ge1xuICAgICAgICB4WydpZCddID0geC5mPy50b1N0cmluZygpO1xuICAgICAgICByZXR1cm4geDtcbiAgICAgIH0pIHx8IFtdLFxuICAgICk7XG4gIH1cblxuICBASW5wdXQoJ2N1cnJlbnRDb2x1bW5zJykgc2V0IF9jdXJyZW50Q29sdW1ucyh2OiBUYWJsZUNvbFtdKSB7XG4gICAgdGhpcy5hbGxGaWVsZHMudXBkYXRlKChhbGxGaWVsZHMpID0+XG4gICAgICB1bmlxQnkoXG4gICAgICAgIChcbiAgICAgICAgICB2Lm1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgeC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgfSkgfHwgW11cbiAgICAgICAgKS5jb25jYXQoYWxsRmllbGRzKSxcbiAgICAgICAgJ2YnLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgYWxsRmllbGRzID0gc2lnbmFsPFRhYmxlQ29sW10+KFtdKTtcblxuICBmaWx0ZXJlZEFsbEZpZWxkcyA9IGNvbXB1dGVkPFRhYmxlQ29sW10+KCgpID0+IHRoaXMuZmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUudHJhbnNmb3JtKHRoaXMuYWxsRmllbGRzKCksIHRoaXMucXVlcnkoKSEsIFsnZicsICd0J10pKTtcblxuICBhY3RpdmVGaWVsZHMgPSBjb21wdXRlZDxUYWJsZUNvbFtdPigoKSA9PiB0aGlzLmFsbEZpZWxkcygpLmZpbHRlcigoeCkgPT4geC5hY3RpdmUpKTtcbiAgLy8gYWN0aXZlRmllbGRzID0gc2lnbmFsPFRhYmxlQ29sW10+KFtdKTtcblxuICBub25BY3RpdmVGaWVsZHMgPSBjb21wdXRlZDxUYWJsZUNvbFtdPigoKSA9PlxuICAgIHRoaXMuZmlsdGVyQXJyYXlCeVN0cmluZ1BpcGVcbiAgICAgIC50cmFuc2Zvcm0oXG4gICAgICAgIHRoaXMuYWxsRmllbGRzKCkuZmlsdGVyKCh4KSA9PiAheC5hY3RpdmUpLFxuICAgICAgICB0aGlzLnNlYXJjaElucHV0KCkhLFxuICAgICAgICBbJ2YnLCAndCddLFxuICAgICAgKVxuICAgICAgLnNvcnQyKCd0JywgdHJ1ZSksXG4gICk7XG5cbiAgQE91dHB1dCgpIGZpZWxkc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBuRmllbGRzOiBUYWJsZUNvbFtdO1xuICAgIGFsbEZpZWxkczogVGFibGVDb2xbXTtcbiAgfT4oKTtcblxuICBwdWJsaWMgZmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUgPSBpbmplY3QoRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUpO1xuICBwdWJsaWMgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8VGFibGVDb2xbXT4pIHtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIGNvbnN0IGl0ZW0gPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhW2V2ZW50LnByZXZpb3VzSW5kZXhdO1xuICAgICAgaXRlbS5hY3RpdmUgPSAhaXRlbS5hY3RpdmU7XG4gICAgICBpZiAoIWl0ZW0uYWN0aXZlKSBpdGVtLnN0aWNreSA9IGZhbHNlO1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVG9BY3RpdmUobm9uQWN0aXZlT2JqOiBUYWJsZUNvbCkge1xuICAgIHRoaXMuYWxsRmllbGRzLnVwZGF0ZSgoYWxsRmllbGRzKSA9PlxuICAgICAgYWxsRmllbGRzLm1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAobm9uQWN0aXZlT2JqLmYgPT0geC5mKSB4LmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGVtaXRGaWVsZHNDaGFuZ2VkKCkge1xuICAgIHRoaXMuZmllbGRzQ2hhbmdlZC5lbWl0KHtcbiAgICAgIG5GaWVsZHM6IHRoaXMudVMuaXNNb2JpbGUgPyB0aGlzLmFsbEZpZWxkcygpLmZpbHRlcigoeCkgPT4geC5hY3RpdmUpIDogdGhpcy5hY3RpdmVGaWVsZHMoKSxcbiAgICAgIGFsbEZpZWxkczogdGhpcy5hbGxGaWVsZHMoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGlzTnVtVHlwZShlOiBhbnksIGl0ZW06IFRhYmxlQ29sKSB7XG4gICAgZSA/IChpdGVtLnR5cGUgPSAnbnVtYmVyJykgOiBudWxsO1xuICB9XG59XG4iLCI8YXBwLWJ0blxuICB0eXBlPVwib3V0bGluZVwiXG4gIGN1c3RvbUljb249XCJmYSBmYS1iYXJzXCJcbiAgaWNvblBvc2l0aW9uPVwicmlnaHRcIlxuICB0ZXh0PVwiRGVmaW5lIE91dHB1dHNcIlxuICAobWNsaWNrKT1cImFjTW9kYWwub3BlbigpXCIgLz5cbjxtb2RhbC1jb21wXG4gIGhlYWRlcj1cIkFycmFuZ2UgQ29sdW1uc1wiXG4gIFt3aWR0aF09XCJ7IFhMYXJnZTogJzcwJScsIExhcmdlOiAnODAlJyB9IHwgcmVzcG9uc2l2ZVZhbFwiXG4gIGhlaWdodD1cIjgwdmhcIlxuICAjYWNNb2RhbD5cbiAgPGRpdiAqbW9kYWxCb2R5PlxuICAgIEBpZiAodVMuaXNNb2JpbGVTaWduYWwoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgPGFwcC1pbnB1dC10ZC1yZiBbbW9kZWxdPVwicXVlcnkoKVwiIChtb2RlbENoYW5nZSk9XCJxdWVyeS5zZXQoJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XG4gICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGg+e3sgJ0NvbHVtbicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyAnVmlzaWJsZScgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyAnU3RpY2t5JyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkQWxsRmllbGRzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50IHwgdGl0bGVjYXNlIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiaXRlbS5hY3RpdmVcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiaXRlbS5zdGlja3lcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLTJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5IGYtNjAwIG1iLTJcIj5cbiAgICAgICAgICAgIHt7ICdOb24tU2VsZWN0ZWQgQ29sdW1ucycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtdGQtcmYgWyhtb2RlbCldPVwicXVlcnlcIiBwbGFjZWhvbGRlcj1cIkZpbHRlclwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQtMTAgcC0yIGJnLWxpZ2h0IGNhZ2Ugb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteS0yIG14LTAganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEwXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1pbnB1dC10ZC1yZlxuICAgICAgICAgICAgICAgICAgI3NlYXJjaCBcbiAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJzZWFyY2hJbnB1dCgpXCJcbiAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJzZWFyY2hJbnB1dC5zZXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBuYW1lXCI+PC9hcHAtaW5wdXQtdGQtcmY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLTEgZy0yXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgI3NvdXJjZUxpc3Q9XCJjZGtEcm9wTGlzdFwiXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwibm9uQWN0aXZlRmllbGRzKClcIlxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZFxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJbZGVzdGluYXRpb25MaXN0XVwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygbm9uQWN0aXZlRmllbGRzKCk7IHRyYWNrIGl0ZW0uZjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWN1c3RvbS1wbGFjZWhvbGRlclwiICpjZGtEcmFnUGxhY2Vob2xkZXI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHAtMiByb3VuZGVkLTEwIGJnLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEcmFnIHRoZSBpY29uIHRvIG1vdmUgdGhlIGNvbHVtbiB0byB0aGUgc2VsZWN0ZWQgY29sdW1ucyBncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZy1jdXJzb3IgbWF0ZXJpYWwtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ19oYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udCB8IHRpdGxlY2FzZSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtYXV0b1wiICpuZ0lmPVwiIXVTLmVudmlyb25tZW50LnByb2R1Y3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnR5cGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbC1tZC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbnB1dC10ZC1yZiBbeHNtYWxsXT1cInRydWVcIiBbbGFiZWxdPVwiJ0lzIE51bWJlcj8nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwiZmFsc2VcIiB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaXNOdW1UeXBlKCRldmVudCwgaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0biB0ZXh0PVwiU2VsZWN0XCIgKG1jbGljayk9XCJjaGFuZ2VUb0FjdGl2ZShpdGVtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5IGYtNjAwIG1iLTJcIj5cbiAgICAgICAgICAgIHt7ICdTZWxlY3RlZCBDb2x1bW5zJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIHAtMiBiZy1saWdodCBjYWdlIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMtMSBnLTJcIlxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgICAgICAjZGVzdGluYXRpb25MaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImFjdGl2ZUZpZWxkcygpXCJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW3NvdXJjZUxpc3RdXCJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBhY3RpdmVGaWVsZHMoKTsgdHJhY2sgaXRlbS5mOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIiBjZGtEcmFnPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtY3VzdG9tLXBsYWNlaG9sZGVyXCIgKmNka0RyYWdQbGFjZWhvbGRlcj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcC0yIHJvdW5kZWQtMTAgYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29scy1hdXRvIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRyYWcgdGhlIGljb24gdG8gbW92ZSB0aGUgY29sdW1uIHRvIHRoZSBub24tc2VsZWN0ZWQgY29sdW1ucyBncm91cCBvciByZS1vcmRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZy1jdXJzb3IgbWF0ZXJpYWwtaWNvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZ19oYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udCB8IHRpdGxlY2FzZSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlICpuZ0lmPVwiaXRlbS5hY3RpdmVcIiBbKG5nTW9kZWwpXT1cIml0ZW0uc3RpY2t5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdTdGlja3knIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInctMTAwIHB0LTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiAqbW9kYWxGb290ZXI+XG4gICAgPGFwcC1idG4gdGV4dD1cIlVwZGF0ZSBDb2x1bW5zXCIgKG1jbGljayk9XCJlbWl0RmllbGRzQ2hhbmdlZCgpOyBhY01vZGFsLmNsb3NlKClcIiAvPlxuICA8L2Rpdj5cbjwvbW9kYWwtY29tcD5cbiJdfQ==
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2ZpZWxkcy10by1kaXNwbGF5L2ZpZWxkcy10by1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9maWVsZHMtdG8tZGlzcGxheS9maWVsZHMtdG8tZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEosT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUs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LENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQzs4R0FuRlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsbXJCQUZ4QixDQUFDLHVCQUF1QixDQUFDLDBCQ3ZDdEMsOCtNQTRKQSxtUUR2SUksWUFBWSw2YkFDWixJQUFJLDZGQUNKLG1CQUFtQixxSkFFbkIsb0JBQW9CLGtXQUNwQixXQUFXLCtWQUNYLFdBQVcsK2RBQ1gsT0FBTyx3YkFDUCxrQkFBa0IsOEZBQ2xCLGFBQWEsOEZBQ2IsZ0JBQWdCLHdUQUNoQixTQUFTLHlDQUNULGFBQWEsdWdCQUdiLGlCQUFpQixpREFDakIsYUFBYTs7MkZBSUosd0JBQXdCO2tCQTFCcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FHakIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osSUFBSTt3QkFDSixtQkFBbUI7d0JBQ25CLEtBQUs7d0JBQ0wsb0JBQW9CO3dCQUNwQixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsYUFBYTtxQkFDZCxhQUNVLENBQUMsdUJBQXVCLENBQUM7d0RBTWYsT0FBTztzQkFBM0IsS0FBSzt1QkFBQyxRQUFRO2dCQVNjLGVBQWU7c0JBQTNDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQStCYixhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0sIENka0Ryb3BMaXN0LCBDZGtEcmFnLCBDZGtEcmFnUGxhY2Vob2xkZXIsIENka0RyYWdIYW5kbGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBjb21wdXRlZCwgaW5qZWN0LCBtb2RlbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIHVuaXFCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZSwgUmVzcG9uc2l2ZVZhbFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRURF9SRkNvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L2lucHV0LXRkLXJmLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgQXN5bmNQaXBlLCBUaXRsZUNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50cyB9IGZyb20gJy4uL21vZGFsLWNvbXBvbmVudHMvbW9kYWwuY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUNvbCB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZpZWxkcy10by1kaXNwbGF5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkcy10by1kaXNwbGF5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBOZ0lmLFxuICAgIElucHV0VERfUkZDb21wb25lbnQsXG4gICAgTmdGb3IsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ2RrRHJvcExpc3QsXG4gICAgQ2RrRHJhZyxcbiAgICBDZGtEcmFnUGxhY2Vob2xkZXIsXG4gICAgQ2RrRHJhZ0hhbmRsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBUaXRsZUNhc2VQaXBlLFxuICAgIEZpbHRlckFycmF5QnlTdHJpbmdQaXBlLFxuICAgIE1vZGFsQ29tcG9uZW50cyxcbiAgICBSZXNwb25zaXZlVmFsUGlwZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxuICBwcm92aWRlcnM6IFtGaWx0ZXJBcnJheUJ5U3RyaW5nUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkc1RvRGlzcGxheUNvbXBvbmVudCB7XG4gIHF1ZXJ5MSA9IG1vZGVsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcXVlcnkyID0gbW9kZWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIEBJbnB1dCgnZmllbGRzJykgc2V0IF9maWVsZHModjogVGFibGVDb2xbXSkge1xuICAgIHRoaXMuYWxsRmllbGRzLnNldChcbiAgICAgIGNsb25lRGVlcCh2KS5tYXAoKHgpID0+IHtcbiAgICAgICAgeFsnaWQnXSA9IHguZj8udG9TdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9KSB8fCBbXSxcbiAgICApO1xuICB9XG5cbiAgQElucHV0KCdjdXJyZW50Q29sdW1ucycpIHNldCBfY3VycmVudENvbHVtbnModjogVGFibGVDb2xbXSkge1xuICAgIHRoaXMuYWxsRmllbGRzLnVwZGF0ZSgoYWxsRmllbGRzKSA9PlxuICAgICAgdW5pcUJ5KFxuICAgICAgICAoXG4gICAgICAgICAgdi5tYXAoKHgpID0+IHtcbiAgICAgICAgICAgIHguYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICAgIH0pIHx8IFtdXG4gICAgICAgICkuY29uY2F0KGFsbEZpZWxkcyksXG4gICAgICAgICdmJyxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGFsbEZpZWxkcyA9IHNpZ25hbDxUYWJsZUNvbFtdPihbXSk7XG5cbiAgZmlsdGVyZWRBbGxGaWVsZHMgPSBjb21wdXRlZDxUYWJsZUNvbFtdPigoKSA9PiB0aGlzLmZpbHRlckFycmF5QnlTdHJpbmdQaXBlLnRyYW5zZm9ybSh0aGlzLmFsbEZpZWxkcygpLCB0aGlzLnF1ZXJ5MSgpISwgWydmJywgJ3QnXSkpO1xuXG4gIGFjdGl2ZUZpZWxkcyA9IGNvbXB1dGVkPFRhYmxlQ29sW10+KCgpID0+IHRoaXMuYWxsRmllbGRzKCkuZmlsdGVyKCh4KSA9PiB4LmFjdGl2ZSkpO1xuICAvLyBhY3RpdmVGaWVsZHMgPSBzaWduYWw8VGFibGVDb2xbXT4oW10pO1xuXG4gIG5vbkFjdGl2ZUZpZWxkcyA9IGNvbXB1dGVkPFRhYmxlQ29sW10+KCgpID0+XG4gICAgdGhpcy5maWx0ZXJBcnJheUJ5U3RyaW5nUGlwZVxuICAgICAgLnRyYW5zZm9ybShcbiAgICAgICAgdGhpcy5hbGxGaWVsZHMoKS5maWx0ZXIoKHgpID0+ICF4LmFjdGl2ZSksXG4gICAgICAgIHRoaXMucXVlcnkyKCkhLFxuICAgICAgICBbJ2YnLCAndCddLFxuICAgICAgKVxuICAgICAgLnNvcnQyKCd0JywgdHJ1ZSksXG4gICk7XG5cbiAgQE91dHB1dCgpIGZpZWxkc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBuRmllbGRzOiBUYWJsZUNvbFtdO1xuICAgIGFsbEZpZWxkczogVGFibGVDb2xbXTtcbiAgfT4oKTtcblxuICBwdWJsaWMgZmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUgPSBpbmplY3QoRmlsdGVyQXJyYXlCeVN0cmluZ1BpcGUpO1xuICBwdWJsaWMgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8VGFibGVDb2xbXT4pIHtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIGNvbnN0IGl0ZW0gPSBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhW2V2ZW50LnByZXZpb3VzSW5kZXhdO1xuICAgICAgaXRlbS5hY3RpdmUgPSAhaXRlbS5hY3RpdmU7XG4gICAgICBpZiAoIWl0ZW0uYWN0aXZlKSBpdGVtLnN0aWNreSA9IGZhbHNlO1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVG9BY3RpdmUobm9uQWN0aXZlT2JqOiBUYWJsZUNvbCkge1xuICAgIHRoaXMuYWxsRmllbGRzLnVwZGF0ZSgoYWxsRmllbGRzKSA9PlxuICAgICAgYWxsRmllbGRzLm1hcCgoeCkgPT4ge1xuICAgICAgICBpZiAobm9uQWN0aXZlT2JqLmYgPT0geC5mKSB4LmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGVtaXRGaWVsZHNDaGFuZ2VkKCkge1xuICAgIHRoaXMuZmllbGRzQ2hhbmdlZC5lbWl0KHtcbiAgICAgIG5GaWVsZHM6IHRoaXMudVMuaXNNb2JpbGUgPyB0aGlzLmFsbEZpZWxkcygpLmZpbHRlcigoeCkgPT4geC5hY3RpdmUpIDogdGhpcy5hY3RpdmVGaWVsZHMoKSxcbiAgICAgIGFsbEZpZWxkczogdGhpcy5hbGxGaWVsZHMoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGlzTnVtVHlwZShlOiBhbnksIGl0ZW06IFRhYmxlQ29sKSB7XG4gICAgZSA/IChpdGVtLnR5cGUgPSAnbnVtYmVyJykgOiBudWxsO1xuICB9XG59XG4iLCI8YXBwLWJ0blxuICB0eXBlPVwib3V0bGluZVwiXG4gIGN1c3RvbUljb249XCJmYSBmYS1iYXJzXCJcbiAgaWNvblBvc2l0aW9uPVwicmlnaHRcIlxuICB0ZXh0PVwiRGVmaW5lIE91dHB1dHNcIlxuICAobWNsaWNrKT1cImFjTW9kYWwub3BlbigpXCIgLz5cbjxtb2RhbC1jb21wXG4gIGhlYWRlcj1cIkFycmFuZ2UgQ29sdW1uc1wiXG4gIFt3aWR0aF09XCJ7IFhMYXJnZTogJzcwJScsIExhcmdlOiAnODAlJyB9IHwgcmVzcG9uc2l2ZVZhbFwiXG4gIGhlaWdodD1cIjgwdmhcIlxuICAjYWNNb2RhbD5cbiAgPGRpdiAqbW9kYWxCb2R5PlxuICAgIEBpZiAodVMuaXNNb2JpbGVTaWduYWwoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgPGFwcC1pbnB1dC10ZC1yZiBbbm9Gb3JtYXRdPVwidHJ1ZVwiIFsobW9kZWwpXT1cInF1ZXJ5MVwiIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwXCI+XG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XG4gICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGg+e3sgJ0NvbHVtbicgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyAnVmlzaWJsZScgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvdGg+XG4gICAgICAgICAgICAgIDx0aD57eyAnU3RpY2t5JyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19PC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkQWxsRmllbGRzKCk7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0ZCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50IHwgdGl0bGVjYXNlIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiaXRlbS5hY3RpdmVcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiaXRlbS5zdGlja3lcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIDxkaXY+cXVlcnkyIHt7IHF1ZXJ5MigpIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIHNlYXJjaFJlZi52YWx1ZVNpZ25hbCAgICB7eyBzZWFyY2hSZWYudmFsdWVTaWduYWwoKSB9fVxuICAgICAgPC9kaXY+IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyByb3ctY29scy0yXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBmLTYwMCBtYi0yXCI+XG4gICAgICAgICAgICB7eyAnTm9uLVNlbGVjdGVkIENvbHVtbnMnIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWlucHV0LXRkLXJmIFsobW9kZWwpXT1cInF1ZXJ5XCIgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkLTEwIHAtMiBiZy1saWdodCBjYWdlIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXktMiBteC0wIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMFwiPlxuICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtdGQtcmZcbiAgICAgICAgICAgICAgICAgICNzZWFyY2hSZWZcbiAgICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInF1ZXJ5MlwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBuYW1lXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInJvdyByb3ctY29scy0xIGctMlwiXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICNzb3VyY2VMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cIm5vbkFjdGl2ZUZpZWxkcygpXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2Rlc3RpbmF0aW9uTGlzdF1cIlxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIG5vbkFjdGl2ZUZpZWxkcygpOyB0cmFjayBpdGVtLmY7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIGNka0RyYWc+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1jdXN0b20tcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBwLTIgcm91bmRlZC0xMCBiZy13aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLWF1dG8ganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRHJhZyB0aGUgaWNvbiB0byBtb3ZlIHRoZSBjb2x1bW4gdG8gdGhlIHNlbGVjdGVkIGNvbHVtbnMgZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWctY3Vyc29yIG1hdGVyaWFsLWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdfaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnQgfCB0aXRsZWNhc2UgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLWF1dG9cIiAqbmdJZj1cIiF1Uy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50eXBlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb2wtbWQtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtdGQtcmYgW3hzbWFsbF09XCJ0cnVlXCIgW2xhYmVsXT1cIidJcyBOdW1iZXI/J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cImZhbHNlXCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImlzTnVtVHlwZSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG4gdGV4dD1cIlNlbGVjdFwiIChtY2xpY2spPVwiY2hhbmdlVG9BY3RpdmUoaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeSBmLTYwMCBtYi0yXCI+XG4gICAgICAgICAgICB7eyAnU2VsZWN0ZWQgQ29sdW1ucycgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZC0xMCBwLTIgYmctbGlnaHQgY2FnZSBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLTEgZy0yXCJcbiAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgI2Rlc3RpbmF0aW9uTGlzdD1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJhY3RpdmVGaWVsZHMoKVwiXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIltzb3VyY2VMaXN0XVwiXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgYWN0aXZlRmllbGRzKCk7IHRyYWNrIGl0ZW0uZjsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWN1c3RvbS1wbGFjZWhvbGRlclwiICpjZGtEcmFnUGxhY2Vob2xkZXI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHAtMiByb3VuZGVkLTEwIGJnLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEcmFnIHRoZSBpY29uIHRvIG1vdmUgdGhlIGNvbHVtbiB0byB0aGUgbm9uLXNlbGVjdGVkIGNvbHVtbnMgZ3JvdXAgb3IgcmUtb3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyYWctY3Vyc29yIG1hdGVyaWFsLWljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdfaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnQgfCB0aXRsZWNhc2UgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSAqbmdJZj1cIml0ZW0uYWN0aXZlXCIgWyhuZ01vZGVsKV09XCJpdGVtLnN0aWNreVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnU3RpY2t5JyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCBwdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKm1vZGFsRm9vdGVyPlxuICAgIDxhcHAtYnRuIHRleHQ9XCJVcGRhdGUgQ29sdW1uc1wiIChtY2xpY2spPVwiZW1pdEZpZWxkc0NoYW5nZWQoKTsgYWNNb2RhbC5jbG9zZSgpXCIgLz5cbiAgPC9kaXY+XG48L21vZGFsLWNvbXA+XG4iXX0=
|
|
@@ -5,6 +5,7 @@ import { InputProviders, InputSharedModules } from './input-shared.module';
|
|
|
5
5
|
import { DateInputComponent } from './date-input/date-input.component';
|
|
6
6
|
import { debounceTime } from 'rxjs';
|
|
7
7
|
import { cloneDeep } from 'lodash-es';
|
|
8
|
+
import { toObservable } from '@angular/core/rxjs-interop';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "@angular/common";
|
|
10
11
|
import * as i2 from "../btn/btn.component";
|
|
@@ -56,14 +57,24 @@ export class InputTD_RFComponent extends InputBasicComponent {
|
|
|
56
57
|
this.control()?.enable();
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
|
-
// @Input('type') set _type(v: InputType) {
|
|
60
|
-
// super._type = v;
|
|
61
|
-
// if (v == 'percentage') this.oType = 'number';
|
|
62
|
-
// }
|
|
63
60
|
constructor() {
|
|
64
61
|
super();
|
|
65
62
|
this.modelChange = new EventEmitter();
|
|
63
|
+
// @Input('type') set _type(v: InputType) {
|
|
64
|
+
// super._type = v;
|
|
65
|
+
// if (v == 'percentage') this.oType = 'number';
|
|
66
|
+
// }
|
|
67
|
+
this.valueChanges = toObservable(this.valueSignal)
|
|
68
|
+
.pipe(debounceTime(100))
|
|
69
|
+
.subscribe((r) => {
|
|
70
|
+
// debugger;
|
|
71
|
+
console.log('td-rf emit', r + '');
|
|
72
|
+
this.modelChange.emit(cloneDeep(r));
|
|
73
|
+
this.disableControl();
|
|
74
|
+
});
|
|
66
75
|
this.name.set('item');
|
|
76
|
+
// effect(()=>{
|
|
77
|
+
// })
|
|
67
78
|
}
|
|
68
79
|
ngOnInit() {
|
|
69
80
|
super.ngOnInit();
|
|
@@ -73,12 +84,6 @@ export class InputTD_RFComponent extends InputBasicComponent {
|
|
|
73
84
|
item: new FormControl(this.model, this.validators, this.asyncValidators),
|
|
74
85
|
}));
|
|
75
86
|
this.disableControl();
|
|
76
|
-
this.control()?.valueChanges.pipe(debounceTime(100)).subscribe((r) => {
|
|
77
|
-
// debugger;
|
|
78
|
-
console.log('td-rf emit', r + '');
|
|
79
|
-
this.modelChange.emit(cloneDeep(r));
|
|
80
|
-
this.disableControl();
|
|
81
|
-
});
|
|
82
87
|
// this.control?.statusChanges.subscribe((r) => {
|
|
83
88
|
// if (this.debug) debugger;
|
|
84
89
|
// });
|
|
@@ -113,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
113
118
|
type: Input,
|
|
114
119
|
args: ['disabled']
|
|
115
120
|
}] } });
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGQtcmYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L2lucHV0LXRkLXJmLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQW9CLFdBQVcsRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBVXRDLE1BQU0sT0FBTyxtQkFBbUMsU0FBUSxtQkFBc0M7SUFFNUYsSUFBeUIsV0FBVyxDQUFDLENBQWdCO1FBQ25ELElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJ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SSxDQUFDLElBQUksRUFBRSxJQUFJLE1BQU0sRUFBRTtZQUN6QixZQUFZO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRVEsZUFBZTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUIsQ0FBQzs4R0E1RVUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNlJBSG5CLGNBQWMsc0VDYjNCLCt2VUFtUUEsdTVCRHJQWSxrQkFBa0I7OzJGQUVqQixtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBR2YsSUFBSSxhQUNMLGNBQWMsV0FDaEIsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQzt3REFJeEIsV0FBVztzQkFBbkMsS0FBSzt1QkFBQyxZQUFZO2dCQVFXLGdCQUFnQjtzQkFBN0MsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBUUosTUFBTTtzQkFBekIsS0FBSzt1QkFBQyxPQUFPO2dCQVFKLFdBQVc7c0JBQXBCLE1BQU07Z0JBRXlCLFNBQVM7c0JBQXhDLEtBQUs7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1ZhbGlkYXRvckZuLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElucHV0QmFzaWNDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LWJhc2ljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dFByb3ZpZGVycywgSW5wdXRTaGFyZWRNb2R1bGVzIH0gZnJvbSAnLi9pbnB1dC1zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IERhdGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pbnB1dC10ZC1yZicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2lucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogSW5wdXRQcm92aWRlcnMsXG4gIGltcG9ydHM6IFtEYXRlSW5wdXRDb21wb25lbnQsIElucHV0U2hhcmVkTW9kdWxlc10sXG59KVxuZXhwb3J0IGNsYXNzIElucHV0VERfUkZDb21wb25lbnQ8VE9wdGlvbiA9IGFueT4gZXh0ZW5kcyBJbnB1dEJhc2ljQ29tcG9uZW50PGFueSwgYW55LCBUT3B0aW9uPiB7XG4gIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW107XG4gIEBJbnB1dCgndmFsaWRhdG9ycycpIHNldCBfdmFsaWRhdG9ycyh2OiBWYWxpZGF0b3JGbltdKSB7XG4gICAgdGhpcy5jb250cm9sKCk/LnJlbW92ZVZhbGlkYXRvcnModGhpcy52YWxpZGF0b3JzKTtcbiAgICB0aGlzLnZhbGlkYXRvcnMgPSB2O1xuICAgIHRoaXMuY29udHJvbCgpPy5zZXRWYWxpZGF0b3JzKHYpO1xuICAgIHRoaXMuY29udHJvbCgpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBhc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXTtcbiAgQElucHV0KCdhc3luY1ZhbGlkYXRvcnMnKSBzZXQgX2FzeW5jVmFsaWRhdG9ycyh2OiBBc3luY1ZhbGlkYXRvckZuW10pIHtcbiAgICB0aGlzLmNvbnRyb2woKT8ucmVtb3ZlVmFsaWRhdG9ycyh0aGlzLmFzeW5jVmFsaWRhdG9ycyk7XG4gICAgdGhpcy5hc3luY1ZhbGlkYXRvcnMgPSB2O1xuICAgIHRoaXMuY29udHJvbCgpPy5zZXRWYWxpZGF0b3JzKHYpO1xuICAgIHRoaXMuY29udHJvbCgpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBwcml2YXRlIG1vZGVsOiBhbnk7XG4gIEBJbnB1dCgnbW9kZWwnKSBzZXQgX21vZGVsKHY6IGFueSkge1xuICAgIGlmICh2ID09IHRoaXMubW9kZWwpIHJldHVybjtcbiAgICB0aGlzLm1vZGVsID0gdjtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLmNvbnRyb2woKT8uZW5hYmxlKCk7XG4gICAgdGhpcy5jb250cm9sKCk/LnBhdGNoVmFsdWUodik7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWRTaWduYWwoKSkgdGhpcy5jb250cm9sKCk/LmRpc2FibGUoKTtcbiAgfVxuICBAT3V0cHV0KCkgbW9kZWxDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCdkaXNhYmxlZCcpIG92ZXJyaWRlIHNldCBfZGlzYWJsZWQodjogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIGlmICh2KSB7XG4gICAgICBpZiAodGhpcy5jbGVhck9uRGlzYWJsZSgpKSB0aGlzLmNvbnRyb2woKT8ucmVzZXQoKTtcbiAgICAgIHRoaXMuY29udHJvbCgpPy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRyb2woKT8uZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY29udHJvbCgpPy5lbmFibGUoKTtcbiAgICB9XG4gIH1cbiAgLy8gQElucHV0KCd0eXBlJykgc2V0IF90eXBlKHY6IElucHV0VHlwZSkge1xuICAvLyAgIHN1cGVyLl90eXBlID0gdjtcbiAgLy8gICBpZiAodiA9PSAncGVyY2VudGFnZScpIHRoaXMub1R5cGUgPSAnbnVtYmVyJztcbiAgLy8gfVxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZS5zZXQoJ2l0ZW0nKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgdGhpcy5mb3JtLnNldChcbiAgICAgIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBpdGVtOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5tb2RlbCwgdGhpcy52YWxpZGF0b3JzLCB0aGlzLmFzeW5jVmFsaWRhdG9ycyksXG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZUNvbnRyb2woKTtcbiAgICB0aGlzLmNvbnRyb2woKT8udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBjb25zb2xlLmxvZygndGQtcmYgZW1pdCcsIHIgKyAnJyk7XG5cbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChjbG9uZURlZXAocikpO1xuICAgICAgdGhpcy5kaXNhYmxlQ29udHJvbCgpO1xuICAgIH0pO1xuICAgIC8vIHRoaXMuY29udHJvbD8uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAvLyAgIGlmICh0aGlzLmRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAvLyB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uYW1lKCkgIT0gJ2l0ZW0nKSB7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIHRoaXMubmFtZS5zZXQoJ2l0ZW0nKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gIH1cbn1cbiIsIjwhLS0gPGRpdj5mb3JtKCkuZ2V0UmF3VmFsdWU6IHt7ZmZ9fTwvZGl2PiAtLT5cbkBpZih2ZXJib3NlKCkpezxkaXY+ZGlzYWJsZWRTaWduYWw6IHt7ZGlzYWJsZWRTaWduYWwoKX19PC9kaXY+XG48ZGl2PnZhbGlkU2lnbmFsOiB7e3ZhbGlkU2lnbmFsKCl9fTwvZGl2PlxuPGRpdj5pbnZhbGlkU2lnbmFsOiB7e2ludmFsaWRTaWduYWwoKX19PC9kaXY+XG48ZGl2PnZhbHVlU2lnbmFsOiB7e3ZhbHVlU2lnbmFsKCl9fTwvZGl2PlxuPGRpdj5oYXNWYWx1ZToge3toYXNWYWx1ZSgpfX08L2Rpdj5cbjxkaXY+ZGlydHlTaWduYWw6IHt7ZGlydHlTaWduYWwoKX19PC9kaXY+XG48ZGl2PnRvdWNoZWRTaWduYWw6IHt7dG91Y2hlZFNpZ25hbCgpfX08L2Rpdj5cbjxkaXY+ZXJyb3JzU2lnbmFsOiB7e2Vycm9yc1NpZ25hbGpzb24oKX19PC9kaXY+XG48ZGl2PnBlbmRpbmdTaWduYWw6IHt7cGVuZGluZ1NpZ25hbCgpfX08L2Rpdj5cbjxkaXY+cHJpc3RpbmVTaWduYWw6IHt7cHJpc3RpbmVTaWduYWwoKX19PC9kaXY+XG48ZGl2PmNvbnRyb2xSZXF1aXJlZFNpZ25hbDoge3tjb250cm9sUmVxdWlyZWRTaWduYWwoKX19PC9kaXY+XG48ZGl2PmlzUmVxdWlyZWRTaWduYWw6IHt7aXNSZXF1aXJlZFNpZ25hbCgpfX08L2Rpdj59XG48ZGl2IGNsYXNzPVwiICBjdXN0b20taW5wdXQgYWxpZ24taXRlbXMtY2VudGVyIHt7IHR5cGVTaWduYWwoKSB9fSBneC0xXCIgW2Zvcm1Hcm91cF09XCJmb3JtKCl8dG9BbnlcIiBbbmdDbGFzc109XCJ7ICdkLWZsZXgnOiAhc3RhY2tlZFNpZ25hbCgpIH1cIj5cbiAgQGlmIChjb21wdXRlZFNob3dMYWJlbCgpKSB7XG4gICAgPGFwcC1pbnB1dC1sYWJlbFxuICAgICAgW2NvbG9yZWRdPVwiY29sb3JlZFNpZ25hbCgpXCJcbiAgICAgIFtmb3JtXT1cImZvcm0oKVwiXG4gICAgICBbaGludF09XCJoaW50XCJcbiAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgIFtpbnZhbGlkQ2hlY2tib3hdPVwiaW52YWxpZENoZWNrYm94U2lnbmFsKClcIlxuICAgICAgW2lzUmVxdWlyZWRdPVwiaXNSZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCJcbiAgICAgIFtsYmxDbF09XCJsYmxDbFwiXG4gICAgICBbbGlnaHRdPVwibGlnaHRcIlxuICAgICAgW21pbmldPVwibWluaVNpZ25hbCgpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3ctMTAwJzogc3RhY2tlZFNpZ25hbCgpIH1cIlxuICAgICAgW2lubGluZUhpbnRdPVwiaW5saW5lSGludFwiXG4gICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNob3dSZXF1aXJlZFRhZ1NpZ25hbCgpXCJcbiAgICAgIFtzaG93TGFiZWxdPVwic2hvd0xhYmVsU2lnbmFsKClcIlxuICAgICAgW3NtYWxsXT1cInNtYWxsU2lnbmFsKClcIlxuICAgICAgW3N0YWNrZWRdPVwic3RhY2tlZFNpZ25hbCgpXCJcbiAgICAgIFt0aGVtZV09XCJ0aGVtZVwiXG4gICAgICBbeHNtYWxsXT1cInhzbWFsbFwiPjwvYXBwLWlucHV0LWxhYmVsPlxuICB9XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHt7IGlucHV0Q29udENsYXNzU2lnbmFsKCkgfX0gXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggaW5wdXQtY29udGVudCB3LTEwMFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdtcy0yJzogIXN0YWNrZWRTaWduYWwoKSxcbiAgICAgICAgc2hvd1ZhbGlkYXRpb25JY29uOiBzaG93VmFsaWRhdGlvblNpZ25hbCgpIHx8IHNob3dWYWxpZGF0aW9uSWNvblNpZ25hbCgpLFxuICAgICAgICBkb250Rm9ybWF0QXNJbnB1dDogZG9udEZvcm1hdEFzSW5wdXRTaWduYWwoKVxuICAgICAgfVwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNkYXRlPiBcbiAgICAgICAgPGRhdGUtaW5wdXRcbiAgICAgICAgICAjZGF0ZUlucHV0XG4gICAgICAgICAgW2RlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVNpZ25hbCgpXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2VkKT1cImRhdGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCJcbiAgICAgICAgICBbaW5wdXRDbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICBbdmFsaWRdPVwidmFsaWRTaWduYWwoKVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwiaW52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2hvd1ZhbGlkYXRpb25TaWduYWwoKVwiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgQHN3aXRjaCAodHlwZVNpZ25hbCgpKSB7XG4gICAgICAgIDwhLS0gREFURSAtLT5cbiAgICAgICAgQGNhc2UgKCdkYXRlJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIERBVEVUSU1FLUxPQ0FMIC0tPlxuICAgICAgICBAY2FzZSAoJ2RhdGV0aW1lLWxvY2FsJykge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIENIRUNLQk9YIC0tPlxuICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZGVidWddPVwiZGVidWcoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnY2hlY2tlZGJveCcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGlucENsU2lnbmFsKCkgfX0gZC1pbmxpbmUtYmxvY2sgZm9ybS1jb250cm9sIHdpZHRoLXVuc2V0XCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWRlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBGSUxFIC0tPlxuICAgICAgICBAY2FzZSAoJ2ZpbGUnKSB7XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgW2lkXT1cImlkU2lnbmFsKClcIiBbY2xhc3NdPVwiaW5wdXRDbGFzc1NpZ25hbCgpXCIgKGNoYW5nZSk9XCJ1cGxvYWQoJGV2ZW50KVwiIFthY2NlcHRdPVwiYWNjZXB0XCIgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gRklMRSBCVVRUT04tLT5cbiAgICAgICAgQGNhc2UgKCdmaWxlQnV0dG9uJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthY2NlcHRdPVwiYWNjZXB0XCJcbiAgICAgICAgICAgIFthdHRyLm11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIGhpZGRlblxuICAgICAgICAgICAgI2ZpbGUgLz5cbiAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgICAgICAobWNsaWNrKT1cImZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICBpY29uPVwidXBsb2FkXCJcbiAgICAgICAgICAgIFt0eXBlXT1cImZpbGVzID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgdGV4dD1cInt7IHBsYWNlaG9sZGVyKCkgfHwgbGFiZWxTaWduYWwoKSB8fCAnVXBsb2FkJyB9fVwiPjwvYXBwLWJ0bj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFNFTEVDVCAtLT5cbiAgICAgICAgQGNhc2UgKCdzZWxlY3QnKSB7XG4gICAgICAgICAgPCEtLSBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiIC0tPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAjbWF0U2VsZWN0VGFnXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgbmFtZVN0clNpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwie3sgY2xzKCkgfX0ge3sgaW5wdXRDbGFzc1NpZ25hbCgpIH19XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlKHsgdGFyZ2V0OiAkZXZlbnQgfSlcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0VtcHR5T3B0aW9uU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gc2VsZWN0ZWQgW3ZhbHVlXT1cIm51bGxcIiBjbGFzcz1cImVtcHR5LW9wdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IHBsYWNlaG9sZGVyKCkgfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBvcHRpb25zKCk7IHRyYWNrIGlTLnRyYWNrQnlWYWx1ZSgkaW5kZXgsIGl0ZW0pKSB7XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvblwiIFttYXRUb29sdGlwXT1cIml0ZW0ubGFiZWxcIiBbbWF0VG9vbHRpcFNob3dEZWxheV09XCIxMDAwXCIgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJlbGUuc2Nyb2xsV2lkdGggPD0gZWxlLm9mZnNldFdpZHRoXCIgI2VsZT5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBhcHBUcmFuc2xhdGU6IHRyYW5zbGF0ZU9wdGlvbnMoKSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBURVhUQVJFQSAtLT5cbiAgICAgICAgQGNhc2UgKCd0ZXh0YXJlYScpIHtcbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3Jvd3NdPVwidGV4dGFyZWFSb3dzU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBSYWRpbyAtLT5cbiAgICAgICAgQGNhc2UgKCdyYWRpbycpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFZpZXdlciAtLT5cbiAgICAgICAgQGNhc2UgKCd2aWV3ZXInKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVTaWduYWwoKVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBQQVNTV09SRCAtLT5cbiAgICAgICAgQGNhc2UgKCdwYXNzd29yZCcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ7eyBzaG93UGFzc3dvcmRTaWduYWwoKSA/ICd0ZXh0JyA6ICdwYXNzd29yZCcgfX1cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlcigpIH19XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtbm9mb3JtYXRdPVwiY29tcHV0ZWROb0Zvcm1hdCgpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgW21heF09XCJtYXhTaWduYWwoKVwiXG4gICAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2lnbmFsKClcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXNzd29yZC1pY29ucyBwb2ludGVyXCIgKGNsaWNrKT1cInNob3dQYXNzd29yZFNpZ25hbC5zZXQoIXNob3dQYXNzd29yZFNpZ25hbCgpKVwiPlxuICAgICAgICAgICAgQGlmIChzaG93UGFzc3dvcmRTaWduYWwoKSkge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZS1zbGFzaFwiPjwvaT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIERFRkFVTFQgLS0+XG4gICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICA8ZGl2IFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIiBbbmdDbGFzc109XCJ7ICdoYXMtcHJlZml4JzogISFwcmVmaXhTaWduYWwoKSwgZGlzYWJsZWQ6IHJlYWRvbmx5U2lnbmFsKCkgfHwgZGlzYWJsZWRTaWduYWwoKSB9XCI+XG4gICAgICAgICAgICBAaWYgKHByZWZpeFNpZ25hbCgpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmVmaXgtdmFsXCIgI3ByZWZpeFZhbD5cbiAgICAgICAgICAgICAgICB7eyBwcmVmaXhTaWduYWwoKSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZWxlLmlubmVyVGV4dFwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPVwiZWxlLnNjcm9sbFdpZHRoIDw9IGVsZS5vZmZzZXRXaWR0aFwiXG4gICAgICAgICAgICAgICNlbGVcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1kZWJ1Z109XCJkZWJ1ZygpXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLW90eXBlXT1cIm9UeXBlU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgIFttYXhdPVwibWF4U2lnbmFsKClcIlxuICAgICAgICAgICAgICBbbWluXT1cIm1pblNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgKGRpcnR5U2lnbmFsKCkgJiYgKHNob3dWYWxpZGF0aW9uU2lnbmFsKCkgfHwgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsKCkpKSB7XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyB2YWxpZDogdmFsaWRTaWduYWwoKSB9XCIgY2xhc3M9XCJ2YWxpZGl0eS1pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVja1wiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBwZW5kaW5nOiBwZW5kaW5nU2lnbmFsKCkgfVwiIGNsYXNzPVwidmFsaWRpdHktaWNvblwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1zcGluXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IGludmFsaWQ6IGludmFsaWRTaWduYWwoKSB9XCIgY2xhc3M9XCJ2YWxpZGl0eS1pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8IS0tIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImlucHV0XCIgYXBwZWFyYW5jZT1cImZpbGxcIj5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJ7e2lucC50eXBlfX1cIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiaW5wLmZvcm1Db250cm9sXCI+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgaW5wLnZtc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YWxpZGF0aW9ufHZhbGlkYXRvcjppbnAuZm9ybUNvbnRyb2w6aW5wLmZvcm1Db250cm9sPy52YWx1ZVwiPlxuICAgICAgICAgICAge3t2YWxpZGF0aW9uLm1lc3NhZ2V8dmFsaWRhdGlvbk1zZzppbnAucHJlZml4OmlucC5zdWZmaXh9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+IC0tPlxuICAgIDwvZGl2PlxuICAgIEBpZiAoZW5kTGFiZWxTaWduYWwoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIHRleHQtcHJpbWFyeSBtcy0yXCIgKGNsaWNrKT1cImlTLmxvZyhmb3JtKCkpXCIgW21hdFRvb2x0aXBdPVwiZW5kTGFiZWxUb29sdGlwU2lnbmFsKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luY1wiPlxuICAgICAgICB7eyBlbmRMYWJlbFNpZ25hbCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbkBpZiAoc2hvd1ZhbGlkYXRpb25Nc2dTaWduYWwoKSkge1xuICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbbGFiZWxdPVwibGFiZWxTaWduYWwoKVwiIFttaW5MZW5ndGhdPVwibWluTGVuZ3RoXCIgW21heExlbmd0aF09XCJtYXhMZW5ndGhcIiBbY29udHJvbF09XCJjb250cm9sKClcIiAvPlxufVxuIl19
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGQtcmYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L2lucHV0LXRkLXJmLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQW9CLFdBQVcsRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVUxRCxNQUFNLE9BQU8sbUJBQW1DLFNBQVEsbUJBQXNDO0lBRTVGLElBQXlCLFdBQVcsQ0FBQyxDQUFnQjtRQUNuRCxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEVB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QUFpRDtRQUNqRCw4QkFBOEI7UUFDOUIsTUFBTTtJQUNSLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksTUFBTSxFQUFFO1lBQ3pCLFlBQVk7WUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFUSxlQUFlO1FBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDOzhHQWxGVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw2UkFIbkIsY0FBYyxzRUNkM0IsK3ZVQW1RQSx1NUJEcFBZLGtCQUFrQjs7MkZBRWpCLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FHZixJQUFJLGFBQ0wsY0FBYyxXQUNoQixDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDO3dEQUl4QixXQUFXO3NCQUFuQyxLQUFLO3VCQUFDLFlBQVk7Z0JBUVcsZ0JBQWdCO3NCQUE3QyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFRSixNQUFNO3NCQUF6QixLQUFLO3VCQUFDLE9BQU87Z0JBUUosV0FBVztzQkFBcEIsTUFBTTtnQkFFeUIsU0FBUztzQkFBeEMsS0FBSzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXN5bmNWYWxpZGF0b3JGbiwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRQcm92aWRlcnMsIElucHV0U2hhcmVkTW9kdWxlcyB9IGZyb20gJy4vaW5wdXQtc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBEYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW5wdXQtdGQtcmYnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IElucHV0UHJvdmlkZXJzLFxuICBpbXBvcnRzOiBbRGF0ZUlucHV0Q29tcG9uZW50LCBJbnB1dFNoYXJlZE1vZHVsZXNdLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dFREX1JGQ29tcG9uZW50PFRPcHRpb24gPSBhbnk+IGV4dGVuZHMgSW5wdXRCYXNpY0NvbXBvbmVudDxhbnksIGFueSwgVE9wdGlvbj4ge1xuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuICBASW5wdXQoJ3ZhbGlkYXRvcnMnKSBzZXQgX3ZhbGlkYXRvcnModjogVmFsaWRhdG9yRm5bXSkge1xuICAgIHRoaXMuY29udHJvbCgpPy5yZW1vdmVWYWxpZGF0b3JzKHRoaXMudmFsaWRhdG9ycyk7XG4gICAgdGhpcy52YWxpZGF0b3JzID0gdjtcbiAgICB0aGlzLmNvbnRyb2woKT8uc2V0VmFsaWRhdG9ycyh2KTtcbiAgICB0aGlzLmNvbnRyb2woKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgYXN5bmNWYWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW107XG4gIEBJbnB1dCgnYXN5bmNWYWxpZGF0b3JzJykgc2V0IF9hc3luY1ZhbGlkYXRvcnModjogQXN5bmNWYWxpZGF0b3JGbltdKSB7XG4gICAgdGhpcy5jb250cm9sKCk/LnJlbW92ZVZhbGlkYXRvcnModGhpcy5hc3luY1ZhbGlkYXRvcnMpO1xuICAgIHRoaXMuYXN5bmNWYWxpZGF0b3JzID0gdjtcbiAgICB0aGlzLmNvbnRyb2woKT8uc2V0VmFsaWRhdG9ycyh2KTtcbiAgICB0aGlzLmNvbnRyb2woKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RlbDogYW55O1xuICBASW5wdXQoJ21vZGVsJykgc2V0IF9tb2RlbCh2OiBhbnkpIHtcbiAgICBpZiAodiA9PSB0aGlzLm1vZGVsKSByZXR1cm47XG4gICAgdGhpcy5tb2RlbCA9IHY7XG4gICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgdGhpcy5jb250cm9sKCk/LmVuYWJsZSgpO1xuICAgIHRoaXMuY29udHJvbCgpPy5wYXRjaFZhbHVlKHYpO1xuICAgIGlmICh0aGlzLmRpc2FibGVkU2lnbmFsKCkpIHRoaXMuY29udHJvbCgpPy5kaXNhYmxlKCk7XG4gIH1cbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgnZGlzYWJsZWQnKSBvdmVycmlkZSBzZXQgX2Rpc2FibGVkKHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBpZiAodikge1xuICAgICAgaWYgKHRoaXMuY2xlYXJPbkRpc2FibGUoKSkgdGhpcy5jb250cm9sKCk/LnJlc2V0KCk7XG4gICAgICB0aGlzLmNvbnRyb2woKT8uZGlzYWJsZSgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sKCk/LmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNvbnRyb2woKT8uZW5hYmxlKCk7XG4gICAgfVxuICB9XG4gIC8vIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBJbnB1dFR5cGUpIHtcbiAgLy8gICBzdXBlci5fdHlwZSA9IHY7XG4gIC8vICAgaWYgKHYgPT0gJ3BlcmNlbnRhZ2UnKSB0aGlzLm9UeXBlID0gJ251bWJlcic7XG4gIC8vIH1cblxuICBwcm90ZWN0ZWQgdmFsdWVDaGFuZ2VzID0gdG9PYnNlcnZhYmxlKHRoaXMudmFsdWVTaWduYWwpXG4gICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgLy8gZGVidWdnZXI7XG4gICAgICBjb25zb2xlLmxvZygndGQtcmYgZW1pdCcsIHIgKyAnJyk7XG5cbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdChjbG9uZURlZXAocikpO1xuICAgICAgdGhpcy5kaXNhYmxlQ29udHJvbCgpO1xuICAgIH0pO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZS5zZXQoJ2l0ZW0nKTtcbiAgICAvLyBlZmZlY3QoKCk9PntcblxuICAgIC8vIH0pXG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIHRoaXMuZm9ybS5zZXQoXG4gICAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgaXRlbTogbmV3IEZvcm1Db250cm9sKHRoaXMubW9kZWwsIHRoaXMudmFsaWRhdG9ycywgdGhpcy5hc3luY1ZhbGlkYXRvcnMpLFxuICAgICAgfSksXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVDb250cm9sKCk7XG4gICAgLy8gdGhpcy5jb250cm9sPy5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgocikgPT4ge1xuICAgIC8vICAgaWYgKHRoaXMuZGVidWcpIGRlYnVnZ2VyO1xuICAgIC8vIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hbWUoKSAhPSAnaXRlbScpIHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5uYW1lLnNldCgnaXRlbScpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgfVxufVxuIiwiPCEtLSA8ZGl2PmZvcm0oKS5nZXRSYXdWYWx1ZToge3tmZn19PC9kaXY+IC0tPlxuQGlmKHZlcmJvc2UoKSl7PGRpdj5kaXNhYmxlZFNpZ25hbDoge3tkaXNhYmxlZFNpZ25hbCgpfX08L2Rpdj5cbjxkaXY+dmFsaWRTaWduYWw6IHt7dmFsaWRTaWduYWwoKX19PC9kaXY+XG48ZGl2PmludmFsaWRTaWduYWw6IHt7aW52YWxpZFNpZ25hbCgpfX08L2Rpdj5cbjxkaXY+dmFsdWVTaWduYWw6IHt7dmFsdWVTaWduYWwoKX19PC9kaXY+XG48ZGl2Pmhhc1ZhbHVlOiB7e2hhc1ZhbHVlKCl9fTwvZGl2PlxuPGRpdj5kaXJ0eVNpZ25hbDoge3tkaXJ0eVNpZ25hbCgpfX08L2Rpdj5cbjxkaXY+dG91Y2hlZFNpZ25hbDoge3t0b3VjaGVkU2lnbmFsKCl9fTwvZGl2PlxuPGRpdj5lcnJvcnNTaWduYWw6IHt7ZXJyb3JzU2lnbmFsanNvbigpfX08L2Rpdj5cbjxkaXY+cGVuZGluZ1NpZ25hbDoge3twZW5kaW5nU2lnbmFsKCl9fTwvZGl2PlxuPGRpdj5wcmlzdGluZVNpZ25hbDoge3twcmlzdGluZVNpZ25hbCgpfX08L2Rpdj5cbjxkaXY+Y29udHJvbFJlcXVpcmVkU2lnbmFsOiB7e2NvbnRyb2xSZXF1aXJlZFNpZ25hbCgpfX08L2Rpdj5cbjxkaXY+aXNSZXF1aXJlZFNpZ25hbDoge3tpc1JlcXVpcmVkU2lnbmFsKCl9fTwvZGl2Pn1cbjxkaXYgY2xhc3M9XCIgIGN1c3RvbS1pbnB1dCBhbGlnbi1pdGVtcy1jZW50ZXIge3sgdHlwZVNpZ25hbCgpIH19IGd4LTFcIiBbZm9ybUdyb3VwXT1cImZvcm0oKXx0b0FueVwiIFtuZ0NsYXNzXT1cInsgJ2QtZmxleCc6ICFzdGFja2VkU2lnbmFsKCkgfVwiPlxuICBAaWYgKGNvbXB1dGVkU2hvd0xhYmVsKCkpIHtcbiAgICA8YXBwLWlucHV0LWxhYmVsXG4gICAgICBbY29sb3JlZF09XCJjb2xvcmVkU2lnbmFsKClcIlxuICAgICAgW2Zvcm1dPVwiZm9ybSgpXCJcbiAgICAgIFtoaW50XT1cImhpbnRcIlxuICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgW2ludmFsaWRDaGVja2JveF09XCJpbnZhbGlkQ2hlY2tib3hTaWduYWwoKVwiXG4gICAgICBbaXNSZXF1aXJlZF09XCJpc1JlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgW2xhYmVsXT1cImxhYmVsU2lnbmFsKClcIlxuICAgICAgW2xibENsXT1cImxibENsXCJcbiAgICAgIFtsaWdodF09XCJsaWdodFwiXG4gICAgICBbbWluaV09XCJtaW5pU2lnbmFsKClcIlxuICAgICAgW25nQ2xhc3NdPVwieyAndy0xMDAnOiBzdGFja2VkU2lnbmFsKCkgfVwiXG4gICAgICBbaW5saW5lSGludF09XCJpbmxpbmVIaW50XCJcbiAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2hvd1JlcXVpcmVkVGFnU2lnbmFsKClcIlxuICAgICAgW3Nob3dMYWJlbF09XCJzaG93TGFiZWxTaWduYWwoKVwiXG4gICAgICBbc21hbGxdPVwic21hbGxTaWduYWwoKVwiXG4gICAgICBbc3RhY2tlZF09XCJzdGFja2VkU2lnbmFsKClcIlxuICAgICAgW3RoZW1lXT1cInRoZW1lXCJcbiAgICAgIFt4c21hbGxdPVwieHNtYWxsXCI+PC9hcHAtaW5wdXQtbGFiZWw+XG4gIH1cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIge3sgaW5wdXRDb250Q2xhc3NTaWduYWwoKSB9fSBcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBpbnB1dC1jb250ZW50IHctMTAwXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ21zLTInOiAhc3RhY2tlZFNpZ25hbCgpLFxuICAgICAgICBzaG93VmFsaWRhdGlvbkljb246IHNob3dWYWxpZGF0aW9uU2lnbmFsKCkgfHwgc2hvd1ZhbGlkYXRpb25JY29uU2lnbmFsKCksXG4gICAgICAgIGRvbnRGb3JtYXRBc0lucHV0OiBkb250Rm9ybWF0QXNJbnB1dFNpZ25hbCgpXG4gICAgICB9XCI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RhdGU+IFxuICAgICAgICA8ZGF0ZS1pbnB1dFxuICAgICAgICAgICNkYXRlSW5wdXRcbiAgICAgICAgICBbZGVidWddPVwiZGVidWcoKVwiXG4gICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICBjbGFzcz1cInctMTAwXCJcbiAgICAgICAgICBbdHlwZV09XCJ0eXBlU2lnbmFsKClcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwiZGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2lnbmFsKClcIlxuICAgICAgICAgIFtpbnB1dENsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkU2lnbmFsKClcIlxuICAgICAgICAgIFttYXhdPVwibWF4U2lnbmFsKClcIlxuICAgICAgICAgIFttaW5dPVwibWluU2lnbmFsKClcIlxuICAgICAgICAgIFt2YWxpZF09XCJ2YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICBbaW52YWxpZF09XCJpbnZhbGlkU2lnbmFsKClcIlxuICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzaG93VmFsaWRhdGlvblNpZ25hbCgpXCIgLz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICBAc3dpdGNoICh0eXBlU2lnbmFsKCkpIHtcbiAgICAgICAgPCEtLSBEQVRFIC0tPlxuICAgICAgICBAY2FzZSAoJ2RhdGUnKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gREFURVRJTUUtTE9DQUwgLS0+XG4gICAgICAgIEBjYXNlICgnZGF0ZXRpbWUtbG9jYWwnKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGVcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gQ0hFQ0tCT1ggLS0+XG4gICAgICAgIEBjYXNlICgnY2hlY2tib3gnKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1kZWJ1Z109XCJkZWJ1ZygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwie3sgaW5wQ2xTaWduYWwoKSB9fSBkLWlubGluZS1ibG9jayBmb3JtLWNvbnRyb2wgd2lkdGgtdW5zZXRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlcigpIH19XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFthdHRyLmluZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdjaGVja2VkYm94Jykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNsYXNzPVwie3sgaW5wQ2xTaWduYWwoKSB9fSBkLWlubGluZS1ibG9jayBmb3JtLWNvbnRyb2wgd2lkdGgtdW5zZXRcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZGVidWddPVwiZGVidWcoKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLW5vZm9ybWF0XT1cImNvbXB1dGVkTm9Gb3JtYXQoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIEZJTEUgLS0+XG4gICAgICAgIEBjYXNlICgnZmlsZScpIHtcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBbaWRdPVwiaWRTaWduYWwoKVwiIFtjbGFzc109XCJpbnB1dENsYXNzU2lnbmFsKClcIiAoY2hhbmdlKT1cInVwbG9hZCgkZXZlbnQpXCIgW2FjY2VwdF09XCJhY2NlcHRcIiBbYXR0ci5tdWx0aXBsZV09XCJtdWx0aXBsZVwiIC8+XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBGSUxFIEJVVFRPTi0tPlxuICAgICAgICBAY2FzZSAoJ2ZpbGVCdXR0b24nKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1NpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkKCRldmVudClcIlxuICAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgICAjZmlsZSAvPlxuICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICBjbGFzcz1cInctMTAwXCJcbiAgICAgICAgICAgIChtY2xpY2spPVwiZmlsZS5jbGljaygpXCJcbiAgICAgICAgICAgIGljb249XCJ1cGxvYWRcIlxuICAgICAgICAgICAgW3R5cGVdPVwiZmlsZXMgPyAncHJpbWFyeScgOiAnc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICB0ZXh0PVwie3sgcGxhY2Vob2xkZXIoKSB8fCBsYWJlbFNpZ25hbCgpIHx8ICdVcGxvYWQnIH19XCI+PC9hcHAtYnRuPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gU0VMRUNUIC0tPlxuICAgICAgICBAY2FzZSAoJ3NlbGVjdCcpIHtcbiAgICAgICAgICA8IS0tIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCIgLS0+XG4gICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICNtYXRTZWxlY3RUYWdcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBuYW1lU3RyU2lnbmFsKCkgfX1cIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ7eyBjbHMoKSB9fSB7eyBpbnB1dENsYXNzU2lnbmFsKCkgfX1cIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkU2lnbmFsKClcIlxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2UoeyB0YXJnZXQ6ICRldmVudCB9KVwiPlxuICAgICAgICAgICAgQGlmIChzaG93RW1wdHlPcHRpb25TaWduYWwoKSkge1xuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBzZWxlY3RlZCBbdmFsdWVdPVwibnVsbFwiIGNsYXNzPVwiZW1wdHktb3B0aW9uXCI+XG4gICAgICAgICAgICAgICAge3sgcGxhY2Vob2xkZXIoKSB9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZm9yIChpdGVtIG9mIG9wdGlvbnMoKTsgdHJhY2sgaVMudHJhY2tCeVZhbHVlKCRpbmRleCwgaXRlbSkpIHtcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0udmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uXCIgW21hdFRvb2x0aXBdPVwiaXRlbS5sYWJlbFwiIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIjEwMDBcIiBbbWF0VG9vbHRpcERpc2FibGVkXT1cImVsZS5zY3JvbGxXaWR0aCA8PSBlbGUub2Zmc2V0V2lkdGhcIiAjZWxlPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZTogdHJhbnNsYXRlT3B0aW9ucygpIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFRFWFRBUkVBIC0tPlxuICAgICAgICBAY2FzZSAoJ3RleHRhcmVhJykge1xuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lU3RyU2lnbmFsKClcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLW5vZm9ybWF0XT1cImNvbXB1dGVkTm9Gb3JtYXQoKVwiXG4gICAgICAgICAgICBbcm93c109XCJ0ZXh0YXJlYVJvd3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFJhZGlvIC0tPlxuICAgICAgICBAY2FzZSAoJ3JhZGlvJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVNpZ25hbCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU2lnbmFsKClcIiAvPlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gVmlld2VyIC0tPlxuICAgICAgICBAY2FzZSAoJ3ZpZXdlcicpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtpZF09XCJpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIoKSB9fVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLW5vZm9ybWF0XT1cImNvbXB1dGVkTm9Gb3JtYXQoKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiaW5wdXRDbGFzc1NpZ25hbCgpXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVNpZ25hbCgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFBBU1NXT1JEIC0tPlxuICAgICAgICBAY2FzZSAoJ3Bhc3N3b3JkJykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInt7IHNob3dQYXNzd29yZFNpZ25hbCgpID8gJ3RleHQnIDogJ3Bhc3N3b3JkJyB9fVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVTdHJTaWduYWwoKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyKCkgfX1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1ub2Zvcm1hdF09XCJjb21wdXRlZE5vRm9ybWF0KClcIlxuICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRTaWduYWwoKVwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFNpZ25hbCgpXCJcbiAgICAgICAgICAgIFttaW5dPVwibWluU2lnbmFsKClcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5U2lnbmFsKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVTaWduYWwoKVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhc3N3b3JkLWljb25zIHBvaW50ZXJcIiAoY2xpY2spPVwic2hvd1Bhc3N3b3JkU2lnbmFsLnNldCghc2hvd1Bhc3N3b3JkU2lnbmFsKCkpXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dQYXNzd29yZFNpZ25hbCgpKSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllLXNsYXNoXCI+PC9pPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXllXCI+PC9pPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gREVGQVVMVCAtLT5cbiAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgIDxkaXYgW2NsYXNzXT1cImlucHV0Q2xhc3NTaWduYWwoKVwiIFtuZ0NsYXNzXT1cInsgJ2hhcy1wcmVmaXgnOiAhIXByZWZpeFNpZ25hbCgpLCBkaXNhYmxlZDogcmVhZG9ubHlTaWduYWwoKSB8fCBkaXNhYmxlZFNpZ25hbCgpIH1cIj5cbiAgICAgICAgICAgIEBpZiAocHJlZml4U2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZWZpeC12YWxcIiAjcHJlZml4VmFsPlxuICAgICAgICAgICAgICAgIHt7IHByZWZpeFNpZ25hbCgpIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVTaWduYWwoKVwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVN0clNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlcigpIH19XCJcbiAgICAgICAgICAgICAgW2lkXT1cImlkU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJlbGUuaW5uZXJUZXh0XCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09XCJlbGUuc2Nyb2xsV2lkdGggPD0gZWxlLm9mZnNldFdpZHRoXCJcbiAgICAgICAgICAgICAgI2VsZVxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWRlYnVnXT1cImRlYnVnKClcIlxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLW5vZm9ybWF0XT1cImNvbXB1dGVkTm9Gb3JtYXQoKVwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtb3R5cGVdPVwib1R5cGVTaWduYWwoKVwiXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgW21heF09XCJtYXhTaWduYWwoKVwiXG4gICAgICAgICAgICAgIFttaW5dPVwibWluU2lnbmFsKClcIlxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlTaWduYWwoKVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAoZGlydHlTaWduYWwoKSAmJiAoc2hvd1ZhbGlkYXRpb25TaWduYWwoKSB8fCBzaG93VmFsaWRhdGlvbkljb25TaWduYWwoKSkpIHtcbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IHZhbGlkOiB2YWxpZFNpZ25hbCgpIH1cIiBjbGFzcz1cInZhbGlkaXR5LWljb25cIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IHBlbmRpbmc6IHBlbmRpbmdTaWduYWwoKSB9XCIgY2xhc3M9XCJ2YWxpZGl0eS1pY29uXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgaW52YWxpZDogaW52YWxpZFNpZ25hbCgpIH1cIiBjbGFzcz1cInZhbGlkaXR5LWljb25cIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDwhLS0gPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXRcIiBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInt7aW5wLnR5cGV9fVwiIG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJpbnAuZm9ybUNvbnRyb2xcIj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBpbnAudm1zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbGlkYXRpb258dmFsaWRhdG9yOmlucC5mb3JtQ29udHJvbDppbnAuZm9ybUNvbnRyb2w/LnZhbHVlXCI+XG4gICAgICAgICAgICB7e3ZhbGlkYXRpb24ubWVzc2FnZXx2YWxpZGF0aW9uTXNnOmlucC5wcmVmaXg6aW5wLnN1ZmZpeH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD4gLS0+XG4gICAgPC9kaXY+XG4gICAgQGlmIChlbmRMYWJlbFNpZ25hbCgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gdGV4dC1wcmltYXJ5IG1zLTJcIiAoY2xpY2spPVwiaVMubG9nKGZvcm0oKSlcIiBbbWF0VG9vbHRpcF09XCJlbmRMYWJlbFRvb2x0aXBTaWduYWwoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jXCI+XG4gICAgICAgIHt7IGVuZExhYmVsU2lnbmFsKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuQGlmIChzaG93VmFsaWRhdGlvbk1zZ1NpZ25hbCgpKSB7XG4gIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtsYWJlbF09XCJsYWJlbFNpZ25hbCgpXCIgW21pbkxlbmd0aF09XCJtaW5MZW5ndGhcIiBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiIFtjb250cm9sXT1cImNvbnRyb2woKVwiIC8+XG59XG4iXX0=
|