mmhglobal-dynamicform 2.5.1 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/esm2020/lib/components/buttonfieldbase.component.mjs +7 -5
- package/esm2020/lib/components/containerfieldbase.component.mjs +7 -5
- package/esm2020/lib/components/datalistingfieldbase.component.mjs +13 -9
- package/esm2020/lib/components/fieldbase.component.mjs +11 -9
- package/esm2020/lib/components/inputfieldbase.component.mjs +10 -5
- package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +8 -4
- package/esm2020/lib/input-error-message/input-error-message.component.mjs +8 -3
- package/esm2020/lib/kcard/kcard.component.mjs +20 -16
- package/esm2020/lib/services/main.service.mjs +6 -6
- package/esm2020/lib/services/zcomponent.service.mjs +20 -22
- package/esm2020/lib/sfquerybuilder/sfquerybuilder.component.mjs +64 -17
- package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +12 -8
- package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +3 -6
- package/esm2020/lib/uibulletin/uibulletin.component.mjs +1 -1
- package/esm2020/lib/uicontainer/uicontainer.component.mjs +1 -1
- package/esm2020/lib/uicontent/uicontent.component.mjs +1 -5
- package/esm2020/lib/uiheader/uiheader.component.mjs +8 -12
- package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +3 -2
- package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +5 -4
- package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +5 -4
- package/esm2020/lib/zbullet/zbullet.component.mjs +6 -4
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +14 -10
- package/esm2020/lib/zcard/zcard.component.mjs +9 -6
- package/esm2020/lib/zchart/zchart.component.mjs +10 -6
- package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +14 -4
- package/esm2020/lib/zchip/zchip.component.mjs +16 -8
- package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +3 -4
- package/esm2020/lib/zdaterange/zdaterange.component.mjs +3 -1
- package/esm2020/lib/zdatetime/dateParser.pipe.mjs +4 -4
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +7 -4
- package/esm2020/lib/zdiv/zdiv.component.mjs +19 -11
- package/esm2020/lib/zform/zform.component.mjs +4 -4
- package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +4 -4
- package/esm2020/lib/zgauge/zgauge.component.mjs +9 -5
- package/esm2020/lib/zgrid/container/zgrid-container.component.mjs +14 -6
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +39 -32
- package/esm2020/lib/zgrid/zgrid.component.mjs +16 -6
- package/esm2020/lib/zimg/zimg.component.mjs +10 -6
- package/esm2020/lib/zinput-container/zinput-container.component.mjs +14 -8
- package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +4 -4
- package/esm2020/lib/zlabel/zlabel.component.mjs +11 -5
- package/esm2020/lib/zmfb/zmfb.component.mjs +10 -6
- package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +1 -1
- package/esm2020/lib/zmodal/zmodal.component.mjs +1 -1
- package/esm2020/lib/znumeric/znumeric.component.mjs +8 -3
- package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +20 -16
- package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +10 -8
- package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +1 -1
- package/esm2020/lib/zreport/zreport.component.mjs +6 -4
- package/esm2020/lib/zscheduler/zscheduler.component.mjs +8 -4
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +17 -18
- package/esm2020/lib/ztab/ztab.component.mjs +15 -7
- package/esm2020/lib/ztext/ztext.component.mjs +9 -5
- package/esm2020/lib/ztextarea/ztextarea.component.mjs +10 -7
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +11 -7
- package/esm2020/lib/ztree/ztree.component.mjs +8 -12
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +10 -6
- package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +1 -1
- package/esm2020/lib/zudf/zudf.component.mjs +10 -12
- package/esm2020/lib/zupload/zupload.component.mjs +5 -4
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +9 -5
- package/fesm2015/mmhglobal-dynamicform.mjs +447 -282
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +448 -282
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/components/buttonfieldbase.component.d.ts +6 -2
- package/lib/components/containerfieldbase.component.d.ts +7 -3
- package/lib/components/datalistingfieldbase.component.d.ts +6 -2
- package/lib/components/fieldbase.component.d.ts +6 -3
- package/lib/components/inputfieldbase.component.d.ts +4 -1
- package/lib/embed-components/input-field-addons/input-field-addons.component.d.ts +6 -2
- package/lib/input-error-message/input-error-message.component.d.ts +6 -3
- package/lib/kcard/kcard.component.d.ts +6 -3
- package/lib/services/zcomponent.service.d.ts +9 -8
- package/lib/sfquerybuilder/sfquerybuilder.component.d.ts +22 -6
- package/lib/uiactionbutton/uiactionbutton.component.d.ts +4 -2
- package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +1 -1
- package/lib/uicontent/uicontent.component.d.ts +1 -1
- package/lib/uiheader/uiheader.component.d.ts +7 -4
- package/lib/uimenucontent/uimenucontent.component.d.ts +3 -0
- package/lib/zbullet/zbullet.component.d.ts +2 -1
- package/lib/zbuttons/zbuttons.component.d.ts +5 -5
- package/lib/zcard/zcard.component.d.ts +3 -2
- package/lib/zchart/zchart.component.d.ts +4 -2
- package/lib/zcheckbox/zcheckbox.component.d.ts +9 -3
- package/lib/zchip/zchip.component.d.ts +6 -2
- package/lib/zcodeeditor/zcodeeditor.component.d.ts +2 -2
- package/lib/zdaterange/zdaterange.component.d.ts +1 -0
- package/lib/zdatetime/dateParser.pipe.d.ts +2 -2
- package/lib/zdatetime/zdatetime.component.d.ts +4 -3
- package/lib/zdiv/zdiv.component.d.ts +8 -2
- package/lib/zform/zform.component.d.ts +1 -1
- package/lib/zformcontrol/zformcontrol.component.d.ts +2 -2
- package/lib/zgauge/zgauge.component.d.ts +4 -2
- package/lib/zgrid/container/zgrid-container.component.d.ts +5 -2
- package/lib/zgrid/zgrid.component.d.ts +6 -4
- package/lib/zimg/zimg.component.d.ts +5 -3
- package/lib/zinput-container/zinput-container.component.d.ts +6 -3
- package/lib/zinput-container/zinput-container.pipe.d.ts +2 -2
- package/lib/zlabel/zlabel.component.d.ts +6 -2
- package/lib/zmfb/zmfb.component.d.ts +4 -2
- package/lib/znumeric/znumeric.component.d.ts +6 -3
- package/lib/zpostselectinput/zpostselectinput.component.d.ts +7 -5
- package/lib/zprogressbar/zprogressbar.component.d.ts +5 -3
- package/lib/zreport/zreport.component.d.ts +5 -2
- package/lib/zscheduler/zscheduler.component.d.ts +3 -1
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +8 -7
- package/lib/ztab/ztab.component.d.ts +6 -2
- package/lib/ztext/ztext.component.d.ts +5 -3
- package/lib/ztextarea/ztextarea.component.d.ts +4 -3
- package/lib/ztexteditor/ztexteditor.component.d.ts +5 -3
- package/lib/ztree/ztree.component.d.ts +4 -3
- package/lib/ztreelist/ztreelist.component.d.ts +5 -3
- package/lib/zudf/zudf.component.d.ts +3 -5
- package/lib/zupload/zupload.component.d.ts +4 -3
- package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +5 -3
- package/package.json +1 -1
|
@@ -3,16 +3,17 @@ import { Component } from "@angular/core";
|
|
|
3
3
|
/********** Ionic **********/
|
|
4
4
|
/********** Plugin **********/
|
|
5
5
|
/********** Component & Service **********/
|
|
6
|
-
import { ZComponentHelper } from 'mmhglobal-zcore';
|
|
7
6
|
import { FieldBase } from "../components/fieldbase.component";
|
|
7
|
+
import { ZComponentHelper } from 'mmhglobal-zcore';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "../services/zcomponent.service";
|
|
10
10
|
import * as i2 from "@progress/kendo-angular-gauges";
|
|
11
11
|
import * as i3 from "@angular/common";
|
|
12
12
|
import * as i4 from "@angular/flex-layout/extended";
|
|
13
13
|
export class ZgaugeComponent extends FieldBase {
|
|
14
|
-
constructor(
|
|
15
|
-
super(
|
|
14
|
+
constructor(componentService) {
|
|
15
|
+
super(componentService);
|
|
16
|
+
this.componentService = componentService;
|
|
16
17
|
this.isLoading = true;
|
|
17
18
|
this.value = 0;
|
|
18
19
|
this.title = "";
|
|
@@ -66,8 +67,11 @@ export class ZgaugeComponent extends FieldBase {
|
|
|
66
67
|
this.getFieldDeclarationForSetup(this.data, this.options);
|
|
67
68
|
this.isLoading = false;
|
|
68
69
|
}
|
|
70
|
+
ngAfterViewInit() {
|
|
71
|
+
this.componentService.decrementComponentCounterForField(this.data);
|
|
72
|
+
}
|
|
69
73
|
getGaugeStyle() {
|
|
70
|
-
return this.componentProperties.style.style3 ? this.
|
|
74
|
+
return this.componentProperties.style.style3 ? this.componentService.convertStyleStringToObject(this.componentProperties.style.style3) : { 'white-space': 'initial' };
|
|
71
75
|
}
|
|
72
76
|
getFieldDeclarationForSetup(field, options) {
|
|
73
77
|
if (field.Value.startsWith('group.')) {
|
|
@@ -115,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
115
119
|
type: Component,
|
|
116
120
|
args: [{ selector: 'app-zgauge', template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <div id=\"marketShareContainer\" class=\"ion-row\" class=\"col-xs-12 stats-graph\" *ngIf=\"options.title\">\r\n <h6 style=\"color: gray;\">{{ options.title }}</h6>\r\n </div>\r\n <div [ngStyle]='alignment()'>\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\" style=\"margin-top:50px;width:90% ;height:100%; min-width: 330px;\">\r\n <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n [minorTicks]=\"options.minorTicks\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"options.startAngle\"\r\n [endAngle]=\"options.endAngle\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <span [style.color]=\"color\">{{ value }}</span>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>\r\n\r\n<!--<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n <div class=\"chart-top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"options.title\">\r\n {{options.title}}\r\n </div>\r\n <div [style]=\"componentProperties.style.style2\" class=\"e1tag-style2\">\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\"\r\n [style]=\"getGaugeStyle()\" class=\"e1tag-style3\">\r\n <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n [minorTicks]=\"options.minorTicks\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"options.startAngle\"\r\n [endAngle]=\"options.endAngle\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <div *ngIf=\"options.chartInnerText1\" [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\">{{ options.chartInnerText1 }}</div>\r\n <div *ngIf=\"options.chartInnerText2\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\">{{ options.chartInnerText2 }}</div>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>-->\r\n\r\n", styles: [""] }]
|
|
117
121
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }]; } });
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdhdWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pnYXVnZS96Z2F1Z2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemdhdWdlL3pnYXVnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQWMsZ0JBQWdCLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQVM5RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxTQUFTO0lBcUM1QyxZQUFZLFdBQThCO1FBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBcENoRSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ1QsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDZixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUV2QixZQUFPLEdBQUc7WUFDUixLQUFLLEVBQUUsSUFBSSxDQUFD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TyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDNUQsT0FBTyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDbEUsT0FBTyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDekQsT0FBTyxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ3ZILE9BQU8sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RixDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztTQUM5QyxDQUFDO1FBRUYsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs0R0F4R1UsZUFBZTtnR0FBZixlQUFlLHlFQ2xCNUIsMmtIQXVEQTsyRkRyQ2EsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpGaWVsZCB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2ZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtemdhdWdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vemdhdWdlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96Z2F1Z2UuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpnYXVnZUNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcclxuICBwcml2YXRlIHZhbHVlID0gMDtcclxuICBwcml2YXRlIHRpdGxlID0gXCJcIjtcclxuICBwcml2YXRlIGNvbG9yID0gW107XHJcbiAgcHJpdmF0ZSBtYWpvclRpY2tzID0geyB2aXNpYmxlOiB0cnVlLCBjb2xvcjogJyMwMDAwZmYnIH07XHJcbiAgcHJpdmF0ZSBtaW5vclRpY2tzID0geyB2aXNpYmxlOiB0cnVlLCBjb2xvcjogJyMwMDAwZmYnIH07XHJcbiAgcHJpdmF0ZSBzdGFydEFuZ2xlID0gMDtcclxuICBwcml2YXRlIGVuZEFuZ2xlID0gMTgwO1xyXG4gIHByaXZhdGUgbWluVmFsdWUgPSAwO1xyXG4gIHByaXZhdGUgbWF4VmFsdWUgPSAyMDA7XHJcblxyXG4gIG9wdGlvbnMgPSB7XHJcbiAgICB2YWx1ZTogdGhpcy52YWx1ZSxcclxuICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxyXG4gICAgY2hhcnRJbm5lclRleHQxOiAnJyxcclxuICAgIGNoYXJ0SW5uZXJUZXh0MjogJycsXHJcbiAgICBzY2FsZU1heDogNTAsXHJcbiAgICBjb2xvcnM6IHRoaXMuY29sb3IsXHJcbiAgICB0cmFuc2l0aW9uczogZmFsc2UsXHJcbiAgICBtYWpvclRpY2tzOiB0aGlzLm1ham9yVGlja3MsXHJcbiAgICBtaW5vclRpY2tzOiB0aGlzLm1pbm9yVGlja3MsXHJcbiAgICBtaW5WYWx1ZTogdGhpcy5taW5WYWx1ZSxcclxuICAgIG1heFZhbHVlOiB0aGlzLm1heFZhbHVlLFxyXG4gICAgcmV2ZXJzZTogZmFsc2UsXHJcbiAgICBzdGFydEFuZ2xlOiB0aGlzLnN0YXJ0QW5nbGUsXHJcbiAgICBlbmRBbmdsZTogdGhpcy5lbmRBbmdsZSxcclxuICAgIHJhbmdlUGxhY2Vob2xkZXJDb2xvcjogJyNlNmU1ZTUnLFxyXG4gICAgbGFiZWxzQ29sb3I6ICcjMDAwMGZmJyxcclxuICAgIHJhbmdlRnJvbTogMCxcclxuICAgIHJhbmdlVG86IDEwMCxcclxuICAgIHJhbmdlQ29sb3I6ICcjZmY2MzU4JyxcclxuICAgIHJhbmdlTGluZUNhcDogJ3JvdW5kJyxcclxuICAgIHNob3dMYWJlbHM6IHRydWUsXHJcbiAgICByYW5nZVNpemU6IDEwLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSkgeyBzdXBlcihjb21wU2VydmljZSkgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuT3B0aW9ucykge1xyXG4gICAgICBjb25zdCBvcHRpb25UeXBlID0gdHlwZW9mICh0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgIGlmIChvcHRpb25UeXBlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCB0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9uVHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT3B0aW9ucyk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAob3B0aW9uVmFsdWUpID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIG9wdGlvblZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cCh0aGlzLmRhdGEsIHRoaXMub3B0aW9ucyk7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEdhdWdlU3R5bGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMyA/IHRoaXMuY29tcFNlcnZpY2UuY29udmVydFN0eWxlU3RyaW5nVG9PYmplY3QodGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMykgOiB7ICd3aGl0ZS1zcGFjZSc6ICdpbml0aWFsJyB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cChmaWVsZDogWkZpZWxkLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIGlmIChmaWVsZC5WYWx1ZS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICBvcHRpb25zLnZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLlZhbHVlKSB8fCBvcHRpb25zLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIG9wdGlvbnMudmFsdWUgPSB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5WYWx1ZV0gfHwgb3B0aW9ucy52YWx1ZTtcclxuICAgICAgb3B0aW9ucy52YWx1ZSA9IHBhcnNlSW50KG9wdGlvbnMudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy50aXRsZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5UaXRsZSkgfHwgb3B0aW9ucy50aXRsZTtcclxuICAgIG9wdGlvbnMuc2NhbGVNYXggPSBmaWVsZC5NYXggfHwgb3B0aW9ucy5zY2FsZU1heDsgLy8gbm90IHVzaW5nXHJcbiAgICBvcHRpb25zLm1pblZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1pblZhbHVlKSB8fCBvcHRpb25zLm1pblZhbHVlIHx8IDA7XHJcbiAgICBvcHRpb25zLm1heFZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1heFZhbHVlKSB8fCBvcHRpb25zLm1heFZhbHVlIHx8IDEwMDtcclxuICAgIG9wdGlvbnMuY29sb3JzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkNvbG9yKSB8fCBvcHRpb25zLmNvbG9ycyB8fCB7IGNvbG9yOiBcIiMwMTc1YzdcIiB9O1xyXG4gICAgb3B0aW9ucy50cmFuc2l0aW9ucyA9IGZpZWxkLlRyYW5zaXRpb25zIHx8IG9wdGlvbnMudHJhbnNpdGlvbnM7XHJcbiAgICBvcHRpb25zLm1ham9yVGlja3MgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuTWFqb3JUaWNrcykgfHwgb3B0aW9ucy5tYWpvclRpY2tzIHx8IHsgdmlzaWJsZTogdHJ1ZSwgY29sb3I6ICcjMDAwMGZmJyB9O1xyXG4gICAgb3B0aW9ucy5taW5vclRpY2tzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1pbm9yVGlja3MpIHx8IG9wdGlvbnMubWlub3JUaWNrcyB8fCB7IHZpc2libGU6IHRydWUsIGNvbG9yOiAnIzAwMDBmZicgfTtcclxuICAgIG9wdGlvbnMuc2hvd0xhYmVscyA9IGZpZWxkLlNob3dMYWJlbHMgIT0gdW5kZWZpbmVkID8gZmllbGQuU2hvd0xhYmVscyA6IG9wdGlvbnMuc2hvd0xhYmVscztcclxuICAgIG9wdGlvbnMuc3R5bGUgPSBmaWVsZC5TdHlsZSB8fCBvcHRpb25zLnN0eWxlO1xyXG4gICAgb3B0aW9ucy5yZXZlcnNlID0gZmllbGQuUmV2ZXJzZSB8fCBvcHRpb25zLnJldmVyc2U7XHJcbiAgICBvcHRpb25zLnN0YXJ0QW5nbGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuU3RhcnRBbmdsZSkgfHwgb3B0aW9ucy5zdGFydEFuZ2xlIHx8IDA7XHJcbiAgICBvcHRpb25zLmVuZEFuZ2xlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkVuZEFuZ2xlKSB8fCBvcHRpb25zLmVuZEFuZ2xlIHx8IDE4MDtcclxuICAgIG9wdGlvbnMucmFuZ2VQbGFjZWhvbGRlckNvbG9yID0gZmllbGQuUmFuZ2VQbGFjZWhvbGRlckNvbG9yIHx8IG9wdGlvbnMucmFuZ2VQbGFjZWhvbGRlckNvbG9yO1xyXG4gICAgb3B0aW9ucy5yYW5nZUZyb20gPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuUmFuZ2VGcm9tKSB8fCBvcHRpb25zLnJhbmdlRnJvbTtcclxuICAgIG9wdGlvbnMucmFuZ2VUbyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5SYW5nZVRvKSB8fCBvcHRpb25zLnJhbmdlVG87XHJcbiAgICBvcHRpb25zLnJhbmdlQ29sb3IgPSBmaWVsZC5SYW5nZUNvbG9yIHx8IG9wdGlvbnMucmFuZ2VDb2xvcjtcclxuICAgIG9wdGlvbnMucmFuZ2VMaW5lQ2FwID0gZmllbGQuUmFuZ2VMaW5lQ2FwIHx8IG9wdGlvbnMucmFuZ2VMaW5lQ2FwO1xyXG4gICAgb3B0aW9ucy5yYW5nZVNpemUgPSBmaWVsZC5SYW5nZVNpemUgfHwgb3B0aW9ucy5yYW5nZVNpemU7XHJcbiAgICBvcHRpb25zLkdhdWdlQWxpZ25tZW50ID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkdhdWdlQWxpZ25tZW50KSB8fCBvcHRpb25zLkdhdWdlQWxpZ25tZW50O1xyXG4gICAgb3B0aW9ucy5wYWRkaW5nVmFsdWUgPSBvcHRpb25zLnZhbHVlLnRvU3RyaW5nKCkgPT09ICdOYU4nID8gb3B0aW9ucy5HYXVnZUFsaWdubWVudCA6ICcwJSc7XHJcbiAgfVxyXG5cclxuICBhbGlnbm1lbnQoKSB7XHJcbiAgICBjb25zdCBhbGlnbm1lbnRTdHlsZSA9IHtcclxuICAgICAgXCJwYWRkaW5nLXJpZ2h0XCI6IHRoaXMub3B0aW9uc1tcInBhZGRpbmdWYWx1ZVwiXVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gYWxpZ25tZW50U3R5bGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGF0YShnRGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cCh0aGlzLmRhdGEsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gIDxkaXYgaWQ9XCJtYXJrZXRTaGFyZUNvbnRhaW5lclwiIGNsYXNzPVwiaW9uLXJvd1wiIGNsYXNzPVwiY29sLXhzLTEyIHN0YXRzLWdyYXBoXCIgKm5nSWY9XCJvcHRpb25zLnRpdGxlXCI+XHJcbiAgICA8aDYgc3R5bGU9XCJjb2xvcjogZ3JheTtcIj57eyBvcHRpb25zLnRpdGxlIH19PC9oNj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IFtuZ1N0eWxlXT0nYWxpZ25tZW50KCknPlxyXG4gICAgPGtlbmRvLWFyY2dhdWdlIFt2YWx1ZV09XCJvcHRpb25zLnZhbHVlXCIgW3RyYW5zaXRpb25zXT1cIm9wdGlvbnMudHJhbnNpdGlvbnNcIiBbY29sb3JzXT1cIm9wdGlvbnMuY29sb3JzXCIgc3R5bGU9XCJtYXJnaW4tdG9wOjUwcHg7d2lkdGg6OTAlIDtoZWlnaHQ6MTAwJTsgbWluLXdpZHRoOiAzMzBweDtcIj5cclxuICAgICAgPGtlbmRvLWFyY2dhdWdlLXNjYWxlIFttYWpvclRpY2tzXT1cIm9wdGlvbnMubWFqb3JUaWNrc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWlub3JUaWNrc109XCJvcHRpb25zLm1pbm9yVGlja3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JldmVyc2VdPVwib3B0aW9ucy5yZXZlcnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFydEFuZ2xlXT1cIm9wdGlvbnMuc3RhcnRBbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5kQW5nbGVdPVwib3B0aW9ucy5lbmRBbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm9wdGlvbnMubWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJvcHRpb25zLm1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZVBsYWNlaG9sZGVyQ29sb3JdPVwib3B0aW9ucy5yYW5nZVBsYWNlaG9sZGVyQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JhbmdlU2l6ZV09XCJvcHRpb25zLnJhbmdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmFuZ2VMaW5lQ2FwXT1cIm9wdGlvbnMucmFuZ2VMaW5lQ2FwXCI+XHJcbiAgICAgICAgPGtlbmRvLWFyY2dhdWdlLXNjYWxlLWxhYmVscyBmb3JtYXQ9XCJsXCIgW2NvbG9yXT1cIm9wdGlvbnMubGFiZWxzQ29sb3JcIiBbdmlzaWJsZV09XCJvcHRpb25zLnNob3dMYWJlbHNcIj5cclxuICAgICAgICA8L2tlbmRvLWFyY2dhdWdlLXNjYWxlLWxhYmVscz5cclxuICAgICAgPC9rZW5kby1hcmNnYXVnZS1zY2FsZT5cclxuICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvQXJjR2F1Z2VDZW50ZXJUZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1jb2xvcj1cImNvbG9yXCI+XHJcbiAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+e3sgdmFsdWUgfX08L3NwYW4+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2tlbmRvLWFyY2dhdWdlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS08ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjaGFydC10b3AtdGl0bGUgZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgKm5nSWY9XCJvcHRpb25zLnRpdGxlXCI+XHJcbiAgICB7e29wdGlvbnMudGl0bGV9fVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTJcIj5cclxuICAgIDxrZW5kby1hcmNnYXVnZSBbdmFsdWVdPVwib3B0aW9ucy52YWx1ZVwiIFt0cmFuc2l0aW9uc109XCJvcHRpb25zLnRyYW5zaXRpb25zXCIgW2NvbG9yc109XCJvcHRpb25zLmNvbG9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImdldEdhdWdlU3R5bGUoKVwiIGNsYXNzPVwiZTF0YWctc3R5bGUzXCI+XHJcbiAgICAgIDxrZW5kby1hcmNnYXVnZS1zY2FsZSBbbWFqb3JUaWNrc109XCJvcHRpb25zLm1ham9yVGlja3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbm9yVGlja3NdPVwib3B0aW9ucy5taW5vclRpY2tzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXZlcnNlXT1cIm9wdGlvbnMucmV2ZXJzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRBbmdsZV09XCJvcHRpb25zLnN0YXJ0QW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZEFuZ2xlXT1cIm9wdGlvbnMuZW5kQW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJvcHRpb25zLm1pblZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwib3B0aW9ucy5tYXhWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmFuZ2VQbGFjZWhvbGRlckNvbG9yXT1cIm9wdGlvbnMucmFuZ2VQbGFjZWhvbGRlckNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZVNpemVdPVwib3B0aW9ucy5yYW5nZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JhbmdlTGluZUNhcF09XCJvcHRpb25zLnJhbmdlTGluZUNhcFwiPlxyXG4gICAgICAgIDxrZW5kby1hcmNnYXVnZS1zY2FsZS1sYWJlbHMgZm9ybWF0PVwibFwiIFtjb2xvcl09XCJvcHRpb25zLmxhYmVsc0NvbG9yXCIgW3Zpc2libGVdPVwib3B0aW9ucy5zaG93TGFiZWxzXCI+XHJcbiAgICAgICAgPC9rZW5kby1hcmNnYXVnZS1zY2FsZS1sYWJlbHM+XHJcbiAgICAgIDwva2VuZG8tYXJjZ2F1Z2Utc2NhbGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0FyY0dhdWdlQ2VudGVyVGVtcGxhdGUgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtY29sb3I9XCJjb2xvclwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLmNoYXJ0SW5uZXJUZXh0MVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiIGNsYXNzPVwiZTF0YWctc3R5bGU0XCI+e3sgb3B0aW9ucy5jaGFydElubmVyVGV4dDEgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5jaGFydElubmVyVGV4dDJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiPnt7IG9wdGlvbnMuY2hhcnRJbm5lclRleHQyIH19PC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2tlbmRvLWFyY2dhdWdlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4tLT5cclxuXHJcbiJdfQ==
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdhdWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pnYXVnZS96Z2F1Z2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemdhdWdlL3pnYXVnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFjLGdCQUFnQixFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQVN2RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxTQUFTO0lBcUM1QyxZQUNTLGdCQUFtQztRQUUxQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUZqQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBckM1QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ1QsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDZixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUV2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KioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaRmllbGQgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXpnYXVnZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3pnYXVnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vemdhdWdlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWmdhdWdlQ29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIHByaXZhdGUgdmFsdWUgPSAwO1xyXG4gIHByaXZhdGUgdGl0bGUgPSBcIlwiO1xyXG4gIHByaXZhdGUgY29sb3IgPSBbXTtcclxuICBwcml2YXRlIG1ham9yVGlja3MgPSB7IHZpc2libGU6IHRydWUsIGNvbG9yOiAnIzAwMDBmZicgfTtcclxuICBwcml2YXRlIG1pbm9yVGlja3MgPSB7IHZpc2libGU6IHRydWUsIGNvbG9yOiAnIzAwMDBmZicgfTtcclxuICBwcml2YXRlIHN0YXJ0QW5nbGUgPSAwO1xyXG4gIHByaXZhdGUgZW5kQW5nbGUgPSAxODA7XHJcbiAgcHJpdmF0ZSBtaW5WYWx1ZSA9IDA7XHJcbiAgcHJpdmF0ZSBtYXhWYWx1ZSA9IDIwMDtcclxuXHJcbiAgb3B0aW9ucyA9IHtcclxuICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxyXG4gICAgdGl0bGU6IHRoaXMudGl0bGUsXHJcbiAgICBjaGFydElubmVyVGV4dDE6ICcnLFxyXG4gICAgY2hhcnRJbm5lclRleHQyOiAnJyxcclxuICAgIHNjYWxlTWF4OiA1MCxcclxuICAgIGNvbG9yczogdGhpcy5jb2xvcixcclxuICAgIHRyYW5zaXRpb25zOiBmYWxzZSxcclxuICAgIG1ham9yVGlja3M6IHRoaXMubWFqb3JUaWNrcyxcclxuICAgIG1pbm9yVGlja3M6IHRoaXMubWlub3JUaWNrcyxcclxuICAgIG1pblZhbHVlOiB0aGlzLm1pblZhbHVlLFxyXG4gICAgbWF4VmFsdWU6IHRoaXMubWF4VmFsdWUsXHJcbiAgICByZXZlcnNlOiBmYWxzZSxcclxuICAgIHN0YXJ0QW5nbGU6IHRoaXMuc3RhcnRBbmdsZSxcclxuICAgIGVuZEFuZ2xlOiB0aGlzLmVuZEFuZ2xlLFxyXG4gICAgcmFuZ2VQbGFjZWhvbGRlckNvbG9yOiAnI2U2ZTVlNScsXHJcbiAgICBsYWJlbHNDb2xvcjogJyMwMDAwZmYnLFxyXG4gICAgcmFuZ2VGcm9tOiAwLFxyXG4gICAgcmFuZ2VUbzogMTAwLFxyXG4gICAgcmFuZ2VDb2xvcjogJyNmZjYzNTgnLFxyXG4gICAgcmFuZ2VMaW5lQ2FwOiAncm91bmQnLFxyXG4gICAgc2hvd0xhYmVsczogdHJ1ZSxcclxuICAgIHJhbmdlU2l6ZTogMTAsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgY29uc3Qgb3B0aW9uVHlwZSA9IHR5cGVvZiAodGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICBpZiAob3B0aW9uVHlwZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICB9IGVsc2UgaWYgKG9wdGlvblR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9wdGlvbnMpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgKG9wdGlvblZhbHVlKSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpb25zLCBvcHRpb25WYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5nZXRGaWVsZERlY2xhcmF0aW9uRm9yU2V0dXAodGhpcy5kYXRhLCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5kZWNyZW1lbnRDb21wb25lbnRDb3VudGVyRm9yRmllbGQodGhpcy5kYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRHYXVnZVN0eWxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTMgPyB0aGlzLmNvbXBvbmVudFNlcnZpY2UuY29udmVydFN0eWxlU3RyaW5nVG9PYmplY3QodGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMykgOiB7ICd3aGl0ZS1zcGFjZSc6ICdpbml0aWFsJyB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cChmaWVsZDogWkZpZWxkLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIGlmIChmaWVsZC5WYWx1ZS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICBvcHRpb25zLnZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLlZhbHVlKSB8fCBvcHRpb25zLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIG9wdGlvbnMudmFsdWUgPSB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5WYWx1ZV0gfHwgb3B0aW9ucy52YWx1ZTtcclxuICAgICAgb3B0aW9ucy52YWx1ZSA9IHBhcnNlSW50KG9wdGlvbnMudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy50aXRsZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5UaXRsZSkgfHwgb3B0aW9ucy50aXRsZTtcclxuICAgIG9wdGlvbnMuc2NhbGVNYXggPSBmaWVsZC5NYXggfHwgb3B0aW9ucy5zY2FsZU1heDsgLy8gbm90IHVzaW5nXHJcbiAgICBvcHRpb25zLm1pblZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1pblZhbHVlKSB8fCBvcHRpb25zLm1pblZhbHVlIHx8IDA7XHJcbiAgICBvcHRpb25zLm1heFZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1heFZhbHVlKSB8fCBvcHRpb25zLm1heFZhbHVlIHx8IDEwMDtcclxuICAgIG9wdGlvbnMuY29sb3JzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkNvbG9yKSB8fCBvcHRpb25zLmNvbG9ycyB8fCB7IGNvbG9yOiBcIiMwMTc1YzdcIiB9O1xyXG4gICAgb3B0aW9ucy50cmFuc2l0aW9ucyA9IGZpZWxkLlRyYW5zaXRpb25zIHx8IG9wdGlvbnMudHJhbnNpdGlvbnM7XHJcbiAgICBvcHRpb25zLm1ham9yVGlja3MgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuTWFqb3JUaWNrcykgfHwgb3B0aW9ucy5tYWpvclRpY2tzIHx8IHsgdmlzaWJsZTogdHJ1ZSwgY29sb3I6ICcjMDAwMGZmJyB9O1xyXG4gICAgb3B0aW9ucy5taW5vclRpY2tzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1pbm9yVGlja3MpIHx8IG9wdGlvbnMubWlub3JUaWNrcyB8fCB7IHZpc2libGU6IHRydWUsIGNvbG9yOiAnIzAwMDBmZicgfTtcclxuICAgIG9wdGlvbnMuc2hvd0xhYmVscyA9IGZpZWxkLlNob3dMYWJlbHMgIT0gdW5kZWZpbmVkID8gZmllbGQuU2hvd0xhYmVscyA6IG9wdGlvbnMuc2hvd0xhYmVscztcclxuICAgIG9wdGlvbnMuc3R5bGUgPSBmaWVsZC5TdHlsZSB8fCBvcHRpb25zLnN0eWxlO1xyXG4gICAgb3B0aW9ucy5yZXZlcnNlID0gZmllbGQuUmV2ZXJzZSB8fCBvcHRpb25zLnJldmVyc2U7XHJcbiAgICBvcHRpb25zLnN0YXJ0QW5nbGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuU3RhcnRBbmdsZSkgfHwgb3B0aW9ucy5zdGFydEFuZ2xlIHx8IDA7XHJcbiAgICBvcHRpb25zLmVuZEFuZ2xlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkVuZEFuZ2xlKSB8fCBvcHRpb25zLmVuZEFuZ2xlIHx8IDE4MDtcclxuICAgIG9wdGlvbnMucmFuZ2VQbGFjZWhvbGRlckNvbG9yID0gZmllbGQuUmFuZ2VQbGFjZWhvbGRlckNvbG9yIHx8IG9wdGlvbnMucmFuZ2VQbGFjZWhvbGRlckNvbG9yO1xyXG4gICAgb3B0aW9ucy5yYW5nZUZyb20gPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuUmFuZ2VGcm9tKSB8fCBvcHRpb25zLnJhbmdlRnJvbTtcclxuICAgIG9wdGlvbnMucmFuZ2VUbyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5SYW5nZVRvKSB8fCBvcHRpb25zLnJhbmdlVG87XHJcbiAgICBvcHRpb25zLnJhbmdlQ29sb3IgPSBmaWVsZC5SYW5nZUNvbG9yIHx8IG9wdGlvbnMucmFuZ2VDb2xvcjtcclxuICAgIG9wdGlvbnMucmFuZ2VMaW5lQ2FwID0gZmllbGQuUmFuZ2VMaW5lQ2FwIHx8IG9wdGlvbnMucmFuZ2VMaW5lQ2FwO1xyXG4gICAgb3B0aW9ucy5yYW5nZVNpemUgPSBmaWVsZC5SYW5nZVNpemUgfHwgb3B0aW9ucy5yYW5nZVNpemU7XHJcbiAgICBvcHRpb25zLkdhdWdlQWxpZ25tZW50ID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLkdhdWdlQWxpZ25tZW50KSB8fCBvcHRpb25zLkdhdWdlQWxpZ25tZW50O1xyXG4gICAgb3B0aW9ucy5wYWRkaW5nVmFsdWUgPSBvcHRpb25zLnZhbHVlLnRvU3RyaW5nKCkgPT09ICdOYU4nID8gb3B0aW9ucy5HYXVnZUFsaWdubWVudCA6ICcwJSc7XHJcbiAgfVxyXG5cclxuICBhbGlnbm1lbnQoKSB7XHJcbiAgICBjb25zdCBhbGlnbm1lbnRTdHlsZSA9IHtcclxuICAgICAgXCJwYWRkaW5nLXJpZ2h0XCI6IHRoaXMub3B0aW9uc1tcInBhZGRpbmdWYWx1ZVwiXVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gYWxpZ25tZW50U3R5bGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGF0YShnRGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cCh0aGlzLmRhdGEsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gIDxkaXYgaWQ9XCJtYXJrZXRTaGFyZUNvbnRhaW5lclwiIGNsYXNzPVwiaW9uLXJvd1wiIGNsYXNzPVwiY29sLXhzLTEyIHN0YXRzLWdyYXBoXCIgKm5nSWY9XCJvcHRpb25zLnRpdGxlXCI+XHJcbiAgICA8aDYgc3R5bGU9XCJjb2xvcjogZ3JheTtcIj57eyBvcHRpb25zLnRpdGxlIH19PC9oNj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IFtuZ1N0eWxlXT0nYWxpZ25tZW50KCknPlxyXG4gICAgPGtlbmRvLWFyY2dhdWdlIFt2YWx1ZV09XCJvcHRpb25zLnZhbHVlXCIgW3RyYW5zaXRpb25zXT1cIm9wdGlvbnMudHJhbnNpdGlvbnNcIiBbY29sb3JzXT1cIm9wdGlvbnMuY29sb3JzXCIgc3R5bGU9XCJtYXJnaW4tdG9wOjUwcHg7d2lkdGg6OTAlIDtoZWlnaHQ6MTAwJTsgbWluLXdpZHRoOiAzMzBweDtcIj5cclxuICAgICAgPGtlbmRvLWFyY2dhdWdlLXNjYWxlIFttYWpvclRpY2tzXT1cIm9wdGlvbnMubWFqb3JUaWNrc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWlub3JUaWNrc109XCJvcHRpb25zLm1pbm9yVGlja3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JldmVyc2VdPVwib3B0aW9ucy5yZXZlcnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGFydEFuZ2xlXT1cIm9wdGlvbnMuc3RhcnRBbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5kQW5nbGVdPVwib3B0aW9ucy5lbmRBbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm9wdGlvbnMubWluVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJvcHRpb25zLm1heFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZVBsYWNlaG9sZGVyQ29sb3JdPVwib3B0aW9ucy5yYW5nZVBsYWNlaG9sZGVyQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JhbmdlU2l6ZV09XCJvcHRpb25zLnJhbmdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmFuZ2VMaW5lQ2FwXT1cIm9wdGlvbnMucmFuZ2VMaW5lQ2FwXCI+XHJcbiAgICAgICAgPGtlbmRvLWFyY2dhdWdlLXNjYWxlLWxhYmVscyBmb3JtYXQ9XCJsXCIgW2NvbG9yXT1cIm9wdGlvbnMubGFiZWxzQ29sb3JcIiBbdmlzaWJsZV09XCJvcHRpb25zLnNob3dMYWJlbHNcIj5cclxuICAgICAgICA8L2tlbmRvLWFyY2dhdWdlLXNjYWxlLWxhYmVscz5cclxuICAgICAgPC9rZW5kby1hcmNnYXVnZS1zY2FsZT5cclxuICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvQXJjR2F1Z2VDZW50ZXJUZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1jb2xvcj1cImNvbG9yXCI+XHJcbiAgICAgICAgPHNwYW4gW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+e3sgdmFsdWUgfX08L3NwYW4+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2tlbmRvLWFyY2dhdWdlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS08ZGl2ICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCIgY2xhc3M9XCJlMXRhZy1zdHlsZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjaGFydC10b3AtdGl0bGUgZTF0YWctc3R5bGUxXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgKm5nSWY9XCJvcHRpb25zLnRpdGxlXCI+XHJcbiAgICB7e29wdGlvbnMudGl0bGV9fVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTJcIj5cclxuICAgIDxrZW5kby1hcmNnYXVnZSBbdmFsdWVdPVwib3B0aW9ucy52YWx1ZVwiIFt0cmFuc2l0aW9uc109XCJvcHRpb25zLnRyYW5zaXRpb25zXCIgW2NvbG9yc109XCJvcHRpb25zLmNvbG9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImdldEdhdWdlU3R5bGUoKVwiIGNsYXNzPVwiZTF0YWctc3R5bGUzXCI+XHJcbiAgICAgIDxrZW5kby1hcmNnYXVnZS1zY2FsZSBbbWFqb3JUaWNrc109XCJvcHRpb25zLm1ham9yVGlja3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbm9yVGlja3NdPVwib3B0aW9ucy5taW5vclRpY2tzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXZlcnNlXT1cIm9wdGlvbnMucmV2ZXJzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRBbmdsZV09XCJvcHRpb25zLnN0YXJ0QW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZEFuZ2xlXT1cIm9wdGlvbnMuZW5kQW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJvcHRpb25zLm1pblZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwib3B0aW9ucy5tYXhWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmFuZ2VQbGFjZWhvbGRlckNvbG9yXT1cIm9wdGlvbnMucmFuZ2VQbGFjZWhvbGRlckNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyYW5nZVNpemVdPVwib3B0aW9ucy5yYW5nZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JhbmdlTGluZUNhcF09XCJvcHRpb25zLnJhbmdlTGluZUNhcFwiPlxyXG4gICAgICAgIDxrZW5kby1hcmNnYXVnZS1zY2FsZS1sYWJlbHMgZm9ybWF0PVwibFwiIFtjb2xvcl09XCJvcHRpb25zLmxhYmVsc0NvbG9yXCIgW3Zpc2libGVdPVwib3B0aW9ucy5zaG93TGFiZWxzXCI+XHJcbiAgICAgICAgPC9rZW5kby1hcmNnYXVnZS1zY2FsZS1sYWJlbHM+XHJcbiAgICAgIDwva2VuZG8tYXJjZ2F1Z2Utc2NhbGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0FyY0dhdWdlQ2VudGVyVGVtcGxhdGUgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtY29sb3I9XCJjb2xvclwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLmNoYXJ0SW5uZXJUZXh0MVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiIGNsYXNzPVwiZTF0YWctc3R5bGU0XCI+e3sgb3B0aW9ucy5jaGFydElubmVyVGV4dDEgfX08L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3B0aW9ucy5jaGFydElubmVyVGV4dDJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiPnt7IG9wdGlvbnMuY2hhcnRJbm5lclRleHQyIH19PC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2tlbmRvLWFyY2dhdWdlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4tLT5cclxuXHJcbiJdfQ==
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/********** Angular **********/
|
|
2
2
|
import { Component, ViewChild, ViewContainerRef, HostListener } from "@angular/core";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/********** Ionic **********/
|
|
4
|
+
/********** Plugin **********/
|
|
5
5
|
import { filter, interval, tap, first } from "rxjs";
|
|
6
|
+
import { DrawerComponent } from "@progress/kendo-angular-layout";
|
|
7
|
+
/********** Component & Service **********/
|
|
6
8
|
import { FieldBase } from "../../components/fieldbase.component";
|
|
9
|
+
import { ZComponentHelper } from "mmhglobal-zcore";
|
|
7
10
|
import * as i0 from "@angular/core";
|
|
8
11
|
import * as i1 from "../../services/zcomponent.service";
|
|
9
12
|
import * as i2 from "../../services/main.service";
|
|
@@ -14,8 +17,9 @@ import * as i6 from "../zgrid.component";
|
|
|
14
17
|
import * as i7 from "../../embed-components/page-loader/page-loader.component";
|
|
15
18
|
import * as i8 from "@angular/common";
|
|
16
19
|
export class ZgridContainerComponent extends FieldBase {
|
|
17
|
-
constructor(
|
|
18
|
-
super(
|
|
20
|
+
constructor(componentService, mainService) {
|
|
21
|
+
super(componentService);
|
|
22
|
+
this.componentService = componentService;
|
|
19
23
|
this.mainService = mainService;
|
|
20
24
|
this.isShowFormPage = false;
|
|
21
25
|
}
|
|
@@ -28,7 +32,11 @@ export class ZgridContainerComponent extends FieldBase {
|
|
|
28
32
|
}
|
|
29
33
|
super.initComponent().subscribe();
|
|
30
34
|
}
|
|
31
|
-
|
|
35
|
+
ngAfterViewInit() {
|
|
36
|
+
this.componentService.decrementComponentCounterForField(this.data);
|
|
37
|
+
}
|
|
38
|
+
ngOnDestroy() {
|
|
39
|
+
}
|
|
32
40
|
//#region Helper Functions
|
|
33
41
|
displayFormPage() {
|
|
34
42
|
const pageElement = ZComponentHelper.getGroupValue(this.data['ContainerForm'], this.group);
|
|
@@ -96,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
96
104
|
type: HostListener,
|
|
97
105
|
args: ['window:resize', ['$event']]
|
|
98
106
|
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pncmlkL2NvbnRhaW5lci96Z3JpZC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemdyaWQvY29udGFpbmVyL3pncmlkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7QUFTakUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFNBQVM7SUFNcEQsWUFBWSxXQUE4QixFQUFVLFdBQXdCO1FBQzFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUQrQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUZyRSxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUk5QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUNJLElBQUksSUFBSSxDQUFDLElBQUks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QyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2QsTUFBTTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQWdEMUIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEcmF3ZXJDb21wb25lbnQgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItbGF5b3V0XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IGZpbHRlciwgaW50ZXJ2YWwsIHRhcCwgZmlyc3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL21haW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16Z3JpZC1jb250YWluZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pncmlkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96Z3JpZC1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZ3JpZENvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIEZpZWxkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdmb3JtUGFnZScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBmb3JtUGFnZTtcclxuICBAVmlld0NoaWxkKERyYXdlckNvbXBvbmVudCkgcHVibGljIGRyYXdlcjogRHJhd2VyQ29tcG9uZW50O1xyXG4gIHB1YmxpYyBpbm5lcldpZHRoOiBhbnk7XHJcbiAgcHVibGljIGlzU2hvd0Zvcm1QYWdlID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSwgcHJpdmF0ZSBtYWluU2VydmljZTogTWFpblNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNvbXBTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgPT09IGBzdHlsZSR7Mn1gKSB7XHJcbiAgICAgIHRoaXMuc2V0dXBTdHlsZTIoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgPT09IGBzdHlsZSR7M31gKSB7XHJcbiAgICAgIHRoaXMuc2V0dXBTdHlsZTMoKTtcclxuICAgIH1cclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkgeyB9XHJcblxyXG4gIC8vI3JlZ2lvbiBIZWxwZXIgRnVuY3Rpb25zXHJcbiAgcHJpdmF0ZSBkaXNwbGF5Rm9ybVBhZ2UoKSB7XHJcbiAgICBjb25zdCBwYWdlRWxlbWVudCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmRhdGFbJ0NvbnRhaW5lckZvcm0nXSwgdGhpcy5ncm91cCk7XHJcbiAgICB0aGlzLm1haW5TZXJ2aWNlLmxvYWRDb250YWluZXJWaWV3KHsgdmlld0NvbnRhaW5lclJlZjogdGhpcy5mb3JtUGFnZSB9LCBwYWdlRWxlbWVudCwgdGhpcy5kYXRhLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBTdHlsZSAzOiBERUNcclxuICBwcml2YXRlIHNldHVwU3R5bGUzKCkge1xyXG4gICAgdGhpcy5ncm91cFtgZTFDbG9zZUdyaWRDb250YWluZXJgXSA9IHRoaXMudG9nZ2xlRm9ybVBhZ2UuYmluZCh0aGlzLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlRm9ybVBhZ2UoaXNTaG93PzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc1Nob3dGb3JtUGFnZSA9IGlzU2hvdztcclxuICAgIGlmIChpc1Nob3cpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5Rm9ybVBhZ2UoKTtcclxuICAgICAgdGhpcy5tYWluU2VydmljZS5zY3JvbGxUb0VtYmJlZENvbXBvbmVudFBhZ2UoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5kYXRhLkNvbnRhaW5lckZvcm1BdXRvU2Nyb2xsKSB7XHJcbiAgICAgICAgdGhpcy5tYWluU2VydmljZS5zY3JvbGxUb1RvcE9mUGFnZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybVBhZ2UuY2xlYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBTdGx5ZSAyOiBEcmF3ZXJcclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudCkge1xyXG4gICAgdGhpcy5zZXREcmF3ZXJXaWR0aCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cFN0eWxlMigpIHtcclxuICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgoKTtcclxuICAgIHRoaXMuZ3JvdXBbYGUxQ2xvc2VHcmlkQ29udGFpbmVyYF0gPSB0aGlzLnRvZ2dsZURyYXdlci5iaW5kKHRoaXMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9nZ2xlRHJhd2VyKCkge1xyXG4gICAgdGhpcy5kcmF3ZXIudG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25FeHBhbmRDaGFuZ2UoaXNFeHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc1Nob3dGb3JtUGFnZSA9IGlzRXhwYW5kZWQ7XHJcbiAgICBpZiAoaXNFeHBhbmRlZCkge1xyXG4gICAgICB0aGlzLnNldHVwRHJhd2VyQ29udGVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERyYXdlckNvbnRlbnQoKSB7XHJcbiAgICAvLyBOZWVkIHRvIHdhaXQgZm9yIGZvcm0gcGFnZSB0byByZW5kZXIgaW4gRE9NXHJcbiAgICBpZiAodGhpcy5kYXRhWydDb250YWluZXJGb3JtJ10pIHtcclxuICAgICAgaW50ZXJ2YWwoNTAwKS5waXBlKFxyXG4gICAgICAgIGZpbHRlcih4ID0+XHJcbiAgICAgICAgICB0aGlzLmZvcm1QYWdlXHJcbiAgICAgICAgKSxcclxuICAgICAgICBmaXJzdCgpLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlGb3JtUGFnZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERyYXdlcldpZHRoKCkge1xyXG4gICAgdGhpcy5pbm5lcldpZHRoID0gKHdpbmRvdy5pbm5lcldpZHRoICogMC44KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImdyaWQtY29udGFpbmVyXCIgKm5nSWY9XCJkYXRhLkNvbXBvbmVudFN0eWxlVHlwZSA9PT0gJ3N0eWxlMidcIj5cclxuICA8a2VuZG8tZHJhd2VyLWNvbnRhaW5lciBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZVwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlXCI+XHJcbiAgICA8a2VuZG8tZHJhd2VyICNkcmF3ZXIgbW9kZT1cIm92ZXJsYXlcIiBbcG9zaXRpb25dPVwiJ2VuZCdcIiBbbWluaV09XCJmYWxzZVwiIFthbmltYXRpb25dPVwie2R1cmF0aW9uOiA4MDB9XCIgW2V4cGFuZGVkXT1cImlzU2hvd0Zvcm1QYWdlXCJcclxuICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGUxXCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGUxXCIgW3dpZHRoXT1cImlubmVyV2lkdGhcIlxyXG4gICAgICAoZXhwYW5kZWRDaGFuZ2UpPVwib25FeHBhbmRDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUga2VuZG9EcmF3ZXJUZW1wbGF0ZT5cclxuICAgICAgICA8ZGl2IFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlMlwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1IZWFkZXJcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybUhlYWRlci10aXRsZVwiPkVtcGxveWVlIFByb2ZpbGU8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cIm1lZGl1bVwiIChjbGljayk9XCJkcmF3ZXIudG9nZ2xlKClcIj5cclxuICAgICAgICAgICAgICA8ZmEtaWNvbiBjbGFzcz1cImNsb3NlLWJ0bi1pY29uXCIgaWNvbj1cInRpbWVzXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgI2Zvcm1QYWdlPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9rZW5kby1kcmF3ZXI+XHJcblxyXG4gICAgPGtlbmRvLWRyYXdlci1jb250ZW50IFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlM1wiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlM1wiPlxyXG4gICAgICA8YXBwLXpncmlkIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlNFwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlNFwiIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgIFtncm91cF09XCJncm91cFwiIFtmb3JtXT1cImZvcm1cIiBbY29udGFpbmVyRmllbGRdPVwiY29udGFpbmVyRmllbGRcIiBbY29tcG9uZW50UHJvcGVydGllc109XCJjb21wb25lbnRQcm9wZXJ0aWVzXCJcclxuICAgICAgICAoc2hvd0Zvcm1QYWdlKT1cImRyYXdlci50b2dnbGUoJGV2ZW50KVwiPlxyXG4gICAgICA8L2FwcC16Z3JpZD5cclxuICAgIDwva2VuZG8tZHJhd2VyLWNvbnRlbnQ+XHJcbiAgPC9rZW5kby1kcmF3ZXItY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcblxyXG48ZGl2IGNsYXNzPVwiZ3JpZC1jb250YWluZXJcIiAqbmdJZj1cImRhdGEuQ29tcG9uZW50U3R5bGVUeXBlICE9PSAnc3R5bGUyJ1wiPlxyXG4gIDxhcHAtemdyaWQgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGU0XCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGU0XCIgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICBbZ3JvdXBdPVwiZ3JvdXBcIiBbZm9ybV09XCJmb3JtXCIgW2NvbnRhaW5lckZpZWxkXT1cImNvbnRhaW5lckZpZWxkXCIgW2NvbXBvbmVudFByb3BlcnRpZXNdPVwiY29tcG9uZW50UHJvcGVydGllc1wiXHJcbiAgICAoc2hvd0Zvcm1QYWdlKT1cInRvZ2dsZUZvcm1QYWdlKCRldmVudClcIj5cclxuICA8L2FwcC16Z3JpZD5cclxuICA8ZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFncm91cC5pc0xvYWRpbmdcIiBbY2xhc3MuZW1iZWRkZWRGb3JtUGFnZV09XCJpc1Nob3dGb3JtUGFnZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICNmb3JtUGFnZT48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImdyb3VwLmlzTG9hZGluZ1wiIGNsYXNzPVwic3Bpbm5lci1jb250YWluZXJcIj5cclxuICAgICAgPGFwcC1wYWdlLWxvYWRlcj48L2FwcC1wYWdlLWxvYWRlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pncmlkL2NvbnRhaW5lci96Z3JpZC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemdyaWQvY29udGFpbmVyL3pncmlkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4Ryw2QkFBNkI7QUFFN0IsOEJBQThCO0FBQzlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFTbkQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFNBQVM7SUFPcEQsWUFDUyxnQkFBbUMsRUFDbEMsV0FBd0I7UUFFaEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFIakIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUozQixtQkFBYyxHQUFHLEtBQUssQ0FBQztJQU85QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxRQUFRLENB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LENBQUMsQ0FBQztJQUM5QyxDQUFDOztvSEFoR1UsdUJBQXVCO3dHQUF2Qix1QkFBdUIsME1BQ0gsZ0JBQWdCLHNEQUNwQyxlQUFlLHVFQ3hCNUIsNHlFQTBDQTsyRkRwQmEsdUJBQXVCO2tCQU5uQyxTQUFTOytCQUNFLHFCQUFxQjtrSUFNb0IsUUFBUTtzQkFBMUQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2QsTUFBTTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQXlEMUIsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBmaWx0ZXIsIGludGVydmFsLCB0YXAsIGZpcnN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRHJhd2VyQ29tcG9uZW50IH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWxheW91dFwiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBGaWVsZEJhc2UgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBNYWluU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9tYWluLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudEhlbHBlciB9IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtemdyaWQtY29udGFpbmVyXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96Z3JpZC1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vemdyaWQtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFpncmlkQ29udGFpbmVyQ29tcG9uZW50IGV4dGVuZHMgRmllbGRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1QYWdlJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGZvcm1QYWdlO1xyXG4gIEBWaWV3Q2hpbGQoRHJhd2VyQ29tcG9uZW50KSBwdWJsaWMgZHJhd2VyOiBEcmF3ZXJDb21wb25lbnQ7XHJcblxyXG4gIHB1YmxpYyBpbm5lcldpZHRoOiBhbnk7XHJcbiAgcHVibGljIGlzU2hvd0Zvcm1QYWdlID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYWluU2VydmljZTogTWFpblNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkNvbXBvbmVudFN0eWxlVHlwZSA9PT0gYHN0eWxlJHsyfWApIHtcclxuICAgICAgdGhpcy5zZXR1cFN0eWxlMigpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5kYXRhLkNvbXBvbmVudFN0eWxlVHlwZSA9PT0gYHN0eWxlJHszfWApIHtcclxuICAgICAgdGhpcy5zZXR1cFN0eWxlMygpO1xyXG4gICAgfVxyXG4gICAgc3VwZXIuaW5pdENvbXBvbmVudCgpLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gSGVscGVyIEZ1bmN0aW9uc1xyXG4gIHByaXZhdGUgZGlzcGxheUZvcm1QYWdlKCkge1xyXG4gICAgY29uc3QgcGFnZUVsZW1lbnQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhWydDb250YWluZXJGb3JtJ10sIHRoaXMuZ3JvdXApO1xyXG4gICAgdGhpcy5tYWluU2VydmljZS5sb2FkQ29udGFpbmVyVmlldyh7IHZpZXdDb250YWluZXJSZWY6IHRoaXMuZm9ybVBhZ2UgfSwgcGFnZUVsZW1lbnQsIHRoaXMuZGF0YSwgdGhpcy5ncm91cCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gU3R5bGUgMzogREVDXHJcbiAgcHJpdmF0ZSBzZXR1cFN0eWxlMygpIHtcclxuICAgIHRoaXMuZ3JvdXBbYGUxQ2xvc2VHcmlkQ29udGFpbmVyYF0gPSB0aGlzLnRvZ2dsZUZvcm1QYWdlLmJpbmQodGhpcywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZUZvcm1QYWdlKGlzU2hvdz86IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNTaG93Rm9ybVBhZ2UgPSBpc1Nob3c7XHJcbiAgICBpZiAoaXNTaG93KSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUZvcm1QYWdlKCk7XHJcbiAgICAgIHRoaXMubWFpblNlcnZpY2Uuc2Nyb2xsVG9FbWJiZWRDb21wb25lbnRQYWdlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5Db250YWluZXJGb3JtQXV0b1Njcm9sbCkge1xyXG4gICAgICAgIHRoaXMubWFpblNlcnZpY2Uuc2Nyb2xsVG9Ub3BPZlBhZ2UoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm1QYWdlLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gU3RseWUgMjogRHJhd2VyXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25SZXNpemUoZXZlbnQpIHtcclxuICAgIHRoaXMuc2V0RHJhd2VyV2lkdGgoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBTdHlsZTIoKSB7XHJcbiAgICB0aGlzLnNldERyYXdlcldpZHRoKCk7XHJcbiAgICB0aGlzLmdyb3VwW2BlMUNsb3NlR3JpZENvbnRhaW5lcmBdID0gdGhpcy50b2dnbGVEcmF3ZXIuYmluZCh0aGlzLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZURyYXdlcigpIHtcclxuICAgIHRoaXMuZHJhd2VyLnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRXhwYW5kQ2hhbmdlKGlzRXhwYW5kZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNTaG93Rm9ybVBhZ2UgPSBpc0V4cGFuZGVkO1xyXG4gICAgaWYgKGlzRXhwYW5kZWQpIHtcclxuICAgICAgdGhpcy5zZXR1cERyYXdlckNvbnRlbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBEcmF3ZXJDb250ZW50KCkge1xyXG4gICAgLy8gTmVlZCB0byB3YWl0IGZvciBmb3JtIHBhZ2UgdG8gcmVuZGVyIGluIERPTVxyXG4gICAgaWYgKHRoaXMuZGF0YVsnQ29udGFpbmVyRm9ybSddKSB7XHJcbiAgICAgIGludGVydmFsKDUwMCkucGlwZShcclxuICAgICAgICBmaWx0ZXIoeCA9PlxyXG4gICAgICAgICAgdGhpcy5mb3JtUGFnZVxyXG4gICAgICAgICksXHJcbiAgICAgICAgZmlyc3QoKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5Rm9ybVBhZ2UoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREcmF3ZXJXaWR0aCgpIHtcclxuICAgIHRoaXMuaW5uZXJXaWR0aCA9ICh3aW5kb3cuaW5uZXJXaWR0aCAqIDAuOCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJncmlkLWNvbnRhaW5lclwiICpuZ0lmPVwiZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgPT09ICdzdHlsZTInXCI+XHJcbiAgPGtlbmRvLWRyYXdlci1jb250YWluZXIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGVcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZVwiPlxyXG4gICAgPGtlbmRvLWRyYXdlciAjZHJhd2VyIG1vZGU9XCJvdmVybGF5XCIgW3Bvc2l0aW9uXT1cIidlbmQnXCIgW21pbmldPVwiZmFsc2VcIiBbYW5pbWF0aW9uXT1cIntkdXJhdGlvbjogODAwfVwiIFtleHBhbmRlZF09XCJpc1Nob3dGb3JtUGFnZVwiXHJcbiAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlMVwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlMVwiIFt3aWR0aF09XCJpbm5lcldpZHRoXCJcclxuICAgICAgKGV4cGFuZGVkQ2hhbmdlKT1cIm9uRXhwYW5kQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvRHJhd2VyVGVtcGxhdGU+XHJcbiAgICAgICAgPGRpdiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTJcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtSGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm1IZWFkZXItdGl0bGVcIj5FbXBsb3llZSBQcm9maWxlPC9sYWJlbD5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2l6ZT1cInNtYWxsXCIgZmlsbD1cImNsZWFyXCIgY29sb3I9XCJtZWRpdW1cIiAoY2xpY2spPVwiZHJhd2VyLnRvZ2dsZSgpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJjbG9zZS1idG4taWNvblwiIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICNmb3JtUGFnZT48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwva2VuZG8tZHJhd2VyPlxyXG5cclxuICAgIDxrZW5kby1kcmF3ZXItY29udGVudCBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTNcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTNcIj5cclxuICAgICAgPGFwcC16Z3JpZCBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTRcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTRcIiBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgICBbZ3JvdXBdPVwiZ3JvdXBcIiBbZm9ybV09XCJmb3JtXCIgW2NvbnRhaW5lckZpZWxkXT1cImNvbnRhaW5lckZpZWxkXCIgW2NvbXBvbmVudFByb3BlcnRpZXNdPVwiY29tcG9uZW50UHJvcGVydGllc1wiXHJcbiAgICAgICAgKHNob3dGb3JtUGFnZSk9XCJkcmF3ZXIudG9nZ2xlKCRldmVudClcIj5cclxuICAgICAgPC9hcHAtemdyaWQ+XHJcbiAgICA8L2tlbmRvLWRyYXdlci1jb250ZW50PlxyXG4gIDwva2VuZG8tZHJhd2VyLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG5cclxuPGRpdiBjbGFzcz1cImdyaWQtY29udGFpbmVyXCIgKm5nSWY9XCJkYXRhLkNvbXBvbmVudFN0eWxlVHlwZSAhPT0gJ3N0eWxlMidcIj5cclxuICA8YXBwLXpncmlkIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlNFwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlNFwiIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgW2dyb3VwXT1cImdyb3VwXCIgW2Zvcm1dPVwiZm9ybVwiIFtjb250YWluZXJGaWVsZF09XCJjb250YWluZXJGaWVsZFwiIFtjb21wb25lbnRQcm9wZXJ0aWVzXT1cImNvbXBvbmVudFByb3BlcnRpZXNcIlxyXG4gICAgKHNob3dGb3JtUGFnZSk9XCJ0b2dnbGVGb3JtUGFnZSgkZXZlbnQpXCI+XHJcbiAgPC9hcHAtemdyaWQ+XHJcbiAgPGRpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhZ3JvdXAuaXNMb2FkaW5nXCIgW2NsYXNzLmVtYmVkZGVkRm9ybVBhZ2VdPVwiaXNTaG93Rm9ybVBhZ2VcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAjZm9ybVBhZ2U+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJncm91cC5pc0xvYWRpbmdcIiBjbGFzcz1cInNwaW5uZXItY29udGFpbmVyXCI+XHJcbiAgICAgIDxhcHAtcGFnZS1sb2FkZXI+PC9hcHAtcGFnZS1sb2FkZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -118,37 +118,44 @@ export class ZGridBindingDirective extends DataBindingDirective {
|
|
|
118
118
|
}
|
|
119
119
|
generateGridColumns() {
|
|
120
120
|
const columnFields$ = ZComponentHelper.getGroupValue(this.field.ColumnFields, this.grp);
|
|
121
|
-
columnFields
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
this.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
121
|
+
if (columnFields$) {
|
|
122
|
+
columnFields$.pipe(tap((data) => {
|
|
123
|
+
const gridSetting = this.getGridSettings();
|
|
124
|
+
ZComponentHelper.getGridColumns(data, this.gridColumns, this.zgridbinding.group, gridSetting, this.usableColumns);
|
|
125
|
+
this.getFilterParamsColumns();
|
|
126
|
+
this.getFilter();
|
|
127
|
+
this.getFilterParams();
|
|
128
|
+
this.getSorting();
|
|
129
|
+
this.getGrantType();
|
|
130
|
+
this.setHiddenColumn(gridSetting);
|
|
131
|
+
this.params.referId = this.getFieldReferenceId() || this.grp.referenceId || null;
|
|
132
|
+
// }),
|
|
133
|
+
// switchMap(() => {
|
|
134
|
+
// //Get Session
|
|
135
|
+
// return this.getGridSessionFilter(this.grp, this);
|
|
136
|
+
// }),
|
|
137
|
+
// switchMap(() => {
|
|
138
|
+
// //Before get grid data
|
|
139
|
+
// return this.beforeGridGetData(this.grp, this);
|
|
140
|
+
// }),
|
|
141
|
+
// switchMap(() => {
|
|
142
|
+
// //Set grid data
|
|
143
|
+
// return this.setGridSessionFilter(this.grp, this);
|
|
144
|
+
})).subscribe(() => {
|
|
145
|
+
if (this.field['SkipLoadResourceURLData']) {
|
|
146
|
+
this.grid.loading = false;
|
|
147
|
+
this.gridSubject.next(this);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.getDataBinding();
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
console.log('Fail to generate grid column fields.');
|
|
156
|
+
console.log(this.field.ColumnFields);
|
|
157
|
+
console.log(this.grp);
|
|
158
|
+
}
|
|
152
159
|
}
|
|
153
160
|
setSkipLoadResourceURLData(settingValue) {
|
|
154
161
|
this.field['SkipLoadResourceURLData'] = !settingValue;
|
|
@@ -545,4 +552,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
545
552
|
}] }, { type: i1.WebApiService }, { type: i1.ToastService }, { type: i1.AuthService }, { type: i1.StorageSessionService }, { type: i2.Router }, { type: i1.ZGridStatePersistingService }]; }, propDecorators: { zgridbinding: [{
|
|
546
553
|
type: Input
|
|
547
554
|
}] } });
|
|
548
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQuYmluZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96Z3JpZC96Z3JpZC5iaW5kaW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU01RSxPQUFPLEVBQTRCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGFBQWEsR0FHZCxNQUFNLDhCQUE4QixDQUFDO0FBT3RDLDJDQUEyQztBQUMzQyxPQUFPLEVBRUwsZ0JBQWdCLEVBRWpCLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNekIsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQTRDN0QsWUFDeUIsSUFBSSxFQUNuQixhQUE0QixFQUM1QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixjQUFxQyxFQUNyQyxNQUFjLEVBQ2QsMkJBQXdEO1FBRWhFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVBKLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQTFDbEUsVUFBSyxHQUFVO1lBQ2IsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7UUFFRixnQkFBVyxHQUFVLEVBQUUsQ0FBQztR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Q0FBQyxlQUFlLEVBQUUsRUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FDbkIsQ0FBQztJQUNKLENBQUM7O2tIQWhwQlUscUJBQXFCLGtCQTZDdEIsYUFBYTtzR0E3Q1oscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQThDSSxNQUFNOzJCQUFDLGFBQWE7Z09BM0NkLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge1xyXG4gIERhdGFCaW5kaW5nRGlyZWN0aXZlLFxyXG4gIEdyaWRDb21wb25lbnQsXHJcbiAgRGF0YVN0YXRlQ2hhbmdlRXZlbnQsXHJcbiAgUGFnZUNoYW5nZUV2ZW50LFxyXG59IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1ncmlkXCI7XHJcbmltcG9ydCB7XHJcbiAgU29ydERlc2NyaXB0b3IsXHJcbiAgU3RhdGUsXHJcbiAgRmlsdGVyRGVzY3JpcHRvcixcclxufSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWRhdGEtcXVlcnlcIjtcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHtcclxuICBBdXRoU2VydmljZSwgR3JpZENhY2hpbmcsIFdlYkFwaVNlcnZpY2UsXHJcbiAgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkLCBaR3JpZFBvc3RBcGlQYXJhbXMsIFpHcmlkQ29sdW1uU2V0dGluZ3MsXHJcbiAgWkdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlLCBaR3JvdXAsIFN0b3JhZ2VTZXNzaW9uU2VydmljZSwgVG9hc3RTZXJ2aWNlXHJcbn0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIlt6Z3JpZGJpbmRpbmddXCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaR3JpZEJpbmRpbmdEaXJlY3RpdmUgZXh0ZW5kcyBEYXRhQmluZGluZ0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHNlcnZpY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBASW5wdXQoKSB6Z3JpZGJpbmRpbmc6IHtcclxuICAgIGRhdGE6IFpGaWVsZDtcclxuICAgIGdyb3VwOiBaR3JvdXA7XHJcbiAgICBwYXJhbXM6IFpHcmlkUG9zdEFwaVBhcmFtcztcclxuICAgIGdyaWRTdWJqZWN0OiBTdWJqZWN0PGFueT47XHJcbiAgfTtcclxuXHJcbiAgc3RhdGU6IFN0YXRlID0ge1xyXG4gICAgc2tpcDogMCxcclxuICAgIHRha2U6IDEwLFxyXG4gIH07XHJcblxyXG4gIGdyaWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICB1c2FibGVDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICByZXNvdXJjZVVSTCA9IG51bGw7XHJcblxyXG4gIHBhZ2luYXRpb25BcGlQb3N0VXJsID0gbnVsbDtcclxuXHJcbiAgZGF0YVNvdXJjZSA9IG51bGw7XHJcblxyXG4gIGdldCBmaWVsZCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5kYXRhO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdycCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5ncm91cDtcclxuICB9XHJcblxyXG4gIGdldCBncmlkU3ViamVjdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5ncmlkU3ViamVjdDtcclxuICB9XHJcblxyXG4gIGdldCBwYXJhbXMoKTogWkdyaWRQb3N0QXBpUGFyYW1zIHtcclxuICAgIHJldHVybiB0aGlzLnpncmlkYmluZGluZy5wYXJhbXM7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0RGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdyaWQuZGF0YTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChHcmlkQ29tcG9uZW50KSBncmlkLFxyXG4gICAgcHJpdmF0ZSB3ZWJhcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgekdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlOiBaR3JpZFN0YXRlUGVyc2lzdGluZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGdyaWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnN0YXRlLnRha2UgPSB0aGlzLmZpZWxkLlBhZ2VTaXplIHx8IDIwO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuc3RhdGUudGFrZTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZmllbGQuRGF0YVNvdXJjZSA/IHRoaXMuZmllbGQuRGF0YVNvdXJjZSA6IG51bGw7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5yZXNvdXJjZVVSTCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLlJlc291cmNlVVJMLFxyXG4gICAgICAgIHRoaXMuZ3JwXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcIkF0IHpncmlkLmNvbXBvbmVudCAoT25Jbml0KSByZXNvdXJjZVVSTDogXCIsIHJlc291cmNlVVJMKTtcclxuICAgICAgaWYgKCF0aGlzLnJlc291cmNlVVJMKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy56Z3JpZGJpbmRpbmcuZGF0YS5OYW1lICE9PSBcIkFjdGl2aXR5TG9nR3JpZFwiKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgIFwiTm8gaW5pdGlhbGlzZSBmb3IgRmllbGQuUmVzb3VyY2VVUkw6IFwiLFxyXG4gICAgICAgICAgICB0aGlzLmZpZWxkLlJlc291cmNlVVJMXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFycmF5ID0gdGhpcy5yZXNvdXJjZVVSTC5zcGxpdChcIi9hcGkvXCIpO1xyXG4gICAgICBpZiAoISFhcnJheVsxXSkge1xyXG4gICAgICAgIGFycmF5WzFdID0gXCJQYWdlXCIgKyBhcnJheVsxXTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25BcGlQb3N0VXJsID0gYXJyYXkuam9pbihcIi9hcGkvXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGFyciA9IHRoaXMucmVzb3VyY2VVUkwuc3BsaXQoXCIvXCIpO1xyXG4gICAgICAgIGFyclthcnIubGVuZ3RoIC0gMl0gPSBcIlBhZ2VcIiArIGFyclthcnIubGVuZ3RoIC0gMl07XHJcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uQXBpUG9zdFVybCA9IGFyci5qb2luKFwiL1wiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRGaWx0ZXJQYXJhbXNCeVBhcmVudFJlZklkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5ncmlkU3ViamVjdC5uZXh0KHRoaXMpO1xyXG4gICAgaWYgKHRoaXMuZmllbGRbJ0Rpc2FibGVHZW5lcmF0ZUNvbHVtbkJ5Rm9ybSddKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbkZpZWxkcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmZpZWxkLkNvbHVtbkZpZWxkcywgdGhpcy5ncnApO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW5GaWVsZHMpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRDb2x1bW5zKGNvbHVtbkZpZWxkcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmZpZWxkWydTa2lwTG9hZFJlc291cmNlVVJMRGF0YSddKSB7XHJcbiAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmdyaWRTdWJqZWN0Lm5leHQodGhpcyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZW5lcmF0ZUdyaWRDb2x1bW5zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpbHRlclBhcmFtc0J5UGFyZW50UmVmSWQoKSB7XHJcbiAgICAvLyBVc2UgZmllbGQgb3duIHJlZmVyZW5jZUlkIGlmIGF2YWlsYWJsZVxyXG4gICAgY29uc3QgcmVmSWQgPSB0aGlzLmdldEZpZWxkUmVmZXJlbmNlSWQoKSB8fCB0aGlzLmdycC5yZWZlcmVuY2VJZDtcclxuICAgIGNvbnN0IHJlZkZpZWxkID0gdGhpcy5maWVsZC5SZWZlcmVuY2VGaWVsZCB8fCB0aGlzLmdycC5wYXJlbnRSZWZlcmVuY2VGaWVsZDtcclxuICAgIGlmIChyZWZJZCAmJiByZWZGaWVsZCkge1xyXG4gICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHtcclxuICAgICAgICBrZXk6IHJlZkZpZWxkLFxyXG4gICAgICAgIG9wczogXCI9XCIsXHJcbiAgICAgICAgdmFsdWU6IHJlZklkLFxyXG4gICAgICB9O1xyXG4gICAgICAvLyBpZiAodGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLmZpbmQoeCA9PiB4LmtleSA9PT0gZmlsdGVyVmFsdWUua2V5KSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmZpbHRlclBhcmFtcy5wdXNoKGZpbHRlclZhbHVlKTtcclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWVsZFJlZmVyZW5jZUlkKCkge1xyXG4gICAgbGV0IGZpZWxkUmVmZXJlbmNlSWQgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuZmllbGQuUmVmZXJlbmNlSWQpIHtcclxuICAgICAgZmllbGRSZWZlcmVuY2VJZCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLlJlZmVyZW5jZUlkLFxyXG4gICAgICAgIHRoaXMuZ3JwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGRSZWZlcmVuY2VJZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlcnZpY2VTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlR3JpZENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCBjb2x1bW5GaWVsZHMkOiBPYnNlcnZhYmxlPGFueT4gPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoXHJcbiAgICAgIHRoaXMuZmllbGQuQ29sdW1uRmllbGRzLFxyXG4gICAgICB0aGlzLmdycFxyXG4gICAgKTtcclxuICAgIGNvbHVtbkZpZWxkcyQucGlwZShcclxuICAgICAgdGFwKChkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ3JpZFNldHRpbmcgPSB0aGlzLmdldEdyaWRTZXR0aW5ncygpO1xyXG5cclxuICAgICAgICBaQ29tcG9uZW50SGVscGVyLmdldEdyaWRDb2x1bW5zKFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHRoaXMuZ3JpZENvbHVtbnMsXHJcbiAgICAgICAgICB0aGlzLnpncmlkYmluZGluZy5ncm91cCxcclxuICAgICAgICAgIGdyaWRTZXR0aW5nLFxyXG4gICAgICAgICAgdGhpcy51c2FibGVDb2x1bW5zXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmdldEZpbHRlclBhcmFtc0NvbHVtbnMoKTtcclxuICAgICAgICB0aGlzLmdldEZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMuZ2V0RmlsdGVyUGFyYW1zKCk7XHJcbiAgICAgICAgdGhpcy5nZXRTb3J0aW5nKCk7XHJcbiAgICAgICAgdGhpcy5nZXRHcmFudFR5cGUoKTtcclxuICAgICAgICB0aGlzLnNldEhpZGRlbkNvbHVtbihncmlkU2V0dGluZyk7XHJcblxyXG4gICAgICAgIHRoaXMucGFyYW1zLnJlZmVySWQgPSB0aGlzLmdldEZpZWxkUmVmZXJlbmNlSWQoKSB8fCB0aGlzLmdycC5yZWZlcmVuY2VJZCB8fCBudWxsO1xyXG4gICAgICAgIC8vIH0pLFxyXG4gICAgICAgIC8vIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgLy8gICAvL0dldCBTZXNzaW9uXHJcbiAgICAgICAgLy8gICByZXR1cm4gdGhpcy5nZXRHcmlkU2Vzc2lvbkZpbHRlcih0aGlzLmdycCwgdGhpcyk7XHJcbiAgICAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAvLyAgICAvL0JlZm9yZSBnZXQgZ3JpZCBkYXRhXHJcbiAgICAgICAgLy8gICByZXR1cm4gdGhpcy5iZWZvcmVHcmlkR2V0RGF0YSh0aGlzLmdycCwgdGhpcyk7XHJcbiAgICAgICAgLy8gfSksXHJcbiAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAvLyAgIC8vU2V0IGdyaWQgZGF0YVxyXG4gICAgICAgIC8vICAgcmV0dXJuIHRoaXMuc2V0R3JpZFNlc3Npb25GaWx0ZXIodGhpcy5ncnAsIHRoaXMpO1xyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5maWVsZFsnU2tpcExvYWRSZXNvdXJjZVVSTERhdGEnXSkge1xyXG4gICAgICAgIHRoaXMuZ3JpZC5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ncmlkU3ViamVjdC5uZXh0KHRoaXMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YUJpbmRpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2tpcExvYWRSZXNvdXJjZVVSTERhdGEoc2V0dGluZ1ZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmZpZWxkWydTa2lwTG9hZFJlc291cmNlVVJMRGF0YSddID0gIXNldHRpbmdWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb2x1bW5OYW1lKGNvbFZhbHVlOiBzdHJpbmcsIGNvbE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5ncmlkQ29sdW1ucy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQuVmFsdWUgPT0gY29sVmFsdWUpIHtcclxuICAgICAgICBmaWVsZC50aXRsZSA9IGNvbE5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29sdW1uVmlzaWJsZShjb2xWYWx1ZTogc3RyaW5nLCBjb25maWc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZ3JpZENvbHVtbnMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgaWYgKGZpZWxkLlZhbHVlID09IGNvbFZhbHVlKSB7XHJcbiAgICAgICAgZmllbGQuaGlkZGVuID0gIWNvbmZpZztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyUGFyYW1zQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGNvbEZpZWxkczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gICAgdGhpcy5ncmlkQ29sdW1ucy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudmFsdWVFeHByKSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goZmllbGQudmFsdWVFeHByICsgXCIgYXMgXCIgKyBmaWVsZC5maWVsZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goZmllbGQuZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sRmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKGNvbEZpZWxkcy5pbmRleE9mKFwiSWRcIikgPT09IC0xKSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goXCJJZFwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB0bXBHcmlkQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgdG1wR3JpZENvbHVtbi5wdXNoKGNvbEZpZWxkcy5qb2luKFwiLFwiKSk7XHJcbiAgICBpZiAodGhpcy51c2FibGVDb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdG1wR3JpZENvbHVtbi5wdXNoKHRoaXMudXNhYmxlQ29sdW1ucy5qb2luKFwiLFwiKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhcmFtcy5jb2x1bW5zID0gdG1wR3JpZENvbHVtbi5qb2luKFwiLFwiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zLmZpbHRlcnMgJiYgdGhpcy5maWVsZC5GaWx0ZXJzKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmZpbHRlcnMgPSB0aGlzLnBhcmFtcy5maWx0ZXJzICsgXCIgJiYgXCIgKyB0aGlzLmZpZWxkLkZpbHRlcnM7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBhcmFtcy5maWx0ZXJzICYmIHRoaXMuZmllbGQuRmlsdGVycykge1xyXG4gICAgICB0aGlzLnBhcmFtcy5maWx0ZXJzID0gdGhpcy5maWVsZC5GaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkZpbHRlcnMgJiYgdGhpcy5maWVsZC5GaWx0ZXJzLmluZGV4T2YoXCJncm91cC5cIikgIT09IC0xKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcktleVZhbFBhaXJzID0gdGhpcy5maWVsZC5GaWx0ZXJzLnNwbGl0KFwiIFwiKTtcclxuICAgICAgY29uc3QgZ3JwVmFsdWVzID0gZmlsdGVyS2V5VmFsUGFpcnMuZmlsdGVyKFxyXG4gICAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50LnRyaW0oKS5pbmRleE9mKFwiZ3JvdXAuXCIpICE9PSAtMVxyXG4gICAgICApO1xyXG5cclxuICAgICAgZ3JwVmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFjdHVhbFZhbCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh2YWwsIHRoaXMuZ3JwKTtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJzID0gdGhpcy5wYXJhbXMuZmlsdGVycy5yZXBsYWNlKHZhbCwgYWN0dWFsVmFsKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlclBhcmFtcygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkWydGaWx0ZXJQYXJhbXMnXSkge1xyXG4gICAgICBpZiAodGhpcy5maWVsZFsnRmlsdGVyUGFyYW1zJ10uaW5kZXhPZihcImdyb3VwLlwiKSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5maWVsZFsnRmlsdGVyUGFyYW1zJ10sIHRoaXMuZ3JwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMgPSB0aGlzLmZpZWxkWydGaWx0ZXJQYXJhbXMnXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTb3J0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQuU29ydE9yZGVyKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLlNvcnRPcmRlci5pbmRleE9mKFwiZ3JvdXAuXCIpICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnNvcnRPcmRlciA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmZpZWxkLlNvcnRPcmRlciwgdGhpcy5ncnApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnNvcnRPcmRlciA9IHRoaXMuZmllbGQuU29ydE9yZGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyYW50VHlwZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkdyYW50VHlwZSkge1xyXG4gICAgICB0aGlzLnBhcmFtcy5ncmFudFR5cGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5maWVsZC5HcmFudFR5cGUudG9TdHJpbmcoKSwgdGhpcy5ncnApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRIaWRkZW5Db2x1bW4oZ3JpZFNldHRpbmc6IFpHcmlkQ29sdW1uU2V0dGluZ3NbXSkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtbnMgJiYgZ3JpZFNldHRpbmcpIHtcclxuICAgICAgLy8gZmlsdGVyIG91dCBoaWRkZW4gPT0gZmFsc2UgYXJyYXkuXHJcbiAgICAgIGNvbnN0IGdyaWRTZXR0aW5nSGlkZGVuQ29sID0gZ3JpZFNldHRpbmcuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2hpZGRlbiddID09IHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gZmluZCBhbmQgc2V0IHRoZSBoaWRkZW4gdG8gY3VycmVudCBjb2x1bW4gc2V0dGluZy5cclxuICAgICAgT2JqZWN0LnZhbHVlcyhncmlkU2V0dGluZ0hpZGRlbkNvbCkuZm9yRWFjaCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoYykgPT4gYy5maWVsZCA9PT0gdmFsdWUuZmllbGQpKSB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRDb2x1bW5zLmZpbmQoKGMpID0+IGMuZmllbGQgPT09IHZhbHVlLmZpZWxkKVsnaGlkZGVuJ10gPSB2YWx1ZVsnaGlkZGVuJ107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgZ2V0RGF0YUJpbmRpbmcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5wYXJhbXMucGFnZVNpemUgPSB0aGlzLnN0YXRlLnRha2U7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkV4dGVybmFsUGFnaW5hdGlvbikge1xyXG4gICAgICAgIC8vIEZvciBQT1NUIG1ldGhvZCBQYWdlIFdlYkFQSVxyXG4gICAgICAgIHRoaXMud2ViYXBpU2VydmljZVxyXG4gICAgICAgICAgLnBvc3RBcGkoXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkFwaVBvc3RVcmwsXHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKGRhdGEpID0+IHRoaXMuaGFuZGxlR2V0RGF0YUJpbmRpbmdDb21wbGV0ZShkYXRhKSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KFwiRXJyb3Igb2NjdXIgaW4gbG9hZGluZyB0aGUgZGF0YVwiLCBcIm1pZGRsZVwiLCBmYWxzZSwgMTUwMCwgXCJkYW5nZXJcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gRm9yIEdFVCBtZXRob2RcclxuICAgICAgICB0aGlzLndlYmFwaVNlcnZpY2VcclxuICAgICAgICAgIC5nZXRBcGkodGhpcy5yZXNvdXJjZVVSTCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgbGV0IF9kYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgbGV0IF90b3RhbENvdW50ID0gMDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkYXRhLmRhdGFTZXQpIHtcclxuICAgICAgICAgICAgICBfZGF0YSA9IGRhdGEuZGF0YVNldDtcclxuICAgICAgICAgICAgICBfdG90YWxDb3VudCA9IGRhdGEudG90YWxDb3VudDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBfZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgX3RvdGFsQ291bnQgPSBkYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVHZXREYXRhQmluZGluZ0NvbXBsZXRlKHsgZGF0YVNldDogX2RhdGEsIHRvdGFsQ291bnQ6IF90b3RhbENvdW50IH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBkcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFTb3VyY2UsXHJcbiAgICAgICAgdGhpcy5ncnBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZGF0YSA9IGRzO1xyXG4gICAgICB0aGlzLmdyaWQubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmdyaWRTdWJqZWN0Lm5leHQodGhpcyk7XHJcbiAgICAgIHRoaXMubm90aWZ5RGF0YUNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVHZXREYXRhQmluZGluZ0NvbXBsZXRlKGRhdGEpIHtcclxuICAgIHRoaXMuYWdncmVnYXRlSGFuZGxpbmcoZGF0YS5kYXRhU2V0KTtcclxuICAgIHRoaXMuZ3JpZC5kYXRhID0geyBkYXRhOiBkYXRhLmRhdGFTZXQsIHRvdGFsOiBkYXRhLnRvdGFsQ291bnQgfTtcclxuICAgIHRoaXMuZ3JpZC5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmFmdGVyRGF0YUJpbmRlZChkYXRhKTtcclxuICAgIHRoaXMuZ3JpZFN1YmplY3QubmV4dCh0aGlzKTtcclxuICAgIHRoaXMubm90aWZ5RGF0YUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZnRlckRhdGFCaW5kZWQoZGF0YSkge1xyXG4gICAgLy8gYWxsb3cgdG8gY2FsbCBiYWNrIHByb2plY3QgcGFnZSBhZnRlciBkYXRhIGJpbmRlZC5cclxuICAgIGxldCBiaW5kZWRWYWx1ZSA9IHRoaXMuemdyaWRiaW5kaW5nLmRhdGFbJ0FmdGVyRGF0YUJpbmRlZCddO1xyXG4gICAgaWYgKGJpbmRlZFZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IG1lID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcyk7XHJcbiAgICAgIGxldCBjYWxsRnVuYztcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gYmluZGVkVmFsdWUubWF0Y2goL1xcYlxcKC4qL2dpKTtcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICBiaW5kZWRWYWx1ZSA9IGJpbmRlZFZhbHVlLnJlcGxhY2UocGFyYW1zWzBdLCBcIlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYmluZGVkVmFsdWUgPSBiaW5kZWRWYWx1ZS5yZXBsYWNlKCdtb2RhbEdyb3VwLicsICdncm91cC4nKTtcclxuICAgICAgICBjYWxsRnVuYyA9IGV2YWwoJ21lLnpncmlkYmluZGluZy4nICsgYmluZGVkVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIFwiRXJyb3Igd2hlbiBnZXRHcm91cFZhbHVlOiBcIixcclxuICAgICAgICAgIGV2ZW50LnRhcmdldCxcclxuICAgICAgICAgIFwiID4gRXJyb3I6IFwiLFxyXG4gICAgICAgICAgZXJyb3JcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIGNhbGxGdW5jID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZChtZSk7XHJcbiAgICAgICAgbmV3RnVuYyhldmVudCwgbWUuemdyaWRiaW5kaW5nLmRhdGEsIGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJEYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncmlkLmRhdGEgPSB7IGRhdGE6IFtdLCB0b3RhbDogMCB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZ2dyZWdhdGVIYW5kbGluZyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGFnZ3JlZ2F0ZUNvbHVtbnMgPSB0aGlzLmdyaWRDb2x1bW5zLmZpbHRlcih4ID0+IHguYWdncmVnYXRlVHlwZSk7XHJcblxyXG4gICAgYWdncmVnYXRlQ29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbnN0IGZpZWxkID0gY29sLmZpZWxkO1xyXG5cclxuICAgICAgbGV0IF9hZ2dyZWdhdGVWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHN3aXRjaCAoY29sLmFnZ3JlZ2F0ZVR5cGUuc2xpY2UoMCwgLTEpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlIFwidG90YWxcIjoge1xyXG4gICAgICAgICAgX2FnZ3JlZ2F0ZVZhbHVlID0gZGF0YS5yZWR1Y2UoKHRvdGFsLCBuZXh0KSA9PiB0b3RhbCArIG5leHRbZmllbGRdLCAwKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwic3VtXCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKCh0b3RhbCwgbmV4dCkgPT4gdG90YWwgKyBuZXh0W2ZpZWxkXSwgMCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBcImF2ZXJhZ2VcIjoge1xyXG4gICAgICAgICAgX2FnZ3JlZ2F0ZVZhbHVlID0gZGF0YS5yZWR1Y2UoKHRvdGFsLCBuZXh0KSA9PiB0b3RhbCArIG5leHRbZmllbGRdLCAwKSAvIGRhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgXCJjb3VudFwiOiB7XHJcbiAgICAgICAgICBfYWdncmVnYXRlVmFsdWUgPSBkYXRhLmxlbmd0aDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwibWF4XCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKChwLCBjKSA9PiBwW2ZpZWxkXSA+IGNbZmllbGRdID8gcCA6IGMpW2ZpZWxkXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwibWluXCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKChwLCBjKSA9PiBwW2ZpZWxkXSA8IGNbZmllbGRdID8gcCA6IGMpW2ZpZWxkXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29sLmFnZ3JlZ2F0ZVZhbHVlID0gX2FnZ3JlZ2F0ZVZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFnZ3JlZ2F0ZVJlc2V0VmFsdWUoKSB7XHJcbiAgICBjb25zdCBhZ2dyZWdhdGVDb2x1bW5zID0gdGhpcy5ncmlkQ29sdW1ucy5maWx0ZXIoeCA9PiB4LmFnZ3JlZ2F0ZVR5cGUpO1xyXG4gICAgYWdncmVnYXRlQ29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbC5hZ2dyZWdhdGVWYWx1ZSA9IDA7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudDogUGFnZUNoYW5nZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcy5wYWdlTm8gPSBldmVudC5za2lwIC8gdGhpcy5wYXJhbXMucGFnZVNpemU7XHJcbiAgICB0aGlzLnN0YXRlLnNraXAgPSBldmVudC5za2lwO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNvcnRDaGFuZ2Uoc29ydDogU29ydERlc2NyaXB0b3JbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0ID0gc29ydDtcclxuICAgIHRoaXMucGFyYW1zLnNvcnRDb2x1bW5OYW1lcyA9IFtdO1xyXG4gICAgdGhpcy5wYXJhbXMuc29ydE9yZGVycyA9IFtdO1xyXG5cclxuICAgIHNvcnQuZm9yRWFjaCgoZikgPT4ge1xyXG4gICAgICBpZiAoZi5kaXIpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5zb3J0T3JkZXJzLnB1c2goZi5kaXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoYykgPT4gYy5maWVsZCA9PT0gZi5maWVsZCk7XHJcbiAgICAgICAgaWYgKGZpZWxkLnZhbHVlRXhwciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcy5zb3J0Q29sdW1uTmFtZXMucHVzaChmaWVsZC52YWx1ZUV4cHIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcy5zb3J0Q29sdW1uTmFtZXMucHVzaChmLmZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlckNoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcy5wYWdlTm8gPSAwO1xyXG4gICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zID0gW107XHJcbiAgICB0aGlzLnNldEZpbHRlclBhcmFtc0J5UGFyZW50UmVmSWQoKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgaWYgKGV2ZW50LmZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGV2ZW50LmZpbHRlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdyaWRDb2x1bW5zLmZpbmQoKGMpID0+IGMuZmllbGQgPT09IGl0ZW0uZmllbGQpO1xyXG5cclxuICAgICAgICAgIGlmIChpdGVtLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgaXRlbS5maWx0ZXJzLmZvckVhY2goKGY6IEZpbHRlckRlc2NyaXB0b3IpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZi52YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZi52YWx1ZSA9IFwiXCI7IC8vIGNvbnZlcnQgbnVsbCB0byBcIlwiXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMucGFyYW1zLmZpbHRlclBhcmFtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleTogZi5maWVsZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBvcHM6IHRoaXMubWFwRmlsdGVyT3BlcmF0b3IoZi5vcGVyYXRvciksXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogZi52YWx1ZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gXCJcIjsgLy8gY29udmVydCBudWxsIHRvIFwiXCJcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLnpncmlkYmluZGluZy5kYXRhWydGaWx0ZXJXaXRob3V0QnJhY2tldCddID8gYCR7ZmllbGQudmFsdWVFeHByfWAgOiBgKCR7ZmllbGQudmFsdWVFeHByfSlgO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGtleTogZmllbGQudmFsdWVFeHByICE9PSB1bmRlZmluZWQgPyBmaWx0ZXJWYWx1ZSA6IGl0ZW0uZmllbGQsXHJcbiAgICAgICAgICAgICAgb3BzOiB0aGlzLm1hcEZpbHRlck9wZXJhdG9yKGl0ZW0ub3BlcmF0b3IpLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0R3JpZFNlc3Npb25GaWx0ZXIodGhpcy5ncnAsIHRoaXMpO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGF0YVN0YXRlQ2hhbmdlKHN0YXRlOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5zdGF0ZSA9IHN0YXRlO1xyXG4gICAgdGhpcy5za2lwID0gc3RhdGUuc2tpcDtcclxuICAgIHRoaXMucGFnZVNpemUgPSBzdGF0ZS50YWtlO1xyXG4gICAgdGhpcy5zdGF0ZS5za2lwID0gc3RhdGUuc2tpcDtcclxuICAgIHRoaXMuc3RhdGUudGFrZSA9IHN0YXRlLnRha2U7XHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZVJlc2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFwRmlsdGVyT3BlcmF0b3Iob3BlcmF0b3I6IGFueSkge1xyXG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xyXG4gICAgICBjYXNlIFwiZXFcIjpcclxuICAgICAgICByZXR1cm4gXCJlcVwiO1xyXG4gICAgICBjYXNlIFwibmVxXCI6XHJcbiAgICAgICAgcmV0dXJuIFwibmVxXCI7XHJcbiAgICAgIGNhc2UgXCJsdFwiOlxyXG4gICAgICAgIHJldHVybiBcImx0XCI7XHJcbiAgICAgIGNhc2UgXCJsdGVcIjpcclxuICAgICAgICByZXR1cm4gXCJsdGVcIjtcclxuICAgICAgY2FzZSBcImd0XCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZ3RcIjtcclxuICAgICAgY2FzZSBcImd0ZVwiOlxyXG4gICAgICAgIHJldHVybiBcImd0ZVwiO1xyXG4gICAgICBjYXNlIFwic3RhcnRzd2l0aFwiOlxyXG4gICAgICAgIHJldHVybiBcInN0YXJ0c3dpdGhcIjtcclxuICAgICAgY2FzZSBcImVuZHN3aXRoXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZW5kc3dpdGhcIjtcclxuICAgICAgY2FzZSBcImlzbnVsbFwiOlxyXG4gICAgICAgIHJldHVybiBcImlzbnVsbFwiO1xyXG4gICAgICBjYXNlIFwiaXNub3RudWxsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiaXNub3RudWxsXCI7XHJcbiAgICAgIGNhc2UgXCJjb250YWluc1wiOiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkWydGaWx0ZXJDb250YWluc1VzaW5nRXF1YWwnXSkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiY29udGFpbnNcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCI9PVwiO1xyXG4gICAgICAvLyBlcSwgbmVxLCBpc251bGwsIGlzbm90bnVsbCwgZW5kc3dpdGgsIHN0YXJ0c3dpdGhcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3JpZFNldHRpbmdzKCk6IFpHcmlkQ29sdW1uU2V0dGluZ3NbXSB7XHJcbiAgICBjb25zdCBfc3RvcmFnZUtleSA9ICdpb25pYy1maWVsZDo6JyArIHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbi51c2VyTmFtZSArICc6OicgKyB0aGlzLmZpZWxkLk5hbWUgKyAnOjonICsgdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgIC8vIEZpbmQgYW55IHNldHRpbmcgZnJvbSBsb2NhbHN0b3JhZ2UuLlxyXG4gICAgbGV0IF9hcnJHcmlkQ2FjaGluZzogR3JpZENhY2hpbmdbXSA9IHRoaXMuekdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlLmdldChfc3RvcmFnZUtleSk7XHJcbiAgICBpZiAoX2FyckdyaWRDYWNoaW5nKSB7XHJcbiAgICAgIGNvbnN0IF9ncmlkQ2FjaGluZzogR3JpZENhY2hpbmcgPSBKU09OLnBhcnNlKF9hcnJHcmlkQ2FjaGluZ1snVmFsdWUnXSk7XHJcbiAgICAgIGlmIChfZ3JpZENhY2hpbmcpIHtcclxuICAgICAgICByZXR1cm4gX2dyaWRDYWNoaW5nLmdyaWRTZXR0aW5ncy5jb2x1bW5zQ29uZmlnLnNvcnQoKGEsIGIpID0+IGEub3JkZXJJbmRleCAtIGIub3JkZXJJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBiZWZvcmVHcmlkR2V0RGF0YShncm91cDogWkdyb3VwLCBtZTogYW55KSB7XHJcbiAgICBjb25zb2xlLndhcm4oXCJiZWZvcmVEYXRhQmluZGluZyB0cmlnZ2VyZWRcIik7XHJcbiAgICBpZiAoIWdyb3VwLmJlZm9yZUdyaWRHZXREYXRhKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcImdyb3VwLmJlZm9yZURhdGFCaW5kaW5nIGlzIHVuZGVmaW5lZFwiKTtcclxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3VwLmJlZm9yZUdyaWRHZXREYXRhKGdyb3VwLCBtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyaWRTZXNzaW9uRmlsdGVyKGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFN0b3JhZ2VLZXkgPSBncm91cFtcIkdyaWRTdG9yYWdlS2V5XCJdO1xyXG5cclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgICAgb2YodHJ1ZSlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChTdG9yYWdlS2V5KTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGFwKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWRhdGEgfHwgIWRhdGEudmFsdWUgfHwgZGF0YS52YWx1ZSA9PT0gXCJudWxsXCIpIHtcclxuICAgICAgICAgICAgICBzdWJqZWN0Lm5leHQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKGRhdGEudmFsdWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmlsdGVyID0gSlNPTi5wYXJzZShyZXN1bHRbXCJTdGF0ZUZpbHRlclwiXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zID0gSlNPTi5wYXJzZShyZXN1bHRbXCJGaWx0ZXJQYXJhbXNcIl0pO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpbHRlci5maWx0ZXJzLmZvckVhY2goKGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGQuZmllbGQuaW5jbHVkZXMoJ1VUQycpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGQudmFsdWUgPSBuZXcgRGF0ZShkLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgc3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEdyaWRTZXNzaW9uRmlsdGVyKGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBTdG9yYWdlS2V5ID0gZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXTtcclxuXHJcbiAgICBpZiAobWUuc3RhdGUuZmlsdGVyICYmIHRoaXMuc3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5maWVsZFsnU2F2ZUZpbHRlciddKSB7XHJcbiAgICAgIC8vbGlzdCBvZiBkYXRhIGZvciBTdGF0ZUZpbHRlciBhbmQgRmlsdGVyUGFyYW1zXHJcbiAgICAgIGNvbnN0IGxzdEdyaWRGaWx0ZXIgPSB7IFwiU3RhdGVGaWx0ZXJcIjogSlNPTi5zdHJpbmdpZnkobWUuc3RhdGUuZmlsdGVyKSwgXCJGaWx0ZXJQYXJhbXNcIjogSlNPTi5zdHJpbmdpZnkobWUucGFyYW1zLmZpbHRlclBhcmFtcykgfVxyXG4gICAgICAvL2NyZWF0ZSBzZXNzaW9uIHN0b3JhZ2VcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkobHN0R3JpZEZpbHRlcikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbHVtbnMoY29sdW1uczogYW55W10pIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuZ2V0R3JpZENvbHVtbnMoXHJcbiAgICAgIGNvbHVtbnMsXHJcbiAgICAgIHRoaXMuZ3JpZENvbHVtbnMsXHJcbiAgICAgIHRoaXMuemdyaWRiaW5kaW5nLmdyb3VwLFxyXG4gICAgICB0aGlzLmdldEdyaWRTZXR0aW5ncygpLFxyXG4gICAgICB0aGlzLnVzYWJsZUNvbHVtbnNcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
555
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdyaWQuYmluZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96Z3JpZC96Z3JpZC5iaW5kaW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU01RSxPQUFPLEVBQTRCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGFBQWEsR0FHZCxNQUFNLDhCQUE4QixDQUFDO0FBT3RDLDJDQUEyQztBQUMzQyxPQUFPLEVBRUwsZ0JBQWdCLEVBRWpCLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNekIsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQTRDN0QsWUFDeUIsSUFBSSxFQUNuQixhQUE0QixFQUM1QixZQUEwQixFQUMxQixXQUF3QixFQUN4QixjQUFxQyxFQUNyQyxNQUFjLEVBQ2QsMkJBQXdEO1FBRWhFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQVBKLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQTFDbEUsVUFBSyxHQUFVO1lBQ2IsSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7UUFFRixnQkFBVyxHQUFVLEVBQUUsQ0FBQztR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eEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztTQUNwRTtJQUNILENBQUM7SUFFTSxVQUFVLENBQUMsT0FBYztRQUM5QixnQkFBZ0IsQ0FBQyxjQUFjLENBQzdCLE9BQU8sRUFDUCxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFDdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUN0QixJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFDO0lBQ0osQ0FBQzs7a0hBdnBCVSxxQkFBcUIsa0JBNkN0QixhQUFhO3NHQTdDWixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFIakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQjs7MEJBOENJLE1BQU07MkJBQUMsYUFBYTtnT0EzQ2QsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRhcCwgc3dpdGNoTWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7XHJcbiAgRGF0YUJpbmRpbmdEaXJlY3RpdmUsXHJcbiAgR3JpZENvbXBvbmVudCxcclxuICBEYXRhU3RhdGVDaGFuZ2VFdmVudCxcclxuICBQYWdlQ2hhbmdlRXZlbnQsXHJcbn0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWdyaWRcIjtcclxuaW1wb3J0IHtcclxuICBTb3J0RGVzY3JpcHRvcixcclxuICBTdGF0ZSxcclxuICBGaWx0ZXJEZXNjcmlwdG9yLFxyXG59IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tZGF0YS1xdWVyeVwiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIEF1dGhTZXJ2aWNlLCBHcmlkQ2FjaGluZywgV2ViQXBpU2VydmljZSxcclxuICBaQ29tcG9uZW50SGVscGVyLCBaRmllbGQsIFpHcmlkUG9zdEFwaVBhcmFtcywgWkdyaWRDb2x1bW5TZXR0aW5ncyxcclxuICBaR3JpZFN0YXRlUGVyc2lzdGluZ1NlcnZpY2UsIFpHcm91cCwgU3RvcmFnZVNlc3Npb25TZXJ2aWNlLCBUb2FzdFNlcnZpY2VcclxufSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcblxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6IFwiW3pncmlkYmluZGluZ11cIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFpHcmlkQmluZGluZ0RpcmVjdGl2ZSBleHRlbmRzIERhdGFCaW5kaW5nRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc2VydmljZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIEBJbnB1dCgpIHpncmlkYmluZGluZzoge1xyXG4gICAgZGF0YTogWkZpZWxkO1xyXG4gICAgZ3JvdXA6IFpHcm91cDtcclxuICAgIHBhcmFtczogWkdyaWRQb3N0QXBpUGFyYW1zO1xyXG4gICAgZ3JpZFN1YmplY3Q6IFN1YmplY3Q8YW55PjtcclxuICB9O1xyXG5cclxuICBzdGF0ZTogU3RhdGUgPSB7XHJcbiAgICBza2lwOiAwLFxyXG4gICAgdGFrZTogMTAsXHJcbiAgfTtcclxuXHJcbiAgZ3JpZENvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG4gIHVzYWJsZUNvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG4gIHJlc291cmNlVVJMID0gbnVsbDtcclxuXHJcbiAgcGFnaW5hdGlvbkFwaVBvc3RVcmwgPSBudWxsO1xyXG5cclxuICBkYXRhU291cmNlID0gbnVsbDtcclxuXHJcbiAgZ2V0IGZpZWxkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuemdyaWRiaW5kaW5nLmRhdGE7XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JwKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuemdyaWRiaW5kaW5nLmdyb3VwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdyaWRTdWJqZWN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuemdyaWRiaW5kaW5nLmdyaWRTdWJqZWN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBhcmFtcygpOiBaR3JpZFBvc3RBcGlQYXJhbXMge1xyXG4gICAgcmV0dXJuIHRoaXMuemdyaWRiaW5kaW5nLnBhcmFtcztcclxuICB9XHJcblxyXG4gIGdldCBnZXREYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JpZC5kYXRhO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KEdyaWRDb21wb25lbnQpIGdyaWQsXHJcbiAgICBwcml2YXRlIHdlYmFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSB6R3JpZFN0YXRlUGVyc2lzdGluZ1NlcnZpY2U6IFpHcmlkU3RhdGVQZXJzaXN0aW5nU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoZ3JpZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgIHRoaXMuZ3JpZC5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RhdGUudGFrZSA9IHRoaXMuZmllbGQuUGFnZVNpemUgfHwgMjA7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5zdGF0ZS50YWtlO1xyXG4gICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5maWVsZC5EYXRhU291cmNlID8gdGhpcy5maWVsZC5EYXRhU291cmNlIDogbnVsbDtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLnJlc291cmNlVVJMID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKFxyXG4gICAgICAgIHRoaXMuZmllbGQuUmVzb3VyY2VVUkwsXHJcbiAgICAgICAgdGhpcy5ncnBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiQXQgemdyaWQuY29tcG9uZW50IChPbkluaXQpIHJlc291cmNlVVJMOiBcIiwgcmVzb3VyY2VVUkwpO1xyXG4gICAgICBpZiAoIXRoaXMucmVzb3VyY2VVUkwpIHtcclxuICAgICAgICB0aGlzLmdyaWQubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnpncmlkYmluZGluZy5kYXRhLk5hbWUgIT09IFwiQWN0aXZpdHlMb2dHcmlkXCIpIHtcclxuICAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgXCJObyBpbml0aWFsaXNlIGZvciBGaWVsZC5SZXNvdXJjZVVSTDogXCIsXHJcbiAgICAgICAgICAgIHRoaXMuZmllbGQuUmVzb3VyY2VVUkxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYXJyYXkgPSB0aGlzLnJlc291cmNlVVJMLnNwbGl0KFwiL2FwaS9cIik7XHJcbiAgICAgIGlmICghIWFycmF5WzFdKSB7XHJcbiAgICAgICAgYXJyYXlbMV0gPSBcIlBhZ2VcIiArIGFycmF5WzFdO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkFwaVBvc3RVcmwgPSBhcnJheS5qb2luKFwiL2FwaS9cIik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgYXJyID0gdGhpcy5yZXNvdXJjZVVSTC5zcGxpdChcIi9cIik7XHJcbiAgICAgICAgYXJyW2Fyci5sZW5ndGggLSAyXSA9IFwiUGFnZVwiICsgYXJyW2Fyci5sZW5ndGggLSAyXTtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25BcGlQb3N0VXJsID0gYXJyLmpvaW4oXCIvXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNldEZpbHRlclBhcmFtc0J5UGFyZW50UmVmSWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmdyaWRTdWJqZWN0Lm5leHQodGhpcyk7XHJcbiAgICBpZiAodGhpcy5maWVsZFsnRGlzYWJsZUdlbmVyYXRlQ29sdW1uQnlGb3JtJ10pIHtcclxuICAgICAgY29uc3QgY29sdW1uRmllbGRzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKHRoaXMuZmllbGQuQ29sdW1uRmllbGRzLCB0aGlzLmdycCk7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbkZpZWxkcykpIHtcclxuICAgICAgICB0aGlzLnNldENvbHVtbnMoY29sdW1uRmllbGRzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZmllbGRbJ1NraXBMb2FkUmVzb3VyY2VVUkxEYXRhJ10pIHtcclxuICAgICAgICB0aGlzLmdyaWQubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ3JpZFN1YmplY3QubmV4dCh0aGlzKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmdldERhdGFCaW5kaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdlbmVyYXRlR3JpZENvbHVtbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmlsdGVyUGFyYW1zQnlQYXJlbnRSZWZJZCgpIHtcclxuICAgIC8vIFVzZSBmaWVsZCBvd24gcmVmZXJlbmNlSWQgaWYgYXZhaWxhYmxlXHJcbiAgICBjb25zdCByZWZJZCA9IHRoaXMuZ2V0RmllbGRSZWZlcmVuY2VJZCgpIHx8IHRoaXMuZ3JwLnJlZmVyZW5jZUlkO1xyXG4gICAgY29uc3QgcmVmRmllbGQgPSB0aGlzLmZpZWxkLlJlZmVyZW5jZUZpZWxkIHx8IHRoaXMuZ3JwLnBhcmVudFJlZmVyZW5jZUZpZWxkO1xyXG4gICAgaWYgKHJlZklkICYmIHJlZkZpZWxkKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0ge1xyXG4gICAgICAgIGtleTogcmVmRmllbGQsXHJcbiAgICAgICAgb3BzOiBcIj1cIixcclxuICAgICAgICB2YWx1ZTogcmVmSWQsXHJcbiAgICAgIH07XHJcbiAgICAgIC8vIGlmICh0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMuZmluZCh4ID0+IHgua2V5ID09PSBmaWx0ZXJWYWx1ZS5rZXkpID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLnB1c2goZmlsdGVyVmFsdWUpO1xyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpZWxkUmVmZXJlbmNlSWQoKSB7XHJcbiAgICBsZXQgZmllbGRSZWZlcmVuY2VJZCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5maWVsZC5SZWZlcmVuY2VJZCkge1xyXG4gICAgICBmaWVsZFJlZmVyZW5jZUlkID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKFxyXG4gICAgICAgIHRoaXMuZmllbGQuUmVmZXJlbmNlSWQsXHJcbiAgICAgICAgdGhpcy5ncnBcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZFJlZmVyZW5jZUlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnNlcnZpY2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVHcmlkQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGNvbHVtbkZpZWxkcyQ6IE9ic2VydmFibGU8YW55PiA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgdGhpcy5maWVsZC5Db2x1bW5GaWVsZHMsXHJcbiAgICAgIHRoaXMuZ3JwXHJcbiAgICApO1xyXG4gICAgaWYgKGNvbHVtbkZpZWxkcyQpe1xyXG4gICAgICBjb2x1bW5GaWVsZHMkLnBpcGUoXHJcbiAgICAgICAgdGFwKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBncmlkU2V0dGluZyA9IHRoaXMuZ2V0R3JpZFNldHRpbmdzKCk7XHJcblxyXG4gICAgICAgICAgWkNvbXBvbmVudEhlbHBlci5nZXRHcmlkQ29sdW1ucyhcclxuICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyxcclxuICAgICAgICAgICAgdGhpcy56Z3JpZGJpbmRpbmcuZ3JvdXAsXHJcbiAgICAgICAgICAgIGdyaWRTZXR0aW5nLFxyXG4gICAgICAgICAgICB0aGlzLnVzYWJsZUNvbHVtbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmdldEZpbHRlclBhcmFtc0NvbHVtbnMoKTtcclxuICAgICAgICAgIHRoaXMuZ2V0RmlsdGVyKCk7XHJcbiAgICAgICAgICB0aGlzLmdldEZpbHRlclBhcmFtcygpO1xyXG4gICAgICAgICAgdGhpcy5nZXRTb3J0aW5nKCk7XHJcbiAgICAgICAgICB0aGlzLmdldEdyYW50VHlwZSgpO1xyXG4gICAgICAgICAgdGhpcy5zZXRIaWRkZW5Db2x1bW4oZ3JpZFNldHRpbmcpO1xyXG5cclxuICAgICAgICAgIHRoaXMucGFyYW1zLnJlZmVySWQgPSB0aGlzLmdldEZpZWxkUmVmZXJlbmNlSWQoKSB8fCB0aGlzLmdycC5yZWZlcmVuY2VJZCB8fCBudWxsO1xyXG4gICAgICAgICAgLy8gfSksXHJcbiAgICAgICAgICAvLyBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgLy8gICAvL0dldCBTZXNzaW9uXHJcbiAgICAgICAgICAvLyAgIHJldHVybiB0aGlzLmdldEdyaWRTZXNzaW9uRmlsdGVyKHRoaXMuZ3JwLCB0aGlzKTtcclxuICAgICAgICAgIC8vIH0pLFxyXG4gICAgICAgICAgLy8gc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgIC8vICAgIC8vQmVmb3JlIGdldCBncmlkIGRhdGFcclxuICAgICAgICAgIC8vICAgcmV0dXJuIHRoaXMuYmVmb3JlR3JpZEdldERhdGEodGhpcy5ncnAsIHRoaXMpO1xyXG4gICAgICAgICAgLy8gfSksXHJcbiAgICAgICAgICAvLyBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgLy8gICAvL1NldCBncmlkIGRhdGFcclxuICAgICAgICAgIC8vICAgcmV0dXJuIHRoaXMuc2V0R3JpZFNlc3Npb25GaWx0ZXIodGhpcy5ncnAsIHRoaXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWVsZFsnU2tpcExvYWRSZXNvdXJjZVVSTERhdGEnXSkge1xyXG4gICAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZ3JpZFN1YmplY3QubmV4dCh0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdldERhdGFCaW5kaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdGYWlsIHRvIGdlbmVyYXRlIGdyaWQgY29sdW1uIGZpZWxkcy4nKTtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5maWVsZC5Db2x1bW5GaWVsZHMpO1xyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLmdycCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2tpcExvYWRSZXNvdXJjZVVSTERhdGEoc2V0dGluZ1ZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmZpZWxkWydTa2lwTG9hZFJlc291cmNlVVJMRGF0YSddID0gIXNldHRpbmdWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb2x1bW5OYW1lKGNvbFZhbHVlOiBzdHJpbmcsIGNvbE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5ncmlkQ29sdW1ucy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQuVmFsdWUgPT0gY29sVmFsdWUpIHtcclxuICAgICAgICBmaWVsZC50aXRsZSA9IGNvbE5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29sdW1uVmlzaWJsZShjb2xWYWx1ZTogc3RyaW5nLCBjb25maWc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZ3JpZENvbHVtbnMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgaWYgKGZpZWxkLlZhbHVlID09IGNvbFZhbHVlKSB7XHJcbiAgICAgICAgZmllbGQuaGlkZGVuID0gIWNvbmZpZztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyUGFyYW1zQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGNvbEZpZWxkczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gICAgdGhpcy5ncmlkQ29sdW1ucy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudmFsdWVFeHByKSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goZmllbGQudmFsdWVFeHByICsgXCIgYXMgXCIgKyBmaWVsZC5maWVsZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goZmllbGQuZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sRmllbGRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKGNvbEZpZWxkcy5pbmRleE9mKFwiSWRcIikgPT09IC0xKSB7XHJcbiAgICAgICAgY29sRmllbGRzLnB1c2goXCJJZFwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB0bXBHcmlkQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgdG1wR3JpZENvbHVtbi5wdXNoKGNvbEZpZWxkcy5qb2luKFwiLFwiKSk7XHJcbiAgICBpZiAodGhpcy51c2FibGVDb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdG1wR3JpZENvbHVtbi5wdXNoKHRoaXMudXNhYmxlQ29sdW1ucy5qb2luKFwiLFwiKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhcmFtcy5jb2x1bW5zID0gdG1wR3JpZENvbHVtbi5qb2luKFwiLFwiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zLmZpbHRlcnMgJiYgdGhpcy5maWVsZC5GaWx0ZXJzKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmZpbHRlcnMgPSB0aGlzLnBhcmFtcy5maWx0ZXJzICsgXCIgJiYgXCIgKyB0aGlzLmZpZWxkLkZpbHRlcnM7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBhcmFtcy5maWx0ZXJzICYmIHRoaXMuZmllbGQuRmlsdGVycykge1xyXG4gICAgICB0aGlzLnBhcmFtcy5maWx0ZXJzID0gdGhpcy5maWVsZC5GaWx0ZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkZpbHRlcnMgJiYgdGhpcy5maWVsZC5GaWx0ZXJzLmluZGV4T2YoXCJncm91cC5cIikgIT09IC0xKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcktleVZhbFBhaXJzID0gdGhpcy5maWVsZC5GaWx0ZXJzLnNwbGl0KFwiIFwiKTtcclxuICAgICAgY29uc3QgZ3JwVmFsdWVzID0gZmlsdGVyS2V5VmFsUGFpcnMuZmlsdGVyKFxyXG4gICAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50LnRyaW0oKS5pbmRleE9mKFwiZ3JvdXAuXCIpICE9PSAtMVxyXG4gICAgICApO1xyXG5cclxuICAgICAgZ3JwVmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFjdHVhbFZhbCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh2YWwsIHRoaXMuZ3JwKTtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJzID0gdGhpcy5wYXJhbXMuZmlsdGVycy5yZXBsYWNlKHZhbCwgYWN0dWFsVmFsKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlclBhcmFtcygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkWydGaWx0ZXJQYXJhbXMnXSkge1xyXG4gICAgICBpZiAodGhpcy5maWVsZFsnRmlsdGVyUGFyYW1zJ10uaW5kZXhPZihcImdyb3VwLlwiKSAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5maWVsZFsnRmlsdGVyUGFyYW1zJ10sIHRoaXMuZ3JwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5maWx0ZXJQYXJhbXMgPSB0aGlzLmZpZWxkWydGaWx0ZXJQYXJhbXMnXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTb3J0aW5nKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQuU29ydE9yZGVyKSB7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLlNvcnRPcmRlci5pbmRleE9mKFwiZ3JvdXAuXCIpICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnNvcnRPcmRlciA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmZpZWxkLlNvcnRPcmRlciwgdGhpcy5ncnApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnNvcnRPcmRlciA9IHRoaXMuZmllbGQuU29ydE9yZGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyYW50VHlwZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkdyYW50VHlwZSkge1xyXG4gICAgICB0aGlzLnBhcmFtcy5ncmFudFR5cGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5maWVsZC5HcmFudFR5cGUudG9TdHJpbmcoKSwgdGhpcy5ncnApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRIaWRkZW5Db2x1bW4oZ3JpZFNldHRpbmc6IFpHcmlkQ29sdW1uU2V0dGluZ3NbXSkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtbnMgJiYgZ3JpZFNldHRpbmcpIHtcclxuICAgICAgLy8gZmlsdGVyIG91dCBoaWRkZW4gPT0gZmFsc2UgYXJyYXkuXHJcbiAgICAgIGNvbnN0IGdyaWRTZXR0aW5nSGlkZGVuQ29sID0gZ3JpZFNldHRpbmcuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1bJ2hpZGRlbiddID09IHRydWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gZmluZCBhbmQgc2V0IHRoZSBoaWRkZW4gdG8gY3VycmVudCBjb2x1bW4gc2V0dGluZy5cclxuICAgICAgT2JqZWN0LnZhbHVlcyhncmlkU2V0dGluZ0hpZGRlbkNvbCkuZm9yRWFjaCh2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoYykgPT4gYy5maWVsZCA9PT0gdmFsdWUuZmllbGQpKSB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRDb2x1bW5zLmZpbmQoKGMpID0+IGMuZmllbGQgPT09IHZhbHVlLmZpZWxkKVsnaGlkZGVuJ10gPSB2YWx1ZVsnaGlkZGVuJ107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgZ2V0RGF0YUJpbmRpbmcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5wYXJhbXMucGFnZVNpemUgPSB0aGlzLnN0YXRlLnRha2U7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkV4dGVybmFsUGFnaW5hdGlvbikge1xyXG4gICAgICAgIC8vIEZvciBQT1NUIG1ldGhvZCBQYWdlIFdlYkFQSVxyXG4gICAgICAgIHRoaXMud2ViYXBpU2VydmljZVxyXG4gICAgICAgICAgLnBvc3RBcGkoXHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbkFwaVBvc3RVcmwsXHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKGRhdGEpID0+IHRoaXMuaGFuZGxlR2V0RGF0YUJpbmRpbmdDb21wbGV0ZShkYXRhKSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KFwiRXJyb3Igb2NjdXIgaW4gbG9hZGluZyB0aGUgZGF0YVwiLCBcIm1pZGRsZVwiLCBmYWxzZSwgMTUwMCwgXCJkYW5nZXJcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmlkLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gRm9yIEdFVCBtZXRob2RcclxuICAgICAgICB0aGlzLndlYmFwaVNlcnZpY2VcclxuICAgICAgICAgIC5nZXRBcGkodGhpcy5yZXNvdXJjZVVSTCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgbGV0IF9kYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgbGV0IF90b3RhbENvdW50ID0gMDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkYXRhLmRhdGFTZXQpIHtcclxuICAgICAgICAgICAgICBfZGF0YSA9IGRhdGEuZGF0YVNldDtcclxuICAgICAgICAgICAgICBfdG90YWxDb3VudCA9IGRhdGEudG90YWxDb3VudDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBfZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgX3RvdGFsQ291bnQgPSBkYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVHZXREYXRhQmluZGluZ0NvbXBsZXRlKHsgZGF0YVNldDogX2RhdGEsIHRvdGFsQ291bnQ6IF90b3RhbENvdW50IH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBkcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFTb3VyY2UsXHJcbiAgICAgICAgdGhpcy5ncnBcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZGF0YSA9IGRzO1xyXG4gICAgICB0aGlzLmdyaWQubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmdyaWRTdWJqZWN0Lm5leHQodGhpcyk7XHJcbiAgICAgIHRoaXMubm90aWZ5RGF0YUNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVHZXREYXRhQmluZGluZ0NvbXBsZXRlKGRhdGEpIHtcclxuICAgIHRoaXMuYWdncmVnYXRlSGFuZGxpbmcoZGF0YS5kYXRhU2V0KTtcclxuICAgIHRoaXMuZ3JpZC5kYXRhID0geyBkYXRhOiBkYXRhLmRhdGFTZXQsIHRvdGFsOiBkYXRhLnRvdGFsQ291bnQgfTtcclxuICAgIHRoaXMuZ3JpZC5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmFmdGVyRGF0YUJpbmRlZChkYXRhKTtcclxuICAgIHRoaXMuZ3JpZFN1YmplY3QubmV4dCh0aGlzKTtcclxuICAgIHRoaXMubm90aWZ5RGF0YUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZnRlckRhdGFCaW5kZWQoZGF0YSkge1xyXG4gICAgLy8gYWxsb3cgdG8gY2FsbCBiYWNrIHByb2plY3QgcGFnZSBhZnRlciBkYXRhIGJpbmRlZC5cclxuICAgIGxldCBiaW5kZWRWYWx1ZSA9IHRoaXMuemdyaWRiaW5kaW5nLmRhdGFbJ0FmdGVyRGF0YUJpbmRlZCddO1xyXG4gICAgaWYgKGJpbmRlZFZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IG1lID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcyk7XHJcbiAgICAgIGxldCBjYWxsRnVuYztcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gYmluZGVkVmFsdWUubWF0Y2goL1xcYlxcKC4qL2dpKTtcclxuICAgICAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgICAgICBiaW5kZWRWYWx1ZSA9IGJpbmRlZFZhbHVlLnJlcGxhY2UocGFyYW1zWzBdLCBcIlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYmluZGVkVmFsdWUgPSBiaW5kZWRWYWx1ZS5yZXBsYWNlKCdtb2RhbEdyb3VwLicsICdncm91cC4nKTtcclxuICAgICAgICBjYWxsRnVuYyA9IGV2YWwoJ21lLnpncmlkYmluZGluZy4nICsgYmluZGVkVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgIFwiRXJyb3Igd2hlbiBnZXRHcm91cFZhbHVlOiBcIixcclxuICAgICAgICAgIGV2ZW50LnRhcmdldCxcclxuICAgICAgICAgIFwiID4gRXJyb3I6IFwiLFxyXG4gICAgICAgICAgZXJyb3JcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodHlwZW9mIGNhbGxGdW5jID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZChtZSk7XHJcbiAgICAgICAgbmV3RnVuYyhldmVudCwgbWUuemdyaWRiaW5kaW5nLmRhdGEsIGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJEYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncmlkLmRhdGEgPSB7IGRhdGE6IFtdLCB0b3RhbDogMCB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZ2dyZWdhdGVIYW5kbGluZyhkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGFnZ3JlZ2F0ZUNvbHVtbnMgPSB0aGlzLmdyaWRDb2x1bW5zLmZpbHRlcih4ID0+IHguYWdncmVnYXRlVHlwZSk7XHJcblxyXG4gICAgYWdncmVnYXRlQ29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbnN0IGZpZWxkID0gY29sLmZpZWxkO1xyXG5cclxuICAgICAgbGV0IF9hZ2dyZWdhdGVWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHN3aXRjaCAoY29sLmFnZ3JlZ2F0ZVR5cGUuc2xpY2UoMCwgLTEpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICBjYXNlIFwidG90YWxcIjoge1xyXG4gICAgICAgICAgX2FnZ3JlZ2F0ZVZhbHVlID0gZGF0YS5yZWR1Y2UoKHRvdGFsLCBuZXh0KSA9PiB0b3RhbCArIG5leHRbZmllbGRdLCAwKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwic3VtXCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKCh0b3RhbCwgbmV4dCkgPT4gdG90YWwgKyBuZXh0W2ZpZWxkXSwgMCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBcImF2ZXJhZ2VcIjoge1xyXG4gICAgICAgICAgX2FnZ3JlZ2F0ZVZhbHVlID0gZGF0YS5yZWR1Y2UoKHRvdGFsLCBuZXh0KSA9PiB0b3RhbCArIG5leHRbZmllbGRdLCAwKSAvIGRhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgXCJjb3VudFwiOiB7XHJcbiAgICAgICAgICBfYWdncmVnYXRlVmFsdWUgPSBkYXRhLmxlbmd0aDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwibWF4XCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKChwLCBjKSA9PiBwW2ZpZWxkXSA+IGNbZmllbGRdID8gcCA6IGMpW2ZpZWxkXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIFwibWluXCI6IHtcclxuICAgICAgICAgIF9hZ2dyZWdhdGVWYWx1ZSA9IGRhdGEucmVkdWNlKChwLCBjKSA9PiBwW2ZpZWxkXSA8IGNbZmllbGRdID8gcCA6IGMpW2ZpZWxkXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29sLmFnZ3JlZ2F0ZVZhbHVlID0gX2FnZ3JlZ2F0ZVZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFnZ3JlZ2F0ZVJlc2V0VmFsdWUoKSB7XHJcbiAgICBjb25zdCBhZ2dyZWdhdGVDb2x1bW5zID0gdGhpcy5ncmlkQ29sdW1ucy5maWx0ZXIoeCA9PiB4LmFnZ3JlZ2F0ZVR5cGUpO1xyXG4gICAgYWdncmVnYXRlQ29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGNvbC5hZ2dyZWdhdGVWYWx1ZSA9IDA7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgcGFnZUNoYW5nZShldmVudDogUGFnZUNoYW5nZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcy5wYWdlTm8gPSBldmVudC5za2lwIC8gdGhpcy5wYXJhbXMucGFnZVNpemU7XHJcbiAgICB0aGlzLnN0YXRlLnNraXAgPSBldmVudC5za2lwO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNvcnRDaGFuZ2Uoc29ydDogU29ydERlc2NyaXB0b3JbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zb3J0ID0gc29ydDtcclxuICAgIHRoaXMucGFyYW1zLnNvcnRDb2x1bW5OYW1lcyA9IFtdO1xyXG4gICAgdGhpcy5wYXJhbXMuc29ydE9yZGVycyA9IFtdO1xyXG5cclxuICAgIHNvcnQuZm9yRWFjaCgoZikgPT4ge1xyXG4gICAgICBpZiAoZi5kaXIpIHtcclxuICAgICAgICB0aGlzLnBhcmFtcy5zb3J0T3JkZXJzLnB1c2goZi5kaXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ3JpZENvbHVtbnMuZmluZCgoYykgPT4gYy5maWVsZCA9PT0gZi5maWVsZCk7XHJcbiAgICAgICAgaWYgKGZpZWxkLnZhbHVlRXhwciAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcy5zb3J0Q29sdW1uTmFtZXMucHVzaChmaWVsZC52YWx1ZUV4cHIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcy5zb3J0Q29sdW1uTmFtZXMucHVzaChmLmZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlckNoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmFtcy5wYWdlTm8gPSAwO1xyXG4gICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zID0gW107XHJcbiAgICB0aGlzLnNldEZpbHRlclBhcmFtc0J5UGFyZW50UmVmSWQoKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgaWYgKGV2ZW50LmZpbHRlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGV2ZW50LmZpbHRlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmdyaWRDb2x1bW5zLmZpbmQoKGMpID0+IGMuZmllbGQgPT09IGl0ZW0uZmllbGQpO1xyXG5cclxuICAgICAgICAgIGlmIChpdGVtLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgaXRlbS5maWx0ZXJzLmZvckVhY2goKGY6IEZpbHRlckRlc2NyaXB0b3IpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZi52YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZi52YWx1ZSA9IFwiXCI7IC8vIGNvbnZlcnQgbnVsbCB0byBcIlwiXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMucGFyYW1zLmZpbHRlclBhcmFtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleTogZi5maWVsZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICBvcHM6IHRoaXMubWFwRmlsdGVyT3BlcmF0b3IoZi5vcGVyYXRvciksXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogZi52YWx1ZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICBpdGVtLnZhbHVlID0gXCJcIjsgLy8gY29udmVydCBudWxsIHRvIFwiXCJcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLnpncmlkYmluZGluZy5kYXRhWydGaWx0ZXJXaXRob3V0QnJhY2tldCddID8gYCR7ZmllbGQudmFsdWVFeHByfWAgOiBgKCR7ZmllbGQudmFsdWVFeHByfSlgO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGtleTogZmllbGQudmFsdWVFeHByICE9PSB1bmRlZmluZWQgPyBmaWx0ZXJWYWx1ZSA6IGl0ZW0uZmllbGQsXHJcbiAgICAgICAgICAgICAgb3BzOiB0aGlzLm1hcEZpbHRlck9wZXJhdG9yKGl0ZW0ub3BlcmF0b3IpLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0R3JpZFNlc3Npb25GaWx0ZXIodGhpcy5ncnAsIHRoaXMpO1xyXG4gICAgdGhpcy5nZXREYXRhQmluZGluZygpO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGF0YVN0YXRlQ2hhbmdlKHN0YXRlOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5zdGF0ZSA9IHN0YXRlO1xyXG4gICAgdGhpcy5za2lwID0gc3RhdGUuc2tpcDtcclxuICAgIHRoaXMucGFnZVNpemUgPSBzdGF0ZS50YWtlO1xyXG4gICAgdGhpcy5zdGF0ZS5za2lwID0gc3RhdGUuc2tpcDtcclxuICAgIHRoaXMuc3RhdGUudGFrZSA9IHN0YXRlLnRha2U7XHJcbiAgICB0aGlzLmdyaWQubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0ZVJlc2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFwRmlsdGVyT3BlcmF0b3Iob3BlcmF0b3I6IGFueSkge1xyXG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xyXG4gICAgICBjYXNlIFwiZXFcIjpcclxuICAgICAgICByZXR1cm4gXCJlcVwiO1xyXG4gICAgICBjYXNlIFwibmVxXCI6XHJcbiAgICAgICAgcmV0dXJuIFwibmVxXCI7XHJcbiAgICAgIGNhc2UgXCJsdFwiOlxyXG4gICAgICAgIHJldHVybiBcImx0XCI7XHJcbiAgICAgIGNhc2UgXCJsdGVcIjpcclxuICAgICAgICByZXR1cm4gXCJsdGVcIjtcclxuICAgICAgY2FzZSBcImd0XCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZ3RcIjtcclxuICAgICAgY2FzZSBcImd0ZVwiOlxyXG4gICAgICAgIHJldHVybiBcImd0ZVwiO1xyXG4gICAgICBjYXNlIFwic3RhcnRzd2l0aFwiOlxyXG4gICAgICAgIHJldHVybiBcInN0YXJ0c3dpdGhcIjtcclxuICAgICAgY2FzZSBcImVuZHN3aXRoXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZW5kc3dpdGhcIjtcclxuICAgICAgY2FzZSBcImlzbnVsbFwiOlxyXG4gICAgICAgIHJldHVybiBcImlzbnVsbFwiO1xyXG4gICAgICBjYXNlIFwiaXNub3RudWxsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiaXNub3RudWxsXCI7XHJcbiAgICAgIGNhc2UgXCJjb250YWluc1wiOiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkWydGaWx0ZXJDb250YWluc1VzaW5nRXF1YWwnXSkge1xyXG4gICAgICAgICAgcmV0dXJuIFwiY29udGFpbnNcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCI9PVwiO1xyXG4gICAgICAvLyBlcSwgbmVxLCBpc251bGwsIGlzbm90bnVsbCwgZW5kc3dpdGgsIHN0YXJ0c3dpdGhcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0R3JpZFNldHRpbmdzKCk6IFpHcmlkQ29sdW1uU2V0dGluZ3NbXSB7XHJcbiAgICBjb25zdCBfc3RvcmFnZUtleSA9ICdpb25pYy1maWVsZDo6JyArIHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbi51c2VyTmFtZSArICc6OicgKyB0aGlzLmZpZWxkLk5hbWUgKyAnOjonICsgdGhpcy5yb3V0ZXIudXJsO1xyXG5cclxuICAgIC8vIEZpbmQgYW55IHNldHRpbmcgZnJvbSBsb2NhbHN0b3JhZ2UuLlxyXG4gICAgbGV0IF9hcnJHcmlkQ2FjaGluZzogR3JpZENhY2hpbmdbXSA9IHRoaXMuekdyaWRTdGF0ZVBlcnNpc3RpbmdTZXJ2aWNlLmdldChfc3RvcmFnZUtleSk7XHJcbiAgICBpZiAoX2FyckdyaWRDYWNoaW5nKSB7XHJcbiAgICAgIGNvbnN0IF9ncmlkQ2FjaGluZzogR3JpZENhY2hpbmcgPSBKU09OLnBhcnNlKF9hcnJHcmlkQ2FjaGluZ1snVmFsdWUnXSk7XHJcbiAgICAgIGlmIChfZ3JpZENhY2hpbmcpIHtcclxuICAgICAgICByZXR1cm4gX2dyaWRDYWNoaW5nLmdyaWRTZXR0aW5ncy5jb2x1bW5zQ29uZmlnLnNvcnQoKGEsIGIpID0+IGEub3JkZXJJbmRleCAtIGIub3JkZXJJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBiZWZvcmVHcmlkR2V0RGF0YShncm91cDogWkdyb3VwLCBtZTogYW55KSB7XHJcbiAgICBjb25zb2xlLndhcm4oXCJiZWZvcmVEYXRhQmluZGluZyB0cmlnZ2VyZWRcIik7XHJcbiAgICBpZiAoIWdyb3VwLmJlZm9yZUdyaWRHZXREYXRhKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcImdyb3VwLmJlZm9yZURhdGFCaW5kaW5nIGlzIHVuZGVmaW5lZFwiKTtcclxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3VwLmJlZm9yZUdyaWRHZXREYXRhKGdyb3VwLCBtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEdyaWRTZXNzaW9uRmlsdGVyKGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFN0b3JhZ2VLZXkgPSBncm91cFtcIkdyaWRTdG9yYWdlS2V5XCJdO1xyXG5cclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgICAgb2YodHJ1ZSlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldChTdG9yYWdlS2V5KTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdGFwKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWRhdGEgfHwgIWRhdGEudmFsdWUgfHwgZGF0YS52YWx1ZSA9PT0gXCJudWxsXCIpIHtcclxuICAgICAgICAgICAgICBzdWJqZWN0Lm5leHQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKGRhdGEudmFsdWUpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuZmlsdGVyID0gSlNPTi5wYXJzZShyZXN1bHRbXCJTdGF0ZUZpbHRlclwiXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJhbXMuZmlsdGVyUGFyYW1zID0gSlNPTi5wYXJzZShyZXN1bHRbXCJGaWx0ZXJQYXJhbXNcIl0pO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnN0YXRlLmZpbHRlci5maWx0ZXJzLmZvckVhY2goKGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGQuZmllbGQuaW5jbHVkZXMoJ1VUQycpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGQudmFsdWUgPSBuZXcgRGF0ZShkLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgc3ViamVjdC5uZXh0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEdyaWRTZXNzaW9uRmlsdGVyKGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBTdG9yYWdlS2V5ID0gZ3JvdXBbXCJHcmlkU3RvcmFnZUtleVwiXTtcclxuXHJcbiAgICBpZiAobWUuc3RhdGUuZmlsdGVyICYmIHRoaXMuc3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5maWVsZFsnU2F2ZUZpbHRlciddKSB7XHJcbiAgICAgIC8vbGlzdCBvZiBkYXRhIGZvciBTdGF0ZUZpbHRlciBhbmQgRmlsdGVyUGFyYW1zXHJcbiAgICAgIGNvbnN0IGxzdEdyaWRGaWx0ZXIgPSB7IFwiU3RhdGVGaWx0ZXJcIjogSlNPTi5zdHJpbmdpZnkobWUuc3RhdGUuZmlsdGVyKSwgXCJGaWx0ZXJQYXJhbXNcIjogSlNPTi5zdHJpbmdpZnkobWUucGFyYW1zLmZpbHRlclBhcmFtcykgfVxyXG4gICAgICAvL2NyZWF0ZSBzZXNzaW9uIHN0b3JhZ2VcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoU3RvcmFnZUtleSwgSlNPTi5zdHJpbmdpZnkobHN0R3JpZEZpbHRlcikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbHVtbnMoY29sdW1uczogYW55W10pIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuZ2V0R3JpZENvbHVtbnMoXHJcbiAgICAgIGNvbHVtbnMsXHJcbiAgICAgIHRoaXMuZ3JpZENvbHVtbnMsXHJcbiAgICAgIHRoaXMuemdyaWRiaW5kaW5nLmdyb3VwLFxyXG4gICAgICB0aGlzLmdldEdyaWRTZXR0aW5ncygpLFxyXG4gICAgICB0aGlzLnVzYWJsZUNvbHVtbnNcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|