@impartner/design-components 2.1.1 → 2.1.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/esm2022/lib/alert/alert.component.mjs +3 -3
- package/esm2022/lib/form-field/controls/select/select.component.mjs +4 -1
- package/esm2022/lib/text-highlight/text-highlight.component.mjs +9 -4
- package/fesm2022/impartner-design-components.mjs +13 -5
- package/fesm2022/impartner-design-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -74,11 +74,11 @@ export class AlertComponent {
|
|
|
74
74
|
this.dismiss.emit();
|
|
75
75
|
}
|
|
76
76
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText", bodyText: "bodyText", inline: "inline", hideIcon: "hideIcon", dismissible: "dismissible" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText", bodyText: "bodyText", inline: "inline", hideIcon: "hideIcon", dismissible: "dismissible" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .alert-content-heading-only{gap:0}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
|
|
78
78
|
}
|
|
79
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AlertComponent, decorators: [{
|
|
80
80
|
type: Component,
|
|
81
|
-
args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div
|
|
81
|
+
args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .alert-content-heading-only{gap:0}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}\n"] }]
|
|
82
82
|
}], propDecorators: { theme: [{
|
|
83
83
|
type: Input
|
|
84
84
|
}], show: [{
|
|
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
96
96
|
}], dismiss: [{
|
|
97
97
|
type: Output
|
|
98
98
|
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9hbGVydC9hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFHdkU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGNBQWM7SUFMM0I7UUFNRTs7V0FFRztRQUVILFVBQUssR0FBZSxTQUFTLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRXRCOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRXZCOztXQUVHO1FBQ00sV0FBTSxHQUFHLEtBQUssQ0FBQztRQUV4Qjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUU1Qjs7V0FFRztRQUVILFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBcUNwQztJQW5DQyxJQUFJLGdCQUFnQjtRQUNsQixNQUFNLFVBQVUsR0FDZCxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFDdEIsQ0FBQyxDQUFDLGVBQWU7WUFDakIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssTUFBTTtnQkFDdkIsQ0FBQyxDQUFDLFlBQVk7Z0JBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUTtvQkFDekIsQ0FBQyxDQUFDLGNBQWM7b0JBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVM7d0JBQzFCLENBQUMsQ0FBQyxlQUFlO3dCQUNqQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RFLE9BQU8sVUFBVSxHQUFHLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFDN0IsQ0FBQyxDQUFDLG9CQUFvQjtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxNQUFNO2dCQUN2QixDQUFDLENBQUMsYUFBYTtnQkFDZixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRO29CQUN6QixDQUFDLENBQUMsY0FBYztvQkFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUzt3QkFDMUIsQ0FBQyxDQUFDLGNBQWM7d0JBQ2hCLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDVCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0E3RVUsY0FBYztrR0FBZCxjQUFjLG1RQ1ozQixna0RBcURBOzsyRkR6Q2EsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSw0QkFBNEI7OEJBU3RDLEtBQUs7c0JBREosS0FBSztnQkFNRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTU4sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0VGhlbWUgfSBmcm9tICcuL3RoZW1lJztcblxuLyoqXG4gKiBUaGUgYEFsZXJ0Q29tcG9uZW50YCAoYDxpbXBkYy1hbGVydGAgb3IgYDxhbnkgaW1wZGMtYWxlcnRgKSBpcyBpbnRlbmRlZCB0byBzaG93IGluZm9ybWF0aW9uIG9yIGZlZWRiYWNrIGlubGluZSB3aXRoIGNvbnRlbnQuXG4gKiBUbyB1c2UsIGltcG9ydCBgQWxlcnRNb2R1bGVgIG9yIGFub3RoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyBhbmQgZXhwb3J0cyB0aGF0IG1vZHVsZSBmcm9tIGBAaW1wYXJ0bmVyL2Rlc2lnbi1jb21wb25lbnRzYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtYWxlcnQsIFtpbXBkYy1hbGVydF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbGVydC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0Q29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSB0aGVtZSBvZiB0aGUgQWxlcnQgYWZmZWN0aW5nIHRleHQsIGljb25zLCBiYWNrZ3JvdW5kcywgYW5kIGJvcmRlcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICB0aGVtZTogQWxlcnRUaGVtZSA9ICd3YXJuaW5nJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgQWxlcnQgc2hvdWxkIGJlIHNob3duIGltbWVkaWF0ZWx5LlxuICAgKi9cbiAgQElucHV0KCkgc2hvdyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVhZGluZyB0ZXh0IG9mIHRoZSBBbGVydC4gQ29udGVudCBjYW4gYWxzbyBiZSBwcm9qZWN0ZWQgaW4gdGhlIGhlYWRpbmcgYXJlYSB1c2luZyBhIGBoZWFkaW5nYCBkaXJlY3RpdmUuXG4gICAqL1xuICBASW5wdXQoKSBoZWFkaW5nVGV4dCA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgYm9keSB0ZXh0IG9mIHRoZSBBbGVydC4gQ29udGVudCBjYW4gYWxzbyBiZSBwcm9qZWN0ZWQgaW50byB0aGUgYm9keSBhcmVhIHVzaW5nIGRlZmF1bHQgcHJvamVjdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIGJvZHlUZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIGFuIEFsZXJ0IGlzIGEgXCJmbG9hdGluZ1wiIG5vdGlmaWNhdGlvbi4gV2hlbiBzZXQgdG8gXCJpbmxpbmVcIiwgdGhlc2UgXCJmbG9hdGluZ1wiIHN0eWxlcyBhcmUgcmVwbGFjZWQuXG4gICAqL1xuICBASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTtcblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgQWxlcnQgaWNvbiBwcm92aWRlZCBieSB0aGUgdGhlbWUgb3IgcHJvamVjdGVkIGludG8gdGhlIGljb24gYXJlYSB1c2luZyB0aGUgYGljb25gIGRpcmVjdGl2ZS5cbiAgICovXG4gIEBJbnB1dCgpIGhpZGVJY29uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgQWxlcnQgdG8gYmUgZGlzbWlzc2VkLlxuICAgKi9cbiAgQElucHV0KCkgZGlzbWlzc2libGUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIEFsZXJ0IGlzIGRpc21pc3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBkaXNtaXNzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCBjb21wb25lbnRDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGhlbWVDbGFzcyA9XG4gICAgICB0aGlzLnRoZW1lID09PSAnd2FybmluZydcbiAgICAgICAgPyAnYWxlcnQtd2FybmluZydcbiAgICAgICAgOiB0aGlzLnRoZW1lID09PSAnaW5mbydcbiAgICAgICAgPyAnYWxlcnQtaW5mbydcbiAgICAgICAgOiB0aGlzLnRoZW1lID09PSAnZGFuZ2VyJ1xuICAgICAgICA/ICdhbGVydC1kYW5nZXInXG4gICAgICAgIDogdGhpcy50aGVtZSA9PT0gJ3N1Y2Nlc3MnXG4gICAgICAgID8gJ2FsZXJ0LXN1Y2Nlc3MnXG4gICAgICAgIDogJyc7XG4gICAgY29uc3QgaW5saW5lQ2xhc3MgPSB0aGlzLmlubGluZSA/ICcgYWxlcnQtaW5saW5lJyA6ICcnO1xuICAgIGNvbnN0IGRpc21pc3NpYmxlQ2xhc3MgPSB0aGlzLmRpc21pc3NpYmxlID8gJyBhbGVydC1kaXNtaXNzaWJsZScgOiAnJztcbiAgICByZXR1cm4gdGhlbWVDbGFzcyArIGlubGluZUNsYXNzICsgZGlzbWlzc2libGVDbGFzcztcbiAgfVxuXG4gIGdldCB0aGVtZUljb25OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWUgPT09ICd3YXJuaW5nJ1xuICAgICAgPyAnZXhjbGFtYXRpb24tY2lyY2xlJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnaW5mbydcbiAgICAgID8gJ2luZm8tY2lyY2xlJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnZGFuZ2VyJ1xuICAgICAgPyAndGltZXMtY2lyY2xlJ1xuICAgICAgOiB0aGlzLnRoZW1lID09PSAnc3VjY2VzcydcbiAgICAgID8gJ2NoZWNrLWNpcmNsZSdcbiAgICAgIDogJyc7XG4gIH1cblxuICBjbG9zZUFsZXJ0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNtaXNzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcbiAgICB0aGlzLmRpc21pc3MuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1wiIGNsYXNzPVwiaW1wZGMgYWxlcnRcIiBbbmdDbGFzc109XCJjb21wb25lbnRDbGFzc2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZUljb25cIj5cbiAgICA8c3BhbiAjYWxlcnRJY29uIFtoaWRkZW5dPVwiIWFsZXJ0SWNvbi5jaGlsZHJlbi5sZW5ndGhcIiBjbGFzcz1cImFsZXJ0LWljb25cIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpY29uXVwiPjwvbmctY29udGVudD5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCIhYWxlcnRJY29uLmNoaWxkcmVuLmxlbmd0aFwiIGNsYXNzPVwiYWxlcnQtaWNvblwiPlxuICAgICAgPHNwYW4gaW1wZGMtaWNvbiBbbmFtZV09XCJ0aGVtZUljb25OYW1lXCI+PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYWxlcnQtY29udGVudFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2FsZXJ0LWNvbnRlbnQtaGVhZGluZy1vbmx5JzpcbiAgICAgICAgIWJvZHlUZXh0ICYmXG4gICAgICAgICFwcm9qZWN0ZWRCb2R5LmNoaWxkcmVuLmxlbmd0aCAmJlxuICAgICAgICAhcHJvamVjdGVkQm9keS5pbm5lckhUTUwgJiZcbiAgICAgICAgIWFsZXJ0QWN0aW9ucy5jaGlsZHJlbi5sZW5ndGhcbiAgICB9XCI+XG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0LWhlYWRpbmdcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkaW5nXVwiPjwvbmctY29udGVudD5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZGluZ1RleHRcIj57eyBoZWFkaW5nVGV4dCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAjYm9keUNvbnRlbnRcbiAgICAgIGNsYXNzPVwiYWxlcnQtYm9keVwiXG4gICAgICBbaGlkZGVuXT1cIiFib2R5Q29udGVudC5jaGlsZHJlbi5sZW5ndGhcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJib2R5VGV4dFwiPnt7IGJvZHlUZXh0IH19PC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgI3Byb2plY3RlZEJvZHlcbiAgICAgICAgW2hpZGRlbl09XCIhcHJvamVjdGVkQm9keS5jaGlsZHJlbi5sZW5ndGggJiYgIXByb2plY3RlZEJvZHkuaW5uZXJIVE1MXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICNhbGVydEFjdGlvbnNcbiAgICAgICAgW2hpZGRlbl09XCIhYWxlcnRBY3Rpb25zLmNoaWxkcmVuLmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiYWxlcnQtYWN0aW9uc1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYWN0aW9uXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8YVxuICAgICpuZ0lmPVwiZGlzbWlzc2libGVcIlxuICAgIGNsYXNzPVwiY2xvc2UtaWNvblwiXG4gICAgKGNsaWNrKT1cImNsb3NlQWxlcnQoKVwiXG4gICAgZGF0YS1icy1kaXNtaXNzPVwiYWxlcnRcIlxuICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxuICAgIDxzcGFuIGltcGRjLWljb24gbmFtZT1cInRpbWVzXCIgdGhlbWU9XCJyZWd1bGFyXCI+PC9zcGFuPlxuICA8L2E+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -237,6 +237,8 @@ export class _SelectComponentBase extends __SelectComponentBase {
|
|
|
237
237
|
if (this.ngControl) {
|
|
238
238
|
this.ngControl.valueAccessor = this;
|
|
239
239
|
}
|
|
240
|
+
// idempotent assignment - respects arbitrary ID set via attr if present, otherwise falls back to auto UUID;
|
|
241
|
+
// also triggers stateChanges pulse for parent form-field component
|
|
240
242
|
this.id = this.id;
|
|
241
243
|
this.tabIndex = parseInt(tabIndex ?? '') || 0;
|
|
242
244
|
}
|
|
@@ -390,6 +392,7 @@ export class _SelectComponentBase extends __SelectComponentBase {
|
|
|
390
392
|
clearSelection() {
|
|
391
393
|
this.value = null;
|
|
392
394
|
this.focus();
|
|
395
|
+
this._propagateChanges();
|
|
393
396
|
}
|
|
394
397
|
handleSearchSubmit(evt) {
|
|
395
398
|
evt.preventDefault();
|
|
@@ -719,4 +722,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
719
722
|
}], multipleDisplay: [{
|
|
720
723
|
type: Input
|
|
721
724
|
}] } });
|
|
722
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFFTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBSU4sTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixlQUFlLEVBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxNQUFNLEVBQ04sbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFlBQVksRUFDWixLQUFLLEVBQ0wsb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxLQUFL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RUFBRSxZQUFZO3dCQUNsQyxrQ0FBa0MsRUFBRSxNQUFNO3dCQUMxQyxnQ0FBZ0MsRUFBRSxVQUFVO3dCQUM1QyxnQ0FBZ0MsRUFBRSxVQUFVO3dCQUM1QywrQkFBK0IsRUFBRSxZQUFZO3dCQUM3Qyw2QkFBNkIsRUFBRSxPQUFPO3dCQUN0QyxnQ0FBZ0MsRUFBRSxVQUFVO3dCQUM1QyxTQUFTLEVBQUUsb0JBQW9CO3FCQUNoQyxhQUNVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFdBQVcsaUJBQWlCO3lCQUM3Qjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsb0NBQW9DOzRCQUM3QyxXQUFXLGlCQUFpQjt5QkFDN0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDBDQUEwQzs0QkFDbkQsV0FBVyxpQkFBaUI7eUJBQzdCO3FCQUNGOzswQkFTWSxTQUFTOzJCQUFDLFVBQVU7eUNBVTFCLFVBQVU7c0JBRGhCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSWxCLFFBQVE7c0JBRDNCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBYS9CLGVBQWU7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tY29uZmxpY3RpbmctbGlmZWN5Y2xlICovXG5pbXBvcnQgeyBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBBdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgbnVtYmVyQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgTmdDb250cm9sLFxuICBOZ0Zvcm0sXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd24sIE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSAnbmFub2lkJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBkZWZlcixcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ29tcG9uZW50VGhlbWUgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBsYyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBCYWRnZU1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2JhZGdlJztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9pY29uJztcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgSW1wZGNGb3JtUm9vdCxcbiAgSU1QRENfRk9STV9ST09ULFxuICBGb3JtRmllbGRNb2R1bGVcbn0gZnJvbSAnLi4vLi4vY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENhbkRpc2FibGUsXG4gIEhhc1RhYkluZGV4LFxuICBJQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgSUhhc0Vycm9yU3RhdGUsXG4gIEltcGRjRm9ybUZpZWxkQ29udHJvbCxcbiAgbWl4aW5EaXNhYmxlZCxcbiAgbWl4aW5FcnJvclN0YXRlLFxuICBtaXhpblRhYkluZGV4XG59IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uL2lucHV0JztcbmltcG9ydCB7XG4gIElNUERDX1NFTEVDVF9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCxcbiAgSU1QRENfU0VMRUNUX1ZBTFVFX0JBREdFU19QQVJFTlRfQ09NUE9ORU5ULFxuICBJU2VsZWN0T3B0aW9uUGFyZW50Q29tcG9uZW50LFxuICBJU2VsZWN0VmFsdWVCYWRnZXNQYXJlbnRDb21wb25lbnRcbn0gZnJvbSAnLi9vcHRpb24tcGFyZW50JztcbmltcG9ydCB7XG4gIFNlbGVjdE9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50LFxuICBTZWxlY3RPcHRpb25EaXNwbGF5Q29tcG9uZW50XG59IGZyb20gJy4vb3B0aW9uLWRpc3BsYXknO1xuaW1wb3J0IHsgU2VsZWN0TW9kZWwgfSBmcm9tICcuL3NlbGVjdC1tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL29wdGlvbic7XG5pbXBvcnQgeyBJU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNlbGVjdFZhbHVlVGFnc0Rpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL3ZhbHVlLXRhZ3MtZGlzcGxheSc7XG5cbmV4cG9ydCBjb25zdCBPTl9PUEVOX0FVVE9fU0NST0xMX1RJTUVPVVRfTVMgPSA1MDtcblxuZXhwb3J0IGNsYXNzIFNlbGVjdENoYW5nZUV2ZW50PFRDb21wb25lbnQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgLyoqIFRoZSBzcGVjaWZpYyBTZWxlY3RDb21wb25lbnQgdGhhdCBjaGFuZ2VkLiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzb3VyY2U6IFRDb21wb25lbnQsXG4gICAgLyoqIFRoZSBzZWxlY3RlZCB2YWx1ZShzKSAqL1xuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZTogYW55XG4gICkge31cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGV4Y2VwdGlvbiB0byBiZSB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGFzc2lnbiBhIG5vbi1hcnJheSB2YWx1ZSB0byBhIHNlbGVjdFxuICogaW4gYG11bHRpcGxlYCBtb2RlLiBOb3RlIHRoYXQgYHVuZGVmaW5lZGAgYW5kIGBudWxsYCBhcmUgc3RpbGwgdmFsaWQgdmFsdWVzIHRvIGFsbG93IGZvclxuICogcmVzZXR0aW5nIHRoZSB2YWx1ZS5cbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcGRjU2VsZWN0Tm9uQXJyYXlWYWx1ZUVycm9yKCk6IEVycm9yIHtcbiAgcmV0dXJuIEVycm9yKCdWYWx1ZSBtdXN0IGJlIGFuIGFycmF5IGluIG11bHRpcGxlLXNlbGVjdGlvbiBtb2RlLicpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYW4gZXhjZXB0aW9uIHRvIGJlIHRocm93biB3aGVuIGFzc2lnbmluZyBhIG5vbi1mdW5jdGlvbiB2YWx1ZSB0byB0aGUgY29tcGFyYXRvclxuICogdXNlZCB0byBkZXRlcm1pbmUgaWYgYSB2YWx1ZSBjb3JyZXNwb25kcyB0byBhbiBvcHRpb24uIE5vdGUgdGhhdCB3aGV0aGVyIHRoZSBmdW5jdGlvblxuICogYWN0dWFsbHkgdGFrZXMgdHdvIHZhbHVlcyBhbmQgcmV0dXJucyBhIGJvb2xlYW4gaXMgbm90IGNoZWNrZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbXBkY1NlbGVjdE5vbkZ1bmN0aW9uVmFsdWVFcnJvcigpOiBFcnJvciB7XG4gIHJldHVybiBFcnJvcignYGNvbXBhcmVXaXRoYCBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBjaGFuZ2UgYSBzZWxlY3QncyBgbXVsdGlwbGVgIG9wdGlvblxuICogYWZ0ZXIgaW5pdGlhbGl6YXRpb24uXG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbXBkY1NlbGVjdER5bmFtaWNNdWx0aXBsZUVycm9yKCk6IEVycm9yIHtcbiAgcmV0dXJuIEVycm9yKCdDYW5ub3QgY2hhbmdlIGBtdWx0aXBsZWAgbW9kZSBvZiBzZWxlY3QgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uJyk7XG59XG5cbmNvbnN0IERFRkFVTFRfQUNUSVZFX0lOREVYID0gLTE7XG5cbmludGVyZmFjZSBJUmVuZGVyZWRTZWxlY3RPcHRpb24gZXh0ZW5kcyBJU2VsZWN0T3B0aW9uIHtcbiAgcmVhZG9ubHkgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICByZWFkb25seSBzaG93R3JvdXBMYWJlbD86IGJvb2xlYW47XG59XG5cbmNvbnN0IF9fU2VsZWN0Q29tcG9uZW50QmFzZSA9IG1peGluVGFiSW5kZXgoXG4gIG1peGluRGlzYWJsZWQoXG4gICAgbWl4aW5FcnJvclN0YXRlKFxuICAgICAgY2xhc3Mge1xuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgICAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgICBwdWJsaWMgX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICAgICAgcHVibGljIF9mb3JtUm9vdDogSW1wZGNGb3JtUm9vdCB8IG51bGwsXG4gICAgICAgICAgcHVibGljIF9wYXJlbnRGb3JtOiBOZ0Zvcm0gfCBudWxsLFxuICAgICAgICAgIHB1YmxpYyBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUgfCBudWxsLFxuICAgICAgICAgIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGxcbiAgICAgICAgKSB7fVxuICAgICAgfVxuICAgIClcbiAgKVxuKTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX1NlbGVjdENvbXBvbmVudEJhc2VcbiAgZXh0ZW5kcyBfX1NlbGVjdENvbXBvbmVudEJhc2VcbiAgaW1wbGVtZW50c1xuICAgIElTZWxlY3RPcHRpb25QYXJlbnRDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIERvQ2hlY2ssXG4gICAgT25EZXN0cm95LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEhhc1RhYkluZGV4LFxuICAgIEltcGRjRm9ybUZpZWxkQ29udHJvbDxhbnk+LFxuICAgIENhbkRpc2FibGUsXG4gICAgSUNhblVwZGF0ZUVycm9yU3RhdGUsXG4gICAgSUhhc0Vycm9yU3RhdGVcbntcbiAgQENvbnRlbnRDaGlsZHJlbihTZWxlY3RPcHRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHJvdGVjdGVkIHN0YXRpY09wdGlvbnMhOiBRdWVyeUxpc3Q8U2VsZWN0T3B0aW9uQ29tcG9uZW50PjtcblxuICBAVmlld0NoaWxkcmVuKFNlbGVjdE9wdGlvbkRpc3BsYXlDb21wb25lbnQpXG4gIHByb3RlY3RlZCBvcHRpb25zITogUXVlcnlMaXN0PFNlbGVjdE9wdGlvbkRpc3BsYXlDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoTmdiRHJvcGRvd24pXG4gIHByb3RlY3RlZCBuZ2JEcm9wZG93biE6IE5nYkRyb3Bkb3duO1xuXG4gIEBWaWV3Q2hpbGQoJ3RvZ2dsZUJ1dHRvbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcm90ZWN0ZWQgdG9nZ2xlQnV0dG9uUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfSlcbiAgcHJvdGVjdGVkIHNlYXJjaElucHV0UmVmPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9uZ0Rlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWFyY2hTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnbm9uZScgfCAnc3RhdGljJz4oXG4gICAgJ25vbmUnXG4gICk7XG4gIHByaXZhdGUgX3ByZXZpb3VzQ29udHJvbD86IEFic3RyYWN0Q29udHJvbCB8IG51bGw7XG4gIHByaXZhdGUgX2NvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xID09PSBvMjtcbiAgcHJpdmF0ZSBfY3ZhT25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgX2N2YU9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB1aWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEJhZGdlVGhlbWUgPSBDb21wb25lbnRUaGVtZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbHRlcmVkT3B0aW9ucyQ6IE9ic2VydmFibGU8SVJlbmRlcmVkU2VsZWN0T3B0aW9uW10+ID1cbiAgICB0aGlzLl9zZWFyY2hTdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoc2VhcmNoTW9kZSA9PiB7XG4gICAgICAgIHN3aXRjaCAoc2VhcmNoTW9kZSkge1xuICAgICAgICAgIGNhc2UgJ25vbmUnOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgdGhpcy5zdGF0aWNPcHRpb25zLmNoYW5nZXMgYXMgT2JzZXJ2YWJsZTxJU2VsZWN0T3B0aW9uW10+XG4gICAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAgIHN0YXJ0V2l0aCh0aGlzLnN0YXRpY09wdGlvbnMudG9BcnJheSgpIGFzIElTZWxlY3RPcHRpb25bXSksXG4gICAgICAgICAgICAgIG1hcChvcHRpb25zID0+XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5tYXAob3B0ID0+ICh7XG4gICAgICAgICAgICAgICAgICBncm91cExhYmVsOiBvcHQuZ3JvdXBMYWJlbCxcbiAgICAgICAgICAgICAgICAgIGdldCBsYWJlbCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdC5sYWJlbDtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogb3B0LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0LmRpc2FibGVkO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0KVxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgJ3N0YXRpYyc6XG4gICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICh0aGlzLnN0YXRpY09wdGlvbnMuY2hhbmdlcyBhcyBPYnNlcnZhYmxlPElTZWxlY3RPcHRpb25bXT4pLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuc3RhdGljT3B0aW9ucy50b0FycmF5KCkgYXMgSVNlbGVjdE9wdGlvbltdKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaFRleHRDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSlcbiAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoWywgc2VhcmNoVGV4dF0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gISFzZWFyY2hUZXh0ID8gMCA6IERFRkFVTFRfQUNUSVZFX0lOREVYO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgbWFwKChbb3B0aW9ucywgc2VhcmNoVGV4dF0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZW5kZXJlZE9wdGlvbnMgPSBvcHRpb25zLm1hcChvcHQgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGdyb3VwTGFiZWw6IG9wdC5ncm91cExhYmVsLFxuICAgICAgICAgICAgICAgICAgZ2V0IGxhYmVsKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0LmxhYmVsO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHQudmFsdWUsXG4gICAgICAgICAgICAgICAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHQuZGlzYWJsZWQ7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHQpXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICEhc2VhcmNoVGV4dFxuICAgICAgICAgICAgICAgICAgPyByZW5kZXJlZE9wdGlvbnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgIG9wdCA9PiBsYyhvcHQubGFiZWwpLmluZGV4T2YobGMoc2VhcmNoVGV4dCkpICE9PSAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICA6IHJlbmRlcmVkT3B0aW9ucztcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWFwKG9wdGlvbnMgPT5cbiAgICAgICAgT2JqZWN0LmVudHJpZXMoXG4gICAgICAgICAgb3B0aW9ucy5yZWR1Y2UoKHJlc3VsdCwgb3B0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZEdyb3VwTGFiZWwgPSBvcHQuZ3JvdXBMYWJlbD8udHJpbSgpIHx8ICcnO1xuICAgICAgICAgICAgbGV0IHNob3dHcm91cExhYmVsID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICghKHJlc29sdmVkR3JvdXBMYWJlbCBpbiByZXN1bHQpKSB7XG4gICAgICAgICAgICAgIHJlc3VsdFtyZXNvbHZlZEdyb3VwTGFiZWxdID0gW107XG4gICAgICAgICAgICAgIHNob3dHcm91cExhYmVsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0W3Jlc29sdmVkR3JvdXBMYWJlbF0ucHVzaCh7XG4gICAgICAgICAgICAgIC4uLm9wdCxcbiAgICAgICAgICAgICAgc2hvd0dyb3VwTGFiZWxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9LCB7fSBhcyB7IFtrZXk6IHN0cmluZ106IElSZW5kZXJlZFNlbGVjdE9wdGlvbltdIH0pXG4gICAgICAgICkuZmxhdE1hcCgoWywgZ3JvdXBPcHRpb25zXSkgPT4gZ3JvdXBPcHRpb25zKVxuICAgICAgKVxuICAgICk7XG4gIHByb3RlY3RlZCBzZWxlY3Rpb25Nb2RlbCE6IFNlbGVjdE1vZGVsPElTZWxlY3RPcHRpb24+O1xuICBwcm90ZWN0ZWQgYWN0aXZlSW5kZXggPSBERUZBVUxUX0FDVElWRV9JTkRFWDtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uU2VsZWN0aW9uQ2hhbmdlczogT2JzZXJ2YWJsZTxTZWxlY3RPcHRpb25TZWxlY3Rpb25DaGFuZ2VFdmVudD4gPVxuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmNoYW5nZXMucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgob3B0aW9ucyksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICBtZXJnZSguLi5vcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uLm9uU2VsZWN0aW9uQ2hhbmdlKSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5vcHRpb25TZWxlY3Rpb25DaGFuZ2VzKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgb3Igbm90IGFuIGlucHV0IGZpZWxkIHdpbGwgYXBwZWFyIGZvciBzZWFyY2hpbmcgYW5kXG4gICAqIGZpbHRlcmluZyB2aXNpYmxlIG9wdGlvbnMuXG4gICAqXG4gICAqIC0gYCdub25lJ2A6IE5vIHNlYXJjaCBjb250cm9sIHdpbGwgYmUgZGlzcGxheWVkLCBhbmQgYWxsIHNlbGVjdCBvcHRpb25zIGFyZSBwcm92aWRlZCB2aWEgcHJvamVjdGVkIGA8aW1wZGMtc2VsZWN0LW9wdGlvbj5gIGVsZW1lbnRzLlxuICAgKiAtIGAnc3RhdGljJ2A6IEEgc2VhcmNoIGNvbnRyb2wgd2lsbCBiZSBkaXNwbGF5ZWQsIHNlbGVjdCBvcHRpb25zIGFyZSBwcm92aWRlZCB2aWEgcHJvamVjdGVkIGA8aW1wZGMtc2VsZWN0LW9wdGlvbj5gIGVsZW1lbnRzLCBhbmRcbiAgICogZmlsdGVyaW5nIGlzIHBlcmZvcm1lZCBhZ2FpbnN0IHRoZSBgW2xhYmVsXWAgYXR0cmlidXRlIHZhbHVlLlxuICAgKiBAZGVmYXVsdCAnbm9uZSdcbiAgICovXG4gIHB1YmxpYyBnZXQgc2VhcmNoKCk6ICdub25lJyB8ICdzdGF0aWMnIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoU3ViamVjdC52YWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHNlYXJjaCh2YWx1ZTogJ25vbmUnIHwgJ3N0YXRpYycpIHtcbiAgICB0aGlzLl9zZWFyY2hTdWJqZWN0Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFjZWhvbGRlciB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBubyBzZWxlY3Rpb24gaGFzIGJlZW4gbWFkZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXFwtIFNlbGVjdCAtXG4gICAqL1xuICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG4gIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByb3RlY3RlZCBfcGxhY2Vob2xkZXIgPSAnLSBTZWxlY3QgLSc7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc2V0IHJlcXVpcmVkbmVzcyBvZiBjb250cm9sIGluIGEgdGVtcGxhdGUtYmFzZWQgbWFubmVyO1xuICAgKiBub3QgbmVjZXNzYXJ5IHdoZW4gdXNpbmcgdGhlIEFuZ3VsYXIgcmVhY3RpdmUgZm9ybXMgQVBJIGFuZCBgcmVxdWlyZWRgIHZhbGlkYXRvci5cbiAgICovXG4gIHB1YmxpYyBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuX3JlcXVpcmVkID8/XG4gICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpID8/XG4gICAgICBmYWxzZVxuICAgICk7XG4gIH1cbiAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGEgc2luZ2xlLXNlbGVjdCBvciBtdWx0aXBsZS1zZWxlY3QuIENhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG4gIHByb3RlY3RlZCBfbXVsdGlwbGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdXNlZCB0byBjb21wYXJlIG9wdGlvbiB2YWx1ZXMgd2l0aCBzZWxlY3RlZCB2YWx1ZXMuIFRoZSBmaXJzdCBhcmcgaXMgYVxuICAgKiBgdmFsdWVgIGZyb20gYW4gb3B0aW9uLCBhbmQgdGhlIHNlY29uZCBhcmcgaXMgYSBgdmFsdWVgIGZyb20gdGhlIHNlbGVjdGlvbiBvciBhbm90aGVyIG9wdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNvbXBhcmVXaXRoKCkge1xuICAgIHJldHVybiB0aGlzLl9jb21wYXJlV2l0aDtcbiAgfVxuICBwdWJsaWMgc2V0IGNvbXBhcmVXaXRoKGZuOiAoYTogYW55LCBiOiBhbnkpID0+IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBnZXRJbXBkY1NlbGVjdE5vbkZ1bmN0aW9uVmFsdWVFcnJvcigpO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbXBhcmVXaXRoID0gZm47XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgLy8gQ2hhbmdpbmcgdGhlIGNvbXBhcmF0b3IgZnVuY3Rpb24gbWVhbnMgdGhlIHZpc3VhbCBzZWxlY3Rpb24gbWF5IGhhdmUgY2hhbmdlZC5cbiAgICAgIHRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRG9jdW1lbnQgZWxlbWVudCB0aGF0IHRoZSBzZWxlY3QgZHJvcGRvd24gd2lsbCBiZSBhdHRhY2hlZCB0byBpbiB0aGUgRE9NIC0gZWl0aGVyIHRoZVxuICAgKiBkb2N1bWVudCdzIGA8Ym9keT5gIHRhZywgb3IgYXMgYSBjaGlsZCBvZiB0aGUgY29tcG9uZW50IHRhZy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgKGAnYm9keSdgKSBpcyBnZW5lcmFsbHkgdGhlIGNvcnJlY3QgY2hvaWNlLCBhbmQgc2hvdWxkIG9ubHkgYmVcbiAgICogb3ZlcnJpZGRlbiB3aGVuIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHRoZSByZXN1bHQgYmVoYXZpb3IgaXMgd2hhdCdzIGRlc2lyZWQuXG4gICAqL1xuICBwdWJsaWMgZHJvcGRvd25Db250YWluZXI6ICdib2R5JyB8IG51bGwgPSAnYm9keSc7XG5cbiAgcHVibGljIG92ZXJyaWRlIGVycm9yU3RhdGVNYXRjaGVyITogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgLyoqIEV2ZW50cyBmaXJlIHdoZW4gc2VsZWN0aW9uIGhhcyBiZWVuIGNoYW5nZWQgYnkgdGhlIHVzZXIuICovXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxTZWxlY3RDaGFuZ2VFdmVudDx0aGlzPj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0Q2hhbmdlRXZlbnQ8dGhpcz4+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50cyBmaXJlIHdoZW4gcmF3IHZhbHVlIG9mIHNlbGVjdCBjaGFuZ2VzLiBNYWlubHkgZXhpc3RzIHRvIGhhbmRsZVxuICAgKiB0d28td2F5IGJpbmRpbmcgb2YgYHZhbHVlYCBpbnB1dCBwcm9wZXJ0eS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBFdmVudHMgZmlyZSB3aGVuIHRoZSB0ZXh0IHZhbHVlIG9mIHRoZSBvcHRpb24gc2VhcmNoIGlucHV0IGNvbnRyb2wgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IHNlYXJjaFRleHRDaGFuZ2VzOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+ID1cbiAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKHVpZDogc3RyaW5nLCB0YWJJbmRleD86IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgaW5qZWN0KEVycm9yU3RhdGVNYXRjaGVyKSxcbiAgICAgIGluamVjdChJTVBEQ19GT1JNX1JPT1QsIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICBpbmplY3QoTmdGb3JtLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgaW5qZWN0KEZvcm1Hcm91cERpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgICAgIGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUsIHNlbGY6IHRydWUgfSlcbiAgICApO1xuXG4gICAgdGhpcy51aWQgPSB1aWQ7XG5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xuXG4gICAgdGhpcy50YWJJbmRleCA9IHBhcnNlSW50KHRhYkluZGV4ID8/ICcnKSB8fCAwO1xuICB9XG5cbiAgcHVibGljIGdldCBkcm9wZG93bk9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmdiRHJvcGRvd24/LmlzT3BlbigpID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0aW9uTW9kZWwgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IElTZWxlY3RPcHRpb24gfCBJU2VsZWN0T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZVxuICAgICAgPyB0aGlzLnNlbGVjdGlvbk1vZGVsPy5zZWxlY3RlZCB8fCBbXVxuICAgICAgOiB0aGlzLnNlbGVjdGlvbk1vZGVsPy5zZWxlY3RlZFswXTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3BlbkNoYW5nZShpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB0aGlzLm9uRm9jdXMoKTtcblxuICAgICAgaWYgKHRoaXMuc2VhcmNoICE9PSAnbm9uZScgJiYgISF0aGlzLnNlYXJjaElucHV0UmVmKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSwgT05fT1BFTl9BVVRPX1NDUk9MTF9USU1FT1VUX01TKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9tdWx0aXBsZSAmJiAhIXRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQmx1cigpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSBERUZBVUxUX0FDVElWRV9JTkRFWDtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wucmVzZXQoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICAvKiBBbmd1bGFyIGxpZmVjeWNsZSBob29rcyAqL1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdE1vZGVsPElTZWxlY3RPcHRpb24+KFxuICAgICAgdGhpcy5fbXVsdGlwbGUsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAoYSwgYikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlV2l0aChhLnZhbHVlLCBiLnZhbHVlKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5jaGFuZ2VkJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nRGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKGNoYW5nZUV2ZW50ID0+IHtcbiAgICAgICAgY2hhbmdlRXZlbnQuYWRkZWQuZm9yRWFjaChvcHRpb24gPT5cbiAgICAgICAgICB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgIC5maW5kKG8gPT4gdGhpcy5jb21wYXJlV2l0aChvLnZhbHVlLCBvcHRpb24udmFsdWUpKVxuICAgICAgICAgICAgPy5zZWxlY3QoKVxuICAgICAgICApO1xuICAgICAgICBjaGFuZ2VFdmVudC5yZW1vdmVkLmZvckVhY2gob3B0aW9uID0+XG4gICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICAgICAgICAuZmluZChvID0+IHRoaXMuY29tcGFyZVdpdGgoby52YWx1ZSwgb3B0aW9uLnZhbHVlKSlcbiAgICAgICAgICAgID8uZGVzZWxlY3QoKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbnMuY2hhbmdlc1xuICAgICAgLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWwodGhpcy5fbmdEZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZXNldE9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMubmdDb250cm9sO1xuXG4gICAgaWYgKCFuZ0NvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcHJldmlvdXNDb250cm9sICE9PSBuZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9wcmV2aW91c0NvbnRyb2wgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBuZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwgJiZcbiAgICAgICAgbmdDb250cm9sLmRpc2FibGVkICE9PSB0aGlzLmRpc2FibGVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG5nQ29udHJvbD8uZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3ByZXZpb3VzQ29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBNYW5hZ2luZyBkaXNhYmxlZCBzdGF0ZSBpcyBoYW5kbGVkIHZpYSB0aGUgYG1peGluRGlzYWJsZWRgIG1peGluL2dlbmVyYXRvciwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gc2lnbmFsXG4gICAgLy8gdG8gdGhlIHBhcmVudCBmb3JtIGZpZWxkIHNvIGl0IGNhbiBydW4gY2hhbmdlIGRldGVjdGlvbiB3aGVuIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQuXG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbmdEZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9uZ0Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyogSW1wZGNGb3JtRmllbGRDb250cm9sICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBjb250cm9sVHlwZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzdXBwb3J0c0FmZml4ZXM6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBoYXNBc3NpZ25lZCA9IHRoaXMuX2Fzc2lnblZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChoYXNBc3NpZ25lZCkge1xuICAgICAgdGhpcy5fY3ZhT25DaGFuZ2UodmFsdWUpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBhbnk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMudWlkO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcm90ZWN0ZWQgX2lkITogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZCB8fCB0aGlzLmRyb3Bkb3duT3BlbjtcbiAgfVxuICBwcm90ZWN0ZWQgX2ZvY3VzZWQgPSBmYWxzZTtcblxuICAvKiBDb250cm9sVmFsdWVBY2Nlc3NvciAqL1xuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fYXNzaWduVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9jdmFPblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8qIEludGVybmFscyAqL1xuXG4gIHByb3RlY3RlZCBvbkZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBDVkEgdG91Y2hlZCBjYWxsYmFjayBvbmx5IGlmIHRoZSBkcm9wZG93biBpcyBjbG9zZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5kcm9wZG93bk9wZW4pIHtcbiAgICAgIHRoaXMuX2N2YU9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVNlYXJjaFN1Ym1pdChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPCAwIHx8IHRoaXMuYWN0aXZlSW5kZXggPj0gdGhpcy5vcHRpb25zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgdGhpcy5vcHRpb25zLmdldCh0aGlzLmFjdGl2ZUluZGV4KT8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVNlYXJjaFVwRG93bihldnQ6IEV2ZW50LCBkaXJlY3Rpb246ICd1cCcgfCAnZG93bicpOiB2b2lkIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gKHRoaXMuYWN0aXZlSW5kZXggKyAxKSAlIHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4Kys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4IDw9IDApIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IHRoaXMub3B0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleC0tO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0FjdGl2ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRJc1NpbmdsZShcbiAgICBzZWxlY3RlZDogSVNlbGVjdE9wdGlvbiB8IElTZWxlY3RPcHRpb25bXVxuICApOiBzZWxlY3RlZCBpcyBJU2VsZWN0T3B0aW9uIHtcbiAgICByZXR1cm4gIUFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBXZSBkZWZlciB0aGlzIHdvcmsgaW50byBhIHByb21pc2UgaW4gb3JkZXIgdG8gYXZvaWQgdHJpcHBpbmcgQW5ndWxhcidzXG4gICAgLy8gXCJFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBjaGVja2VkXCIgZXJyb3IuXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLm5nQ29udHJvbC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRTZWxlY3Rpb25CeVZhbHVlKHZhbHVlOiBhbnkgfCBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaCA9PT0gJ25vbmUnKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX211bHRpcGxlICYmIHZhbHVlKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRocm93IGdldEltcGRjU2VsZWN0Tm9uQXJyYXlWYWx1ZUVycm9yKCk7XG4gICAgICB9XG5cbiAgICAgIHZhbHVlLmZvckVhY2goY3VycmVudFZhbHVlID0+IHRoaXMuX3NlbGVjdE9wdGlvbkJ5VmFsdWUoY3VycmVudFZhbHVlKSk7XG4gICAgICB0aGlzLl9zb3J0VmFsdWVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdE9wdGlvbkJ5VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0T3B0aW9uQnlWYWx1ZShcbiAgICB2YWx1ZTogYW55XG4gICk6IFNlbGVjdE9wdGlvbkRpc3BsYXlDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZChcbiAgICAgIChvcHRpb246IFNlbGVjdE9wdGlvbkRpc3BsYXlDb21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLnZhbHVlICE9IG51bGwgJiYgdGhpcy5fY29tcGFyZVdpdGgob3B0aW9uLnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGNvcnJlc3BvbmRpbmdPcHRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0KGNvcnJlc3BvbmRpbmdPcHRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBjb3JyZXNwb25kaW5nT3B0aW9uO1xuICB9XG5cbiAgLyoqIEFzc2lnbnMgYSB2YWx1ZSB0byB0aGUgc2VsZWN0IGNvbnRyb2wuIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBvciBub3RcbiAgICogdGhlIHZhbHVlIGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgcHJpdmF0ZSBfYXNzaWduVmFsdWUobmV3VmFsdWU6IGFueSB8IGFueVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgbmV3VmFsdWUgIT09IHRoaXMuX3ZhbHVlIHx8XG4gICAgICAodGhpcy5fbXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkpXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldE9wdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZE9yRGVzdHJveWVkID0gbWVyZ2UodGhpcy5vcHRpb25zLmNoYW5nZXMsIHRoaXMuX25nRGVzdHJveSk7XG5cbiAgICB0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbChjaGFuZ2VkT3JEZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIHRoaXMuX29uU2VsZWN0KGV2ZW50LnNvdXJjZSwgZXZlbnQuaXNVc2VySW5wdXQpO1xuXG4gICAgICAgIGlmIChldmVudC5pc1VzZXJJbnB1dCAmJiAhdGhpcy5fbXVsdGlwbGUgJiYgdGhpcy5kcm9wZG93bk9wZW4pIHtcbiAgICAgICAgICB0aGlzLm5nYkRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIG1lcmdlKC4uLnRoaXMub3B0aW9ucy5tYXAob3B0aW9uID0+IG9wdGlvbi5zdGF0ZUNoYW5nZXMpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGNoYW5nZWRPckRlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TZWxlY3QoXG4gICAgb3B0aW9uOiBTZWxlY3RPcHRpb25EaXNwbGF5Q29tcG9uZW50LFxuICAgIGlzVXNlcklucHV0OiBib29sZWFuXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHdhc1NlbGVjdGVkID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbik7XG5cbiAgICBpZiAob3B0aW9uLnZhbHVlID09IG51bGwgJiYgIXRoaXMuX211bHRpcGxlKSB7XG4gICAgICBvcHRpb24uZGVzZWxlY3QoKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcblxuICAgICAgaWYgKHRoaXMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKG9wdGlvbi52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh3YXNTZWxlY3RlZCAhPT0gb3B0aW9uLnNlbGVjdGVkKSB7XG4gICAgICAgIG9wdGlvbi5zZWxlY3RlZFxuICAgICAgICAgID8gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3Qob3B0aW9uKVxuICAgICAgICAgIDogdGhpcy5zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdChvcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fbXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5fc29ydFZhbHVlcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3YXNTZWxlY3RlZCAhPT0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NvcnRWYWx1ZXMoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fbXVsdGlwbGUgJiZcbiAgICAgICh0aGlzLnNlYXJjaCA9PT0gJ25vbmUnIHx8IHRoaXMuc2VhcmNoID09PSAnc3RhdGljJylcbiAgICApIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnN0YXRpY09wdGlvbnMudG9BcnJheSgpO1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBvcHRpb25zLmZpbmRJbmRleChvID0+IHRoaXMuY29tcGFyZVdpdGgoby52YWx1ZSwgYS52YWx1ZSkpIC1cbiAgICAgICAgICBvcHRpb25zLmZpbmRJbmRleChvID0+IHRoaXMuY29tcGFyZVdpdGgoby52YWx1ZSwgYi52YWx1ZSkpXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfcHJvcGFnYXRlQ2hhbmdlcyhmYWxsYmFja1ZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgbGV0IHZhbFRvRW1pdDogYW55ID0gbnVsbDtcblxuICAgIGlmICh0aGlzLl9tdWx0aXBsZSkge1xuICAgICAgdmFsVG9FbWl0ID0gKHRoaXMuc2VsZWN0ZWQgYXMgSVNlbGVjdE9wdGlvbltdKS5tYXAoXG4gICAgICAgIG9wdGlvbiA9PiBvcHRpb24udmFsdWVcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbFRvRW1pdCA9IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgPyAodGhpcy5zZWxlY3RlZCBhcyBJU2VsZWN0T3B0aW9uKS52YWx1ZVxuICAgICAgICA6IGZhbGxiYWNrVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWxUb0VtaXQ7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbFRvRW1pdCk7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UodmFsVG9FbWl0KTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2J1aWxkQ2hhbmdlRXZlbnQodmFsVG9FbWl0KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2J1aWxkQ2hhbmdlRXZlbnQodmFsdWU6IGFueSk6IFNlbGVjdENoYW5nZUV2ZW50PHRoaXM+IHtcbiAgICByZXR1cm4gbmV3IFNlbGVjdENoYW5nZUV2ZW50KHRoaXMsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfZGVzZWxlY3RPcHRpb24oXG4gICAgb3B0aW9uOiBJU2VsZWN0T3B0aW9uLFxuICAgIG1hcmtUb3VjaGVkOiBib29sZWFuID0gdHJ1ZVxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbXVsdGlwbGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdGlvbikpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3Qob3B0aW9uKTtcbiAgICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXMoKTtcblxuICAgICAgaWYgKG1hcmtUb3VjaGVkKSB7XG4gICAgICAgIHRoaXMuX2N2YU9uVG91Y2hlZCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Njcm9sbFRvU2VsZWN0ZWRPcHRpb24oKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kcm9wZG93bk9wZW4gJiYgdGhpcy5zZWxlY3RlZCAmJiAhQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkKSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbkVsZW1lbnQgPSB0aGlzLm9wdGlvbnMuZmluZChcbiAgICAgICAgICBvID0+XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkKSAmJlxuICAgICAgICAgICAgdGhpcy5jb21wYXJlV2l0aChvLnZhbHVlLCB0aGlzLnNlbGVjdGVkLnZhbHVlKVxuICAgICAgICApO1xuICAgICAgICBzZWxlY3RlZE9wdGlvbkVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgICAgaW5saW5lOiAnbmVhcmVzdCcsXG4gICAgICAgICAgYmVoYXZpb3I6ICdpbnN0YW50J1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCBPTl9PUEVOX0FVVE9fU0NST0xMX1RJTUVPVVRfTVMpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIGBTZWxlY3RDb21wb25lbnRgIChgPGltcGRjLXNlbGVjdGApIGlzIGEgc2VsZWN0LXN0eWxlIGRyb3Bkb3duIGlucHV0IHdoZXJlIGFuIGl0ZW0gKG9yIG11bHRpcGxlIGl0ZW1zKSBjYW4gYmUgcGlja2VkXG4gKiBmcm9tIGEgbGlzdCBvZiAqdW5pcXVlKiBhdmFpbGFibGUgb3B0aW9ucy4gVGhpcyBjb21wb25lbnQgY2FuIGJlIHVzZWQgd2l0aGluIGEgYEZvcm1GaWVsZENvbXBvbmVudGAgKGA8aW1wZGMtZm9ybS1maWVsZGApLlxuICogVG8gdXNlLCBhZGQgYFNlbGVjdE1vZHVsZWAgdG8gdGhlIGBpbXBvcnRzYCBhcnJheSBvZiB0aGUgcmVsZXZhbnQgYE5nTW9kdWxlYCBvciBzdGFuZGFsb25lIGNvbXBvbmVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1wZGMtc2VsZWN0JyxcbiAgZXhwb3J0QXM6ICdpbXBkY1NlbGVjdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTmdiRHJvcGRvd25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBTZWxlY3RPcHRpb25EaXNwbGF5Q29tcG9uZW50LFxuICAgIFNlbGVjdFZhbHVlVGFnc0Rpc3BsYXlDb21wb25lbnQsXG4gICAgRm9ybUZpZWxkTW9kdWxlLFxuICAgIElucHV0RGlyZWN0aXZlLFxuICAgIEJhZGdlTW9kdWxlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXG4gICAgJ2Rpc2FibGVkJyxcbiAgICB7IG5hbWU6ICd0YWJJbmRleCcsIHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0sXG4gICAgJ3NlYXJjaCcsXG4gICAgJ3BsYWNlaG9sZGVyJyxcbiAgICB7IG5hbWU6ICdyZXF1aXJlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9LFxuICAgICdjb21wYXJlV2l0aCcsXG4gICAgJ2Ryb3Bkb3duQ29udGFpbmVyJyxcbiAgICAnZXJyb3JTdGF0ZU1hdGNoZXInXG4gIF0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBvdXRwdXRzOiBbJ3NlbGVjdGlvbkNoYW5nZScsICd2YWx1ZUNoYW5nZScsICdzZWFyY2hUZXh0Q2hhbmdlcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ3RhYkluZGV4JyxcbiAgICAnW2F0dHIuYXJpYS1yZXF1aXJlZF0nOiAncmVxdWlyZWQudG9TdHJpbmcoKScsXG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuZm9ybS1zZWxlY3RdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuaXMtaW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1mb3JtLWZpZWxkLWNvbnRyb2xdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuaW1wZGMtc2VsZWN0LS1yZXF1aXJlZF0nOiAncmVxdWlyZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtc2VsZWN0LS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbY2xhc3MuaW1wZGMtc2VsZWN0LS1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0tZW1wdHldJzogJ2VtcHR5JyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0tbXVsdGlwbGVdJzogJ211bHRpcGxlJyxcbiAgICAnKGZvY3VzKSc6ICdvbkZvY3VzKCk7IGZvY3VzKCknXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEltcGRjRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgIHVzZUV4aXN0aW5nOiBTZWxlY3RDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IElNUERDX1NFTEVDVF9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCxcbiAgICAgIHVzZUV4aXN0aW5nOiBTZWxlY3RDb21wb25lbnRcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IElNUERDX1NFTEVDVF9WQUxVRV9CQURHRVNfUEFSRU5UX0NPTVBPTkVOVCxcbiAgICAgIHVzZUV4aXN0aW5nOiBTZWxlY3RDb21wb25lbnRcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50XG4gIGV4dGVuZHMgX1NlbGVjdENvbXBvbmVudEJhc2VcbiAgaW1wbGVtZW50cyBJU2VsZWN0VmFsdWVCYWRnZXNQYXJlbnRDb21wb25lbnRcbntcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xUeXBlOiBzdHJpbmcgPSAnaW1wZGMtc2VsZWN0JztcbiAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRzQWZmaXhlczogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB0YWJJbmRleD86IHN0cmluZykge1xuICAgIHN1cGVyKGBpbXBkYy1zZWxlY3QtJHtuYW5vaWQoKX1gLCB0YWJJbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3cgdGhlIHVzZXIgdG8gY2xpY2sgYSBidXR0b24gaW5zaWRlIG9mIHRoZSBzZWxlY3QgY29udHJvbCBhbmQgY2xlYXIgdGhlaXIgc2VsZWN0aW9uKHMpO1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGFsbG93Q2xlYXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZTtcbiAgfVxuICBwdWJsaWMgb3ZlcnJpZGUgc2V0IG11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZWwpIHtcbiAgICAgIHRocm93IGdldEltcGRjU2VsZWN0RHluYW1pY011bHRpcGxlRXJyb3IoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tdWx0aXBsZSA9IHZhbHVlO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIG11bHRpcGxlRGlzcGxheTogJ2luc2lkZScgfCAnb3V0c2lkZScgPSAnaW5zaWRlJztcblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgZGVzZWxlY3RPcHRpb24ob3B0aW9uOiBJU2VsZWN0T3B0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzZWxlY3RPcHRpb24ob3B0aW9uKTtcbiAgfVxufVxuIiwiPGRpdlxuICBuZ2JEcm9wZG93blxuICAjZHJvcGRvd249XCJuZ2JEcm9wZG93blwiXG4gIFthdXRvQ2xvc2VdPVwibXVsdGlwbGUgPyAnb3V0c2lkZScgOiB0cnVlXCJcbiAgW2NvbnRhaW5lcl09XCJkcm9wZG93bkNvbnRhaW5lclwiXG4gIFtkcm9wZG93bkNsYXNzXT1cImRyb3Bkb3duQ29udGFpbmVyID09PSAnYm9keScgPyAnaW1wYXJ0bmVyLWhleCcgOiAnJ1wiXG4gIChvcGVuQ2hhbmdlKT1cImhhbmRsZU9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gIGNsYXNzPVwiaC0xMDAgdy0xMDBcIj5cbiAgPGJ1dHRvblxuICAgICN0b2dnbGVCdXR0b25cbiAgICBjbGFzcz1cImltcGRjLXNlbGVjdC0tdG9nZ2xlIGJ0biBib3JkZXItMCBoLTEwMCB0ZXh0LXN0YXJ0XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgIG5nYkRyb3Bkb3duVG9nZ2xlPlxuICAgIEBpZiAoZW1wdHkpIHtcbiAgICA8c3BhbiBjbGFzcz1cImltcGRjLXNlbGVjdC0tdGV4dCBpbXBkYy1zZWxlY3QtLXBsYWNlaG9sZGVyXCI+e3tcbiAgICAgIHBsYWNlaG9sZGVyXG4gICAgfX08L3NwYW4+XG4gICAgfSBAZWxzZSB7IEBpZiAoc2VsZWN0ZWRJc1NpbmdsZShzZWxlY3RlZCkpIHtcbiAgICA8c3BhbiBjbGFzcz1cImltcGRjLXNlbGVjdC0tdGV4dCBpbXBkYy1zZWxlY3QtLXZhbHVlLXRleHRcIj5cbiAgICAgIHt7IHNlbGVjdGVkLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIH0gQGVsc2UgaWYgKG11bHRpcGxlRGlzcGxheSA9PT0gJ2luc2lkZScpIHtcbiAgICA8aW1wZGMtc2VsZWN0LXZhbHVlLXRhZ3MtZGlzcGxheSAvPlxuICAgIH0gQGVsc2Uge1xuICAgIDxzcGFuIGNsYXNzPVwiaW1wZGMtc2VsZWN0LS10ZXh0IGltcGRjLXNlbGVjdC0tcGxhY2Vob2xkZXJcIj57e1xuICAgICAgcGxhY2Vob2xkZXJcbiAgICB9fTwvc3Bhbj5cbiAgICB9IEBpZiAoIWRpc2FibGVkICYmIGFsbG93Q2xlYXIpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LS1jbGVhci1idG4gYnRuIGJ0bi14cyBidG4tbGluayB0ZXh0LWdyYXktNDAwIG1zLWF1dG9cIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZHJvcGRvd24uY2xvc2UoKTsgY2xlYXJTZWxlY3Rpb24oKVwiPlxuICAgICAgPGltcGRjLWljb24gbmFtZT1cInRpbWVzXCIgW3NpemVdPVwiMTZcIj48L2ltcGRjLWljb24+XG4gICAgPC9idXR0b24+XG4gICAgfSB9XG4gIDwvYnV0dG9uPlxuICA8ZGl2XG4gICAgbmdiRHJvcGRvd25NZW51XG4gICAgY2xhc3M9XCJpbXBkYy1zZWxlY3QtLWRyb3Bkb3duLW1lbnUgYmctd2hpdGUgdGV4dC1ncmF5LTYwMFwiXG4gICAgcm9sZT1cImxpc3Rib3hcIlxuICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoICE9PSAnbm9uZSdcIiBjbGFzcz1cImltcGRjLXNlbGVjdC0tc2VhcmNoXCI+XG4gICAgICA8aW1wZGMtZm9ybS1maWVsZD5cbiAgICAgICAgPHNwYW4gaW1wZGNUZXh0UHJlZml4IChjbGljayk9XCJzZWFyY2hJbnB1dC5mb2N1cygpXCI+XG4gICAgICAgICAgPGltcGRjLWljb24gbmFtZT1cInNlYXJjaFwiPjwvaW1wZGMtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICBpbXBkY0lucHV0XG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LS1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImhhbmRsZVNlYXJjaFN1Ym1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwiaGFuZGxlU2VhcmNoVXBEb3duKCRldmVudCwgJ3VwJylcIlxuICAgICAgICAgIChrZXlkb3duLmFycm93dXApPVwiaGFuZGxlU2VhcmNoVXBEb3duKCRldmVudCwgJ2Rvd24nKVwiIC8+XG4gICAgICAgIDxzcGFuIGltcGRjVGV4dFN1ZmZpeD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInNlYXJjaENvbnRyb2wudmFsdWVcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImltcGRjLXNlbGVjdC0tY2xlYXItYnRuIGJ0biBidG4teHMgYnRuLWxpbmsgdGV4dC1ncmF5LTQwMCBtcy1hdXRvXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWFyY2hDb250cm9sLnJlc2V0KCk7IHNlYXJjaElucHV0LmZvY3VzKClcIj5cbiAgICAgICAgICAgIDxpbXBkYy1pY29uIG5hbWU9XCJ0aW1lc1wiIFtzaXplXT1cIjE2XCI+PC9pbXBkYy1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2ltcGRjLWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImltcGRjLXNlbGVjdC0tb3B0aW9uc1wiPlxuICAgICAgQGZvciAob3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyQgfCBhc3luYzsgdHJhY2sgb3B0aW9uLnZhbHVlOyBsZXQgaWR4ID1cbiAgICAgICRpbmRleDsgbGV0IGZpcnN0ID0gJGZpcnN0KSB7IEBpZiAob3B0aW9uLmdyb3VwTGFiZWwgJiZcbiAgICAgIG9wdGlvbi5zaG93R3JvdXBMYWJlbCkge1xuICAgICAgPGRpdiBjbGFzcz1cImltcGRjLXNlbGVjdC0tb3B0aW9uLWdyb3VwLWxhYmVsXCI+XG4gICAgICAgIHt7IG9wdGlvbi5ncm91cExhYmVsIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxpbXBkYy1zZWxlY3Qtb3B0aW9uLWRpc3BsYXlcbiAgICAgICAgW2NsYXNzLmltcGRjLXNlbGVjdC1vcHRpb24tLWFjdGl2ZV09XCJpZHggPT09IGFjdGl2ZUluZGV4XCJcbiAgICAgICAgW2NsYXNzLmltcGRjLXNlbGVjdC1vcHRpb24tLWdyb3VwZWRdPVwiISFvcHRpb24uZ3JvdXBMYWJlbFwiXG4gICAgICAgIFtncm91cExhYmVsXT1cIm9wdGlvbi5ncm91cExhYmVsXCJcbiAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5sYWJlbFwiXG4gICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiISFvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwib3B0aW9uLnNlbGVjdGVkXCJcbiAgICAgICAgW2hpZ2hsaWdodFRleHRdPVwic2VhcmNoQ29udHJvbC52YWx1ZVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm1hcmtBY3RpdmUoaWR4KVwiXG4gICAgICAgIChmb2N1cyk9XCJtYXJrQWN0aXZlKGlkeClcIiAvPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
725
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFFTCxTQUFTLEVBQ1QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBSU4sTUFBTSxFQUdOLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixlQUFlLEVBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxNQUFNLEVBQ04sbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFlBQVksRUFDWixLQUFLLEVBQ0wsb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxLQUFL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QzdDLHFCQUFxQixFQUFFLFlBQVk7d0JBQ25DLHFCQUFxQixFQUFFLE1BQU07d0JBQzdCLG9CQUFvQixFQUFFLFlBQVk7d0JBQ2xDLGtDQUFrQyxFQUFFLE1BQU07d0JBQzFDLGdDQUFnQyxFQUFFLFVBQVU7d0JBQzVDLGdDQUFnQyxFQUFFLFVBQVU7d0JBQzVDLCtCQUErQixFQUFFLFlBQVk7d0JBQzdDLDZCQUE2QixFQUFFLE9BQU87d0JBQ3RDLGdDQUFnQyxFQUFFLFVBQVU7d0JBQzVDLFNBQVMsRUFBRSxvQkFBb0I7cUJBQ2hDLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsV0FBVyxpQkFBaUI7eUJBQzdCO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxvQ0FBb0M7NEJBQzdDLFdBQVcsaUJBQWlCO3lCQUM3Qjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsMENBQTBDOzRCQUNuRCxXQUFXLGlCQUFpQjt5QkFDN0I7cUJBQ0Y7OzBCQVNZLFNBQVM7MkJBQUMsVUFBVTt5Q0FVMUIsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJbEIsUUFBUTtzQkFEM0IsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFhL0IsZUFBZTtzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1jb25mbGljdGluZy1saWZlY3ljbGUgKi9cbmltcG9ydCB7IEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIEF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxuICBudW1iZXJBdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICBOZ0NvbnRyb2wsXG4gIE5nRm9ybSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ2JEcm9wZG93biwgTmdiRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRlZmVyLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBtZXJnZSxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRUaGVtZSB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGxjIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzJztcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vYmFkZ2UnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2ljb24nO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBJbXBkY0Zvcm1Sb290LFxuICBJTVBEQ19GT1JNX1JPT1QsXG4gIEZvcm1GaWVsZE1vZHVsZVxufSBmcm9tICcuLi8uLi9jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ2FuRGlzYWJsZSxcbiAgSGFzVGFiSW5kZXgsXG4gIElDYW5VcGRhdGVFcnJvclN0YXRlLFxuICBJSGFzRXJyb3JTdGF0ZSxcbiAgSW1wZGNGb3JtRmllbGRDb250cm9sLFxuICBtaXhpbkRpc2FibGVkLFxuICBtaXhpbkVycm9yU3RhdGUsXG4gIG1peGluVGFiSW5kZXhcbn0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IElucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vaW5wdXQnO1xuaW1wb3J0IHtcbiAgSU1QRENfU0VMRUNUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5ULFxuICBJTVBEQ19TRUxFQ1RfVkFMVUVfQkFER0VTX1BBUkVOVF9DT01QT05FTlQsXG4gIElTZWxlY3RPcHRpb25QYXJlbnRDb21wb25lbnQsXG4gIElTZWxlY3RWYWx1ZUJhZGdlc1BhcmVudENvbXBvbmVudFxufSBmcm9tICcuL29wdGlvbi1wYXJlbnQnO1xuaW1wb3J0IHtcbiAgU2VsZWN0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlRXZlbnQsXG4gIFNlbGVjdE9wdGlvbkRpc3BsYXlDb21wb25lbnRcbn0gZnJvbSAnLi9vcHRpb24tZGlzcGxheSc7XG5pbXBvcnQgeyBTZWxlY3RNb2RlbCB9IGZyb20gJy4vc2VsZWN0LW1vZGVsJztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vb3B0aW9uJztcbmltcG9ydCB7IElTZWxlY3RPcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2VsZWN0VmFsdWVUYWdzRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4vdmFsdWUtdGFncy1kaXNwbGF5JztcblxuZXhwb3J0IGNvbnN0IE9OX09QRU5fQVVUT19TQ1JPTExfVElNRU9VVF9NUyA9IDUwO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0Q2hhbmdlRXZlbnQ8VENvbXBvbmVudD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogVGhlIHNwZWNpZmljIFNlbGVjdENvbXBvbmVudCB0aGF0IGNoYW5nZWQuICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNvdXJjZTogVENvbXBvbmVudCxcbiAgICAvKiogVGhlIHNlbGVjdGVkIHZhbHVlKHMpICovXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBhbnlcbiAgKSB7fVxufVxuXG4vKipcbiAqIFJldHVybnMgYW4gZXhjZXB0aW9uIHRvIGJlIHRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gYXNzaWduIGEgbm9uLWFycmF5IHZhbHVlIHRvIGEgc2VsZWN0XG4gKiBpbiBgbXVsdGlwbGVgIG1vZGUuIE5vdGUgdGhhdCBgdW5kZWZpbmVkYCBhbmQgYG51bGxgIGFyZSBzdGlsbCB2YWxpZCB2YWx1ZXMgdG8gYWxsb3cgZm9yXG4gKiByZXNldHRpbmcgdGhlIHZhbHVlLlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1wZGNTZWxlY3ROb25BcnJheVZhbHVlRXJyb3IoKTogRXJyb3Ige1xuICByZXR1cm4gRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYW4gYXJyYXkgaW4gbXVsdGlwbGUtc2VsZWN0aW9uIG1vZGUuJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3duIHdoZW4gYXNzaWduaW5nIGEgbm9uLWZ1bmN0aW9uIHZhbHVlIHRvIHRoZSBjb21wYXJhdG9yXG4gKiB1c2VkIHRvIGRldGVybWluZSBpZiBhIHZhbHVlIGNvcnJlc3BvbmRzIHRvIGFuIG9wdGlvbi4gTm90ZSB0aGF0IHdoZXRoZXIgdGhlIGZ1bmN0aW9uXG4gKiBhY3R1YWxseSB0YWtlcyB0d28gdmFsdWVzIGFuZCByZXR1cm5zIGEgYm9vbGVhbiBpcyBub3QgY2hlY2tlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcGRjU2VsZWN0Tm9uRnVuY3Rpb25WYWx1ZUVycm9yKCk6IEVycm9yIHtcbiAgcmV0dXJuIEVycm9yKCdgY29tcGFyZVdpdGhgIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGV4Y2VwdGlvbiB0byBiZSB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGNoYW5nZSBhIHNlbGVjdCdzIGBtdWx0aXBsZWAgb3B0aW9uXG4gKiBhZnRlciBpbml0aWFsaXphdGlvbi5cbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcGRjU2VsZWN0RHluYW1pY011bHRpcGxlRXJyb3IoKTogRXJyb3Ige1xuICByZXR1cm4gRXJyb3IoJ0Nhbm5vdCBjaGFuZ2UgYG11bHRpcGxlYCBtb2RlIG9mIHNlbGVjdCBhZnRlciBpbml0aWFsaXphdGlvbi4nKTtcbn1cblxuY29uc3QgREVGQVVMVF9BQ1RJVkVfSU5ERVggPSAtMTtcblxuaW50ZXJmYWNlIElSZW5kZXJlZFNlbGVjdE9wdGlvbiBleHRlbmRzIElTZWxlY3RPcHRpb24ge1xuICByZWFkb25seSBzZWxlY3RlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNob3dHcm91cExhYmVsPzogYm9vbGVhbjtcbn1cblxuY29uc3QgX19TZWxlY3RDb21wb25lbnRCYXNlID0gbWl4aW5UYWJJbmRleChcbiAgbWl4aW5EaXNhYmxlZChcbiAgICBtaXhpbkVycm9yU3RhdGUoXG4gICAgICBjbGFzcyB7XG4gICAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICAgIHB1YmxpYyBfZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcbiAgICAgICAgICBwdWJsaWMgX2Zvcm1Sb290OiBJbXBkY0Zvcm1Sb290IHwgbnVsbCxcbiAgICAgICAgICBwdWJsaWMgX3BhcmVudEZvcm06IE5nRm9ybSB8IG51bGwsXG4gICAgICAgICAgcHVibGljIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSB8IG51bGwsXG4gICAgICAgICAgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbFxuICAgICAgICApIHt9XG4gICAgICB9XG4gICAgKVxuICApXG4pO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfU2VsZWN0Q29tcG9uZW50QmFzZVxuICBleHRlbmRzIF9fU2VsZWN0Q29tcG9uZW50QmFzZVxuICBpbXBsZW1lbnRzXG4gICAgSVNlbGVjdE9wdGlvblBhcmVudENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgRG9DaGVjayxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgSGFzVGFiSW5kZXgsXG4gICAgSW1wZGNGb3JtRmllbGRDb250cm9sPGFueT4sXG4gICAgQ2FuRGlzYWJsZSxcbiAgICBJQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgICBJSGFzRXJyb3JTdGF0ZVxue1xuICBAQ29udGVudENoaWxkcmVuKFNlbGVjdE9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgc3RhdGljT3B0aW9ucyE6IFF1ZXJ5TGlzdDxTZWxlY3RPcHRpb25Db21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oU2VsZWN0T3B0aW9uRGlzcGxheUNvbXBvbmVudClcbiAgcHJvdGVjdGVkIG9wdGlvbnMhOiBRdWVyeUxpc3Q8U2VsZWN0T3B0aW9uRGlzcGxheUNvbXBvbmVudD47XG5cbiAgQFZpZXdDaGlsZChOZ2JEcm9wZG93bilcbiAgcHJvdGVjdGVkIG5nYkRyb3Bkb3duITogTmdiRHJvcGRvd247XG5cbiAgQFZpZXdDaGlsZCgndG9nZ2xlQnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByb3RlY3RlZCB0b2dnbGVCdXR0b25SZWY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB9KVxuICBwcm90ZWN0ZWQgc2VhcmNoSW5wdXRSZWY/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25nRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlYXJjaFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdub25lJyB8ICdzdGF0aWMnPihcbiAgICAnbm9uZSdcbiAgKTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNDb250cm9sPzogQWJzdHJhY3RDb250cm9sIHwgbnVsbDtcbiAgcHJpdmF0ZSBfY29tcGFyZVdpdGggPSAobzE6IGFueSwgbzI6IGFueSkgPT4gbzEgPT09IG8yO1xuICBwcml2YXRlIF9jdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfY3ZhT25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHVpZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQmFkZ2VUaGVtZSA9IENvbXBvbmVudFRoZW1lO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyZWRPcHRpb25zJDogT2JzZXJ2YWJsZTxJUmVuZGVyZWRTZWxlY3RPcHRpb25bXT4gPVxuICAgIHRoaXMuX3NlYXJjaFN1YmplY3QucGlwZShcbiAgICAgIHN3aXRjaE1hcChzZWFyY2hNb2RlID0+IHtcbiAgICAgICAgc3dpdGNoIChzZWFyY2hNb2RlKSB7XG4gICAgICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICB0aGlzLnN0YXRpY09wdGlvbnMuY2hhbmdlcyBhcyBPYnNlcnZhYmxlPElTZWxlY3RPcHRpb25bXT5cbiAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuc3RhdGljT3B0aW9ucy50b0FycmF5KCkgYXMgSVNlbGVjdE9wdGlvbltdKSxcbiAgICAgICAgICAgICAgbWFwKG9wdGlvbnMgPT5cbiAgICAgICAgICAgICAgICBvcHRpb25zLm1hcChvcHQgPT4gKHtcbiAgICAgICAgICAgICAgICAgIGdyb3VwTGFiZWw6IG9wdC5ncm91cExhYmVsLFxuICAgICAgICAgICAgICAgICAgZ2V0IGxhYmVsKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0LmxhYmVsO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHQudmFsdWUsXG4gICAgICAgICAgICAgICAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHQuZGlzYWJsZWQ7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHQpXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSAnc3RhdGljJzpcbiAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgKHRoaXMuc3RhdGljT3B0aW9ucy5jaGFuZ2VzIGFzIE9ic2VydmFibGU8SVNlbGVjdE9wdGlvbltdPikucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5zdGF0aWNPcHRpb25zLnRvQXJyYXkoKSBhcyBJU2VsZWN0T3B0aW9uW10pXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dENoYW5nZXMucGlwZShzdGFydFdpdGgoJycpKVxuICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgdGFwKChbLCBzZWFyY2hUZXh0XSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSAhIXNlYXJjaFRleHQgPyAwIDogREVGQVVMVF9BQ1RJVkVfSU5ERVg7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBtYXAoKFtvcHRpb25zLCBzZWFyY2hUZXh0XSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlcmVkT3B0aW9ucyA9IG9wdGlvbnMubWFwKG9wdCA9PiAoe1xuICAgICAgICAgICAgICAgICAgZ3JvdXBMYWJlbDogb3B0Lmdyb3VwTGFiZWwsXG4gICAgICAgICAgICAgICAgICBnZXQgbGFiZWwoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHQubGFiZWw7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IG9wdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdC5kaXNhYmxlZDtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG9wdClcbiAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gISFzZWFyY2hUZXh0XG4gICAgICAgICAgICAgICAgICA/IHJlbmRlcmVkT3B0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgb3B0ID0+IGxjKG9wdC5sYWJlbCkuaW5kZXhPZihsYyhzZWFyY2hUZXh0KSkgIT09IC0xXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDogcmVuZGVyZWRPcHRpb25zO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAob3B0aW9ucyA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyhcbiAgICAgICAgICBvcHRpb25zLnJlZHVjZSgocmVzdWx0LCBvcHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkR3JvdXBMYWJlbCA9IG9wdC5ncm91cExhYmVsPy50cmltKCkgfHwgJyc7XG4gICAgICAgICAgICBsZXQgc2hvd0dyb3VwTGFiZWwgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKCEocmVzb2x2ZWRHcm91cExhYmVsIGluIHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgcmVzdWx0W3Jlc29sdmVkR3JvdXBMYWJlbF0gPSBbXTtcbiAgICAgICAgICAgICAgc2hvd0dyb3VwTGFiZWwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHRbcmVzb2x2ZWRHcm91cExhYmVsXS5wdXNoKHtcbiAgICAgICAgICAgICAgLi4ub3B0LFxuICAgICAgICAgICAgICBzaG93R3JvdXBMYWJlbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSVJlbmRlcmVkU2VsZWN0T3B0aW9uW10gfSlcbiAgICAgICAgKS5mbGF0TWFwKChbLCBncm91cE9wdGlvbnNdKSA9PiBncm91cE9wdGlvbnMpXG4gICAgICApXG4gICAgKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGlvbk1vZGVsITogU2VsZWN0TW9kZWw8SVNlbGVjdE9wdGlvbj47XG4gIHByb3RlY3RlZCBhY3RpdmVJbmRleCA9IERFRkFVTFRfQUNUSVZFX0lOREVYO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25TZWxlY3Rpb25DaGFuZ2VzOiBPYnNlcnZhYmxlPFNlbGVjdE9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50PiA9XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aChvcHRpb25zKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgIG1lcmdlKC4uLm9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb24ub25TZWxlY3Rpb25DaGFuZ2UpKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMpXG4gICAgICApO1xuICAgIH0pO1xuXG4gIC8qKlxuICAgKiBTZXQgd2hldGhlciBvciBub3QgYW4gaW5wdXQgZmllbGQgd2lsbCBhcHBlYXIgZm9yIHNlYXJjaGluZyBhbmRcbiAgICogZmlsdGVyaW5nIHZpc2libGUgb3B0aW9ucy5cbiAgICpcbiAgICogLSBgJ25vbmUnYDogTm8gc2VhcmNoIGNvbnRyb2wgd2lsbCBiZSBkaXNwbGF5ZWQsIGFuZCBhbGwgc2VsZWN0IG9wdGlvbnMgYXJlIHByb3ZpZGVkIHZpYSBwcm9qZWN0ZWQgYDxpbXBkYy1zZWxlY3Qtb3B0aW9uPmAgZWxlbWVudHMuXG4gICAqIC0gYCdzdGF0aWMnYDogQSBzZWFyY2ggY29udHJvbCB3aWxsIGJlIGRpc3BsYXllZCwgc2VsZWN0IG9wdGlvbnMgYXJlIHByb3ZpZGVkIHZpYSBwcm9qZWN0ZWQgYDxpbXBkYy1zZWxlY3Qtb3B0aW9uPmAgZWxlbWVudHMsIGFuZFxuICAgKiBmaWx0ZXJpbmcgaXMgcGVyZm9ybWVkIGFnYWluc3QgdGhlIGBbbGFiZWxdYCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqIEBkZWZhdWx0ICdub25lJ1xuICAgKi9cbiAgcHVibGljIGdldCBzZWFyY2goKTogJ25vbmUnIHwgJ3N0YXRpYycge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hTdWJqZWN0LnZhbHVlO1xuICB9XG4gIHB1YmxpYyBzZXQgc2VhcmNoKHZhbHVlOiAnbm9uZScgfCAnc3RhdGljJykge1xuICAgIHRoaXMuX3NlYXJjaFN1YmplY3QubmV4dCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHBsYWNlaG9sZGVyIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCB3aGVuIG5vIHNlbGVjdGlvbiBoYXMgYmVlbiBtYWRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcXC0gU2VsZWN0IC1cbiAgICovXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cbiAgcHVibGljIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9wbGFjZWhvbGRlciA9ICctIFNlbGVjdCAtJztcblxuICAvKipcbiAgICogVXNlZCB0byBzZXQgcmVxdWlyZWRuZXNzIG9mIGNvbnRyb2wgaW4gYSB0ZW1wbGF0ZS1iYXNlZCBtYW5uZXI7XG4gICAqIG5vdCBuZWNlc3Nhcnkgd2hlbiB1c2luZyB0aGUgQW5ndWxhciByZWFjdGl2ZSBmb3JtcyBBUEkgYW5kIGByZXF1aXJlZGAgdmFsaWRhdG9yLlxuICAgKi9cbiAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5fcmVxdWlyZWQgPz9cbiAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz9cbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgYSBzaW5nbGUtc2VsZWN0IG9yIG11bHRpcGxlLXNlbGVjdC4gQ2Fubm90IGJlIGNoYW5nZWQgYWZ0ZXIgY29tcG9uZW50IGluaXRpYWxpemF0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XG4gIH1cbiAgcHJvdGVjdGVkIF9tdWx0aXBsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIGNvbXBhcmUgb3B0aW9uIHZhbHVlcyB3aXRoIHNlbGVjdGVkIHZhbHVlcy4gVGhlIGZpcnN0IGFyZyBpcyBhXG4gICAqIGB2YWx1ZWAgZnJvbSBhbiBvcHRpb24sIGFuZCB0aGUgc2Vjb25kIGFyZyBpcyBhIGB2YWx1ZWAgZnJvbSB0aGUgc2VsZWN0aW9uIG9yIGFub3RoZXIgb3B0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBCb29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY29tcGFyZVdpdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRoO1xuICB9XG4gIHB1YmxpYyBzZXQgY29tcGFyZVdpdGgoZm46IChhOiBhbnksIGI6IGFueSkgPT4gYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IGdldEltcGRjU2VsZWN0Tm9uRnVuY3Rpb25WYWx1ZUVycm9yKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29tcGFyZVdpdGggPSBmbjtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGVsKSB7XG4gICAgICAvLyBDaGFuZ2luZyB0aGUgY29tcGFyYXRvciBmdW5jdGlvbiBtZWFucyB0aGUgdmlzdWFsIHNlbGVjdGlvbiBtYXkgaGF2ZSBjaGFuZ2VkLlxuICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEb2N1bWVudCBlbGVtZW50IHRoYXQgdGhlIHNlbGVjdCBkcm9wZG93biB3aWxsIGJlIGF0dGFjaGVkIHRvIGluIHRoZSBET00gLSBlaXRoZXIgdGhlXG4gICAqIGRvY3VtZW50J3MgYDxib2R5PmAgdGFnLCBvciBhcyBhIGNoaWxkIG9mIHRoZSBjb21wb25lbnQgdGFnLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSAoYCdib2R5J2ApIGlzIGdlbmVyYWxseSB0aGUgY29ycmVjdCBjaG9pY2UsIGFuZCBzaG91bGQgb25seSBiZVxuICAgKiBvdmVycmlkZGVuIHdoZW4gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhlIHJlc3VsdCBiZWhhdmlvciBpcyB3aGF0J3MgZGVzaXJlZC5cbiAgICovXG4gIHB1YmxpYyBkcm9wZG93bkNvbnRhaW5lcjogJ2JvZHknIHwgbnVsbCA9ICdib2R5JztcblxuICBwdWJsaWMgb3ZlcnJpZGUgZXJyb3JTdGF0ZU1hdGNoZXIhOiBFcnJvclN0YXRlTWF0Y2hlcjtcblxuICAvKiogRXZlbnRzIGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGJlZW4gY2hhbmdlZCBieSB0aGUgdXNlci4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFNlbGVjdENoYW5nZUV2ZW50PHRoaXM+PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxTZWxlY3RDaGFuZ2VFdmVudDx0aGlzPj4oKTtcblxuICAvKipcbiAgICogRXZlbnRzIGZpcmUgd2hlbiByYXcgdmFsdWUgb2Ygc2VsZWN0IGNoYW5nZXMuIE1haW5seSBleGlzdHMgdG8gaGFuZGxlXG4gICAqIHR3by13YXkgYmluZGluZyBvZiBgdmFsdWVgIGlucHV0IHByb3BlcnR5LlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50cyBmaXJlIHdoZW4gdGhlIHRleHQgdmFsdWUgb2YgdGhlIG9wdGlvbiBzZWFyY2ggaW5wdXQgY29udHJvbCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoVGV4dENoYW5nZXM6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4gPVxuICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICk7XG5cbiAgY29uc3RydWN0b3IodWlkOiBzdHJpbmcsIHRhYkluZGV4Pzogc3RyaW5nKSB7XG4gICAgc3VwZXIoXG4gICAgICBpbmplY3QoRXJyb3JTdGF0ZU1hdGNoZXIpLFxuICAgICAgaW5qZWN0KElNUERDX0ZPUk1fUk9PVCwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgICAgIGluamVjdChOZ0Zvcm0sIHsgb3B0aW9uYWw6IHRydWUgfSksXG4gICAgICBpbmplY3QoRm9ybUdyb3VwRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICAgICAgaW5qZWN0KE5nQ29udHJvbCwgeyBvcHRpb25hbDogdHJ1ZSwgc2VsZjogdHJ1ZSB9KVxuICAgICk7XG5cbiAgICB0aGlzLnVpZCA9IHVpZDtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgLy8gaWRlbXBvdGVudCBhc3NpZ25tZW50IC0gcmVzcGVjdHMgYXJiaXRyYXJ5IElEIHNldCB2aWEgYXR0ciBpZiBwcmVzZW50LCBvdGhlcndpc2UgZmFsbHMgYmFjayB0byBhdXRvIFVVSUQ7XG4gICAgLy8gYWxzbyB0cmlnZ2VycyBzdGF0ZUNoYW5nZXMgcHVsc2UgZm9yIHBhcmVudCBmb3JtLWZpZWxkIGNvbXBvbmVudFxuICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xuXG4gICAgdGhpcy50YWJJbmRleCA9IHBhcnNlSW50KHRhYkluZGV4ID8/ICcnKSB8fCAwO1xuICB9XG5cbiAgcHVibGljIGdldCBkcm9wZG93bk9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmdiRHJvcGRvd24/LmlzT3BlbigpID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuc2VsZWN0aW9uTW9kZWwgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IElTZWxlY3RPcHRpb24gfCBJU2VsZWN0T3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZVxuICAgICAgPyB0aGlzLnNlbGVjdGlvbk1vZGVsPy5zZWxlY3RlZCB8fCBbXVxuICAgICAgOiB0aGlzLnNlbGVjdGlvbk1vZGVsPy5zZWxlY3RlZFswXTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3BlbkNoYW5nZShpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNPcGVuKSB7XG4gICAgICB0aGlzLm9uRm9jdXMoKTtcblxuICAgICAgaWYgKHRoaXMuc2VhcmNoICE9PSAnbm9uZScgJiYgISF0aGlzLnNlYXJjaElucHV0UmVmKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSwgT05fT1BFTl9BVVRPX1NDUk9MTF9USU1FT1VUX01TKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9tdWx0aXBsZSAmJiAhIXRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9TZWxlY3RlZE9wdGlvbigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQmx1cigpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSBERUZBVUxUX0FDVElWRV9JTkRFWDtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wucmVzZXQoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICAvKiBBbmd1bGFyIGxpZmVjeWNsZSBob29rcyAqL1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdE1vZGVsPElTZWxlY3RPcHRpb24+KFxuICAgICAgdGhpcy5fbXVsdGlwbGUsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAoYSwgYikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlV2l0aChhLnZhbHVlLCBiLnZhbHVlKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5jaGFuZ2VkJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nRGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKGNoYW5nZUV2ZW50ID0+IHtcbiAgICAgICAgY2hhbmdlRXZlbnQuYWRkZWQuZm9yRWFjaChvcHRpb24gPT5cbiAgICAgICAgICB0aGlzLm9wdGlvbnNcbiAgICAgICAgICAgIC5maW5kKG8gPT4gdGhpcy5jb21wYXJlV2l0aChvLnZhbHVlLCBvcHRpb24udmFsdWUpKVxuICAgICAgICAgICAgPy5zZWxlY3QoKVxuICAgICAgICApO1xuICAgICAgICBjaGFuZ2VFdmVudC5yZW1vdmVkLmZvckVhY2gob3B0aW9uID0+XG4gICAgICAgICAgdGhpcy5vcHRpb25zXG4gICAgICAgICAgICAuZmluZChvID0+IHRoaXMuY29tcGFyZVdpdGgoby52YWx1ZSwgb3B0aW9uLnZhbHVlKSlcbiAgICAgICAgICAgID8uZGVzZWxlY3QoKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbnMuY2hhbmdlc1xuICAgICAgLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWwodGhpcy5fbmdEZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZXNldE9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMubmdDb250cm9sO1xuXG4gICAgaWYgKCFuZ0NvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcHJldmlvdXNDb250cm9sICE9PSBuZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9wcmV2aW91c0NvbnRyb2wgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBuZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwgJiZcbiAgICAgICAgbmdDb250cm9sLmRpc2FibGVkICE9PSB0aGlzLmRpc2FibGVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG5nQ29udHJvbD8uZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3ByZXZpb3VzQ29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBNYW5hZ2luZyBkaXNhYmxlZCBzdGF0ZSBpcyBoYW5kbGVkIHZpYSB0aGUgYG1peGluRGlzYWJsZWRgIG1peGluL2dlbmVyYXRvciwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gc2lnbmFsXG4gICAgLy8gdG8gdGhlIHBhcmVudCBmb3JtIGZpZWxkIHNvIGl0IGNhbiBydW4gY2hhbmdlIGRldGVjdGlvbiB3aGVuIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQuXG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbmdEZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9uZ0Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyogSW1wZGNGb3JtRmllbGRDb250cm9sICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBjb250cm9sVHlwZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzdXBwb3J0c0FmZml4ZXM6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBoYXNBc3NpZ25lZCA9IHRoaXMuX2Fzc2lnblZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChoYXNBc3NpZ25lZCkge1xuICAgICAgdGhpcy5fY3ZhT25DaGFuZ2UodmFsdWUpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBhbnk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMudWlkO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcm90ZWN0ZWQgX2lkITogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9jdXNlZCB8fCB0aGlzLmRyb3Bkb3duT3BlbjtcbiAgfVxuICBwcm90ZWN0ZWQgX2ZvY3VzZWQgPSBmYWxzZTtcblxuICAvKiBDb250cm9sVmFsdWVBY2Nlc3NvciAqL1xuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fYXNzaWduVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9jdmFPblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8qIEludGVybmFscyAqL1xuXG4gIHByb3RlY3RlZCBvbkZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBDVkEgdG91Y2hlZCBjYWxsYmFjayBvbmx5IGlmIHRoZSBkcm9wZG93biBpcyBjbG9zZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5kcm9wZG93bk9wZW4pIHtcbiAgICAgIHRoaXMuX2N2YU9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5mb2N1cygpO1xuICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVTZWFyY2hTdWJtaXQoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4IDwgMCB8fCB0aGlzLmFjdGl2ZUluZGV4ID49IHRoaXMub3B0aW9ucy5sZW5ndGgpIHJldHVybjtcblxuICAgIHRoaXMub3B0aW9ucy5nZXQodGhpcy5hY3RpdmVJbmRleCk/Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVTZWFyY2hVcERvd24oZXZ0OiBFdmVudCwgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nKTogdm9pZCB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoZGlyZWN0aW9uID09PSAndXAnKSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9ICh0aGlzLmFjdGl2ZUluZGV4ICsgMSkgJSB0aGlzLm9wdGlvbnMubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA8PSAwKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXgtLTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtBY3RpdmUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkSXNTaW5nbGUoXG4gICAgc2VsZWN0ZWQ6IElTZWxlY3RPcHRpb24gfCBJU2VsZWN0T3B0aW9uW11cbiAgKTogc2VsZWN0ZWQgaXMgSVNlbGVjdE9wdGlvbiB7XG4gICAgcmV0dXJuICFBcnJheS5pc0FycmF5KHNlbGVjdGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgLy8gV2UgZGVmZXIgdGhpcyB3b3JrIGludG8gYSBwcm9taXNlIGluIG9yZGVyIHRvIGF2b2lkIHRyaXBwaW5nIEFuZ3VsYXInc1xuICAgIC8vIFwiRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZFwiIGVycm9yLlxuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5uZ0NvbnRyb2wudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U2VsZWN0aW9uQnlWYWx1ZSh2YWx1ZTogYW55IHwgYW55W10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWFyY2ggPT09ICdub25lJykge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9tdWx0aXBsZSAmJiB2YWx1ZSkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBnZXRJbXBkY1NlbGVjdE5vbkFycmF5VmFsdWVFcnJvcigpO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZS5mb3JFYWNoKGN1cnJlbnRWYWx1ZSA9PiB0aGlzLl9zZWxlY3RPcHRpb25CeVZhbHVlKGN1cnJlbnRWYWx1ZSkpO1xuICAgICAgdGhpcy5fc29ydFZhbHVlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3RPcHRpb25CeVZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NlbGVjdE9wdGlvbkJ5VmFsdWUoXG4gICAgdmFsdWU6IGFueVxuICApOiBTZWxlY3RPcHRpb25EaXNwbGF5Q29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb3JyZXNwb25kaW5nT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoXG4gICAgICAob3B0aW9uOiBTZWxlY3RPcHRpb25EaXNwbGF5Q29tcG9uZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZSAhPSBudWxsICYmIHRoaXMuX2NvbXBhcmVXaXRoKG9wdGlvbi52YWx1ZSwgdmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChjb3JyZXNwb25kaW5nT3B0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdChjb3JyZXNwb25kaW5nT3B0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29ycmVzcG9uZGluZ09wdGlvbjtcbiAgfVxuXG4gIC8qKiBBc3NpZ25zIGEgdmFsdWUgdG8gdGhlIHNlbGVjdCBjb250cm9sLiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90XG4gICAqIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHByaXZhdGUgX2Fzc2lnblZhbHVlKG5ld1ZhbHVlOiBhbnkgfCBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIG5ld1ZhbHVlICE9PSB0aGlzLl92YWx1ZSB8fFxuICAgICAgKHRoaXMuX211bHRpcGxlICYmIEFycmF5LmlzQXJyYXkobmV3VmFsdWUpKVxuICAgICkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUobmV3VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRPcHRpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5nZWRPckRlc3Ryb3llZCA9IG1lcmdlKHRoaXMub3B0aW9ucy5jaGFuZ2VzLCB0aGlzLl9uZ0Rlc3Ryb3kpO1xuXG4gICAgdGhpcy5vcHRpb25TZWxlY3Rpb25DaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwoY2hhbmdlZE9yRGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICB0aGlzLl9vblNlbGVjdChldmVudC5zb3VyY2UsIGV2ZW50LmlzVXNlcklucHV0KTtcblxuICAgICAgICBpZiAoZXZlbnQuaXNVc2VySW5wdXQgJiYgIXRoaXMuX211bHRpcGxlICYmIHRoaXMuZHJvcGRvd25PcGVuKSB7XG4gICAgICAgICAgdGhpcy5uZ2JEcm9wZG93bi5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBtZXJnZSguLi50aGlzLm9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb24uc3RhdGVDaGFuZ2VzKSlcbiAgICAgIC5waXBlKHRha2VVbnRpbChjaGFuZ2VkT3JEZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0KFxuICAgIG9wdGlvbjogU2VsZWN0T3B0aW9uRGlzcGxheUNvbXBvbmVudCxcbiAgICBpc1VzZXJJbnB1dDogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBjb25zdCB3YXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pO1xuXG4gICAgaWYgKG9wdGlvbi52YWx1ZSA9PSBudWxsICYmICF0aGlzLl9tdWx0aXBsZSkge1xuICAgICAgb3B0aW9uLmRlc2VsZWN0KCk7XG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmNsZWFyKCk7XG5cbiAgICAgIGlmICh0aGlzLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlcyhvcHRpb24udmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAod2FzU2VsZWN0ZWQgIT09IG9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICBvcHRpb24uc2VsZWN0ZWRcbiAgICAgICAgICA/IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0KG9wdGlvbilcbiAgICAgICAgICA6IHRoaXMuc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3Qob3B0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX211bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuX3NvcnRWYWx1ZXMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAod2FzU2VsZWN0ZWQgIT09IHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9zb3J0VmFsdWVzKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuX211bHRpcGxlICYmXG4gICAgICAodGhpcy5zZWFyY2ggPT09ICdub25lJyB8fCB0aGlzLnNlYXJjaCA9PT0gJ3N0YXRpYycpXG4gICAgKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5zdGF0aWNPcHRpb25zLnRvQXJyYXkoKTtcblxuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgb3B0aW9ucy5maW5kSW5kZXgobyA9PiB0aGlzLmNvbXBhcmVXaXRoKG8udmFsdWUsIGEudmFsdWUpKSAtXG4gICAgICAgICAgb3B0aW9ucy5maW5kSW5kZXgobyA9PiB0aGlzLmNvbXBhcmVXaXRoKG8udmFsdWUsIGIudmFsdWUpKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3Byb3BhZ2F0ZUNoYW5nZXMoZmFsbGJhY2tWYWx1ZT86IGFueSk6IHZvaWQge1xuICAgIGxldCB2YWxUb0VtaXQ6IGFueSA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fbXVsdGlwbGUpIHtcbiAgICAgIHZhbFRvRW1pdCA9ICh0aGlzLnNlbGVjdGVkIGFzIElTZWxlY3RPcHRpb25bXSkubWFwKFxuICAgICAgICBvcHRpb24gPT4gb3B0aW9uLnZhbHVlXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWxUb0VtaXQgPSB0aGlzLnNlbGVjdGVkXG4gICAgICAgID8gKHRoaXMuc2VsZWN0ZWQgYXMgSVNlbGVjdE9wdGlvbikudmFsdWVcbiAgICAgICAgOiBmYWxsYmFja1ZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsVG9FbWl0O1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWxUb0VtaXQpO1xuICAgIHRoaXMuX2N2YU9uQ2hhbmdlKHZhbFRvRW1pdCk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLl9idWlsZENoYW5nZUV2ZW50KHZhbFRvRW1pdCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9idWlsZENoYW5nZUV2ZW50KHZhbHVlOiBhbnkpOiBTZWxlY3RDaGFuZ2VFdmVudDx0aGlzPiB7XG4gICAgcmV0dXJuIG5ldyBTZWxlY3RDaGFuZ2VFdmVudCh0aGlzLCB2YWx1ZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2Rlc2VsZWN0T3B0aW9uKFxuICAgIG9wdGlvbjogSVNlbGVjdE9wdGlvbixcbiAgICBtYXJrVG91Y2hlZDogYm9vbGVhbiA9IHRydWVcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX211bHRpcGxlICYmIHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmRlc2VsZWN0KG9wdGlvbik7XG4gICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKCk7XG5cbiAgICAgIGlmIChtYXJrVG91Y2hlZCkge1xuICAgICAgICB0aGlzLl9jdmFPblRvdWNoZWQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zY3JvbGxUb1NlbGVjdGVkT3B0aW9uKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZHJvcGRvd25PcGVuICYmIHRoaXMuc2VsZWN0ZWQgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZCkpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25FbGVtZW50ID0gdGhpcy5vcHRpb25zLmZpbmQoXG4gICAgICAgICAgbyA9PlxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZCkgJiZcbiAgICAgICAgICAgIHRoaXMuY29tcGFyZVdpdGgoby52YWx1ZSwgdGhpcy5zZWxlY3RlZC52YWx1ZSlcbiAgICAgICAgKTtcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25FbGVtZW50Py5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxuICAgICAgICAgIGlubGluZTogJ25lYXJlc3QnLFxuICAgICAgICAgIGJlaGF2aW9yOiAnaW5zdGFudCdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgT05fT1BFTl9BVVRPX1NDUk9MTF9USU1FT1VUX01TKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBgU2VsZWN0Q29tcG9uZW50YCAoYDxpbXBkYy1zZWxlY3RgKSBpcyBhIHNlbGVjdC1zdHlsZSBkcm9wZG93biBpbnB1dCB3aGVyZSBhbiBpdGVtIChvciBtdWx0aXBsZSBpdGVtcykgY2FuIGJlIHBpY2tlZFxuICogZnJvbSBhIGxpc3Qgb2YgKnVuaXF1ZSogYXZhaWxhYmxlIG9wdGlvbnMuIFRoaXMgY29tcG9uZW50IGNhbiBiZSB1c2VkIHdpdGhpbiBhIGBGb3JtRmllbGRDb21wb25lbnRgIChgPGltcGRjLWZvcm0tZmllbGRgKS5cbiAqIFRvIHVzZSwgYWRkIGBTZWxlY3RNb2R1bGVgIHRvIHRoZSBgaW1wb3J0c2AgYXJyYXkgb2YgdGhlIHJlbGV2YW50IGBOZ01vZHVsZWAgb3Igc3RhbmRhbG9uZSBjb21wb25lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLXNlbGVjdCcsXG4gIGV4cG9ydEFzOiAnaW1wZGNTZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nYkRyb3Bkb3duTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgU2VsZWN0T3B0aW9uRGlzcGxheUNvbXBvbmVudCxcbiAgICBTZWxlY3RWYWx1ZVRhZ3NEaXNwbGF5Q29tcG9uZW50LFxuICAgIEZvcm1GaWVsZE1vZHVsZSxcbiAgICBJbnB1dERpcmVjdGl2ZSxcbiAgICBCYWRnZU1vZHVsZVxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogW1xuICAgICdkaXNhYmxlZCcsXG4gICAgeyBuYW1lOiAndGFiSW5kZXgnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9LFxuICAgICdzZWFyY2gnLFxuICAgICdwbGFjZWhvbGRlcicsXG4gICAgeyBuYW1lOiAncmVxdWlyZWQnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSxcbiAgICAnY29tcGFyZVdpdGgnLFxuICAgICdkcm9wZG93bkNvbnRhaW5lcicsXG4gICAgJ2Vycm9yU3RhdGVNYXRjaGVyJ1xuICBdLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgb3V0cHV0czogWydzZWxlY3Rpb25DaGFuZ2UnLCAndmFsdWVDaGFuZ2UnLCAnc2VhcmNoVGV4dENoYW5nZXMnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJJbmRleCcsXG4gICAgJ1thdHRyLmFyaWEtcmVxdWlyZWRdJzogJ3JlcXVpcmVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZC50b1N0cmluZygpJyxcbiAgICAnW2F0dHIuYXJpYS1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmZvcm0tc2VsZWN0XSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmlzLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtZm9ybS1maWVsZC1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0tcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0tZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0taW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3QtLWVtcHR5XSc6ICdlbXB0eScsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3QtLW11bHRpcGxlXSc6ICdtdWx0aXBsZScsXG4gICAgJyhmb2N1cyknOiAnb25Gb2N1cygpOyBmb2N1cygpJ1xuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBJbXBkY0Zvcm1GaWVsZENvbnRyb2wsXG4gICAgICB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBJTVBEQ19TRUxFQ1RfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQsXG4gICAgICB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50XG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBJTVBEQ19TRUxFQ1RfVkFMVUVfQkFER0VTX1BBUkVOVF9DT01QT05FTlQsXG4gICAgICB1c2VFeGlzdGluZzogU2VsZWN0Q29tcG9uZW50XG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudFxuICBleHRlbmRzIF9TZWxlY3RDb21wb25lbnRCYXNlXG4gIGltcGxlbWVudHMgSVNlbGVjdFZhbHVlQmFkZ2VzUGFyZW50Q29tcG9uZW50XG57XG4gIHB1YmxpYyByZWFkb25seSBjb250cm9sVHlwZTogc3RyaW5nID0gJ2ltcGRjLXNlbGVjdCc7XG4gIHB1YmxpYyByZWFkb25seSBzdXBwb3J0c0FmZml4ZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKEBBdHRyaWJ1dGUoJ3RhYmluZGV4JykgdGFiSW5kZXg/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihgaW1wZGMtc2VsZWN0LSR7bmFub2lkKCl9YCwgdGFiSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93IHRoZSB1c2VyIHRvIGNsaWNrIGEgYnV0dG9uIGluc2lkZSBvZiB0aGUgc2VsZWN0IGNvbnRyb2wgYW5kIGNsZWFyIHRoZWlyIHNlbGVjdGlvbihzKTtcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBhbGxvd0NsZWFyOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIG92ZXJyaWRlIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XG4gIH1cbiAgcHVibGljIG92ZXJyaWRlIHNldCBtdWx0aXBsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGVsKSB7XG4gICAgICB0aHJvdyBnZXRJbXBkY1NlbGVjdER5bmFtaWNNdWx0aXBsZUVycm9yKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fbXVsdGlwbGUgPSB2YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtdWx0aXBsZURpc3BsYXk6ICdpbnNpZGUnIHwgJ291dHNpZGUnID0gJ2luc2lkZSc7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIGRlc2VsZWN0T3B0aW9uKG9wdGlvbjogSVNlbGVjdE9wdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX2Rlc2VsZWN0T3B0aW9uKG9wdGlvbik7XG4gIH1cbn1cbiIsIjxkaXZcbiAgbmdiRHJvcGRvd25cbiAgI2Ryb3Bkb3duPVwibmdiRHJvcGRvd25cIlxuICBbYXV0b0Nsb3NlXT1cIm11bHRpcGxlID8gJ291dHNpZGUnIDogdHJ1ZVwiXG4gIFtjb250YWluZXJdPVwiZHJvcGRvd25Db250YWluZXJcIlxuICBbZHJvcGRvd25DbGFzc109XCJkcm9wZG93bkNvbnRhaW5lciA9PT0gJ2JvZHknID8gJ2ltcGFydG5lci1oZXgnIDogJydcIlxuICAob3BlbkNoYW5nZSk9XCJoYW5kbGVPcGVuQ2hhbmdlKCRldmVudClcIlxuICBjbGFzcz1cImgtMTAwIHctMTAwXCI+XG4gIDxidXR0b25cbiAgICAjdG9nZ2xlQnV0dG9uXG4gICAgY2xhc3M9XCJpbXBkYy1zZWxlY3QtLXRvZ2dsZSBidG4gYm9yZGVyLTAgaC0xMDAgdGV4dC1zdGFydFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICBuZ2JEcm9wZG93blRvZ2dsZT5cbiAgICBAaWYgKGVtcHR5KSB7XG4gICAgPHNwYW4gY2xhc3M9XCJpbXBkYy1zZWxlY3QtLXRleHQgaW1wZGMtc2VsZWN0LS1wbGFjZWhvbGRlclwiPnt7XG4gICAgICBwbGFjZWhvbGRlclxuICAgIH19PC9zcGFuPlxuICAgIH0gQGVsc2UgeyBAaWYgKHNlbGVjdGVkSXNTaW5nbGUoc2VsZWN0ZWQpKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJpbXBkYy1zZWxlY3QtLXRleHQgaW1wZGMtc2VsZWN0LS12YWx1ZS10ZXh0XCI+XG4gICAgICB7eyBzZWxlY3RlZC5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgICB9IEBlbHNlIGlmIChtdWx0aXBsZURpc3BsYXkgPT09ICdpbnNpZGUnKSB7XG4gICAgPGltcGRjLXNlbGVjdC12YWx1ZS10YWdzLWRpc3BsYXkgLz5cbiAgICB9IEBlbHNlIHtcbiAgICA8c3BhbiBjbGFzcz1cImltcGRjLXNlbGVjdC0tdGV4dCBpbXBkYy1zZWxlY3QtLXBsYWNlaG9sZGVyXCI+e3tcbiAgICAgIHBsYWNlaG9sZGVyXG4gICAgfX08L3NwYW4+XG4gICAgfSBAaWYgKCFkaXNhYmxlZCAmJiBhbGxvd0NsZWFyKSB7XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImltcGRjLXNlbGVjdC0tY2xlYXItYnRuIGJ0biBidG4teHMgYnRuLWxpbmsgdGV4dC1ncmF5LTQwMCBtcy1hdXRvXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IGRyb3Bkb3duLmNsb3NlKCk7IGNsZWFyU2VsZWN0aW9uKClcIj5cbiAgICAgIDxpbXBkYy1pY29uIG5hbWU9XCJ0aW1lc1wiIFtzaXplXT1cIjE2XCI+PC9pbXBkYy1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIH0gfVxuICA8L2J1dHRvbj5cbiAgPGRpdlxuICAgIG5nYkRyb3Bkb3duTWVudVxuICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LS1kcm9wZG93bi1tZW51IGJnLXdoaXRlIHRleHQtZ3JheS02MDBcIlxuICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICB0YWJpbmRleD1cIi0xXCI+XG4gICAgPGRpdiAqbmdJZj1cInNlYXJjaCAhPT0gJ25vbmUnXCIgY2xhc3M9XCJpbXBkYy1zZWxlY3QtLXNlYXJjaFwiPlxuICAgICAgPGltcGRjLWZvcm0tZmllbGQ+XG4gICAgICAgIDxzcGFuIGltcGRjVGV4dFByZWZpeCAoY2xpY2spPVwic2VhcmNoSW5wdXQuZm9jdXMoKVwiPlxuICAgICAgICAgIDxpbXBkYy1pY29uIG5hbWU9XCJzZWFyY2hcIj48L2ltcGRjLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgaW1wZGNJbnB1dFxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgICBjbGFzcz1cImltcGRjLXNlbGVjdC0tc2VhcmNoLWlucHV0XCJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVTZWFyY2hTdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGtleWRvd24uYXJyb3dkb3duKT1cImhhbmRsZVNlYXJjaFVwRG93bigkZXZlbnQsICd1cCcpXCJcbiAgICAgICAgICAoa2V5ZG93bi5hcnJvd3VwKT1cImhhbmRsZVNlYXJjaFVwRG93bigkZXZlbnQsICdkb3duJylcIiAvPlxuICAgICAgICA8c3BhbiBpbXBkY1RleHRTdWZmaXg+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hDb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJpbXBkYy1zZWxlY3QtLWNsZWFyLWJ0biBidG4gYnRuLXhzIGJ0bi1saW5rIHRleHQtZ3JheS00MDAgbXMtYXV0b1wiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoQ29udHJvbC5yZXNldCgpOyBzZWFyY2hJbnB1dC5mb2N1cygpXCI+XG4gICAgICAgICAgICA8aW1wZGMtaWNvbiBuYW1lPVwidGltZXNcIiBbc2l6ZV09XCIxNlwiPjwvaW1wZGMtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9pbXBkYy1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbXBkYy1zZWxlY3QtLW9wdGlvbnNcIj5cbiAgICAgIEBmb3IgKG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMkIHwgYXN5bmM7IHRyYWNrIG9wdGlvbi52YWx1ZTsgbGV0IGlkeCA9XG4gICAgICAkaW5kZXg7IGxldCBmaXJzdCA9ICRmaXJzdCkgeyBAaWYgKG9wdGlvbi5ncm91cExhYmVsICYmXG4gICAgICBvcHRpb24uc2hvd0dyb3VwTGFiZWwpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJpbXBkYy1zZWxlY3QtLW9wdGlvbi1ncm91cC1sYWJlbFwiPlxuICAgICAgICB7eyBvcHRpb24uZ3JvdXBMYWJlbCB9fVxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8aW1wZGMtc2VsZWN0LW9wdGlvbi1kaXNwbGF5XG4gICAgICAgIFtjbGFzcy5pbXBkYy1zZWxlY3Qtb3B0aW9uLS1hY3RpdmVdPVwiaWR4ID09PSBhY3RpdmVJbmRleFwiXG4gICAgICAgIFtjbGFzcy5pbXBkYy1zZWxlY3Qtb3B0aW9uLS1ncm91cGVkXT1cIiEhb3B0aW9uLmdyb3VwTGFiZWxcIlxuICAgICAgICBbZ3JvdXBMYWJlbF09XCJvcHRpb24uZ3JvdXBMYWJlbFwiXG4gICAgICAgIFtsYWJlbF09XCJvcHRpb24ubGFiZWxcIlxuICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiEhb3B0aW9uLmRpc2FibGVkXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cIm9wdGlvbi5zZWxlY3RlZFwiXG4gICAgICAgIFtoaWdobGlnaHRUZXh0XT1cInNlYXJjaENvbnRyb2wudmFsdWVcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJtYXJrQWN0aXZlKGlkeClcIlxuICAgICAgICAoZm9jdXMpPVwibWFya0FjdGl2ZShpZHgpXCIgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -33,9 +33,14 @@ export class TextHighlightComponent {
|
|
|
33
33
|
this.result = [];
|
|
34
34
|
}
|
|
35
35
|
ngOnChanges() {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
if (this.search) {
|
|
37
|
+
const escapedText = this._escapeTextForRegExp(this.search);
|
|
38
|
+
const regEx = new RegExp(`(${escapedText})`, `g${this.exact ? '' : 'i'}`);
|
|
39
|
+
this.result = this.text.split(regEx);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.result = [this.text];
|
|
43
|
+
}
|
|
39
44
|
}
|
|
40
45
|
_escapeTextForRegExp(text) {
|
|
41
46
|
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
|
@@ -93,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
|
|
|
93
98
|
}], highlightClass: [{
|
|
94
99
|
type: Input
|
|
95
100
|
}] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1oaWdobGlnaHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi90ZXh0LWhpZ2hsaWdodC90ZXh0LWhpZ2hsaWdodC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7O0FBRTVEOzs7R0FHRztBQXFCSCxNQUFNLE9BQU8sc0JBQXNCO0lBcEJuQztRQXFCRTs7V0FFRztRQUN3QixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXJDOztXQUVHO1FBQ3dCLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFFdkM7Ozs7O1dBS0c7UUFDTSxXQUFNLEdBQTRDLE1BQU0sQ0FBQztRQUVsRTs7V0FFRztRQUNNLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFdkI7OztXQUdHO1FBQ00sbUJBQWMsR0FBVyxpQkFBaUIsQ0FBQztRQUU3QyxXQUFNLEdBQWEsRUFBRSxDQUFDO0tBZTlCO0lBYkMsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxXQUFXLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RDO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQVk7UUFDdkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7OEdBNUNVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDZPQWpCdkI7Ozs7Ozs7Ozs7Ozs7OztHQWVUOzsyRkFFVSxzQkFBc0I7a0JBcEJsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw4Q0FBOEM7b0JBQ3hELFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7OztHQWVUO2lCQUNGOzhCQUs0QixJQUFJO3NCQUE5QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFLRSxNQUFNO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFRaEIsTUFBTTtzQkFBZCxLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogVGhlIGBUZXh0SGlnaGxpZ2h0Q29tcG9uZW50YCAoYDxpbXBkYy10ZXh0LWhpZ2hsaWdodGAgb3IgYDxhbnkgaW1wZGMtdGV4dC1oaWdobGlnaHRgKSBpcyBhIGNvbXBvbmVudCB0aGF0IGhpZ2hsaWdodHMgc2VhcmNoLW1hdGNoZWQgdGV4dC5cbiAqIFRvIHVzZSwgaW1wb3J0IGBUZXh0SGlnaGxpZ2h0TW9kdWxlYCBvciBhbm90aGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgYW5kIGV4cG9ydHMgdGhhdCBtb2R1bGUgZnJvbSBgQGltcGFydG5lci9kZXNpZ24tY29tcG9uZW50c2AuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltcGRjLXRleHQtaGlnaGxpZ2h0LCBbaW1wZGMtdGV4dC1oaWdobGlnaHRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAZm9yIChwYXJ0IG9mIHJlc3VsdDsgdHJhY2sgcGFydDsgbGV0IG9kZCA9ICRvZGQpIHsgQGlmIChvZGQpIHsgQHN3aXRjaFxuICAgIChtZXRob2QpIHsgQGNhc2UgKCdtYXJrJykge1xuICAgIDxtYXJrPnt7IHBhcnQgfX08L21hcms+XG4gICAgfSBAY2FzZSAoJ2InKSB7XG4gICAgPGI+e3sgcGFydCB9fTwvYj5cbiAgICB9IEBjYXNlICgndScpIHtcbiAgICA8dT57eyBwYXJ0IH19PC91PlxuICAgIH0gQGNhc2UgKCdzdHJvbmcnKSB7XG4gICAgPHN0cm9uZz57eyBwYXJ0IH19PC9zdHJvbmc+XG4gICAgfSBAY2FzZSgnY2xhc3MnKSB7XG4gICAgPHNwYW4gY2xhc3M9XCJ7eyBoaWdobGlnaHRDbGFzcyB9fVwiPnt7IHBhcnQgfX08L3NwYW4+XG4gICAgfSB9IH0gQGVsc2Uge1xuICAgIDxuZy1jb250YWluZXI+e3sgcGFydCB9fTwvbmctY29udGFpbmVyPlxuICAgIH0gfVxuICBgXG59KVxuZXhwb3J0IGNsYXNzIFRleHRIaWdobGlnaHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogVGhlIHRleHQgdGhhdCB3aWxsIGJlIHNlYXJjaGVkIGFuZCBwYXJ0cyBvZiBpdCBjb3VsZCBiZSBoaWdobGlnaHRlZC5cbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHRleHQgPSAnJztcblxuICAvKipcbiAgICogVGhlIHNlYXJjaCByZWdleC9zdHJpbmcgdG8gbG9vayBmb3IuXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZWFyY2ggPSAnJztcblxuICAvKipcbiAgICogVGhlIG1ldGhvZCBvZiBoaWdobGlnaHRpbmcsIG9yIG90aGVyd2lzZSB3aGF0IGlzIHdyYXBwaW5nIHRoZSBzZWFyY2ggbWF0Y2hlcy4gT3B0aW9ucyBgJ21hcmsnYCxcbiAgICogYCdiJ2AsIGAnc3Ryb25nJ2AsIGFuZCBgJ3UnYCB3aWxsIHdyYXAgbWF0Y2hpbmcgY29udGVudHMgaW5zaWRlIG9mIHRob3NlIHJlc3BlY3RpdmUgbmF0aXZlIGVsZW1lbnQgdHlwZXM7XG4gICAqIG9wdGlvbiBgJ2NsYXNzJ2Agd2lsbCB3cmFwIG1hdGNoaW5nIGNvbnRlbnRzIGluc2lkZSBhIGA8c3Bhbj5gIHdpdGggdGhlIENTUyBjbGFzcyBzcGVjaWZpZWQgdmlhIHRoZVxuICAgKiBgaGlnaGxpZ2h0Q2xhc3NgIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgbWV0aG9kOiAnbWFyaycgfCAnYicgfCAnc3Ryb25nJyB8ICd1JyB8ICdjbGFzcycgPSAnbWFyayc7XG5cbiAgLyoqXG4gICAqIEJlIGRlZmF1bHQgdGhlIHNlYXJjaCBpcyBjYXNlLWluc2Vuc2l0aXZlLCB0aGlzIHdpbGwgcmVxdWlyZSBleGFjdCBtYXRjaGVzIG9ubHkuXG4gICAqL1xuICBASW5wdXQoKSBleGFjdCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGBjbGFzc2Agc3RyaW5nIGFwcGxpZWQgdG8gYDxzcGFuPmAgZWxlbWVudHMgY29udGFpbmluZyBtYXRjaGVkIHRleHQ7IG9ubHkgYXBwbGllZCB3aGVuIHNwZWNpZnlpbmcgYCdjbGFzcydgXG4gICAqIGZvciB0aGUgYG1ldGhvZGAgaW5wdXQgcHJvcGVydHkuXG4gICAqL1xuICBASW5wdXQoKSBoaWdobGlnaHRDbGFzczogc3RyaW5nID0gJ2ltcGRjLWhpZ2hsaWdodCc7XG5cbiAgcHVibGljIHJlc3VsdDogc3RyaW5nW10gPSBbXTtcblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5zZWFyY2gpIHtcbiAgICAgIGNvbnN0IGVzY2FwZWRUZXh0ID0gdGhpcy5fZXNjYXBlVGV4dEZvclJlZ0V4cCh0aGlzLnNlYXJjaCk7XG4gICAgICBjb25zdCByZWdFeCA9IG5ldyBSZWdFeHAoYCgke2VzY2FwZWRUZXh0fSlgLCBgZyR7dGhpcy5leGFjdCA/ICcnIDogJ2knfWApO1xuICAgICAgdGhpcy5yZXN1bHQgPSB0aGlzLnRleHQuc3BsaXQocmVnRXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3VsdCA9IFt0aGlzLnRleHRdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2VzY2FwZVRleHRGb3JSZWdFeHAodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC9bLVtcXF17fSgpKis/LixcXFxcXiR8I1xcc10vZywgJ1xcXFwkJicpO1xuICB9XG59XG4iXX0=
|
|
@@ -3177,9 +3177,14 @@ class TextHighlightComponent {
|
|
|
3177
3177
|
this.result = [];
|
|
3178
3178
|
}
|
|
3179
3179
|
ngOnChanges() {
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3180
|
+
if (this.search) {
|
|
3181
|
+
const escapedText = this._escapeTextForRegExp(this.search);
|
|
3182
|
+
const regEx = new RegExp(`(${escapedText})`, `g${this.exact ? '' : 'i'}`);
|
|
3183
|
+
this.result = this.text.split(regEx);
|
|
3184
|
+
}
|
|
3185
|
+
else {
|
|
3186
|
+
this.result = [this.text];
|
|
3187
|
+
}
|
|
3183
3188
|
}
|
|
3184
3189
|
_escapeTextForRegExp(text) {
|
|
3185
3190
|
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
|
@@ -5252,6 +5257,8 @@ class _SelectComponentBase extends __SelectComponentBase {
|
|
|
5252
5257
|
if (this.ngControl) {
|
|
5253
5258
|
this.ngControl.valueAccessor = this;
|
|
5254
5259
|
}
|
|
5260
|
+
// idempotent assignment - respects arbitrary ID set via attr if present, otherwise falls back to auto UUID;
|
|
5261
|
+
// also triggers stateChanges pulse for parent form-field component
|
|
5255
5262
|
this.id = this.id;
|
|
5256
5263
|
this.tabIndex = parseInt(tabIndex ?? '') || 0;
|
|
5257
5264
|
}
|
|
@@ -5405,6 +5412,7 @@ class _SelectComponentBase extends __SelectComponentBase {
|
|
|
5405
5412
|
clearSelection() {
|
|
5406
5413
|
this.value = null;
|
|
5407
5414
|
this.focus();
|
|
5415
|
+
this._propagateChanges();
|
|
5408
5416
|
}
|
|
5409
5417
|
handleSearchSubmit(evt) {
|
|
5410
5418
|
evt.preventDefault();
|
|
@@ -8542,11 +8550,11 @@ class AlertComponent {
|
|
|
8542
8550
|
this.dismiss.emit();
|
|
8543
8551
|
}
|
|
8544
8552
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8545
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText", bodyText: "bodyText", inline: "inline", hideIcon: "hideIcon", dismissible: "dismissible" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div
|
|
8553
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: AlertComponent, selector: "impdc-alert, [impdc-alert]", inputs: { theme: "theme", show: "show", headingText: "headingText", bodyText: "bodyText", inline: "inline", hideIcon: "hideIcon", dismissible: "dismissible" }, outputs: { dismiss: "dismiss" }, ngImport: i0, template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .alert-content-heading-only{gap:0}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }] }); }
|
|
8546
8554
|
}
|
|
8547
8555
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AlertComponent, decorators: [{
|
|
8548
8556
|
type: Component,
|
|
8549
|
-
args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div
|
|
8557
|
+
args: [{ selector: 'impdc-alert, [impdc-alert]', template: "<div *ngIf=\"show\" class=\"impdc alert\" [ngClass]=\"componentClasses\">\n <ng-container *ngIf=\"!hideIcon\">\n <span #alertIcon [hidden]=\"!alertIcon.children.length\" class=\"alert-icon\">\n <ng-content select=\"[icon]\"></ng-content>\n </span>\n <span *ngIf=\"!alertIcon.children.length\" class=\"alert-icon\">\n <span impdc-icon [name]=\"themeIconName\"></span>\n </span>\n </ng-container>\n\n <div\n class=\"alert-content\"\n [ngClass]=\"{\n 'alert-content-heading-only':\n !bodyText &&\n !projectedBody.children.length &&\n !projectedBody.innerHTML &&\n !alertActions.children.length\n }\">\n <div class=\"alert-heading\">\n <ng-content select=\"[heading]\"></ng-content>\n <span *ngIf=\"headingText\">{{ headingText }}</span>\n </div>\n <div\n #bodyContent\n class=\"alert-body\"\n [hidden]=\"!bodyContent.children.length\">\n <div *ngIf=\"bodyText\">{{ bodyText }}</div>\n\n <div\n #projectedBody\n [hidden]=\"!projectedBody.children.length && !projectedBody.innerHTML\">\n <ng-content></ng-content>\n </div>\n\n <div\n #alertActions\n [hidden]=\"!alertActions.children.length\"\n class=\"alert-actions\">\n <ng-content select=\"[action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <a\n *ngIf=\"dismissible\"\n class=\"close-icon\"\n (click)=\"closeAlert()\"\n data-bs-dismiss=\"alert\"\n aria-label=\"Close\">\n <span impdc-icon name=\"times\" theme=\"regular\"></span>\n </a>\n</div>\n", styles: [".impdc.alert{display:flex;gap:1.2rem}.impdc.alert .alert-icon,.impdc.alert .close-icon{display:flex;width:2rem;height:2rem;font-size:1.6rem;line-height:2rem;align-items:center;justify-content:center}.impdc.alert .alert-content{flex:1;display:flex;flex-direction:column;gap:.8rem}.impdc.alert .alert-content .alert-heading{display:flex;align-items:center;gap:1.2rem}.impdc.alert .alert-content .alert-body{display:flex;flex-direction:column;gap:1.6rem;font-size:1.4rem;font-weight:400;line-height:2rem}.impdc.alert .alert-content .alert-body .alert-actions{display:flex;gap:2.8rem}.impdc.alert .alert-content .alert-body .alert-actions ::ng-deep a{font-size:1.4rem;font-weight:500;line-height:2rem;text-decoration-line:underline;color:var(--impartner-hex-alert-action-color)}.impdc.alert .alert-content-heading-only{gap:0}.impdc.alert .close-icon{cursor:pointer;color:var(--impartner-hex-btn-close-color)}\n"] }]
|
|
8550
8558
|
}], propDecorators: { theme: [{
|
|
8551
8559
|
type: Input
|
|
8552
8560
|
}], show: [{
|