mmhglobal-dynamicform 2.10.4 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -1
- package/esm2020/lib/services/main.service.mjs +85 -20
- package/esm2020/lib/services/zcomponent.debug.service.mjs +8 -5
- package/esm2020/lib/services/zcomponent.service.mjs +4 -4
- package/esm2020/lib/sfquerybuilder/sfquerybuilder.component.mjs +4 -3
- package/esm2020/lib/uibulletin/uibulletin.component.mjs +11 -8
- package/esm2020/lib/uiheader/uiheader.component.mjs +22 -6
- package/esm2020/lib/uipage/uipage.component.mjs +41 -3
- package/esm2020/lib/zcard/zcard.component.mjs +2 -2
- package/esm2020/lib/zform/zform.component.mjs +39 -12
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +9 -4
- package/esm2020/lib/zgrid/zgrid.component.mjs +6 -4
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -3
- package/esm2020/lib/ztree/ztree.component.mjs +2 -2
- package/esm2020/lib/zupload/zupload.component.mjs +29 -6
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +14 -1
- package/fesm2015/mmhglobal-dynamicform.mjs +269 -69
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +266 -69
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/services/main.service.d.ts +9 -4
- package/lib/services/zcomponent.debug.service.d.ts +5 -2
- package/lib/uibulletin/uibulletin.component.d.ts +4 -4
- package/lib/uiheader/uiheader.component.d.ts +4 -2
- package/lib/uipage/uipage.component.d.ts +2 -0
- package/lib/zform/zform.component.d.ts +4 -2
- package/lib/zgrid/zgrid.binding.directive.d.ts +4 -2
- package/lib/zgrid/zgrid.component.d.ts +3 -2
- package/lib/zupload/zupload.component.d.ts +3 -2
- package/package.json +1 -1
|
@@ -197,6 +197,7 @@ export class SfquerybuilderComponent {
|
|
|
197
197
|
type: 'string'
|
|
198
198
|
});
|
|
199
199
|
}
|
|
200
|
+
this.sdFilter.sort((a, b) => a.label.toLowerCase() < b.label.toLowerCase() ? -1 : 1);
|
|
200
201
|
}
|
|
201
202
|
//#region checkbox
|
|
202
203
|
generateColumnCheckbox(label, value) {
|
|
@@ -498,10 +499,10 @@ export class SfquerybuilderComponent {
|
|
|
498
499
|
}
|
|
499
500
|
}
|
|
500
501
|
SfquerybuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SfquerybuilderComponent, deps: [{ token: i1.FieldService }, { token: i1.ResourceApiService }, { token: i1.WebApiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
501
|
-
SfquerybuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SfquerybuilderComponent, selector: "app-sfquerybuilder", inputs: { data: "data", group: "group", form: "form" }, viewQueries: [{ propertyName: "qryBldrObj", first: true, predicate: ["querybuilder"], descendants: true }], ngImport: i0, template: "<ion-item *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <div class=\"qbcontainer\">\r\n <ejs-querybuilder *ngIf=\"issfLoaded\"\r\n #querybuilder\r\n width=\"100%\"\r\n [dataSource]=\"sfData\"\r\n [columns]=\"sdFilter\"\r\n [rule]=\"importRules\"\r\n (ruleChange)=\"updateRule($event)\"\r\n (created)=\"onChange()\">\r\n </ejs-querybuilder>\r\n\r\n <div *ngIf=\"!data.HideShowResultPanel\">\r\n <br>\r\n <ion-label>Result</ion-label>\r\n <textarea class=\"output\"\r\n resizable=\"none\"\r\n [rows]=\"10\"\r\n style=\"border: 1px solid #d3d3d3; width: 100%;\">{{displayRule}}</textarea>\r\n </div>\r\n </div>\r\n</ion-item>\r\n", styles: [".qbcontainer{border-radius:5px;border:1px solid rgba(0,0,0,.08);padding:10px;margin:10px 0;width:100%}#querybuilder .e-slider-container.e-control-wrapper{height:0}ejs-querybuilder{display:block}.e-query-builder{margin:0 auto;display:block}.highcontrast textarea#ruleContent{background-color:#000}\n"], components: [{ type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i3.QueryBuilderComponent, selector: "ejs-querybuilder", inputs: ["allowValidation", "columns", "cssClass", "dataSource", "displayMode", "enableNotCondition", "enablePersistence", "enableRtl", "fieldMode", "fieldModel", "headerTemplate", "height", "immediateModeDelay", "locale", "matchCase", "maxGroupCount", "operatorModel", "readonly", "rule", "separator", "showButtons", "sortDirection", "summaryView", "valueModel", "width"], outputs: ["actionBegin", "beforeChange", "change", "created", "dataBound", "ruleChange"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
502
|
+
SfquerybuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SfquerybuilderComponent, selector: "app-sfquerybuilder", inputs: { data: "data", group: "group", form: "form" }, viewQueries: [{ propertyName: "qryBldrObj", first: true, predicate: ["querybuilder"], descendants: true }], ngImport: i0, template: "<ion-item *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <div class=\"qbcontainer\">\r\n <ejs-querybuilder *ngIf=\"issfLoaded\"\r\n #querybuilder\r\n width=\"100%\"\r\n [dataSource]=\"sfData\"\r\n [columns]=\"sdFilter\"\r\n [rule]=\"importRules\"\r\n (ruleChange)=\"updateRule($event)\"\r\n (created)=\"onChange()\">\r\n </ejs-querybuilder>\r\n\r\n <div *ngIf=\"!data.HideShowResultPanel\">\r\n <br>\r\n <ion-label>Result</ion-label>\r\n <textarea class=\"output\"\r\n resizable=\"none\"\r\n [rows]=\"10\"\r\n style=\"border: 1px solid #d3d3d3; width: 100%;\">{{displayRule}}</textarea>\r\n </div>\r\n </div>\r\n</ion-item>\r\n", styles: [".qbcontainer{border-radius:5px;border:1px solid rgba(0,0,0,.08);padding:10px;margin:10px 0;width:100%}#querybuilder .e-slider-container.e-control-wrapper{height:0}ejs-querybuilder{display:block}.e-query-builder{margin:0 auto;display:block;background-color:#fff;border-color:#e0e0e0}.highcontrast textarea#ruleContent{background-color:#000}.e-query-builder .e-group-body .e-rule-container{box-shadow:0 2px 6px #d3d3d3;height:auto;margin-top:0;padding-right:12px;border:none;border-color:none}.e-bigger.e-small .e-ddl.e-popup .e-list-item,.e-bigger.e-small .e-ddl.e-popup .e-list-group-item,.e-bigger.e-small .e-ddl.e-popup .e-fixed-head{font-size:14px;line-height:34px;padding-left:0;text-indent:16px}.e-query-builder .e-group-body .e-rule-container .e-rule-filter{width:30%!important}.e-query-builder .e-group-body .e-rule-container .e-value{width:40%!important}\n"], components: [{ type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i3.QueryBuilderComponent, selector: "ejs-querybuilder", inputs: ["allowValidation", "columns", "cssClass", "dataSource", "displayMode", "enableNotCondition", "enablePersistence", "enableRtl", "fieldMode", "fieldModel", "headerTemplate", "height", "immediateModeDelay", "locale", "matchCase", "maxGroupCount", "operatorModel", "readonly", "rule", "separator", "showButtons", "sortDirection", "summaryView", "valueModel", "width"], outputs: ["actionBegin", "beforeChange", "change", "created", "dataBound", "ruleChange"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
502
503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SfquerybuilderComponent, decorators: [{
|
|
503
504
|
type: Component,
|
|
504
|
-
args: [{ selector: 'app-sfquerybuilder', template: "<ion-item *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <div class=\"qbcontainer\">\r\n <ejs-querybuilder *ngIf=\"issfLoaded\"\r\n #querybuilder\r\n width=\"100%\"\r\n [dataSource]=\"sfData\"\r\n [columns]=\"sdFilter\"\r\n [rule]=\"importRules\"\r\n (ruleChange)=\"updateRule($event)\"\r\n (created)=\"onChange()\">\r\n </ejs-querybuilder>\r\n\r\n <div *ngIf=\"!data.HideShowResultPanel\">\r\n <br>\r\n <ion-label>Result</ion-label>\r\n <textarea class=\"output\"\r\n resizable=\"none\"\r\n [rows]=\"10\"\r\n style=\"border: 1px solid #d3d3d3; width: 100%;\">{{displayRule}}</textarea>\r\n </div>\r\n </div>\r\n</ion-item>\r\n", styles: [".qbcontainer{border-radius:5px;border:1px solid rgba(0,0,0,.08);padding:10px;margin:10px 0;width:100%}#querybuilder .e-slider-container.e-control-wrapper{height:0}ejs-querybuilder{display:block}.e-query-builder{margin:0 auto;display:block}.highcontrast textarea#ruleContent{background-color:#000}\n"] }]
|
|
505
|
+
args: [{ selector: 'app-sfquerybuilder', template: "<ion-item *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <div class=\"qbcontainer\">\r\n <ejs-querybuilder *ngIf=\"issfLoaded\"\r\n #querybuilder\r\n width=\"100%\"\r\n [dataSource]=\"sfData\"\r\n [columns]=\"sdFilter\"\r\n [rule]=\"importRules\"\r\n (ruleChange)=\"updateRule($event)\"\r\n (created)=\"onChange()\">\r\n </ejs-querybuilder>\r\n\r\n <div *ngIf=\"!data.HideShowResultPanel\">\r\n <br>\r\n <ion-label>Result</ion-label>\r\n <textarea class=\"output\"\r\n resizable=\"none\"\r\n [rows]=\"10\"\r\n style=\"border: 1px solid #d3d3d3; width: 100%;\">{{displayRule}}</textarea>\r\n </div>\r\n </div>\r\n</ion-item>\r\n", styles: [".qbcontainer{border-radius:5px;border:1px solid rgba(0,0,0,.08);padding:10px;margin:10px 0;width:100%}#querybuilder .e-slider-container.e-control-wrapper{height:0}ejs-querybuilder{display:block}.e-query-builder{margin:0 auto;display:block;background-color:#fff;border-color:#e0e0e0}.highcontrast textarea#ruleContent{background-color:#000}.e-query-builder .e-group-body .e-rule-container{box-shadow:0 2px 6px #d3d3d3;height:auto;margin-top:0;padding-right:12px;border:none;border-color:none}.e-bigger.e-small .e-ddl.e-popup .e-list-item,.e-bigger.e-small .e-ddl.e-popup .e-list-group-item,.e-bigger.e-small .e-ddl.e-popup .e-fixed-head{font-size:14px;line-height:34px;padding-left:0;text-indent:16px}.e-query-builder .e-group-body .e-rule-container .e-rule-filter{width:30%!important}.e-query-builder .e-group-body .e-rule-container .e-value{width:40%!important}\n"] }]
|
|
505
506
|
}], ctorParameters: function () { return [{ type: i1.FieldService }, { type: i1.ResourceApiService }, { type: i1.WebApiService }]; }, propDecorators: { qryBldrObj: [{
|
|
506
507
|
type: ViewChild,
|
|
507
508
|
args: ['querybuilder']
|
|
@@ -512,4 +513,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
512
513
|
}], form: [{
|
|
513
514
|
type: Input
|
|
514
515
|
}] } });
|
|
515
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2ZxdWVyeWJ1aWxkZXIvc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2ZxdWVyeWJ1aWxkZXIvc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFHdEYsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNTLGdCQUFnQixFQUFFLG9CQUFvQixFQUNoQyx3QkFBd0IsRUFDN0MsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQWUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVExRCxNQUFNLE9BQU8sdUJBQXVCO0lBa0dsQyxZQUNVLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxhQUE0QjtRQUY1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztR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RUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVNLGVBQWUsQ0FBQyxnQkFBcUI7UUFDMUMsSUFBSSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxRCxJQUFJLGVBQWUsRUFBRTtZQUNuQixlQUFlLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsQ0FBQztZQUVqRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtnQkFDbEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEMsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2FBQy9DO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlCLENBQUM7O29IQTFrQlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsOE5DN0JwQyxxNkJBc0JBOzJGRE9hLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxvQkFBb0I7Z0tBS0gsVUFBVTtzQkFBcEMsU0FBUzt1QkFBQyxjQUFjO2dCQUVoQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVsYXksIGlnbm9yZUVsZW1lbnRzLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG4vL2ltcG9ydCB7IFF1ZXJ5QnVpbGRlckNvbmZpZywgUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcyB9IGZyb20gJ2FuZ3VsYXIyLXF1ZXJ5LWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBSdWxlTW9kZWwsIFF1ZXJ5QnVpbGRlckNvbXBvbmVudCwgQ29sdW1uc01vZGVsLCBUZW1wbGF0ZUNvbHVtbiwgUnVsZUNoYW5nZUV2ZW50QXJncyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLXF1ZXJ5YnVpbGRlcic7XHJcbmltcG9ydCB7IERyb3BEb3duTGlzdCwgTXVsdGlTZWxlY3QgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItZHJvcGRvd25zJztcclxuaW1wb3J0IHsgZ2V0Q29tcG9uZW50LCBjcmVhdGVFbGVtZW50IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWJhc2UnO1xyXG5pbXBvcnQgeyBDaGVja0JveCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1idXR0b25zJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHtcclxuICBGaWVsZFNlcnZpY2UsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRQcm9wZXJ0aWVzLCBaRmllbGQsIFpHcm91cCxcclxuICBGb250QXdlU29tZVNlcnZpY2UsIERlZmF1bHRQYWdlU2V0dGluZ1BhcmFtcywgV2ViQXBpU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcbmltcG9ydCB7IERhdGFNYW5hZ2VyLCBRdWVyeSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1kYXRhJztcclxuZGVjbGFyZSB2YXIgJDogYW55XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zZnF1ZXJ5YnVpbGRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NmcXVlcnlidWlsZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZnF1ZXJ5YnVpbGRlci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2ZxdWVyeWJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ3F1ZXJ5YnVpbGRlcicpIHFyeUJsZHJPYmo6IFF1ZXJ5QnVpbGRlckNvbXBvbmVudDtcclxuICAvL0BJbnB1dCgpIGNsYXNzTmFtZXM6IFF1ZXJ5QnVpbGRlckNsYXNzTmFtZXM7XHJcbiAgQElucHV0KCkgZGF0YTogWkZpZWxkO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBxYkl0ZW1zID0ge307XHJcblxyXG4gIHB1YmxpYyBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcbiAgcHVibGljIGlzc2ZMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcXVlcnlDdHJsOiBhbnk7XHJcbiAgLy9wdWJsaWMgY3VycmVudENvbmZpZzogUXVlcnlCdWlsZGVyQ29uZmlnID0ge1xyXG4gIC8vICBmaWVsZHM6IHt9LFxyXG4gIC8vICBhbGxvd0VtcHR5UnVsZXNldHM6IHRydWVcclxuICAvL307XHJcbiAgcHVibGljIGFsbG93UnVsZXNldDogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGFsbG93Q29sbGFwc2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcGVyc2lzdFZhbHVlT25GaWVsZENoYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHJ1bGU6IGFueTtcclxuICBwdWJsaWMgZmlsdGVyczogYW55O1xyXG4gIHByaXZhdGUgZmllbGRzOiBhbnk7XHJcbiAgcHVibGljIGRpc3BsYXlSdWxlOiBhbnkgPSAnJztcclxuXHJcbiAgcHJpdmF0ZSBsb2FkZWREcm9wZG93bk9wdGlvbnMgPSBbXTtcclxuXHJcbiAgLy9zZlxyXG4gIHB1YmxpYyBzZkRhdGE6IE9iamVjdFtdO1xyXG4gIHB1YmxpYyBpbXBvcnRSdWxlczogUnVsZU1vZGVsO1xyXG4gIHB1YmxpYyBzZEZpbHRlcjogQ29sdW1uc01vZGVsW10gPSBbXTtcclxuICBwdWJsaWMgc2ZRQlRlbXBsYXRlOiBUZW1wbGF0ZUNvbHVtbjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcXVhbE9wZXJhdG9yID0geyB2YWx1ZTogJ2VxdWFsJywga2V5OiAnRXF1YWxzJyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbm90ZXF1YWxPcGVyYXRvciA9IHsgdmFsdWU6ICdub3RlcXVhbCcsIGtleTogJ05vdCBFcXVhbHMnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFydHN3aXRoT3BlcmF0b3IgPSB7IHZhbHVlOiAnc3RhcnRzd2l0aCcsIGtleTogJ1N0YXJ0IFdpdGgnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbmRzd2l0aE9wZXJhdG9yID0geyB2YWx1ZTogJ2VuZHN3aXRoJywga2V5OiAnRW5kIFdpdGgnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBjb250YWluc09wZXJhdG9yID0geyB2YWx1ZTogJ2NvbnRhaW5zJywga2V5OiAnQ29udGFpbnMnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc2VtcHR5T3BlcmF0b3IgPSB7IHZhbHVlOiAnaXNlbXB0eScsIGtleTogJ0lzIEVtcHR5JyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNub3RlbXB0eU9wZXJhdG9yID0geyB2YWx1ZTogJ2lzbm90ZW1wdHknLCBrZXk6ICdJcyBOb3QgRW1wdHknIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc251bGxPcGVyYXRvciA9IHsgdmFsdWU6ICdpc251bGwnLCBrZXk6ICdJcyBOdWxsJyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNub3RudWxsT3BlcmF0b3IgPSB7IHZhbHVlOiAnaXNub3RudWxsJywga2V5OiAnSXMgTm90IE51bGwnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbk9wZXJhdG9yID0geyB2YWx1ZTogJ2luJywga2V5OiAnSW4nIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBub3Rpbk9wZXJhdG9yID0geyB2YWx1ZTogJ25vdGluJywga2V5OiAnTm90IEluJyB9XHJcbiAgcHJpdmF0ZSByZWFkb25seSBncmVhdGVydGhhbk9wZXJhdG9yID0geyB2YWx1ZTogJ2dyZWF0ZXJ0aGFuJywga2V5OiAnR3JlYXRlciBUaGFuJyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JlYXRlcnRoYW5vcmVxdWFsT3BlcmF0b3IgPSB7IHZhbHVlOiAnZ3JlYXRlcnRoYW5vcmVxdWFsJywga2V5OiAnR3JlYXRlciBUaGFuIE9yIEVxdWFscycgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxlc3N0aGFuT3BlcmF0b3IgPSB7IHZhbHVlOiAnbGVzc3RoYW4nLCBrZXk6ICdMZXNzIFRoYW4nIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsZXNzdGhhbm9yZXF1YWxPcGVyYXRvciA9IHsgdmFsdWU6ICdsZXNzdGhhbm9yZXF1YWwnLCBrZXk6ICdMZXNzIFRoYW4gT3IgRXF1YWxzJyB9O1xyXG5cclxuICBwdWJsaWMgaW5PcGVyYXRvcnM6IHN0cmluZ1tdID0gWydpbicsICdub3RpbiddO1xyXG4gIHB1YmxpYyBkcm9wZG93bk9wZXJhdG9yczogYW55ID0gW1xyXG4gICAgdGhpcy5lcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ub3RlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pbk9wZXJhdG9yLFxyXG4gICAgdGhpcy5ub3Rpbk9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc251bGxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNub3RudWxsT3BlcmF0b3JcclxuICBdO1xyXG4gIHB1YmxpYyBzdHJpbmdPcGVyYXRvcnM6IGFueSA9IFtcclxuICAgIHRoaXMuZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMubm90ZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMuc3RhcnRzd2l0aE9wZXJhdG9yLFxyXG4gICAgdGhpcy5lbmRzd2l0aE9wZXJhdG9yLFxyXG4gICAgdGhpcy5jb250YWluc09wZXJhdG9yLFxyXG4gICAgdGhpcy5pc2VtcHR5T3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbm90ZW1wdHlPcGVyYXRvcixcclxuICAgIHRoaXMuaXNudWxsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbm90bnVsbE9wZXJhdG9yXHJcbiAgXTtcclxuICBwdWJsaWMgaW50ZWdlck9wZXJhdG9yczogYW55ID0gW1xyXG4gICAgdGhpcy5lcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ub3RlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ncmVhdGVydGhhbk9wZXJhdG9yLFxyXG4gICAgdGhpcy5ncmVhdGVydGhhbm9yZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMubGVzc3RoYW5PcGVyYXRvcixcclxuICAgIHRoaXMubGVzc3RoYW5vcmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbnVsbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc25vdG51bGxPcGVyYXRvclxyXG4gIF07XHJcbiAgcHVibGljIGRhdGVPcGVyYXRvcnM6IGFueSA9IFtcclxuICAgIHRoaXMuZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMubm90ZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMuZ3JlYXRlcnRoYW5PcGVyYXRvcixcclxuICAgIHRoaXMuZ3JlYXRlcnRoYW5vcmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmxlc3N0aGFuT3BlcmF0b3IsXHJcbiAgICB0aGlzLmxlc3N0aGFub3JlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc251bGxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNub3RudWxsT3BlcmF0b3JcclxuICBdO1xyXG4gIHB1YmxpYyBib29sZWFuT3BlcmF0b3JzOiBhbnkgPSBbXHJcbiAgICB0aGlzLmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbnVsbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc25vdG51bGxPcGVyYXRvclxyXG4gIF07XHJcblxyXG4gIHB1YmxpYyBzZWxlY3Rpb25Db21wb25lbnRMaXN0ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRQcm9wZXJ0aWVzKHRoaXMpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuXHJcbiAgICBvZih0cnVlKS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoXyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmVmb3JlTG9hZEZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgICAgIH0pLFxyXG4gICAgICB0YXAoZGF0YSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YSBhcyBaRmllbGQ7XHJcbiAgICAgIH0pLFxyXG4gICAgICBzd2l0Y2hNYXAoXyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZFF1ZXJ5QnVpbGRlcigpO1xyXG4gICAgICB9KVxyXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyBXaGVyZSB0byB1cGRhdGUgb3BlcmF0b3Igc3ludGF4XHJcbiAgICAgIC8vIDEuIEUxIC0gcXVlcnlCdWlsZGVyVGVtcGxhdGUyXHJcbiAgICAgIC8vIDIuIHNoYXJlZCBmb2xkZXIgPiBoZWxwZXIgPiBxdWVyeWJ1aWxkZXItZmllbGRpbmZvLWhlbHBlci50c1xyXG4gICAgICAvLyAzLiBwYXRjaCBkYiBkYXRhIHdpdGggc21hbGwgY2FwaXRhbCBsZXR0ZXJcclxuXHJcbiAgICAgIC8vdGhpcy5pc3NmTG9hZGVkID0gdHJ1ZTsgIFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRRdWVyeUJ1aWxkZXIoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhWydBbGxvd0NvbGxhcHNlJ10gPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5hbGxvd0NvbGxhcHNlID0gdGhpcy5kYXRhWydBbGxvd0NvbGxhcHNlJ107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YVsnQWxsb3dSdWxlc2V0J10gPT09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dSdWxlc2V0ID0gdGhpcy5kYXRhWydBbGxvd1J1bGVzZXQnXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhWydGaWx0ZXJzJ10pIHtcclxuICAgICAgdGhpcy5maWx0ZXJzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgdGhpcy5kYXRhWydGaWx0ZXJzJ10sXHJcbiAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZFNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29kZSh0aGlzLmRhdGEuVmFsdWUsIFwiRm9ybUZpZWxkXCIsIG51bGwsIG51bGwpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBpc0dyb3VwZWQgPSB0cnVlO1xyXG4gICAgICByZXR1cm4gdGhpcy5maWVsZHMucGlwZShcclxuICAgICAgICB0YXAoKGRhdGE6IFtdKSA9PiB7XHJcblxyXG4gICAgICAgICAgLy8gaWYgW2lzR3JvdXBlZCA9IHRydWVdIGluY2x1ZGUgZ3JvdXBpbmcgbmFtZSBhcyBwcmVmaXhcclxuICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgaXNHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZGF0YS5mb3JFYWNoKGFzeW5jIChmaWVsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50VHlwZShmaWVsZCwgaXNHcm91cGVkKTtcclxuICAgICAgICAgIH0pOy8vZW5kIGZvcmVhY2hcclxuXHJcbiAgICAgICAgICB0aGlzLmlzc2ZMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuXHJcbiAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJlcnJvcjogXCIsIGVycm9yKTtcclxuICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcmVuZGVyQ29tcG9uZW50VHlwZShmaWVsZDogYW55LCBpc0dyb3VwZWQ6IGJvb2xlYW4sIGZpZWxkVGl0bGU/OiBzdHJpbmcpIHtcclxuICAgIGxldCBjb21wb25lbnRMYWJlbCA9IGZpZWxkLlN1YlR5cGUgPyBmaWVsZC5MYWJlbCA6IGZpZWxkLkxhYmVsID8/IGZpZWxkLk5hbWU7XHJcbiAgICBjb21wb25lbnRMYWJlbCA9ICFpc0dyb3VwZWQgJiYgIVpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkoZmllbGRUaXRsZSkgPyBcIltcIiArIGZpZWxkVGl0bGUgKyBcIl0gXCIgKyBmaWVsZC5MYWJlbCA6ICFaQ29tcG9uZW50SGVscGVyLmlzTnVsbFVuZGVmaW5lZEVtcHR5KGZpZWxkLkxhYmVsKSA/IGZpZWxkLkxhYmVsIDogZmllbGQuTmFtZTtcclxuXHJcbiAgICBsZXQgY29tcG9uZW50RmllbGQgPSAhWkNvbXBvbmVudEhlbHBlci5pc051bGxVbmRlZmluZWRFbXB0eShmaWVsZFRpdGxlKSA/IGZpZWxkVGl0bGUgKyBcIl9cIiArIGZpZWxkLlZhbHVlIDogZmllbGQuVmFsdWU7XHJcblxyXG4gICAgaWYgKGZpZWxkLlR5cGUgPT09ICdjYXRlZ29yeScgfHwgZmllbGQuVHlwZSA9PT0gJ211bHRpc2VsZWN0JyB8fCBmaWVsZC5UeXBlID09PSAnenVpc2VsZWN0bXVsdGlwbGUnKSB7XHJcbiAgICAgIHRoaXMuc2RGaWx0ZXIucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGNvbXBvbmVudEZpZWxkLFxyXG4gICAgICAgIGxhYmVsOiBjb21wb25lbnRMYWJlbCxcclxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcclxuICAgICAgICBvcGVyYXRvcnM6IHRoaXMuZHJvcGRvd25PcGVyYXRvcnMsXHJcbiAgICAgICAgdGVtcGxhdGU6IGF3YWl0IHRoaXMuZ2VuZXJhdGVDb2x1bW5TZWxlY3Rpb24oZmllbGQpLFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZmllbGQuVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIHRoaXMuc2RGaWx0ZXIucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGNvbXBvbmVudEZpZWxkLFxyXG4gICAgICAgIGxhYmVsOiBjb21wb25lbnRMYWJlbCxcclxuICAgICAgICBvcGVyYXRvcnM6IHRoaXMuZGF0ZU9wZXJhdG9ycyxcclxuICAgICAgICB0eXBlOiAnZGF0ZSdcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZpZWxkLlR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHRoaXMuc2RGaWx0ZXIucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGNvbXBvbmVudEZpZWxkLFxyXG4gICAgICAgIGxhYmVsOiBjb21wb25lbnRMYWJlbCxcclxuICAgICAgICBvcGVyYXRvcnM6IHRoaXMuaW50ZWdlck9wZXJhdG9ycyxcclxuICAgICAgICB0eXBlOiAnbnVtYmVyJ1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZmllbGQuVmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICB0aGlzLnNkRmlsdGVyLnB1c2goe1xyXG4gICAgICAgIGZpZWxkOiBjb21wb25lbnRGaWVsZCxcclxuICAgICAgICBsYWJlbDogY29tcG9uZW50TGFiZWwsXHJcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5ib29sZWFuT3BlcmF0b3JzLFxyXG4gICAgICAgIHRlbXBsYXRlOiBhd2FpdCB0aGlzLmdlbmVyYXRlQ29sdW1uQ2hlY2tib3goZmllbGQuTmFtZSwgZmFsc2UpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmaWVsZC5UeXBlID09PSAna2NhcmQnKSB7XHJcbiAgICAgIGlmIChmaWVsZC5WYWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZmllbGQuVmFsdWUuZm9yRWFjaChhc3luYyAoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFR5cGUoaXRlbSwgaXNHcm91cGVkLCBmaWVsZC5UaXRsZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2RGaWx0ZXIucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGNvbXBvbmVudEZpZWxkLFxyXG4gICAgICAgIGxhYmVsOiBjb21wb25lbnRMYWJlbCxcclxuICAgICAgICBvcGVyYXRvcnM6IHRoaXMuc3RyaW5nT3BlcmF0b3JzLFxyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gY2hlY2tib3hcclxuICBwcml2YXRlIGdlbmVyYXRlQ29sdW1uQ2hlY2tib3gobGFiZWw6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiBUZW1wbGF0ZUNvbHVtbiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjcmVhdGU6ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGF0dHJzOiB7ICd0eXBlJzogJ2NoZWNrYm94JyB9IH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXN0cm95OiAoYXJnczogeyBlbGVtZW50SWQ6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgICAgKGdldENvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmdzLmVsZW1lbnRJZCksICdjaGVja2JveCcpIGFzIENoZWNrQm94KS5kZXN0cm95KCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHdyaXRlOiAoYXJnczogeyBlbGVtZW50czogRWxlbWVudCwgdmFsdWVzOiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJveE9iajogQ2hlY2tCb3ggPSBuZXcgQ2hlY2tCb3goe1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgY2hlY2tlZDogdmFsdWUsXHJcbiAgICAgICAgICBjaGFuZ2U6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5xcnlCbGRyT2JqLm5vdGlmeUNoYW5nZSh2YWx1ZSwgZS5ldmVudC50YXJnZXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJveE9iai5hcHBlbmRUbygnIycgKyBhcmdzLmVsZW1lbnRzLmlkKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBkcm9wZG93bi9tdWx0aXNlbGVjdFxyXG4gIHByaXZhdGUgZ2VuZXJhdGVDb2x1bW5TZWxlY3Rpb24oZmllbGRFbGVtZW50RGF0YTogYW55KTogVGVtcGxhdGVDb2x1bW4ge1xyXG4gICAgcmV0dXJuIHtcclxuXHJcbiAgICAgIC8vIENyZWF0ZXMgdGhlIGN1c3RvbSBjb21wb25lbnRcclxuICAgICAgY3JlYXRlOiAoKSA9PiB7XHJcbiAgICAgICAgLy8gQWRkaXRpb25hbCBmaWx0ZXIgc2V0IGluIHRoZSBwYWdlXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YVsnRmlsdGVycyddKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVsnRmlsdGVycyddLFxyXG4gICAgICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9yZXR1cm4gY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGF0dHJzOiB7ICd0eXBlJzogJ3RleHQnLCAnc3R5bGUnOiAnZGlzcGxheTogbm9uZScgfSB9KTtcclxuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGF0dHJzOiB7ICd0eXBlJzogJ3RleHQnIH0gfSk7XHJcbiAgICAgIH0sXHJcblxyXG4gICAgICAvLyBEZXN0cm95IHRoZSBjdXN0b20gY29tcG9uZW50XHJcbiAgICAgIGRlc3Ryb3k6IChhcmdzOiB7IGVsZW1lbnRJZDogc3RyaW5nIH0pID0+IHtcclxuICAgICAgICBpZiAoYXJnc1snZWxlbWVudHMnXSkge1xyXG4gICAgICAgICAgbGV0IG11bHRpU2VsZWN0OiBNdWx0aVNlbGVjdCA9IChnZXRDb21wb25lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJncy5lbGVtZW50SWQpLCAnbXVsdGlzZWxlY3QnKSBhcyBNdWx0aVNlbGVjdCk7XHJcbiAgICAgICAgICBpZiAobXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgbXVsdGlTZWxlY3QuZGVzdHJveSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRyb3Bkb3duOiBEcm9wRG93bkxpc3QgPSAoZ2V0Q29tcG9uZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFyZ3MuZWxlbWVudElkKSwgJ2Ryb3Bkb3dubGlzdCcpIGFzIERyb3BEb3duTGlzdCk7XHJcbiAgICAgICAgICBpZiAoZHJvcGRvd24pIHtcclxuICAgICAgICAgICAgZHJvcGRvd24uZGVzdHJveSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBmaWVsZEVsZW1lbnREYXRhWydTZWxlY3RPcHRpb25zJ107XHJcbiAgICAgICAgICBpZiAoc2VsZWN0T3B0aW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgPSBzZWxlY3RPcHRpb25zWydSZXNvdXJjZVVSTCddO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nID0gc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMICsgJ18nICsgYXJncy5lbGVtZW50SWQ7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5sb2FkZWREcm9wZG93bk9wdGlvbnMuaW5jbHVkZXMocHJlZml4UmVzb3VyY2VVUkxDaGVja2luZykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRlZERyb3Bkb3duT3B0aW9ucyA9IHRoaXMucmVtb3ZlQXJyYXlJdGVtKHRoaXMubG9hZGVkRHJvcGRvd25PcHRpb25zLCBwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuXHJcbiAgICAgIC8vIFdpcmUgZXZlbnRzIGZvciB0aGUgY3VzdG9tIGNvbXBvbmVudC5cclxuICAgICAgd3JpdGU6IChhcmdzOiB7IGVsZW1lbnRzOiBFbGVtZW50LCB2YWx1ZXM6IHN0cmluZ1tdIHwgc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nIH0pID0+IHtcclxuICAgICAgICAvL29yaWdpblxyXG4gICAgICAgIGlmIChmaWVsZEVsZW1lbnREYXRhWydWYWx1ZU9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgLy8gY29udmVydCB0byBwcm9wZXJ0eSBuYW1lIHVzZWQgaW4gdGhlIGNvbXBvbmVudCByZW5kZXJpbmdcclxuICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3Q6IHsgW25hbWU6IHN0cmluZ106IE9iamVjdCB9W10gPSBbXTtcclxuICAgICAgICAgIGZpZWxkRWxlbWVudERhdGFbJ1ZhbHVlT3B0aW9ucyddLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIHRleHQ6IGl0ZW1bJ05hbWUnXSxcclxuICAgICAgICAgICAgICB2YWx1ZTogaXRlbVsnVmFsdWUnXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29tcG9uZW50ID0gdGhpcy5nZW5lcmF0ZVNlbGVjdGlvbkNvbXBvbmVudChhcmdzLCBvcHRpb25MaXN0KTtcclxuICAgICAgICAgIHNlbGVjdGlvbkNvbXBvbmVudC5hcHBlbmRUbygnIycgKyBhcmdzLmVsZW1lbnRzLmlkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG1hbnVhbCBkcm9wZG93biBvciB6dWRmIG1hbnVhbCBkcm9wZG93blxyXG4gICAgICAgIGVsc2UgaWYgKGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXSAmJiBBcnJheS5pc0FycmF5KGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXSkpIHtcclxuICAgICAgICAgIC8vIGNvbnZlcnQgdG8gcHJvcGVydHkgbmFtZSB1c2VkIGluIHRoZSBjb21wb25lbnQgcmVuZGVyaW5nXHJcbiAgICAgICAgICBjb25zdCBvcHRpb25MaXN0OiB7IFtuYW1lOiBzdHJpbmddOiBPYmplY3QgfVtdID0gW107XHJcbiAgICAgICAgICBmaWVsZEVsZW1lbnREYXRhWydTZWxlY3RPcHRpb25zJ10uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogaXRlbVsndGV4dCddLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtWyd2YWx1ZSddXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb25Db21wb25lbnQgPSB0aGlzLmdlbmVyYXRlU2VsZWN0aW9uQ29tcG9uZW50KGFyZ3MsIG9wdGlvbkxpc3QpO1xyXG4gICAgICAgICAgc2VsZWN0aW9uQ29tcG9uZW50LmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8genVkZiBSZXNvdXJjZVVSTCAvIENvbW1vbiBNYXN0ZXIgZHJvcGRvd25cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBmaWVsZEVsZW1lbnREYXRhWydTZWxlY3RPcHRpb25zJ107XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgPSBzZWxlY3RPcHRpb25zWydSZXNvdXJjZVVSTCddO1xyXG5cclxuICAgICAgICAgIC8vIFJlc291cmNlVVJMIGRyb3Bkb3duXHJcbiAgICAgICAgICBpZiAoc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeFJlc291cmNlVVJMQ2hlY2tpbmcgPSBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgKyAnXycgKyBhcmdzLmVsZW1lbnRzLmlkO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxvYWRlZERyb3Bkb3duT3B0aW9ucy5pbmNsdWRlcyhwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGVkRHJvcGRvd25PcHRpb25zLnB1c2gocHJlZml4UmVzb3VyY2VVUkxDaGVja2luZyk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXSA9IHRoaXMuZmlsdGVycztcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gT2JqZWN0LmFzc2lnbih7fSwgRGVmYXVsdFBhZ2VTZXR0aW5nUGFyYW1zKTtcclxuICAgICAgICAgICAgICBwYXJhbS5wYWdlU2l6ZSA9IHNlbGVjdE9wdGlvbnNbJ1BhZ2VTaXplJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uY29sdW1ucyA9IHNlbGVjdE9wdGlvbnNbJ0NvbHVtbnMnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5maWx0ZXJzICs9IHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5zb3J0Q29sdW1uTmFtZSA9IHNlbGVjdE9wdGlvbnNbJ1NvcnRDb2x1bW5OYW1lJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uc29ydE9yZGVyID0gc2VsZWN0T3B0aW9uc1snU29ydE9yZGVyJ107XHJcblxyXG4gICAgICAgICAgICAgIC8vIE5lZWQgZGVsYXkgNDAwbXMgaWYgbm90IDNyZCBzZWdtZW50ICh2YWx1ZSkgd2lsbCBub3QgYmUgcmVuZGVyZWQuXHJcbiAgICAgICAgICAgICAgdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBQb3N0JCh0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRQYWdlVXJsKHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTCksIHBhcmFtKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgZGVsYXkoNDAwKSxcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25MaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YVNldC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbVtzZWxlY3RPcHRpb25zWydOYW1lJ11dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bc2VsZWN0T3B0aW9uc1snVmFsdWUnXV1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkNvbXBvbmVudCA9IHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJncywgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNvbXBvbmVudC5hcHBlbmRUbygnIycgKyBhcmdzLmVsZW1lbnRzLmlkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vY29uc3QgeHh4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJncy5lbGVtZW50cy5pZCk7XHJcbiAgICAgICAgICAgICAgICAgIC8vLy94eHguYXBwZW5kQ2hpbGQoaW5wdXRFbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgLy94eHguc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyNyZWdpb24gdXNlZCBmb3IgdXBkYXRlU2VsZWN0aW9uT3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLnNlbGVjdGlvbkNvbXBvbmVudExpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmNvbXBvbmVudElkID09PSBhcmdzLmVsZW1lbnRzLmlkXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPYmplY3Qgd2l0aCB0aGUgc2FtZSBjb21wb25lbnRJZCBleGlzdHMsIHJlcGxhY2UgcmVzb3VyY2VVcmxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbXBvbmVudExpc3RbZXhpc3RpbmdJbmRleF0ucmVzb3VyY2VVcmwgPSBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkw7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT2JqZWN0IHdpdGggY29tcG9uZW50SWQgZG9lc24ndCBleGlzdCwgcHVzaCBhIG5ldyBvYmplY3RcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbXBvbmVudExpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVVybDogc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50SWQ6IGFyZ3MuZWxlbWVudHMuaWRcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAvLyNlbmRyZWdpb25cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIHp1ZGYgQ29tbW9uIE1hc3RlciBkcm9wZG93blxyXG4gICAgICAgICAgZWxzZSBpZiAoZmllbGRFbGVtZW50RGF0YS56dWRmRGF0YVNvdXJjZVR5cGUgJiYgZmllbGRFbGVtZW50RGF0YS56dWRmRGF0YVNvdXJjZVR5cGUgPT09IFwicmVzb3VyY2VcIikge1xyXG5cclxuICAgICAgICAgICAgLy8gZXh0cmFjdCB6dWRmX2Ryb3Bkb3duIGZyb20gc2Vzc2lvbiBzdG9yYWdlXHJcbiAgICAgICAgICAgIGNvbnN0IHp1ZGZfZHJvcGRvd24gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwienVkZl9kcm9wZG93blwiKSA/IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInp1ZGZfZHJvcGRvd25cIikpIDogbnVsbDtcclxuICAgICAgICAgICAgaWYgKHp1ZGZfZHJvcGRvd24pIHtcclxuICAgICAgICAgICAgICBjb25zdCBvcHRpb25MaXN0ID0gW107XHJcblxyXG4gICAgICAgICAgICAgIHp1ZGZfZHJvcGRvd24uZm9yRWFjaChyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHJlcy50ZXh0LnNwbGl0KFwiT3B0aW9uc1wiKVswXTtcclxuICAgICAgICAgICAgICAgIGlmIChmaWVsZEVsZW1lbnREYXRhLkxhYmVsID09PSBuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlcy52YWx1ZS5mb3JFYWNoKHZhbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHZhbFsnTmFtZSddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbFsnSWQnXVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkNvbXBvbmVudCA9IHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJncywgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgICAgICAgc2VsZWN0aW9uQ29tcG9uZW50LmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gVXNlciBMaXN0IGRyb3Bkb3duXHJcbiAgICAgICAgICBlbHNlIGlmIChmaWVsZEVsZW1lbnREYXRhLnp1ZGZEYXRhU291cmNlVHlwZSAmJiBmaWVsZEVsZW1lbnREYXRhLnp1ZGZEYXRhU291cmNlVHlwZSA9PT0gXCJ1c2VyXCIpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyTGlzdCA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2U/LmdldEl0ZW0oXCJ1c2VyTGlzdFwiKSA/PyAnbnVsbCcpO1xyXG5cclxuICAgICAgICAgICAgLy9jb25zdCBhcnJheVRlc3QgPSB1c2VyTGlzdC5tYXAoKHsgU2VsZWN0aW9uTmFtZSwgSWQgfSkgPT4gKHsgdGV4dDogU2VsZWN0aW9uTmFtZSwgdmFsdWU6IElkIH0pKTtcclxuICAgICAgICAgICAgdXNlckxpc3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgb3B0aW9uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW1bJ1NlbGVjdGlvbk5hbWUnXSxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtWydJZCddXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25Db21wb25lbnQgPSB0aGlzLmdlbmVyYXRlU2VsZWN0aW9uQ29tcG9uZW50KGFyZ3MsIG9wdGlvbkxpc3QpO1xyXG4gICAgICAgICAgICBzZWxlY3Rpb25Db21wb25lbnQuYXBwZW5kVG8oJyMnICsgYXJncy5lbGVtZW50cy5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9Ly9lbmQgd3JpdGVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3Rpb25PcHRpb24ocmVzb3VyY2VVcmw6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNvbXBvbmVudExpc3QuZm9yRWFjaChzZWxlY3Rpb25Db21wb25lbnQgPT4ge1xyXG4gICAgICBsZXQgbXVsdGlTZWxlY3Q6IE11bHRpU2VsZWN0ID0gKGdldENvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3Rpb25Db21wb25lbnQuY29tcG9uZW50SWQpLCAnbXVsdGlzZWxlY3QnKSBhcyBNdWx0aVNlbGVjdCk7XHJcbiAgICAgIGlmIChtdWx0aVNlbGVjdCkge1xyXG4gICAgICAgIG11bHRpU2VsZWN0LnZhbHVlID0gZGF0YTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgZHJvcGRvd246IERyb3BEb3duTGlzdCA9IChnZXRDb21wb25lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0aW9uQ29tcG9uZW50LmNvbXBvbmVudElkKSwgJ2Ryb3Bkb3dubGlzdCcpIGFzIERyb3BEb3duTGlzdCk7XHJcbiAgICAgIGlmIChkcm9wZG93bikge1xyXG4gICAgICAgIHRoaXMuZmllbGRTZXJ2aWNlLmRhdGFGb3JtRmllbGRzW3RoaXMuZGF0YS5WYWx1ZV0uZm9yRWFjaChhc3luYyAoZmllbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLlNlbGVjdE9wdGlvbnMuUmVzb3VyY2VVUkwgPT09IHNlbGVjdGlvbkNvbXBvbmVudC5yZXNvdXJjZVVybCkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RPcHRpb25zID0gZmllbGRbJ1NlbGVjdE9wdGlvbnMnXTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMID0gc2VsZWN0T3B0aW9uc1snUmVzb3VyY2VVUkwnXTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0UGFnZVNldHRpbmdQYXJhbXMpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVsnRmlsdGVycyddKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKFxyXG4gICAgICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVsnRmlsdGVycyddLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICBzZWxlY3RPcHRpb25zWydGaWx0ZXJzJ10gPSB0aGlzLmZpbHRlcnM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHBhcmFtLnBhZ2VTaXplID0gc2VsZWN0T3B0aW9uc1snUGFnZVNpemUnXTtcclxuICAgICAgICAgICAgcGFyYW0uY29sdW1ucyA9IHNlbGVjdE9wdGlvbnNbJ0NvbHVtbnMnXTtcclxuICAgICAgICAgICAgcGFyYW0uZmlsdGVycyArPSBzZWxlY3RPcHRpb25zWydGaWx0ZXJzJ107XHJcbiAgICAgICAgICAgIHBhcmFtLnNvcnRDb2x1bW5OYW1lID0gc2VsZWN0T3B0aW9uc1snU29ydENvbHVtbk5hbWUnXTtcclxuICAgICAgICAgICAgcGFyYW0uc29ydE9yZGVyID0gc2VsZWN0T3B0aW9uc1snU29ydE9yZGVyJ107XHJcblxyXG4gICAgICAgICAgICB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cFBvc3QkKHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFBhZ2VVcmwoc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMKSwgcGFyYW0pLnBpcGUoXHJcbiAgICAgICAgICAgICAgbWFwKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25MaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgICByZXNwLmRhdGFTZXQuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbVtzZWxlY3RPcHRpb25zWydOYW1lJ11dLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtW3NlbGVjdE9wdGlvbnNbJ1ZhbHVlJ11dXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICBkcm9wZG93bi5kYXRhU291cmNlID0gb3B0aW9uTGlzdDtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVBcnJheUl0ZW08VD4oYXJyOiBBcnJheTxUPiwgdmFsdWU6IFQpOiBBcnJheTxUPiB7XHJcbiAgICBjb25zdCBpbmRleCA9IGFyci5pbmRleE9mKHZhbHVlKTtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFycjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJnczogYW55LCBvcHRpb25MaXN0OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmluT3BlcmF0b3JzLmluZGV4T2YoYXJncy5vcGVyYXRvcikgPiAtMSkge1xyXG4gICAgICByZXR1cm4gbmV3IE11bHRpU2VsZWN0KHtcclxuICAgICAgICBkYXRhU291cmNlOiBvcHRpb25MaXN0LFxyXG4gICAgICAgIGZpZWxkczogeyB0ZXh0OiAndGV4dCcsIHZhbHVlOiAndmFsdWUnIH0sXHJcbiAgICAgICAgdmFsdWU6IGFyZ3MudmFsdWVzIGFzIHN0cmluZ1tdLFxyXG4gICAgICAgIG1vZGU6ICdDaGVja0JveCcsXHJcbiAgICAgICAgY2hhbmdlOiAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnFyeUJsZHJPYmoubm90aWZ5Q2hhbmdlKGUudmFsdWUsIGUuZWxlbWVudCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBzZXQgY29udGFpbnMgc2VhcmNoIGJ5IGRlZmF1bHRcclxuICAgICAgICBmaWx0ZXJpbmc6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMub25GaWx0ZXJpbmcoZSwgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgfSAgXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRHJvcERvd25MaXN0KHtcclxuICAgICAgICBhbGxvd0ZpbHRlcmluZzogdHJ1ZSwgLy8gc2VhcmNoIGJveCBhcHBlYXJcclxuICAgICAgICBkYXRhU291cmNlOiBvcHRpb25MaXN0LFxyXG4gICAgICAgIGZpZWxkczogeyB0ZXh0OiAndGV4dCcsIHZhbHVlOiAndmFsdWUnIH0sXHJcbiAgICAgICAgdmFsdWU6IGFyZ3MudmFsdWVzIGFzIHN0cmluZyxcclxuICAgICAgICBjaGFuZ2U6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGUudmFsdWUgIT09IG51bGwgPyB0aGlzLnFyeUJsZHJPYmoubm90aWZ5Q2hhbmdlKGUuaXRlbURhdGEudmFsdWUsIGUuZWxlbWVudCkgOiBpZ25vcmVFbGVtZW50cztcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIHNldCBkZWZhdWx0IHNlYXJjaCBieSAnY29udGFpbnMnXHJcbiAgICAgICAgZmlsdGVyaW5nOiAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uRmlsdGVyaW5nKGUsIG9wdGlvbkxpc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBvbkZpbHRlcmluZyhlOiBhbnksIG9wdGlvbkxpc3Q6IGFueSk6IGFueSB7XHJcbiAgICAvLyBsb2FkIG92ZXJhbGwgZGF0YSB3aGVuIHNlYXJjaCBrZXkgZW1wdHkuXHJcbiAgICBpZiAoZS50ZXh0ID09PSAnJykge1xyXG4gICAgICBlLnVwZGF0ZURhdGEodGhpcy5kYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBEZWZpbmUgYXJyYXkgZGF0YVxyXG4gICAgICBsZXQgc2VhcmNoRGF0YSA9IG9wdGlvbkxpc3Q7XHJcblxyXG4gICAgICAvL0JpbmQgdGhlIGZpbHRlciBldmVudFxyXG4gICAgICBsZXQgcXVlcnkgPSBuZXcgUXVlcnkoKTtcclxuXHJcbiAgICAgIC8vZnJhbWUgdGhlIHF1ZXJ5IGJhc2VkIG9uIHNlYXJjaCBzdHJpbmcgd2l0aCBmaWx0ZXIgdHlwZS5cclxuICAgICAgcXVlcnkgPSAoZS50ZXh0ICE9IFwiXCIpID8gcXVlcnkud2hlcmUoXCJ0ZXh0XCIsIFwiY29udGFpbnNcIiwgZS50ZXh0LCB0cnVlKSA6IHF1ZXJ5O1xyXG5cclxuICAgICAgLy9wYXNzIHRoZSBmaWx0ZXIgZGF0YSBzb3VyY2UsIGZpbHRlciBxdWVyeSB0byB1cGRhdGVEYXRhIG1ldGhvZC5cclxuICAgICAgZS51cGRhdGVEYXRhKHNlYXJjaERhdGEsIHF1ZXJ5KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwdWJsaWMgc2V0UXVlcnlWYWx1ZShzYXZlZERhdGE6IGFueSkge1xyXG4gICAgLy9pZiAoIXRoaXMucXJ5Qmxkck9iaikge1xyXG4gICAgLy8gIGNvbnNvbGUud2FybigncXVlcnkgYnVpbGRlciBvYmplY3QgaXMgbnVsbC4nKTtcclxuICAgIC8vICByZXR1cm47XHJcbiAgICAvL31cclxuXHJcbiAgICBpZiAoc2F2ZWREYXRhKSB7XHJcbiAgICAgIHRoaXMucXJ5Qmxkck9iai5zZXRSdWxlcyhzYXZlZERhdGEpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVJ1bGUoeyBydWxlOiBzYXZlZERhdGEgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UmVzdWx0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucXJ5Qmxkck9iai5nZXRSdWxlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVJ1bGUoYXJnczogUnVsZUNoYW5nZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNwbGF5UnVsZSA9IEpTT04uc3RyaW5naWZ5KGFyZ3MucnVsZSwgbnVsbCwgMTIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVSdWxlKHsgcnVsZTogdGhpcy5xcnlCbGRyT2JqLmdldFZhbGlkUnVsZXModGhpcy5xcnlCbGRyT2JqLnJ1bGUpIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJlZm9yZUxvYWRGaWVsZChmaWVsZEVsZW1lbnREYXRhOiBhbnkpIHtcclxuICAgIGxldCBiZWZvcmVMb2FkRmllbGQgPSBmaWVsZEVsZW1lbnREYXRhWydCZWZvcmVMb2FkRmllbGQnXTtcclxuICAgIGlmIChiZWZvcmVMb2FkRmllbGQpIHtcclxuICAgICAgYmVmb3JlTG9hZEZpZWxkID0gYmVmb3JlTG9hZEZpZWxkLnJlcGxhY2UoJ21vZGFsR3JvdXAuJywgJ2dyb3VwLicpO1xyXG4gICAgICBjb25zdCBjYWxsRnVuYyA9IGV2YWwoJ3RoaXMuJyArIGJlZm9yZUxvYWRGaWVsZCk7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIGNhbGxGdW5jID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZCh0aGlzKTtcclxuICAgICAgICByZXR1cm4gbmV3RnVuYyhldmVudCwgdGhpcywgZmllbGRFbGVtZW50RGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvZihmaWVsZEVsZW1lbnREYXRhKTtcclxuICB9XHJcbn1cclxuXHJcbi8vZXhwb3J0IGVudW0gb3BlcmF0b3JzIHtcclxuLy8gIEluID0gJ2luJyxcclxuLy99XHJcblxyXG5cclxuLy9leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UnVsZSB7XHJcbi8vICBjb25kaXRpb246IHN0cmluZztcclxuLy8gIHJ1bGVzOiBRdWVyeVJ1bGVbXTtcclxuLy8gIGZpZWxkOiBzdHJpbmc7XHJcbi8vICB0eXBlOiBzdHJpbmc7XHJcbi8vICBvcGVyYXRvcjogc3RyaW5nO1xyXG4vLyAgdmFsdWU6IHN0cmluZ1tdO1xyXG4vL31cclxuXHJcbi8vZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlSdWxlKHF1ZXJ5QnVpbGRlck1vZGVsOiBhbnkpOiBRdWVyeVJ1bGUge1xyXG4vLyAgbGV0IHJ1bGUgPSA8UXVlcnlSdWxlPnt9O1xyXG4vLyAgaWYgKHF1ZXJ5QnVpbGRlck1vZGVsLmNvbmRpdGlvbikge1xyXG4vLyAgICBydWxlLmNvbmRpdGlvbiA9IHF1ZXJ5QnVpbGRlck1vZGVsLmNvbmRpdGlvbjtcclxuLy8gICAgcnVsZS5ydWxlcyA9IHF1ZXJ5QnVpbGRlck1vZGVsLnJ1bGVzLm1hcChxID0+IHRvUXVlcnlSdWxlKHEpKTtcclxuLy8gIH1cclxuLy8gIGVsc2Uge1xyXG4vLyAgICBydWxlLmZpZWxkID0gcXVlcnlCdWlsZGVyTW9kZWwuZmllbGQ7XHJcbi8vICAgIHJ1bGUudHlwZSA9ICdzdHJpbmcnO1xyXG4vLyAgICBydWxlLm9wZXJhdG9yID0gJ2VxdWFsJztcclxuLy8gICAgcnVsZS52YWx1ZSA9IHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlIGluc3RhbmNlb2YgQXJyYXlcclxuLy8gICAgICA/IHF1ZXJ5QnVpbGRlck1vZGVsLnR5cGUgPT09ICdkYXRlJyA/IG5ldyBEYXRlKHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlKSA6IHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlXHJcbi8vICAgICAgOiBbcXVlcnlCdWlsZGVyTW9kZWwudHlwZSA9PT0gJ2RhdGUnID8gbmV3IERhdGUocXVlcnlCdWlsZGVyTW9kZWwudmFsdWUpIDogcXVlcnlCdWlsZGVyTW9kZWwudmFsdWVdO1xyXG4vLyAgfVxyXG4vLyAgcmV0dXJuIHJ1bGU7XHJcbi8vfVxyXG4iLCI8aW9uLWl0ZW0gKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIj5cclxuICA8ZGl2IGNsYXNzPVwicWJjb250YWluZXJcIj5cclxuICAgIDxlanMtcXVlcnlidWlsZGVyICpuZ0lmPVwiaXNzZkxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAjcXVlcnlidWlsZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwic2ZEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cInNkRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtydWxlXT1cImltcG9ydFJ1bGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChydWxlQ2hhbmdlKT1cInVwZGF0ZVJ1bGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY3JlYXRlZCk9XCJvbkNoYW5nZSgpXCI+XHJcbiAgICA8L2Vqcy1xdWVyeWJ1aWxkZXI+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFkYXRhLkhpZGVTaG93UmVzdWx0UGFuZWxcIj5cclxuICAgICAgPGJyPlxyXG4gICAgICA8aW9uLWxhYmVsPlJlc3VsdDwvaW9uLWxhYmVsPlxyXG4gICAgICA8dGV4dGFyZWEgY2xhc3M9XCJvdXRwdXRcIlxyXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICBbcm93c109XCIxMFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNkM2QzZDM7IHdpZHRoOiAxMDAlO1wiPnt7ZGlzcGxheVJ1bGV9fTwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9pb24taXRlbT5cclxuIl19
|
|
516
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2ZxdWVyeWJ1aWxkZXIvc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2ZxdWVyeWJ1aWxkZXIvc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFHdEYsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNTLGdCQUFnQixFQUFFLG9CQUFvQixFQUNoQyx3QkFBd0IsRUFDN0MsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQWUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVExRCxNQUFNLE9BQU8sdUJBQXVCO0lBa0dsQyxZQUNVLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxhQUE0QjtRQUY1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztR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c291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWxheSwgaWdub3JlRWxlbWVudHMsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbi8vaW1wb3J0IHsgUXVlcnlCdWlsZGVyQ29uZmlnLCBRdWVyeUJ1aWxkZXJDbGFzc05hbWVzIH0gZnJvbSAnYW5ndWxhcjItcXVlcnktYnVpbGRlcic7XHJcbmltcG9ydCB7IFJ1bGVNb2RlbCwgUXVlcnlCdWlsZGVyQ29tcG9uZW50LCBDb2x1bW5zTW9kZWwsIFRlbXBsYXRlQ29sdW1uLCBSdWxlQ2hhbmdlRXZlbnRBcmdzIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItcXVlcnlidWlsZGVyJztcclxuaW1wb3J0IHsgRHJvcERvd25MaXN0LCBNdWx0aVNlbGVjdCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1kcm9wZG93bnMnO1xyXG5pbXBvcnQgeyBnZXRDb21wb25lbnQsIGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYmFzZSc7XHJcbmltcG9ydCB7IENoZWNrQm94IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWJ1dHRvbnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIEZpZWxkU2VydmljZSwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFpGaWVsZCwgWkdyb3VwLFxyXG4gIEZvbnRBd2VTb21lU2VydmljZSwgRGVmYXVsdFBhZ2VTZXR0aW5nUGFyYW1zLCBXZWJBcGlTZXJ2aWNlLCBSZXNvdXJjZUFwaVNlcnZpY2VcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuaW1wb3J0IHsgRGF0YU1hbmFnZXIsIFF1ZXJ5IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWRhdGEnO1xyXG5kZWNsYXJlIHZhciAkOiBhbnlcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNmcXVlcnlidWlsZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NmcXVlcnlidWlsZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZnF1ZXJ5YnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgncXVlcnlidWlsZGVyJykgcXJ5Qmxkck9iajogUXVlcnlCdWlsZGVyQ29tcG9uZW50O1xyXG4gIC8vQElucHV0KCkgY2xhc3NOYW1lczogUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcztcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIHFiSXRlbXMgPSB7fTtcclxuXHJcbiAgcHVibGljIGNvbXBvbmVudFByb3BlcnRpZXMgPSBuZXcgWkNvbXBvbmVudFByb3BlcnRpZXMoKTtcclxuICBwdWJsaWMgaXNzZkxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBxdWVyeUN0cmw6IGFueTtcclxuICAvL3B1YmxpYyBjdXJyZW50Q29uZmlnOiBRdWVyeUJ1aWxkZXJDb25maWcgPSB7XHJcbiAgLy8gIGZpZWxkczoge30sXHJcbiAgLy8gIGFsbG93RW1wdHlSdWxlc2V0czogdHJ1ZVxyXG4gIC8vfTtcclxuICBwdWJsaWMgYWxsb3dSdWxlc2V0OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgYWxsb3dDb2xsYXBzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcnVsZTogYW55O1xyXG4gIHB1YmxpYyBmaWx0ZXJzOiBhbnk7XHJcbiAgcHJpdmF0ZSBmaWVsZHM6IGFueTtcclxuICBwdWJsaWMgZGlzcGxheVJ1bGU6IGFueSA9ICcnO1xyXG5cclxuICBwcml2YXRlIGxvYWRlZERyb3Bkb3duT3B0aW9ucyA9IFtdO1xyXG5cclxuICAvL3NmXHJcbiAgcHVibGljIHNmRGF0YTogT2JqZWN0W107XHJcbiAgcHVibGljIGltcG9ydFJ1bGVzOiBSdWxlTW9kZWw7XHJcbiAgcHVibGljIHNkRmlsdGVyOiBDb2x1bW5zTW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZlFCVGVtcGxhdGU6IFRlbXBsYXRlQ29sdW1uO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGVxdWFsT3BlcmF0b3IgPSB7IHZhbHVlOiAnZXF1YWwnLCBrZXk6ICdFcXVhbHMnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBub3RlcXVhbE9wZXJhdG9yID0geyB2YWx1ZTogJ25vdGVxdWFsJywga2V5OiAnTm90IEVxdWFscycgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0c3dpdGhPcGVyYXRvciA9IHsgdmFsdWU6ICdzdGFydHN3aXRoJywga2V5OiAnU3RhcnQgV2l0aCcgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVuZHN3aXRoT3BlcmF0b3IgPSB7IHZhbHVlOiAnZW5kc3dpdGgnLCBrZXk6ICdFbmQgV2l0aCcgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhaW5zT3BlcmF0b3IgPSB7IHZhbHVlOiAnY29udGFpbnMnLCBrZXk6ICdDb250YWlucycgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGlzZW1wdHlPcGVyYXRvciA9IHsgdmFsdWU6ICdpc2VtcHR5Jywga2V5OiAnSXMgRW1wdHknIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc25vdGVtcHR5T3BlcmF0b3IgPSB7IHZhbHVlOiAnaXNub3RlbXB0eScsIGtleTogJ0lzIE5vdCBFbXB0eScgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGlzbnVsbE9wZXJhdG9yID0geyB2YWx1ZTogJ2lzbnVsbCcsIGtleTogJ0lzIE51bGwnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc25vdG51bGxPcGVyYXRvciA9IHsgdmFsdWU6ICdpc25vdG51bGwnLCBrZXk6ICdJcyBOb3QgTnVsbCcgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGluT3BlcmF0b3IgPSB7IHZhbHVlOiAnaW4nLCBrZXk6ICdJbicgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IG5vdGluT3BlcmF0b3IgPSB7IHZhbHVlOiAnbm90aW4nLCBrZXk6ICdOb3QgSW4nIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IGdyZWF0ZXJ0aGFuT3BlcmF0b3IgPSB7IHZhbHVlOiAnZ3JlYXRlcnRoYW4nLCBrZXk6ICdHcmVhdGVyIFRoYW4nIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBncmVhdGVydGhhbm9yZXF1YWxPcGVyYXRvciA9IHsgdmFsdWU6ICdncmVhdGVydGhhbm9yZXF1YWwnLCBrZXk6ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWxzJyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGVzc3RoYW5PcGVyYXRvciA9IHsgdmFsdWU6ICdsZXNzdGhhbicsIGtleTogJ0xlc3MgVGhhbicgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxlc3N0aGFub3JlcXVhbE9wZXJhdG9yID0geyB2YWx1ZTogJ2xlc3N0aGFub3JlcXVhbCcsIGtleTogJ0xlc3MgVGhhbiBPciBFcXVhbHMnIH07XHJcblxyXG4gIHB1YmxpYyBpbk9wZXJhdG9yczogc3RyaW5nW10gPSBbJ2luJywgJ25vdGluJ107XHJcbiAgcHVibGljIGRyb3Bkb3duT3BlcmF0b3JzOiBhbnkgPSBbXHJcbiAgICB0aGlzLmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmluT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGluT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbnVsbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc25vdG51bGxPcGVyYXRvclxyXG4gIF07XHJcbiAgcHVibGljIHN0cmluZ09wZXJhdG9yczogYW55ID0gW1xyXG4gICAgdGhpcy5lcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ub3RlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5zdGFydHN3aXRoT3BlcmF0b3IsXHJcbiAgICB0aGlzLmVuZHN3aXRoT3BlcmF0b3IsXHJcbiAgICB0aGlzLmNvbnRhaW5zT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzZW1wdHlPcGVyYXRvcixcclxuICAgIHRoaXMuaXNub3RlbXB0eU9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc251bGxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNub3RudWxsT3BlcmF0b3JcclxuICBdO1xyXG4gIHB1YmxpYyBpbnRlZ2VyT3BlcmF0b3JzOiBhbnkgPSBbXHJcbiAgICB0aGlzLmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmdyZWF0ZXJ0aGFuT3BlcmF0b3IsXHJcbiAgICB0aGlzLmdyZWF0ZXJ0aGFub3JlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5sZXNzdGhhbk9wZXJhdG9yLFxyXG4gICAgdGhpcy5sZXNzdGhhbm9yZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNudWxsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbm90bnVsbE9wZXJhdG9yXHJcbiAgXTtcclxuICBwdWJsaWMgZGF0ZU9wZXJhdG9yczogYW55ID0gW1xyXG4gICAgdGhpcy5lcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ub3RlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ncmVhdGVydGhhbk9wZXJhdG9yLFxyXG4gICAgdGhpcy5ncmVhdGVydGhhbm9yZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMubGVzc3RoYW5PcGVyYXRvcixcclxuICAgIHRoaXMubGVzc3RoYW5vcmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbnVsbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc25vdG51bGxPcGVyYXRvclxyXG4gIF07XHJcbiAgcHVibGljIGJvb2xlYW5PcGVyYXRvcnM6IGFueSA9IFtcclxuICAgIHRoaXMuZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMubm90ZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNudWxsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbm90bnVsbE9wZXJhdG9yXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIHNlbGVjdGlvbkNvbXBvbmVudExpc3QgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZpZWxkU2VydmljZTogRmllbGRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG5cclxuICAgIG9mKHRydWUpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChfID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iZWZvcmVMb2FkRmllbGQodGhpcy5kYXRhKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcChkYXRhID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhIGFzIFpGaWVsZDtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcChfID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkUXVlcnlCdWlsZGVyKCk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIFdoZXJlIHRvIHVwZGF0ZSBvcGVyYXRvciBzeW50YXhcclxuICAgICAgLy8gMS4gRTEgLSBxdWVyeUJ1aWxkZXJUZW1wbGF0ZTJcclxuICAgICAgLy8gMi4gc2hhcmVkIGZvbGRlciA+IGhlbHBlciA+IHF1ZXJ5YnVpbGRlci1maWVsZGluZm8taGVscGVyLnRzXHJcbiAgICAgIC8vIDMuIHBhdGNoIGRiIGRhdGEgd2l0aCBzbWFsbCBjYXBpdGFsIGxldHRlclxyXG5cclxuICAgICAgLy90aGlzLmlzc2ZMb2FkZWQgPSB0cnVlOyAgXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFF1ZXJ5QnVpbGRlcigpIHtcclxuICAgIGlmICh0aGlzLmRhdGFbJ0FsbG93Q29sbGFwc2UnXSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmFsbG93Q29sbGFwc2UgPSB0aGlzLmRhdGFbJ0FsbG93Q29sbGFwc2UnXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhWydBbGxvd1J1bGVzZXQnXSA9PT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5hbGxvd1J1bGVzZXQgPSB0aGlzLmRhdGFbJ0FsbG93UnVsZXNldCddO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFbJ0ZpbHRlcnMnXSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICB0aGlzLmRhdGFbJ0ZpbHRlcnMnXSxcclxuICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLmZpZWxkU2VydmljZS5nZXRGb3JtRmllbGRDb2RlKHRoaXMuZGF0YS5WYWx1ZSwgXCJGb3JtRmllbGRcIiwgbnVsbCwgbnVsbCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGlzR3JvdXBlZCA9IHRydWU7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpZWxkcy5waXBlKFxyXG4gICAgICAgIHRhcCgoZGF0YTogW10pID0+IHtcclxuXHJcbiAgICAgICAgICAvLyBpZiBbaXNHcm91cGVkID0gdHJ1ZV0gaW5jbHVkZSBncm91cGluZyBuYW1lIGFzIHByZWZpeFxyXG4gICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBpc0dyb3VwZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBkYXRhLmZvckVhY2goYXN5bmMgKGZpZWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRUeXBlKGZpZWxkLCBpc0dyb3VwZWQpO1xyXG4gICAgICAgICAgfSk7Ly9lbmQgZm9yZWFjaFxyXG5cclxuICAgICAgICAgIHRoaXMuaXNzZkxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImVycm9yOiBcIiwgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZW5kZXJDb21wb25lbnRUeXBlKGZpZWxkOiBhbnksIGlzR3JvdXBlZDogYm9vbGVhbiwgZmllbGRUaXRsZT86IHN0cmluZykge1xyXG4gICAgbGV0IGNvbXBvbmVudExhYmVsID0gZmllbGQuU3ViVHlwZSA/IGZpZWxkLkxhYmVsIDogZmllbGQuTGFiZWwgPz8gZmllbGQuTmFtZTtcclxuICAgIGNvbXBvbmVudExhYmVsID0gIWlzR3JvdXBlZCAmJiAhWkNvbXBvbmVudEhlbHBlci5pc051bGxVbmRlZmluZWRFbXB0eShmaWVsZFRpdGxlKSA/IFwiW1wiICsgZmllbGRUaXRsZSArIFwiXSBcIiArIGZpZWxkLkxhYmVsIDogIVpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkoZmllbGQuTGFiZWwpID8gZmllbGQuTGFiZWwgOiBmaWVsZC5OYW1lO1xyXG5cclxuICAgIGxldCBjb21wb25lbnRGaWVsZCA9ICFaQ29tcG9uZW50SGVscGVyLmlzTnVsbFVuZGVmaW5lZEVtcHR5KGZpZWxkVGl0bGUpID8gZmllbGRUaXRsZSArIFwiX1wiICsgZmllbGQuVmFsdWUgOiBmaWVsZC5WYWx1ZTtcclxuXHJcbiAgICBpZiAoZmllbGQuVHlwZSA9PT0gJ2NhdGVnb3J5JyB8fCBmaWVsZC5UeXBlID09PSAnbXVsdGlzZWxlY3QnIHx8IGZpZWxkLlR5cGUgPT09ICd6dWlzZWxlY3RtdWx0aXBsZScpIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5kcm9wZG93bk9wZXJhdG9ycyxcclxuICAgICAgICB0ZW1wbGF0ZTogYXdhaXQgdGhpcy5nZW5lcmF0ZUNvbHVtblNlbGVjdGlvbihmaWVsZCksXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmaWVsZC5UeXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5kYXRlT3BlcmF0b3JzLFxyXG4gICAgICAgIHR5cGU6ICdkYXRlJ1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZmllbGQuVHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5pbnRlZ2VyT3BlcmF0b3JzLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmaWVsZC5WYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHRoaXMuc2RGaWx0ZXIucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGNvbXBvbmVudEZpZWxkLFxyXG4gICAgICAgIGxhYmVsOiBjb21wb25lbnRMYWJlbCxcclxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgb3BlcmF0b3JzOiB0aGlzLmJvb2xlYW5PcGVyYXRvcnMsXHJcbiAgICAgICAgdGVtcGxhdGU6IGF3YWl0IHRoaXMuZ2VuZXJhdGVDb2x1bW5DaGVja2JveChmaWVsZC5OYW1lLCBmYWxzZSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZpZWxkLlR5cGUgPT09ICdrY2FyZCcpIHtcclxuICAgICAgaWYgKGZpZWxkLlZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmaWVsZC5WYWx1ZS5mb3JFYWNoKGFzeW5jIChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50VHlwZShpdGVtLCBpc0dyb3VwZWQsIGZpZWxkLlRpdGxlKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5zdHJpbmdPcGVyYXRvcnMsXHJcbiAgICAgICAgdHlwZTogJ3N0cmluZydcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNkRmlsdGVyLnNvcnQoKGEsIGIpID0+IGEubGFiZWwudG9Mb3dlckNhc2UoKSA8IGIubGFiZWwudG9Mb3dlckNhc2UoKSA/IC0xIDogMSk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gY2hlY2tib3hcclxuICBwcml2YXRlIGdlbmVyYXRlQ29sdW1uQ2hlY2tib3gobGFiZWw6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiBUZW1wbGF0ZUNvbHVtbiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjcmVhdGU6ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGF0dHJzOiB7ICd0eXBlJzogJ2NoZWNrYm94JyB9IH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBkZXN0cm95OiAoYXJnczogeyBlbGVtZW50SWQ6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgICAgKGdldENvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmdzLmVsZW1lbnRJZCksICdjaGVja2JveCcpIGFzIENoZWNrQm94KS5kZXN0cm95KCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHdyaXRlOiAoYXJnczogeyBlbGVtZW50czogRWxlbWVudCwgdmFsdWVzOiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJveE9iajogQ2hlY2tCb3ggPSBuZXcgQ2hlY2tCb3goe1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgY2hlY2tlZDogdmFsdWUsXHJcbiAgICAgICAgICBjaGFuZ2U6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5xcnlCbGRyT2JqLm5vdGlmeUNoYW5nZSh2YWx1ZSwgZS5ldmVudC50YXJnZXQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJveE9iai5hcHBlbmRUbygnIycgKyBhcmdzLmVsZW1lbnRzLmlkKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBkcm9wZG93bi9tdWx0aXNlbGVjdFxyXG4gIHByaXZhdGUgZ2VuZXJhdGVDb2x1bW5TZWxlY3Rpb24oZmllbGRFbGVtZW50RGF0YTogYW55KTogVGVtcGxhdGVDb2x1bW4ge1xyXG4gICAgcmV0dXJuIHtcclxuXHJcbiAgICAgIC8vIENyZWF0ZXMgdGhlIGN1c3RvbSBjb21wb25lbnRcclxuICAgICAgY3JlYXRlOiAoKSA9PiB7XHJcbiAgICAgICAgLy8gQWRkaXRpb25hbCBmaWx0ZXIgc2V0IGluIHRoZSBwYWdlXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YVsnRmlsdGVycyddKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVsnRmlsdGVycyddLFxyXG4gICAgICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9yZXR1cm4gY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGF0dHJzOiB7ICd0eXBlJzogJ3RleHQnLCAnc3R5bGUnOiAnZGlzcGxheTogbm9uZScgfSB9KTtcclxuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGF0dHJzOiB7ICd0eXBlJzogJ3RleHQnIH0gfSk7XHJcbiAgICAgIH0sXHJcblxyXG4gICAgICAvLyBEZXN0cm95IHRoZSBjdXN0b20gY29tcG9uZW50XHJcbiAgICAgIGRlc3Ryb3k6IChhcmdzOiB7IGVsZW1lbnRJZDogc3RyaW5nIH0pID0+IHtcclxuICAgICAgICBpZiAoYXJnc1snZWxlbWVudHMnXSkge1xyXG4gICAgICAgICAgbGV0IG11bHRpU2VsZWN0OiBNdWx0aVNlbGVjdCA9IChnZXRDb21wb25lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJncy5lbGVtZW50SWQpLCAnbXVsdGlzZWxlY3QnKSBhcyBNdWx0aVNlbGVjdCk7XHJcbiAgICAgICAgICBpZiAobXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgbXVsdGlTZWxlY3QuZGVzdHJveSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRyb3Bkb3duOiBEcm9wRG93bkxpc3QgPSAoZ2V0Q29tcG9uZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFyZ3MuZWxlbWVudElkKSwgJ2Ryb3Bkb3dubGlzdCcpIGFzIERyb3BEb3duTGlzdCk7XHJcbiAgICAgICAgICBpZiAoZHJvcGRvd24pIHtcclxuICAgICAgICAgICAgZHJvcGRvd24uZGVzdHJveSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBmaWVsZEVsZW1lbnREYXRhWydTZWxlY3RPcHRpb25zJ107XHJcbiAgICAgICAgICBpZiAoc2VsZWN0T3B0aW9ucykge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgPSBzZWxlY3RPcHRpb25zWydSZXNvdXJjZVVSTCddO1xyXG4gICAgICAgICAgICBjb25zdCBwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nID0gc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMICsgJ18nICsgYXJncy5lbGVtZW50SWQ7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5sb2FkZWREcm9wZG93bk9wdGlvbnMuaW5jbHVkZXMocHJlZml4UmVzb3VyY2VVUkxDaGVja2luZykpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRlZERyb3Bkb3duT3B0aW9ucyA9IHRoaXMucmVtb3ZlQXJyYXlJdGVtKHRoaXMubG9hZGVkRHJvcGRvd25PcHRpb25zLCBwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuXHJcbiAgICAgIC8vIFdpcmUgZXZlbnRzIGZvciB0aGUgY3VzdG9tIGNvbXBvbmVudC5cclxuICAgICAgd3JpdGU6IChhcmdzOiB7IGVsZW1lbnRzOiBFbGVtZW50LCB2YWx1ZXM6IHN0cmluZ1tdIHwgc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nIH0pID0+IHtcclxuICAgICAgICAvL29yaWdpblxyXG4gICAgICAgIGlmIChmaWVsZEVsZW1lbnREYXRhWydWYWx1ZU9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgLy8gY29udmVydCB0byBwcm9wZXJ0eSBuYW1lIHVzZWQgaW4gdGhlIGNvbXBvbmVudCByZW5kZXJpbmdcclxuICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3Q6IHsgW25hbWU6IHN0cmluZ106IE9iamVjdCB9W10gPSBbXTtcclxuICAgICAgICAgIGZpZWxkRWxlbWVudERhdGFbJ1ZhbHVlT3B0aW9ucyddLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIHRleHQ6IGl0ZW1bJ05hbWUnXSxcclxuICAgICAgICAgICAgICB2YWx1ZTogaXRlbVsnVmFsdWUnXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29tcG9uZW50ID0gdGhpcy5nZW5lcmF0ZVNlbGVjdGlvbkNvbXBvbmVudChhcmdzLCBvcHRpb25MaXN0KTtcclxuICAgICAgICAgIHNlbGVjdGlvbkNvbXBvbmVudC5hcHBlbmRUbygnIycgKyBhcmdzLmVsZW1lbnRzLmlkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG1hbnVhbCBkcm9wZG93biBvciB6dWRmIG1hbnVhbCBkcm9wZG93blxyXG4gICAgICAgIGVsc2UgaWYgKGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXSAmJiBBcnJheS5pc0FycmF5KGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXSkpIHtcclxuICAgICAgICAgIC8vIGNvbnZlcnQgdG8gcHJvcGVydHkgbmFtZSB1c2VkIGluIHRoZSBjb21wb25lbnQgcmVuZGVyaW5nXHJcbiAgICAgICAgICBjb25zdCBvcHRpb25MaXN0OiB7IFtuYW1lOiBzdHJpbmddOiBPYmplY3QgfVtdID0gW107XHJcbiAgICAgICAgICBmaWVsZEVsZW1lbnREYXRhWydTZWxlY3RPcHRpb25zJ10uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogaXRlbVsndGV4dCddLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtWyd2YWx1ZSddXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb25Db21wb25lbnQgPSB0aGlzLmdlbmVyYXRlU2VsZWN0aW9uQ29tcG9uZW50KGFyZ3MsIG9wdGlvbkxpc3QpO1xyXG4gICAgICAgICAgc2VsZWN0aW9uQ29tcG9uZW50LmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8genVkZiBSZXNvdXJjZVVSTCAvIENvbW1vbiBNYXN0ZXIgZHJvcGRvd25cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBmaWVsZEVsZW1lbnREYXRhWydTZWxlY3RPcHRpb25zJ107XHJcbiAgICAgICAgICBjb25zdCBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgPSBzZWxlY3RPcHRpb25zWydSZXNvdXJjZVVSTCddO1xyXG5cclxuICAgICAgICAgIC8vIFJlc291cmNlVVJMIGRyb3Bkb3duXHJcbiAgICAgICAgICBpZiAoc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeFJlc291cmNlVVJMQ2hlY2tpbmcgPSBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgKyAnXycgKyBhcmdzLmVsZW1lbnRzLmlkO1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxvYWRlZERyb3Bkb3duT3B0aW9ucy5pbmNsdWRlcyhwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGVkRHJvcGRvd25PcHRpb25zLnB1c2gocHJlZml4UmVzb3VyY2VVUkxDaGVja2luZyk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgIHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXSA9IHRoaXMuZmlsdGVycztcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtID0gT2JqZWN0LmFzc2lnbih7fSwgRGVmYXVsdFBhZ2VTZXR0aW5nUGFyYW1zKTtcclxuICAgICAgICAgICAgICBwYXJhbS5wYWdlU2l6ZSA9IHNlbGVjdE9wdGlvbnNbJ1BhZ2VTaXplJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uY29sdW1ucyA9IHNlbGVjdE9wdGlvbnNbJ0NvbHVtbnMnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5maWx0ZXJzICs9IHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5zb3J0Q29sdW1uTmFtZSA9IHNlbGVjdE9wdGlvbnNbJ1NvcnRDb2x1bW5OYW1lJ107XHJcbiAgICAgICAgICAgICAgcGFyYW0uc29ydE9yZGVyID0gc2VsZWN0T3B0aW9uc1snU29ydE9yZGVyJ107XHJcblxyXG4gICAgICAgICAgICAgIC8vIE5lZWQgZGVsYXkgNDAwbXMgaWYgbm90IDNyZCBzZWdtZW50ICh2YWx1ZSkgd2lsbCBub3QgYmUgcmVuZGVyZWQuXHJcbiAgICAgICAgICAgICAgdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBQb3N0JCh0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRQYWdlVXJsKHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTCksIHBhcmFtKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgZGVsYXkoNDAwKSxcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25MaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YVNldC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbVtzZWxlY3RPcHRpb25zWydOYW1lJ11dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bc2VsZWN0T3B0aW9uc1snVmFsdWUnXV1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkNvbXBvbmVudCA9IHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJncywgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkNvbXBvbmVudC5hcHBlbmRUbygnIycgKyBhcmdzLmVsZW1lbnRzLmlkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vY29uc3QgeHh4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJncy5lbGVtZW50cy5pZCk7XHJcbiAgICAgICAgICAgICAgICAgIC8vLy94eHguYXBwZW5kQ2hpbGQoaW5wdXRFbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgLy94eHguc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyNyZWdpb24gdXNlZCBmb3IgdXBkYXRlU2VsZWN0aW9uT3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSB0aGlzLnNlbGVjdGlvbkNvbXBvbmVudExpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmNvbXBvbmVudElkID09PSBhcmdzLmVsZW1lbnRzLmlkXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPYmplY3Qgd2l0aCB0aGUgc2FtZSBjb21wb25lbnRJZCBleGlzdHMsIHJlcGxhY2UgcmVzb3VyY2VVcmxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbXBvbmVudExpc3RbZXhpc3RpbmdJbmRleF0ucmVzb3VyY2VVcmwgPSBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkw7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT2JqZWN0IHdpdGggY29tcG9uZW50SWQgZG9lc24ndCBleGlzdCwgcHVzaCBhIG5ldyBvYmplY3RcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbXBvbmVudExpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVVybDogc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50SWQ6IGFyZ3MuZWxlbWVudHMuaWRcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAvLyNlbmRyZWdpb25cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIHp1ZGYgQ29tbW9uIE1hc3RlciBkcm9wZG93blxyXG4gICAgICAgICAgZWxzZSBpZiAoZmllbGRFbGVtZW50RGF0YS56dWRmRGF0YVNvdXJjZVR5cGUgJiYgZmllbGRFbGVtZW50RGF0YS56dWRmRGF0YVNvdXJjZVR5cGUgPT09IFwicmVzb3VyY2VcIikge1xyXG5cclxuICAgICAgICAgICAgLy8gZXh0cmFjdCB6dWRmX2Ryb3Bkb3duIGZyb20gc2Vzc2lvbiBzdG9yYWdlXHJcbiAgICAgICAgICAgIGNvbnN0IHp1ZGZfZHJvcGRvd24gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwienVkZl9kcm9wZG93blwiKSA/IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInp1ZGZfZHJvcGRvd25cIikpIDogbnVsbDtcclxuICAgICAgICAgICAgaWYgKHp1ZGZfZHJvcGRvd24pIHtcclxuICAgICAgICAgICAgICBjb25zdCBvcHRpb25MaXN0ID0gW107XHJcblxyXG4gICAgICAgICAgICAgIHp1ZGZfZHJvcGRvd24uZm9yRWFjaChyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHJlcy50ZXh0LnNwbGl0KFwiT3B0aW9uc1wiKVswXTtcclxuICAgICAgICAgICAgICAgIGlmIChmaWVsZEVsZW1lbnREYXRhLkxhYmVsID09PSBuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlcy52YWx1ZS5mb3JFYWNoKHZhbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHZhbFsnTmFtZSddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbFsnSWQnXVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkNvbXBvbmVudCA9IHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJncywgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgICAgICAgc2VsZWN0aW9uQ29tcG9uZW50LmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gVXNlciBMaXN0IGRyb3Bkb3duXHJcbiAgICAgICAgICBlbHNlIGlmIChmaWVsZEVsZW1lbnREYXRhLnp1ZGZEYXRhU291cmNlVHlwZSAmJiBmaWVsZEVsZW1lbnREYXRhLnp1ZGZEYXRhU291cmNlVHlwZSA9PT0gXCJ1c2VyXCIpIHtcclxuICAgICAgICAgICAgY29uc3Qgb3B0aW9uTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICBjb25zdCB1c2VyTGlzdCA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2U/LmdldEl0ZW0oXCJ1c2VyTGlzdFwiKSA/PyAnbnVsbCcpO1xyXG5cclxuICAgICAgICAgICAgLy9jb25zdCBhcnJheVRlc3QgPSB1c2VyTGlzdC5tYXAoKHsgU2VsZWN0aW9uTmFtZSwgSWQgfSkgPT4gKHsgdGV4dDogU2VsZWN0aW9uTmFtZSwgdmFsdWU6IElkIH0pKTtcclxuICAgICAgICAgICAgdXNlckxpc3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgb3B0aW9uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW1bJ1NlbGVjdGlvbk5hbWUnXSxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtWydJZCddXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb25Db21wb25lbnQgPSB0aGlzLmdlbmVyYXRlU2VsZWN0aW9uQ29tcG9uZW50KGFyZ3MsIG9wdGlvbkxpc3QpO1xyXG4gICAgICAgICAgICBzZWxlY3Rpb25Db21wb25lbnQuYXBwZW5kVG8oJyMnICsgYXJncy5lbGVtZW50cy5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9Ly9lbmQgd3JpdGVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVTZWxlY3Rpb25PcHRpb24ocmVzb3VyY2VVcmw6IHN0cmluZywgZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNvbXBvbmVudExpc3QuZm9yRWFjaChzZWxlY3Rpb25Db21wb25lbnQgPT4ge1xyXG4gICAgICBsZXQgbXVsdGlTZWxlY3Q6IE11bHRpU2VsZWN0ID0gKGdldENvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3Rpb25Db21wb25lbnQuY29tcG9uZW50SWQpLCAnbXVsdGlzZWxlY3QnKSBhcyBNdWx0aVNlbGVjdCk7XHJcbiAgICAgIGlmIChtdWx0aVNlbGVjdCkge1xyXG4gICAgICAgIG11bHRpU2VsZWN0LnZhbHVlID0gZGF0YTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgZHJvcGRvd246IERyb3BEb3duTGlzdCA9IChnZXRDb21wb25lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0aW9uQ29tcG9uZW50LmNvbXBvbmVudElkKSwgJ2Ryb3Bkb3dubGlzdCcpIGFzIERyb3BEb3duTGlzdCk7XHJcbiAgICAgIGlmIChkcm9wZG93bikge1xyXG4gICAgICAgIHRoaXMuZmllbGRTZXJ2aWNlLmRhdGFGb3JtRmllbGRzW3RoaXMuZGF0YS5WYWx1ZV0uZm9yRWFjaChhc3luYyAoZmllbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpZWxkLlNlbGVjdE9wdGlvbnMuUmVzb3VyY2VVUkwgPT09IHNlbGVjdGlvbkNvbXBvbmVudC5yZXNvdXJjZVVybCkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RPcHRpb25zID0gZmllbGRbJ1NlbGVjdE9wdGlvbnMnXTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMID0gc2VsZWN0T3B0aW9uc1snUmVzb3VyY2VVUkwnXTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0UGFnZVNldHRpbmdQYXJhbXMpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVsnRmlsdGVycyddKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKFxyXG4gICAgICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVsnRmlsdGVycyddLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICBzZWxlY3RPcHRpb25zWydGaWx0ZXJzJ10gPSB0aGlzLmZpbHRlcnM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHBhcmFtLnBhZ2VTaXplID0gc2VsZWN0T3B0aW9uc1snUGFnZVNpemUnXTtcclxuICAgICAgICAgICAgcGFyYW0uY29sdW1ucyA9IHNlbGVjdE9wdGlvbnNbJ0NvbHVtbnMnXTtcclxuICAgICAgICAgICAgcGFyYW0uZmlsdGVycyArPSBzZWxlY3RPcHRpb25zWydGaWx0ZXJzJ107XHJcbiAgICAgICAgICAgIHBhcmFtLnNvcnRDb2x1bW5OYW1lID0gc2VsZWN0T3B0aW9uc1snU29ydENvbHVtbk5hbWUnXTtcclxuICAgICAgICAgICAgcGFyYW0uc29ydE9yZGVyID0gc2VsZWN0T3B0aW9uc1snU29ydE9yZGVyJ107XHJcblxyXG4gICAgICAgICAgICB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cFBvc3QkKHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFBhZ2VVcmwoc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMKSwgcGFyYW0pLnBpcGUoXHJcbiAgICAgICAgICAgICAgbWFwKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25MaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgICByZXNwLmRhdGFTZXQuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbVtzZWxlY3RPcHRpb25zWydOYW1lJ11dLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpdGVtW3NlbGVjdE9wdGlvbnNbJ1ZhbHVlJ11dXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICBkcm9wZG93bi5kYXRhU291cmNlID0gb3B0aW9uTGlzdDtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVBcnJheUl0ZW08VD4oYXJyOiBBcnJheTxUPiwgdmFsdWU6IFQpOiBBcnJheTxUPiB7XHJcbiAgICBjb25zdCBpbmRleCA9IGFyci5pbmRleE9mKHZhbHVlKTtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFycjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJnczogYW55LCBvcHRpb25MaXN0OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmluT3BlcmF0b3JzLmluZGV4T2YoYXJncy5vcGVyYXRvcikgPiAtMSkge1xyXG4gICAgICByZXR1cm4gbmV3IE11bHRpU2VsZWN0KHtcclxuICAgICAgICBkYXRhU291cmNlOiBvcHRpb25MaXN0LFxyXG4gICAgICAgIGZpZWxkczogeyB0ZXh0OiAndGV4dCcsIHZhbHVlOiAndmFsdWUnIH0sXHJcbiAgICAgICAgdmFsdWU6IGFyZ3MudmFsdWVzIGFzIHN0cmluZ1tdLFxyXG4gICAgICAgIG1vZGU6ICdDaGVja0JveCcsXHJcbiAgICAgICAgY2hhbmdlOiAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnFyeUJsZHJPYmoubm90aWZ5Q2hhbmdlKGUudmFsdWUsIGUuZWxlbWVudCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBzZXQgY29udGFpbnMgc2VhcmNoIGJ5IGRlZmF1bHRcclxuICAgICAgICBmaWx0ZXJpbmc6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMub25GaWx0ZXJpbmcoZSwgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgfSAgXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRHJvcERvd25MaXN0KHtcclxuICAgICAgICBhbGxvd0ZpbHRlcmluZzogdHJ1ZSwgLy8gc2VhcmNoIGJveCBhcHBlYXJcclxuICAgICAgICBkYXRhU291cmNlOiBvcHRpb25MaXN0LFxyXG4gICAgICAgIGZpZWxkczogeyB0ZXh0OiAndGV4dCcsIHZhbHVlOiAndmFsdWUnIH0sXHJcbiAgICAgICAgdmFsdWU6IGFyZ3MudmFsdWVzIGFzIHN0cmluZyxcclxuICAgICAgICBjaGFuZ2U6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGUudmFsdWUgIT09IG51bGwgPyB0aGlzLnFyeUJsZHJPYmoubm90aWZ5Q2hhbmdlKGUuaXRlbURhdGEudmFsdWUsIGUuZWxlbWVudCkgOiBpZ25vcmVFbGVtZW50cztcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIHNldCBkZWZhdWx0IHNlYXJjaCBieSAnY29udGFpbnMnXHJcbiAgICAgICAgZmlsdGVyaW5nOiAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uRmlsdGVyaW5nKGUsIG9wdGlvbkxpc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBvbkZpbHRlcmluZyhlOiBhbnksIG9wdGlvbkxpc3Q6IGFueSk6IGFueSB7XHJcbiAgICAvLyBsb2FkIG92ZXJhbGwgZGF0YSB3aGVuIHNlYXJjaCBrZXkgZW1wdHkuXHJcbiAgICBpZiAoZS50ZXh0ID09PSAnJykge1xyXG4gICAgICBlLnVwZGF0ZURhdGEodGhpcy5kYXRhKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBEZWZpbmUgYXJyYXkgZGF0YVxyXG4gICAgICBsZXQgc2VhcmNoRGF0YSA9IG9wdGlvbkxpc3Q7XHJcblxyXG4gICAgICAvL0JpbmQgdGhlIGZpbHRlciBldmVudFxyXG4gICAgICBsZXQgcXVlcnkgPSBuZXcgUXVlcnkoKTtcclxuXHJcbiAgICAgIC8vZnJhbWUgdGhlIHF1ZXJ5IGJhc2VkIG9uIHNlYXJjaCBzdHJpbmcgd2l0aCBmaWx0ZXIgdHlwZS5cclxuICAgICAgcXVlcnkgPSAoZS50ZXh0ICE9IFwiXCIpID8gcXVlcnkud2hlcmUoXCJ0ZXh0XCIsIFwiY29udGFpbnNcIiwgZS50ZXh0LCB0cnVlKSA6IHF1ZXJ5O1xyXG5cclxuICAgICAgLy9wYXNzIHRoZSBmaWx0ZXIgZGF0YSBzb3VyY2UsIGZpbHRlciBxdWVyeSB0byB1cGRhdGVEYXRhIG1ldGhvZC5cclxuICAgICAgZS51cGRhdGVEYXRhKHNlYXJjaERhdGEsIHF1ZXJ5KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwdWJsaWMgc2V0UXVlcnlWYWx1ZShzYXZlZERhdGE6IGFueSkge1xyXG4gICAgLy9pZiAoIXRoaXMucXJ5Qmxkck9iaikge1xyXG4gICAgLy8gIGNvbnNvbGUud2FybigncXVlcnkgYnVpbGRlciBvYmplY3QgaXMgbnVsbC4nKTtcclxuICAgIC8vICByZXR1cm47XHJcbiAgICAvL31cclxuXHJcbiAgICBpZiAoc2F2ZWREYXRhKSB7XHJcbiAgICAgIHRoaXMucXJ5Qmxkck9iai5zZXRSdWxlcyhzYXZlZERhdGEpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVJ1bGUoeyBydWxlOiBzYXZlZERhdGEgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UmVzdWx0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMucXJ5Qmxkck9iai5nZXRSdWxlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVJ1bGUoYXJnczogUnVsZUNoYW5nZUV2ZW50QXJncyk6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNwbGF5UnVsZSA9IEpTT04uc3RyaW5naWZ5KGFyZ3MucnVsZSwgbnVsbCwgMTIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVSdWxlKHsgcnVsZTogdGhpcy5xcnlCbGRyT2JqLmdldFZhbGlkUnVsZXModGhpcy5xcnlCbGRyT2JqLnJ1bGUpIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJlZm9yZUxvYWRGaWVsZChmaWVsZEVsZW1lbnREYXRhOiBhbnkpIHtcclxuICAgIGxldCBiZWZvcmVMb2FkRmllbGQgPSBmaWVsZEVsZW1lbnREYXRhWydCZWZvcmVMb2FkRmllbGQnXTtcclxuICAgIGlmIChiZWZvcmVMb2FkRmllbGQpIHtcclxuICAgICAgYmVmb3JlTG9hZEZpZWxkID0gYmVmb3JlTG9hZEZpZWxkLnJlcGxhY2UoJ21vZGFsR3JvdXAuJywgJ2dyb3VwLicpO1xyXG4gICAgICBjb25zdCBjYWxsRnVuYyA9IGV2YWwoJ3RoaXMuJyArIGJlZm9yZUxvYWRGaWVsZCk7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIGNhbGxGdW5jID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZCh0aGlzKTtcclxuICAgICAgICByZXR1cm4gbmV3RnVuYyhldmVudCwgdGhpcywgZmllbGRFbGVtZW50RGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvZihmaWVsZEVsZW1lbnREYXRhKTtcclxuICB9XHJcbn1cclxuXHJcbi8vZXhwb3J0IGVudW0gb3BlcmF0b3JzIHtcclxuLy8gIEluID0gJ2luJyxcclxuLy99XHJcblxyXG5cclxuLy9leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UnVsZSB7XHJcbi8vICBjb25kaXRpb246IHN0cmluZztcclxuLy8gIHJ1bGVzOiBRdWVyeVJ1bGVbXTtcclxuLy8gIGZpZWxkOiBzdHJpbmc7XHJcbi8vICB0eXBlOiBzdHJpbmc7XHJcbi8vICBvcGVyYXRvcjogc3RyaW5nO1xyXG4vLyAgdmFsdWU6IHN0cmluZ1tdO1xyXG4vL31cclxuXHJcbi8vZXhwb3J0IGZ1bmN0aW9uIHRvUXVlcnlSdWxlKHF1ZXJ5QnVpbGRlck1vZGVsOiBhbnkpOiBRdWVyeVJ1bGUge1xyXG4vLyAgbGV0IHJ1bGUgPSA8UXVlcnlSdWxlPnt9O1xyXG4vLyAgaWYgKHF1ZXJ5QnVpbGRlck1vZGVsLmNvbmRpdGlvbikge1xyXG4vLyAgICBydWxlLmNvbmRpdGlvbiA9IHF1ZXJ5QnVpbGRlck1vZGVsLmNvbmRpdGlvbjtcclxuLy8gICAgcnVsZS5ydWxlcyA9IHF1ZXJ5QnVpbGRlck1vZGVsLnJ1bGVzLm1hcChxID0+IHRvUXVlcnlSdWxlKHEpKTtcclxuLy8gIH1cclxuLy8gIGVsc2Uge1xyXG4vLyAgICBydWxlLmZpZWxkID0gcXVlcnlCdWlsZGVyTW9kZWwuZmllbGQ7XHJcbi8vICAgIHJ1bGUudHlwZSA9ICdzdHJpbmcnO1xyXG4vLyAgICBydWxlLm9wZXJhdG9yID0gJ2VxdWFsJztcclxuLy8gICAgcnVsZS52YWx1ZSA9IHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlIGluc3RhbmNlb2YgQXJyYXlcclxuLy8gICAgICA/IHF1ZXJ5QnVpbGRlck1vZGVsLnR5cGUgPT09ICdkYXRlJyA/IG5ldyBEYXRlKHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlKSA6IHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlXHJcbi8vICAgICAgOiBbcXVlcnlCdWlsZGVyTW9kZWwudHlwZSA9PT0gJ2RhdGUnID8gbmV3IERhdGUocXVlcnlCdWlsZGVyTW9kZWwudmFsdWUpIDogcXVlcnlCdWlsZGVyTW9kZWwudmFsdWVdO1xyXG4vLyAgfVxyXG4vLyAgcmV0dXJuIHJ1bGU7XHJcbi8vfVxyXG4iLCI8aW9uLWl0ZW0gKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIj5cclxuICA8ZGl2IGNsYXNzPVwicWJjb250YWluZXJcIj5cclxuICAgIDxlanMtcXVlcnlidWlsZGVyICpuZ0lmPVwiaXNzZkxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAjcXVlcnlidWlsZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwic2ZEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cInNkRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtydWxlXT1cImltcG9ydFJ1bGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChydWxlQ2hhbmdlKT1cInVwZGF0ZVJ1bGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY3JlYXRlZCk9XCJvbkNoYW5nZSgpXCI+XHJcbiAgICA8L2Vqcy1xdWVyeWJ1aWxkZXI+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFkYXRhLkhpZGVTaG93UmVzdWx0UGFuZWxcIj5cclxuICAgICAgPGJyPlxyXG4gICAgICA8aW9uLWxhYmVsPlJlc3VsdDwvaW9uLWxhYmVsPlxyXG4gICAgICA8dGV4dGFyZWEgY2xhc3M9XCJvdXRwdXRcIlxyXG4gICAgICAgICAgICAgICAgcmVzaXphYmxlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICBbcm93c109XCIxMFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNkM2QzZDM7IHdpZHRoOiAxMDAlO1wiPnt7ZGlzcGxheVJ1bGV9fTwvdGV4dGFyZWE+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9pb24taXRlbT5cclxuIl19
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/********** Angular **********/
|
|
2
2
|
import { Component, Input, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
|
-
import { filter, map } from 'rxjs/operators';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
import * as i1 from "mmhglobal-zcore";
|
|
6
5
|
import * as i2 from "../services/main.service";
|
|
@@ -9,12 +8,12 @@ import * as i4 from "@ionic/angular";
|
|
|
9
8
|
import * as i5 from "@fortawesome/angular-fontawesome";
|
|
10
9
|
import * as i6 from "@angular/common";
|
|
11
10
|
export class UibulletinComponent {
|
|
12
|
-
constructor(zcoreService, webApiService, resourceApiService, mainService,
|
|
11
|
+
constructor(zcoreService, webApiService, resourceApiService, mainService, signalrService, notificationService) {
|
|
13
12
|
this.zcoreService = zcoreService;
|
|
14
13
|
this.webApiService = webApiService;
|
|
15
14
|
this.resourceApiService = resourceApiService;
|
|
16
15
|
this.mainService = mainService;
|
|
17
|
-
this.
|
|
16
|
+
this.signalrService = signalrService;
|
|
18
17
|
this.notificationService = notificationService;
|
|
19
18
|
// backNavigate = null;
|
|
20
19
|
this.bulletinMessages = [];
|
|
@@ -41,7 +40,9 @@ export class UibulletinComponent {
|
|
|
41
40
|
});
|
|
42
41
|
}
|
|
43
42
|
ngAfterViewInit() {
|
|
44
|
-
this.
|
|
43
|
+
if (this.signalrService.signalREnabled()) {
|
|
44
|
+
this.getSignalrBulletinMessage();
|
|
45
|
+
}
|
|
45
46
|
}
|
|
46
47
|
setBulletinMessages(data) {
|
|
47
48
|
if (data.length > 0) {
|
|
@@ -57,9 +58,11 @@ export class UibulletinComponent {
|
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
getSignalrBulletinMessage() {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
this.group.signalRCallbackHandler['headerBulletinHandling'] = this.headerBulletinHandling.bind(this);
|
|
62
|
+
return this.signalrService.subscribeToEvent(this.group, `Bulletin`, `group.signalRCallbackHandler.headerBulletinHandling`);
|
|
63
|
+
}
|
|
64
|
+
headerBulletinHandling(group, resp, eventName) {
|
|
65
|
+
this.setBulletinMessages(resp);
|
|
63
66
|
}
|
|
64
67
|
showBulletinMessage() {
|
|
65
68
|
// if closable property is set to true, hideAfter property is ignored.
|
|
@@ -87,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
87
90
|
}], group: [{
|
|
88
91
|
type: Input
|
|
89
92
|
}] } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlidWxsZXRpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi91aWJ1bGxldGluL3VpYnVsbGV0aW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWlidWxsZXRpbi91aWJ1bGxldGluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT25HLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFrQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQWM3RCxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLFlBQ1UsWUFBMEIsRUFDMUIsYUFBNEIsRUFDNUIsa0JBQXNDLEVBQ3RDLFdBQXdCLEVBQ3hCLE9BQXVCLEVBQ3ZCLG1CQUF3QztRQUx4QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFmbEQsdUJBQXVCO1FBQ2hCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0Qix5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDNUIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixtQkFBYyxHQUFHLDZCQUE2QixDQUFDO1FBWXBELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDN0csSUFBSSxJQUFJLEVBQUU7b0JBQ1IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUNmLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTs0QkFDekIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQzdCLENBQUMsQ0FBQyxDQUFBO3FCQUNIO29CQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDL0I7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU0sbUJBQW1CLENBQUMsSUFBVztRQUNwQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDOUM7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxvQ0FBb0MsQ0FBQztTQUNsRjthQUNJO1lBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRU0seUJBQXlCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQ2pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsc0VBQXNFO1FBQ3RFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDOUIsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQ25ELFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUMzQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDcEMsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDekQsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0hBN0VVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLG1LQUNDLGdCQUFnQiwrR0FDUixXQUFXLDZCQ3hCcEQsKzVCQXVCQTsyRkREYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsZ0JBQWdCO3lQQU1nQyxRQUFRO3NCQUFqRSxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDSyxnQkFBZ0I7c0JBQXJFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUMzQyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG4vLyBpbXBvcnQgeyBaQ29tcG9uZW50RGVidWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5kZWJ1Zy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWkdyb3VwLCBaQ29yZVNlcnZpY2UsIFdlYkFwaVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSwgU2lnbmFsclNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5pbXBvcnQgeyBNYWluU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21haW4uc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdWlidWxsZXRpbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VpYnVsbGV0aW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpYnVsbGV0aW4uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBVaWJ1bGxldGluQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdhcHBlbmRUbycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBwdWJsaWMgYXBwZW5kVG86IFZpZXdDb250YWluZXJSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYnVsbGV0aW5UZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgYnVsbGV0aW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIC8vIGJhY2tOYXZpZ2F0ZSA9IG51bGw7XHJcbiAgcHVibGljIGJ1bGxldGluTWVzc2FnZXMgPSBbXTtcclxuICBwdWJsaWMgaGlkZUJ1bGxldGluVGVtcGxhdGUgPSB0cnVlO1xyXG4gIHB1YmxpYyB0aXRsZSA9IFwiXCI7XHJcbiAgcHVibGljIHNob3dCdWxsZXRpbkljb24gPSBmYWxzZTtcclxuICBwdWJsaWMgZGVmYXVsdE1lc3NhZ2UgPSAnVGhlcmUgYXJlIG5vIG1lc3NhZ2UgdG9kYXkuJztcclxuICBwdWJsaWMgZW52aXJvbm1lbnQ6IGFueTtcclxuICBwdWJsaWMgZmlyc3RJbml0QnVsbGV0aW5VUkw6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgbWFpblNlcnZpY2U6IE1haW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzaWduYWxyOiBTaWduYWxyU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuemNvcmVTZXJ2aWNlLmdldEVudmlyb25tZW50KCk7XHJcbiAgICB0aGlzLnNob3dCdWxsZXRpbkljb24gPSB0aGlzLmVudmlyb25tZW50LmJ1bGxldGluVXJsID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1haW5TZXJ2aWNlLmdldFJlc291cmNlU2VydmVyRGF0YSgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMud2ViQXBpU2VydmljZS5odHRwR2V0JCh0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwodGhpcy5lbnZpcm9ubWVudC5idWxsZXRpblVybCksICcnKS5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3ApIHtcclxuICAgICAgICAgIGNvbnN0IG1zZyA9IFtdO1xyXG4gICAgICAgICAgaWYgKHJlc3AubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXNwLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIG1zZy5wdXNoKGl0ZW0uRGVzY3JpcHRpb24pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRCdWxsZXRpbk1lc3NhZ2VzKG1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmdldFNpZ25hbHJCdWxsZXRpbk1lc3NhZ2UoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRCdWxsZXRpbk1lc3NhZ2VzKGRhdGE6IGFueVtdKSB7XHJcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uRGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgIHRoaXMuYnVsbGV0aW5NZXNzYWdlcy5wdXNoKGl0ZW0uRGVzY3JpcHRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy50aXRsZSA9IHRoaXMuYnVsbGV0aW5NZXNzYWdlcy5sZW5ndGggKyBcIiBtZXNzYWdlcy4gQ2xpY2sgdG8gdmlldyBtZXNzYWdlcy5cIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRpdGxlID0gXCJObyBtZXNzYWdlXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2lnbmFsckJ1bGxldGluTWVzc2FnZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2lnbmFsci5nZXRFdmVudCgpLnBpcGUoXHJcbiAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC5uYW1lID09PSAnQnVsbGV0aW4nKSxcclxuICAgICAgbWFwKGV2ZW50ID0+IHtcclxuICAgICAgICB0aGlzLnNldEJ1bGxldGluTWVzc2FnZXMoZXZlbnQucGF5bG9hZCk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93QnVsbGV0aW5NZXNzYWdlKCk6IHZvaWQgeyBcclxuICAgIC8vIGlmIGNsb3NhYmxlIHByb3BlcnR5IGlzIHNldCB0byB0cnVlLCBoaWRlQWZ0ZXIgcHJvcGVydHkgaXMgaWdub3JlZC5cclxuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93KHtcclxuICAgICAgY29udGVudDogdGhpcy5idWxsZXRpblRlbXBsYXRlLFxyXG4gICAgICBwb3NpdGlvbjogeyBob3Jpem9udGFsOiBcImNlbnRlclwiLCB2ZXJ0aWNhbDogXCJ0b3BcIiB9LFxyXG4gICAgICBhbmltYXRpb246IHsgdHlwZTogXCJzbGlkZVwiLCBkdXJhdGlvbjogNTAwIH0sXHJcbiAgICAgIHR5cGU6IHsgc3R5bGU6IFwibm9uZVwiLCBpY29uOiBmYWxzZSB9LFxyXG4gICAgICBjbG9zYWJsZTogdGhpcy5idWxsZXRpbk1lc3NhZ2VzLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgIGhpZGVBZnRlcjogMTAwMCxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8aW9uLWJ1dHRvbiAoY2xpY2spPVwic2hvd0J1bGxldGluTWVzc2FnZSgpXCIgZmlsbD1cIm5vbmVcIiBzaXplPVwic21hbGxcIiAqbmdJZj1cInNob3dCdWxsZXRpbkljb25cIj5cclxuXHJcbiAgPGlvbi1sYWJlbCBbdGl0bGVdPVwidGl0bGVcIj5cclxuICAgIDxpb24tYmFkZ2UgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cInBlbmRpbmctY291bnRlclwiXHJcbiAgICAgICAgICAgICAgICpuZ0lmPVwiYnVsbGV0aW5NZXNzYWdlcy5sZW5ndGggPiAwXCI+XHJcbiAgICA8L2lvbi1iYWRnZT5cclxuICAgIDxpb24tbGFiZWw+PGZhLWljb24gW2ljb25dPVwiWydmYXMnLCAnYmVsbCddXCIgc2l6ZT1cImxnXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIj48L2ZhLWljb24+IE5vdGlmaWNhdGlvbjwvaW9uLWxhYmVsPlxyXG4gICAgPGlvbi1yaXBwbGUtZWZmZWN0PjwvaW9uLXJpcHBsZS1lZmZlY3Q+XHJcbiAgPC9pb24tbGFiZWw+XHJcblxyXG4gIDwhLS08ZmEtaWNvbiBbaWNvbl09XCJbJ2ZhcycsICdiZWxsJ11cIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiPjwvZmEtaWNvbj4gQnVsbGV0aW4tLT5cclxuPC9pb24tYnV0dG9uPlxyXG48bmctdGVtcGxhdGUgI2J1bGxldGluVGVtcGxhdGU+XHJcbiAgPGRpdiAqbmdJZj1cImJ1bGxldGluTWVzc2FnZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgPCEtLTxoNj5CdWxsZXRpbjwvaDY+LS0+XHJcbiAgICA8dWw+XHJcbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbXNnIG9mIGJ1bGxldGluTWVzc2FnZXNcIj57eyBtc2cgfX08L2xpPlxyXG4gICAgPC91bD5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiYnVsbGV0aW5NZXNzYWdlcy5sZW5ndGggPD0gMFwiPlxyXG4gICAge3sgZGVmYXVsdE1lc3NhZ2UgfX1cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlidWxsZXRpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi91aWJ1bGxldGluL3VpYnVsbGV0aW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWlidWxsZXRpbi91aWJ1bGxldGluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQXFCbkcsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixZQUNVLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxXQUF3QixFQUN4QixjQUE4QixFQUM5QixtQkFBd0M7UUFMeEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWZsRCx1QkFBdUI7UUFDaEIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLG1CQUFjLEdBQUcsNkJBQTZCLENBQUM7UUFZcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJ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QUFDO0lBQ0wsQ0FBQzs7Z0hBakZVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLG1LQUNDLGdCQUFnQiwrR0FDUixXQUFXLDZCQ3hCcEQsKzVCQXVCQTsyRkREYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsZ0JBQWdCO3lQQU1nQyxRQUFRO3NCQUFqRSxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDSyxnQkFBZ0I7c0JBQXJFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUMzQyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG4vLyBpbXBvcnQgeyBaQ29tcG9uZW50RGVidWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5kZWJ1Zy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWkdyb3VwLCBaQ29yZVNlcnZpY2UsIFdlYkFwaVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSwgU2lnbmFsclNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5pbXBvcnQgeyBNYWluU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21haW4uc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdWlidWxsZXRpbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VpYnVsbGV0aW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpYnVsbGV0aW4uY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBVaWJ1bGxldGluQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdhcHBlbmRUbycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBwdWJsaWMgYXBwZW5kVG86IFZpZXdDb250YWluZXJSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYnVsbGV0aW5UZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgYnVsbGV0aW5UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIC8vIGJhY2tOYXZpZ2F0ZSA9IG51bGw7XHJcbiAgcHVibGljIGJ1bGxldGluTWVzc2FnZXMgPSBbXTtcclxuICBwdWJsaWMgaGlkZUJ1bGxldGluVGVtcGxhdGUgPSB0cnVlO1xyXG4gIHB1YmxpYyB0aXRsZSA9IFwiXCI7XHJcbiAgcHVibGljIHNob3dCdWxsZXRpbkljb24gPSBmYWxzZTtcclxuICBwdWJsaWMgZGVmYXVsdE1lc3NhZ2UgPSAnVGhlcmUgYXJlIG5vIG1lc3NhZ2UgdG9kYXkuJztcclxuICBwdWJsaWMgZW52aXJvbm1lbnQ6IGFueTtcclxuICBwdWJsaWMgZmlyc3RJbml0QnVsbGV0aW5VUkw6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgbWFpblNlcnZpY2U6IE1haW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzaWduYWxyU2VydmljZTogU2lnbmFsclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLnpjb3JlU2VydmljZS5nZXRFbnZpcm9ubWVudCgpO1xyXG4gICAgdGhpcy5zaG93QnVsbGV0aW5JY29uID0gdGhpcy5lbnZpcm9ubWVudC5idWxsZXRpblVybCA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYWluU2VydmljZS5nZXRSZXNvdXJjZVNlcnZlckRhdGEoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cEdldCQodGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKHRoaXMuZW52aXJvbm1lbnQuYnVsbGV0aW5VcmwpLCAnJykuc3Vic2NyaWJlKHJlc3AgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwKSB7XHJcbiAgICAgICAgICBjb25zdCBtc2cgPSBbXTtcclxuICAgICAgICAgIGlmIChyZXNwLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmVzcC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBtc2cucHVzaChpdGVtLkRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2V0QnVsbGV0aW5NZXNzYWdlcyhtc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuc2lnbmFsclNlcnZpY2Uuc2lnbmFsUkVuYWJsZWQoKSkge1xyXG4gICAgICB0aGlzLmdldFNpZ25hbHJCdWxsZXRpbk1lc3NhZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRCdWxsZXRpbk1lc3NhZ2VzKGRhdGE6IGFueVtdKSB7XHJcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uRGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgIHRoaXMuYnVsbGV0aW5NZXNzYWdlcy5wdXNoKGl0ZW0uRGVzY3JpcHRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy50aXRsZSA9IHRoaXMuYnVsbGV0aW5NZXNzYWdlcy5sZW5ndGggKyBcIiBtZXNzYWdlcy4gQ2xpY2sgdG8gdmlldyBtZXNzYWdlcy5cIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRpdGxlID0gXCJObyBtZXNzYWdlXCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNpZ25hbHJCdWxsZXRpbk1lc3NhZ2UoKSB7XHJcbiAgICB0aGlzLmdyb3VwLnNpZ25hbFJDYWxsYmFja0hhbmRsZXJbJ2hlYWRlckJ1bGxldGluSGFuZGxpbmcnXSA9IHRoaXMuaGVhZGVyQnVsbGV0aW5IYW5kbGluZy5iaW5kKHRoaXMpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnNpZ25hbHJTZXJ2aWNlLnN1YnNjcmliZVRvRXZlbnQodGhpcy5ncm91cCwgYEJ1bGxldGluYCwgYGdyb3VwLnNpZ25hbFJDYWxsYmFja0hhbmRsZXIuaGVhZGVyQnVsbGV0aW5IYW5kbGluZ2ApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoZWFkZXJCdWxsZXRpbkhhbmRsaW5nKGdyb3VwOiBaR3JvdXAsIHJlc3A6IGFueSwgZXZlbnROYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0QnVsbGV0aW5NZXNzYWdlcyhyZXNwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93QnVsbGV0aW5NZXNzYWdlKCk6IHZvaWQge1xyXG4gICAgLy8gaWYgY2xvc2FibGUgcHJvcGVydHkgaXMgc2V0IHRvIHRydWUsIGhpZGVBZnRlciBwcm9wZXJ0eSBpcyBpZ25vcmVkLlxyXG4gICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3coe1xyXG4gICAgICBjb250ZW50OiB0aGlzLmJ1bGxldGluVGVtcGxhdGUsXHJcbiAgICAgIHBvc2l0aW9uOiB7IGhvcml6b250YWw6IFwiY2VudGVyXCIsIHZlcnRpY2FsOiBcInRvcFwiIH0sXHJcbiAgICAgIGFuaW1hdGlvbjogeyB0eXBlOiBcInNsaWRlXCIsIGR1cmF0aW9uOiA1MDAgfSxcclxuICAgICAgdHlwZTogeyBzdHlsZTogXCJub25lXCIsIGljb246IGZhbHNlIH0sXHJcbiAgICAgIGNsb3NhYmxlOiB0aGlzLmJ1bGxldGluTWVzc2FnZXMubGVuZ3RoID4gMCA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgaGlkZUFmdGVyOiAxMDAwLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxpb24tYnV0dG9uIChjbGljayk9XCJzaG93QnVsbGV0aW5NZXNzYWdlKClcIiBmaWxsPVwibm9uZVwiIHNpemU9XCJzbWFsbFwiICpuZ0lmPVwic2hvd0J1bGxldGluSWNvblwiPlxyXG5cclxuICA8aW9uLWxhYmVsIFt0aXRsZV09XCJ0aXRsZVwiPlxyXG4gICAgPGlvbi1iYWRnZSBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwicGVuZGluZy1jb3VudGVyXCJcclxuICAgICAgICAgICAgICAgKm5nSWY9XCJidWxsZXRpbk1lc3NhZ2VzLmxlbmd0aCA+IDBcIj5cclxuICAgIDwvaW9uLWJhZGdlPlxyXG4gICAgPGlvbi1sYWJlbD48ZmEtaWNvbiBbaWNvbl09XCJbJ2ZhcycsICdiZWxsJ11cIiBzaXplPVwibGdcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogNXB4O1wiPjwvZmEtaWNvbj4gTm90aWZpY2F0aW9uPC9pb24tbGFiZWw+XHJcbiAgICA8aW9uLXJpcHBsZS1lZmZlY3Q+PC9pb24tcmlwcGxlLWVmZmVjdD5cclxuICA8L2lvbi1sYWJlbD5cclxuXHJcbiAgPCEtLTxmYS1pY29uIFtpY29uXT1cIlsnZmFzJywgJ2JlbGwnXVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCI+PC9mYS1pY29uPiBCdWxsZXRpbi0tPlxyXG48L2lvbi1idXR0b24+XHJcbjxuZy10ZW1wbGF0ZSAjYnVsbGV0aW5UZW1wbGF0ZT5cclxuICA8ZGl2ICpuZ0lmPVwiYnVsbGV0aW5NZXNzYWdlcy5sZW5ndGggPiAwXCI+XHJcbiAgICA8IS0tPGg2PkJ1bGxldGluPC9oNj4tLT5cclxuICAgIDx1bD5cclxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBtc2cgb2YgYnVsbGV0aW5NZXNzYWdlc1wiPnt7IG1zZyB9fTwvbGk+XHJcbiAgICA8L3VsPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJidWxsZXRpbk1lc3NhZ2VzLmxlbmd0aCA8PSAwXCI+XHJcbiAgICB7eyBkZWZhdWx0TWVzc2FnZSB9fVxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
|
@@ -16,30 +16,46 @@ import * as i9 from "../uiactionbutton/uiactionbutton.component";
|
|
|
16
16
|
import * as i10 from "@angular/common";
|
|
17
17
|
export class UiheaderComponent {
|
|
18
18
|
// backNavigate = null;
|
|
19
|
-
constructor(router, translationService, zcoreService, authService) {
|
|
19
|
+
constructor(router, translationService, zcoreService, authService, fontAweSomeService) {
|
|
20
20
|
this.router = router;
|
|
21
21
|
this.translationService = translationService;
|
|
22
22
|
this.zcoreService = zcoreService;
|
|
23
23
|
this.authService = authService;
|
|
24
|
+
this.fontAweSomeService = fontAweSomeService;
|
|
24
25
|
this.isloading = true;
|
|
25
26
|
this.showBulletinIcon = false;
|
|
26
27
|
this.userPanelItems = [
|
|
27
28
|
{
|
|
28
|
-
text: "Profile",
|
|
29
29
|
icon: 'user',
|
|
30
|
+
text: "Profile",
|
|
30
31
|
onClick: this.navToUserProfile.bind(this),
|
|
31
32
|
},
|
|
32
33
|
{
|
|
33
|
-
text: "Log Out",
|
|
34
34
|
icon: 'sign-out-alt',
|
|
35
|
+
text: "Log Out",
|
|
35
36
|
onClick: this.navLogout.bind(this),
|
|
36
37
|
}
|
|
37
38
|
];
|
|
39
|
+
this.loadedEnvironmentProfileMenu = false;
|
|
38
40
|
}
|
|
39
41
|
;
|
|
40
42
|
ngOnInit() {
|
|
41
43
|
this.isloading = true;
|
|
42
44
|
this.environment = this.zcoreService.getEnvironment();
|
|
45
|
+
if (this.environment.profileMenu && this.environment.profileMenu.length > 0 && !this.loadedEnvironmentProfileMenu) {
|
|
46
|
+
// Based on the text characters, might required width adjustment for user-panel-dial.k-fab-items in global.scss.
|
|
47
|
+
this.environment.profileMenu.forEach(item => {
|
|
48
|
+
const newItem = {
|
|
49
|
+
icon: item.icon,
|
|
50
|
+
text: item.text,
|
|
51
|
+
onClick: () => {
|
|
52
|
+
this.router.navigateByUrl(item.url);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
this.userPanelItems.splice(0, 0, newItem);
|
|
56
|
+
});
|
|
57
|
+
this.loadedEnvironmentProfileMenu = true;
|
|
58
|
+
}
|
|
43
59
|
this.authService.userIsAuthenticated.subscribe(() => {
|
|
44
60
|
this.setUserProfile();
|
|
45
61
|
this.translateUserMenu();
|
|
@@ -85,14 +101,14 @@ export class UiheaderComponent {
|
|
|
85
101
|
}
|
|
86
102
|
}
|
|
87
103
|
}
|
|
88
|
-
UiheaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UiheaderComponent, deps: [{ token: i1.Router }, { token: i2.TranslationService }, { token: i2.ZCoreService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
104
|
+
UiheaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UiheaderComponent, deps: [{ token: i1.Router }, { token: i2.TranslationService }, { token: i2.ZCoreService }, { token: i2.AuthService }, { token: i2.FontAweSomeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
89
105
|
UiheaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: UiheaderComponent, selector: "app-uiheader", inputs: { group: "group", topFormHeader: "topFormHeader" }, ngImport: i0, template: "<ion-header>\r\n <ion-toolbar>\r\n <div class=\"toolbar-container\" *ngIf=\"!isloading\">\r\n <div class=\"toolbar-first-row\">\r\n <app-uimenubutton slot=\"start\" [group]=\"group\"></app-uimenubutton>\r\n\r\n <ion-title class=\"toolbar-title\">\r\n <div *ngIf=\"topFormHeader || (group && !group.isLoading && group.formHeader)\">\r\n <ion-label class=\"toolbar-title-label\">{{ topFormHeader ? topFormHeader : group.formHeader }}</ion-label>\r\n </div>\r\n </ion-title>\r\n\r\n <div slot=\"end\" *ngIf=\"!isMobileScreen()\" class=\"end-panel hoverable\">\r\n <app-uibulletin *ngIf=\"showBulletinIcon\"></app-uibulletin>\r\n <div class=\"profile-vl\" *ngIf=\"showBulletinIcon\"></div>\r\n\r\n <kendo-floatingactionbutton [dialItems]=\"userPanelItems\" [offset]=\"{x:'-5px', y:'-5px'}\"\r\n [align]=\"{ vertical: 'top', horizontal: 'end' }\" [dialItemAnimation]=true buttonClass=\"user-panel-button\"\r\n dialClass=\"user-panel-dial\" (dialItemClick)=\"onDialItemClick($event)\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <kendo-avatar shape=\"circle\" [imageSrc]=\"profileImgUrl\"></kendo-avatar>\r\n <ion-label class=\"profile-username\">{{ userDisplayName }}</ion-label>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n <span [class.custom-focused-class]=\"isFocused\" class=\"user-panel-item\">\r\n <fa-icon [icon]=\"item.icon\" class=\"user-panel-item-icon\"></fa-icon>\r\n <span class=\"user-panel-option-text\">{{ item.text }}</span>\r\n </span>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n </div>\r\n <div *ngIf=\"group && isMobileScreen()\">\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </div>\r\n </div>\r\n\r\n <!-- Design 1 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <div class=\"nav-bar-container\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon [icon]=\"item.icon\" class=\"zcard-header-icon\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div>\r\n </div> -->\r\n <!-- Design 2 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\" [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div> -->\r\n </div>\r\n </ion-toolbar>\r\n</ion-header>\r\n", styles: ["ion-toolbar{--background: var(--ion-color-primary-shade);--color: var(--ion-color-primary-contrast);--min-height: var(--ion-header-height);box-shadow:0 2px 9px #ababab}app-uimenubutton{margin:auto}.toolbar-first-row{display:flex}.toolbar-second-row{margin-left:50px}.end-panel{display:flex;align-items:stretch;cursor:pointer}.profile-username{padding-right:10px;margin:auto auto auto 15px;font-size:var(--page-user-profile-font-size)}.toolbar-title-label{text-shadow:.5px .5px rgba(255,255,255,.48);font-size:var(--page-title-font-size)}.toolbar-title{margin-bottom:2px}.hoverable:hover{background:#ffffff24}:host ::ng-deep kendo-floatingactionbutton{max-height:60px;border-radius:10px}:host ::ng-deep kendo-floatingactionbutton .user-panel-button{background:transparent!important;border:none!important;outline:none}:host ::ng-deep kendo-floatingactionbutton:hover{background:rgba(0,0,0,.3)}:host ::ng-deep kendo-floatingactionbutton .k-fab{box-shadow:none;padding:12px}:host ::ng-deep kendo-floatingactionbutton .k-avatar-md{width:var(--ion-header-avatar-size);height:var(--ion-header-avatar-size);flex-basis:var(--ion-header-avatar-size)}\n"], components: [{ type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i4.UimenubuttonComponent, selector: "app-uimenubutton", inputs: ["group"] }, { type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i5.UibulletinComponent, selector: "app-uibulletin", inputs: ["group"] }, { type: i6.FloatingActionButtonComponent, selector: "kendo-floatingactionbutton", inputs: ["themeColor", "size", "rounded", "disabled", "align", "offset", "positionMode", "icon", "iconClass", "buttonClass", "dialClass", "text", "dialItemAnimation", "tabIndex", "dialItems"], outputs: ["blur", "focus", "dialItemClick", "open", "close"] }, { type: i7.AvatarComponent, selector: "kendo-avatar", inputs: ["shape", "size", "rounded", "themeColor", "fillMode", "fill", "border", "iconClass", "width", "height", "cssStyle", "initials", "icon", "imageSrc"] }, { type: i8.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i3.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i9.UiactionbuttonComponent, selector: "app-uiactionbutton" }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.FloatingActionButtonTemplateDirective, selector: "[kendoFloatingActionButtonTemplate]" }, { type: i6.DialItemTemplateDirective, selector: "[kendoDialItemTemplate]" }] });
|
|
90
106
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UiheaderComponent, decorators: [{
|
|
91
107
|
type: Component,
|
|
92
108
|
args: [{ selector: "app-uiheader", template: "<ion-header>\r\n <ion-toolbar>\r\n <div class=\"toolbar-container\" *ngIf=\"!isloading\">\r\n <div class=\"toolbar-first-row\">\r\n <app-uimenubutton slot=\"start\" [group]=\"group\"></app-uimenubutton>\r\n\r\n <ion-title class=\"toolbar-title\">\r\n <div *ngIf=\"topFormHeader || (group && !group.isLoading && group.formHeader)\">\r\n <ion-label class=\"toolbar-title-label\">{{ topFormHeader ? topFormHeader : group.formHeader }}</ion-label>\r\n </div>\r\n </ion-title>\r\n\r\n <div slot=\"end\" *ngIf=\"!isMobileScreen()\" class=\"end-panel hoverable\">\r\n <app-uibulletin *ngIf=\"showBulletinIcon\"></app-uibulletin>\r\n <div class=\"profile-vl\" *ngIf=\"showBulletinIcon\"></div>\r\n\r\n <kendo-floatingactionbutton [dialItems]=\"userPanelItems\" [offset]=\"{x:'-5px', y:'-5px'}\"\r\n [align]=\"{ vertical: 'top', horizontal: 'end' }\" [dialItemAnimation]=true buttonClass=\"user-panel-button\"\r\n dialClass=\"user-panel-dial\" (dialItemClick)=\"onDialItemClick($event)\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <kendo-avatar shape=\"circle\" [imageSrc]=\"profileImgUrl\"></kendo-avatar>\r\n <ion-label class=\"profile-username\">{{ userDisplayName }}</ion-label>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n <span [class.custom-focused-class]=\"isFocused\" class=\"user-panel-item\">\r\n <fa-icon [icon]=\"item.icon\" class=\"user-panel-item-icon\"></fa-icon>\r\n <span class=\"user-panel-option-text\">{{ item.text }}</span>\r\n </span>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n </div>\r\n <div *ngIf=\"group && isMobileScreen()\">\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </div>\r\n </div>\r\n\r\n <!-- Design 1 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <div class=\"nav-bar-container\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon [icon]=\"item.icon\" class=\"zcard-header-icon\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div>\r\n </div> -->\r\n <!-- Design 2 -->\r\n <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\" [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </div> -->\r\n </div>\r\n </ion-toolbar>\r\n</ion-header>\r\n", styles: ["ion-toolbar{--background: var(--ion-color-primary-shade);--color: var(--ion-color-primary-contrast);--min-height: var(--ion-header-height);box-shadow:0 2px 9px #ababab}app-uimenubutton{margin:auto}.toolbar-first-row{display:flex}.toolbar-second-row{margin-left:50px}.end-panel{display:flex;align-items:stretch;cursor:pointer}.profile-username{padding-right:10px;margin:auto auto auto 15px;font-size:var(--page-user-profile-font-size)}.toolbar-title-label{text-shadow:.5px .5px rgba(255,255,255,.48);font-size:var(--page-title-font-size)}.toolbar-title{margin-bottom:2px}.hoverable:hover{background:#ffffff24}:host ::ng-deep kendo-floatingactionbutton{max-height:60px;border-radius:10px}:host ::ng-deep kendo-floatingactionbutton .user-panel-button{background:transparent!important;border:none!important;outline:none}:host ::ng-deep kendo-floatingactionbutton:hover{background:rgba(0,0,0,.3)}:host ::ng-deep kendo-floatingactionbutton .k-fab{box-shadow:none;padding:12px}:host ::ng-deep kendo-floatingactionbutton .k-avatar-md{width:var(--ion-header-avatar-size);height:var(--ion-header-avatar-size);flex-basis:var(--ion-header-avatar-size)}\n"] }]
|
|
93
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.TranslationService }, { type: i2.ZCoreService }, { type: i2.AuthService }]; }, propDecorators: { group: [{
|
|
109
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.TranslationService }, { type: i2.ZCoreService }, { type: i2.AuthService }, { type: i2.FontAweSomeService }]; }, propDecorators: { group: [{
|
|
94
110
|
type: Input
|
|
95
111
|
}], topFormHeader: [{
|
|
96
112
|
type: Input
|
|
97
113
|
}] } });
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWloZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWloZWFkZXIvdWloZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWloZWFkZXIvdWloZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCLENBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEYsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUU5QiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUVHLGdCQUFnQixFQUN6QixNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7QUFTekIsTUFBTSxPQUFPLGlCQUFpQjtJQXNCNUIsdUJBQXVCO0lBRXZCLFlBQ1UsTUFBYyxFQUNkLGtCQUFzQyxFQUN0QyxZQUEwQixFQUMxQixXQUF3QjtRQUh4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXZCM0IsY0FBUyxHQUFHLElBQUksQ0FBQztRQUlqQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsbUJBQWMsR0FBUTtZQUMzQjtnQkFDRSxJQUFJLEVBQUUsU0FBUztnQkFDZixJQUFJLEVBQUUsTUFBTTtnQkFDWixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDMUM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsU0FBUztnQkFDZixJQUFJLEVBQUUsY0FBYztnQkFDcEIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFB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ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIFpDb3JlU2VydmljZSwgQXV0aFNlcnZpY2UsIFRyYW5zbGF0aW9uU2VydmljZSxcclxuICBaR3JvdXAsIFpDb21wb25lbnRIZWxwZXJcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC11aWhlYWRlclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdWloZWFkZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vdWloZWFkZXIuY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBVaWhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSB0b3BGb3JtSGVhZGVyOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgZW52aXJvbm1lbnQ7XHJcbiAgcHVibGljIGlzbG9hZGluZyA9IHRydWU7O1xyXG4gIHB1YmxpYyBwcm9maWxlSW1nVXJsOiBzdHJpbmc7XHJcbiAgcHVibGljIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgcHVibGljIHVzZXJEaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBzaG93QnVsbGV0aW5JY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHVzZXJQYW5lbEl0ZW1zOiBhbnkgPSBbXHJcbiAgICB7XHJcbiAgICAgIHRleHQ6IFwiUHJvZmlsZVwiLFxyXG4gICAgICBpY29uOiAndXNlcicsXHJcbiAgICAgIG9uQ2xpY2s6IHRoaXMubmF2VG9Vc2VyUHJvZmlsZS5iaW5kKHRoaXMpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdGV4dDogXCJMb2cgT3V0XCIsXHJcbiAgICAgIGljb246ICdzaWduLW91dC1hbHQnLFxyXG4gICAgICBvbkNsaWNrOiB0aGlzLm5hdkxvZ291dC5iaW5kKHRoaXMpLFxyXG4gICAgfVxyXG4gIF07XHJcbiAgLy8gYmFja05hdmlnYXRlID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgemNvcmVTZXJ2aWNlOiBaQ29yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuemNvcmVTZXJ2aWNlLmdldEVudmlyb25tZW50KCk7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLnVzZXJJc0F1dGhlbnRpY2F0ZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXRVc2VyUHJvZmlsZSgpO1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVVzZXJNZW51KCk7IFxyXG4gICAgICB0aGlzLnNob3dCdWxsZXRpbkljb24gPSB0aGlzLnpjb3JlU2VydmljZS5nZXRFbnZpcm9ubWVudCgpLmJ1bGxldGluVXJsID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJQcm9maWxlKCkge1xyXG4gICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbikge1xyXG4gICAgICB0aGlzLnByb2ZpbGVJbWdVcmwgPSB0aGlzLmVudmlyb25tZW50LmUxT2F1dGhVcmwgKyAnL2FwaS9Qcm9maWxlSW1hZ2U/aWQ9JyArIHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbi5teVByb2ZpbGUuVXNlck5hbWUgKyAnJnNpemU9ODB4ODAnO1xyXG4gICAgICBjb25zdCBfbXlQcm9maWxlID0gdGhpcy5hdXRoU2VydmljZS5lMVRva2VuLm15UHJvZmlsZTtcclxuICAgICAgaWYgKF9teVByb2ZpbGUpIHtcclxuICAgICAgICB0aGlzLnVzZXJuYW1lID0gX215UHJvZmlsZS5Vc2VyTmFtZTtcclxuICAgICAgICB0aGlzLnVzZXJEaXNwbGF5TmFtZSA9IF9teVByb2ZpbGUuTGFzdE5hbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlVXNlck1lbnUoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS4kdHJhbnNsYXRlSXRlbUxpc3QodGhpcy51c2VyUGFuZWxJdGVtcywgXCJ0ZXh0XCIsIHsgZWxlbWVudE5hbWU6ICdtZW51JywgZ3JvdXA6IHRoaXMuZ3JvdXAgfSkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EaWFsSXRlbUNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5pdGVtLm9uQ2xpY2spIHtcclxuICAgICAgZXZlbnQuaXRlbS5vbkNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdlRvVXNlclByb2ZpbGUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvdXNlclByb2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2TG9nb3V0KCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9hdXRoJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmF2SG9tZSgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5lbnZpcm9ubWVudC5zdGFydFVwUGFnZS5yZXBsYWNlKFwiX1wiLCBcIlwiKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNNb2JpbGVTY3JlZW4oKSB7XHJcbiAgICBjb25zdCB2ID0gWkNvbXBvbmVudEhlbHBlci5pc01vYmlsZVNjcmVlbigpO1xyXG4gICAgcmV0dXJuIHY7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25OYXZJdGVtQ2xpY2sobmF2SXRlbTogYW55KSB7XHJcbiAgICBpZiAobmF2SXRlbS5yb3V0ZSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG5hdkl0ZW0ucm91dGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVG8gc3RpbXVsYXRlIG5ldmVyIGNsb3NlXHJcbiAgLy8gcHVibGljIG9uQ2xvc2UoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAvLyB9XHJcbn1cclxuIiwiPGlvbi1oZWFkZXI+XHJcbiAgPGlvbi10b29sYmFyPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xiYXItY29udGFpbmVyXCIgKm5nSWY9XCIhaXNsb2FkaW5nXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLWZpcnN0LXJvd1wiPlxyXG4gICAgICAgIDxhcHAtdWltZW51YnV0dG9uIHNsb3Q9XCJzdGFydFwiIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpbWVudWJ1dHRvbj5cclxuXHJcbiAgICAgICAgPGlvbi10aXRsZSBjbGFzcz1cInRvb2xiYXItdGl0bGVcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0b3BGb3JtSGVhZGVyIHx8IChncm91cCAmJiAhZ3JvdXAuaXNMb2FkaW5nICYmIGdyb3VwLmZvcm1IZWFkZXIpXCI+XHJcbiAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJ0b29sYmFyLXRpdGxlLWxhYmVsXCI+e3sgdG9wRm9ybUhlYWRlciA/IHRvcEZvcm1IZWFkZXIgOiBncm91cC5mb3JtSGVhZGVyIH19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lvbi10aXRsZT5cclxuXHJcbiAgICAgICAgPGRpdiBzbG90PVwiZW5kXCIgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKVwiIGNsYXNzPVwiZW5kLXBhbmVsIGhvdmVyYWJsZVwiPlxyXG4gICAgICAgICAgPGFwcC11aWJ1bGxldGluICpuZ0lmPVwic2hvd0J1bGxldGluSWNvblwiPjwvYXBwLXVpYnVsbGV0aW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS12bFwiICpuZ0lmPVwic2hvd0J1bGxldGluSWNvblwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgIDxrZW5kby1mbG9hdGluZ2FjdGlvbmJ1dHRvbiBbZGlhbEl0ZW1zXT1cInVzZXJQYW5lbEl0ZW1zXCIgW29mZnNldF09XCJ7eDonLTVweCcsIHk6Jy01cHgnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cInsgdmVydGljYWw6ICd0b3AnLCBob3Jpem9udGFsOiAnZW5kJyB9XCIgW2RpYWxJdGVtQW5pbWF0aW9uXT10cnVlIGJ1dHRvbkNsYXNzPVwidXNlci1wYW5lbC1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxDbGFzcz1cInVzZXItcGFuZWwtZGlhbFwiIChkaWFsSXRlbUNsaWNrKT1cIm9uRGlhbEl0ZW1DbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0Zsb2F0aW5nQWN0aW9uQnV0dG9uVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGtlbmRvLWF2YXRhciBzaGFwZT1cImNpcmNsZVwiIFtpbWFnZVNyY109XCJwcm9maWxlSW1nVXJsXCI+PC9rZW5kby1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInByb2ZpbGUtdXNlcm5hbWVcIj57eyB1c2VyRGlzcGxheU5hbWUgfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvRGlhbEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaXNGb2N1c2VkPVwiaXNGb2N1c2VkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmN1c3RvbS1mb2N1c2VkLWNsYXNzXT1cImlzRm9jdXNlZFwiIGNsYXNzPVwidXNlci1wYW5lbC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIiBjbGFzcz1cInVzZXItcGFuZWwtaXRlbS1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyLXBhbmVsLW9wdGlvbi10ZXh0XCI+e3sgaXRlbS50ZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwva2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwICYmIGlzTW9iaWxlU2NyZWVuKClcIj5cclxuICAgICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwicHJpbWFyeVwiICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8YXBwLXVpYWN0aW9uYnV0dG9uIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpYWN0aW9uYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tYnV0dG9ucz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIERlc2lnbiAxIC0tPlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNlY29uZC1yb3dcIiAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGdyb3VwICYmIGdyb3VwLm5hdkl0ZW1zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1iYXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8a2VuZG8tYnJlYWRjcnVtYiBbaXRlbXNdPVwiZ3JvdXAubmF2SXRlbXNcIiBjbGFzcz1cIm5hdi1iYXJcIiAoaXRlbUNsaWNrKT1cIm9uTmF2SXRlbUNsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvQnJlYWRDcnVtYkl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtYmFyLWl0ZW1cIiBbY2xhc3MuY3VycmVudF09XCIhaXRlbS5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItaWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwva2VuZG8tYnJlYWRjcnVtYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICA8IS0tIERlc2lnbiAyIC0tPlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNlY29uZC1yb3dcIiAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGdyb3VwICYmIGdyb3VwLm5hdkl0ZW1zXCI+XHJcbiAgICAgICAgPGtlbmRvLWJyZWFkY3J1bWIgW2l0ZW1zXT1cImdyb3VwLm5hdkl0ZW1zXCIgY2xhc3M9XCJuYXYtYmFyXCIgKGl0ZW1DbGljayk9XCJvbk5hdkl0ZW1DbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUga2VuZG9CcmVhZENydW1iSXRlbVRlbXBsYXRlIGxldC1pdGVtIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtYmFyLWl0ZW1cIiBbY2xhc3MuY3VycmVudF09XCIhaXRlbS5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW2ljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItaWNvblwiIFtuZ0NsYXNzXT1cInsnaWNvbi13aXRoLXRleHQnOiBpdGVtLnRleHR9XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwva2VuZG8tYnJlYWRjcnVtYj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9pb24tdG9vbGJhcj5cclxuPC9pb24taGVhZGVyPlxyXG4iXX0=
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWloZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWloZWFkZXIvdWloZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWloZWFkZXIvdWloZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCLENBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHeEYsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUU5QiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUVHLGdCQUFnQixFQUN6QixNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7QUFTekIsTUFBTSxPQUFPLGlCQUFpQjtJQXVCNUIsdUJBQXVCO0lBRXZCLFlBQ1UsTUFBYyxFQUNkLGtCQUFzQyxFQUN0QyxZQUEwQixFQUMxQixXQUF3QixFQUN6QixrQkFBc0M7UUFKckMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDekIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXpCeEMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUlqQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsbUJBQWMsR0FBUTtZQUMzQjtnQkFDRSxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDMUM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsY0FBYztnQkFDcEIsSUFBSSxFQUFF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RU8sU0FBUztRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLGNBQWM7UUFDbkIsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUMsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sY0FBYyxDQUFDLE9BQVk7UUFDaEMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxQztJQUNILENBQUM7OzhHQXhHVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixnSENwQjlCLCtpSEFpRUE7MkZEN0NhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxjQUFjO29OQU1mLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL2ltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgWkNvcmVTZXJ2aWNlLCBBdXRoU2VydmljZSwgVHJhbnNsYXRpb25TZXJ2aWNlLCBGb250QXdlU29tZVNlcnZpY2UsXHJcbiAgWkdyb3VwLCBaQ29tcG9uZW50SGVscGVyXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtdWloZWFkZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3VpaGVhZGVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3VpaGVhZGVyLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgVWloZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgdG9wRm9ybUhlYWRlcjogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIGVudmlyb25tZW50O1xyXG4gIHB1YmxpYyBpc2xvYWRpbmcgPSB0cnVlOztcclxuICBwdWJsaWMgcHJvZmlsZUltZ1VybDogc3RyaW5nO1xyXG4gIHB1YmxpYyB1c2VybmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyB1c2VyRGlzcGxheU5hbWU6IHN0cmluZztcclxuICBwdWJsaWMgc2hvd0J1bGxldGluSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VyUGFuZWxJdGVtczogYW55ID0gWyBcclxuICAgIHtcclxuICAgICAgaWNvbjogJ3VzZXInLFxyXG4gICAgICB0ZXh0OiBcIlByb2ZpbGVcIixcclxuICAgICAgb25DbGljazogdGhpcy5uYXZUb1VzZXJQcm9maWxlLmJpbmQodGhpcyksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpY29uOiAnc2lnbi1vdXQtYWx0JyxcclxuICAgICAgdGV4dDogXCJMb2cgT3V0XCIsXHJcbiAgICAgIG9uQ2xpY2s6IHRoaXMubmF2TG9nb3V0LmJpbmQodGhpcyksXHJcbiAgICB9XHJcbiAgXTtcclxuICBwcml2YXRlIGxvYWRlZEVudmlyb25tZW50UHJvZmlsZU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyBiYWNrTmF2aWdhdGUgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6Y29yZVNlcnZpY2U6IFpDb3JlU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZvbnRBd2VTb21lU2VydmljZTogRm9udEF3ZVNvbWVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gdGhpcy56Y29yZVNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudC5wcm9maWxlTWVudSAmJiB0aGlzLmVudmlyb25tZW50LnByb2ZpbGVNZW51Lmxlbmd0aCA+IDAgJiYgIXRoaXMubG9hZGVkRW52aXJvbm1lbnRQcm9maWxlTWVudSkge1xyXG4gICAgICAvLyBCYXNlZCBvbiB0aGUgdGV4dCBjaGFyYWN0ZXJzLCBtaWdodCByZXF1aXJlZCB3aWR0aCBhZGp1c3RtZW50IGZvciB1c2VyLXBhbmVsLWRpYWwuay1mYWItaXRlbXMgaW4gZ2xvYmFsLnNjc3MuXHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQucHJvZmlsZU1lbnUuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBjb25zdCBuZXdJdGVtID0ge1xyXG4gICAgICAgICAgaWNvbjogaXRlbS5pY29uLFxyXG4gICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxyXG4gICAgICAgICAgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGl0ZW0udXJsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnVzZXJQYW5lbEl0ZW1zLnNwbGljZSgwLCAwLCBuZXdJdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubG9hZGVkRW52aXJvbm1lbnRQcm9maWxlTWVudSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hdXRoU2VydmljZS51c2VySXNBdXRoZW50aWNhdGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0VXNlclByb2ZpbGUoKTtcclxuICAgICAgdGhpcy50cmFuc2xhdGVVc2VyTWVudSgpO1xyXG4gICAgICB0aGlzLnNob3dCdWxsZXRpbkljb24gPSB0aGlzLnpjb3JlU2VydmljZS5nZXRFbnZpcm9ubWVudCgpLmJ1bGxldGluVXJsID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJQcm9maWxlKCkge1xyXG4gICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbikge1xyXG4gICAgICB0aGlzLnByb2ZpbGVJbWdVcmwgPSB0aGlzLmVudmlyb25tZW50LmUxT2F1dGhVcmwgKyAnL2FwaS9Qcm9maWxlSW1hZ2U/aWQ9JyArIHRoaXMuYXV0aFNlcnZpY2UuZTFUb2tlbi5teVByb2ZpbGUuVXNlck5hbWUgKyAnJnNpemU9ODB4ODAnO1xyXG4gICAgICBjb25zdCBfbXlQcm9maWxlID0gdGhpcy5hdXRoU2VydmljZS5lMVRva2VuLm15UHJvZmlsZTtcclxuICAgICAgaWYgKF9teVByb2ZpbGUpIHtcclxuICAgICAgICB0aGlzLnVzZXJuYW1lID0gX215UHJvZmlsZS5Vc2VyTmFtZTtcclxuICAgICAgICB0aGlzLnVzZXJEaXNwbGF5TmFtZSA9IF9teVByb2ZpbGUuTGFzdE5hbWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlVXNlck1lbnUoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS4kdHJhbnNsYXRlSXRlbUxpc3QodGhpcy51c2VyUGFuZWxJdGVtcywgXCJ0ZXh0XCIsIHsgZWxlbWVudE5hbWU6ICdtZW51JywgZ3JvdXA6IHRoaXMuZ3JvdXAgfSkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25EaWFsSXRlbUNsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5pdGVtLm9uQ2xpY2spIHtcclxuICAgICAgZXZlbnQuaXRlbS5vbkNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5hdlRvVXNlclByb2ZpbGUoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvdXNlclByb2ZpbGUnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbmF2TG9nb3V0KCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9hdXRoJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmF2SG9tZSgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5lbnZpcm9ubWVudC5zdGFydFVwUGFnZS5yZXBsYWNlKFwiX1wiLCBcIlwiKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNNb2JpbGVTY3JlZW4oKSB7XHJcbiAgICBjb25zdCB2ID0gWkNvbXBvbmVudEhlbHBlci5pc01vYmlsZVNjcmVlbigpO1xyXG4gICAgcmV0dXJuIHY7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25OYXZJdGVtQ2xpY2sobmF2SXRlbTogYW55KSB7XHJcbiAgICBpZiAobmF2SXRlbS5yb3V0ZSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG5hdkl0ZW0ucm91dGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVG8gc3RpbXVsYXRlIG5ldmVyIGNsb3NlXHJcbiAgLy8gcHVibGljIG9uQ2xvc2UoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAvLyB9XHJcbn1cclxuIiwiPGlvbi1oZWFkZXI+XHJcbiAgPGlvbi10b29sYmFyPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xiYXItY29udGFpbmVyXCIgKm5nSWY9XCIhaXNsb2FkaW5nXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLWZpcnN0LXJvd1wiPlxyXG4gICAgICAgIDxhcHAtdWltZW51YnV0dG9uIHNsb3Q9XCJzdGFydFwiIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpbWVudWJ1dHRvbj5cclxuXHJcbiAgICAgICAgPGlvbi10aXRsZSBjbGFzcz1cInRvb2xiYXItdGl0bGVcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0b3BGb3JtSGVhZGVyIHx8IChncm91cCAmJiAhZ3JvdXAuaXNMb2FkaW5nICYmIGdyb3VwLmZvcm1IZWFkZXIpXCI+XHJcbiAgICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJ0b29sYmFyLXRpdGxlLWxhYmVsXCI+e3sgdG9wRm9ybUhlYWRlciA/IHRvcEZvcm1IZWFkZXIgOiBncm91cC5mb3JtSGVhZGVyIH19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lvbi10aXRsZT5cclxuXHJcbiAgICAgICAgPGRpdiBzbG90PVwiZW5kXCIgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKVwiIGNsYXNzPVwiZW5kLXBhbmVsIGhvdmVyYWJsZVwiPlxyXG4gICAgICAgICAgPGFwcC11aWJ1bGxldGluICpuZ0lmPVwic2hvd0J1bGxldGluSWNvblwiPjwvYXBwLXVpYnVsbGV0aW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS12bFwiICpuZ0lmPVwic2hvd0J1bGxldGluSWNvblwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgIDxrZW5kby1mbG9hdGluZ2FjdGlvbmJ1dHRvbiBbZGlhbEl0ZW1zXT1cInVzZXJQYW5lbEl0ZW1zXCIgW29mZnNldF09XCJ7eDonLTVweCcsIHk6Jy01cHgnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cInsgdmVydGljYWw6ICd0b3AnLCBob3Jpem9udGFsOiAnZW5kJyB9XCIgW2RpYWxJdGVtQW5pbWF0aW9uXT10cnVlIGJ1dHRvbkNsYXNzPVwidXNlci1wYW5lbC1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxDbGFzcz1cInVzZXItcGFuZWwtZGlhbFwiIChkaWFsSXRlbUNsaWNrKT1cIm9uRGlhbEl0ZW1DbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0Zsb2F0aW5nQWN0aW9uQnV0dG9uVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGtlbmRvLWF2YXRhciBzaGFwZT1cImNpcmNsZVwiIFtpbWFnZVNyY109XCJwcm9maWxlSW1nVXJsXCI+PC9rZW5kby1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cInByb2ZpbGUtdXNlcm5hbWVcIj57eyB1c2VyRGlzcGxheU5hbWUgfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvRGlhbEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaXNGb2N1c2VkPVwiaXNGb2N1c2VkXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmN1c3RvbS1mb2N1c2VkLWNsYXNzXT1cImlzRm9jdXNlZFwiIGNsYXNzPVwidXNlci1wYW5lbC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIiBjbGFzcz1cInVzZXItcGFuZWwtaXRlbS1pY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1c2VyLXBhbmVsLW9wdGlvbi10ZXh0XCI+e3sgaXRlbS50ZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwva2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwICYmIGlzTW9iaWxlU2NyZWVuKClcIj5cclxuICAgICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwicHJpbWFyeVwiICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgICA8YXBwLXVpYWN0aW9uYnV0dG9uIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpYWN0aW9uYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tYnV0dG9ucz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIERlc2lnbiAxIC0tPlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNlY29uZC1yb3dcIiAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGdyb3VwICYmIGdyb3VwLm5hdkl0ZW1zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1iYXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8a2VuZG8tYnJlYWRjcnVtYiBbaXRlbXNdPVwiZ3JvdXAubmF2SXRlbXNcIiBjbGFzcz1cIm5hdi1iYXJcIiAoaXRlbUNsaWNrKT1cIm9uTmF2SXRlbUNsaWNrKCRldmVudClcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvQnJlYWRDcnVtYkl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtYmFyLWl0ZW1cIiBbY2xhc3MuY3VycmVudF09XCIhaXRlbS5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItaWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwva2VuZG8tYnJlYWRjcnVtYj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICA8IS0tIERlc2lnbiAyIC0tPlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNlY29uZC1yb3dcIiAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGdyb3VwICYmIGdyb3VwLm5hdkl0ZW1zXCI+XHJcbiAgICAgICAgPGtlbmRvLWJyZWFkY3J1bWIgW2l0ZW1zXT1cImdyb3VwLm5hdkl0ZW1zXCIgY2xhc3M9XCJuYXYtYmFyXCIgKGl0ZW1DbGljayk9XCJvbk5hdkl0ZW1DbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUga2VuZG9CcmVhZENydW1iSXRlbVRlbXBsYXRlIGxldC1pdGVtIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtYmFyLWl0ZW1cIiBbY2xhc3MuY3VycmVudF09XCIhaXRlbS5yb3V0ZVwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW2ljb25dPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ6Y2FyZC1oZWFkZXItaWNvblwiIFtuZ0NsYXNzXT1cInsnaWNvbi13aXRoLXRleHQnOiBpdGVtLnRleHR9XCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0udGV4dCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwva2VuZG8tYnJlYWRjcnVtYj5cclxuICAgICAgPC9kaXY+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9pb24tdG9vbGJhcj5cclxuPC9pb24taGVhZGVyPlxyXG4iXX0=
|