mmhglobal-dynamicform 2.24.0 → 2.24.2
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 +9 -0
- package/esm2020/lib/zmfb/zmfb.component.mjs +10 -3
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +10 -9
- package/fesm2015/mmhglobal-dynamicform.mjs +18 -10
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +18 -10
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.2.13.
|
|
4
4
|
|
|
5
5
|
## Changelog
|
|
6
|
+
`2.24.3`<br/>
|
|
7
|
+
[zmfb] - zmfb linked workflow button will now reload the linked workflow button when clicked.
|
|
8
|
+
|
|
9
|
+
`2.24.2`<br/>
|
|
10
|
+
[zselectmutiple] - Added additional check to skip checking allowCustomValue if not enabled.
|
|
11
|
+
|
|
12
|
+
`2.24.1`<br/>
|
|
13
|
+
[zselectmutiple] - Minor fix for toggle if multiple type when filtering.
|
|
14
|
+
|
|
6
15
|
`2.24.0`<br/>
|
|
7
16
|
Added new UI Components. (Type: kmenu, kscrollview) <br/>
|
|
8
17
|
[zudf] - Enhanced zudf for form-builder use. <br/>
|
|
@@ -82,6 +82,9 @@ export class ZmfbComponent extends ButtonFieldBase {
|
|
|
82
82
|
// handle as zWorkflowButton
|
|
83
83
|
this.isWorkflowButton = true;
|
|
84
84
|
this.loadWorkflowButton();
|
|
85
|
+
//Object.assign(this.group, {
|
|
86
|
+
// zmfbLinked: `${this.data.Type}_${this.data.Name}`
|
|
87
|
+
//});
|
|
85
88
|
}
|
|
86
89
|
else {
|
|
87
90
|
const field$ = this.fieldService.getFormFieldCode(this.buttonField.Value, "FormField");
|
|
@@ -94,8 +97,8 @@ export class ZmfbComponent extends ButtonFieldBase {
|
|
|
94
97
|
this.items.push({
|
|
95
98
|
label: label,
|
|
96
99
|
icon: ZComponentHelper.getIcon(button.Icon),
|
|
97
|
-
|
|
98
|
-
|
|
100
|
+
clickEvent: button.ClickEvent,
|
|
101
|
+
click: (y) => {
|
|
99
102
|
this.buttonClick(button);
|
|
100
103
|
}
|
|
101
104
|
});
|
|
@@ -174,6 +177,10 @@ export class ZmfbComponent extends ButtonFieldBase {
|
|
|
174
177
|
console.log("GOTO Button: ", button.Name);
|
|
175
178
|
this.workflowService.gotoButton_Onclick(button, this.buttonField, attributes, this.group, false).subscribe(res => {
|
|
176
179
|
this.loadWorkflowButton();
|
|
180
|
+
// Require to refresh the firstzBtn
|
|
181
|
+
const mainButtonName = `${this.buttonField.Type}_${this.buttonField.Name}`;
|
|
182
|
+
const mainButton = ZComponentHelper.getComponent(this.group, mainButtonName);
|
|
183
|
+
mainButton['loadButton']();
|
|
177
184
|
if (res) {
|
|
178
185
|
this.workflowService.triggerSendEmail(this.group).subscribe();
|
|
179
186
|
}
|
|
@@ -191,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
191
198
|
type: Component,
|
|
192
199
|
args: [{ selector: 'app-zmfb', template: "<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <span class=\"k-icon k-i-{{ item.icon }}\"></span>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-floatingactionbutton .custom-floating-button{background:var(--ion-color-primary);border:none!important;outline:none;height:55px;width:55px;z-index:999}:host ::ng-deep kendo-floatingactionbutton .custom-floating-button:hover{background:var(--ion-color-primary-tint)}.button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}.k-top-end,.k-pos-top-end{padding-top:6.5vh;padding-right:1vw}\n"] }]
|
|
193
200
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FieldService }, { type: i2.ResourceApiService }, { type: i2.WorkflowService }]; } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1mYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bWZiL3ptZmIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvem1mYi96bWZiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQVF6RCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTFFLE9BQU8sRUFFTyxnQkFBZ0IsRUFDN0IsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFTekIsTUFBTSxPQUFPLGFBQWMsU0FBUSxlQUFlO0lBU2hELFlBQ1MsZ0JBQW1DLEVBQ2xDLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxlQUFnQztRQUV4QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUxoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWjFDLGlCQUFZLEdBQW9CLE9BQU8sQ0FBQztRQUN4QyxVQUFLLEdBQWEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1RCxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBZ0hoQyxZQUFZO1FBRVosa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZiwyR0FBMkc7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SUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQy9HLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUMxQixJQUFJLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztxQkFDL0Q7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNSO2dCQUNFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDOzswR0F2TVUsYUFBYTs4RkFBYixhQUFhLHVFQ3hCMUIscTZEQXdDQTsyRkRoQmEsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IERpYWxJdGVtQ2xpY2tFdmVudCwgRmFiQWxpZ24sIEZhYlBvc2l0aW9uTW9kZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWJ1dHRvbnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBCdXR0b25GaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9idXR0b25maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQge1xyXG4gIEZpZWxkU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLCBXb3JrZmxvd1NlcnZpY2UsXHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LCBaQ29tcG9uZW50UHJvcGVydGllcywgWkZpZWxkLCBaR3JvdXBcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXptZmInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96bWZiLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96bWZiLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWm1mYkNvbXBvbmVudCBleHRlbmRzIEJ1dHRvbkZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcG9zaXRpb25Nb2RlOiBGYWJQb3NpdGlvbk1vZGUgPSAnZml4ZWQnO1xyXG4gIGFsaWduOiBGYWJBbGlnbiA9IHsgdmVydGljYWw6ICdib3R0b20nLCBob3Jpem9udGFsOiAnZW5kJyB9O1xyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgZGlhbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1dvcmtmbG93QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYnV0dG9uQ29sb3I6IHN0cmluZyA9ICdwcmltYXJ5JztcclxuICBwcml2YXRlIGJ1dHRvbkZpZWxkOiBaRmllbGQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdvcmtmbG93U2VydmljZTogV29ya2Zsb3dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5pbml0Q29tcG9uZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCkge1xyXG4gICAgdGhpcy5hbGlnbiA9ICh0aGlzLmRhdGFbYFBvc2l0aW9uYF0gPyBKU09OLnBhcnNlKHRoaXMuZGF0YVtgUG9zaXRpb25gXSkgOiBudWxsKSB8fCB0aGlzLmFsaWduO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5WYWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuZGF0YS5WYWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldHVwRGVmYXVsdERpYWxJdGVtcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIEVudmVudHNcclxuICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgLy9jb25zb2xlLmxvZygnYmx1cicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1dvcmtmbG93QnV0dG9uKSB7XHJcbiAgICAgIHRoaXMubG9hZFdvcmtmbG93QnV0dG9uKCk7XHJcbiAgICB9XHJcbiAgICAvL2NvbnNvbGUubG9nKCdmb2N1cycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uT3BlbihlKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxPcGVuID0gdHJ1ZTtcclxuICAgIGNvbnNvbGUubG9nKCdvcGVuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZShlKTogdm9pZCB7XHJcbiAgICAvLyBUbyBzdGltdWxhdGUgbmV2ZXIgY2xvc2VcclxuICAgIC8vIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuZGlhbE9wZW4gPSBmYWxzZTtcclxuICAgIGNvbnNvbGUubG9nKCdjbG9zZScpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRGlhbEl0ZW1DbGljayhlOiBEaWFsSXRlbUNsaWNrRXZlbnQpOiB2b2lkIHtcclxuICAgIGUuaXRlbS5jbGljaygpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIERpYWwgSXRlbSAtIEJ1dHRvbnNcclxuICBwcml2YXRlIHNldHVwRGVmYXVsdERpYWxJdGVtcygpIHtcclxuICAgIHRoaXMuYnV0dG9uRmllbGQgPSB0aGlzLmdldEZpcnN0ekJ1dHRvbih0aGlzLmdyb3VwLmZpZWxkcyk7XHJcblxyXG4gICAgaWYgKHRoaXMuYnV0dG9uRmllbGQpIHtcclxuICAgICAgaWYgKCFaQ29tcG9uZW50SGVscGVyLmlzTnVsbFVuZGVmaW5lZEVtcHR5KHRoaXMuYnV0dG9uRmllbGQuV29ya2Zsb3dDb2RlKSkge1xyXG4gICAgICAgIC8vIGhhbmRsZSBhcyB6V29ya2Zsb3dCdXR0b25cclxuICAgICAgICB0aGlzLmlzV29ya2Zsb3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZFdvcmtmbG93QnV0dG9uKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZmllbGQkID0gdGhpcy5maWVsZFNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29kZSh0aGlzLmJ1dHRvbkZpZWxkLlZhbHVlLCBcIkZvcm1GaWVsZFwiKTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIGZpZWxkJC5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoYnV0dG9uOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZ2V0QnV0dG9uTGFiZWwoYnV0dG9uKTtcclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgX2lzVmlzaWJsZSA9IHRoaXMuaXNCdG5WaXNpYmxlKGJ1dHRvbi5WaXNpYmxlKTtcclxuICAgICAgICAgICAgICBpZiAoX2lzVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICBpY29uOiBaQ29tcG9uZW50SGVscGVyLmdldEljb24oYnV0dG9uLkljb24pLFxyXG4gICAgICAgICAgICAgICAgICAnY2xpY2tFdmVudCc6IGJ1dHRvbi5DbGlja0V2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAnY2xpY2snOiAoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uQ2xpY2soYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpcnN0ekJ1dHRvbihkYXRhOiBhbnlbXSkge1xyXG4gICAgLy8gZGF0YS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICBpZiAoZGF0YVtpXS5UeXBlID09PSBcInpidXR0b25zXCIgfHwgZGF0YVtpXS5UeXBlID09PSBcInp3b3JrZmxvd2J1dHRvbnNcIikge1xyXG4gICAgICAgIHJldHVybiBkYXRhW2ldO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbaV0uVmFsdWUpKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEZpcnN0ekJ1dHRvbihkYXRhW2ldLlZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFdvcmtmbG93XHJcbiAgLy8gVVJMIHJlcXVpcmVkXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbixuby11bmRlcnNjb3JlLWRhbmdsZSxpZC1ibGFja2xpc3QsaWQtbWF0Y2hcclxuICBlMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMXCIpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sbm8tdW5kZXJzY29yZS1kYW5nbGUsaWQtYmxhY2tsaXN0LGlkLW1hdGNoXHJcbiAgZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkxcIik7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiwgbm8tdW5kZXJzY29yZS1kYW5nbGUsIGlkLWJsYWNrbGlzdCwgaWQtbWF0Y2hcclxuICBlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXCJlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkxcIik7XHJcblxyXG5cclxuICBwcml2YXRlIGxvYWRXb3JrZmxvd0J1dHRvbigpIHtcclxuICAgIC8vICBhY3Rpb25CdG5MaXN0OiBBcnJheTxaRmllbGQ+O1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG5cclxuICAgIC8vIEdldCBXRlNfRG9jdW1lbnRJZCBpZiBhbnkuXHJcbiAgICBsZXQgZG9jdW1lbnRJZCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5ncm91cC56TW9kZWwpIHtcclxuICAgICAgZG9jdW1lbnRJZCA9IHRoaXMuZ3JvdXAuek1vZGVsWydXRlNfRG9jdW1lbnRJZCddO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZG9jdW1lbnRJZCB0byB0aGUgc2VydmljZVxyXG4gICAgdGhpcy53b3JrZmxvd1NlcnZpY2UuYXBwZW5kV0ZTX0RvY3VtZW50c0luZm8odGhpcy5idXR0b25GaWVsZC5Xb3JrZmxvd0NvZGUsIGRvY3VtZW50SWQpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFNldCBwYXJhbSBmb3IgZmllbGRcclxuICAgICAgY29uc3QgZmllbGQkID0gdGhpcy53b3JrZmxvd1NlcnZpY2UuZ2V0V29ya2Zsb3dCdXR0b25zRmllbGQoXHJcbiAgICAgICAgdGhpcy5idXR0b25GaWVsZC5Xb3JrZmxvd0NvZGUsXHJcbiAgICAgICAgdGhpcy5lMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCxcclxuICAgICAgICBTdHJpbmcoZmFsc2UpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBmaWVsZCQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoYnV0dG9uOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRCdXR0b25MYWJlbChidXR0b24pO1xyXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG4gICAgICAgICAgY29uc3QgYnV0dG9uTGFiZWwgPSBhdHRyaWJ1dGVzLkxhYmVsIHx8IGxhYmVsO1xyXG4gICAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gdGhpcy5pc0J0blZpc2libGUoYXR0cmlidXRlcy5WaXNpYmxlKTtcclxuXHJcbiAgICAgICAgICBpZiAoaXNWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGJ1dHRvbkxhYmVsLFxyXG4gICAgICAgICAgICAgIGZpZWxkQXR0cmlidXRlOiBidXR0b24sXHJcbiAgICAgICAgICAgICAgaWNvbjogWkNvbXBvbmVudEhlbHBlci5nZXRJY29uKGF0dHJpYnV0ZXMuSWNvbiksXHJcbiAgICAgICAgICAgICAgY2xpY2tFdmVudDogYnV0dG9uLkNsaWNrRXZlbnQsXHJcbiAgICAgICAgICAgICAgY2xpY2s6ICh5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93QnV0dG9uQ2xpY2soYnV0dG9uKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy9aQ29tcG9uZW50SGVscGVyLmNvbGxlY3RXb3JrZmxvd0J1dHRvbih0aGlzLmdyb3VwLCBidXR0b25zLldvcmtmbG93Q29kZSwgYnV0dG9uTGFiZWwsIGJ1dHRvbiwgYXR0cmlidXRlcywgbWFwcGVkSW5mbyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImVycm9yOiBcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd29ya2Zsb3dCdXR0b25DbGljayhidXR0b246IGFueSkge1xyXG4gICAgLy8gVHlwZSAxID09IGZ1bmN0aW9uYWw7XHJcbiAgICAvLyBUeXBlIDIgPT0gR09UTztcclxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBKU09OLnBhcnNlKGJ1dHRvbi5BdHRyaWJ1dGVzKTtcclxuICAgIHN3aXRjaCAoYnV0dG9uLlR5cGVDb2RlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSBcIkZVTkNUSU9OXCI6XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJGdW5jdGlvbmFsIEJ1dHRvbjogXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5mdW5jdGlvbmFsQnV0dG9uX09uQ2xpY2soYXR0cmlidXRlcywgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJHT1RPXCI6XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJHT1RPIEJ1dHRvbjogXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5nb3RvQnV0dG9uX09uY2xpY2soYnV0dG9uLCB0aGlzLmJ1dHRvbkZpZWxkLCBhdHRyaWJ1dGVzLCB0aGlzLmdyb3VwLCBmYWxzZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRXb3JrZmxvd0J1dHRvbigpO1xyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS50cmlnZ2VyU2VuZEVtYWlsKHRoaXMuZ3JvdXApLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiSW52YWxpZCBCdXR0b24gVHlwZS4gXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInptZmItd3JhcCBlMXRhZy1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImstb3ZlcmxheSBlMXRhZy1zdHlsZTFcIlxyXG4gICAgICAgKm5nSWY9XCJkaWFsT3BlblwiXHJcbiAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICA8L2Rpdj5cclxuICA8a2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24gYnV0dG9uQ2xhc3M9XCJjdXN0b20tZmxvYXRpbmctYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlMXRhZy1zdHlsZTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsQ2xhc3M9XCJjdXN0b20tZmxvYXRpbmctZGlhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbk1vZGVdPVwicG9zaXRpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cImFsaWduXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpYWxJdGVtc109XCJpdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuKT1cIm9uT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cIm9uQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25DbGljayhkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWFsSXRlbUNsaWNrKT1cIm9uRGlhbEl0ZW1DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9GbG9hdGluZ0FjdGlvbkJ1dHRvblRlbXBsYXRlPlxyXG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJkYXRhLkljb24gPyBkYXRhLkljb24gOiAncGx1cydcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlM1wiXHJcbiAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiPlxyXG4gICAgICA8L2ZhLWljb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGtlbmRvRGlhbEl0ZW1UZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgIGxldC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgbGV0LWlzRm9jdXNlZD1cImlzRm9jdXNlZFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImstZmFiLWl0ZW0tdGV4dCBlMXRhZy1zdHlsZTRcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTRcIj5cclxuICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxrZW5kby1hdmF0YXIgc2hhcGU9XCJjaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0aGVtZUNvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJrLWljb24gay1pLXt7IGl0ZW0uaWNvbiB9fVwiPjwvc3Bhbj5cclxuICAgICAgPC9rZW5kby1hdmF0YXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1mYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bWZiL3ptZmIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvem1mYi96bWZiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQVF6RCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTFFLE9BQU8sRUFFTyxnQkFBZ0IsRUFDN0IsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFTekIsTUFBTSxPQUFPLGFBQWMsU0FBUSxlQUFlO0lBU2hELFlBQ1MsZ0JBQW1DLEVBQ2xDLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxlQUFnQztRQUV4QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUxoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWjFDLGlCQUFZLEdBQW9CLE9BQU8sQ0FBQztRQUN4QyxVQUFLLEdBQWEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1RCxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBb0hoQyxZQUFZO1FBRVosa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZiwyR0FBMkc7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SSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQy9HLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUUxQixtQ0FBbUM7b0JBQ25DLE1BQU0sY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDM0UsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUU7b0JBQzlFLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUUzQixJQUFJLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztxQkFDL0Q7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNSO2dCQUNFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDOzswR0FqTlUsYUFBYTs4RkFBYixhQUFhLHVFQ3hCMUIscTZEQXdDQTsyRkRoQmEsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IERpYWxJdGVtQ2xpY2tFdmVudCwgRmFiQWxpZ24sIEZhYlBvc2l0aW9uTW9kZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWJ1dHRvbnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBCdXR0b25GaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9idXR0b25maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQge1xyXG4gIEZpZWxkU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLCBXb3JrZmxvd1NlcnZpY2UsXHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LCBaQ29tcG9uZW50UHJvcGVydGllcywgWkZpZWxkLCBaR3JvdXBcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXptZmInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96bWZiLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96bWZiLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWm1mYkNvbXBvbmVudCBleHRlbmRzIEJ1dHRvbkZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcG9zaXRpb25Nb2RlOiBGYWJQb3NpdGlvbk1vZGUgPSAnZml4ZWQnO1xyXG4gIGFsaWduOiBGYWJBbGlnbiA9IHsgdmVydGljYWw6ICdib3R0b20nLCBob3Jpem9udGFsOiAnZW5kJyB9O1xyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgZGlhbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1dvcmtmbG93QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYnV0dG9uQ29sb3I6IHN0cmluZyA9ICdwcmltYXJ5JztcclxuICBwcml2YXRlIGJ1dHRvbkZpZWxkOiBaRmllbGQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdvcmtmbG93U2VydmljZTogV29ya2Zsb3dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5pbml0Q29tcG9uZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCkge1xyXG4gICAgdGhpcy5hbGlnbiA9ICh0aGlzLmRhdGFbYFBvc2l0aW9uYF0gPyBKU09OLnBhcnNlKHRoaXMuZGF0YVtgUG9zaXRpb25gXSkgOiBudWxsKSB8fCB0aGlzLmFsaWduO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5WYWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuZGF0YS5WYWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldHVwRGVmYXVsdERpYWxJdGVtcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIEVudmVudHNcclxuICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgLy9jb25zb2xlLmxvZygnYmx1cicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1dvcmtmbG93QnV0dG9uKSB7XHJcbiAgICAgIHRoaXMubG9hZFdvcmtmbG93QnV0dG9uKCk7XHJcbiAgICB9XHJcbiAgICAvL2NvbnNvbGUubG9nKCdmb2N1cycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uT3BlbihlKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxPcGVuID0gdHJ1ZTtcclxuICAgIGNvbnNvbGUubG9nKCdvcGVuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZShlKTogdm9pZCB7XHJcbiAgICAvLyBUbyBzdGltdWxhdGUgbmV2ZXIgY2xvc2VcclxuICAgIC8vIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuZGlhbE9wZW4gPSBmYWxzZTtcclxuICAgIGNvbnNvbGUubG9nKCdjbG9zZScpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRGlhbEl0ZW1DbGljayhlOiBEaWFsSXRlbUNsaWNrRXZlbnQpOiB2b2lkIHtcclxuICAgIGUuaXRlbS5jbGljaygpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIERpYWwgSXRlbSAtIEJ1dHRvbnNcclxuICBwcml2YXRlIHNldHVwRGVmYXVsdERpYWxJdGVtcygpIHtcclxuICAgIHRoaXMuYnV0dG9uRmllbGQgPSB0aGlzLmdldEZpcnN0ekJ1dHRvbih0aGlzLmdyb3VwLmZpZWxkcyk7XHJcblxyXG4gICAgaWYgKHRoaXMuYnV0dG9uRmllbGQpIHtcclxuICAgICAgaWYgKCFaQ29tcG9uZW50SGVscGVyLmlzTnVsbFVuZGVmaW5lZEVtcHR5KHRoaXMuYnV0dG9uRmllbGQuV29ya2Zsb3dDb2RlKSkge1xyXG4gICAgICAgIC8vIGhhbmRsZSBhcyB6V29ya2Zsb3dCdXR0b25cclxuICAgICAgICB0aGlzLmlzV29ya2Zsb3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZFdvcmtmbG93QnV0dG9uKCk7XHJcblxyXG4gICAgICAgIC8vT2JqZWN0LmFzc2lnbih0aGlzLmdyb3VwLCB7XHJcbiAgICAgICAgLy8gIHptZmJMaW5rZWQ6IGAke3RoaXMuZGF0YS5UeXBlfV8ke3RoaXMuZGF0YS5OYW1lfWBcclxuICAgICAgICAvL30pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkJCA9IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUodGhpcy5idXR0b25GaWVsZC5WYWx1ZSwgXCJGb3JtRmllbGRcIik7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBmaWVsZCQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBkYXRhLmZvckVhY2goKGJ1dHRvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmdldEJ1dHRvbkxhYmVsKGJ1dHRvbik7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IF9pc1Zpc2libGUgPSB0aGlzLmlzQnRuVmlzaWJsZShidXR0b24uVmlzaWJsZSk7XHJcbiAgICAgICAgICAgICAgaWYgKF9pc1Zpc2libGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgICAgICAgICAgaWNvbjogWkNvbXBvbmVudEhlbHBlci5nZXRJY29uKGJ1dHRvbi5JY29uKSxcclxuICAgICAgICAgICAgICAgICAgY2xpY2tFdmVudDogYnV0dG9uLkNsaWNrRXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGNsaWNrOiAoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uQ2xpY2soYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpcnN0ekJ1dHRvbihkYXRhOiBhbnlbXSkge1xyXG4gICAgLy8gZGF0YS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICBpZiAoZGF0YVtpXS5UeXBlID09PSBcInpidXR0b25zXCIgfHwgZGF0YVtpXS5UeXBlID09PSBcInp3b3JrZmxvd2J1dHRvbnNcIikge1xyXG4gICAgICAgIHJldHVybiBkYXRhW2ldO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbaV0uVmFsdWUpKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEZpcnN0ekJ1dHRvbihkYXRhW2ldLlZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFdvcmtmbG93XHJcbiAgLy8gVVJMIHJlcXVpcmVkXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbixuby11bmRlcnNjb3JlLWRhbmdsZSxpZC1ibGFja2xpc3QsaWQtbWF0Y2hcclxuICBlMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMXCIpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sbm8tdW5kZXJzY29yZS1kYW5nbGUsaWQtYmxhY2tsaXN0LGlkLW1hdGNoXHJcbiAgZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkxcIik7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiwgbm8tdW5kZXJzY29yZS1kYW5nbGUsIGlkLWJsYWNrbGlzdCwgaWQtbWF0Y2hcclxuICBlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXCJlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkxcIik7XHJcblxyXG5cclxuICBwcml2YXRlIGxvYWRXb3JrZmxvd0J1dHRvbigpIHtcclxuICAgIC8vICBhY3Rpb25CdG5MaXN0OiBBcnJheTxaRmllbGQ+O1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG5cclxuICAgIC8vIEdldCBXRlNfRG9jdW1lbnRJZCBpZiBhbnkuXHJcbiAgICBsZXQgZG9jdW1lbnRJZCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5ncm91cC56TW9kZWwpIHtcclxuICAgICAgZG9jdW1lbnRJZCA9IHRoaXMuZ3JvdXAuek1vZGVsWydXRlNfRG9jdW1lbnRJZCddO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZG9jdW1lbnRJZCB0byB0aGUgc2VydmljZVxyXG4gICAgdGhpcy53b3JrZmxvd1NlcnZpY2UuYXBwZW5kV0ZTX0RvY3VtZW50c0luZm8odGhpcy5idXR0b25GaWVsZC5Xb3JrZmxvd0NvZGUsIGRvY3VtZW50SWQpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFNldCBwYXJhbSBmb3IgZmllbGRcclxuICAgICAgY29uc3QgZmllbGQkID0gdGhpcy53b3JrZmxvd1NlcnZpY2UuZ2V0V29ya2Zsb3dCdXR0b25zRmllbGQoXHJcbiAgICAgICAgdGhpcy5idXR0b25GaWVsZC5Xb3JrZmxvd0NvZGUsXHJcbiAgICAgICAgdGhpcy5lMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCxcclxuICAgICAgICBTdHJpbmcoZmFsc2UpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBmaWVsZCQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoYnV0dG9uOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRCdXR0b25MYWJlbChidXR0b24pO1xyXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG4gICAgICAgICAgY29uc3QgYnV0dG9uTGFiZWwgPSBhdHRyaWJ1dGVzLkxhYmVsIHx8IGxhYmVsO1xyXG4gICAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gdGhpcy5pc0J0blZpc2libGUoYXR0cmlidXRlcy5WaXNpYmxlKTtcclxuXHJcbiAgICAgICAgICBpZiAoaXNWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGJ1dHRvbkxhYmVsLFxyXG4gICAgICAgICAgICAgIGZpZWxkQXR0cmlidXRlOiBidXR0b24sXHJcbiAgICAgICAgICAgICAgaWNvbjogWkNvbXBvbmVudEhlbHBlci5nZXRJY29uKGF0dHJpYnV0ZXMuSWNvbiksXHJcbiAgICAgICAgICAgICAgY2xpY2tFdmVudDogYnV0dG9uLkNsaWNrRXZlbnQsXHJcbiAgICAgICAgICAgICAgY2xpY2s6ICh5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93QnV0dG9uQ2xpY2soYnV0dG9uKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy9aQ29tcG9uZW50SGVscGVyLmNvbGxlY3RXb3JrZmxvd0J1dHRvbih0aGlzLmdyb3VwLCBidXR0b25zLldvcmtmbG93Q29kZSwgYnV0dG9uTGFiZWwsIGJ1dHRvbiwgYXR0cmlidXRlcywgbWFwcGVkSW5mbyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImVycm9yOiBcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd29ya2Zsb3dCdXR0b25DbGljayhidXR0b246IGFueSkge1xyXG4gICAgLy8gVHlwZSAxID09IGZ1bmN0aW9uYWw7XHJcbiAgICAvLyBUeXBlIDIgPT0gR09UTztcclxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBKU09OLnBhcnNlKGJ1dHRvbi5BdHRyaWJ1dGVzKTtcclxuICAgIHN3aXRjaCAoYnV0dG9uLlR5cGVDb2RlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSBcIkZVTkNUSU9OXCI6XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJGdW5jdGlvbmFsIEJ1dHRvbjogXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5mdW5jdGlvbmFsQnV0dG9uX09uQ2xpY2soYXR0cmlidXRlcywgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJHT1RPXCI6XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJHT1RPIEJ1dHRvbjogXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5nb3RvQnV0dG9uX09uY2xpY2soYnV0dG9uLCB0aGlzLmJ1dHRvbkZpZWxkLCBhdHRyaWJ1dGVzLCB0aGlzLmdyb3VwLCBmYWxzZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRXb3JrZmxvd0J1dHRvbigpO1xyXG5cclxuICAgICAgICAgIC8vIFJlcXVpcmUgdG8gcmVmcmVzaCB0aGUgZmlyc3R6QnRuXHJcbiAgICAgICAgICBjb25zdCBtYWluQnV0dG9uTmFtZSA9IGAke3RoaXMuYnV0dG9uRmllbGQuVHlwZX1fJHt0aGlzLmJ1dHRvbkZpZWxkLk5hbWV9YDtcclxuICAgICAgICAgIGNvbnN0IG1haW5CdXR0b24gPSBaQ29tcG9uZW50SGVscGVyLmdldENvbXBvbmVudCh0aGlzLmdyb3VwLCBtYWluQnV0dG9uTmFtZSkgO1xyXG4gICAgICAgICAgbWFpbkJ1dHRvblsnbG9hZEJ1dHRvbiddKCk7XHJcblxyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS50cmlnZ2VyU2VuZEVtYWlsKHRoaXMuZ3JvdXApLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiSW52YWxpZCBCdXR0b24gVHlwZS4gXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInptZmItd3JhcCBlMXRhZy1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImstb3ZlcmxheSBlMXRhZy1zdHlsZTFcIlxyXG4gICAgICAgKm5nSWY9XCJkaWFsT3BlblwiXHJcbiAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICA8L2Rpdj5cclxuICA8a2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24gYnV0dG9uQ2xhc3M9XCJjdXN0b20tZmxvYXRpbmctYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlMXRhZy1zdHlsZTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsQ2xhc3M9XCJjdXN0b20tZmxvYXRpbmctZGlhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbk1vZGVdPVwicG9zaXRpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cImFsaWduXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpYWxJdGVtc109XCJpdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuKT1cIm9uT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cIm9uQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25DbGljayhkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWFsSXRlbUNsaWNrKT1cIm9uRGlhbEl0ZW1DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9GbG9hdGluZ0FjdGlvbkJ1dHRvblRlbXBsYXRlPlxyXG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJkYXRhLkljb24gPyBkYXRhLkljb24gOiAncGx1cydcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlM1wiXHJcbiAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiPlxyXG4gICAgICA8L2ZhLWljb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGtlbmRvRGlhbEl0ZW1UZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgIGxldC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgbGV0LWlzRm9jdXNlZD1cImlzRm9jdXNlZFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImstZmFiLWl0ZW0tdGV4dCBlMXRhZy1zdHlsZTRcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTRcIj5cclxuICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxrZW5kby1hdmF0YXIgc2hhcGU9XCJjaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0aGVtZUNvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJrLWljb24gay1pLXt7IGl0ZW0uaWNvbiB9fVwiPjwvc3Bhbj5cclxuICAgICAgPC9rZW5kby1hdmF0YXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/********** Angular **********/
|
|
2
2
|
import { Component, ViewChild } from "@angular/core";
|
|
3
3
|
/********** Plugin **********/
|
|
4
|
-
import {
|
|
4
|
+
import { of } from "rxjs";
|
|
5
5
|
import { tap, delay } from "rxjs/operators";
|
|
6
6
|
/********** Component & Service **********/
|
|
7
7
|
import { InputFieldBase } from "../components/inputfieldbase.component";
|
|
@@ -309,18 +309,19 @@ export class ZselectmultipleComponent extends InputFieldBase {
|
|
|
309
309
|
}
|
|
310
310
|
}
|
|
311
311
|
handleFilter(searchTerm, justOneTime) {
|
|
312
|
-
|
|
313
|
-
|
|
312
|
+
if (this.multiselect) {
|
|
313
|
+
const meetsLengthCondition = this.data.SearchLength && this.data.SearchLength <= searchTerm.length;
|
|
314
|
+
this.multiselect.toggle(meetsLengthCondition);
|
|
315
|
+
}
|
|
314
316
|
const searchBy = this.data.SearchFields ?? this.itemTextField;
|
|
315
317
|
const itemsData = this.getItemsData();
|
|
316
|
-
this.
|
|
318
|
+
if (this.data.AllowCustomValue) {
|
|
319
|
+
this.checkAllowCustomValue(searchBy, searchTerm, itemsData);
|
|
320
|
+
}
|
|
317
321
|
if (this.debounceSub) {
|
|
318
322
|
this.debounceSub.unsubscribe();
|
|
319
323
|
}
|
|
320
|
-
|
|
321
|
-
.pipe(tap(() => (this.isLoading = true)), delay(500), tap(() => this.performSearch(searchTerm)), tap(() => (this.isLoading = false)))
|
|
322
|
-
.subscribe();
|
|
323
|
-
this.debounceSub = meetsLengthCondition ? searchSubscription : new Subscription();
|
|
324
|
+
this.debounceSub = of([]).pipe(tap(() => (this.isLoading = true)), delay(500), tap(() => this.performSearch(searchTerm)), tap(() => (this.isLoading = false))).subscribe();
|
|
324
325
|
}
|
|
325
326
|
performSearch(value) {
|
|
326
327
|
const searchAction = () => {
|
|
@@ -603,4 +604,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
603
604
|
type: ViewChild,
|
|
604
605
|
args: ["selectComponent"]
|
|
605
606
|
}] } });
|
|
606
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienNlbGVjdG11bHRpcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pzZWxlY3RtdWx0aXBsZS96c2VsZWN0bXVsdGlwbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenNlbGVjdG11bHRpcGxlL3pzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFLeEUsOEJBQThCO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxPQUFPLEVBRU8sZ0JBQWdCLEVBQ0csb0JBQW9CLEVBQXlCLDhCQUE4QixFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFDL0ksTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsY0FBYztJQWdEMUQsWUFDUyxnQkFBbUMsRUFDbEMsa0JBQXNDLEVBQ3RDLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLFlBQTBCO1FBRWxDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBTmhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztR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QUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxQixLQUFLLDhCQUE4QixDQUFDLFFBQVE7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hDLEtBQUssOEJBQThCLENBQUMsV0FBVztnQkFDN0MsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzFCLEtBQUssOEJBQThCLENBQUMsZUFBZTtnQkFDakQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzlCLEtBQUssOEJBQThCLENBQUMsWUFBWTtnQkFDOUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDcEM7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNILENBQUM7O3FIQS9xQlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isa21CQzNCckMsNnRXQStKQTsyRkRwSWEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHFCQUFxQjsyTkFNQyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNNLHFCQUFxQjtzQkFBeEQsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBQ1IsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNNLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNFLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50IH0gZnJvbSBcImlvbmljLXNlbGVjdGFibGVcIjtcclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFwLCBkZWxheSwgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7IFxyXG5pbXBvcnQgeyBDb21ib0JveENvbXBvbmVudCwgRHJvcERvd25GaWx0ZXJTZXR0aW5ncywgRHJvcERvd25MaXN0Q29tcG9uZW50LCBNdWx0aVNlbGVjdENvbXBvbmVudCwgTXVsdGlTZWxlY3RUcmVlQ29tcG9uZW50IH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJbnB1dEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICBSZXNvdXJjZUFwaVNlcnZpY2UsIFdlYkFwaVNlcnZpY2UsIENhY2hlU2VydmljZSwgRmllbGRTZXJ2aWNlLFxyXG4gIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRPdXRwdXRFdmVudCwgQ2xpY2thYmxlSWNvbnMsXHJcbiAgWlNlbGVjdE11bHRpcGxlVGVtcGxhdGVQYXJhbXMsIFpTZWxlY3RQb3N0QXBpUGFyYW1zLCB6U2VsZWN0TXVsdGlwbGVQYXJhbXMsIEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93biwgU2lnbmFsVHlwZSwgRHJvcGRvd25TZWFyY2hPcGVyYXRvclxyXG59IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtenNlbGVjdG11bHRpcGxlXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96c2VsZWN0bXVsdGlwbGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4venNlbGVjdG11bHRpcGxlLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWnNlbGVjdG11bHRpcGxlQ29tcG9uZW50IGV4dGVuZHMgSW5wdXRGaWVsZEJhc2UgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChcImNvbWJvYm94Q29tcG9uZW50XCIpIGNvbWJvYm94Q29tcG9uZW50OiBDb21ib0JveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwiZHJvcGRvd25saXN0Q29tcG9uZW50XCIpIGRyb3Bkb3dubGlzdENvbXBvbmVudDogRHJvcERvd25MaXN0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJtdWx0aXNlbGVjdFwiKSBtdWx0aXNlbGVjdDogTXVsdGlTZWxlY3RDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcIm11bHRpc2VsZWN0dHJlZVwiKSBtdWx0aXNlbGVjdHRyZWU6IE11bHRpU2VsZWN0VHJlZUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwic2VsZWN0Q29tcG9uZW50XCIpIHNlbGVjdENvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50O1xyXG5cclxuICBwdWJsaWMgY29tcG9uZW50VHlwZTogSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duO1xyXG4gIHByaXZhdGUgYWxsRGF0YUl0ZW1zID0gW107XHJcbiAgaWNvbkxpc3Q6IENsaWNrYWJsZUljb25zW107XHJcbiAgaXRlbXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBtb2RlbHpEYXRhOiBBcnJheTxhbnk+O1xyXG4gIGluZmluaXRlekRhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuICBpbmZpbml0ZVNlYXJjaFRleHQgPSBudWxsO1xyXG4gIC8vIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHRvZ2dsZVNlbGVjdGFibGUgPSB0cnVlO1xyXG4gIGl0ZW1WYWx1ZUZpZWxkOiBzdHJpbmcgPSBudWxsO1xyXG4gIGl0ZW1UZXh0RmllbGQ6IHN0cmluZyA9IG51bGw7XHJcbiAgaXRlbURhdGFGaWVsZDogc3RyaW5nID0gbnVsbDtcclxuICBpdGVtVGVtcGxhdGUgPSBcInt7aXRlbVtpdGVtVGV4dEZpZWxkXX19XCI7XHJcbiAgaW5maW5pdGVTY3JvbGxQYWdlTm8gPSAwO1xyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgYWxsb3dDdXN0b21WYWx1ZSA9IGZhbHNlO1xyXG4gIGF1dG9DbG9zZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHBhcnNlZEl0ZW1zRGF0YTogYW55W107XHJcbiAgZGF0YUluZm86IHt9ID0ge1xyXG4gICAgXCJpdGVtc1Jlc291cmNlVVJMXCI6IFwiXCIsXHJcbiAgICBcIm9wdGlvbkZpbHRlcnNcIjogXCJcIixcclxuICAgIFwidG90YWxDb3VudFwiOiAwXHJcbiAgfTtcclxuICBwcml2YXRlIGRlYm91bmNlU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBldmVudFN1YnNjcmlwdGlvbnMgPSBuZXcgQXJyYXk8U3Vic2NyaXB0aW9uPigpO1xyXG4gIHB1YmxpYyBleHBhbmRlZEtleXM7XHJcbiAgcHVibGljIGNvbXBvbmVudFNldHRpbmdzID0ge1xyXG4gICAga2VuZG9NdWx0aVNlbGVjdFRyZWVTdW1tYXJ5VGFnOiA5OTk5OTksXHJcbiAgICBwb3B1cFNldHRpbmdzOiBudWxsLFxyXG4gICAgZXhwYW5kT25GaWx0ZXI6IHtcclxuICAgICAgZXhwYW5kTWF0Y2hlczogdHJ1ZSxcclxuICAgICAgZXhwYW5kZWRPbkNsZWFyOiBcImluaXRpYWxcIixcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvLyBwcml2YXRlIGxvYWRJbmZpbml0ZURhdGFTdWI6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHB1YmxpYyBmaWx0ZXJTZXR0aW5nczogRHJvcERvd25GaWx0ZXJTZXR0aW5ncyA9IHtcclxuICAgIGNhc2VTZW5zaXRpdmU6IGZhbHNlLFxyXG4gICAgb3BlcmF0b3I6IFwiY29udGFpbnNcIixcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2aXJ0dWFsOiBhbnkgPSB7XHJcbiAgICBpdGVtSGVpZ2h0OiAyOCxcclxuICAgIHBhZ2VTaXplOiAxNVxyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXRDb21wb25lbnRUb1VzZSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVVSVNpZ25hbCgpO1xyXG4gICAgc3VwZXIuc2V0dXBJbm5lckZpZWxkKCk7XHJcbiAgICBzdXBlci5zZXR1cENvbXBvbmVudFNldHRpbmdzKHRoaXMuY29tcG9uZW50U2V0dGluZ3MpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRTZWxlY3RNdWx0aXBsZVRleHRWYWx1ZSh0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucywgdGhpcyk7XHJcblxyXG4gICAgLy8gW0Ryb3Bkb3dubGlzdCBNdWx0aXBsZV0gLSBhdXRvIGNsb3NlIG1lbnUgd2hlbiBsb3NlIGZvY3VzLlxyXG4gICAgaWYgKHRoaXMuZGF0YS5BdXRvQ2xvc2UgPT09IGZhbHNlKSB0aGlzLmF1dG9DbG9zZSA9IHRoaXMuZGF0YS5BdXRvQ2xvc2U7XHJcblxyXG4gICAgLy8gSGFuZGxlIENsaWNrYWJsZSBJY29uc1xyXG4gICAgdGhpcy5pY29uTGlzdCA9IHRoaXMuZGF0YS5DbGlja2FibGVJY29ucztcclxuICAgIGlmICh0aGlzLmljb25MaXN0KSB7XHJcbiAgICAgIGlmICh0aGlzLmljb25MaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmljb25MaXN0LmZvckVhY2goKGk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGkuVG9vbHRpcCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGkuVG9vbHRpcCA9IFwiXCI7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpLlRvb2x0aXAgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgaS5Ub29sdGlwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIERlZmF1bHQgcG9zaXRpb24gdG9wLiByaWdodCB8IGJvdHRvbSB8IHRvcCB8IGxlZnRcclxuICAgICAgICAgIGlmIChpLlBvc2l0aW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaS5Qb3NpdGlvbiA9IFwidG9wXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYWxsb3dDdXN0b21WYWx1ZSA9IHRoaXMuZGF0YS5BbGxvd0N1c3RvbVZhbHVlIHx8IGZhbHNlOyAvLyBBbGxvdyBlbnRlciB0ZXh0IGluIGRyb3Bkb3duYm94XHJcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5kYXRhLlZhbHVlO1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YTtcclxuICAgIGNvbnN0IHpNb2RlbCA9IHRoaXMuZ3JvdXAuek1vZGVsO1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiA0IFN0eWxlcyBvZiBkZWNsYXJlIHRoZSBjb21wb25lbnTvv71zIG9wdGlvbiBsaXN0IGRhdGEgc291cmNlLlxyXG4gICAgICogU3R5bGUgIzEgLSBGaWVsZC5TZWxlY3RPcHRpb25zIGRlZmluZWQgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0IHRoYXQgY29udGFpbiB0ZXh0IGFuZCB2YWx1ZS5cclxuICAgICAqIFN0eWxlICMyIC0gRmllbGQuU2VsZWN0T3B0aW9ucyBkZWZpbmVkIGFzIGEgcGhhc2UgbGlrZSDvv71pdGVtLklkIGFzIGl0ZW0uTmFtZSBmb3IgaXRlbSBpbiBncm91cC56RGF0YS5Qcm9qZWN0T3B0aW9uc++/vS5cclxuICAgICAqIFN0eWxlICMzIC0gRmllbGQuT3B0aW9uUmVzb3VyY2VVUkwgZGVmaW5lZCB0aGUgbmFtZSBvZiByZXNvdXJjZSBzZXJ2ZXIgYXBpLlxyXG4gICAgICogU3R5bGUgIzQgLSBGaWVsZC5JbmZpbml0ZVNjcm9sbCQgZGVmaW5lZCB0aGUgbWV0aG9kIG5hbWUgYXMg77+9Z3JvdXAuZ2V0TW9yZURhdGFBc1Njcm9sbO+/vS5cclxuICAgICAqL1xyXG5cclxuICAgIGlmIChkYXRhLkhhc0luZmluaXRlU2Nyb2xsICYmIGRhdGEuSW5maW5pdGVTY3JvbGwkKSB7XHJcbiAgICAgIC8vIHdoZW4gaW5maW5pdGllIHNjcm9sbFxyXG4gICAgICBsZXQgcmVjb3JkSWQgPSBudWxsO1xyXG4gICAgICBpZiAoek1vZGVsICYmIHpNb2RlbFtmaWVsZFZhbHVlXSkge1xyXG4gICAgICAgIC8vIGdldCB6TW9kZWwgVmFsdWVcclxuICAgICAgICByZWNvcmRJZCA9IHpNb2RlbFtmaWVsZFZhbHVlXS50b1N0cmluZygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZ2V0ekRhdGFGb3J6TW9kZWwkOiBPYnNlcnZhYmxlPGFueT4gPSBaQ29tcG9uZW50SGVscGVyLmdldEluZmluaXRlRGF0YShudWxsLCAnJywgdGhpcywgcmVjb3JkSWQpO1xyXG4gICAgICBpZiAoZ2V0ekRhdGFGb3J6TW9kZWwkKSB7XHJcbiAgICAgICAgZ2V0ekRhdGFGb3J6TW9kZWwkLnN1YnNjcmliZSgoemRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuTmFtZSwgJyAtIGluaXRpYWwgekRhdGEgbG9hZDogJywgemRhdGEpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuaXNNb2JpbGVTY3JlZW4oKSkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwsIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gU3R5bGUgIzEsICMyLCAjM1xyXG4gICAgICBjb25zdCBpc1JlcXVpcmVkID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGRhdGEuSXNSZXF1aXJlZCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLk9wdGlvblJlc291cmNlVVJMKSB7XHJcbiAgICAgICAgdGhpcy5sYXp5TG9hZERhdGFPcHRpb25zKCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25EYXRhID0gcmVzLmRhdGFTZXQgPyByZXMuZGF0YVNldCA6IHJlcztcclxuXHJcbiAgICAgICAgICBpZiAob3B0aW9uRGF0YSAmJiBvcHRpb25EYXRhLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5kYXRhLkRpc2FibGVBdXRvRmlyc3RTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvU2VsZWN0Rmlyc3RPcHRpb24oaXNSZXF1aXJlZCwgb3B0aW9uRGF0YVswXSwgZmllbGRWYWx1ZSwgek1vZGVsLklkKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5ncm91cCkge1xyXG4gICAgICAgICAgICB0aGlzLmFmdGVyTG9hZHpEYXRhT3B0aW9ucygpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhLlNlbGVjdE9wdGlvbnMpICYmIHRoaXMuZGF0YS5TZWxlY3RPcHRpb25zKSB7XHJcbiAgICAgICAgICAvL3NraXAgZXZhbCBpZiBzZWxlY3RvcHRpb25zIGlzIGV4aXN0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uRGF0YSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLml0ZW1EYXRhRmllbGQpO1xyXG4gICAgICAgICAgLy8gYXBwZW5kIGRhdGEgdmlhIHRpbWVvdXQgYWZ0ZXIgZGF0YSBpcyBsb2FkZWQuXHJcbiAgICAgICAgICBpZiAob3B0aW9uRGF0YSAmJiBvcHRpb25EYXRhLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5kYXRhLkRpc2FibGVBdXRvRmlyc3RTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgY29uc3QgdGhpc0NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnQuYXV0b1NlbGVjdEZpcnN0T3B0aW9uKGlzUmVxdWlyZWQsIG9wdGlvbkRhdGFbMF0sIGZpZWxkVmFsdWUsIHRoaXNDb21wb25lbnQuZ3JvdXAuek1vZGVsLklkKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5TZWFyY2hPcGVyYXRvciA9PT0gRHJvcGRvd25TZWFyY2hPcGVyYXRvci5TdGFydHNXaXRoKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2V0dGluZ3Mub3BlcmF0b3IgPSAnc3RhcnRzV2l0aCc7XHJcbiAgICB9IFxyXG5cclxuICAgIHN1cGVyLmZvY3VzT25EZWZhdWx0KHRoaXMuZm9jdXMuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIC8vIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmV2ZW50U3Vic2NyaXB0aW9ucykge1xyXG4gICAgICBpZiAoZSAmJiAhZS5jbG9zZWQpIHtcclxuICAgICAgICBlLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEF1dG8gc2VsZWN0IGZpcnN0IG9wdGlvbiAoaWYgcmVxdWlyZWQgJiBvbmx5IDEgb3B0aW9uKVxyXG4gIHByaXZhdGUgYXV0b1NlbGVjdEZpcnN0T3B0aW9uKHJlcXVpcmVkOiBib29sZWFuLCBkYXRhOiBhbnksIHpNb2RlbFByb3BlcnR5TmFtZTogc3RyaW5nLCBpZDogYW55KSB7XHJcbiAgICBpZiAoWkNvbXBvbmVudEhlbHBlci5pc051bGxVbmRlZmluZWRFbXB0eShpZCkgJiYgcmVxdWlyZWQpIHtcclxuICAgICAgdmFyIG9wdGlvbklkID0gZGF0YS5JZDtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5NdWx0aXBsZSkge1xyXG4gICAgICAgIG9wdGlvbklkID0gW29wdGlvbklkXTtcclxuICAgICAgfVxyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUoek1vZGVsUHJvcGVydHlOYW1lLCBvcHRpb25JZCwgdGhpcy5ncm91cCk7XHJcblxyXG4gICAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgICAgdHlwZTogXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgIHRhcmdldDogdGhpcy5kYXRhLk9uQ2hhbmdlLFxyXG4gICAgICAgIGV2ZW50LFxyXG4gICAgICAgIGRhdGE6IHsgWyd2YWx1ZSddOiBvcHRpb25JZCwgZmllbGQ6IHRoaXMuZGF0YSB9XHJcbiAgICAgIH0gYXMgWkNvbXBvbmVudE91dHB1dEV2ZW50KTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU3R5bGUgIzNcclxuICBsYXp5TG9hZERhdGFPcHRpb25zKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCByZXNvdXJjZVVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcclxuICAgICAgdGhpcy5kYXRhLk9wdGlvblJlc291cmNlVVJMXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlclBhcmFtID0gbmV3IFpTZWxlY3RQb3N0QXBpUGFyYW1zKCk7XHJcbiAgICBmaWx0ZXJQYXJhbS5zb3J0cyA9IHRoaXMuZGF0YS5PcHRpb25Tb3J0O1xyXG4gICAgZmlsdGVyUGFyYW0uY29sdW1ucyA9IHRoaXMuZGF0YS5PcHRpb25Db2x1bW5zO1xyXG4gICAgZmlsdGVyUGFyYW0uZmlsdGVycyA9IHRoaXMuZGF0YS5PcHRpb25GaWx0ZXI7XHJcblxyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuZ2V0RGF0YU9wdGlvbnMoXHJcbiAgICAgIHRoaXMuZGF0YS5PcHRpb25OYW1lLFxyXG4gICAgICBmaWx0ZXJQYXJhbSxcclxuICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgcmVzb3VyY2VVcmwsXHJcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLFxyXG4gICAgICB0aGlzLndlYkFwaVNlcnZpY2UsXHJcbiAgICAgIHRoaXMuZGF0YVsnRGlzYWJsZUNhY2hlJ11cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBTdHlsZSAjNCwgdXNlZCBpbiBpb25pYy1zZWxlY3RhYmxlXHJcbiAgZ2V0SW5maW5pdGVEYXRhKGV2ZW50OiB7XHJcbiAgICBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDtcclxuICAgIHRleHQ6IHN0cmluZztcclxuICB9KSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmdldEluZmluaXRlRGF0YShldmVudC5jb21wb25lbnQsIGV2ZW50LnRleHQsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXNEYXRhKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbmZpbml0ZXpEYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wdGlvbk5hbWUgPSB0aGlzLmRhdGEuT3B0aW9uTmFtZSB8fCB0aGlzLml0ZW1EYXRhRmllbGQgfHwgJ2dyb3VwLnpEYXRhLicgKyB0aGlzLmRhdGEuTmFtZTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5TZWxlY3RPcHRpb25zKSAmJiAhdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0pIHtcclxuICAgICAgLy8gcmV0dXJuIHNlbGVjdGlvbk9wdGlvbnM7XHJcbiAgICAgIC8vIHJldHVybiB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0gPSB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5pdGVtRGF0YUZpZWxkID0gb3B0aW9uTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCd6RGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLnpEYXRhLicpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwW29wdGlvbk5hbWUuc2xpY2UoNildIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbk5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBbb3B0aW9uTmFtZV0gfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLndhcm4odGhpcy5kYXRhLk5hbWUsICcgLSBJbnZhbGlkIHNldHRpbmcgZm9yIE9wdGlvbk5hbWU6ICcsIG9wdGlvbk5hbWUpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZXZlbnQ6IHsgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7IHRleHQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkF0IHpzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQgKG9uU2VhcmNoKTogXCIsIGV2ZW50KTtcclxuICAgIC8vIGV2ZW50LmNvbXBvbmVudCBpcyBmb3IgbW9iaWxlIG9ubHlcclxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBldmVudC50ZXh0OyBcclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IGV2ZW50LmNvbXBvbmVudDtcclxuXHJcbiAgICAvLyBTdGFydCBzZWFyY2ggYW5kIGVuYWJsZSBpbmZpbml0ZSBzY3JvbGxpbmcgb24gdGhlIGNvbXBvbmVudCBpZiBhdmFpbGFibGVcclxuICAgIGNvbXBvbmVudD8uc3RhcnRTZWFyY2goKTtcclxuICAgIGNvbXBvbmVudD8uZW5hYmxlSW5maW5pdGVTY3JvbGwoKTtcclxuXHJcbiAgICAvLyBSZXNldCBwYWdpbmcgYW5kIGNsZWFyIGRhdGEgaWYgbmV3IHNlYXJjaCB0ZXh0IGlzIGRldGVjdGVkIG9yIGluZmluaXRlIHNjcm9sbGluZyBpcyBlbmFibGVkXHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIGlmIChzZWFyY2hUZXJtICE9PSBudWxsICYmIHNlYXJjaFRlcm0gIT09IHRoaXMuaW5maW5pdGVTZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2VObyA9IDA7XHJcbiAgICAgICAgdGhpcy5tb2RlbHpEYXRhID0gW107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRJbmZpbml0ZURhdGEoZXZlbnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIFJlc2V0IHNjcm9sbCBwYWdlLCBlbXB0eSBpdGVtc1xyXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICAgICAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgICAgIGNvbXBvbmVudC5pdGVtcyA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBQcmVwYXJlIGRlZmF1bHQgcGFyYW1ldGVycyBmb3IgaXRlbSBmaWx0ZXJpbmdcclxuICAgICAgY29uc3QgcGFyYW1zOiB6U2VsZWN0TXVsdGlwbGVQYXJhbXMgPSB7XHJcbiAgICAgICAgcmVmZXJJZDogbnVsbCxcclxuICAgICAgICBwYWdlTm86IDAsXHJcbiAgICAgICAgcGFnZVNpemU6IDIwLFxyXG4gICAgICAgIHNvcnRDb2x1bW5OYW1lOiBcIlwiLFxyXG4gICAgICAgIHNvcnRPcmRlcjogXCJcIixcclxuICAgICAgICBzb3J0Q29sdW1uTmFtZXM6IFtdLFxyXG4gICAgICAgIHNvcnRPcmRlcnM6IFtdLFxyXG4gICAgICAgIGZpbHRlclBhcmFtczogW10sXHJcbiAgICAgICAgcGFyYW1ldGVyczogXCJcIlxyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3Qgc2VhcmNoQnkgPSB0aGlzLmRhdGEuU2VhcmNoRmllbGRzID8/IHRoaXMuaXRlbVRleHRGaWVsZDtcclxuICAgICAgY29uc3QgaXRlbXNEYXRhID0gdGhpcy5nZXRJdGVtc0RhdGEoKTtcclxuICAgICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9IFpDb21wb25lbnRIZWxwZXIuZmlsdGVyU2VhcmNoSXRlbXMoXHJcbiAgICAgICAgaXRlbXNEYXRhLFxyXG4gICAgICAgIHNlYXJjaFRlcm0sXHJcbiAgICAgICAgc2VhcmNoQnksXHJcbiAgICAgICAgcGFyYW1zLnBhZ2VObyxcclxuICAgICAgICBwYXJhbXMucGFnZVNpemUsXHJcbiAgICAgICAgdGhpcy5kYXRhLlNlYXJjaE9wZXJhdG9yXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmNoZWNrQWxsb3dDdXN0b21WYWx1ZShzZWFyY2hCeSwgc2VhcmNoVGVybSwgZmlsdGVyZWRJdGVtcywgaXRlbXNEYXRhKTtcclxuICAgICAgIFxyXG4gICAgICAvLyBVcGRhdGUgY29tcG9uZW50IGl0ZW1zIGFuZCBoYW5kbGUgc2VhcmNoIGNvbXBsZXRpb25cclxuICAgICAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgICAgIGNvbXBvbmVudC5pdGVtcyA9IFsuLi5jb21wb25lbnQuaXRlbXMsIC4uLmZpbHRlcmVkSXRlbXNdO1xyXG4gICAgICAgIGNvbXBvbmVudC5lbmRJbmZpbml0ZVNjcm9sbCgpO1xyXG4gICAgICAgIGNvbXBvbmVudC5lbmRTZWFyY2goKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrQWxsb3dDdXN0b21WYWx1ZShzZWFyY2hCeTogc3RyaW5nLCBzZWFyY2hUZXJtOnN0cmluZywgZmlsdGVyZWRJdGVtczogYW55W10sIGl0ZW1zRGF0YT86IGFueSkge1xyXG4gICAgLy8gQWxsb3cgY3VzdG9tIHZhbHVlIHVubGVzcyBhIGRpcmVjdCBtYXRjaCBpcyBmb3VuZFxyXG4gICAgdGhpcy5hbGxvd0N1c3RvbVZhbHVlID0gdGhpcy5kYXRhLkFsbG93Q3VzdG9tVmFsdWU7XHJcbiAgICBsZXQgc2VhcmNoRmllbGRzOiBzdHJpbmdbXTtcclxuICAgIGlmIChzZWFyY2hCeSkge1xyXG4gICAgICBzZWFyY2hGaWVsZHMgPSBzZWFyY2hCeS5yZXBsYWNlKC9cXHMvZywgXCJcIikuc3BsaXQoXCIsXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VhcmNoRmllbGRzID0gT2JqZWN0LmtleXMoaXRlbXNEYXRhWzBdKTtcclxuICAgIH1cclxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBmaWx0ZXJpdGVtcyB0byBjaGVjayBpZiBhbnkgaXRlbSBtYXRjaGVzIHNlYXJjaFRleHQgaW4gYW55IG9mIHRoZSBzZWFyY2hGaWVsZHMgXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsdGVyZWRJdGVtcykge1xyXG4gICAgICAvLyBDaGVjayBlYWNoIHNlYXJjaEZpZWxkIGZvciBzZWFyY2hUZXh0XHJcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2Ygc2VhcmNoRmllbGRzKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1bZmllbGRdICYmIGl0ZW1bZmllbGRdID09PSBzZWFyY2hUZXJtKSB7XHJcbiAgICAgICAgICB0aGlzLmFsbG93Q3VzdG9tVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrOyAvLyBCcmVhayB0aGUgaW5uZXIgbG9vcCBzaW5jZSB3ZSd2ZSBmb3VuZCBhIG1hdGNoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gICAgICAgXHJcbiAgaGFuZGxlRmlsdGVyKHNlYXJjaFRlcm06IGFueSwganVzdE9uZVRpbWU/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBtZWV0c0xlbmd0aENvbmRpdGlvbiA9IHRoaXMuZGF0YS5TZWFyY2hMZW5ndGggJiYgdGhpcy5kYXRhLlNlYXJjaExlbmd0aCA8PSBzZWFyY2hUZXJtLmxlbmd0aDtcclxuICAgIHRoaXMubXVsdGlzZWxlY3QudG9nZ2xlKG1lZXRzTGVuZ3RoQ29uZGl0aW9uKTtcclxuXHJcbiAgICBjb25zdCBzZWFyY2hCeSA9IHRoaXMuZGF0YS5TZWFyY2hGaWVsZHMgPz8gdGhpcy5pdGVtVGV4dEZpZWxkO1xyXG4gICAgY29uc3QgaXRlbXNEYXRhID0gdGhpcy5nZXRJdGVtc0RhdGEoKTtcclxuICAgIHRoaXMuY2hlY2tBbGxvd0N1c3RvbVZhbHVlKHNlYXJjaEJ5LCBzZWFyY2hUZXJtLCBpdGVtc0RhdGEpO1xyXG5cclxuICAgIGlmICh0aGlzLmRlYm91bmNlU3ViKSB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWFyY2hTdWJzY3JpcHRpb24gPSBvZihbXSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IHRydWUpKSxcclxuICAgICAgICBkZWxheSg1MDApLFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLnBlcmZvcm1TZWFyY2goc2VhcmNoVGVybSkpLFxyXG4gICAgICAgIHRhcCgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuZGVib3VuY2VTdWIgPSBtZWV0c0xlbmd0aENvbmRpdGlvbiA/IHNlYXJjaFN1YnNjcmlwdGlvbiA6IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGVyZm9ybVNlYXJjaCh2YWx1ZTogYW55KSB7XHJcbiAgICBjb25zdCBzZWFyY2hBY3Rpb24gPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMub25TZWFyY2goeyBjb21wb25lbnQ6IG51bGwsIHRleHQ6IHZhbHVlIH0pO1xyXG4gICAgICBpZiAodGhpcy5ncm91cCkge1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGEuU2VhcmNoTGVuZ3RoIHx8IHRoaXMuZGF0YS5TZWFyY2hMZW5ndGggPD0gdmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHNlYXJjaEFjdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlTGF6eUxvYWRGaWx0ZXIodmFsdWU6IGFueSwganVzdE9uZVRpbWU/OiBib29sZWFuKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICh0aGlzLmRlYm91bmNlU3ViKSB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRlYm91bmNlU3ViID0gb2YoW10pLnBpcGUoZGVsYXkoNTAwKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHsgY29tcG9uZW50OiBudWxsLCB0ZXh0OiB2YWx1ZSB9KTtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICBpZiAodGhpcy5ncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnMpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXAuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKHRoaXMuZ3JvdXAsIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT3BlbihldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgLy8gRW5zdXJlIG11bHRpc2VsZWN0IHZhbHVlIG1lZXRzIHRoZSBzZWFyY2ggbGVuZ3RoIHJlcXVpcmVtZW50XHJcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCAmJiB0aGlzLmRhdGEuU2VhcmNoTGVuZ3RoICYmIHRoaXMubXVsdGlzZWxlY3QudmFsdWUubGVuZ3RoIDwgdGhpcy5kYXRhLlNlYXJjaExlbmd0aCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm47IC8vIEVhcmx5IHJldHVybiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBjaGVja3NcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsb3NlKGV2ZW50PzogRXZlbnQpIHsgXHJcbiAgfVxyXG5cclxuICBoYW5kbGVCbHVyKCkge1xyXG4gICAgLy8gdGhpcy5oYW5kbGVDbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEl0ZW1UZW1wbGF0ZShcclxuICAgIGl0ZW06IGFueSxcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGdyb3VwOiBhbnksXHJcbiAgICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nLFxyXG4gICAgaXRlbVRleHRGaWVsZDogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICAvLyBUb0RPOiBpdGVtVmFsdWVGaWVsZCBhbmQgaXRlbVRleHRGaWVsZFxyXG4gICAgaWYgKHRoaXMuZGF0YS5JdGVtVGVtcGxhdGUpIHtcclxuICAgICAgY29uc3QgZ2V0VGVtcGxhdGVGdW5jID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5JdGVtVGVtcGxhdGUpO1xyXG5cclxuICAgICAgcmV0dXJuIGdldFRlbXBsYXRlRnVuYyh7XHJcbiAgICAgICAgaXRlbSxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGdyb3VwLFxyXG4gICAgICAgIGl0ZW1WYWx1ZUZpZWxkLFxyXG4gICAgICAgIGl0ZW1UZXh0RmllbGRcclxuICAgICAgfSBhcyBaU2VsZWN0TXVsdGlwbGVUZW1wbGF0ZVBhcmFtcyk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW1UZXh0RmllbGQpIHtcclxuICAgICAgcmV0dXJuIGl0ZW1baXRlbVRleHRGaWVsZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyByZXR1cm4gaXRlbVtpdGVtVGV4dEZpZWxkXTtcclxuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaXRlbSkuam9pbihcIiwgXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BZGRJdGVtKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGYgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9uQWRkSXRlbSk7XHJcbiAgICBpZiAodHlwZW9mIGYgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSBmLmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICByZXR1cm4gY2FsbEZ1bmMoKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUud2FybignSW52YWxpZCBkZWNsYXJhdGlvbiBvZiBPbkFkZEl0ZW06ICcsIGYpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29tcG9uZW50IGJhc2ljIGZ1bmN0aW9uXHJcbiAgY2xlYXJEYXRhKCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKHRoaXMuZGF0YS5WYWx1ZSwgXCJcIiwgdGhpcy5ncm91cCk7XHJcbiAgfVxyXG5cclxuICBjbGVhckl0ZW1zKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25maXJtSXRlbXMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY29uZmlybSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlSXRlbXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC50b2dnbGVJdGVtcyh0aGlzLnRvZ2dsZVNlbGVjdGFibGUpO1xyXG4gICAgdGhpcy50b2dnbGVTZWxlY3RhYmxlID0gIXRoaXMudG9nZ2xlU2VsZWN0YWJsZTtcclxuXHJcbiAgICAvLyBDb25maXJtIGl0ZW1zIGFuZCBjbG9zZSBTZWxlY3QgcGFnZVxyXG4gICAgLy8gd2l0aG91dCBoYXZpbmcgdGhlIHVzZXIgdG8gY2xpY2sgQ29uZmlybSBidXR0b24uXHJcbiAgICAvLyB0aGlzLmNvbmZpcm0oKTtcclxuICB9XHJcblxyXG4gIC8vIERpc2FibGUgT3BlbiBPbiBGb2N1c1xyXG4gIGRpc2FibGVPcGVuT25Gb2N1cyhjb21ib2JveENvbXBvbmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkRpc2FibGVPcGVuT25Gb2N1cykge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gY29tYm9ib3hDb21wb25lbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBPbkNoYW5nZVxyXG4gIHB1YmxpYyBvbkNoYW5nZV9kZXNrdG9wKGV2ZW50OiBhbnkpIHtcclxuICAgIHN1cGVyLm9uQ2hhbmdlKG51bGwsIGV2ZW50KVxyXG4gICAgdGhpcy5oYW5kbGVJbmZpbml0ZVNjcm9sbE9uQ2hhbmdlKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZV9tb2JpbGUoZXZlbnQ6IHsgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7IHZhbHVlOiBhbnkgfSkge1xyXG4gICAgc3VwZXIub25DaGFuZ2UoZXZlbnQpXHJcbiAgICBjb25zdCBmYyA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgdGhpcy5oYW5kbGVDbG9zZShudWxsKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHN1cGVyLmdldElzUmVxdWlyZWRWYWx1ZSgpICYmIChldmVudC52YWx1ZSA9PT0gbnVsbCB8fCBldmVudC52YWx1ZS5sZW5ndGggPT09IDApXHJcbiAgICApIHtcclxuICAgICAgZmMuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmYy5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVJbmZpbml0ZVNjcm9sbE9uQ2hhbmdlKGV2ZW50LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSW5maW5pdGVTY3JvbGxPbkNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsICYmICEhdGhpcy5kYXRhLkluZmluaXRlU2Nyb2xsJCkge1xyXG4gICAgICBjb25zdCB0ZXh0RmllbGQgPSB0aGlzLml0ZW1UZXh0RmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgY29uc3QgdmFsdWVGaWVsZCA9IHRoaXMuaXRlbVZhbHVlRmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgbGV0IHpkYXRhTW9kZWwgPSBbXTtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgemRhdGFNb2RlbCA9IHRoaXMuaW5maW5pdGV6RGF0YS5maWx0ZXIoeCA9PiB4W3ZhbHVlRmllbGRdID09PSB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5tb2RlbHpEYXRhID0gemRhdGFNb2RlbC5zbGljZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLml0ZW1EYXRhRmllbGQuc3RhcnRzV2l0aCgnZ3JvdXAuekRhdGEuJykpIHtcclxuICAgICAgICB0aGlzLmdyb3VwLnpEYXRhW3RoaXMuaXRlbURhdGFGaWVsZC5zbGljZSgxMildID0gemRhdGFNb2RlbDtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLml0ZW1EYXRhRmllbGQuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICB0aGlzLmdyb3VwW3RoaXMuaXRlbURhdGFGaWVsZC5zbGljZSg2KV0gPSB6ZGF0YU1vZGVsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBNdWx0aSBTZWxlY3Rpb24gVHJlZVxyXG4gIHB1YmxpYyBoYXNDaGlsZHJlbiA9IChkYXRhaXRlbTogYW55KTogYm9vbGVhbiA9PiAhIWRhdGFpdGVtWydpdGVtcyddO1xyXG5cclxuICBwdWJsaWMgaGFuZGxlTXVsdGlTZWxlY3RUcmVlRmlsdGVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyc2VkSXRlbXNEYXRhID0gdGhpcy5vbk11bHRpU2VsZWN0VHJlZVNlYXJjaCh0aGlzLmdldEl0ZW1zRGF0YSgpLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25NdWx0aVNlbGVjdFRyZWVTZWFyY2goaXRlbXM6IGFueVtdLCBzZWFyY2hlZFRleHQ6IHN0cmluZyk6IGFueVtdIHtcclxuICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jb250YWlucyhpdGVtW3RoaXMuaXRlbVRleHRGaWVsZF0sIHNlYXJjaGVkVGV4dCkpIHtcclxuICAgICAgICBhY2MucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChpdGVtWydpdGVtcyddICYmIGl0ZW1bJ2l0ZW1zJ10ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gdGhpcy5vbk11bHRpU2VsZWN0VHJlZVNlYXJjaChpdGVtWydpdGVtcyddLCBzZWFyY2hlZFRleHQpO1xyXG5cclxuICAgICAgICBpZiAobmV3SXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgX2l0ZW0gPSBPYmplY3QuYXNzaWduKHt9LCBpdGVtKTtcclxuICAgICAgICAgIF9pdGVtWydpdGVtcyddID0gbmV3SXRlbXM7XHJcblxyXG4gICAgICAgICAgYWNjLnB1c2goX2l0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIFtdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb250YWlucyh0ZXh0OiBzdHJpbmcsIHNlYXJjaGVkVGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKChzZWFyY2hlZFRleHQgfHwgXCJcIikudG9Mb3dlckNhc2UoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2VsZWN0T3B0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IG9wdGlvbk5hbWUgPSB0aGlzLmRhdGEuT3B0aW9uTmFtZSB8fCB0aGlzLml0ZW1EYXRhRmllbGQ7XHJcbiAgICB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oW10sIHZhbHVlKTtcclxuICAgIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildID0gdGhpcy5kYXRhLlNlbGVjdE9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9jdXMoKSB7XHJcbiAgICBpZiAodGhpcy5jb21ib2JveENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmNvbWJvYm94Q29tcG9uZW50LmZvY3VzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcclxuICAgICAgdGhpcy5tdWx0aXNlbGVjdC5mb2N1cygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0dHJlZSkge1xyXG4gICAgICB0aGlzLm11bHRpc2VsZWN0dHJlZS5mb2N1cygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRyb3Bkb3dubGlzdENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3dubGlzdENvbXBvbmVudC5mb2N1cygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29tcG9uZW50VG9Vc2UoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkludGVybmFsQ29tcG9uZW50VHlwZSAmJiBPYmplY3QudmFsdWVzKEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bikuaW5jbHVkZXModGhpcy5kYXRhLkludGVybmFsQ29tcG9uZW50VHlwZSBhcyBhbnkpKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50VHlwZSA9IHRoaXMuZGF0YS5JbnRlcm5hbENvbXBvbmVudFR5cGUgYXMgYW55O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIXRoaXMuZGF0YS5NdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFR5cGUgPSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24uY29tYm9ib3g7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmRhdGEuTXVsdGlwbGUgJiYgIXRoaXMuZGF0YS5FbmFibGVDaGVja2JveCkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFR5cGUgPSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24ubXVsdGlzZWxlY3Q7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmRhdGEuTXVsdGlwbGUgJiYgdGhpcy5kYXRhLkVuYWJsZUNoZWNrYm94KSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50VHlwZSA9IEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bi5tdWx0aXNlbGVjdHRyZWU7XHJcbiAgICAgIHRoaXMuc2V0dXBEYXRhSXRlbXMoKTtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0RXhwYW5kYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERhdGFJdGVtcygpOiBBcnJheTxhbnk+IHtcclxuICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsRGF0YUl0ZW1zLmZpbHRlcih4ID0+IG1vZGVsVmFsdWUuaW5jbHVkZXMoeFt0aGlzLml0ZW1WYWx1ZUZpZWxkIHx8ICdJZCddKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwRGF0YUl0ZW1zKCkge1xyXG4gICAgY29uc3QgbW9kZWxWYWx1ZSA9IHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBpZiAobW9kZWxWYWx1ZSAmJiBtb2RlbFZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wb3B1bGF0ZURhdGFXaXRob3V0SGllcmFyY2h5KHRoaXMuZ2V0SXRlbXNEYXRhKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZURhdGFXaXRob3V0SGllcmFyY2h5KGRhdGFJdGVtcykge1xyXG4gICAgZm9yIChjb25zdCBkYXRhSXRlbSBvZiBkYXRhSXRlbXMpIHtcclxuICAgICAgdGhpcy5hbGxEYXRhSXRlbXMucHVzaChkYXRhSXRlbSk7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFJdGVtLlZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVEYXRhV2l0aG91dEhpZXJhcmNoeShkYXRhSXRlbS5WYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREZWZhdWx0RXhwYW5kYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuVHJlZUxpc3RJbml0aWFsbHlFeHBhbmRlZERhdGFJZHMpIHtcclxuICAgICAgY29uc3QgaWRMaXN0ID0gdHlwZW9mIHRoaXMuZGF0YS5UcmVlTGlzdEluaXRpYWxseUV4cGFuZGVkRGF0YUlkcyA9PSAnc3RyaW5nJyA/IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmRhdGEuVHJlZUxpc3RJbml0aWFsbHlFeHBhbmRlZERhdGFJZHMgYXMgc3RyaW5nLCB0aGlzLmdyb3VwKSA6IHRoaXMuZGF0YS5UcmVlTGlzdEluaXRpYWxseUV4cGFuZGVkRGF0YUlkcztcclxuICAgICAgaWYgKGlkTGlzdCAmJiBBcnJheS5pc0FycmF5KGlkTGlzdCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkS2V5cyA9IGlkTGlzdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZnRlckxvYWR6RGF0YU9wdGlvbnMoKSB7XHJcbiAgICBpZiAodGhpcy5ncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnMpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnMgdHJpZ2dlcmVkLlwiICsgdGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5ncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnModGhpcy5ncm91cCwgdGhpcy5kYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBDbG9zZSBkcm9wLWRvd24gc2VsZWN0aW9uIHVwb24gcGFnZSBzY3JvbGxcclxuICBwcml2YXRlIHN1YnNjcmliZVVJU2lnbmFsKCkge1xyXG4gICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLnVpU2lnbmFsU2VydmljZS5zdWJzY3JpYmVUb0V2ZW50KFNpZ25hbFR5cGUuUGFnZVNjcm9sbFN0YXJ0KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xvc2VEb3duRHJvcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsb3NlRG93bkRyb3AoKSB7XHJcbiAgICBjb25zdCBjb21wID0gdGhpcy5nZXRDb21wb25lbnRJblVzZUJ5VHlwZSgpO1xyXG4gICAgaWYgKGNvbXAgJiYgY29tcC5pc09wZW4pIHtcclxuICAgICAgY29tcC50b2dnbGUoZmFsc2UpO1xyXG4gICAgICBjb21wLmJsdXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50SW5Vc2VCeVR5cGUoKTogQ29tYm9Cb3hDb21wb25lbnQgfCBEcm9wRG93bkxpc3RDb21wb25lbnQgfCBNdWx0aVNlbGVjdENvbXBvbmVudCB8IE11bHRpU2VsZWN0VHJlZUNvbXBvbmVudCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuY29tcG9uZW50VHlwZSkge1xyXG4gICAgICBjYXNlIEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bi5jb21ib2JveDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21ib2JveENvbXBvbmVudDtcclxuICAgICAgY2FzZSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24ubXVsdGlzZWxlY3Q6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlzZWxlY3Q7XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duLm11bHRpc2VsZWN0dHJlZTpcclxuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aXNlbGVjdHRyZWU7XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duLmRyb3Bkb3dubGlzdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93bmxpc3RDb21wb25lbnQ7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJ6c2VsZWN0bXVsdGlwbGUtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8aW9uaWMtc2VsZWN0YWJsZSAqbmdJZj1cImlzTW9iaWxlU2NyZWVuKClcIiAjc2VsZWN0Q29tcG9uZW50IGl0ZW0tY29udGVudCBzZWFyY2hGYWlsVGV4dD1cIk5vdGhpbmcgZm91bmQgOihcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNvbG9yPVwicHJpbWFyeVwiIGNsZWFyQnV0dG9uVGV4dD1cIkNsZWFyXCIgWyhuZ01vZGVsKV09XCJncm91cC56TW9kZWxbZGF0YS5WYWx1ZV1cIiBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImdldEl0ZW1zRGF0YSgpXCIgW2l0ZW1WYWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCIgW2l0ZW1UZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NhbkFkZEl0ZW1dPVwiISFkYXRhLk9uQWRkSXRlbVwiIFtjYW5DbGVhcl09XCJ0cnVlXCIgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjYW5TZWFyY2hdPVwiIWRhdGFbJ2Rpc2FibGUtc2VhcmNoJ11cIiBbc2hvdWxkRm9jdXNTZWFyY2hiYXJdPVwiIWRhdGFbJ2Rpc2FibGUtc2VhcmNoJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtoYXNJbmZpbml0ZVNjcm9sbF09XCIhIWRhdGEuSGFzSW5maW5pdGVTY3JvbGxcIiBbaXNNdWx0aXBsZV09XCJkYXRhLk11bHRpcGxlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNFbmFibGVkXT1cIiEoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG91bGRTdG9yZUl0ZW1WYWx1ZV09XCJ0cnVlXCIgKG9uU2VhcmNoKT1cIm9uU2VhcmNoKCRldmVudClcIiAob25JbmZpbml0ZVNjcm9sbCk9XCJnZXRJbmZpbml0ZURhdGEoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uQWRkSXRlbSk9XCJvbkFkZEl0ZW0oJGV2ZW50KVwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZV9tb2JpbGUoJGV2ZW50KVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiIGNsYXNzPVwiZTF0YWctc3R5bGUxXCI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIGlvbmljU2VsZWN0YWJsZUl0ZW1JY29uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWlzSXRlbVNlbGVjdGVkPVwiaXNJdGVtU2VsZWN0ZWRcIj5cclxuICAgICAgPGZhLWljb24gc2xvdD1cInN0YXJ0XCIgY2xhc3M9XCJpc0l0ZW1TZWxlY3RlZCBlMXRhZy1zdHlsZTJcIiBzaXplPVwic21cIiBbaWNvbl09XCJbJ2ZhcicsIGlzSXRlbVNlbGVjdGVkID8gJ2NoZWNrLWNpcmNsZSc6ICdjaXJjbGUnXVwiXHJcbiAgICAgICAgICAgICAgIFtzdHlsZXNdPVwieydjb2xvcic6IGlzSXRlbVNlbGVjdGVkID8gJ2RvZGdlckJsdWUnIDogJ2xpZ2h0R3JheSd9XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+PC9mYS1pY29uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlQ2xvc2VCdXR0b25UZW1wbGF0ZT5cclxuICAgICAgPCEtLSA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZVwiPjwvaW9uLWljb24+IC0tPlxyXG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCIndGltZXMtY2lyY2xlJ1wiIHNpemU9XCJtZFwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiIGNsYXNzPVwiZTF0YWctc3R5bGUzXCI+PC9mYS1pY29uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlVGl0bGVUZW1wbGF0ZT5cclxuICAgICAgPHNwYW4gY2xhc3M9ZTF0YWctc3R5bGU0IFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPnt7ZGF0YS5MYWJlbH19PC9zcGFuPlxyXG4gICAgICA8aW9uLXRleHQgKm5nSWY9XCJnZXRJc1JlcXVpcmVkVmFsdWUoKVwiIGNvbG9yPVwiZGFuZ2VyXCI+KjwvaW9uLXRleHQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBpb25pY1NlbGVjdGFibGVJdGVtVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZTF0YWctc3R5bGU1XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+e3sgZ2V0SXRlbVRlbXBsYXRlKGl0ZW0sIGRhdGEsIGdyb3VwLCBpdGVtVmFsdWVGaWVsZCwgaXRlbVRleHRGaWVsZCkgfX08L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvaW9uaWMtc2VsZWN0YWJsZT5cclxuICA8a2VuZG8tY29tYm9ib3ggKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSAmJiBjb21wb25lbnRUeXBlID09ICdjb21ib2JveCdcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkIGUxdGFnLXN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgICNjb21ib2JveENvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRJdGVtc0RhdGEoKSB8IHpzZWxlY3RUcmFuc2xhdGlvblBhcnNlciA6IGl0ZW1UZXh0RmllbGQgOiBkYXRhIDogZ3JvdXAgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbV09XCJhbGxvd0N1c3RvbVZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW2tlbmRvRHJvcERvd25GaWx0ZXJdPVwiZmlsdGVyU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICBbc3VnZ2VzdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwiZGF0YS5GaWx0ZXJhYmxlID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW29wZW5PbkZvY3VzXT1cImRpc2FibGVPcGVuT25Gb2N1cyhjb21ib2JveENvbXBvbmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VfZGVza3RvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJoYW5kbGVGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsXT1cImRhdGEuSXNFbmFibGVWaXJ0dWFsaXphdGlvbiA9PSB0cnVlID8gdmlydHVhbCA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAob3Blbik9XCJoYW5kbGVPcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xvc2UpPVwiaGFuZGxlQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkYXRhLkNsZWFyQnV0dG9uID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9Db21ib0JveEl0ZW1UZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZTF0YWctc3R5bGU1XCIgW2NsYXNzLnpzZWxlY3QtdmlydHVhbGl6YXRpb25dPVwiZGF0YS5Jc0VuYWJsZVZpcnR1YWxpemF0aW9uXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+e3sgZ2V0SXRlbVRlbXBsYXRlKGRhdGFJdGVtLCBkYXRhLCBncm91cCwgaXRlbVZhbHVlRmllbGQsIGl0ZW1UZXh0RmllbGQpIH19PC9zcGFuPlxyXG4gICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGVtcGxhdGVcIj57eyBkYXRhSXRlbS52YWx1ZSB9fTwvc3Bhbj4ge3sgZGF0YUl0ZW0udGV4dCB9fSAtLT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby1jb21ib2JveD5cclxuICA8a2VuZG8tbXVsdGlzZWxlY3QgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSAmJiBjb21wb25lbnRUeXBlID09ICdtdWx0aXNlbGVjdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkIGUxdGFnLXN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICNtdWx0aXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRJdGVtc0RhdGEoKSB8IHpzZWxlY3RUcmFuc2xhdGlvblBhcnNlciA6IGl0ZW1UZXh0RmllbGQgOiBkYXRhIDogZ3JvdXAgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbV09XCJhbGxvd0N1c3RvbVZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwiZGF0YS5GaWx0ZXJhYmxlID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NoZWNrYm94ZXNdPVwiZGF0YS5FbmFibGVDaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiYXV0b0Nsb3NlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2tlbmRvRHJvcERvd25GaWx0ZXJdPVwiZmlsdGVyU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VfZGVza3RvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJoYW5kbGVGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChvcGVuKT1cImhhbmRsZU9wZW4oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJoYW5kbGVDbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiaGFuZGxlQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsZWFyQnV0dG9uXT1cImRhdGEuQ2xlYXJCdXR0b24gPT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb011bHRpU2VsZWN0SXRlbVRlbXBsYXRlIGxldC1kYXRhSXRlbT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlMXRhZy1zdHlsZTVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIj57eyBnZXRJdGVtVGVtcGxhdGUoZGF0YUl0ZW0sIGRhdGEsIGdyb3VwLCBpdGVtVmFsdWVGaWVsZCwgaXRlbVRleHRGaWVsZCkgfX08L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tbXVsdGlzZWxlY3Q+XHJcbiAgPGtlbmRvLW11bHRpc2VsZWN0dHJlZSAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICAmJiBjb21wb25lbnRUeXBlID09ICdtdWx0aXNlbGVjdHRyZWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICNtdWx0aXNlbGVjdHRyZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGtlbmRvTXVsdGlTZWxlY3RUcmVlRXhwYW5kYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2tlbmRvTXVsdGlTZWxlY3RUcmVlSGllcmFyY2h5QmluZGluZ109XCJnZXRJdGVtc0RhdGEoKSB8IHpzZWxlY3RUcmFuc2xhdGlvblBhcnNlciA6IGl0ZW1UZXh0RmllbGQgOiBkYXRhIDogZ3JvdXAgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBba2VuZG9NdWx0aVNlbGVjdFRyZWVTdW1tYXJ5VGFnXT1cImNvbXBvbmVudFNldHRpbmdzLmtlbmRvTXVsdGlTZWxlY3RUcmVlU3VtbWFyeVRhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkZpZWxkPVwiVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2hhc0NoaWxkcmVuXT1cImhhc0NoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJpdGVtVmFsdWVGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VfZGVza3RvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhSXRlbXNdPVwiZ2V0RGF0YUl0ZW1zKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cImF1dG9DbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZXhwYW5kT25GaWx0ZXJdPVwiY29tcG9uZW50U2V0dGluZ3MuZXhwYW5kT25GaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwiZGF0YS5GaWx0ZXJhYmxlID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwiaGFuZGxlTXVsdGlTZWxlY3RUcmVlRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW4pPVwiaGFuZGxlT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJoYW5kbGVDbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgWyhleHBhbmRlZEtleXMpXT1cImV4cGFuZGVkS2V5c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcG9wdXBTZXR0aW5nc109XCJjb21wb25lbnRTZXR0aW5ncy5wb3B1cFNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkYXRhLkNsZWFyQnV0dG9uID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9NdWx0aVNlbGVjdFRyZWVOb0RhdGFUZW1wbGF0ZT5cclxuICAgICAgPGg0PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiay1pY29uIGstaS13YXJuaW5nXCI+PC9zcGFuPjxiciAvPjxiciAvPlxyXG4gICAgICAgIE5vIHJlY29yZCBmb3VuZC5cclxuICAgICAgPC9oND5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby1tdWx0aXNlbGVjdHRyZWU+XHJcbiAgPGtlbmRvLWRyb3Bkb3dubGlzdCAgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSAgJiYgY29tcG9uZW50VHlwZSA9PSAnZHJvcGRvd25saXN0J1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3dubGlzdENvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRJdGVtc0RhdGEoKSB8IHpzZWxlY3RUcmFuc2xhdGlvblBhcnNlciA6IGl0ZW1UZXh0RmllbGQgOiBkYXRhIDogZ3JvdXAgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbV09XCJhbGxvd0N1c3RvbVZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW2tlbmRvRHJvcERvd25GaWx0ZXJdPVwiZmlsdGVyU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICBbc3VnZ2VzdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwiZGF0YS5GaWx0ZXJhYmxlID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW29wZW5PbkZvY3VzXT1cImRpc2FibGVPcGVuT25Gb2N1cyhjb21ib2JveENvbXBvbmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VfZGVza3RvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJoYW5kbGVGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsXT1cImRhdGEuSXNFbmFibGVWaXJ0dWFsaXphdGlvbiA9PSB0cnVlID8gdmlydHVhbCA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAob3Blbik9XCJoYW5kbGVPcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xvc2UpPVwiaGFuZGxlQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkYXRhLkNsZWFyQnV0dG9uID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9Ecm9wRG93bkxpc3RJdGVtVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiIFtjbGFzcy56c2VsZWN0LXZpcnR1YWxpemF0aW9uXT1cImRhdGEuSXNFbmFibGVWaXJ0dWFsaXphdGlvblwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNVwiPnt7IGdldEl0ZW1UZW1wbGF0ZShkYXRhSXRlbSwgZGF0YSwgZ3JvdXAsIGl0ZW1WYWx1ZUZpZWxkLCBpdGVtVGV4dEZpZWxkKSB9fTwvc3Bhbj5cclxuICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInRlbXBsYXRlXCI+e3sgZGF0YUl0ZW0udmFsdWUgfX08L3NwYW4+IHt7IGRhdGFJdGVtLnRleHQgfX0gLS0+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tZHJvcGRvd25saXN0PlxyXG48L2Rpdj5cclxuIl19
|
|
607
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienNlbGVjdG11bHRpcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pzZWxlY3RtdWx0aXBsZS96c2VsZWN0bXVsdGlwbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenNlbGVjdG11bHRpcGxlL3pzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFLeEUsOEJBQThCO0FBQzlCLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxPQUFPLEVBRU8sZ0JBQWdCLEVBQ0csb0JBQW9CLEVBQXlCLDhCQUE4QixFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFDL0ksTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsY0FBYztJQWdEMUQsWUFDUyxnQkFBbUMsRUFDbEMsa0JBQXNDLEVBQ3RDLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLFlBQTBCO1FBRWxDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBTmhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFB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QUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixRQUFRLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDMUIsS0FBSyw4QkFBOEIsQ0FBQyxRQUFRO2dCQUMxQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNoQyxLQUFLLDhCQUE4QixDQUFDLFdBQVc7Z0JBQzdDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUMxQixLQUFLLDhCQUE4QixDQUFDLGVBQWU7Z0JBQ2pELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM5QixLQUFLLDhCQUE4QixDQUFDLFlBQVk7Z0JBQzlDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQ3BDO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDSCxDQUFDOztxSEFqckJVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLGttQkMzQnJDLDZ0V0ErSkE7MkZEcElhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSxxQkFBcUI7Mk5BTUMsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDTSxxQkFBcUI7c0JBQXhELFNBQVM7dUJBQUMsdUJBQXVCO2dCQUNSLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDTSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcbmltcG9ydCB7IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudCB9IGZyb20gXCJpb25pYy1zZWxlY3RhYmxlXCI7XHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRhcCwgZGVsYXksIG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiOyBcclxuaW1wb3J0IHsgQ29tYm9Cb3hDb21wb25lbnQsIERyb3BEb3duRmlsdGVyU2V0dGluZ3MsIERyb3BEb3duTGlzdENvbXBvbmVudCwgTXVsdGlTZWxlY3RDb21wb25lbnQsIE11bHRpU2VsZWN0VHJlZUNvbXBvbmVudCB9IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1kcm9wZG93bnNcIjtcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW5wdXRGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9pbnB1dGZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLCBDYWNoZVNlcnZpY2UsIEZpZWxkU2VydmljZSxcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnQsIENsaWNrYWJsZUljb25zLFxyXG4gIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zLCBaU2VsZWN0UG9zdEFwaVBhcmFtcywgelNlbGVjdE11bHRpcGxlUGFyYW1zLCBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24sIFNpZ25hbFR5cGUsIERyb3Bkb3duU2VhcmNoT3BlcmF0b3JcclxufSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpzZWxlY3RtdWx0aXBsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4venNlbGVjdG11bHRpcGxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3pzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFpzZWxlY3RtdWx0aXBsZUNvbXBvbmVudCBleHRlbmRzIElucHV0RmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoXCJjb21ib2JveENvbXBvbmVudFwiKSBjb21ib2JveENvbXBvbmVudDogQ29tYm9Cb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcImRyb3Bkb3dubGlzdENvbXBvbmVudFwiKSBkcm9wZG93bmxpc3RDb21wb25lbnQ6IERyb3BEb3duTGlzdENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwibXVsdGlzZWxlY3RcIikgbXVsdGlzZWxlY3Q6IE11bHRpU2VsZWN0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJtdWx0aXNlbGVjdHRyZWVcIikgbXVsdGlzZWxlY3R0cmVlOiBNdWx0aVNlbGVjdFRyZWVDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInNlbGVjdENvbXBvbmVudFwiKSBzZWxlY3RDb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDtcclxuXHJcbiAgcHVibGljIGNvbXBvbmVudFR5cGU6IEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bjtcclxuICBwcml2YXRlIGFsbERhdGFJdGVtcyA9IFtdO1xyXG4gIGljb25MaXN0OiBDbGlja2FibGVJY29uc1tdO1xyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbW9kZWx6RGF0YTogQXJyYXk8YW55PjtcclxuICBpbmZpbml0ZXpEYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgaW5maW5pdGVTZWFyY2hUZXh0ID0gbnVsbDtcclxuICAvLyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICB0b2dnbGVTZWxlY3RhYmxlID0gdHJ1ZTtcclxuICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nID0gbnVsbDtcclxuICBpdGVtVGV4dEZpZWxkOiBzdHJpbmcgPSBudWxsO1xyXG4gIGl0ZW1EYXRhRmllbGQ6IHN0cmluZyA9IG51bGw7XHJcbiAgaXRlbVRlbXBsYXRlID0gXCJ7e2l0ZW1baXRlbVRleHRGaWVsZF19fVwiO1xyXG4gIGluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIGFsbG93Q3VzdG9tVmFsdWUgPSBmYWxzZTtcclxuICBhdXRvQ2xvc2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBwYXJzZWRJdGVtc0RhdGE6IGFueVtdO1xyXG4gIGRhdGFJbmZvOiB7fSA9IHtcclxuICAgIFwiaXRlbXNSZXNvdXJjZVVSTFwiOiBcIlwiLFxyXG4gICAgXCJvcHRpb25GaWx0ZXJzXCI6IFwiXCIsXHJcbiAgICBcInRvdGFsQ291bnRcIjogMFxyXG4gIH07XHJcbiAgcHJpdmF0ZSBkZWJvdW5jZVN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgZXZlbnRTdWJzY3JpcHRpb25zID0gbmV3IEFycmF5PFN1YnNjcmlwdGlvbj4oKTtcclxuICBwdWJsaWMgZXhwYW5kZWRLZXlzO1xyXG4gIHB1YmxpYyBjb21wb25lbnRTZXR0aW5ncyA9IHtcclxuICAgIGtlbmRvTXVsdGlTZWxlY3RUcmVlU3VtbWFyeVRhZzogOTk5OTk5LFxyXG4gICAgcG9wdXBTZXR0aW5nczogbnVsbCxcclxuICAgIGV4cGFuZE9uRmlsdGVyOiB7XHJcbiAgICAgIGV4cGFuZE1hdGNoZXM6IHRydWUsXHJcbiAgICAgIGV4cGFuZGVkT25DbGVhcjogXCJpbml0aWFsXCIsXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy8gcHJpdmF0ZSBsb2FkSW5maW5pdGVEYXRhU3ViOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwdWJsaWMgZmlsdGVyU2V0dGluZ3M6IERyb3BEb3duRmlsdGVyU2V0dGluZ3MgPSB7XHJcbiAgICBjYXNlU2Vuc2l0aXZlOiBmYWxzZSxcclxuICAgIG9wZXJhdG9yOiBcImNvbnRhaW5zXCIsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmlydHVhbDogYW55ID0ge1xyXG4gICAgaXRlbUhlaWdodDogMjgsXHJcbiAgICBwYWdlU2l6ZTogMTVcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2V0Q29tcG9uZW50VG9Vc2UoKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVUlTaWduYWwoKTtcclxuICAgIHN1cGVyLnNldHVwSW5uZXJGaWVsZCgpO1xyXG4gICAgc3VwZXIuc2V0dXBDb21wb25lbnRTZXR0aW5ncyh0aGlzLmNvbXBvbmVudFNldHRpbmdzKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0U2VsZWN0TXVsdGlwbGVUZXh0VmFsdWUodGhpcy5kYXRhLlNlbGVjdE9wdGlvbnMsIHRoaXMpO1xyXG5cclxuICAgIC8vIFtEcm9wZG93bmxpc3QgTXVsdGlwbGVdIC0gYXV0byBjbG9zZSBtZW51IHdoZW4gbG9zZSBmb2N1cy5cclxuICAgIGlmICh0aGlzLmRhdGEuQXV0b0Nsb3NlID09PSBmYWxzZSkgdGhpcy5hdXRvQ2xvc2UgPSB0aGlzLmRhdGEuQXV0b0Nsb3NlO1xyXG5cclxuICAgIC8vIEhhbmRsZSBDbGlja2FibGUgSWNvbnNcclxuICAgIHRoaXMuaWNvbkxpc3QgPSB0aGlzLmRhdGEuQ2xpY2thYmxlSWNvbnM7XHJcbiAgICBpZiAodGhpcy5pY29uTGlzdCkge1xyXG4gICAgICBpZiAodGhpcy5pY29uTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5pY29uTGlzdC5mb3JFYWNoKChpOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChpLlRvb2x0aXAgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpLlRvb2x0aXAgPSBcIlwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaS5Ub29sdGlwID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGkuVG9vbHRpcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBEZWZhdWx0IHBvc2l0aW9uIHRvcC4gcmlnaHQgfCBib3R0b20gfCB0b3AgfCBsZWZ0XHJcbiAgICAgICAgICBpZiAoaS5Qb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGkuUG9zaXRpb24gPSBcInRvcFwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmFsbG93Q3VzdG9tVmFsdWUgPSB0aGlzLmRhdGEuQWxsb3dDdXN0b21WYWx1ZSB8fCBmYWxzZTsgLy8gQWxsb3cgZW50ZXIgdGV4dCBpbiBkcm9wZG93bmJveFxyXG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZGF0YS5WYWx1ZTtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICBjb25zdCB6TW9kZWwgPSB0aGlzLmdyb3VwLnpNb2RlbDtcclxuXHJcbiAgICAvKlxyXG4gICAgICogNCBTdHlsZXMgb2YgZGVjbGFyZSB0aGUgY29tcG9uZW5077+9cyBvcHRpb24gbGlzdCBkYXRhIHNvdXJjZS5cclxuICAgICAqIFN0eWxlICMxIC0gRmllbGQuU2VsZWN0T3B0aW9ucyBkZWZpbmVkIGFzIGFuIGFycmF5IG9mIG9iamVjdCB0aGF0IGNvbnRhaW4gdGV4dCBhbmQgdmFsdWUuXHJcbiAgICAgKiBTdHlsZSAjMiAtIEZpZWxkLlNlbGVjdE9wdGlvbnMgZGVmaW5lZCBhcyBhIHBoYXNlIGxpa2Ug77+9aXRlbS5JZCBhcyBpdGVtLk5hbWUgZm9yIGl0ZW0gaW4gZ3JvdXAuekRhdGEuUHJvamVjdE9wdGlvbnPvv70uXHJcbiAgICAgKiBTdHlsZSAjMyAtIEZpZWxkLk9wdGlvblJlc291cmNlVVJMIGRlZmluZWQgdGhlIG5hbWUgb2YgcmVzb3VyY2Ugc2VydmVyIGFwaS5cclxuICAgICAqIFN0eWxlICM0IC0gRmllbGQuSW5maW5pdGVTY3JvbGwkIGRlZmluZWQgdGhlIG1ldGhvZCBuYW1lIGFzIO+/vWdyb3VwLmdldE1vcmVEYXRhQXNTY3JvbGzvv70uXHJcbiAgICAgKi9cclxuXHJcbiAgICBpZiAoZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCAmJiBkYXRhLkluZmluaXRlU2Nyb2xsJCkge1xyXG4gICAgICAvLyB3aGVuIGluZmluaXRpZSBzY3JvbGxcclxuICAgICAgbGV0IHJlY29yZElkID0gbnVsbDtcclxuICAgICAgaWYgKHpNb2RlbCAmJiB6TW9kZWxbZmllbGRWYWx1ZV0pIHtcclxuICAgICAgICAvLyBnZXQgek1vZGVsIFZhbHVlXHJcbiAgICAgICAgcmVjb3JkSWQgPSB6TW9kZWxbZmllbGRWYWx1ZV0udG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGdldHpEYXRhRm9yek1vZGVsJDogT2JzZXJ2YWJsZTxhbnk+ID0gWkNvbXBvbmVudEhlbHBlci5nZXRJbmZpbml0ZURhdGEobnVsbCwgJycsIHRoaXMsIHJlY29yZElkKTtcclxuICAgICAgaWYgKGdldHpEYXRhRm9yek1vZGVsJCkge1xyXG4gICAgICAgIGdldHpEYXRhRm9yek1vZGVsJC5zdWJzY3JpYmUoKHpkYXRhKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLk5hbWUsICcgLSBpbml0aWFsIHpEYXRhIGxvYWQ6ICcsIHpkYXRhKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5ncm91cCkge1xyXG4gICAgICAgICAgICB0aGlzLmFmdGVyTG9hZHpEYXRhT3B0aW9ucygpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlU2NyZWVuKCkpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUZpbHRlcihudWxsLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIFN0eWxlICMxLCAjMiwgIzNcclxuICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBkYXRhLklzUmVxdWlyZWQpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YS5PcHRpb25SZXNvdXJjZVVSTCkge1xyXG4gICAgICAgIHRoaXMubGF6eUxvYWREYXRhT3B0aW9ucygpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uRGF0YSA9IHJlcy5kYXRhU2V0ID8gcmVzLmRhdGFTZXQgOiByZXM7XHJcblxyXG4gICAgICAgICAgaWYgKG9wdGlvbkRhdGEgJiYgb3B0aW9uRGF0YS5sZW5ndGggPT09IDEgJiYgIXRoaXMuZGF0YS5EaXNhYmxlQXV0b0ZpcnN0U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1NlbGVjdEZpcnN0T3B0aW9uKGlzUmVxdWlyZWQsIG9wdGlvbkRhdGFbMF0sIGZpZWxkVmFsdWUsIHpNb2RlbC5JZCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5hZnRlckxvYWR6RGF0YU9wdGlvbnMoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5TZWxlY3RPcHRpb25zKSAmJiB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucykge1xyXG4gICAgICAgICAgLy9za2lwIGV2YWwgaWYgc2VsZWN0b3B0aW9ucyBpcyBleGlzdFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG9wdGlvbkRhdGEgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5pdGVtRGF0YUZpZWxkKTtcclxuICAgICAgICAgIC8vIGFwcGVuZCBkYXRhIHZpYSB0aW1lb3V0IGFmdGVyIGRhdGEgaXMgbG9hZGVkLlxyXG4gICAgICAgICAgaWYgKG9wdGlvbkRhdGEgJiYgb3B0aW9uRGF0YS5sZW5ndGggPT09IDEgJiYgIXRoaXMuZGF0YS5EaXNhYmxlQXV0b0ZpcnN0U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRoaXNDb21wb25lbnQgPSB0aGlzO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICB0aGlzQ29tcG9uZW50LmF1dG9TZWxlY3RGaXJzdE9wdGlvbihpc1JlcXVpcmVkLCBvcHRpb25EYXRhWzBdLCBmaWVsZFZhbHVlLCB0aGlzQ29tcG9uZW50Lmdyb3VwLnpNb2RlbC5JZCk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyTG9hZHpEYXRhT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuU2VhcmNoT3BlcmF0b3IgPT09IERyb3Bkb3duU2VhcmNoT3BlcmF0b3IuU3RhcnRzV2l0aCkge1xyXG4gICAgICB0aGlzLmZpbHRlclNldHRpbmdzLm9wZXJhdG9yID0gJ3N0YXJ0c1dpdGgnO1xyXG4gICAgfSBcclxuXHJcbiAgICBzdXBlci5mb2N1c09uRGVmYXVsdCh0aGlzLmZvY3VzLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLmRlY3JlbWVudENvbXBvbmVudENvdW50ZXJGb3JGaWVsZCh0aGlzLmRhdGEpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAvLyBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgIC8vICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIC8vIH1cclxuICAgIGlmICh0aGlzLmRlYm91bmNlU3ViKSB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy5ldmVudFN1YnNjcmlwdGlvbnMpIHtcclxuICAgICAgaWYgKGUgJiYgIWUuY2xvc2VkKSB7XHJcbiAgICAgICAgZS51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBBdXRvIHNlbGVjdCBmaXJzdCBvcHRpb24gKGlmIHJlcXVpcmVkICYgb25seSAxIG9wdGlvbilcclxuICBwcml2YXRlIGF1dG9TZWxlY3RGaXJzdE9wdGlvbihyZXF1aXJlZDogYm9vbGVhbiwgZGF0YTogYW55LCB6TW9kZWxQcm9wZXJ0eU5hbWU6IHN0cmluZywgaWQ6IGFueSkge1xyXG4gICAgaWYgKFpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkoaWQpICYmIHJlcXVpcmVkKSB7XHJcbiAgICAgIHZhciBvcHRpb25JZCA9IGRhdGEuSWQ7XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuTXVsdGlwbGUpIHtcclxuICAgICAgICBvcHRpb25JZCA9IFtvcHRpb25JZF07XHJcbiAgICAgIH1cclxuICAgICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKHpNb2RlbFByb3BlcnR5TmFtZSwgb3B0aW9uSWQsIHRoaXMuZ3JvdXApO1xyXG5cclxuICAgICAgdGhpcy5ncm91cC5zdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgIHR5cGU6IFwib25DaGFuZ2VcIixcclxuICAgICAgICB0YXJnZXQ6IHRoaXMuZGF0YS5PbkNoYW5nZSxcclxuICAgICAgICBldmVudCxcclxuICAgICAgICBkYXRhOiB7IFsndmFsdWUnXTogb3B0aW9uSWQsIGZpZWxkOiB0aGlzLmRhdGEgfVxyXG4gICAgICB9IGFzIFpDb21wb25lbnRPdXRwdXRFdmVudCk7XHJcblxyXG4gICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFN0eWxlICMzXHJcbiAgbGF6eUxvYWREYXRhT3B0aW9ucygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcmVzb3VyY2VVcmwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXHJcbiAgICAgIHRoaXMuZGF0YS5PcHRpb25SZXNvdXJjZVVSTFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJQYXJhbSA9IG5ldyBaU2VsZWN0UG9zdEFwaVBhcmFtcygpO1xyXG4gICAgZmlsdGVyUGFyYW0uc29ydHMgPSB0aGlzLmRhdGEuT3B0aW9uU29ydDtcclxuICAgIGZpbHRlclBhcmFtLmNvbHVtbnMgPSB0aGlzLmRhdGEuT3B0aW9uQ29sdW1ucztcclxuICAgIGZpbHRlclBhcmFtLmZpbHRlcnMgPSB0aGlzLmRhdGEuT3B0aW9uRmlsdGVyO1xyXG5cclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmdldERhdGFPcHRpb25zKFxyXG4gICAgICB0aGlzLmRhdGEuT3B0aW9uTmFtZSxcclxuICAgICAgZmlsdGVyUGFyYW0sXHJcbiAgICAgIHRoaXMuZ3JvdXAsXHJcbiAgICAgIHJlc291cmNlVXJsLFxyXG4gICAgICB0aGlzLmNhY2hlU2VydmljZSxcclxuICAgICAgdGhpcy53ZWJBcGlTZXJ2aWNlLFxyXG4gICAgICB0aGlzLmRhdGFbJ0Rpc2FibGVDYWNoZSddXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gU3R5bGUgIzQsIHVzZWQgaW4gaW9uaWMtc2VsZWN0YWJsZVxyXG4gIGdldEluZmluaXRlRGF0YShldmVudDoge1xyXG4gICAgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgfSkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5nZXRJbmZpbml0ZURhdGEoZXZlbnQuY29tcG9uZW50LCBldmVudC50ZXh0LCB0aGlzKTtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1zRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5maW5pdGV6RGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvcHRpb25OYW1lID0gdGhpcy5kYXRhLk9wdGlvbk5hbWUgfHwgdGhpcy5pdGVtRGF0YUZpZWxkIHx8ICdncm91cC56RGF0YS4nICsgdGhpcy5kYXRhLk5hbWU7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucykgJiYgIXRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildKSB7XHJcbiAgICAgIC8vIHJldHVybiBzZWxlY3Rpb25PcHRpb25zO1xyXG4gICAgICAvLyByZXR1cm4gdGhpcy5kYXRhLlNlbGVjdE9wdGlvbnM7XHJcbiAgICAgIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildID0gdGhpcy5kYXRhLlNlbGVjdE9wdGlvbnM7XHJcbiAgICAgIHRoaXMuaXRlbURhdGFGaWVsZCA9IG9wdGlvbk5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbk5hbWUuc3RhcnRzV2l0aCgnekRhdGEuJykpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSg2KV0gfHwgW107XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCdncm91cC56RGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0gfHwgW107XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cFtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwW29wdGlvbk5hbWVdIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS53YXJuKHRoaXMuZGF0YS5OYW1lLCAnIC0gSW52YWxpZCBzZXR0aW5nIGZvciBPcHRpb25OYW1lOiAnLCBvcHRpb25OYW1lKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKGV2ZW50OiB7IGNvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50OyB0ZXh0OiBzdHJpbmcgfSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJBdCB6c2VsZWN0bXVsdGlwbGUuY29tcG9uZW50IChvblNlYXJjaCk6IFwiLCBldmVudCk7XHJcbiAgICAvLyBldmVudC5jb21wb25lbnQgaXMgZm9yIG1vYmlsZSBvbmx5XHJcbiAgICBjb25zdCBzZWFyY2hUZXJtID0gZXZlbnQudGV4dDsgXHJcbiAgICBjb25zdCBjb21wb25lbnQgPSBldmVudC5jb21wb25lbnQ7XHJcblxyXG4gICAgLy8gU3RhcnQgc2VhcmNoIGFuZCBlbmFibGUgaW5maW5pdGUgc2Nyb2xsaW5nIG9uIHRoZSBjb21wb25lbnQgaWYgYXZhaWxhYmxlXHJcbiAgICBjb21wb25lbnQ/LnN0YXJ0U2VhcmNoKCk7XHJcbiAgICBjb21wb25lbnQ/LmVuYWJsZUluZmluaXRlU2Nyb2xsKCk7XHJcblxyXG4gICAgLy8gUmVzZXQgcGFnaW5nIGFuZCBjbGVhciBkYXRhIGlmIG5ldyBzZWFyY2ggdGV4dCBpcyBkZXRlY3RlZCBvciBpbmZpbml0ZSBzY3JvbGxpbmcgaXMgZW5hYmxlZFxyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgICBpZiAoc2VhcmNoVGVybSAhPT0gbnVsbCAmJiBzZWFyY2hUZXJtICE9PSB0aGlzLmluZmluaXRlU2VhcmNoVGV4dCkge1xyXG4gICAgICAgIHRoaXMuaW5maW5pdGVTY3JvbGxQYWdlTm8gPSAwO1xyXG4gICAgICAgIHRoaXMubW9kZWx6RGF0YSA9IFtdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0SW5maW5pdGVEYXRhKGV2ZW50KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBSZXNldCBzY3JvbGwgcGFnZSwgZW1wdHkgaXRlbXNcclxuICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2VObyA9IDA7XHJcbiAgICAgIGlmIChjb21wb25lbnQpIHtcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJlcGFyZSBkZWZhdWx0IHBhcmFtZXRlcnMgZm9yIGl0ZW0gZmlsdGVyaW5nXHJcbiAgICAgIGNvbnN0IHBhcmFtczogelNlbGVjdE11bHRpcGxlUGFyYW1zID0ge1xyXG4gICAgICAgIHJlZmVySWQ6IG51bGwsXHJcbiAgICAgICAgcGFnZU5vOiAwLFxyXG4gICAgICAgIHBhZ2VTaXplOiAyMCxcclxuICAgICAgICBzb3J0Q29sdW1uTmFtZTogXCJcIixcclxuICAgICAgICBzb3J0T3JkZXI6IFwiXCIsXHJcbiAgICAgICAgc29ydENvbHVtbk5hbWVzOiBbXSxcclxuICAgICAgICBzb3J0T3JkZXJzOiBbXSxcclxuICAgICAgICBmaWx0ZXJQYXJhbXM6IFtdLFxyXG4gICAgICAgIHBhcmFtZXRlcnM6IFwiXCJcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IHNlYXJjaEJ5ID0gdGhpcy5kYXRhLlNlYXJjaEZpZWxkcyA/PyB0aGlzLml0ZW1UZXh0RmllbGQ7XHJcbiAgICAgIGNvbnN0IGl0ZW1zRGF0YSA9IHRoaXMuZ2V0SXRlbXNEYXRhKCk7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBaQ29tcG9uZW50SGVscGVyLmZpbHRlclNlYXJjaEl0ZW1zKFxyXG4gICAgICAgIGl0ZW1zRGF0YSxcclxuICAgICAgICBzZWFyY2hUZXJtLFxyXG4gICAgICAgIHNlYXJjaEJ5LFxyXG4gICAgICAgIHBhcmFtcy5wYWdlTm8sXHJcbiAgICAgICAgcGFyYW1zLnBhZ2VTaXplLFxyXG4gICAgICAgIHRoaXMuZGF0YS5TZWFyY2hPcGVyYXRvclxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5jaGVja0FsbG93Q3VzdG9tVmFsdWUoc2VhcmNoQnksIHNlYXJjaFRlcm0sIGZpbHRlcmVkSXRlbXMsIGl0ZW1zRGF0YSk7XHJcbiAgICAgICBcclxuICAgICAgLy8gVXBkYXRlIGNvbXBvbmVudCBpdGVtcyBhbmQgaGFuZGxlIHNlYXJjaCBjb21wbGV0aW9uXHJcbiAgICAgIGlmIChjb21wb25lbnQpIHtcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMgPSBbLi4uY29tcG9uZW50Lml0ZW1zLCAuLi5maWx0ZXJlZEl0ZW1zXTtcclxuICAgICAgICBjb21wb25lbnQuZW5kSW5maW5pdGVTY3JvbGwoKTtcclxuICAgICAgICBjb21wb25lbnQuZW5kU2VhcmNoKCk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0FsbG93Q3VzdG9tVmFsdWUoc2VhcmNoQnk6IHN0cmluZywgc2VhcmNoVGVybTpzdHJpbmcsIGZpbHRlcmVkSXRlbXM6IGFueVtdLCBpdGVtc0RhdGE/OiBhbnkpIHtcclxuICAgIC8vIEFsbG93IGN1c3RvbSB2YWx1ZSB1bmxlc3MgYSBkaXJlY3QgbWF0Y2ggaXMgZm91bmRcclxuICAgIHRoaXMuYWxsb3dDdXN0b21WYWx1ZSA9IHRoaXMuZGF0YS5BbGxvd0N1c3RvbVZhbHVlO1xyXG4gICAgbGV0IHNlYXJjaEZpZWxkczogc3RyaW5nW107XHJcbiAgICBpZiAoc2VhcmNoQnkpIHtcclxuICAgICAgc2VhcmNoRmllbGRzID0gc2VhcmNoQnkucmVwbGFjZSgvXFxzL2csIFwiXCIpLnNwbGl0KFwiLFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlYXJjaEZpZWxkcyA9IE9iamVjdC5rZXlzKGl0ZW1zRGF0YVswXSk7XHJcbiAgICB9XHJcbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggZmlsdGVyaXRlbXMgdG8gY2hlY2sgaWYgYW55IGl0ZW0gbWF0Y2hlcyBzZWFyY2hUZXh0IGluIGFueSBvZiB0aGUgc2VhcmNoRmllbGRzIFxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGZpbHRlcmVkSXRlbXMpIHtcclxuICAgICAgLy8gQ2hlY2sgZWFjaCBzZWFyY2hGaWVsZCBmb3Igc2VhcmNoVGV4dFxyXG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHNlYXJjaEZpZWxkcykge1xyXG4gICAgICAgIGlmIChpdGVtW2ZpZWxkXSAmJiBpdGVtW2ZpZWxkXSA9PT0gc2VhcmNoVGVybSkge1xyXG4gICAgICAgICAgdGhpcy5hbGxvd0N1c3RvbVZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhazsgLy8gQnJlYWsgdGhlIGlubmVyIGxvb3Agc2luY2Ugd2UndmUgZm91bmQgYSBtYXRjaFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAgICAgIFxyXG4gIGhhbmRsZUZpbHRlcihzZWFyY2hUZXJtOiBhbnksIGp1c3RPbmVUaW1lPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcclxuICAgICAgY29uc3QgbWVldHNMZW5ndGhDb25kaXRpb24gPSB0aGlzLmRhdGEuU2VhcmNoTGVuZ3RoICYmIHRoaXMuZGF0YS5TZWFyY2hMZW5ndGggPD0gc2VhcmNoVGVybS5sZW5ndGg7XHJcbiAgICAgIHRoaXMubXVsdGlzZWxlY3QudG9nZ2xlKG1lZXRzTGVuZ3RoQ29uZGl0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWFyY2hCeSA9IHRoaXMuZGF0YS5TZWFyY2hGaWVsZHMgPz8gdGhpcy5pdGVtVGV4dEZpZWxkO1xyXG4gICAgY29uc3QgaXRlbXNEYXRhID0gdGhpcy5nZXRJdGVtc0RhdGEoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLkFsbG93Q3VzdG9tVmFsdWUpIHtcclxuICAgICAgdGhpcy5jaGVja0FsbG93Q3VzdG9tVmFsdWUoc2VhcmNoQnksIHNlYXJjaFRlcm0sIGl0ZW1zRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGVib3VuY2VTdWIgPSBvZihbXSkucGlwZShcclxuICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IHRydWUpKSxcclxuICAgICAgZGVsYXkoNTAwKSxcclxuICAgICAgdGFwKCgpID0+IHRoaXMucGVyZm9ybVNlYXJjaChzZWFyY2hUZXJtKSksXHJcbiAgICAgIHRhcCgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGVyZm9ybVNlYXJjaCh2YWx1ZTogYW55KSB7XHJcbiAgICBjb25zdCBzZWFyY2hBY3Rpb24gPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMub25TZWFyY2goeyBjb21wb25lbnQ6IG51bGwsIHRleHQ6IHZhbHVlIH0pO1xyXG4gICAgICBpZiAodGhpcy5ncm91cCkge1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGEuU2VhcmNoTGVuZ3RoIHx8IHRoaXMuZGF0YS5TZWFyY2hMZW5ndGggPD0gdmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHNlYXJjaEFjdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlTGF6eUxvYWRGaWx0ZXIodmFsdWU6IGFueSwganVzdE9uZVRpbWU/OiBib29sZWFuKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICh0aGlzLmRlYm91bmNlU3ViKSB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRlYm91bmNlU3ViID0gb2YoW10pLnBpcGUoZGVsYXkoNTAwKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHsgY29tcG9uZW50OiBudWxsLCB0ZXh0OiB2YWx1ZSB9KTtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICBpZiAodGhpcy5ncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnMpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXAuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKHRoaXMuZ3JvdXAsIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT3BlbihldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgLy8gRW5zdXJlIG11bHRpc2VsZWN0IHZhbHVlIG1lZXRzIHRoZSBzZWFyY2ggbGVuZ3RoIHJlcXVpcmVtZW50XHJcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCAmJiB0aGlzLmRhdGEuU2VhcmNoTGVuZ3RoICYmIHRoaXMubXVsdGlzZWxlY3QudmFsdWUubGVuZ3RoIDwgdGhpcy5kYXRhLlNlYXJjaExlbmd0aCkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm47IC8vIEVhcmx5IHJldHVybiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBjaGVja3NcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUNsb3NlKGV2ZW50PzogRXZlbnQpIHsgXHJcbiAgfVxyXG5cclxuICBoYW5kbGVCbHVyKCkge1xyXG4gICAgLy8gdGhpcy5oYW5kbGVDbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEl0ZW1UZW1wbGF0ZShcclxuICAgIGl0ZW06IGFueSxcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGdyb3VwOiBhbnksXHJcbiAgICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nLFxyXG4gICAgaXRlbVRleHRGaWVsZDogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICAvLyBUb0RPOiBpdGVtVmFsdWVGaWVsZCBhbmQgaXRlbVRleHRGaWVsZFxyXG4gICAgaWYgKHRoaXMuZGF0YS5JdGVtVGVtcGxhdGUpIHtcclxuICAgICAgY29uc3QgZ2V0VGVtcGxhdGVGdW5jID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5JdGVtVGVtcGxhdGUpO1xyXG5cclxuICAgICAgcmV0dXJuIGdldFRlbXBsYXRlRnVuYyh7XHJcbiAgICAgICAgaXRlbSxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGdyb3VwLFxyXG4gICAgICAgIGl0ZW1WYWx1ZUZpZWxkLFxyXG4gICAgICAgIGl0ZW1UZXh0RmllbGRcclxuICAgICAgfSBhcyBaU2VsZWN0TXVsdGlwbGVUZW1wbGF0ZVBhcmFtcyk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW1UZXh0RmllbGQpIHtcclxuICAgICAgcmV0dXJuIGl0ZW1baXRlbVRleHRGaWVsZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyByZXR1cm4gaXRlbVtpdGVtVGV4dEZpZWxkXTtcclxuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaXRlbSkuam9pbihcIiwgXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BZGRJdGVtKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGYgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9uQWRkSXRlbSk7XHJcbiAgICBpZiAodHlwZW9mIGYgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSBmLmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICByZXR1cm4gY2FsbEZ1bmMoKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUud2FybignSW52YWxpZCBkZWNsYXJhdGlvbiBvZiBPbkFkZEl0ZW06ICcsIGYpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29tcG9uZW50IGJhc2ljIGZ1bmN0aW9uXHJcbiAgY2xlYXJEYXRhKCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRNb2RlbFZhbHVlKHRoaXMuZGF0YS5WYWx1ZSwgXCJcIiwgdGhpcy5ncm91cCk7XHJcbiAgfVxyXG5cclxuICBjbGVhckl0ZW1zKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25maXJtSXRlbXMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY29uZmlybSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlSXRlbXMoKSB7XHJcbiAgICB0aGlzLnNlbGVjdENvbXBvbmVudC50b2dnbGVJdGVtcyh0aGlzLnRvZ2dsZVNlbGVjdGFibGUpO1xyXG4gICAgdGhpcy50b2dnbGVTZWxlY3RhYmxlID0gIXRoaXMudG9nZ2xlU2VsZWN0YWJsZTtcclxuXHJcbiAgICAvLyBDb25maXJtIGl0ZW1zIGFuZCBjbG9zZSBTZWxlY3QgcGFnZVxyXG4gICAgLy8gd2l0aG91dCBoYXZpbmcgdGhlIHVzZXIgdG8gY2xpY2sgQ29uZmlybSBidXR0b24uXHJcbiAgICAvLyB0aGlzLmNvbmZpcm0oKTtcclxuICB9XHJcblxyXG4gIC8vIERpc2FibGUgT3BlbiBPbiBGb2N1c1xyXG4gIGRpc2FibGVPcGVuT25Gb2N1cyhjb21ib2JveENvbXBvbmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkRpc2FibGVPcGVuT25Gb2N1cykge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gY29tYm9ib3hDb21wb25lbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBPbkNoYW5nZVxyXG4gIHB1YmxpYyBvbkNoYW5nZV9kZXNrdG9wKGV2ZW50OiBhbnkpIHtcclxuICAgIHN1cGVyLm9uQ2hhbmdlKG51bGwsIGV2ZW50KVxyXG4gICAgdGhpcy5oYW5kbGVJbmZpbml0ZVNjcm9sbE9uQ2hhbmdlKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZV9tb2JpbGUoZXZlbnQ6IHsgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7IHZhbHVlOiBhbnkgfSkge1xyXG4gICAgc3VwZXIub25DaGFuZ2UoZXZlbnQpXHJcbiAgICBjb25zdCBmYyA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgdGhpcy5oYW5kbGVDbG9zZShudWxsKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHN1cGVyLmdldElzUmVxdWlyZWRWYWx1ZSgpICYmIChldmVudC52YWx1ZSA9PT0gbnVsbCB8fCBldmVudC52YWx1ZS5sZW5ndGggPT09IDApXHJcbiAgICApIHtcclxuICAgICAgZmMuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmYy5zZXRFcnJvcnMobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVJbmZpbml0ZVNjcm9sbE9uQ2hhbmdlKGV2ZW50LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSW5maW5pdGVTY3JvbGxPbkNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsICYmICEhdGhpcy5kYXRhLkluZmluaXRlU2Nyb2xsJCkge1xyXG4gICAgICBjb25zdCB0ZXh0RmllbGQgPSB0aGlzLml0ZW1UZXh0RmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgY29uc3QgdmFsdWVGaWVsZCA9IHRoaXMuaXRlbVZhbHVlRmllbGQudG9TdHJpbmcoKTtcclxuICAgICAgbGV0IHpkYXRhTW9kZWwgPSBbXTtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgemRhdGFNb2RlbCA9IHRoaXMuaW5maW5pdGV6RGF0YS5maWx0ZXIoeCA9PiB4W3ZhbHVlRmllbGRdID09PSB2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5tb2RlbHpEYXRhID0gemRhdGFNb2RlbC5zbGljZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLml0ZW1EYXRhRmllbGQuc3RhcnRzV2l0aCgnZ3JvdXAuekRhdGEuJykpIHtcclxuICAgICAgICB0aGlzLmdyb3VwLnpEYXRhW3RoaXMuaXRlbURhdGFGaWVsZC5zbGljZSgxMildID0gemRhdGFNb2RlbDtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLml0ZW1EYXRhRmllbGQuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICB0aGlzLmdyb3VwW3RoaXMuaXRlbURhdGFGaWVsZC5zbGljZSg2KV0gPSB6ZGF0YU1vZGVsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBNdWx0aSBTZWxlY3Rpb24gVHJlZVxyXG4gIHB1YmxpYyBoYXNDaGlsZHJlbiA9IChkYXRhaXRlbTogYW55KTogYm9vbGVhbiA9PiAhIWRhdGFpdGVtWydpdGVtcyddO1xyXG5cclxuICBwdWJsaWMgaGFuZGxlTXVsdGlTZWxlY3RUcmVlRmlsdGVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyc2VkSXRlbXNEYXRhID0gdGhpcy5vbk11bHRpU2VsZWN0VHJlZVNlYXJjaCh0aGlzLmdldEl0ZW1zRGF0YSgpLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25NdWx0aVNlbGVjdFRyZWVTZWFyY2goaXRlbXM6IGFueVtdLCBzZWFyY2hlZFRleHQ6IHN0cmluZyk6IGFueVtdIHtcclxuICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jb250YWlucyhpdGVtW3RoaXMuaXRlbVRleHRGaWVsZF0sIHNlYXJjaGVkVGV4dCkpIHtcclxuICAgICAgICBhY2MucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChpdGVtWydpdGVtcyddICYmIGl0ZW1bJ2l0ZW1zJ10ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IG5ld0l0ZW1zID0gdGhpcy5vbk11bHRpU2VsZWN0VHJlZVNlYXJjaChpdGVtWydpdGVtcyddLCBzZWFyY2hlZFRleHQpO1xyXG5cclxuICAgICAgICBpZiAobmV3SXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgX2l0ZW0gPSBPYmplY3QuYXNzaWduKHt9LCBpdGVtKTtcclxuICAgICAgICAgIF9pdGVtWydpdGVtcyddID0gbmV3SXRlbXM7XHJcblxyXG4gICAgICAgICAgYWNjLnB1c2goX2l0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIFtdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb250YWlucyh0ZXh0OiBzdHJpbmcsIHNlYXJjaGVkVGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKChzZWFyY2hlZFRleHQgfHwgXCJcIikudG9Mb3dlckNhc2UoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2VsZWN0T3B0aW9uKHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IG9wdGlvbk5hbWUgPSB0aGlzLmRhdGEuT3B0aW9uTmFtZSB8fCB0aGlzLml0ZW1EYXRhRmllbGQ7XHJcbiAgICB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oW10sIHZhbHVlKTtcclxuICAgIHRoaXMuZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildID0gdGhpcy5kYXRhLlNlbGVjdE9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9jdXMoKSB7XHJcbiAgICBpZiAodGhpcy5jb21ib2JveENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmNvbWJvYm94Q29tcG9uZW50LmZvY3VzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcclxuICAgICAgdGhpcy5tdWx0aXNlbGVjdC5mb2N1cygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0dHJlZSkge1xyXG4gICAgICB0aGlzLm11bHRpc2VsZWN0dHJlZS5mb2N1cygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRyb3Bkb3dubGlzdENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3dubGlzdENvbXBvbmVudC5mb2N1cygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Q29tcG9uZW50VG9Vc2UoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkludGVybmFsQ29tcG9uZW50VHlwZSAmJiBPYmplY3QudmFsdWVzKEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bikuaW5jbHVkZXModGhpcy5kYXRhLkludGVybmFsQ29tcG9uZW50VHlwZSBhcyBhbnkpKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50VHlwZSA9IHRoaXMuZGF0YS5JbnRlcm5hbENvbXBvbmVudFR5cGUgYXMgYW55O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIXRoaXMuZGF0YS5NdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFR5cGUgPSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24uY29tYm9ib3g7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmRhdGEuTXVsdGlwbGUgJiYgIXRoaXMuZGF0YS5FbmFibGVDaGVja2JveCkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFR5cGUgPSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24ubXVsdGlzZWxlY3Q7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmRhdGEuTXVsdGlwbGUgJiYgdGhpcy5kYXRhLkVuYWJsZUNoZWNrYm94KSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50VHlwZSA9IEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bi5tdWx0aXNlbGVjdHRyZWU7XHJcbiAgICAgIHRoaXMuc2V0dXBEYXRhSXRlbXMoKTtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0RXhwYW5kYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERhdGFJdGVtcygpOiBBcnJheTxhbnk+IHtcclxuICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsRGF0YUl0ZW1zLmZpbHRlcih4ID0+IG1vZGVsVmFsdWUuaW5jbHVkZXMoeFt0aGlzLml0ZW1WYWx1ZUZpZWxkIHx8ICdJZCddKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwRGF0YUl0ZW1zKCkge1xyXG4gICAgY29uc3QgbW9kZWxWYWx1ZSA9IHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBpZiAobW9kZWxWYWx1ZSAmJiBtb2RlbFZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wb3B1bGF0ZURhdGFXaXRob3V0SGllcmFyY2h5KHRoaXMuZ2V0SXRlbXNEYXRhKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZURhdGFXaXRob3V0SGllcmFyY2h5KGRhdGFJdGVtcykge1xyXG4gICAgZm9yIChjb25zdCBkYXRhSXRlbSBvZiBkYXRhSXRlbXMpIHtcclxuICAgICAgdGhpcy5hbGxEYXRhSXRlbXMucHVzaChkYXRhSXRlbSk7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFJdGVtLlZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMucG9wdWxhdGVEYXRhV2l0aG91dEhpZXJhcmNoeShkYXRhSXRlbS5WYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREZWZhdWx0RXhwYW5kYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuVHJlZUxpc3RJbml0aWFsbHlFeHBhbmRlZERhdGFJZHMpIHtcclxuICAgICAgY29uc3QgaWRMaXN0ID0gdHlwZW9mIHRoaXMuZGF0YS5UcmVlTGlzdEluaXRpYWxseUV4cGFuZGVkRGF0YUlkcyA9PSAnc3RyaW5nJyA/IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmRhdGEuVHJlZUxpc3RJbml0aWFsbHlFeHBhbmRlZERhdGFJZHMgYXMgc3RyaW5nLCB0aGlzLmdyb3VwKSA6IHRoaXMuZGF0YS5UcmVlTGlzdEluaXRpYWxseUV4cGFuZGVkRGF0YUlkcztcclxuICAgICAgaWYgKGlkTGlzdCAmJiBBcnJheS5pc0FycmF5KGlkTGlzdCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkS2V5cyA9IGlkTGlzdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZnRlckxvYWR6RGF0YU9wdGlvbnMoKSB7XHJcbiAgICBpZiAodGhpcy5ncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnMpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnMgdHJpZ2dlcmVkLlwiICsgdGhpcy5kYXRhKTtcclxuICAgICAgdGhpcy5ncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnModGhpcy5ncm91cCwgdGhpcy5kYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBDbG9zZSBkcm9wLWRvd24gc2VsZWN0aW9uIHVwb24gcGFnZSBzY3JvbGxcclxuICBwcml2YXRlIHN1YnNjcmliZVVJU2lnbmFsKCkge1xyXG4gICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5jb21wb25lbnRTZXJ2aWNlLnVpU2lnbmFsU2VydmljZS5zdWJzY3JpYmVUb0V2ZW50KFNpZ25hbFR5cGUuUGFnZVNjcm9sbFN0YXJ0KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xvc2VEb3duRHJvcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsb3NlRG93bkRyb3AoKSB7XHJcbiAgICBjb25zdCBjb21wID0gdGhpcy5nZXRDb21wb25lbnRJblVzZUJ5VHlwZSgpO1xyXG4gICAgaWYgKGNvbXAgJiYgY29tcC5pc09wZW4pIHtcclxuICAgICAgY29tcC50b2dnbGUoZmFsc2UpO1xyXG4gICAgICBjb21wLmJsdXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50SW5Vc2VCeVR5cGUoKTogQ29tYm9Cb3hDb21wb25lbnQgfCBEcm9wRG93bkxpc3RDb21wb25lbnQgfCBNdWx0aVNlbGVjdENvbXBvbmVudCB8IE11bHRpU2VsZWN0VHJlZUNvbXBvbmVudCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuY29tcG9uZW50VHlwZSkge1xyXG4gICAgICBjYXNlIEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bi5jb21ib2JveDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21ib2JveENvbXBvbmVudDtcclxuICAgICAgY2FzZSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24ubXVsdGlzZWxlY3Q6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlzZWxlY3Q7XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duLm11bHRpc2VsZWN0dHJlZTpcclxuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aXNlbGVjdHRyZWU7XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duLmRyb3Bkb3dubGlzdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93bmxpc3RDb21wb25lbnQ7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJ6c2VsZWN0bXVsdGlwbGUtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8aW9uaWMtc2VsZWN0YWJsZSAqbmdJZj1cImlzTW9iaWxlU2NyZWVuKClcIiAjc2VsZWN0Q29tcG9uZW50IGl0ZW0tY29udGVudCBzZWFyY2hGYWlsVGV4dD1cIk5vdGhpbmcgZm91bmQgOihcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNvbG9yPVwicHJpbWFyeVwiIGNsZWFyQnV0dG9uVGV4dD1cIkNsZWFyXCIgWyhuZ01vZGVsKV09XCJncm91cC56TW9kZWxbZGF0YS5WYWx1ZV1cIiBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImdldEl0ZW1zRGF0YSgpXCIgW2l0ZW1WYWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCIgW2l0ZW1UZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NhbkFkZEl0ZW1dPVwiISFkYXRhLk9uQWRkSXRlbVwiIFtjYW5DbGVhcl09XCJ0cnVlXCIgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjYW5TZWFyY2hdPVwiIWRhdGFbJ2Rpc2FibGUtc2VhcmNoJ11cIiBbc2hvdWxkRm9jdXNTZWFyY2hiYXJdPVwiIWRhdGFbJ2Rpc2FibGUtc2VhcmNoJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtoYXNJbmZpbml0ZVNjcm9sbF09XCIhIWRhdGEuSGFzSW5maW5pdGVTY3JvbGxcIiBbaXNNdWx0aXBsZV09XCJkYXRhLk11bHRpcGxlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNFbmFibGVkXT1cIiEoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaG91bGRTdG9yZUl0ZW1WYWx1ZV09XCJ0cnVlXCIgKG9uU2VhcmNoKT1cIm9uU2VhcmNoKCRldmVudClcIiAob25JbmZpbml0ZVNjcm9sbCk9XCJnZXRJbmZpbml0ZURhdGEoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG9uQWRkSXRlbSk9XCJvbkFkZEl0ZW0oJGV2ZW50KVwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZV9tb2JpbGUoJGV2ZW50KVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiIGNsYXNzPVwiZTF0YWctc3R5bGUxXCI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIGlvbmljU2VsZWN0YWJsZUl0ZW1JY29uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWlzSXRlbVNlbGVjdGVkPVwiaXNJdGVtU2VsZWN0ZWRcIj5cclxuICAgICAgPGZhLWljb24gc2xvdD1cInN0YXJ0XCIgY2xhc3M9XCJpc0l0ZW1TZWxlY3RlZCBlMXRhZy1zdHlsZTJcIiBzaXplPVwic21cIiBbaWNvbl09XCJbJ2ZhcicsIGlzSXRlbVNlbGVjdGVkID8gJ2NoZWNrLWNpcmNsZSc6ICdjaXJjbGUnXVwiXHJcbiAgICAgICAgICAgICAgIFtzdHlsZXNdPVwieydjb2xvcic6IGlzSXRlbVNlbGVjdGVkID8gJ2RvZGdlckJsdWUnIDogJ2xpZ2h0R3JheSd9XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+PC9mYS1pY29uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlQ2xvc2VCdXR0b25UZW1wbGF0ZT5cclxuICAgICAgPCEtLSA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZVwiPjwvaW9uLWljb24+IC0tPlxyXG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCIndGltZXMtY2lyY2xlJ1wiIHNpemU9XCJtZFwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiIGNsYXNzPVwiZTF0YWctc3R5bGUzXCI+PC9mYS1pY29uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlVGl0bGVUZW1wbGF0ZT5cclxuICAgICAgPHNwYW4gY2xhc3M9ZTF0YWctc3R5bGU0IFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPnt7ZGF0YS5MYWJlbH19PC9zcGFuPlxyXG4gICAgICA8aW9uLXRleHQgKm5nSWY9XCJnZXRJc1JlcXVpcmVkVmFsdWUoKVwiIGNvbG9yPVwiZGFuZ2VyXCI+KjwvaW9uLXRleHQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBpb25pY1NlbGVjdGFibGVJdGVtVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZTF0YWctc3R5bGU1XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+e3sgZ2V0SXRlbVRlbXBsYXRlKGl0ZW0sIGRhdGEsIGdyb3VwLCBpdGVtVmFsdWVGaWVsZCwgaXRlbVRleHRGaWVsZCkgfX08L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvaW9uaWMtc2VsZWN0YWJsZT5cclxuICA8a2VuZG8tY29tYm9ib3ggKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSAmJiBjb21wb25lbnRUeXBlID09ICdjb21ib2JveCdcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkIGUxdGFnLXN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgICNjb21ib2JveENvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRJdGVtc0RhdGEoKSB8IHpzZWxlY3RUcmFuc2xhdGlvblBhcnNlciA6IGl0ZW1UZXh0RmllbGQgOiBkYXRhIDogZ3JvdXAgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbV09XCJhbGxvd0N1c3RvbVZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW2tlbmRvRHJvcERvd25GaWx0ZXJdPVwiZmlsdGVyU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICBbc3VnZ2VzdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwiZGF0YS5GaWx0ZXJhYmxlID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW29wZW5PbkZvY3VzXT1cImRpc2FibGVPcGVuT25Gb2N1cyhjb21ib2JveENvbXBvbmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VfZGVza3RvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJoYW5kbGVGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsXT1cImRhdGEuSXNFbmFibGVWaXJ0dWFsaXphdGlvbiA9PSB0cnVlID8gdmlydHVhbCA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAob3Blbik9XCJoYW5kbGVPcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xvc2UpPVwiaGFuZGxlQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkYXRhLkNsZWFyQnV0dG9uID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9Db21ib0JveEl0ZW1UZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZTF0YWctc3R5bGU1XCIgW2NsYXNzLnpzZWxlY3QtdmlydHVhbGl6YXRpb25dPVwiZGF0YS5Jc0VuYWJsZVZpcnR1YWxpemF0aW9uXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+e3sgZ2V0SXRlbVRlbXBsYXRlKGRhdGFJdGVtLCBkYXRhLCBncm91cCwgaXRlbVZhbHVlRmllbGQsIGl0ZW1UZXh0RmllbGQpIH19PC9zcGFuPlxyXG4gICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGVtcGxhdGVcIj57eyBkYXRhSXRlbS52YWx1ZSB9fTwvc3Bhbj4ge3sgZGF0YUl0ZW0udGV4dCB9fSAtLT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby1jb21ib2JveD5cclxuICA8a2VuZG8tbXVsdGlzZWxlY3QgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSAmJiBjb21wb25lbnRUeXBlID09ICdtdWx0aXNlbGVjdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkIGUxdGFnLXN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICNtdWx0aXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRJdGVtc0RhdGEoKSB8IHpzZWxlY3RUcmFuc2xhdGlvblBhcnNlciA6IGl0ZW1UZXh0RmllbGQgOiBkYXRhIDogZ3JvdXAgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbV09XCJhbGxvd0N1c3RvbVZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwiZGF0YS5GaWx0ZXJhYmxlID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NoZWNrYm94ZXNdPVwiZGF0YS5FbmFibGVDaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiYXV0b0Nsb3NlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2tlbmRvRHJvcERvd25GaWx0ZXJdPVwiZmlsdGVyU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VfZGVza3RvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJoYW5kbGVGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChvcGVuKT1cImhhbmRsZU9wZW4oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJoYW5kbGVDbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiaGFuZGxlQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsZWFyQnV0dG9uXT1cImRhdGEuQ2xlYXJCdXR0b24gPT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb011bHRpU2VsZWN0SXRlbVRlbXBsYXRlIGxldC1kYXRhSXRlbT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlMXRhZy1zdHlsZTVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIj57eyBnZXRJdGVtVGVtcGxhdGUoZGF0YUl0ZW0sIGRhdGEsIGdyb3VwLCBpdGVtVmFsdWVGaWVsZCwgaXRlbVRleHRGaWVsZCkgfX08L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tbXVsdGlzZWxlY3Q+XHJcbiAgPGtlbmRvLW11bHRpc2VsZWN0dHJlZSAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICAmJiBjb21wb25lbnRUeXBlID09ICdtdWx0aXNlbGVjdHRyZWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICNtdWx0aXNlbGVjdHRyZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGtlbmRvTXVsdGlTZWxlY3RUcmVlRXhwYW5kYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2tlbmRvTXVsdGlTZWxlY3RUcmVlSGllcmFyY2h5QmluZGluZ109XCJnZXRJdGVtc0RhdGEoKSB8IHpzZWxlY3RUcmFuc2xhdGlvblBhcnNlciA6IGl0ZW1UZXh0RmllbGQgOiBkYXRhIDogZ3JvdXAgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBba2VuZG9NdWx0aVNlbGVjdFRyZWVTdW1tYXJ5VGFnXT1cImNvbXBvbmVudFNldHRpbmdzLmtlbmRvTXVsdGlTZWxlY3RUcmVlU3VtbWFyeVRhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkZpZWxkPVwiVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2hhc0NoaWxkcmVuXT1cImhhc0NoaWxkcmVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJpdGVtVmFsdWVGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VfZGVza3RvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhSXRlbXNdPVwiZ2V0RGF0YUl0ZW1zKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cImF1dG9DbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZXhwYW5kT25GaWx0ZXJdPVwiY29tcG9uZW50U2V0dGluZ3MuZXhwYW5kT25GaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwiZGF0YS5GaWx0ZXJhYmxlID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwiaGFuZGxlTXVsdGlTZWxlY3RUcmVlRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW4pPVwiaGFuZGxlT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJoYW5kbGVDbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgWyhleHBhbmRlZEtleXMpXT1cImV4cGFuZGVkS2V5c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcG9wdXBTZXR0aW5nc109XCJjb21wb25lbnRTZXR0aW5ncy5wb3B1cFNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkYXRhLkNsZWFyQnV0dG9uID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9NdWx0aVNlbGVjdFRyZWVOb0RhdGFUZW1wbGF0ZT5cclxuICAgICAgPGg0PlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiay1pY29uIGstaS13YXJuaW5nXCI+PC9zcGFuPjxiciAvPjxiciAvPlxyXG4gICAgICAgIE5vIHJlY29yZCBmb3VuZC5cclxuICAgICAgPC9oND5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby1tdWx0aXNlbGVjdHRyZWU+XHJcbiAgPGtlbmRvLWRyb3Bkb3dubGlzdCAgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSAgJiYgY29tcG9uZW50VHlwZSA9PSAnZHJvcGRvd25saXN0J1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3dubGlzdENvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJnZXRJdGVtc0RhdGEoKSB8IHpzZWxlY3RUcmFuc2xhdGlvblBhcnNlciA6IGl0ZW1UZXh0RmllbGQgOiBkYXRhIDogZ3JvdXAgfCBhc3luY1wiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFthbGxvd0N1c3RvbV09XCJhbGxvd0N1c3RvbVZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW2tlbmRvRHJvcERvd25GaWx0ZXJdPVwiZmlsdGVyU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICBbc3VnZ2VzdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwiZGF0YS5GaWx0ZXJhYmxlID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW29wZW5PbkZvY3VzXT1cImRpc2FibGVPcGVuT25Gb2N1cyhjb21ib2JveENvbXBvbmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGEuQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2VfZGVza3RvcCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJoYW5kbGVGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsXT1cImRhdGEuSXNFbmFibGVWaXJ0dWFsaXphdGlvbiA9PSB0cnVlID8gdmlydHVhbCA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAob3Blbik9XCJoYW5kbGVPcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xvc2UpPVwiaGFuZGxlQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkYXRhLkNsZWFyQnV0dG9uID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9Ecm9wRG93bkxpc3RJdGVtVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiIFtjbGFzcy56c2VsZWN0LXZpcnR1YWxpemF0aW9uXT1cImRhdGEuSXNFbmFibGVWaXJ0dWFsaXphdGlvblwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNVwiPnt7IGdldEl0ZW1UZW1wbGF0ZShkYXRhSXRlbSwgZGF0YSwgZ3JvdXAsIGl0ZW1WYWx1ZUZpZWxkLCBpdGVtVGV4dEZpZWxkKSB9fTwvc3Bhbj5cclxuICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInRlbXBsYXRlXCI+e3sgZGF0YUl0ZW0udmFsdWUgfX08L3NwYW4+IHt7IGRhdGFJdGVtLnRleHQgfX0gLS0+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tZHJvcGRvd25saXN0PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -4,7 +4,7 @@ import { Injectable, Directive, Inject, Input, HostListener, Pipe, Component, Vi
|
|
|
4
4
|
import { HttpParams, HttpEventType } from '@angular/common/http';
|
|
5
5
|
import * as i1 from '@angular/router';
|
|
6
6
|
import { NavigationStart, NavigationEnd, NavigationError, RouterModule } from '@angular/router';
|
|
7
|
-
import { BehaviorSubject, forkJoin, of, tap as tap$1, map as map$1, first, isObservable, switchMap as switchMap$1, interval, takeWhile,
|
|
7
|
+
import { BehaviorSubject, forkJoin, of, tap as tap$1, map as map$1, first, isObservable, switchMap as switchMap$1, interval, takeWhile, from, Subject, delay as delay$1, filter, auditTime } from 'rxjs';
|
|
8
8
|
import { tap, switchMap, map, take, delay, concatMap, ignoreElements } from 'rxjs/operators';
|
|
9
9
|
import * as i2 from 'mmhglobal-zcore';
|
|
10
10
|
import { ZGroup, FormType, ZComponentHelper, MESSAGETYPE, ActionType, DefaultMessage, DefaultDialogTitle, Delimiter, ZSelectPostApiParams, ComponentType as ComponentType$1, ZComponentProperties, SignalType, DropdownSearchOperator, InternalComponentType_DropDown, UploadMetaData, AttachmentConfig, DefaultPageSettingParams, ZCoreModule } from 'mmhglobal-zcore';
|
|
@@ -7502,18 +7502,19 @@ class ZselectmultipleComponent extends InputFieldBase {
|
|
|
7502
7502
|
}
|
|
7503
7503
|
handleFilter(searchTerm, justOneTime) {
|
|
7504
7504
|
var _a;
|
|
7505
|
-
|
|
7506
|
-
|
|
7505
|
+
if (this.multiselect) {
|
|
7506
|
+
const meetsLengthCondition = this.data.SearchLength && this.data.SearchLength <= searchTerm.length;
|
|
7507
|
+
this.multiselect.toggle(meetsLengthCondition);
|
|
7508
|
+
}
|
|
7507
7509
|
const searchBy = (_a = this.data.SearchFields) !== null && _a !== void 0 ? _a : this.itemTextField;
|
|
7508
7510
|
const itemsData = this.getItemsData();
|
|
7509
|
-
this.
|
|
7511
|
+
if (this.data.AllowCustomValue) {
|
|
7512
|
+
this.checkAllowCustomValue(searchBy, searchTerm, itemsData);
|
|
7513
|
+
}
|
|
7510
7514
|
if (this.debounceSub) {
|
|
7511
7515
|
this.debounceSub.unsubscribe();
|
|
7512
7516
|
}
|
|
7513
|
-
|
|
7514
|
-
.pipe(tap(() => (this.isLoading = true)), delay(500), tap(() => this.performSearch(searchTerm)), tap(() => (this.isLoading = false)))
|
|
7515
|
-
.subscribe();
|
|
7516
|
-
this.debounceSub = meetsLengthCondition ? searchSubscription : new Subscription();
|
|
7517
|
+
this.debounceSub = of([]).pipe(tap(() => (this.isLoading = true)), delay(500), tap(() => this.performSearch(searchTerm)), tap(() => (this.isLoading = false))).subscribe();
|
|
7517
7518
|
}
|
|
7518
7519
|
performSearch(value) {
|
|
7519
7520
|
const searchAction = () => {
|
|
@@ -10117,6 +10118,9 @@ class ZmfbComponent extends ButtonFieldBase {
|
|
|
10117
10118
|
// handle as zWorkflowButton
|
|
10118
10119
|
this.isWorkflowButton = true;
|
|
10119
10120
|
this.loadWorkflowButton();
|
|
10121
|
+
//Object.assign(this.group, {
|
|
10122
|
+
// zmfbLinked: `${this.data.Type}_${this.data.Name}`
|
|
10123
|
+
//});
|
|
10120
10124
|
}
|
|
10121
10125
|
else {
|
|
10122
10126
|
const field$ = this.fieldService.getFormFieldCode(this.buttonField.Value, "FormField");
|
|
@@ -10129,8 +10133,8 @@ class ZmfbComponent extends ButtonFieldBase {
|
|
|
10129
10133
|
this.items.push({
|
|
10130
10134
|
label: label,
|
|
10131
10135
|
icon: ZComponentHelper.getIcon(button.Icon),
|
|
10132
|
-
|
|
10133
|
-
|
|
10136
|
+
clickEvent: button.ClickEvent,
|
|
10137
|
+
click: (y) => {
|
|
10134
10138
|
this.buttonClick(button);
|
|
10135
10139
|
}
|
|
10136
10140
|
});
|
|
@@ -10209,6 +10213,10 @@ class ZmfbComponent extends ButtonFieldBase {
|
|
|
10209
10213
|
console.log("GOTO Button: ", button.Name);
|
|
10210
10214
|
this.workflowService.gotoButton_Onclick(button, this.buttonField, attributes, this.group, false).subscribe(res => {
|
|
10211
10215
|
this.loadWorkflowButton();
|
|
10216
|
+
// Require to refresh the firstzBtn
|
|
10217
|
+
const mainButtonName = `${this.buttonField.Type}_${this.buttonField.Name}`;
|
|
10218
|
+
const mainButton = ZComponentHelper.getComponent(this.group, mainButtonName);
|
|
10219
|
+
mainButton['loadButton']();
|
|
10212
10220
|
if (res) {
|
|
10213
10221
|
this.workflowService.triggerSendEmail(this.group).subscribe();
|
|
10214
10222
|
}
|