mmhglobal-dynamicform 2.8.0 → 2.9.1

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.
@@ -471,10 +471,10 @@ export class SfquerybuilderComponent {
471
471
  }
472
472
  }
473
473
  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 });
474
- 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>\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"] }] });
474
+ 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"] }] });
475
475
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SfquerybuilderComponent, decorators: [{
476
476
  type: Component,
477
- 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>\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"] }]
477
+ 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"] }]
478
478
  }], ctorParameters: function () { return [{ type: i1.FieldService }, { type: i1.ResourceApiService }, { type: i1.WebApiService }]; }, propDecorators: { qryBldrObj: [{
479
479
  type: ViewChild,
480
480
  args: ['querybuilder']
@@ -485,4 +485,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
485
485
  }], form: [{
486
486
  type: Input
487
487
  }] } });
488
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2ZxdWVyeWJ1aWxkZXIvc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2ZxdWVyeWJ1aWxkZXIvc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFHdEYsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNTLGdCQUFnQixFQUFFLG9CQUFvQixFQUNoQyx3QkFBd0IsRUFDN0MsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBU3pCLE1BQU0sT0FBTyx1QkFBdUI7SUFrR2xDLFlBQ1UsWUFBMEIsRUFDMUIsa0JBQXNDLEVBQ3RDLGFBQTRCO1FBRjVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEs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QUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFTSxlQUFlLENBQUMsZ0JBQXFCO1FBQzFDLElBQUksZUFBZSxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsSUFBSSxlQUFlLEVBQUU7WUFDbkIsZUFBZSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLENBQUM7WUFFakQsSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQ2xDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BDLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzthQUMvQztTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QixDQUFDOztvSEE3aUJVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDhOQzVCcEMsaTRCQXNCQTsyRkRNYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usb0JBQW9CO2dLQUtILFVBQVU7c0JBQXBDLFNBQVM7dUJBQUMsY0FBYztnQkFFaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlbGF5LCBpZ25vcmVFbGVtZW50cywgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuLy9pbXBvcnQgeyBRdWVyeUJ1aWxkZXJDb25maWcsIFF1ZXJ5QnVpbGRlckNsYXNzTmFtZXMgfSBmcm9tICdhbmd1bGFyMi1xdWVyeS1idWlsZGVyJztcclxuaW1wb3J0IHsgUnVsZU1vZGVsLCBRdWVyeUJ1aWxkZXJDb21wb25lbnQsIENvbHVtbnNNb2RlbCwgVGVtcGxhdGVDb2x1bW4sIFJ1bGVDaGFuZ2VFdmVudEFyZ3MgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1xdWVyeWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBEcm9wRG93bkxpc3QsIE11bHRpU2VsZWN0IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWRyb3Bkb3ducyc7XHJcbmltcG9ydCB7IGdldENvbXBvbmVudCwgY3JlYXRlRWxlbWVudCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1iYXNlJztcclxuaW1wb3J0IHsgQ2hlY2tCb3ggfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYnV0dG9ucyc7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgRmllbGRTZXJ2aWNlLCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50UHJvcGVydGllcywgWkZpZWxkLCBaR3JvdXAsXHJcbiAgRm9udEF3ZVNvbWVTZXJ2aWNlLCBEZWZhdWx0UGFnZVNldHRpbmdQYXJhbXMsIFdlYkFwaVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZVxyXG59IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5kZWNsYXJlIHZhciAkOiBhbnlcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNmcXVlcnlidWlsZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NmcXVlcnlidWlsZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZnF1ZXJ5YnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgncXVlcnlidWlsZGVyJykgcXJ5Qmxkck9iajogUXVlcnlCdWlsZGVyQ29tcG9uZW50O1xyXG4gIC8vQElucHV0KCkgY2xhc3NOYW1lczogUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcztcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIHFiSXRlbXMgPSB7fTtcclxuXHJcbiAgcHVibGljIGNvbXBvbmVudFByb3BlcnRpZXMgPSBuZXcgWkNvbXBvbmVudFByb3BlcnRpZXMoKTtcclxuICBwdWJsaWMgaXNzZkxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBxdWVyeUN0cmw6IGFueTtcclxuICAvL3B1YmxpYyBjdXJyZW50Q29uZmlnOiBRdWVyeUJ1aWxkZXJDb25maWcgPSB7XHJcbiAgLy8gIGZpZWxkczoge30sXHJcbiAgLy8gIGFsbG93RW1wdHlSdWxlc2V0czogdHJ1ZVxyXG4gIC8vfTtcclxuICBwdWJsaWMgYWxsb3dSdWxlc2V0OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgYWxsb3dDb2xsYXBzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcnVsZTogYW55O1xyXG4gIHB1YmxpYyBmaWx0ZXJzOiBhbnk7XHJcbiAgcHJpdmF0ZSBmaWVsZHM6IGFueTtcclxuICBwdWJsaWMgZGlzcGxheVJ1bGU6IGFueSA9ICcnO1xyXG5cclxuICBwcml2YXRlIGxvYWRlZERyb3Bkb3duT3B0aW9ucyA9IFtdO1xyXG5cclxuICAvL3NmXHJcbiAgcHVibGljIHNmRGF0YTogT2JqZWN0W107XHJcbiAgcHVibGljIGltcG9ydFJ1bGVzOiBSdWxlTW9kZWw7XHJcbiAgcHVibGljIHNkRmlsdGVyOiBDb2x1bW5zTW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZlFCVGVtcGxhdGU6IFRlbXBsYXRlQ29sdW1uO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGVxdWFsT3BlcmF0b3IgPSB7IHZhbHVlOiAnZXF1YWwnLCBrZXk6ICdFcXVhbHMnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBub3RlcXVhbE9wZXJhdG9yID0geyB2YWx1ZTogJ25vdGVxdWFsJywga2V5OiAnTm90IEVxdWFscycgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0c3dpdGhPcGVyYXRvciA9IHsgdmFsdWU6ICdzdGFydHN3aXRoJywga2V5OiAnU3RhcnQgV2l0aCcgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVuZHN3aXRoT3BlcmF0b3IgPSB7IHZhbHVlOiAnZW5kc3dpdGgnLCBrZXk6ICdFbmQgV2l0aCcgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhaW5zT3BlcmF0b3IgPSB7IHZhbHVlOiAnY29udGFpbnMnLCBrZXk6ICdDb250YWlucycgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGlzZW1wdHlPcGVyYXRvciA9IHsgdmFsdWU6ICdpc2VtcHR5Jywga2V5OiAnSXMgRW1wdHknIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc25vdGVtcHR5T3BlcmF0b3IgPSB7IHZhbHVlOiAnaXNub3RlbXB0eScsIGtleTogJ0lzIE5vdCBFbXB0eScgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGlzbnVsbE9wZXJhdG9yID0geyB2YWx1ZTogJ2lzbnVsbCcsIGtleTogJ0lzIE51bGwnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc25vdG51bGxPcGVyYXRvciA9IHsgdmFsdWU6ICdpc25vdG51bGwnLCBrZXk6ICdJcyBOb3QgTnVsbCcgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGluT3BlcmF0b3IgPSB7IHZhbHVlOiAnaW4nLCBrZXk6ICdJbicgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IG5vdGluT3BlcmF0b3IgPSB7IHZhbHVlOiAnbm90aW4nLCBrZXk6ICdOb3QgSW4nIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IGdyZWF0ZXJ0aGFuT3BlcmF0b3IgPSB7IHZhbHVlOiAnZ3JlYXRlcnRoYW4nLCBrZXk6ICdHcmVhdGVyIFRoYW4nIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBncmVhdGVydGhhbm9yZXF1YWxPcGVyYXRvciA9IHsgdmFsdWU6ICdncmVhdGVydGhhbm9yZXF1YWwnLCBrZXk6ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWxzJyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGVzc3RoYW5PcGVyYXRvciA9IHsgdmFsdWU6ICdsZXNzdGhhbicsIGtleTogJ0xlc3MgVGhhbicgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxlc3N0aGFub3JlcXVhbE9wZXJhdG9yID0geyB2YWx1ZTogJ2xlc3N0aGFub3JlcXVhbCcsIGtleTogJ0xlc3MgVGhhbiBPciBFcXVhbHMnIH07XHJcblxyXG4gIHB1YmxpYyBpbk9wZXJhdG9yczogc3RyaW5nW10gPSBbJ2luJywgJ25vdGluJ107XHJcbiAgcHVibGljIGRyb3Bkb3duT3BlcmF0b3JzOiBhbnkgPSBbXHJcbiAgICB0aGlzLmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmluT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGluT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbnVsbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc25vdG51bGxPcGVyYXRvclxyXG4gIF07XHJcbiAgcHVibGljIHN0cmluZ09wZXJhdG9yczogYW55ID0gW1xyXG4gICAgdGhpcy5lcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ub3RlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5zdGFydHN3aXRoT3BlcmF0b3IsXHJcbiAgICB0aGlzLmVuZHN3aXRoT3BlcmF0b3IsXHJcbiAgICB0aGlzLmNvbnRhaW5zT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzZW1wdHlPcGVyYXRvcixcclxuICAgIHRoaXMuaXNub3RlbXB0eU9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc251bGxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNub3RudWxsT3BlcmF0b3JcclxuICBdO1xyXG4gIHB1YmxpYyBpbnRlZ2VyT3BlcmF0b3JzOiBhbnkgPSBbXHJcbiAgICB0aGlzLmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmdyZWF0ZXJ0aGFuT3BlcmF0b3IsXHJcbiAgICB0aGlzLmdyZWF0ZXJ0aGFub3JlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5sZXNzdGhhbk9wZXJhdG9yLFxyXG4gICAgdGhpcy5sZXNzdGhhbm9yZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNudWxsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbm90bnVsbE9wZXJhdG9yXHJcbiAgXTtcclxuICBwdWJsaWMgZGF0ZU9wZXJhdG9yczogYW55ID0gW1xyXG4gICAgdGhpcy5lcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ub3RlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ncmVhdGVydGhhbk9wZXJhdG9yLFxyXG4gICAgdGhpcy5ncmVhdGVydGhhbm9yZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMubGVzc3RoYW5PcGVyYXRvcixcclxuICAgIHRoaXMubGVzc3RoYW5vcmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbnVsbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc25vdG51bGxPcGVyYXRvclxyXG4gIF07XHJcbiAgcHVibGljIGJvb2xlYW5PcGVyYXRvcnM6IGFueSA9IFtcclxuICAgIHRoaXMuZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMubm90ZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNudWxsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbm90bnVsbE9wZXJhdG9yXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIHNlbGVjdGlvbkNvbXBvbmVudExpc3QgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZpZWxkU2VydmljZTogRmllbGRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG5cclxuICAgIG9mKHRydWUpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChfID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iZWZvcmVMb2FkRmllbGQodGhpcy5kYXRhKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcChkYXRhID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhIGFzIFpGaWVsZDtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcChfID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkUXVlcnlCdWlsZGVyKCk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIFdoZXJlIHRvIHVwZGF0ZSBvcGVyYXRvciBzeW50YXhcclxuICAgICAgLy8gMS4gRTEgLSBxdWVyeUJ1aWxkZXJUZW1wbGF0ZTJcclxuICAgICAgLy8gMi4gc2hhcmVkIGZvbGRlciA+IGhlbHBlciA+IHF1ZXJ5YnVpbGRlci1maWVsZGluZm8taGVscGVyLnRzXHJcbiAgICAgIC8vIDMuIHBhdGNoIGRiIGRhdGEgd2l0aCBzbWFsbCBjYXBpdGFsIGxldHRlclxyXG5cclxuICAgICAgLy90aGlzLmlzc2ZMb2FkZWQgPSB0cnVlOyAgXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFF1ZXJ5QnVpbGRlcigpIHtcclxuICAgIGlmICh0aGlzLmRhdGFbJ0FsbG93Q29sbGFwc2UnXSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmFsbG93Q29sbGFwc2UgPSB0aGlzLmRhdGFbJ0FsbG93Q29sbGFwc2UnXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhWydBbGxvd1J1bGVzZXQnXSA9PT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5hbGxvd1J1bGVzZXQgPSB0aGlzLmRhdGFbJ0FsbG93UnVsZXNldCddO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFbJ0ZpbHRlcnMnXSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICB0aGlzLmRhdGFbJ0ZpbHRlcnMnXSxcclxuICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLmZpZWxkU2VydmljZS5nZXRGb3JtRmllbGRDb2RlKHRoaXMuZGF0YS5WYWx1ZSwgXCJGb3JtRmllbGRcIiwgbnVsbCwgbnVsbCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGlzR3JvdXBlZCA9IHRydWU7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpZWxkcy5waXBlKFxyXG4gICAgICAgIHRhcCgoZGF0YTogW10pID0+IHtcclxuXHJcbiAgICAgICAgICAvLyBpZiBbaXNHcm91cGVkID0gdHJ1ZV0gaW5jbHVkZSBncm91cGluZyBuYW1lIGFzIHByZWZpeFxyXG4gICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBpc0dyb3VwZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBkYXRhLmZvckVhY2goYXN5bmMgKGZpZWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRUeXBlKGZpZWxkLCBpc0dyb3VwZWQpO1xyXG4gICAgICAgICAgfSk7Ly9lbmQgZm9yZWFjaFxyXG5cclxuICAgICAgICAgIHRoaXMuaXNzZkxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImVycm9yOiBcIiwgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZW5kZXJDb21wb25lbnRUeXBlKGZpZWxkOiBhbnksIGlzR3JvdXBlZDogYm9vbGVhbiwgZmllbGRUaXRsZT86IHN0cmluZykge1xyXG4gICAgbGV0IGNvbXBvbmVudExhYmVsID0gZmllbGQuU3ViVHlwZSA/IGZpZWxkLkxhYmVsIDogZmllbGQuTGFiZWwgPz8gZmllbGQuTmFtZTtcclxuICAgIGNvbXBvbmVudExhYmVsID0gIWlzR3JvdXBlZCAmJiAhWkNvbXBvbmVudEhlbHBlci5pc051bGxVbmRlZmluZWRFbXB0eShmaWVsZFRpdGxlKSA/IFwiW1wiICsgZmllbGRUaXRsZSArIFwiXSBcIiArIGZpZWxkLkxhYmVsIDogIVpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkoZmllbGQuTGFiZWwpID8gZmllbGQuTGFiZWwgOiBmaWVsZC5OYW1lO1xyXG5cclxuICAgIGxldCBjb21wb25lbnRGaWVsZCA9ICFaQ29tcG9uZW50SGVscGVyLmlzTnVsbFVuZGVmaW5lZEVtcHR5KGZpZWxkVGl0bGUpID8gZmllbGRUaXRsZSArIFwiX1wiICsgZmllbGQuVmFsdWUgOiBmaWVsZC5WYWx1ZTtcclxuXHJcbiAgICBpZiAoZmllbGQuVHlwZSA9PT0gJ2NhdGVnb3J5JyB8fCBmaWVsZC5UeXBlID09PSAnbXVsdGlzZWxlY3QnIHx8IGZpZWxkLlR5cGUgPT09ICd6dWlzZWxlY3RtdWx0aXBsZScpIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5kcm9wZG93bk9wZXJhdG9ycyxcclxuICAgICAgICB0ZW1wbGF0ZTogYXdhaXQgdGhpcy5nZW5lcmF0ZUNvbHVtblNlbGVjdGlvbihmaWVsZCksXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmaWVsZC5UeXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5kYXRlT3BlcmF0b3JzLFxyXG4gICAgICAgIHR5cGU6ICdkYXRlJ1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZmllbGQuVHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5pbnRlZ2VyT3BlcmF0b3JzLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmaWVsZC5WYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHRoaXMuc2RGaWx0ZXIucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGNvbXBvbmVudEZpZWxkLFxyXG4gICAgICAgIGxhYmVsOiBjb21wb25lbnRMYWJlbCxcclxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgb3BlcmF0b3JzOiB0aGlzLmJvb2xlYW5PcGVyYXRvcnMsXHJcbiAgICAgICAgdGVtcGxhdGU6IGF3YWl0IHRoaXMuZ2VuZXJhdGVDb2x1bW5DaGVja2JveChmaWVsZC5OYW1lLCBmYWxzZSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZpZWxkLlR5cGUgPT09ICdrY2FyZCcpIHtcclxuICAgICAgaWYgKGZpZWxkLlZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmaWVsZC5WYWx1ZS5mb3JFYWNoKGFzeW5jIChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50VHlwZShpdGVtLCBpc0dyb3VwZWQsIGZpZWxkLlRpdGxlKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5zdHJpbmdPcGVyYXRvcnMsXHJcbiAgICAgICAgdHlwZTogJ3N0cmluZydcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBjaGVja2JveFxyXG4gIHByaXZhdGUgZ2VuZXJhdGVDb2x1bW5DaGVja2JveChsYWJlbDogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbik6IFRlbXBsYXRlQ29sdW1uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNyZWF0ZTogKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdpbnB1dCcsIHsgYXR0cnM6IHsgJ3R5cGUnOiAnY2hlY2tib3gnIH0gfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGRlc3Ryb3k6IChhcmdzOiB7IGVsZW1lbnRJZDogc3RyaW5nIH0pID0+IHtcclxuICAgICAgICAoZ2V0Q29tcG9uZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFyZ3MuZWxlbWVudElkKSwgJ2NoZWNrYm94JykgYXMgQ2hlY2tCb3gpLmRlc3Ryb3koKTtcclxuICAgICAgfSxcclxuICAgICAgd3JpdGU6IChhcmdzOiB7IGVsZW1lbnRzOiBFbGVtZW50LCB2YWx1ZXM6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYm94T2JqOiBDaGVja0JveCA9IG5ldyBDaGVja0JveCh7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgICBjaGVja2VkOiB2YWx1ZSxcclxuICAgICAgICAgIGNoYW5nZTogKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnFyeUJsZHJPYmoubm90aWZ5Q2hhbmdlKHZhbHVlLCBlLmV2ZW50LnRhcmdldCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYm94T2JqLmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIGRyb3Bkb3duL211bHRpc2VsZWN0XHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbHVtblNlbGVjdGlvbihmaWVsZEVsZW1lbnREYXRhOiBhbnkpOiBUZW1wbGF0ZUNvbHVtbiB7XHJcbiAgICByZXR1cm4ge1xyXG5cclxuICAgICAgLy8gQ3JlYXRlcyB0aGUgY3VzdG9tIGNvbXBvbmVudFxyXG4gICAgICBjcmVhdGU6ICgpID0+IHtcclxuICAgICAgICAvLyBBZGRpdGlvbmFsIGZpbHRlciBzZXQgaW4gdGhlIHBhZ2VcclxuICAgICAgICBpZiAodGhpcy5kYXRhWydGaWx0ZXJzJ10pIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVycyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChcclxuICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgdGhpcy5kYXRhWydGaWx0ZXJzJ10sXHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL3JldHVybiBjcmVhdGVFbGVtZW50KCdpbnB1dCcsIHsgYXR0cnM6IHsgJ3R5cGUnOiAndGV4dCcsICdzdHlsZSc6ICdkaXNwbGF5OiBub25lJyB9IH0pO1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdpbnB1dCcsIHsgYXR0cnM6IHsgJ3R5cGUnOiAndGV4dCcgfSB9KTtcclxuICAgICAgfSxcclxuXHJcbiAgICAgIC8vIERlc3Ryb3kgdGhlIGN1c3RvbSBjb21wb25lbnRcclxuICAgICAgZGVzdHJveTogKGFyZ3M6IHsgZWxlbWVudElkOiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIGlmIChhcmdzWydlbGVtZW50cyddKSB7XHJcbiAgICAgICAgICBsZXQgbXVsdGlTZWxlY3Q6IE11bHRpU2VsZWN0ID0gKGdldENvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmdzLmVsZW1lbnRJZCksICdtdWx0aXNlbGVjdCcpIGFzIE11bHRpU2VsZWN0KTtcclxuICAgICAgICAgIGlmIChtdWx0aVNlbGVjdCkge1xyXG4gICAgICAgICAgICBtdWx0aVNlbGVjdC5kZXN0cm95KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgZHJvcGRvd246IERyb3BEb3duTGlzdCA9IChnZXRDb21wb25lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJncy5lbGVtZW50SWQpLCAnZHJvcGRvd25saXN0JykgYXMgRHJvcERvd25MaXN0KTtcclxuICAgICAgICAgIGlmIChkcm9wZG93bikge1xyXG4gICAgICAgICAgICBkcm9wZG93bi5kZXN0cm95KCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0T3B0aW9ucyA9IGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXTtcclxuICAgICAgICAgIGlmIChzZWxlY3RPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTCA9IHNlbGVjdE9wdGlvbnNbJ1Jlc291cmNlVVJMJ107XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeFJlc291cmNlVVJMQ2hlY2tpbmcgPSBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgKyAnXycgKyBhcmdzLmVsZW1lbnRJZDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxvYWRlZERyb3Bkb3duT3B0aW9ucy5pbmNsdWRlcyhwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGVkRHJvcGRvd25PcHRpb25zID0gdGhpcy5yZW1vdmVBcnJheUl0ZW0odGhpcy5sb2FkZWREcm9wZG93bk9wdGlvbnMsIHByZWZpeFJlc291cmNlVVJMQ2hlY2tpbmcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG5cclxuICAgICAgLy8gV2lyZSBldmVudHMgZm9yIHRoZSBjdXN0b20gY29tcG9uZW50LlxyXG4gICAgICB3cml0ZTogKGFyZ3M6IHsgZWxlbWVudHM6IEVsZW1lbnQsIHZhbHVlczogc3RyaW5nW10gfCBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIC8vb3JpZ2luXHJcbiAgICAgICAgaWYgKGZpZWxkRWxlbWVudERhdGFbJ1ZhbHVlT3B0aW9ucyddKSB7XHJcbiAgICAgICAgICAvLyBjb252ZXJ0IHRvIHByb3BlcnR5IG5hbWUgdXNlZCBpbiB0aGUgY29tcG9uZW50IHJlbmRlcmluZ1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uTGlzdDogeyBbbmFtZTogc3RyaW5nXTogT2JqZWN0IH1bXSA9IFtdO1xyXG4gICAgICAgICAgZmllbGRFbGVtZW50RGF0YVsnVmFsdWVPcHRpb25zJ10uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogaXRlbVsnTmFtZSddLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtWydWYWx1ZSddXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb25Db21wb25lbnQgPSB0aGlzLmdlbmVyYXRlU2VsZWN0aW9uQ29tcG9uZW50KGFyZ3MsIG9wdGlvbkxpc3QpO1xyXG4gICAgICAgICAgc2VsZWN0aW9uQ29tcG9uZW50LmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbWFudWFsIGRyb3Bkb3duIG9yIHp1ZGYgbWFudWFsIGRyb3Bkb3duXHJcbiAgICAgICAgZWxzZSBpZiAoZmllbGRFbGVtZW50RGF0YVsnU2VsZWN0T3B0aW9ucyddICYmIEFycmF5LmlzQXJyYXkoZmllbGRFbGVtZW50RGF0YVsnU2VsZWN0T3B0aW9ucyddKSkge1xyXG4gICAgICAgICAgLy8gY29udmVydCB0byBwcm9wZXJ0eSBuYW1lIHVzZWQgaW4gdGhlIGNvbXBvbmVudCByZW5kZXJpbmdcclxuICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3Q6IHsgW25hbWU6IHN0cmluZ106IE9iamVjdCB9W10gPSBbXTtcclxuICAgICAgICAgIGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgb3B0aW9uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICB0ZXh0OiBpdGVtWyd0ZXh0J10sXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bJ3ZhbHVlJ11cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkNvbXBvbmVudCA9IHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJncywgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgICBzZWxlY3Rpb25Db21wb25lbnQuYXBwZW5kVG8oJyMnICsgYXJncy5lbGVtZW50cy5pZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB6dWRmIFJlc291cmNlVVJMIC8gQ29tbW9uIE1hc3RlciBkcm9wZG93blxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0T3B0aW9ucyA9IGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXTtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTCA9IHNlbGVjdE9wdGlvbnNbJ1Jlc291cmNlVVJMJ107XHJcblxyXG4gICAgICAgICAgLy8gUmVzb3VyY2VVUkwgZHJvcGRvd25cclxuICAgICAgICAgIGlmIChzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJlZml4UmVzb3VyY2VVUkxDaGVja2luZyA9IHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTCArICdfJyArIGFyZ3MuZWxlbWVudHMuaWQ7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGVkRHJvcGRvd25PcHRpb25zLmluY2x1ZGVzKHByZWZpeFJlc291cmNlVVJMQ2hlY2tpbmcpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZWREcm9wZG93bk9wdGlvbnMucHVzaChwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVycykge1xyXG4gICAgICAgICAgICAgICAgc2VsZWN0T3B0aW9uc1snRmlsdGVycyddID0gdGhpcy5maWx0ZXJzO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0UGFnZVNldHRpbmdQYXJhbXMpO1xyXG4gICAgICAgICAgICAgIHBhcmFtLnBhZ2VTaXplID0gc2VsZWN0T3B0aW9uc1snUGFnZVNpemUnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5jb2x1bW5zID0gc2VsZWN0T3B0aW9uc1snQ29sdW1ucyddO1xyXG4gICAgICAgICAgICAgIHBhcmFtLmZpbHRlcnMgKz0gc2VsZWN0T3B0aW9uc1snRmlsdGVycyddO1xyXG4gICAgICAgICAgICAgIHBhcmFtLnNvcnRDb2x1bW5OYW1lID0gc2VsZWN0T3B0aW9uc1snU29ydENvbHVtbk5hbWUnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5zb3J0T3JkZXIgPSBzZWxlY3RPcHRpb25zWydTb3J0T3JkZXInXTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gTmVlZCBkZWxheSA0MDBtcyBpZiBub3QgM3JkIHNlZ21lbnQgKHZhbHVlKSB3aWxsIG5vdCBiZSByZW5kZXJlZC5cclxuICAgICAgICAgICAgICB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cFBvc3QkKHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFBhZ2VVcmwoc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMKSwgcGFyYW0pLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBkZWxheSg0MDApLFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhU2V0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtW3NlbGVjdE9wdGlvbnNbJ05hbWUnXV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVtzZWxlY3RPcHRpb25zWydWYWx1ZSddXVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29tcG9uZW50ID0gdGhpcy5nZW5lcmF0ZVNlbGVjdGlvbkNvbXBvbmVudChhcmdzLCBvcHRpb25MaXN0KTtcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ29tcG9uZW50LmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy9jb25zdCB4eHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmdzLmVsZW1lbnRzLmlkKTtcclxuICAgICAgICAgICAgICAgICAgLy8vL3h4eC5hcHBlbmRDaGlsZChpbnB1dEVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAvL3h4eC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vI3JlZ2lvbiB1c2VkIGZvciB1cGRhdGVTZWxlY3Rpb25PcHRpb25cclxuICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuc2VsZWN0aW9uQ29tcG9uZW50TGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY29tcG9uZW50SWQgPT09IGFyZ3MuZWxlbWVudHMuaWRcclxuICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE9iamVjdCB3aXRoIHRoZSBzYW1lIGNvbXBvbmVudElkIGV4aXN0cywgcmVwbGFjZSByZXNvdXJjZVVybFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29tcG9uZW50TGlzdFtleGlzdGluZ0luZGV4XS5yZXNvdXJjZVVybCA9IHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTDtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPYmplY3Qgd2l0aCBjb21wb25lbnRJZCBkb2Vzbid0IGV4aXN0LCBwdXNoIGEgbmV3IG9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29tcG9uZW50TGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlVXJsOiBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRJZDogYXJncy5lbGVtZW50cy5pZFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vI2VuZHJlZ2lvblxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8genVkZiBDb21tb24gTWFzdGVyIGRyb3Bkb3duXHJcbiAgICAgICAgICBlbHNlIGlmIChmaWVsZEVsZW1lbnREYXRhLnp1ZGZEYXRhU291cmNlVHlwZSAmJiBmaWVsZEVsZW1lbnREYXRhLnp1ZGZEYXRhU291cmNlVHlwZSA9PT0gXCJyZXNvdXJjZVwiKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBleHRyYWN0IHp1ZGZfZHJvcGRvd24gZnJvbSBzZXNzaW9uIHN0b3JhZ2VcclxuICAgICAgICAgICAgY29uc3QgenVkZl9kcm9wZG93biA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJ6dWRmX2Ryb3Bkb3duXCIpID8gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwienVkZl9kcm9wZG93blwiKSkgOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAoenVkZl9kcm9wZG93bikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3QgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgenVkZl9kcm9wZG93bi5mb3JFYWNoKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gcmVzLnRleHQuc3BsaXQoXCJPcHRpb25zXCIpWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkRWxlbWVudERhdGEuTGFiZWwgPT09IG5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzLnZhbHVlLmZvckVhY2godmFsID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogdmFsWydOYW1lJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsWydJZCddXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29tcG9uZW50ID0gdGhpcy5nZW5lcmF0ZVNlbGVjdGlvbkNvbXBvbmVudChhcmdzLCBvcHRpb25MaXN0KTtcclxuICAgICAgICAgICAgICBzZWxlY3Rpb25Db21wb25lbnQuYXBwZW5kVG8oJyMnICsgYXJncy5lbGVtZW50cy5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBVc2VyIExpc3QgZHJvcGRvd25cclxuICAgICAgICAgIGVsc2UgaWYgKGZpZWxkRWxlbWVudERhdGEuenVkZkRhdGFTb3VyY2VUeXBlICYmIGZpZWxkRWxlbWVudERhdGEuenVkZkRhdGFTb3VyY2VUeXBlID09PSBcInVzZXJcIikge1xyXG4gICAgICAgICAgICBjb25zdCBvcHRpb25MaXN0ID0gW107XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXJMaXN0ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZT8uZ2V0SXRlbShcInVzZXJMaXN0XCIpID8/ICdudWxsJyk7XHJcblxyXG4gICAgICAgICAgICAvL2NvbnN0IGFycmF5VGVzdCA9IHVzZXJMaXN0Lm1hcCgoeyBTZWxlY3Rpb25OYW1lLCBJZCB9KSA9PiAoeyB0ZXh0OiBTZWxlY3Rpb25OYW1lLCB2YWx1ZTogSWQgfSkpO1xyXG4gICAgICAgICAgICB1c2VyTGlzdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbVsnU2VsZWN0aW9uTmFtZSddLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bJ0lkJ11cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkNvbXBvbmVudCA9IHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJncywgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgICAgIHNlbGVjdGlvbkNvbXBvbmVudC5hcHBlbmRUbygnIycgKyBhcmdzLmVsZW1lbnRzLmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0vL2VuZCB3cml0ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVNlbGVjdGlvbk9wdGlvbihyZXNvdXJjZVVybDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ29tcG9uZW50TGlzdC5mb3JFYWNoKHNlbGVjdGlvbkNvbXBvbmVudCA9PiB7XHJcbiAgICAgIGxldCBtdWx0aVNlbGVjdDogTXVsdGlTZWxlY3QgPSAoZ2V0Q29tcG9uZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdGlvbkNvbXBvbmVudC5jb21wb25lbnRJZCksICdtdWx0aXNlbGVjdCcpIGFzIE11bHRpU2VsZWN0KTtcclxuICAgICAgaWYgKG11bHRpU2VsZWN0KSB7XHJcbiAgICAgICAgbXVsdGlTZWxlY3QudmFsdWUgPSBkYXRhO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBkcm9wZG93bjogRHJvcERvd25MaXN0ID0gKGdldENvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3Rpb25Db21wb25lbnQuY29tcG9uZW50SWQpLCAnZHJvcGRvd25saXN0JykgYXMgRHJvcERvd25MaXN0KTtcclxuICAgICAgaWYgKGRyb3Bkb3duKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZFNlcnZpY2UuZGF0YUZvcm1GaWVsZHNbdGhpcy5kYXRhLlZhbHVlXS5mb3JFYWNoKGFzeW5jIChmaWVsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGQuU2VsZWN0T3B0aW9ucy5SZXNvdXJjZVVSTCA9PT0gc2VsZWN0aW9uQ29tcG9uZW50LnJlc291cmNlVXJsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBmaWVsZFsnU2VsZWN0T3B0aW9ucyddO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgPSBzZWxlY3RPcHRpb25zWydSZXNvdXJjZVVSTCddO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbSA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRQYWdlU2V0dGluZ1BhcmFtcyk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhWydGaWx0ZXJzJ10pIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhWydGaWx0ZXJzJ10sXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVycykge1xyXG4gICAgICAgICAgICAgIHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXSA9IHRoaXMuZmlsdGVycztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcGFyYW0ucGFnZVNpemUgPSBzZWxlY3RPcHRpb25zWydQYWdlU2l6ZSddO1xyXG4gICAgICAgICAgICBwYXJhbS5jb2x1bW5zID0gc2VsZWN0T3B0aW9uc1snQ29sdW1ucyddO1xyXG4gICAgICAgICAgICBwYXJhbS5maWx0ZXJzICs9IHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXTtcclxuICAgICAgICAgICAgcGFyYW0uc29ydENvbHVtbk5hbWUgPSBzZWxlY3RPcHRpb25zWydTb3J0Q29sdW1uTmFtZSddO1xyXG4gICAgICAgICAgICBwYXJhbS5zb3J0T3JkZXIgPSBzZWxlY3RPcHRpb25zWydTb3J0T3JkZXInXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMud2ViQXBpU2VydmljZS5odHRwUG9zdCQodGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0UGFnZVVybChzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwpLCBwYXJhbSkucGlwZShcclxuICAgICAgICAgICAgICBtYXAoKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgIHJlc3AuZGF0YVNldC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgb3B0aW9uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtW3NlbGVjdE9wdGlvbnNbJ05hbWUnXV0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bc2VsZWN0T3B0aW9uc1snVmFsdWUnXV1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIGRyb3Bkb3duLmRhdGFTb3VyY2UgPSBvcHRpb25MaXN0O1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUFycmF5SXRlbTxUPihhcnI6IEFycmF5PFQ+LCB2YWx1ZTogVCk6IEFycmF5PFQ+IHtcclxuICAgIGNvbnN0IGluZGV4ID0gYXJyLmluZGV4T2YodmFsdWUpO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgYXJyLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZVNlbGVjdGlvbkNvbXBvbmVudChhcmdzOiBhbnksIG9wdGlvbkxpc3Q6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaW5PcGVyYXRvcnMuaW5kZXhPZihhcmdzLm9wZXJhdG9yKSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiBuZXcgTXVsdGlTZWxlY3Qoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IG9wdGlvbkxpc3QsXHJcbiAgICAgICAgZmllbGRzOiB7IHRleHQ6ICd0ZXh0JywgdmFsdWU6ICd2YWx1ZScgfSxcclxuICAgICAgICB2YWx1ZTogYXJncy52YWx1ZXMgYXMgc3RyaW5nW10sXHJcbiAgICAgICAgbW9kZTogJ0NoZWNrQm94JyxcclxuICAgICAgICBjaGFuZ2U6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucXJ5Qmxkck9iai5ub3RpZnlDaGFuZ2UoZS52YWx1ZSwgZS5lbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRHJvcERvd25MaXN0KHtcclxuICAgICAgICBkYXRhU291cmNlOiBvcHRpb25MaXN0LFxyXG4gICAgICAgIGZpZWxkczogeyB0ZXh0OiAndGV4dCcsIHZhbHVlOiAndmFsdWUnIH0sXHJcbiAgICAgICAgdmFsdWU6IGFyZ3MudmFsdWVzIGFzIHN0cmluZyxcclxuICAgICAgICBjaGFuZ2U6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGUudmFsdWUgIT09IG51bGwgPyB0aGlzLnFyeUJsZHJPYmoubm90aWZ5Q2hhbmdlKGUuaXRlbURhdGEudmFsdWUsIGUuZWxlbWVudCkgOiBpZ25vcmVFbGVtZW50cztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcHVibGljIHNldFF1ZXJ5VmFsdWUoc2F2ZWREYXRhOiBhbnkpIHtcclxuICAgIC8vaWYgKCF0aGlzLnFyeUJsZHJPYmopIHtcclxuICAgIC8vICBjb25zb2xlLndhcm4oJ3F1ZXJ5IGJ1aWxkZXIgb2JqZWN0IGlzIG51bGwuJyk7XHJcbiAgICAvLyAgcmV0dXJuO1xyXG4gICAgLy99XHJcblxyXG4gICAgaWYgKHNhdmVkRGF0YSkge1xyXG4gICAgICB0aGlzLnFyeUJsZHJPYmouc2V0UnVsZXMoc2F2ZWREYXRhKTtcclxuICAgICAgdGhpcy51cGRhdGVSdWxlKHsgcnVsZTogc2F2ZWREYXRhIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFJlc3VsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnFyeUJsZHJPYmouZ2V0UnVsZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVSdWxlKGFyZ3M6IFJ1bGVDaGFuZ2VFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzcGxheVJ1bGUgPSBKU09OLnN0cmluZ2lmeShhcmdzLnJ1bGUsIG51bGwsIDEyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlUnVsZSh7IHJ1bGU6IHRoaXMucXJ5Qmxkck9iai5nZXRWYWxpZFJ1bGVzKHRoaXMucXJ5Qmxkck9iai5ydWxlKSB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBiZWZvcmVMb2FkRmllbGQoZmllbGRFbGVtZW50RGF0YTogYW55KSB7XHJcbiAgICBsZXQgYmVmb3JlTG9hZEZpZWxkID0gZmllbGRFbGVtZW50RGF0YVsnQmVmb3JlTG9hZEZpZWxkJ107XHJcbiAgICBpZiAoYmVmb3JlTG9hZEZpZWxkKSB7XHJcbiAgICAgIGJlZm9yZUxvYWRGaWVsZCA9IGJlZm9yZUxvYWRGaWVsZC5yZXBsYWNlKCdtb2RhbEdyb3VwLicsICdncm91cC4nKTtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSBldmFsKCd0aGlzLicgKyBiZWZvcmVMb2FkRmllbGQpO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBjYWxsRnVuYyA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgY29uc3QgbmV3RnVuYyA9IGNhbGxGdW5jLmJpbmQodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIG5ld0Z1bmMoZXZlbnQsIHRoaXMsIGZpZWxkRWxlbWVudERhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2YoZmllbGRFbGVtZW50RGF0YSk7XHJcbiAgfVxyXG59XHJcblxyXG4vL2V4cG9ydCBlbnVtIG9wZXJhdG9ycyB7XHJcbi8vICBJbiA9ICdpbicsXHJcbi8vfVxyXG5cclxuXHJcbi8vZXhwb3J0IGludGVyZmFjZSBRdWVyeVJ1bGUge1xyXG4vLyAgY29uZGl0aW9uOiBzdHJpbmc7XHJcbi8vICBydWxlczogUXVlcnlSdWxlW107XHJcbi8vICBmaWVsZDogc3RyaW5nO1xyXG4vLyAgdHlwZTogc3RyaW5nO1xyXG4vLyAgb3BlcmF0b3I6IHN0cmluZztcclxuLy8gIHZhbHVlOiBzdHJpbmdbXTtcclxuLy99XHJcblxyXG4vL2V4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5UnVsZShxdWVyeUJ1aWxkZXJNb2RlbDogYW55KTogUXVlcnlSdWxlIHtcclxuLy8gIGxldCBydWxlID0gPFF1ZXJ5UnVsZT57fTtcclxuLy8gIGlmIChxdWVyeUJ1aWxkZXJNb2RlbC5jb25kaXRpb24pIHtcclxuLy8gICAgcnVsZS5jb25kaXRpb24gPSBxdWVyeUJ1aWxkZXJNb2RlbC5jb25kaXRpb247XHJcbi8vICAgIHJ1bGUucnVsZXMgPSBxdWVyeUJ1aWxkZXJNb2RlbC5ydWxlcy5tYXAocSA9PiB0b1F1ZXJ5UnVsZShxKSk7XHJcbi8vICB9XHJcbi8vICBlbHNlIHtcclxuLy8gICAgcnVsZS5maWVsZCA9IHF1ZXJ5QnVpbGRlck1vZGVsLmZpZWxkO1xyXG4vLyAgICBydWxlLnR5cGUgPSAnc3RyaW5nJztcclxuLy8gICAgcnVsZS5vcGVyYXRvciA9ICdlcXVhbCc7XHJcbi8vICAgIHJ1bGUudmFsdWUgPSBxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZSBpbnN0YW5jZW9mIEFycmF5XHJcbi8vICAgICAgPyBxdWVyeUJ1aWxkZXJNb2RlbC50eXBlID09PSAnZGF0ZScgPyBuZXcgRGF0ZShxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZSkgOiBxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZVxyXG4vLyAgICAgIDogW3F1ZXJ5QnVpbGRlck1vZGVsLnR5cGUgPT09ICdkYXRlJyA/IG5ldyBEYXRlKHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlKSA6IHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlXTtcclxuLy8gIH1cclxuLy8gIHJldHVybiBydWxlO1xyXG4vL31cclxuIiwiPGlvbi1pdGVtICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpXCI+XHJcbiAgPGRpdiBjbGFzcz1cInFiY29udGFpbmVyXCI+XHJcbiAgICA8ZWpzLXF1ZXJ5YnVpbGRlciAqbmdJZj1cImlzc2ZMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgI3F1ZXJ5YnVpbGRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInNmRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJzZEZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcnVsZV09XCJpbXBvcnRSdWxlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAocnVsZUNoYW5nZSk9XCJ1cGRhdGVSdWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNyZWF0ZWQpPVwib25DaGFuZ2UoKVwiPlxyXG4gICAgPC9lanMtcXVlcnlidWlsZGVyPlxyXG5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxicj5cclxuICAgICAgPGlvbi1sYWJlbD5SZXN1bHQ8L2lvbi1sYWJlbD5cclxuICAgICAgPHRleHRhcmVhIGNsYXNzPVwib3V0cHV0XCJcclxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjZDNkM2QzOyB3aWR0aDogMTAwJTtcIj57e2Rpc3BsYXlSdWxlfX08L3RleHRhcmVhPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvaW9uLWl0ZW0+XHJcbiJdfQ==
488
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2ZxdWVyeWJ1aWxkZXIvc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2ZxdWVyeWJ1aWxkZXIvc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFHdEYsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNTLGdCQUFnQixFQUFFLG9CQUFvQixFQUNoQyx3QkFBd0IsRUFDN0MsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBU3pCLE1BQU0sT0FBTyx1QkFBdUI7SUFrR2xDLFlBQ1UsWUFBMEIsRUFDMUIsa0JBQXNDLEVBQ3RDLGFBQTRCO1FBRjVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEs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QUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFTSxlQUFlLENBQUMsZ0JBQXFCO1FBQzFDLElBQUksZUFBZSxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUQsSUFBSSxlQUFlLEVBQUU7WUFDbkIsZUFBZSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDLENBQUM7WUFFakQsSUFBSSxPQUFPLFFBQVEsS0FBSyxVQUFVLEVBQUU7Z0JBQ2xDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BDLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQzthQUMvQztTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QixDQUFDOztvSEE3aUJVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDhOQzVCcEMscTZCQXNCQTsyRkRNYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usb0JBQW9CO2dLQUtILFVBQVU7c0JBQXBDLFNBQVM7dUJBQUMsY0FBYztnQkFFaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlbGF5LCBpZ25vcmVFbGVtZW50cywgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuLy9pbXBvcnQgeyBRdWVyeUJ1aWxkZXJDb25maWcsIFF1ZXJ5QnVpbGRlckNsYXNzTmFtZXMgfSBmcm9tICdhbmd1bGFyMi1xdWVyeS1idWlsZGVyJztcclxuaW1wb3J0IHsgUnVsZU1vZGVsLCBRdWVyeUJ1aWxkZXJDb21wb25lbnQsIENvbHVtbnNNb2RlbCwgVGVtcGxhdGVDb2x1bW4sIFJ1bGVDaGFuZ2VFdmVudEFyZ3MgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1xdWVyeWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBEcm9wRG93bkxpc3QsIE11bHRpU2VsZWN0IH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWRyb3Bkb3ducyc7XHJcbmltcG9ydCB7IGdldENvbXBvbmVudCwgY3JlYXRlRWxlbWVudCB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1iYXNlJztcclxuaW1wb3J0IHsgQ2hlY2tCb3ggfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYnV0dG9ucyc7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgRmllbGRTZXJ2aWNlLCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50UHJvcGVydGllcywgWkZpZWxkLCBaR3JvdXAsXHJcbiAgRm9udEF3ZVNvbWVTZXJ2aWNlLCBEZWZhdWx0UGFnZVNldHRpbmdQYXJhbXMsIFdlYkFwaVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZVxyXG59IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcblxyXG5kZWNsYXJlIHZhciAkOiBhbnlcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNmcXVlcnlidWlsZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2ZxdWVyeWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NmcXVlcnlidWlsZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZnF1ZXJ5YnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgncXVlcnlidWlsZGVyJykgcXJ5Qmxkck9iajogUXVlcnlCdWlsZGVyQ29tcG9uZW50O1xyXG4gIC8vQElucHV0KCkgY2xhc3NOYW1lczogUXVlcnlCdWlsZGVyQ2xhc3NOYW1lcztcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIHFiSXRlbXMgPSB7fTtcclxuXHJcbiAgcHVibGljIGNvbXBvbmVudFByb3BlcnRpZXMgPSBuZXcgWkNvbXBvbmVudFByb3BlcnRpZXMoKTtcclxuICBwdWJsaWMgaXNzZkxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBxdWVyeUN0cmw6IGFueTtcclxuICAvL3B1YmxpYyBjdXJyZW50Q29uZmlnOiBRdWVyeUJ1aWxkZXJDb25maWcgPSB7XHJcbiAgLy8gIGZpZWxkczoge30sXHJcbiAgLy8gIGFsbG93RW1wdHlSdWxlc2V0czogdHJ1ZVxyXG4gIC8vfTtcclxuICBwdWJsaWMgYWxsb3dSdWxlc2V0OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgYWxsb3dDb2xsYXBzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBwZXJzaXN0VmFsdWVPbkZpZWxkQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcnVsZTogYW55O1xyXG4gIHB1YmxpYyBmaWx0ZXJzOiBhbnk7XHJcbiAgcHJpdmF0ZSBmaWVsZHM6IGFueTtcclxuICBwdWJsaWMgZGlzcGxheVJ1bGU6IGFueSA9ICcnO1xyXG5cclxuICBwcml2YXRlIGxvYWRlZERyb3Bkb3duT3B0aW9ucyA9IFtdO1xyXG5cclxuICAvL3NmXHJcbiAgcHVibGljIHNmRGF0YTogT2JqZWN0W107XHJcbiAgcHVibGljIGltcG9ydFJ1bGVzOiBSdWxlTW9kZWw7XHJcbiAgcHVibGljIHNkRmlsdGVyOiBDb2x1bW5zTW9kZWxbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZlFCVGVtcGxhdGU6IFRlbXBsYXRlQ29sdW1uO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGVxdWFsT3BlcmF0b3IgPSB7IHZhbHVlOiAnZXF1YWwnLCBrZXk6ICdFcXVhbHMnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBub3RlcXVhbE9wZXJhdG9yID0geyB2YWx1ZTogJ25vdGVxdWFsJywga2V5OiAnTm90IEVxdWFscycgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0c3dpdGhPcGVyYXRvciA9IHsgdmFsdWU6ICdzdGFydHN3aXRoJywga2V5OiAnU3RhcnQgV2l0aCcgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGVuZHN3aXRoT3BlcmF0b3IgPSB7IHZhbHVlOiAnZW5kc3dpdGgnLCBrZXk6ICdFbmQgV2l0aCcgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhaW5zT3BlcmF0b3IgPSB7IHZhbHVlOiAnY29udGFpbnMnLCBrZXk6ICdDb250YWlucycgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGlzZW1wdHlPcGVyYXRvciA9IHsgdmFsdWU6ICdpc2VtcHR5Jywga2V5OiAnSXMgRW1wdHknIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc25vdGVtcHR5T3BlcmF0b3IgPSB7IHZhbHVlOiAnaXNub3RlbXB0eScsIGtleTogJ0lzIE5vdCBFbXB0eScgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGlzbnVsbE9wZXJhdG9yID0geyB2YWx1ZTogJ2lzbnVsbCcsIGtleTogJ0lzIE51bGwnIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpc25vdG51bGxPcGVyYXRvciA9IHsgdmFsdWU6ICdpc25vdG51bGwnLCBrZXk6ICdJcyBOb3QgTnVsbCcgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGluT3BlcmF0b3IgPSB7IHZhbHVlOiAnaW4nLCBrZXk6ICdJbicgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IG5vdGluT3BlcmF0b3IgPSB7IHZhbHVlOiAnbm90aW4nLCBrZXk6ICdOb3QgSW4nIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IGdyZWF0ZXJ0aGFuT3BlcmF0b3IgPSB7IHZhbHVlOiAnZ3JlYXRlcnRoYW4nLCBrZXk6ICdHcmVhdGVyIFRoYW4nIH07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBncmVhdGVydGhhbm9yZXF1YWxPcGVyYXRvciA9IHsgdmFsdWU6ICdncmVhdGVydGhhbm9yZXF1YWwnLCBrZXk6ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWxzJyB9O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGVzc3RoYW5PcGVyYXRvciA9IHsgdmFsdWU6ICdsZXNzdGhhbicsIGtleTogJ0xlc3MgVGhhbicgfTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxlc3N0aGFub3JlcXVhbE9wZXJhdG9yID0geyB2YWx1ZTogJ2xlc3N0aGFub3JlcXVhbCcsIGtleTogJ0xlc3MgVGhhbiBPciBFcXVhbHMnIH07XHJcblxyXG4gIHB1YmxpYyBpbk9wZXJhdG9yczogc3RyaW5nW10gPSBbJ2luJywgJ25vdGluJ107XHJcbiAgcHVibGljIGRyb3Bkb3duT3BlcmF0b3JzOiBhbnkgPSBbXHJcbiAgICB0aGlzLmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmluT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGluT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbnVsbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc25vdG51bGxPcGVyYXRvclxyXG4gIF07XHJcbiAgcHVibGljIHN0cmluZ09wZXJhdG9yczogYW55ID0gW1xyXG4gICAgdGhpcy5lcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ub3RlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5zdGFydHN3aXRoT3BlcmF0b3IsXHJcbiAgICB0aGlzLmVuZHN3aXRoT3BlcmF0b3IsXHJcbiAgICB0aGlzLmNvbnRhaW5zT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzZW1wdHlPcGVyYXRvcixcclxuICAgIHRoaXMuaXNub3RlbXB0eU9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc251bGxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNub3RudWxsT3BlcmF0b3JcclxuICBdO1xyXG4gIHB1YmxpYyBpbnRlZ2VyT3BlcmF0b3JzOiBhbnkgPSBbXHJcbiAgICB0aGlzLmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLm5vdGVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmdyZWF0ZXJ0aGFuT3BlcmF0b3IsXHJcbiAgICB0aGlzLmdyZWF0ZXJ0aGFub3JlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5sZXNzdGhhbk9wZXJhdG9yLFxyXG4gICAgdGhpcy5sZXNzdGhhbm9yZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNudWxsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbm90bnVsbE9wZXJhdG9yXHJcbiAgXTtcclxuICBwdWJsaWMgZGF0ZU9wZXJhdG9yczogYW55ID0gW1xyXG4gICAgdGhpcy5lcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ub3RlcXVhbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5ncmVhdGVydGhhbk9wZXJhdG9yLFxyXG4gICAgdGhpcy5ncmVhdGVydGhhbm9yZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMubGVzc3RoYW5PcGVyYXRvcixcclxuICAgIHRoaXMubGVzc3RoYW5vcmVxdWFsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbnVsbE9wZXJhdG9yLFxyXG4gICAgdGhpcy5pc25vdG51bGxPcGVyYXRvclxyXG4gIF07XHJcbiAgcHVibGljIGJvb2xlYW5PcGVyYXRvcnM6IGFueSA9IFtcclxuICAgIHRoaXMuZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMubm90ZXF1YWxPcGVyYXRvcixcclxuICAgIHRoaXMuaXNudWxsT3BlcmF0b3IsXHJcbiAgICB0aGlzLmlzbm90bnVsbE9wZXJhdG9yXHJcbiAgXTtcclxuXHJcbiAgcHVibGljIHNlbGVjdGlvbkNvbXBvbmVudExpc3QgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZpZWxkU2VydmljZTogRmllbGRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG5cclxuICAgIG9mKHRydWUpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChfID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5iZWZvcmVMb2FkRmllbGQodGhpcy5kYXRhKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcChkYXRhID0+IHtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkYXRhIGFzIFpGaWVsZDtcclxuICAgICAgfSksXHJcbiAgICAgIHN3aXRjaE1hcChfID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkUXVlcnlCdWlsZGVyKCk7XHJcbiAgICAgIH0pXHJcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIFdoZXJlIHRvIHVwZGF0ZSBvcGVyYXRvciBzeW50YXhcclxuICAgICAgLy8gMS4gRTEgLSBxdWVyeUJ1aWxkZXJUZW1wbGF0ZTJcclxuICAgICAgLy8gMi4gc2hhcmVkIGZvbGRlciA+IGhlbHBlciA+IHF1ZXJ5YnVpbGRlci1maWVsZGluZm8taGVscGVyLnRzXHJcbiAgICAgIC8vIDMuIHBhdGNoIGRiIGRhdGEgd2l0aCBzbWFsbCBjYXBpdGFsIGxldHRlclxyXG5cclxuICAgICAgLy90aGlzLmlzc2ZMb2FkZWQgPSB0cnVlOyAgXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFF1ZXJ5QnVpbGRlcigpIHtcclxuICAgIGlmICh0aGlzLmRhdGFbJ0FsbG93Q29sbGFwc2UnXSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmFsbG93Q29sbGFwc2UgPSB0aGlzLmRhdGFbJ0FsbG93Q29sbGFwc2UnXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhWydBbGxvd1J1bGVzZXQnXSA9PT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5hbGxvd1J1bGVzZXQgPSB0aGlzLmRhdGFbJ0FsbG93UnVsZXNldCddO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFbJ0ZpbHRlcnMnXSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgdGhpcyxcclxuICAgICAgICB0aGlzLmRhdGFbJ0ZpbHRlcnMnXSxcclxuICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLmZpZWxkU2VydmljZS5nZXRGb3JtRmllbGRDb2RlKHRoaXMuZGF0YS5WYWx1ZSwgXCJGb3JtRmllbGRcIiwgbnVsbCwgbnVsbCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGlzR3JvdXBlZCA9IHRydWU7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpZWxkcy5waXBlKFxyXG4gICAgICAgIHRhcCgoZGF0YTogW10pID0+IHtcclxuXHJcbiAgICAgICAgICAvLyBpZiBbaXNHcm91cGVkID0gdHJ1ZV0gaW5jbHVkZSBncm91cGluZyBuYW1lIGFzIHByZWZpeFxyXG4gICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBpc0dyb3VwZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBkYXRhLmZvckVhY2goYXN5bmMgKGZpZWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRUeXBlKGZpZWxkLCBpc0dyb3VwZWQpO1xyXG4gICAgICAgICAgfSk7Ly9lbmQgZm9yZWFjaFxyXG5cclxuICAgICAgICAgIHRoaXMuaXNzZkxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG5cclxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImVycm9yOiBcIiwgZXJyb3IpO1xyXG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZW5kZXJDb21wb25lbnRUeXBlKGZpZWxkOiBhbnksIGlzR3JvdXBlZDogYm9vbGVhbiwgZmllbGRUaXRsZT86IHN0cmluZykge1xyXG4gICAgbGV0IGNvbXBvbmVudExhYmVsID0gZmllbGQuU3ViVHlwZSA/IGZpZWxkLkxhYmVsIDogZmllbGQuTGFiZWwgPz8gZmllbGQuTmFtZTtcclxuICAgIGNvbXBvbmVudExhYmVsID0gIWlzR3JvdXBlZCAmJiAhWkNvbXBvbmVudEhlbHBlci5pc051bGxVbmRlZmluZWRFbXB0eShmaWVsZFRpdGxlKSA/IFwiW1wiICsgZmllbGRUaXRsZSArIFwiXSBcIiArIGZpZWxkLkxhYmVsIDogIVpDb21wb25lbnRIZWxwZXIuaXNOdWxsVW5kZWZpbmVkRW1wdHkoZmllbGQuTGFiZWwpID8gZmllbGQuTGFiZWwgOiBmaWVsZC5OYW1lO1xyXG5cclxuICAgIGxldCBjb21wb25lbnRGaWVsZCA9ICFaQ29tcG9uZW50SGVscGVyLmlzTnVsbFVuZGVmaW5lZEVtcHR5KGZpZWxkVGl0bGUpID8gZmllbGRUaXRsZSArIFwiX1wiICsgZmllbGQuVmFsdWUgOiBmaWVsZC5WYWx1ZTtcclxuXHJcbiAgICBpZiAoZmllbGQuVHlwZSA9PT0gJ2NhdGVnb3J5JyB8fCBmaWVsZC5UeXBlID09PSAnbXVsdGlzZWxlY3QnIHx8IGZpZWxkLlR5cGUgPT09ICd6dWlzZWxlY3RtdWx0aXBsZScpIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5kcm9wZG93bk9wZXJhdG9ycyxcclxuICAgICAgICB0ZW1wbGF0ZTogYXdhaXQgdGhpcy5nZW5lcmF0ZUNvbHVtblNlbGVjdGlvbihmaWVsZCksXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmaWVsZC5UeXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5kYXRlT3BlcmF0b3JzLFxyXG4gICAgICAgIHR5cGU6ICdkYXRlJ1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZmllbGQuVHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5pbnRlZ2VyT3BlcmF0b3JzLFxyXG4gICAgICAgIHR5cGU6ICdudW1iZXInXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmaWVsZC5WYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHRoaXMuc2RGaWx0ZXIucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6IGNvbXBvbmVudEZpZWxkLFxyXG4gICAgICAgIGxhYmVsOiBjb21wb25lbnRMYWJlbCxcclxuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXHJcbiAgICAgICAgb3BlcmF0b3JzOiB0aGlzLmJvb2xlYW5PcGVyYXRvcnMsXHJcbiAgICAgICAgdGVtcGxhdGU6IGF3YWl0IHRoaXMuZ2VuZXJhdGVDb2x1bW5DaGVja2JveChmaWVsZC5OYW1lLCBmYWxzZSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZpZWxkLlR5cGUgPT09ICdrY2FyZCcpIHtcclxuICAgICAgaWYgKGZpZWxkLlZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmaWVsZC5WYWx1ZS5mb3JFYWNoKGFzeW5jIChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50VHlwZShpdGVtLCBpc0dyb3VwZWQsIGZpZWxkLlRpdGxlKTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZEZpbHRlci5wdXNoKHtcclxuICAgICAgICBmaWVsZDogY29tcG9uZW50RmllbGQsXHJcbiAgICAgICAgbGFiZWw6IGNvbXBvbmVudExhYmVsLFxyXG4gICAgICAgIG9wZXJhdG9yczogdGhpcy5zdHJpbmdPcGVyYXRvcnMsXHJcbiAgICAgICAgdHlwZTogJ3N0cmluZydcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBjaGVja2JveFxyXG4gIHByaXZhdGUgZ2VuZXJhdGVDb2x1bW5DaGVja2JveChsYWJlbDogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbik6IFRlbXBsYXRlQ29sdW1uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNyZWF0ZTogKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdpbnB1dCcsIHsgYXR0cnM6IHsgJ3R5cGUnOiAnY2hlY2tib3gnIH0gfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGRlc3Ryb3k6IChhcmdzOiB7IGVsZW1lbnRJZDogc3RyaW5nIH0pID0+IHtcclxuICAgICAgICAoZ2V0Q29tcG9uZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFyZ3MuZWxlbWVudElkKSwgJ2NoZWNrYm94JykgYXMgQ2hlY2tCb3gpLmRlc3Ryb3koKTtcclxuICAgICAgfSxcclxuICAgICAgd3JpdGU6IChhcmdzOiB7IGVsZW1lbnRzOiBFbGVtZW50LCB2YWx1ZXM6IHN0cmluZyB9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYm94T2JqOiBDaGVja0JveCA9IG5ldyBDaGVja0JveCh7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgICBjaGVja2VkOiB2YWx1ZSxcclxuICAgICAgICAgIGNoYW5nZTogKGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnFyeUJsZHJPYmoubm90aWZ5Q2hhbmdlKHZhbHVlLCBlLmV2ZW50LnRhcmdldCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYm94T2JqLmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIGRyb3Bkb3duL211bHRpc2VsZWN0XHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbHVtblNlbGVjdGlvbihmaWVsZEVsZW1lbnREYXRhOiBhbnkpOiBUZW1wbGF0ZUNvbHVtbiB7XHJcbiAgICByZXR1cm4ge1xyXG5cclxuICAgICAgLy8gQ3JlYXRlcyB0aGUgY3VzdG9tIGNvbXBvbmVudFxyXG4gICAgICBjcmVhdGU6ICgpID0+IHtcclxuICAgICAgICAvLyBBZGRpdGlvbmFsIGZpbHRlciBzZXQgaW4gdGhlIHBhZ2VcclxuICAgICAgICBpZiAodGhpcy5kYXRhWydGaWx0ZXJzJ10pIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVycyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChcclxuICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgdGhpcy5kYXRhWydGaWx0ZXJzJ10sXHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL3JldHVybiBjcmVhdGVFbGVtZW50KCdpbnB1dCcsIHsgYXR0cnM6IHsgJ3R5cGUnOiAndGV4dCcsICdzdHlsZSc6ICdkaXNwbGF5OiBub25lJyB9IH0pO1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdpbnB1dCcsIHsgYXR0cnM6IHsgJ3R5cGUnOiAndGV4dCcgfSB9KTtcclxuICAgICAgfSxcclxuXHJcbiAgICAgIC8vIERlc3Ryb3kgdGhlIGN1c3RvbSBjb21wb25lbnRcclxuICAgICAgZGVzdHJveTogKGFyZ3M6IHsgZWxlbWVudElkOiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIGlmIChhcmdzWydlbGVtZW50cyddKSB7XHJcbiAgICAgICAgICBsZXQgbXVsdGlTZWxlY3Q6IE11bHRpU2VsZWN0ID0gKGdldENvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmdzLmVsZW1lbnRJZCksICdtdWx0aXNlbGVjdCcpIGFzIE11bHRpU2VsZWN0KTtcclxuICAgICAgICAgIGlmIChtdWx0aVNlbGVjdCkge1xyXG4gICAgICAgICAgICBtdWx0aVNlbGVjdC5kZXN0cm95KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgZHJvcGRvd246IERyb3BEb3duTGlzdCA9IChnZXRDb21wb25lbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJncy5lbGVtZW50SWQpLCAnZHJvcGRvd25saXN0JykgYXMgRHJvcERvd25MaXN0KTtcclxuICAgICAgICAgIGlmIChkcm9wZG93bikge1xyXG4gICAgICAgICAgICBkcm9wZG93bi5kZXN0cm95KCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0T3B0aW9ucyA9IGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXTtcclxuICAgICAgICAgIGlmIChzZWxlY3RPcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTCA9IHNlbGVjdE9wdGlvbnNbJ1Jlc291cmNlVVJMJ107XHJcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeFJlc291cmNlVVJMQ2hlY2tpbmcgPSBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgKyAnXycgKyBhcmdzLmVsZW1lbnRJZDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmxvYWRlZERyb3Bkb3duT3B0aW9ucy5pbmNsdWRlcyhwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGVkRHJvcGRvd25PcHRpb25zID0gdGhpcy5yZW1vdmVBcnJheUl0ZW0odGhpcy5sb2FkZWREcm9wZG93bk9wdGlvbnMsIHByZWZpeFJlc291cmNlVVJMQ2hlY2tpbmcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG5cclxuICAgICAgLy8gV2lyZSBldmVudHMgZm9yIHRoZSBjdXN0b20gY29tcG9uZW50LlxyXG4gICAgICB3cml0ZTogKGFyZ3M6IHsgZWxlbWVudHM6IEVsZW1lbnQsIHZhbHVlczogc3RyaW5nW10gfCBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgICAgIC8vb3JpZ2luXHJcbiAgICAgICAgaWYgKGZpZWxkRWxlbWVudERhdGFbJ1ZhbHVlT3B0aW9ucyddKSB7XHJcbiAgICAgICAgICAvLyBjb252ZXJ0IHRvIHByb3BlcnR5IG5hbWUgdXNlZCBpbiB0aGUgY29tcG9uZW50IHJlbmRlcmluZ1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uTGlzdDogeyBbbmFtZTogc3RyaW5nXTogT2JqZWN0IH1bXSA9IFtdO1xyXG4gICAgICAgICAgZmllbGRFbGVtZW50RGF0YVsnVmFsdWVPcHRpb25zJ10uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogaXRlbVsnTmFtZSddLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBpdGVtWydWYWx1ZSddXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb25Db21wb25lbnQgPSB0aGlzLmdlbmVyYXRlU2VsZWN0aW9uQ29tcG9uZW50KGFyZ3MsIG9wdGlvbkxpc3QpO1xyXG4gICAgICAgICAgc2VsZWN0aW9uQ29tcG9uZW50LmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbWFudWFsIGRyb3Bkb3duIG9yIHp1ZGYgbWFudWFsIGRyb3Bkb3duXHJcbiAgICAgICAgZWxzZSBpZiAoZmllbGRFbGVtZW50RGF0YVsnU2VsZWN0T3B0aW9ucyddICYmIEFycmF5LmlzQXJyYXkoZmllbGRFbGVtZW50RGF0YVsnU2VsZWN0T3B0aW9ucyddKSkge1xyXG4gICAgICAgICAgLy8gY29udmVydCB0byBwcm9wZXJ0eSBuYW1lIHVzZWQgaW4gdGhlIGNvbXBvbmVudCByZW5kZXJpbmdcclxuICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3Q6IHsgW25hbWU6IHN0cmluZ106IE9iamVjdCB9W10gPSBbXTtcclxuICAgICAgICAgIGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgb3B0aW9uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICB0ZXh0OiBpdGVtWyd0ZXh0J10sXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bJ3ZhbHVlJ11cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkNvbXBvbmVudCA9IHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJncywgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgICBzZWxlY3Rpb25Db21wb25lbnQuYXBwZW5kVG8oJyMnICsgYXJncy5lbGVtZW50cy5pZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB6dWRmIFJlc291cmNlVVJMIC8gQ29tbW9uIE1hc3RlciBkcm9wZG93blxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0T3B0aW9ucyA9IGZpZWxkRWxlbWVudERhdGFbJ1NlbGVjdE9wdGlvbnMnXTtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTCA9IHNlbGVjdE9wdGlvbnNbJ1Jlc291cmNlVVJMJ107XHJcblxyXG4gICAgICAgICAgLy8gUmVzb3VyY2VVUkwgZHJvcGRvd25cclxuICAgICAgICAgIGlmIChzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwpIHtcclxuICAgICAgICAgICAgY29uc3QgcHJlZml4UmVzb3VyY2VVUkxDaGVja2luZyA9IHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTCArICdfJyArIGFyZ3MuZWxlbWVudHMuaWQ7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGVkRHJvcGRvd25PcHRpb25zLmluY2x1ZGVzKHByZWZpeFJlc291cmNlVVJMQ2hlY2tpbmcpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZWREcm9wZG93bk9wdGlvbnMucHVzaChwcmVmaXhSZXNvdXJjZVVSTENoZWNraW5nKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVycykge1xyXG4gICAgICAgICAgICAgICAgc2VsZWN0T3B0aW9uc1snRmlsdGVycyddID0gdGhpcy5maWx0ZXJzO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgcGFyYW0gPSBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0UGFnZVNldHRpbmdQYXJhbXMpO1xyXG4gICAgICAgICAgICAgIHBhcmFtLnBhZ2VTaXplID0gc2VsZWN0T3B0aW9uc1snUGFnZVNpemUnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5jb2x1bW5zID0gc2VsZWN0T3B0aW9uc1snQ29sdW1ucyddO1xyXG4gICAgICAgICAgICAgIHBhcmFtLmZpbHRlcnMgKz0gc2VsZWN0T3B0aW9uc1snRmlsdGVycyddO1xyXG4gICAgICAgICAgICAgIHBhcmFtLnNvcnRDb2x1bW5OYW1lID0gc2VsZWN0T3B0aW9uc1snU29ydENvbHVtbk5hbWUnXTtcclxuICAgICAgICAgICAgICBwYXJhbS5zb3J0T3JkZXIgPSBzZWxlY3RPcHRpb25zWydTb3J0T3JkZXInXTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gTmVlZCBkZWxheSA0MDBtcyBpZiBub3QgM3JkIHNlZ21lbnQgKHZhbHVlKSB3aWxsIG5vdCBiZSByZW5kZXJlZC5cclxuICAgICAgICAgICAgICB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cFBvc3QkKHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFBhZ2VVcmwoc2VsZWN0T3B0aW9uc1Jlc291cmNlVVJMKSwgcGFyYW0pLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBkZWxheSg0MDApLFxyXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgcmVzcC5kYXRhU2V0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtW3NlbGVjdE9wdGlvbnNbJ05hbWUnXV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVtzZWxlY3RPcHRpb25zWydWYWx1ZSddXVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29tcG9uZW50ID0gdGhpcy5nZW5lcmF0ZVNlbGVjdGlvbkNvbXBvbmVudChhcmdzLCBvcHRpb25MaXN0KTtcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uQ29tcG9uZW50LmFwcGVuZFRvKCcjJyArIGFyZ3MuZWxlbWVudHMuaWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy9jb25zdCB4eHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmdzLmVsZW1lbnRzLmlkKTtcclxuICAgICAgICAgICAgICAgICAgLy8vL3h4eC5hcHBlbmRDaGlsZChpbnB1dEVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAvL3h4eC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vI3JlZ2lvbiB1c2VkIGZvciB1cGRhdGVTZWxlY3Rpb25PcHRpb25cclxuICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuc2VsZWN0aW9uQ29tcG9uZW50TGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY29tcG9uZW50SWQgPT09IGFyZ3MuZWxlbWVudHMuaWRcclxuICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE9iamVjdCB3aXRoIHRoZSBzYW1lIGNvbXBvbmVudElkIGV4aXN0cywgcmVwbGFjZSByZXNvdXJjZVVybFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29tcG9uZW50TGlzdFtleGlzdGluZ0luZGV4XS5yZXNvdXJjZVVybCA9IHNlbGVjdE9wdGlvbnNSZXNvdXJjZVVSTDtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPYmplY3Qgd2l0aCBjb21wb25lbnRJZCBkb2Vzbid0IGV4aXN0LCBwdXNoIGEgbmV3IG9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ29tcG9uZW50TGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlVXJsOiBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRJZDogYXJncy5lbGVtZW50cy5pZFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIC8vI2VuZHJlZ2lvblxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8genVkZiBDb21tb24gTWFzdGVyIGRyb3Bkb3duXHJcbiAgICAgICAgICBlbHNlIGlmIChmaWVsZEVsZW1lbnREYXRhLnp1ZGZEYXRhU291cmNlVHlwZSAmJiBmaWVsZEVsZW1lbnREYXRhLnp1ZGZEYXRhU291cmNlVHlwZSA9PT0gXCJyZXNvdXJjZVwiKSB7XHJcblxyXG4gICAgICAgICAgICAvLyBleHRyYWN0IHp1ZGZfZHJvcGRvd24gZnJvbSBzZXNzaW9uIHN0b3JhZ2VcclxuICAgICAgICAgICAgY29uc3QgenVkZl9kcm9wZG93biA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJ6dWRmX2Ryb3Bkb3duXCIpID8gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwienVkZl9kcm9wZG93blwiKSkgOiBudWxsO1xyXG4gICAgICAgICAgICBpZiAoenVkZl9kcm9wZG93bikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3QgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgenVkZl9kcm9wZG93bi5mb3JFYWNoKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gcmVzLnRleHQuc3BsaXQoXCJPcHRpb25zXCIpWzBdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkRWxlbWVudERhdGEuTGFiZWwgPT09IG5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzLnZhbHVlLmZvckVhY2godmFsID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogdmFsWydOYW1lJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsWydJZCddXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29tcG9uZW50ID0gdGhpcy5nZW5lcmF0ZVNlbGVjdGlvbkNvbXBvbmVudChhcmdzLCBvcHRpb25MaXN0KTtcclxuICAgICAgICAgICAgICBzZWxlY3Rpb25Db21wb25lbnQuYXBwZW5kVG8oJyMnICsgYXJncy5lbGVtZW50cy5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBVc2VyIExpc3QgZHJvcGRvd25cclxuICAgICAgICAgIGVsc2UgaWYgKGZpZWxkRWxlbWVudERhdGEuenVkZkRhdGFTb3VyY2VUeXBlICYmIGZpZWxkRWxlbWVudERhdGEuenVkZkRhdGFTb3VyY2VUeXBlID09PSBcInVzZXJcIikge1xyXG4gICAgICAgICAgICBjb25zdCBvcHRpb25MaXN0ID0gW107XHJcbiAgICAgICAgICAgIGNvbnN0IHVzZXJMaXN0ID0gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZT8uZ2V0SXRlbShcInVzZXJMaXN0XCIpID8/ICdudWxsJyk7XHJcblxyXG4gICAgICAgICAgICAvL2NvbnN0IGFycmF5VGVzdCA9IHVzZXJMaXN0Lm1hcCgoeyBTZWxlY3Rpb25OYW1lLCBJZCB9KSA9PiAoeyB0ZXh0OiBTZWxlY3Rpb25OYW1lLCB2YWx1ZTogSWQgfSkpO1xyXG4gICAgICAgICAgICB1c2VyTGlzdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBvcHRpb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbVsnU2VsZWN0aW9uTmFtZSddLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bJ0lkJ11cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbkNvbXBvbmVudCA9IHRoaXMuZ2VuZXJhdGVTZWxlY3Rpb25Db21wb25lbnQoYXJncywgb3B0aW9uTGlzdCk7XHJcbiAgICAgICAgICAgIHNlbGVjdGlvbkNvbXBvbmVudC5hcHBlbmRUbygnIycgKyBhcmdzLmVsZW1lbnRzLmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0vL2VuZCB3cml0ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVNlbGVjdGlvbk9wdGlvbihyZXNvdXJjZVVybDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ29tcG9uZW50TGlzdC5mb3JFYWNoKHNlbGVjdGlvbkNvbXBvbmVudCA9PiB7XHJcbiAgICAgIGxldCBtdWx0aVNlbGVjdDogTXVsdGlTZWxlY3QgPSAoZ2V0Q29tcG9uZW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbGVjdGlvbkNvbXBvbmVudC5jb21wb25lbnRJZCksICdtdWx0aXNlbGVjdCcpIGFzIE11bHRpU2VsZWN0KTtcclxuICAgICAgaWYgKG11bHRpU2VsZWN0KSB7XHJcbiAgICAgICAgbXVsdGlTZWxlY3QudmFsdWUgPSBkYXRhO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBkcm9wZG93bjogRHJvcERvd25MaXN0ID0gKGdldENvbXBvbmVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWxlY3Rpb25Db21wb25lbnQuY29tcG9uZW50SWQpLCAnZHJvcGRvd25saXN0JykgYXMgRHJvcERvd25MaXN0KTtcclxuICAgICAgaWYgKGRyb3Bkb3duKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZFNlcnZpY2UuZGF0YUZvcm1GaWVsZHNbdGhpcy5kYXRhLlZhbHVlXS5mb3JFYWNoKGFzeW5jIChmaWVsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGQuU2VsZWN0T3B0aW9ucy5SZXNvdXJjZVVSTCA9PT0gc2VsZWN0aW9uQ29tcG9uZW50LnJlc291cmNlVXJsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSBmaWVsZFsnU2VsZWN0T3B0aW9ucyddO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwgPSBzZWxlY3RPcHRpb25zWydSZXNvdXJjZVVSTCddO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbSA9IE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRQYWdlU2V0dGluZ1BhcmFtcyk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhWydGaWx0ZXJzJ10pIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoXHJcbiAgICAgICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhWydGaWx0ZXJzJ10sXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVycykge1xyXG4gICAgICAgICAgICAgIHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXSA9IHRoaXMuZmlsdGVycztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcGFyYW0ucGFnZVNpemUgPSBzZWxlY3RPcHRpb25zWydQYWdlU2l6ZSddO1xyXG4gICAgICAgICAgICBwYXJhbS5jb2x1bW5zID0gc2VsZWN0T3B0aW9uc1snQ29sdW1ucyddO1xyXG4gICAgICAgICAgICBwYXJhbS5maWx0ZXJzICs9IHNlbGVjdE9wdGlvbnNbJ0ZpbHRlcnMnXTtcclxuICAgICAgICAgICAgcGFyYW0uc29ydENvbHVtbk5hbWUgPSBzZWxlY3RPcHRpb25zWydTb3J0Q29sdW1uTmFtZSddO1xyXG4gICAgICAgICAgICBwYXJhbS5zb3J0T3JkZXIgPSBzZWxlY3RPcHRpb25zWydTb3J0T3JkZXInXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMud2ViQXBpU2VydmljZS5odHRwUG9zdCQodGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0UGFnZVVybChzZWxlY3RPcHRpb25zUmVzb3VyY2VVUkwpLCBwYXJhbSkucGlwZShcclxuICAgICAgICAgICAgICBtYXAoKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbkxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICAgIHJlc3AuZGF0YVNldC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgb3B0aW9uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtW3NlbGVjdE9wdGlvbnNbJ05hbWUnXV0sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW1bc2VsZWN0T3B0aW9uc1snVmFsdWUnXV1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIGRyb3Bkb3duLmRhdGFTb3VyY2UgPSBvcHRpb25MaXN0O1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUFycmF5SXRlbTxUPihhcnI6IEFycmF5PFQ+LCB2YWx1ZTogVCk6IEFycmF5PFQ+IHtcclxuICAgIGNvbnN0IGluZGV4ID0gYXJyLmluZGV4T2YodmFsdWUpO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgYXJyLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZVNlbGVjdGlvbkNvbXBvbmVudChhcmdzOiBhbnksIG9wdGlvbkxpc3Q6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaW5PcGVyYXRvcnMuaW5kZXhPZihhcmdzLm9wZXJhdG9yKSA+IC0xKSB7XHJcbiAgICAgIHJldHVybiBuZXcgTXVsdGlTZWxlY3Qoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IG9wdGlvbkxpc3QsXHJcbiAgICAgICAgZmllbGRzOiB7IHRleHQ6ICd0ZXh0JywgdmFsdWU6ICd2YWx1ZScgfSxcclxuICAgICAgICB2YWx1ZTogYXJncy52YWx1ZXMgYXMgc3RyaW5nW10sXHJcbiAgICAgICAgbW9kZTogJ0NoZWNrQm94JyxcclxuICAgICAgICBjaGFuZ2U6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucXJ5Qmxkck9iai5ub3RpZnlDaGFuZ2UoZS52YWx1ZSwgZS5lbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRHJvcERvd25MaXN0KHtcclxuICAgICAgICBkYXRhU291cmNlOiBvcHRpb25MaXN0LFxyXG4gICAgICAgIGZpZWxkczogeyB0ZXh0OiAndGV4dCcsIHZhbHVlOiAndmFsdWUnIH0sXHJcbiAgICAgICAgdmFsdWU6IGFyZ3MudmFsdWVzIGFzIHN0cmluZyxcclxuICAgICAgICBjaGFuZ2U6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGUudmFsdWUgIT09IG51bGwgPyB0aGlzLnFyeUJsZHJPYmoubm90aWZ5Q2hhbmdlKGUuaXRlbURhdGEudmFsdWUsIGUuZWxlbWVudCkgOiBpZ25vcmVFbGVtZW50cztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcHVibGljIHNldFF1ZXJ5VmFsdWUoc2F2ZWREYXRhOiBhbnkpIHtcclxuICAgIC8vaWYgKCF0aGlzLnFyeUJsZHJPYmopIHtcclxuICAgIC8vICBjb25zb2xlLndhcm4oJ3F1ZXJ5IGJ1aWxkZXIgb2JqZWN0IGlzIG51bGwuJyk7XHJcbiAgICAvLyAgcmV0dXJuO1xyXG4gICAgLy99XHJcblxyXG4gICAgaWYgKHNhdmVkRGF0YSkge1xyXG4gICAgICB0aGlzLnFyeUJsZHJPYmouc2V0UnVsZXMoc2F2ZWREYXRhKTtcclxuICAgICAgdGhpcy51cGRhdGVSdWxlKHsgcnVsZTogc2F2ZWREYXRhIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFJlc3VsdCgpIHtcclxuICAgIHJldHVybiB0aGlzLnFyeUJsZHJPYmouZ2V0UnVsZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVSdWxlKGFyZ3M6IFJ1bGVDaGFuZ2VFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzcGxheVJ1bGUgPSBKU09OLnN0cmluZ2lmeShhcmdzLnJ1bGUsIG51bGwsIDEyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlUnVsZSh7IHJ1bGU6IHRoaXMucXJ5Qmxkck9iai5nZXRWYWxpZFJ1bGVzKHRoaXMucXJ5Qmxkck9iai5ydWxlKSB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBiZWZvcmVMb2FkRmllbGQoZmllbGRFbGVtZW50RGF0YTogYW55KSB7XHJcbiAgICBsZXQgYmVmb3JlTG9hZEZpZWxkID0gZmllbGRFbGVtZW50RGF0YVsnQmVmb3JlTG9hZEZpZWxkJ107XHJcbiAgICBpZiAoYmVmb3JlTG9hZEZpZWxkKSB7XHJcbiAgICAgIGJlZm9yZUxvYWRGaWVsZCA9IGJlZm9yZUxvYWRGaWVsZC5yZXBsYWNlKCdtb2RhbEdyb3VwLicsICdncm91cC4nKTtcclxuICAgICAgY29uc3QgY2FsbEZ1bmMgPSBldmFsKCd0aGlzLicgKyBiZWZvcmVMb2FkRmllbGQpO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBjYWxsRnVuYyA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgY29uc3QgbmV3RnVuYyA9IGNhbGxGdW5jLmJpbmQodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIG5ld0Z1bmMoZXZlbnQsIHRoaXMsIGZpZWxkRWxlbWVudERhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2YoZmllbGRFbGVtZW50RGF0YSk7XHJcbiAgfVxyXG59XHJcblxyXG4vL2V4cG9ydCBlbnVtIG9wZXJhdG9ycyB7XHJcbi8vICBJbiA9ICdpbicsXHJcbi8vfVxyXG5cclxuXHJcbi8vZXhwb3J0IGludGVyZmFjZSBRdWVyeVJ1bGUge1xyXG4vLyAgY29uZGl0aW9uOiBzdHJpbmc7XHJcbi8vICBydWxlczogUXVlcnlSdWxlW107XHJcbi8vICBmaWVsZDogc3RyaW5nO1xyXG4vLyAgdHlwZTogc3RyaW5nO1xyXG4vLyAgb3BlcmF0b3I6IHN0cmluZztcclxuLy8gIHZhbHVlOiBzdHJpbmdbXTtcclxuLy99XHJcblxyXG4vL2V4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5UnVsZShxdWVyeUJ1aWxkZXJNb2RlbDogYW55KTogUXVlcnlSdWxlIHtcclxuLy8gIGxldCBydWxlID0gPFF1ZXJ5UnVsZT57fTtcclxuLy8gIGlmIChxdWVyeUJ1aWxkZXJNb2RlbC5jb25kaXRpb24pIHtcclxuLy8gICAgcnVsZS5jb25kaXRpb24gPSBxdWVyeUJ1aWxkZXJNb2RlbC5jb25kaXRpb247XHJcbi8vICAgIHJ1bGUucnVsZXMgPSBxdWVyeUJ1aWxkZXJNb2RlbC5ydWxlcy5tYXAocSA9PiB0b1F1ZXJ5UnVsZShxKSk7XHJcbi8vICB9XHJcbi8vICBlbHNlIHtcclxuLy8gICAgcnVsZS5maWVsZCA9IHF1ZXJ5QnVpbGRlck1vZGVsLmZpZWxkO1xyXG4vLyAgICBydWxlLnR5cGUgPSAnc3RyaW5nJztcclxuLy8gICAgcnVsZS5vcGVyYXRvciA9ICdlcXVhbCc7XHJcbi8vICAgIHJ1bGUudmFsdWUgPSBxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZSBpbnN0YW5jZW9mIEFycmF5XHJcbi8vICAgICAgPyBxdWVyeUJ1aWxkZXJNb2RlbC50eXBlID09PSAnZGF0ZScgPyBuZXcgRGF0ZShxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZSkgOiBxdWVyeUJ1aWxkZXJNb2RlbC52YWx1ZVxyXG4vLyAgICAgIDogW3F1ZXJ5QnVpbGRlck1vZGVsLnR5cGUgPT09ICdkYXRlJyA/IG5ldyBEYXRlKHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlKSA6IHF1ZXJ5QnVpbGRlck1vZGVsLnZhbHVlXTtcclxuLy8gIH1cclxuLy8gIHJldHVybiBydWxlO1xyXG4vL31cclxuIiwiPGlvbi1pdGVtICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpXCI+XHJcbiAgPGRpdiBjbGFzcz1cInFiY29udGFpbmVyXCI+XHJcbiAgICA8ZWpzLXF1ZXJ5YnVpbGRlciAqbmdJZj1cImlzc2ZMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgI3F1ZXJ5YnVpbGRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cInNmRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJzZEZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbcnVsZV09XCJpbXBvcnRSdWxlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAocnVsZUNoYW5nZSk9XCJ1cGRhdGVSdWxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNyZWF0ZWQpPVwib25DaGFuZ2UoKVwiPlxyXG4gICAgPC9lanMtcXVlcnlidWlsZGVyPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhZGF0YS5IaWRlU2hvd1Jlc3VsdFBhbmVsXCI+XHJcbiAgICAgIDxicj5cclxuICAgICAgPGlvbi1sYWJlbD5SZXN1bHQ8L2lvbi1sYWJlbD5cclxuICAgICAgPHRleHRhcmVhIGNsYXNzPVwib3V0cHV0XCJcclxuICAgICAgICAgICAgICAgIHJlc2l6YWJsZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjZDNkM2QzOyB3aWR0aDogMTAwJTtcIj57e2Rpc3BsYXlSdWxlfX08L3RleHRhcmVhPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvaW9uLWl0ZW0+XHJcbiJdfQ==
@@ -7,21 +7,20 @@ import { ZGroup, ZComponentHelper, } from "mmhglobal-zcore";
7
7
  import { ZmodalHelper } from 'mmhglobal-zmodal';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "mmhglobal-zcore";
10
- import * as i2 from "../services/component-error-handler.service";
11
- import * as i3 from "@ionic/angular";
12
- import * as i4 from "@fortawesome/angular-fontawesome";
13
- import * as i5 from "../uiactionbutton/uiactionbutton.component";
14
- import * as i6 from "../zform/zform.component";
15
- import * as i7 from "@angular/common";
16
- import * as i8 from "../directives/scrollbar.theme.directive";
17
- import * as i9 from "@angular/flex-layout/extended";
10
+ import * as i2 from "@ionic/angular";
11
+ import * as i3 from "@fortawesome/angular-fontawesome";
12
+ import * as i4 from "../uiactionbutton/uiactionbutton.component";
13
+ import * as i5 from "../zform/zform.component";
14
+ import * as i6 from "@angular/common";
15
+ import * as i7 from "../directives/scrollbar.theme.directive";
16
+ import * as i8 from "@angular/flex-layout/extended";
18
17
  export class ZmodalMobileComponent {
19
- constructor(webApiService, zcoreService, componentErrorHandler, // Use in mmhglobal-zmodal.helper
18
+ constructor(webApiService, zcoreService, componentErrorHandlerService, // Use in mmhglobal-zmodal.helper
20
19
  fieldService // Use in mmhglobal-zmodal.helper
21
20
  ) {
22
21
  this.webApiService = webApiService;
23
22
  this.zcoreService = zcoreService;
24
- this.componentErrorHandler = componentErrorHandler;
23
+ this.componentErrorHandlerService = componentErrorHandlerService;
25
24
  this.fieldService = fieldService;
26
25
  this.group = new ZGroup(true);
27
26
  }
@@ -113,12 +112,12 @@ export class ZmodalMobileComponent {
113
112
  return this.zcoreService.isDebugSession();
114
113
  }
115
114
  }
116
- ZmodalMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmodalMobileComponent, deps: [{ token: i1.WebApiService }, { token: i1.ZCoreService }, { token: i2.ComponentErrorHandlerService }, { token: i1.FieldService }], target: i0.ɵɵFactoryTarget.Component });
117
- ZmodalMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZmodalMobileComponent, selector: "app-zmodal", inputs: { modalParams: "modalParams" }, ngImport: i0, template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""], components: [{ type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i3.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i5.UiactionbuttonComponent, selector: "app-uiactionbutton" }, { type: i3.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i3.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i3.IonRow, selector: "ion-row" }, { type: i3.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i3.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { type: i6.ZformComponent, selector: "app-zform", inputs: ["group", "fieldName"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ScrollbarThemeDirective, selector: "[appScrollbarTheme]" }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i9.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }], pipes: { "json": i7.JsonPipe } });
115
+ ZmodalMobileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmodalMobileComponent, deps: [{ token: i1.WebApiService }, { token: i1.ZCoreService }, { token: i1.ComponentErrorHandlerService }, { token: i1.FieldService }], target: i0.ɵɵFactoryTarget.Component });
116
+ ZmodalMobileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZmodalMobileComponent, selector: "app-zmodal", inputs: { modalParams: "modalParams" }, ngImport: i0, template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i4.UiactionbuttonComponent, selector: "app-uiactionbutton" }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i2.IonRow, selector: "ion-row" }, { type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { type: i5.ZformComponent, selector: "app-zform", inputs: ["group", "fieldName"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ScrollbarThemeDirective, selector: "[appScrollbarTheme]" }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }], pipes: { "json": i6.JsonPipe } });
118
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmodalMobileComponent, decorators: [{
119
118
  type: Component,
120
119
  args: [{ selector: "app-zmodal", template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""] }]
121
- }], ctorParameters: function () { return [{ type: i1.WebApiService }, { type: i1.ZCoreService }, { type: i2.ComponentErrorHandlerService }, { type: i1.FieldService }]; }, propDecorators: { modalParams: [{
120
+ }], ctorParameters: function () { return [{ type: i1.WebApiService }, { type: i1.ZCoreService }, { type: i1.ComponentErrorHandlerService }, { type: i1.FieldService }]; }, propDecorators: { modalParams: [{
122
121
  type: Input
123
122
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1vZGFsLW1vYmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bW9kYWwvem1vZGFsLW1vYmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bW9kYWwvem1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVcEUsMkNBQTJDO0FBQzNDLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsT0FBTyxFQUVILE1BQU0sRUFBZ0IsZ0JBQWdCLEdBQ3pDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7OztBQVVoRCxNQUFNLE9BQU8scUJBQXFCO0lBTzlCLFlBQ1ksYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIscUJBQW1ELEVBQUUsaUNBQWlDO0lBQ3RGLFlBQTBCLENBQUMsaUNBQWlDOztRQUg1RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQThCO1FBQ25ELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUnRDLFVBQUssR0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQVVqQyxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QixJQUFJO0lBRUosUUFBUTtRQUNKLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVztRQUNQLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJ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VSxFQUFFLEdBQUc7YUFDbEIsQ0FBQztTQUNMO1FBQ0QsT0FBTztJQUNYLENBQUM7SUFFRCxjQUFjO1FBQ1YsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUMsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7O2tIQXJIUSxxQkFBcUI7c0dBQXJCLHFCQUFxQiwwRkM1QmxDLHF1Q0FxQ0E7MkZEVGEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNJLFlBQVk7cU1BTWIsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG4vLyBpbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIsIFBsYXRmb3JtIH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyXCI7XHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuLy8gaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBvZiwgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBmcm9tRXZlbnQgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG4vLyBpbXBvcnQgeyBGaWVsZFNlcnZpY2UgfSBmcm9tIFwiLi4vbW1oZ2xvYmFsLXpjb3JlL2ZpZWxkLnNlcnZpY2VcIjtcclxuLy8gaW1wb3J0IHsgUmVzb3VyY2VBcGlTZXJ2aWNlIH0gZnJvbSBcIi4uL21taGdsb2JhbC16Y29yZS9yZXNvdXJjZWFwaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBXZWJBcGlTZXJ2aWNlLCBNb2RhbFBhZ2VQYXJhbXMsXHJcbiAgICBaR3JvdXAsIFpDb3JlU2VydmljZSwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LCBGaWVsZFNlcnZpY2UsXHJcbn0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5pbXBvcnQgeyBabW9kYWxIZWxwZXIgfSBmcm9tICdtbWhnbG9iYWwtem1vZGFsJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9jb21wb25lbnQtZXJyb3ItaGFuZGxlci5zZXJ2aWNlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJhcHAtem1vZGFsXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3ptb2RhbC5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL3ptb2RhbC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFptb2RhbE1vYmlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBJbnB1dCgpIG1vZGFsUGFyYW1zOiBNb2RhbFBhZ2VQYXJhbXM7XHJcblxyXG4gICAgZ3JvdXA6IFpHcm91cCA9IG5ldyBaR3JvdXAodHJ1ZSk7XHJcbiAgICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIGJhY2tCdXR0b25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB6Y29yZVNlcnZpY2U6IFpDb3JlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNvbXBvbmVudEVycm9ySGFuZGxlcjogQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSwgLy8gVXNlIGluIG1taGdsb2JhbC16bW9kYWwuaGVscGVyXHJcbiAgICAgICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSAvLyBVc2UgaW4gbW1oZ2xvYmFsLXptb2RhbC5oZWxwZXJcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGdldCBtb2RhbEdyb3VwKCkge1xyXG4gICAgLy8gICByZXR1cm4gdGhpcy5ncm91cDtcclxuICAgIC8vIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBabW9kYWxIZWxwZXIub25Jbml0X01vZGFsRm9ybSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBabW9kYWxIZWxwZXIub25EZXN0cm95X01vZGFsRm9ybSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhbmNlbChldmVudD86IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgICAgIFptb2RhbEhlbHBlci5vbkNhbmNlbCh0aGlzLCBldmVudCk7XHJcbiAgICAgICAgLy8gdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhudWxsLCBcImNhbmNlbFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNvbmZpcm0oZXZlbnQ6IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgICAgIFptb2RhbEhlbHBlci5vbkNvbmZpcm0odGhpcywgZXZlbnQpO1xyXG4gICAgICAgIC8vIGNvbnN0IGZnID0gdGhpcy5ncm91cC5mb3JtIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuZ3JvdXAuZm9ybSkge1xyXG4gICAgICAgIC8vICAgICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAvLyBpZiAoIWZnLmRpcnR5KSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnNvbGUud2FybignRm9ybSBpcyBub3QgZGlydHkgaGVuY2UgbW9kYWxmb3JtIHJlY29yZCBpcyBub3Qgc2F2ZWQuJyk7XHJcbiAgICAgICAgLy8gICAgIHRoaXMub25DYW5jZWwoKTtcclxuICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgLy8gaWYgKCFmZy52YWxpZCkge1xyXG4gICAgICAgIC8vICAgICBjb25zdCBlcnJvcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEZvcm1Hcm91cEVycm9ycyhmZywgdGhpcy5hbGVydFNlcnZpY2UpO1xyXG4gICAgICAgIC8vICAgICBjb25zb2xlLndhcm4oXCJGb3JtIFZhbGlkYXRpb24gZ290IGVycm9yKHMpOlwiLCBlcnJvcnMpO1xyXG4gICAgICAgIC8vICAgICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAvLyAvLyBPYmplY3QuYXNzaWduKHRoaXMuZ3JvdXAuek1vZGVsLCBmZy52YWx1ZSk7XHJcbiAgICAgICAgLy8gLy8gdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyh0aGlzLmdyb3VwLnpNb2RlbCwgXCJjb25maXJtXCIpO1xyXG4gICAgICAgIC8vIC8vIGlmIChaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCkpIHtcclxuICAgICAgICAvLyB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKGV2ZW50LmRhdGEsIFwiY29uZmlybVwiKTtcclxuICAgICAgICAvLyAvLyB9IGVsc2Uge1xyXG4gICAgICAgIC8vIC8vICAgdGhpcy5kaWFsb2cuY2xvc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgLy8gLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIG9uSW5pdENsb3NlKGV2ZW50PzogWkNvbXBvbmVudE91dHB1dEV2ZW50KSB7XHJcbiAgICAgIFptb2RhbEhlbHBlci5vbkluaXRDbG9zZSh0aGlzLCBldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdG8gc2VydmUgYWN0aW9uQnV0dG9uIGF0IGZvcm1IZWFkZXJcclxuICAgIHN1YmplY3RFdmVudChldmVudDogWkNvbXBvbmVudE91dHB1dEV2ZW50LCBncm91cDogWkdyb3VwLCBtZTogYW55KSB7XHJcbiAgICAgICAgaWYgKCFldmVudCB8fCAhZXZlbnQudGFyZ2V0IHx8ICFldmVudC50YXJnZXQuc3RhcnRzV2l0aCgnbW9kYWxHcm91cCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coXCI+PiBTdWJqZWN0RXZlbnRcIiwgZXZlbnQpO1xyXG4gICAgICAgIC8vIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldC5yZXBsYWNlKCdtb2RhbEdyb3VwLicsICdncm91cC4nKTtcclxuICAgICAgICBjb25zdCBjYWxsRnVuYyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBldmVudC50YXJnZXQsIGdyb3VwKTtcclxuICAgICAgICAvLyBjYWxsRnVuYyhldmVudCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsRnVuYyA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZnID0gdGhpcy5ncm91cC5mb3JtIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmdyb3VwLnpNb2RlbCwgZmcudmFsdWUpO1xyXG4gICAgICAgICAgICBldmVudC5kYXRhID0gdGhpcy5ncm91cC56TW9kZWw7XHJcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuc3RhcnRzV2l0aCgnbW9kYWxHcm91cC5tb2RhbEFuc3dlcicpIHx8IGV2ZW50LnRhcmdldC5zdGFydHNXaXRoKCdtb2RhbEdyb3VwLm1vZGFsQ2FuY2VsJykpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Z1bmMgPSBjYWxsRnVuYy5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgbmV3RnVuYyhldmVudCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZChncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICAgICAgICAgICAgbmV3RnVuYyhldmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIG5vdCBkZWZpbmVkIGluIGdyb3VwIGZvcjogXCIsXHJcbiAgICAgICAgICAgICAgICBjYWxsRnVuYyxcclxuICAgICAgICAgICAgICAgIFwiLCBFdmVudDogXCIsXHJcbiAgICAgICAgICAgICAgICBldmVudFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRNb2RlbCQoZ3JvdXA6IGFueSwgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcmVjSWQgPSBpZCB8fCBncm91cC5yZWZlcmVuY2VJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBHZXQkKGdyb3VwLnJlc291cmNlVVJMICsgXCIvXCIgKyByZWNJZCwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0R3JpZFN0eWxlKCkge1xyXG4gICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZVNjcmVlbikge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgXCJoZWlnaHQucHhcIjogNTAwLFxyXG4gICAgICAgICAgICAgICAgXCJ3aWR0aC5weFwiOiA3MDBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTW9iaWxlU2NyZWVuKCkge1xyXG4gICAgICAgIGNvbnN0IHYgPSBaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCk7XHJcbiAgICAgICAgcmV0dXJuIHY7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTSVRFbnZpcm9ubWVudCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy56Y29yZVNlcnZpY2UuaXNEZWJ1Z1Nlc3Npb24oKTtcclxuICAgIH1cclxufVxyXG4iLCI8aW9uLWhlYWRlciAqbmdJZj1cImlzTW9iaWxlU2NyZWVuKClcIj5cclxuICA8aW9uLXRvb2xiYXI+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvbkNhbmNlbCgpXCI+XHJcbiAgICAgICAgPCEtLSA8aW9uLWljb24gbmFtZT1cImNsb3NlXCI+PC9pb24taWNvbj4gLS0+XHJcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3RpbWVzJ1wiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICAgIDxpb24tdGl0bGU+XHJcbiAgICAgIHt7IG1vZGFsUGFyYW1zLmZvcm1IZWFkZXIgfX1cclxuICAgIDwvaW9uLXRpdGxlPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJwcmltYXJ5XCIgKm5nSWY9XCIhZ3JvdXAuaXNMb2FkaW5nXCI+XHJcbiAgICAgIDxhcHAtdWlhY3Rpb25idXR0b24gW2dyb3VwXT1cImdyb3VwXCI+PC9hcHAtdWlhY3Rpb25idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gIDwvaW9uLXRvb2xiYXI+XHJcbjwvaW9uLWhlYWRlcj5cclxuXHJcbjxpb24tY29udGVudCBhcHBTY3JvbGxiYXJUaGVtZSBbbmdTdHlsZV09XCJnZXRHcmlkU3R5bGUoKVwiPlxyXG4gIDxpb24tZ3JpZD5cclxuICAgIDxpb24tcm93ICpuZ0lmPVwiZ3JvdXAuaXNMb2FkaW5nXCIgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbWFyZ2luIGlvbi1wYWRkaW5nXCI+XHJcbiAgICAgICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICAgIDxpb24tcm93ICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICA8aW9uLWNvbD5cclxuICAgICAgICA8YXBwLXpmb3JtIFtncm91cF09XCJncm91cFwiPjwvYXBwLXpmb3JtPlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgICA8aW9uLXJvdyAqbmdJZj1cImlzU0lURW52aXJvbm1lbnQoKSAmJiAhZ3JvdXAuaXNMb2FkaW5nXCI+XHJcbiAgICAgIDxpb24tY29sPlxyXG4gICAgICAgIDxwcmUgc3R5bGU9XCJmb250LXNpemU6IHgtc21hbGw7XCI+e3tncm91cC56TW9kZWwgfCBqc29ufX08L3ByZT5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIDwvaW9uLWdyaWQ+XHJcbjwvaW9uLWNvbnRlbnQ+XHJcblxyXG4iXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1vZGFsLW1vYmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bW9kYWwvem1vZGFsLW1vYmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bW9kYWwvem1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVcEUsMkNBQTJDO0FBQzNDLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsT0FBTyxFQUVILE1BQU0sRUFBZ0IsZ0JBQWdCLEdBQ3pDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7O0FBU2hELE1BQU0sT0FBTyxxQkFBcUI7SUFPOUIsWUFDWSxhQUE0QixFQUM1QixZQUEwQixFQUMxQiw0QkFBMEQsRUFBRSxpQ0FBaUM7SUFDN0YsWUFBMEIsQ0FBQyxpQ0FBaUM7O1FBSDVELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFSdEMsVUFBSyxHQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBVWpDLENBQUM7SUFFRCxxQkFBcUI7SUFDckIsdUJBQXVCO0lBQ3ZCLElBQUk7SUFFSixRQUFRO1FBQ0osWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXO1FBQ1AsWUFBWSxDQUFDLG1CQUFtQixDQUFDLElBQUks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LEVBQUUsR0FBRzthQUNsQixDQUFDO1NBQ0w7UUFDRCxPQUFPO0lBQ1gsQ0FBQztJQUVELGNBQWM7UUFDVixNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QyxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7a0hBckhRLHFCQUFxQjtzR0FBckIscUJBQXFCLDBGQzNCbEMscXVDQXFDQTsyRkRWYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksWUFBWTtxTUFNYixXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcbi8vIGltcG9ydCB7IE1vZGFsQ29udHJvbGxlciwgUGxhdGZvcm0gfSBmcm9tIFwiQGlvbmljL2FuZ3VsYXJcIjtcclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG4vLyBpbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZyb21FdmVudCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbi8vIGltcG9ydCB7IEZpZWxkU2VydmljZSB9IGZyb20gXCIuLi9tbWhnbG9iYWwtemNvcmUvZmllbGQuc2VydmljZVwiO1xyXG4vLyBpbXBvcnQgeyBSZXNvdXJjZUFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vbW1oZ2xvYmFsLXpjb3JlL3Jlc291cmNlYXBpLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICAgIFdlYkFwaVNlcnZpY2UsIE1vZGFsUGFnZVBhcmFtcyxcclxuICAgIFpHcm91cCwgWkNvcmVTZXJ2aWNlLCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnQsIEZpZWxkU2VydmljZSwgQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSxcclxufSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IFptb2RhbEhlbHBlciB9IGZyb20gJ21taGdsb2JhbC16bW9kYWwnOyBcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFwcC16bW9kYWxcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vem1vZGFsLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vem1vZGFsLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWm1vZGFsTW9iaWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KCkgbW9kYWxQYXJhbXM6IE1vZGFsUGFnZVBhcmFtcztcclxuXHJcbiAgICBncm91cDogWkdyb3VwID0gbmV3IFpHcm91cCh0cnVlKTtcclxuICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgYmFja0J1dHRvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZTogQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSwgLy8gVXNlIGluIG1taGdsb2JhbC16bW9kYWwuaGVscGVyXHJcbiAgICAgICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSAvLyBVc2UgaW4gbW1oZ2xvYmFsLXptb2RhbC5oZWxwZXJcclxuICAgICkge1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGdldCBtb2RhbEdyb3VwKCkge1xyXG4gICAgLy8gICByZXR1cm4gdGhpcy5ncm91cDtcclxuICAgIC8vIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBabW9kYWxIZWxwZXIub25Jbml0X01vZGFsRm9ybSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBabW9kYWxIZWxwZXIub25EZXN0cm95X01vZGFsRm9ybSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNhbmNlbChldmVudD86IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgICAgIFptb2RhbEhlbHBlci5vbkNhbmNlbCh0aGlzLCBldmVudCk7XHJcbiAgICAgICAgLy8gdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhudWxsLCBcImNhbmNlbFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNvbmZpcm0oZXZlbnQ6IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgICAgIFptb2RhbEhlbHBlci5vbkNvbmZpcm0odGhpcywgZXZlbnQpO1xyXG4gICAgICAgIC8vIGNvbnN0IGZnID0gdGhpcy5ncm91cC5mb3JtIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAvLyBpZiAoIXRoaXMuZ3JvdXAuZm9ybSkge1xyXG4gICAgICAgIC8vICAgICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAvLyBpZiAoIWZnLmRpcnR5KSB7XHJcbiAgICAgICAgLy8gICAgIGNvbnNvbGUud2FybignRm9ybSBpcyBub3QgZGlydHkgaGVuY2UgbW9kYWxmb3JtIHJlY29yZCBpcyBub3Qgc2F2ZWQuJyk7XHJcbiAgICAgICAgLy8gICAgIHRoaXMub25DYW5jZWwoKTtcclxuICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgLy8gaWYgKCFmZy52YWxpZCkge1xyXG4gICAgICAgIC8vICAgICBjb25zdCBlcnJvcnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEZvcm1Hcm91cEVycm9ycyhmZywgdGhpcy5hbGVydFNlcnZpY2UpO1xyXG4gICAgICAgIC8vICAgICBjb25zb2xlLndhcm4oXCJGb3JtIFZhbGlkYXRpb24gZ290IGVycm9yKHMpOlwiLCBlcnJvcnMpO1xyXG4gICAgICAgIC8vICAgICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAvLyAvLyBPYmplY3QuYXNzaWduKHRoaXMuZ3JvdXAuek1vZGVsLCBmZy52YWx1ZSk7XHJcbiAgICAgICAgLy8gLy8gdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyh0aGlzLmdyb3VwLnpNb2RlbCwgXCJjb25maXJtXCIpO1xyXG4gICAgICAgIC8vIC8vIGlmIChaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCkpIHtcclxuICAgICAgICAvLyB0aGlzLm1vZGFsQ3RybC5kaXNtaXNzKGV2ZW50LmRhdGEsIFwiY29uZmlybVwiKTtcclxuICAgICAgICAvLyAvLyB9IGVsc2Uge1xyXG4gICAgICAgIC8vIC8vICAgdGhpcy5kaWFsb2cuY2xvc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgLy8gLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIG9uSW5pdENsb3NlKGV2ZW50PzogWkNvbXBvbmVudE91dHB1dEV2ZW50KSB7XHJcbiAgICAgIFptb2RhbEhlbHBlci5vbkluaXRDbG9zZSh0aGlzLCBldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdG8gc2VydmUgYWN0aW9uQnV0dG9uIGF0IGZvcm1IZWFkZXJcclxuICAgIHN1YmplY3RFdmVudChldmVudDogWkNvbXBvbmVudE91dHB1dEV2ZW50LCBncm91cDogWkdyb3VwLCBtZTogYW55KSB7XHJcbiAgICAgICAgaWYgKCFldmVudCB8fCAhZXZlbnQudGFyZ2V0IHx8ICFldmVudC50YXJnZXQuc3RhcnRzV2l0aCgnbW9kYWxHcm91cCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc29sZS5sb2coXCI+PiBTdWJqZWN0RXZlbnRcIiwgZXZlbnQpO1xyXG4gICAgICAgIC8vIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldC5yZXBsYWNlKCdtb2RhbEdyb3VwLicsICdncm91cC4nKTtcclxuICAgICAgICBjb25zdCBjYWxsRnVuYyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBldmVudC50YXJnZXQsIGdyb3VwKTtcclxuICAgICAgICAvLyBjYWxsRnVuYyhldmVudCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsRnVuYyA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZnID0gdGhpcy5ncm91cC5mb3JtIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmdyb3VwLnpNb2RlbCwgZmcudmFsdWUpO1xyXG4gICAgICAgICAgICBldmVudC5kYXRhID0gdGhpcy5ncm91cC56TW9kZWw7XHJcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuc3RhcnRzV2l0aCgnbW9kYWxHcm91cC5tb2RhbEFuc3dlcicpIHx8IGV2ZW50LnRhcmdldC5zdGFydHNXaXRoKCdtb2RhbEdyb3VwLm1vZGFsQ2FuY2VsJykpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Z1bmMgPSBjYWxsRnVuYy5iaW5kKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgbmV3RnVuYyhldmVudCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGdW5jID0gY2FsbEZ1bmMuYmluZChncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICAgICAgICAgICAgbmV3RnVuYyhldmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIG5vdCBkZWZpbmVkIGluIGdyb3VwIGZvcjogXCIsXHJcbiAgICAgICAgICAgICAgICBjYWxsRnVuYyxcclxuICAgICAgICAgICAgICAgIFwiLCBFdmVudDogXCIsXHJcbiAgICAgICAgICAgICAgICBldmVudFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRNb2RlbCQoZ3JvdXA6IGFueSwgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcmVjSWQgPSBpZCB8fCBncm91cC5yZWZlcmVuY2VJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy53ZWJBcGlTZXJ2aWNlLmh0dHBHZXQkKGdyb3VwLnJlc291cmNlVVJMICsgXCIvXCIgKyByZWNJZCwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0R3JpZFN0eWxlKCkge1xyXG4gICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZVNjcmVlbikge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgXCJoZWlnaHQucHhcIjogNTAwLFxyXG4gICAgICAgICAgICAgICAgXCJ3aWR0aC5weFwiOiA3MDBcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTW9iaWxlU2NyZWVuKCkge1xyXG4gICAgICAgIGNvbnN0IHYgPSBaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCk7XHJcbiAgICAgICAgcmV0dXJuIHY7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTSVRFbnZpcm9ubWVudCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy56Y29yZVNlcnZpY2UuaXNEZWJ1Z1Nlc3Npb24oKTtcclxuICAgIH1cclxufVxyXG4iLCI8aW9uLWhlYWRlciAqbmdJZj1cImlzTW9iaWxlU2NyZWVuKClcIj5cclxuICA8aW9uLXRvb2xiYXI+XHJcbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XHJcbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvbkNhbmNlbCgpXCI+XHJcbiAgICAgICAgPCEtLSA8aW9uLWljb24gbmFtZT1cImNsb3NlXCI+PC9pb24taWNvbj4gLS0+XHJcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3RpbWVzJ1wiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cclxuICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICAgIDxpb24tdGl0bGU+XHJcbiAgICAgIHt7IG1vZGFsUGFyYW1zLmZvcm1IZWFkZXIgfX1cclxuICAgIDwvaW9uLXRpdGxlPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJwcmltYXJ5XCIgKm5nSWY9XCIhZ3JvdXAuaXNMb2FkaW5nXCI+XHJcbiAgICAgIDxhcHAtdWlhY3Rpb25idXR0b24gW2dyb3VwXT1cImdyb3VwXCI+PC9hcHAtdWlhY3Rpb25idXR0b24+XHJcbiAgICA8L2lvbi1idXR0b25zPlxyXG4gIDwvaW9uLXRvb2xiYXI+XHJcbjwvaW9uLWhlYWRlcj5cclxuXHJcbjxpb24tY29udGVudCBhcHBTY3JvbGxiYXJUaGVtZSBbbmdTdHlsZV09XCJnZXRHcmlkU3R5bGUoKVwiPlxyXG4gIDxpb24tZ3JpZD5cclxuICAgIDxpb24tcm93ICpuZ0lmPVwiZ3JvdXAuaXNMb2FkaW5nXCIgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tbWFyZ2luIGlvbi1wYWRkaW5nXCI+XHJcbiAgICAgICAgPGlvbi1zcGlubmVyPjwvaW9uLXNwaW5uZXI+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICAgIDxpb24tcm93ICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICA8aW9uLWNvbD5cclxuICAgICAgICA8YXBwLXpmb3JtIFtncm91cF09XCJncm91cFwiPjwvYXBwLXpmb3JtPlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgICA8aW9uLXJvdyAqbmdJZj1cImlzU0lURW52aXJvbm1lbnQoKSAmJiAhZ3JvdXAuaXNMb2FkaW5nXCI+XHJcbiAgICAgIDxpb24tY29sPlxyXG4gICAgICAgIDxwcmUgc3R5bGU9XCJmb250LXNpemU6IHgtc21hbGw7XCI+e3tncm91cC56TW9kZWwgfCBqc29ufX08L3ByZT5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIDwvaW9uLWdyaWQ+XHJcbjwvaW9uLWNvbnRlbnQ+XHJcblxyXG4iXX0=
@@ -8,15 +8,14 @@ import * as i0 from "@angular/core";
8
8
  import * as i1 from "@progress/kendo-angular-dialog";
9
9
  import * as i2 from "@ionic/angular";
10
10
  import * as i3 from "mmhglobal-zcore";
11
- import * as i4 from "../services/component-error-handler.service";
12
- import * as i5 from "@fortawesome/angular-fontawesome";
13
- import * as i6 from "../uiactionbutton/uiactionbutton.component";
14
- import * as i7 from "../zform/zform.component";
15
- import * as i8 from "@angular/common";
16
- import * as i9 from "../directives/scrollbar.theme.directive";
17
- import * as i10 from "@angular/flex-layout/extended";
11
+ import * as i4 from "@fortawesome/angular-fontawesome";
12
+ import * as i5 from "../uiactionbutton/uiactionbutton.component";
13
+ import * as i6 from "../zform/zform.component";
14
+ import * as i7 from "@angular/common";
15
+ import * as i8 from "../directives/scrollbar.theme.directive";
16
+ import * as i9 from "@angular/flex-layout/extended";
18
17
  export class ZmodalComponent extends DialogContentBase {
19
- constructor(dialog, modalCtrl, zcoreService, webApiService, resourceApiService, componentErrorHandler, // Use in mmhglobal-zmodal.helper
18
+ constructor(dialog, modalCtrl, zcoreService, webApiService, resourceApiService, componentErrorHandlerService, // Use in mmhglobal-zmodal.helper
20
19
  fieldService, platform, alertService) {
21
20
  super(dialog);
22
21
  this.dialog = dialog;
@@ -24,7 +23,7 @@ export class ZmodalComponent extends DialogContentBase {
24
23
  this.zcoreService = zcoreService;
25
24
  this.webApiService = webApiService;
26
25
  this.resourceApiService = resourceApiService;
27
- this.componentErrorHandler = componentErrorHandler;
26
+ this.componentErrorHandlerService = componentErrorHandlerService;
28
27
  this.fieldService = fieldService;
29
28
  this.platform = platform;
30
29
  this.alertService = alertService;
@@ -118,12 +117,12 @@ export class ZmodalComponent extends DialogContentBase {
118
117
  return v;
119
118
  }
120
119
  }
121
- ZmodalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmodalComponent, deps: [{ token: i1.DialogRef }, { token: i2.ModalController }, { token: i3.ZCoreService }, { token: i3.WebApiService }, { token: i3.ResourceApiService }, { token: i4.ComponentErrorHandlerService }, { token: i3.FieldService }, { token: i2.Platform }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component });
122
- ZmodalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZmodalComponent, selector: "app-zmodal", inputs: { modalParams: "modalParams" }, usesInheritance: true, ngImport: i0, template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i6.UiactionbuttonComponent, selector: "app-uiactionbutton" }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i2.IonRow, selector: "ion-row" }, { type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { type: i7.ZformComponent, selector: "app-zform", inputs: ["group", "fieldName"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.ScrollbarThemeDirective, selector: "[appScrollbarTheme]" }, { type: i8.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i10.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }], pipes: { "json": i8.JsonPipe } });
120
+ ZmodalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmodalComponent, deps: [{ token: i1.DialogRef }, { token: i2.ModalController }, { token: i3.ZCoreService }, { token: i3.WebApiService }, { token: i3.ResourceApiService }, { token: i3.ComponentErrorHandlerService }, { token: i3.FieldService }, { token: i2.Platform }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component });
121
+ ZmodalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZmodalComponent, selector: "app-zmodal", inputs: { modalParams: "modalParams" }, usesInheritance: true, ngImport: i0, template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""], components: [{ type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i5.UiactionbuttonComponent, selector: "app-uiactionbutton" }, { type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i2.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i2.IonRow, selector: "ion-row" }, { type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { type: i6.ZformComponent, selector: "app-zform", inputs: ["group", "fieldName"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ScrollbarThemeDirective, selector: "[appScrollbarTheme]" }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i9.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }], pipes: { "json": i7.JsonPipe } });
123
122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmodalComponent, decorators: [{
124
123
  type: Component,
125
124
  args: [{ selector: 'app-zmodal', template: "<ion-header *ngIf=\"isMobileScreen()\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"onCancel()\">\r\n <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n {{ modalParams.formHeader }}\r\n </ion-title>\r\n <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n <ion-col class=\"ion-margin ion-padding\">\r\n <ion-spinner></ion-spinner>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\">\r\n <ion-col>\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n <ion-col>\r\n <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n</ion-content>\r\n\r\n", styles: [""] }]
126
- }], ctorParameters: function () { return [{ type: i1.DialogRef }, { type: i2.ModalController }, { type: i3.ZCoreService }, { type: i3.WebApiService }, { type: i3.ResourceApiService }, { type: i4.ComponentErrorHandlerService }, { type: i3.FieldService }, { type: i2.Platform }, { type: i3.AlertService }]; }, propDecorators: { modalParams: [{
125
+ }], ctorParameters: function () { return [{ type: i1.DialogRef }, { type: i2.ModalController }, { type: i3.ZCoreService }, { type: i3.WebApiService }, { type: i3.ResourceApiService }, { type: i3.ComponentErrorHandlerService }, { type: i3.FieldService }, { type: i2.Platform }, { type: i3.AlertService }]; }, propDecorators: { modalParams: [{
127
126
  type: Input
128
127
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3ptb2RhbC96bW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvem1vZGFsL3ptb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdDQUFnQyxDQUFDO0FBRTlFLDJDQUEyQztBQUMzQyxPQUFPLEVBQ0wsTUFBTSxFQUVOLGdCQUFnQixFQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7OztBQVUvRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxpQkFBaUI7SUFPcEQsWUFDUyxNQUFpQixFQUNoQixTQUEwQixFQUMxQixZQUEwQixFQUMxQixhQUE0QixFQUM1QixrQkFBc0MsRUFDdEMscUJBQW1ELEVBQUUsaUNBQWlDO0lBQ3RGLFlBQTBCLEVBQzFCLFFBQWtCLEVBQ2xCLFlBQTBCO1FBR2xDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQVhQLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QywwQkFBcUIsR0FBckIscUJBQXFCLENBQThCO1FBQ25ELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFicEMsVUFBSyxHQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBaUJqQyxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QixJQUFJO0lBRUosUUFBUTtRQUNOLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVztRQUNULFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQTZCO1FBQ3BDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25DLHVCQUF1QjtJQUN6QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQTRCO1FBQ3BDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLDJDQUEyQztRQUMzQywwQkFBMEI7UUFDMUIsWUFBWTtRQUNaLElBQUk7UUFFSixtQkFBbUI7UUFDbkIsNEVBQTRFO1FBQzVFLHFCQUFxQjtRQUNyQixZQUFZO1FBQ1osSUFBSTtRQUVKLG1CQUFtQjtRQUNuQiwrRUFBK0U7UUFDL0UsMkRBQTJEO1FBQzNELFlBQVk7UUFDWixJQUFJO1FBRUosOENBQThDO1FBQzlDLHdEQUF3RDtRQUN4RCwyQ0FBMkM7UUFDM0MsbURBQW1EO1FBQ25ELFdBQVc7UUFDWCxpQ0FBaUM7UUFDakMsSUFBSTtJQUNOLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBNkI7UUFDdkMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBR0Qsc0NBQXNDO0lBQ3RDLFlBQVksQ0FBQyxLQUE0QixFQUFFLEtBQWEsRUFBRSxFQUFPO1FBQy9ELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDckUsT0FBTztTQUNSO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxnRUFBZ0U7UUFDaEUsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLG1CQUFtQjtRQUNuQixJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRTtZQUNsQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQWlCLENBQUM7WUFDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUMvQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO2dCQUM5SixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEI7aUJBQU07Z0JBQ0wsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNoQjtTQUNGO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUNWLHFDQUFxQyxFQUNyQyxRQUFRLEVBQ1IsV0FBVyxFQUNYLEtBQUssQ0FDTixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxFQUFVO1FBQzlCLE1BQU0sS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxZQUFZO1FBQ1YsWUFBWTtRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLE9BQU87Z0JBQ0wsV0FBVyxFQUFFLEdBQUc7Z0JBQ2hCLFVBQVUsRUFBRSxHQUFHO2FBQ2hCLENBQUM7U0FDSDtRQUNELE9BQU87SUFDVCxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7NEdBN0hVLGVBQWU7Z0dBQWYsZUFBZSxpSEMzQjVCLHF1Q0FxQ0E7MkZEVmEsZUFBZTtrQkFOM0IsU0FBUzsrQkFDRSxZQUFZOzhVQU1iLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBQbGF0Zm9ybSB9IGZyb20gXCJAaW9uaWMvYW5ndWxhclwiO1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IERpYWxvZ0NvbnRlbnRCYXNlLCBEaWFsb2dSZWYgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1kaWFsb2cnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIFpHcm91cCwgTW9kYWxQYWdlUGFyYW1zLFxyXG4gIFdlYkFwaVNlcnZpY2UsIEFsZXJ0U2VydmljZSwgWkNvcmVTZXJ2aWNlLCBGaWVsZFNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSxcclxuICBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnRcclxufSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IFptb2RhbEhlbHBlciwgTW9kYWxSZXNwb25zZSB9IGZyb20gJ21taGdsb2JhbC16bW9kYWwnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2NvbXBvbmVudC1lcnJvci1oYW5kbGVyLnNlcnZpY2VcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16bW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96bW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ptb2RhbC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFptb2RhbENvbXBvbmVudCBleHRlbmRzIERpYWxvZ0NvbnRlbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIG1vZGFsUGFyYW1zOiBNb2RhbFBhZ2VQYXJhbXM7XHJcblxyXG4gIGdyb3VwOiBaR3JvdXAgPSBuZXcgWkdyb3VwKHRydWUpO1xyXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIGJhY2tCdXR0b25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBEaWFsb2dSZWYsXHJcbiAgICBwcml2YXRlIG1vZGFsQ3RybDogTW9kYWxDb250cm9sbGVyLFxyXG4gICAgcHJpdmF0ZSB6Y29yZVNlcnZpY2U6IFpDb3JlU2VydmljZSxcclxuICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEVycm9ySGFuZGxlcjogQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSwgLy8gVXNlIGluIG1taGdsb2JhbC16bW9kYWwuaGVscGVyXHJcbiAgICBwcml2YXRlIGZpZWxkU2VydmljZTogRmllbGRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXHJcblxyXG4gICkge1xyXG4gICAgc3VwZXIoZGlhbG9nKTtcclxuICB9XHJcblxyXG4gIC8vIGdldCBtb2RhbEdyb3VwKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuZ3JvdXA7XHJcbiAgLy8gfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIFptb2RhbEhlbHBlci5vbkluaXRfTW9kYWxGb3JtKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBabW9kYWxIZWxwZXIub25EZXN0cm95X01vZGFsRm9ybSh0aGlzKTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKGV2ZW50PzogWkNvbXBvbmVudE91dHB1dEV2ZW50KSB7XHJcbiAgICBabW9kYWxIZWxwZXIub25DYW5jZWwodGhpcywgZXZlbnQpO1xyXG4gICAgLy8gdGhpcy5kaWFsb2cuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uQ29uZmlybShldmVudDogWkNvbXBvbmVudE91dHB1dEV2ZW50KSB7XHJcbiAgICBabW9kYWxIZWxwZXIub25Db25maXJtKHRoaXMsIGV2ZW50KTtcclxuICAgIC8vIGNvbnN0IGZnID0gdGhpcy5ncm91cC5mb3JtIGFzIEZvcm1Hcm91cDtcclxuICAgIC8vIGlmICghdGhpcy5ncm91cC5mb3JtKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBpZiAoIWZnLmRpcnR5KSB7XHJcbiAgICAvLyAgIGNvbnNvbGUud2FybignRm9ybSBpcyBub3QgZGlydHkgaGVuY2UgbW9kYWxmb3JtIHJlY29yZCBpcyBub3Qgc2F2ZWQuJyk7XHJcbiAgICAvLyAgIHRoaXMub25DYW5jZWwoKTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIGlmICghZmcudmFsaWQpIHtcclxuICAgIC8vICAgY29uc3QgZXJyb3JzID0gWkNvbXBvbmVudEhlbHBlci5nZXRGb3JtR3JvdXBFcnJvcnMoZmcsIHRoaXMuYWxlcnRTZXJ2aWNlKTtcclxuICAgIC8vICAgY29uc29sZS53YXJuKFwiRm9ybSBWYWxpZGF0aW9uIGdvdCBlcnJvcihzKTpcIiwgZXJyb3JzKTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIE9iamVjdC5hc3NpZ24odGhpcy5ncm91cC56TW9kZWwsIGZnLnZhbHVlKTtcclxuICAgIC8vIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5ncm91cC56TW9kZWwsIFwiY29uZmlybVwiKTtcclxuICAgIC8vIGlmIChaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCkpIHtcclxuICAgIC8vICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhldmVudC5kYXRhLCBcImNvbmZpcm1cIik7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gdGhpcy5kaWFsb2cuY2xvc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBvbkluaXRDbG9zZShldmVudD86IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgWm1vZGFsSGVscGVyLm9uSW5pdENsb3NlKHRoaXMsZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgaXNTSVRFbnZpcm9ubWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpjb3JlU2VydmljZS5pc0RlYnVnU2Vzc2lvbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIHRvIHNlcnZlIGFjdGlvbkJ1dHRvbiBhdCBmb3JtSGVhZGVyXHJcbiAgc3ViamVjdEV2ZW50KGV2ZW50OiBaQ29tcG9uZW50T3V0cHV0RXZlbnQsIGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZXZlbnQgfHwgIWV2ZW50LnRhcmdldCB8fCAhZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoJ21vZGFsR3JvdXAnKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcIj4+IFN1YmplY3RFdmVudFwiLCBldmVudCk7XHJcbiAgICAvLyBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQucmVwbGFjZSgnbW9kYWxHcm91cC4nLCAnZ3JvdXAuJyk7XHJcbiAgICBjb25zdCBjYWxsRnVuYyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBldmVudC50YXJnZXQsIGdyb3VwKTtcclxuICAgIC8vIGNhbGxGdW5jKGV2ZW50KTtcclxuICAgIGlmICh0eXBlb2YgY2FsbEZ1bmMgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBjb25zdCBmZyA9IHRoaXMuZ3JvdXAuZm9ybSBhcyBGb3JtR3JvdXA7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5ncm91cC56TW9kZWwsIGZnLnZhbHVlKTtcclxuICAgICAgZXZlbnQuZGF0YSA9IHRoaXMuZ3JvdXAuek1vZGVsO1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoJ21vZGFsR3JvdXAubW9kYWxBbnN3ZXInKSB8fCBldmVudC50YXJnZXQuc3RhcnRzV2l0aCgnbW9kYWxHcm91cC5tb2RhbENsb3NlJykgfHwgZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoJ21vZGFsR3JvdXAubW9kYWxDYW5jZWwnKSkge1xyXG4gICAgICAgIGNvbnN0IG5ld0Z1bmMgPSBjYWxsRnVuYy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIG5ld0Z1bmMoZXZlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG5ld0Z1bmMgPSBjYWxsRnVuYy5iaW5kKGdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgICAgbmV3RnVuYyhldmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBcIkZ1bmN0aW9uIG5vdCBkZWZpbmVkIGluIGdyb3VwIGZvcjogXCIsXHJcbiAgICAgICAgY2FsbEZ1bmMsXHJcbiAgICAgICAgXCIsIEV2ZW50OiBcIixcclxuICAgICAgICBldmVudFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TW9kZWwkKGdyb3VwOiBhbnksIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcmVjSWQgPSBpZCB8fCBncm91cC5yZWZlcmVuY2VJZDtcclxuICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cEdldCQoZ3JvdXAucmVzb3VyY2VVUkwgKyBcIi9cIiArIHJlY0lkLCBudWxsKTtcclxuICB9XHJcblxyXG4gIGdldEdyaWRTdHlsZSgpIHtcclxuICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgaWYgKCF0aGlzLmlzTW9iaWxlU2NyZWVuKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgXCJoZWlnaHQucHhcIjogNTAwLFxyXG4gICAgICAgIFwid2lkdGgucHhcIjogNzAwXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpc01vYmlsZVNjcmVlbigpIHtcclxuICAgIGNvbnN0IHYgPSBaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCk7XHJcbiAgICByZXR1cm4gdjtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1oZWFkZXIgKm5nSWY9XCJpc01vYmlsZVNjcmVlbigpXCI+XHJcbiAgPGlvbi10b29sYmFyPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxyXG4gICAgICAgIDwhLS0gPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+IC0tPlxyXG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cIid0aW1lcydcIiBzaXplPVwibGdcIj48L2ZhLWljb24+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8aW9uLXRpdGxlPlxyXG4gICAgICB7eyBtb2RhbFBhcmFtcy5mb3JtSGVhZGVyIH19XHJcbiAgICA8L2lvbi10aXRsZT5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwicHJpbWFyeVwiICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICA8YXBwLXVpYWN0aW9uYnV0dG9uIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpYWN0aW9uYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICA8L2lvbi10b29sYmFyPlxyXG48L2lvbi1oZWFkZXI+XHJcblxyXG48aW9uLWNvbnRlbnQgYXBwU2Nyb2xsYmFyVGhlbWUgW25nU3R5bGVdPVwiZ2V0R3JpZFN0eWxlKClcIj5cclxuICA8aW9uLWdyaWQ+XHJcbiAgICA8aW9uLXJvdyAqbmdJZj1cImdyb3VwLmlzTG9hZGluZ1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW1hcmdpbiBpb24tcGFkZGluZ1wiPlxyXG4gICAgICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgICA8aW9uLXJvdyAqbmdJZj1cIiFncm91cC5pc0xvYWRpbmdcIj5cclxuICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgPGFwcC16Zm9ybSBbZ3JvdXBdPVwiZ3JvdXBcIj48L2FwcC16Zm9ybT5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gICAgPGlvbi1yb3cgKm5nSWY9XCJpc1NJVEVudmlyb25tZW50KCkgJiYgIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICA8aW9uLWNvbD5cclxuICAgICAgICA8cHJlIHN0eWxlPVwiZm9udC1zaXplOiB4LXNtYWxsO1wiPnt7Z3JvdXAuek1vZGVsIHwganNvbn19PC9wcmU+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICA8L2lvbi1ncmlkPlxyXG48L2lvbi1jb250ZW50PlxyXG5cclxuIl19
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3ptb2RhbC96bW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvem1vZGFsL3ptb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUXBFLE9BQU8sRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdDQUFnQyxDQUFDO0FBRTlFLDJDQUEyQztBQUMzQyxPQUFPLEVBQ0wsTUFBTSxFQUVOLGdCQUFnQixFQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7Ozs7O0FBUy9ELE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUFpQjtJQU9wRCxZQUNTLE1BQWlCLEVBQ2hCLFNBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0Qyw0QkFBMEQsRUFBRSxpQ0FBaUM7SUFDN0YsWUFBMEIsRUFDMUIsUUFBa0IsRUFDbEIsWUFBMEI7UUFHbEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBWFAsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsYUFBUSxHQUFSLFFB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cUNBQXFDLEVBQ3JDLFFBQVEsRUFDUixXQUFXLEVBQ1gsS0FBSyxDQUNOLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVSxFQUFFLEVBQVU7UUFDOUIsTUFBTSxLQUFLLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLEdBQUcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELFlBQVk7UUFDVixZQUFZO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsT0FBTztnQkFDTCxXQUFXLEVBQUUsR0FBRztnQkFDaEIsVUFBVSxFQUFFLEdBQUc7YUFDaEIsQ0FBQztTQUNIO1FBQ0QsT0FBTztJQUNULENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUMsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDOzs0R0E3SFUsZUFBZTtnR0FBZixlQUFlLGlIQzFCNUIscXVDQXFDQTsyRkRYYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLFlBQVk7OFVBTWIsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIsIFBsYXRmb3JtIH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyXCI7XHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGlhbG9nQ29udGVudEJhc2UsIERpYWxvZ1JlZiB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWRpYWxvZyc7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgWkdyb3VwLCBNb2RhbFBhZ2VQYXJhbXMsXHJcbiAgV2ViQXBpU2VydmljZSwgQWxlcnRTZXJ2aWNlLCBaQ29yZVNlcnZpY2UsIEZpZWxkU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRPdXRwdXRFdmVudCwgQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZVxyXG59IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgWm1vZGFsSGVscGVyLCBNb2RhbFJlc3BvbnNlIH0gZnJvbSAnbW1oZ2xvYmFsLXptb2RhbCc7IFxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXptb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ptb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vem1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWm1vZGFsQ29tcG9uZW50IGV4dGVuZHMgRGlhbG9nQ29udGVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgbW9kYWxQYXJhbXM6IE1vZGFsUGFnZVBhcmFtcztcclxuXHJcbiAgZ3JvdXA6IFpHcm91cCA9IG5ldyBaR3JvdXAodHJ1ZSk7XHJcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgYmFja0J1dHRvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBkaWFsb2c6IERpYWxvZ1JlZixcclxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZTogQ29tcG9uZW50RXJyb3JIYW5kbGVyU2VydmljZSwgLy8gVXNlIGluIG1taGdsb2JhbC16bW9kYWwuaGVscGVyXHJcbiAgICBwcml2YXRlIGZpZWxkU2VydmljZTogRmllbGRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXHJcblxyXG4gICkge1xyXG4gICAgc3VwZXIoZGlhbG9nKTtcclxuICB9XHJcblxyXG4gIC8vIGdldCBtb2RhbEdyb3VwKCkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuZ3JvdXA7XHJcbiAgLy8gfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIFptb2RhbEhlbHBlci5vbkluaXRfTW9kYWxGb3JtKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBabW9kYWxIZWxwZXIub25EZXN0cm95X01vZGFsRm9ybSh0aGlzKTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKGV2ZW50PzogWkNvbXBvbmVudE91dHB1dEV2ZW50KSB7XHJcbiAgICBabW9kYWxIZWxwZXIub25DYW5jZWwodGhpcywgZXZlbnQpO1xyXG4gICAgLy8gdGhpcy5kaWFsb2cuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uQ29uZmlybShldmVudDogWkNvbXBvbmVudE91dHB1dEV2ZW50KSB7XHJcbiAgICBabW9kYWxIZWxwZXIub25Db25maXJtKHRoaXMsIGV2ZW50KTtcclxuICAgIC8vIGNvbnN0IGZnID0gdGhpcy5ncm91cC5mb3JtIGFzIEZvcm1Hcm91cDtcclxuICAgIC8vIGlmICghdGhpcy5ncm91cC5mb3JtKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBpZiAoIWZnLmRpcnR5KSB7XHJcbiAgICAvLyAgIGNvbnNvbGUud2FybignRm9ybSBpcyBub3QgZGlydHkgaGVuY2UgbW9kYWxmb3JtIHJlY29yZCBpcyBub3Qgc2F2ZWQuJyk7XHJcbiAgICAvLyAgIHRoaXMub25DYW5jZWwoKTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIGlmICghZmcudmFsaWQpIHtcclxuICAgIC8vICAgY29uc3QgZXJyb3JzID0gWkNvbXBvbmVudEhlbHBlci5nZXRGb3JtR3JvdXBFcnJvcnMoZmcsIHRoaXMuYWxlcnRTZXJ2aWNlKTtcclxuICAgIC8vICAgY29uc29sZS53YXJuKFwiRm9ybSBWYWxpZGF0aW9uIGdvdCBlcnJvcihzKTpcIiwgZXJyb3JzKTtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIE9iamVjdC5hc3NpZ24odGhpcy5ncm91cC56TW9kZWwsIGZnLnZhbHVlKTtcclxuICAgIC8vIHRoaXMubW9kYWxDdHJsLmRpc21pc3ModGhpcy5ncm91cC56TW9kZWwsIFwiY29uZmlybVwiKTtcclxuICAgIC8vIGlmIChaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCkpIHtcclxuICAgIC8vICAgdGhpcy5tb2RhbEN0cmwuZGlzbWlzcyhldmVudC5kYXRhLCBcImNvbmZpcm1cIik7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gdGhpcy5kaWFsb2cuY2xvc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBvbkluaXRDbG9zZShldmVudD86IFpDb21wb25lbnRPdXRwdXRFdmVudCkge1xyXG4gICAgWm1vZGFsSGVscGVyLm9uSW5pdENsb3NlKHRoaXMsZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgaXNTSVRFbnZpcm9ubWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLnpjb3JlU2VydmljZS5pc0RlYnVnU2Vzc2lvbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIHRvIHNlcnZlIGFjdGlvbkJ1dHRvbiBhdCBmb3JtSGVhZGVyXHJcbiAgc3ViamVjdEV2ZW50KGV2ZW50OiBaQ29tcG9uZW50T3V0cHV0RXZlbnQsIGdyb3VwOiBaR3JvdXAsIG1lOiBhbnkpIHtcclxuICAgIGlmICghZXZlbnQgfHwgIWV2ZW50LnRhcmdldCB8fCAhZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoJ21vZGFsR3JvdXAnKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcIj4+IFN1YmplY3RFdmVudFwiLCBldmVudCk7XHJcbiAgICAvLyBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQucmVwbGFjZSgnbW9kYWxHcm91cC4nLCAnZ3JvdXAuJyk7XHJcbiAgICBjb25zdCBjYWxsRnVuYyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBldmVudC50YXJnZXQsIGdyb3VwKTtcclxuICAgIC8vIGNhbGxGdW5jKGV2ZW50KTtcclxuICAgIGlmICh0eXBlb2YgY2FsbEZ1bmMgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBjb25zdCBmZyA9IHRoaXMuZ3JvdXAuZm9ybSBhcyBGb3JtR3JvdXA7XHJcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5ncm91cC56TW9kZWwsIGZnLnZhbHVlKTtcclxuICAgICAgZXZlbnQuZGF0YSA9IHRoaXMuZ3JvdXAuek1vZGVsO1xyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoJ21vZGFsR3JvdXAubW9kYWxBbnN3ZXInKSB8fCBldmVudC50YXJnZXQuc3RhcnRzV2l0aCgnbW9kYWxHcm91cC5tb2RhbENsb3NlJykgfHwgZXZlbnQudGFyZ2V0LnN0YXJ0c1dpdGgoJ21vZGFsR3JvdXAubW9kYWxDYW5jZWwnKSkge1xyXG4gICAgICAgIGNvbnN0IG5ld0Z1bmMgPSBjYWxsRnVuYy5iaW5kKHRoaXMpO1xyXG4gICAgICAgIG5ld0Z1bmMoZXZlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG5ld0Z1bmMgPSBjYWxsRnVuYy5iaW5kKGdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgICAgbmV3RnVuYyhldmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBcIkZ1bmN0aW9uIG5vdCBkZWZpbmVkIGluIGdyb3VwIGZvcjogXCIsXHJcbiAgICAgICAgY2FsbEZ1bmMsXHJcbiAgICAgICAgXCIsIEV2ZW50OiBcIixcclxuICAgICAgICBldmVudFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0TW9kZWwkKGdyb3VwOiBhbnksIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcmVjSWQgPSBpZCB8fCBncm91cC5yZWZlcmVuY2VJZDtcclxuICAgIHJldHVybiB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cEdldCQoZ3JvdXAucmVzb3VyY2VVUkwgKyBcIi9cIiArIHJlY0lkLCBudWxsKTtcclxuICB9XHJcblxyXG4gIGdldEdyaWRTdHlsZSgpIHtcclxuICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgaWYgKCF0aGlzLmlzTW9iaWxlU2NyZWVuKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgXCJoZWlnaHQucHhcIjogNTAwLFxyXG4gICAgICAgIFwid2lkdGgucHhcIjogNzAwXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpc01vYmlsZVNjcmVlbigpIHtcclxuICAgIGNvbnN0IHYgPSBaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCk7XHJcbiAgICByZXR1cm4gdjtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1oZWFkZXIgKm5nSWY9XCJpc01vYmlsZVNjcmVlbigpXCI+XHJcbiAgPGlvbi10b29sYmFyPlxyXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxyXG4gICAgICAgIDwhLS0gPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiPjwvaW9uLWljb24+IC0tPlxyXG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cIid0aW1lcydcIiBzaXplPVwibGdcIj48L2ZhLWljb24+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8aW9uLXRpdGxlPlxyXG4gICAgICB7eyBtb2RhbFBhcmFtcy5mb3JtSGVhZGVyIH19XHJcbiAgICA8L2lvbi10aXRsZT5cclxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwicHJpbWFyeVwiICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICA8YXBwLXVpYWN0aW9uYnV0dG9uIFtncm91cF09XCJncm91cFwiPjwvYXBwLXVpYWN0aW9uYnV0dG9uPlxyXG4gICAgPC9pb24tYnV0dG9ucz5cclxuICA8L2lvbi10b29sYmFyPlxyXG48L2lvbi1oZWFkZXI+XHJcblxyXG48aW9uLWNvbnRlbnQgYXBwU2Nyb2xsYmFyVGhlbWUgW25nU3R5bGVdPVwiZ2V0R3JpZFN0eWxlKClcIj5cclxuICA8aW9uLWdyaWQ+XHJcbiAgICA8aW9uLXJvdyAqbmdJZj1cImdyb3VwLmlzTG9hZGluZ1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLW1hcmdpbiBpb24tcGFkZGluZ1wiPlxyXG4gICAgICAgIDxpb24tc3Bpbm5lcj48L2lvbi1zcGlubmVyPlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgICA8aW9uLXJvdyAqbmdJZj1cIiFncm91cC5pc0xvYWRpbmdcIj5cclxuICAgICAgPGlvbi1jb2w+XHJcbiAgICAgICAgPGFwcC16Zm9ybSBbZ3JvdXBdPVwiZ3JvdXBcIj48L2FwcC16Zm9ybT5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gICAgPGlvbi1yb3cgKm5nSWY9XCJpc1NJVEVudmlyb25tZW50KCkgJiYgIWdyb3VwLmlzTG9hZGluZ1wiPlxyXG4gICAgICA8aW9uLWNvbD5cclxuICAgICAgICA8cHJlIHN0eWxlPVwiZm9udC1zaXplOiB4LXNtYWxsO1wiPnt7Z3JvdXAuek1vZGVsIHwganNvbn19PC9wcmU+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICA8L2lvbi1ncmlkPlxyXG48L2lvbi1jb250ZW50PlxyXG5cclxuIl19