tin-spa 2.13.2 → 2.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/table/detailsDialog.component.mjs +16 -3
- package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +15 -2
- package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +15 -2
- package/fesm2015/tin-spa.mjs +43 -4
- package/fesm2015/tin-spa.mjs.map +1 -1
- package/fesm2020/tin-spa.mjs +43 -4
- package/fesm2020/tin-spa.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -336,7 +336,20 @@ export class DetailsDialogLite {
|
|
|
336
336
|
button.onSuccess(apiResponse.data, this.details);
|
|
337
337
|
}
|
|
338
338
|
if (button.keepOpen) {
|
|
339
|
-
|
|
339
|
+
if (button.name === 'create' && apiResponse.data) {
|
|
340
|
+
this.details = apiResponse.data;
|
|
341
|
+
if (this.detailsConfig.heroField && apiResponse.data[this.detailsConfig.heroField]) {
|
|
342
|
+
this.detailsConfig.heroValue = apiResponse.data[this.detailsConfig.heroField];
|
|
343
|
+
this.formConfig.heroField = this.detailsConfig.heroField;
|
|
344
|
+
this.formConfig.heroValue = this.detailsConfig.heroValue;
|
|
345
|
+
}
|
|
346
|
+
this.formConfig.mode = 'edit';
|
|
347
|
+
this.setTitleAction();
|
|
348
|
+
this.isLoadComplete = true;
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
this.refreshData();
|
|
352
|
+
}
|
|
340
353
|
}
|
|
341
354
|
else {
|
|
342
355
|
this.dialogRef.close({ message: 'success', data: { ...apiResponse, data: button.name == 'create' ? apiResponse.data : this.details } });
|
|
@@ -368,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
368
381
|
type: Output
|
|
369
382
|
}] } });
|
|
370
383
|
;
|
|
371
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsc0RpYWxvZy1saXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlLWxpdGUvZGV0YWlsc0RpYWxvZy1saXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlLWxpdGUvZGV0YWlsc0RpYWxvZy1saXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQU16RSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVXZELE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsWUFBb0Isa0JBQXNDLEVBQVMsYUFBNEIsRUFBUSxXQUEyQixFQUFTLGNBQThCLEVBQy9KLFNBQTBDLEVBQWtDLGFBQWtDLEVBQVUsYUFBNEIsRUFDcEosYUFBNEIsRUFBVSxXQUF3QixFQUFTLGtCQUFzQztRQUZuRyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBUSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0osY0FBUyxHQUFULFNBQVMsQ0FBaUM7UUFBa0Msa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDcEosa0JBQWEsR0FB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LENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDOzs4R0FoYVUsaUJBQWlCLHlLQUdrQyxlQUFlO2tHQUhsRSxpQkFBaUIsdUdDckI5Qiw4cktBK0dBOzJGRDFGYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0Usd0JBQXdCOzswQkFPcUIsTUFBTTsyQkFBQyxlQUFlOytKQXFGbkUsV0FBVztzQkFBcEIsTUFBTTs7QUEwVVIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybUNvbmZpZywgRmllbGQsIFRhYmxlQ29uZmlnLCBCdXR0b24sIERldGFpbHNEaWFsb2dDb25maWcsIEFjdGlvbiwgQXBpUmVzcG9uc2UsIFN0ZXBDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlTGliIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWxpYi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyLCBCcmVha3BvaW50U3RhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHsgQ29yZSwgRGV0YWlsc0RpYWxvZ1Byb2Nlc3NvciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvVGluQ29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEJ1dHRvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9idXR0b24uc2VydmljZSc7XHJcbmltcG9ydCB7IGludGVydmFsLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWJsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdFRhYkNoYW5nZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1kZXRhaWxzRGlhbG9nLWxpdGUnLCAvL3VuaXEgdG8gbGl0ZVxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXRhaWxzRGlhbG9nLWxpdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWxpdGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxzRGlhbG9nTGl0ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixwcml2YXRlIGxvYWRlclNlcnZpY2U6IExvYWRlclNlcnZpY2UscHVibGljIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZUxpYixwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGV0YWlsc0RpYWxvZ0xpdGU+LCBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRldGFpbHNDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcsIHByaXZhdGUgYnV0dG9uU2VydmljZTogQnV0dG9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHB1YmxpYyB0YWJsZUNvbmZpZ1NlcnZpY2U6IFRhYmxlQ29uZmlnU2VydmljZSlcclxuICB7XHJcbiAgICAvLyBkZXRlY3Qgc2NyZWVuIHNpemUgY2hhbmdlc1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbXCIobWF4LXdpZHRoOiA2MDBweClcIl0pLnN1YnNjcmliZSgocmVzdWx0OiBCcmVha3BvaW50U3RhdGUpID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQubWF0Y2hlcykge1xyXG4gICAgICAgIHRoaXMuc21hbGxTY3JlZW4gPSB0cnVlXHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICB0aGlzLnNtYWxsU2NyZWVuID0gZmFsc2VcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgY29uc3QgeyB0YWJsZUNvbmZpZywgdGFibGVDb25maWdzLCBmb3JtQ29uZmlnLCBzdGVwQ29uZmlnLCBidXR0b25zIH0gPSBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yLmluaXRpYWxpemVDb25maWdzKHRoaXMuZGV0YWlsc0NvbmZpZyk7XHJcbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gdGFibGVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlQ29uZmlncyA9IHRhYmxlQ29uZmlncztcclxuICAgIHRoaXMuZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XHJcbiAgICB0aGlzLnN0ZXBDb25maWcgPSBzdGVwQ29uZmlnO1xyXG4gICAgdGhpcy5idXR0b25zID0gYnV0dG9ucztcclxuXHJcbiAgICBsZXQgcmVzcCA9IERldGFpbHNEaWFsb2dQcm9jZXNzb3IuaGFuZGxlRm9ybU1vZGUodGhpcy5kZXRhaWxzQ29uZmlnLCB0aGlzLmZvcm1Db25maWcsKTtcclxuXHJcbiAgICBpZiAocmVzcC5sb2FkQnlBY3Rpb24pIHtcclxuICAgICAgdGhpcy5sb2FkQnlBY3Rpb24gPSB0cnVlO1xyXG4gICAgICBmb3JtQ29uZmlnLmxvYWRBY3Rpb24gPSByZXNwLmFjdGlvbjtcclxuICAgICAgdGhpcy5sb2FkRGF0YShyZXNwLmFjdGlvbiwgZmFsc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZXRhaWxzID0gcmVzcC5kZXRhaWxzO1xyXG4gICAgICBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yLnNldEhlcm9WYWx1ZSh0aGlzLmRldGFpbHNDb25maWcsIHRoaXMuZGV0YWlscyk7XHJcbiAgICAgIHRoaXMubG9hZEJ5QWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNMb2FkQ29tcGxldGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsZUZpZWxkID0gRGV0YWlsc0RpYWxvZ1Byb2Nlc3Nvci5zZXRGaWxlRmllbGQodGhpcy5mb3JtQ29uZmlnKTtcclxuXHJcbiAgICB0aGlzLmxvYWRlclNlcnZpY2UuaXNMb2FkaW5nLnN1YnNjcmliZSh4ID0+IHRoaXMuaXNQcm9jZXNzaW5nID0geCk7XHJcblxyXG4gICAgY29uc3QgeyBleHRyYUJ1dHRvbnMsIGNyZWF0ZUJ1dHRvbiwgZWRpdEJ1dHRvbiwgZGVsZXRlQnV0dG9uIH0gPSBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yLnNldHVwQnV0dG9ucyh0aGlzLmZvcm1Db25maWcsIHRoaXMuYnV0dG9ucyk7XHJcbiAgICB0aGlzLmV4dHJhQnV0dG9ucyA9IGV4dHJhQnV0dG9ucztcclxuICAgIHRoaXMuY3JlYXRlQnV0dG9uID0gY3JlYXRlQnV0dG9uO1xyXG4gICAgdGhpcy5lZGl0QnV0dG9uID0gZWRpdEJ1dHRvbjtcclxuICAgIHRoaXMuZGVsZXRlQnV0dG9uID0gZGVsZXRlQnV0dG9uO1xyXG5cclxuICAgIHRoaXMuc2V0VGl0bGVBY3Rpb24oKVxyXG4gICAgdGhpcy5pbml0QXV0b1JlZnJlc2goKTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIC8vIENsZWFudXAgc3Vic2NyaXB0aW9uIG9uIGNvbXBvbmVudCBkZXN0cm95XHJcbiAgICB0aGlzLnN0b3BBdXRvUmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZyZXNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgYXV0b1JlZnJlc2hFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHRpdGxlQWN0aW9uID0gXCJWaWV3XCI7XHJcbiAgbG9hZEJ5QWN0aW9uID0gZmFsc2U7XHJcblxyXG4gIGV4dHJhQnV0dG9uczogQnV0dG9uW107XHJcbiAgYnV0dG9uczogQnV0dG9uW107XHJcbiAgY3JlYXRlQnV0dG9uOiBCdXR0b247XHJcbiAgZWRpdEJ1dHRvbjogQnV0dG9uO1xyXG4gIGRlbGV0ZUJ1dHRvbjogQnV0dG9uO1xyXG5cclxuICAvLyBtb2RlQnV0dG9uIDogQnV0dG9uXHJcbiAgZmlsZUZpZWxkOiBGaWVsZDtcclxuICBmaWxlczogYW55W10gPSBbXTtcclxuXHJcbiAgdGFibGVSZWxvYWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB0YWJsZUNvbmZpZzogVGFibGVDb25maWdcclxuICB0YWJsZUNvbmZpZ3MgOiBUYWJsZUNvbmZpZ1tdXHJcbiAgZGV0YWlsczogYW55XHJcbiAgZm9ybUNvbmZpZzogRm9ybUNvbmZpZztcclxuICBzdGVwQ29uZmlnOiBTdGVwQ29uZmlnO1xyXG4gIHNtYWxsU2NyZWVuID0gZmFsc2U7XHJcblxyXG4gIGlzTG9hZENvbXBsZXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBpbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBzZWxlY3RlZFRhYkluZGV4ID0gMDtcclxuICAgIG9uVGFiQ2hhbmdlKGV2ZW50OiBNYXRUYWJDaGFuZ2VFdmVudCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXggPSBldmVudC5pbmRleDtcclxuICAgIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0QXV0b1JlZnJlc2goKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmRldGFpbHNDb25maWcuYXV0b1JlZnJlc2hDb25maWc7XHJcbiAgICBpZiAoIWNvbmZpZykgcmV0dXJuO1xyXG5cclxuICAgIC8vIFNldCBpbml0aWFsIHN0YXRlIGJhc2VkIG9uIGRlZmF1bHRPbiBjb25maWd1cmF0aW9uXHJcbiAgICB0aGlzLmF1dG9SZWZyZXNoRW5hYmxlZCA9IGNvbmZpZy5kZWZhdWx0T24gfHwgZmFsc2U7XHJcblxyXG4gICAgLy8gU3RhcnQgYXV0by1yZWZyZXNoIGlmIGVuYWJsZWQgYnkgZGVmYXVsdFxyXG4gICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRBdXRvUmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydEF1dG9SZWZyZXNoKCkge1xyXG5cclxuICAgIGlmICghdGhpcy5kZXRhaWxzQ29uZmlnLmF1dG9SZWZyZXNoQ29uZmlnKSByZXR1cm47XHJcbiAgICBcclxuICAgIGNvbnN0IHJlZnJlc2hJbnRlcnZhbCA9IHRoaXMuZGV0YWlsc0NvbmZpZy5hdXRvUmVmcmVzaENvbmZpZy5pbnRlcnZhbCB8fCA1MDAwOyAvLyBEZWZhdWx0IHRvIDUgc2Vjb25kc1xyXG4gICAgXHJcbiAgICAvLyBDbGVhciBhbnkgZXhpc3Rpbmcgc3Vic2NyaXB0aW9uXHJcbiAgICB0aGlzLnN0b3BBdXRvUmVmcmVzaCgpO1xyXG4gICAgXHJcbiAgICAvLyBDcmVhdGUgbmV3IHN1YnNjcmlwdGlvblxyXG4gICAgdGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwocmVmcmVzaEludGVydmFsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0xvYWRDb21wbGV0ZSAmJiAhdGhpcy5pc1Byb2Nlc3NpbmcpIHtcclxuICAgICAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdG9wQXV0b1JlZnJlc2goKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXV0b1JlZnJlc2goKSB7XHJcbiAgICAvLyB0aGlzLmF1dG9SZWZyZXNoRW5hYmxlZCA9ICF0aGlzLmF1dG9SZWZyZXNoRW5hYmxlZDtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRBdXRvUmVmcmVzaCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWREYXRhKGFjdGlvbjogQWN0aW9uLCBjYXVzZVRhYmxlc1JlbG9hZCkge1xyXG5cclxuICAgIGlmIChhY3Rpb24gJiYgdGhpcy5sb2FkQnlBY3Rpb24pIHtcclxuXHJcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaShhY3Rpb24pLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLmRldGFpbHMgPSBhcGlSZXNwb25zZS5kYXRhXHJcbiAgICAgICAgICB0aGlzLmlzTG9hZENvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICAgIC8vIERldGFpbHNEaWFsb2dQcm9jZXNzb3Iuc2V0SGVyb1ZhbHVlKHRoaXMuZGV0YWlsc0NvbmZpZywgdGhpcy5kZXRhaWxzKTtcclxuICAgICAgICAgIGlmKGNhdXNlVGFibGVzUmVsb2FkKSB0aGlzLnRhYmxlUmVsb2FkLm5leHQodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5kZXRhaWxzQ29uZmlnLmF1dG9SZWZyZXNoQ29uZmlnO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkICYmIGNvbmZpZz8uc3RvcENvbmRpdGlvbiAmJiBjb25maWcuc3RvcENvbmRpdGlvbih0aGlzLmRldGFpbHMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgaW5wdXRDaGFuZ2VkKGV2ZW50KSB7XHJcbiAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQoeyBmaWVsZDogZXZlbnQuZmllbGQsIHZhbHVlOiBldmVudC52YWx1ZSB9KVxyXG4gIH1cclxuXHJcblxyXG4gIHNldE1vZGUobmV3TW9kZSkge1xyXG4gICAgdGhpcy5mb3JtQ29uZmlnLm1vZGUgPSBuZXdNb2RlXHJcbiAgICB0aGlzLnNldFRpdGxlQWN0aW9uKClcclxuICB9XHJcblxyXG4gIHNldFRpdGxlQWN0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbmZpZy5maXhlZFRpdGxlKSB7XHJcbiAgICAgIHRoaXMudGl0bGVBY3Rpb24gPSBcIlwiO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50aXRsZUFjdGlvbiA9IHRoaXMuYnV0dG9uU2VydmljZS5nZXRUaXRsZUFjdGlvbih0aGlzLmZvcm1Db25maWcubW9kZSwgdGhpcy5idXR0b25zKTtcclxuICB9XHJcblxyXG4gIGdldEJ1dHRvbihuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0QnV0dG9uKHRoaXMuYnV0dG9ucywgbmFtZSk7XHJcbiAgfVxyXG5cclxuICB0ZXN0RGlzYWJsZWQocm93LCBidXR0b25OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uKGJ1dHRvbk5hbWUpO1xyXG5cclxuICAgIGlmICghYnV0dG9uKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgYnV0dG9uIHdpdGggY29tcG9uZW50J3MgZGV0YWlsc0NvbmZpZ1xyXG4gICAgY29uc3QgYnV0dG9uV2l0aENvbmZpZyA9IHtcclxuICAgICAgLi4uYnV0dG9uLFxyXG4gICAgICBkZXRhaWxzQ29uZmlnOiBidXR0b24uZGV0YWlsc0NvbmZpZyA/IHsgLi4uYnV0dG9uLmRldGFpbHNDb25maWcgfSA6IHRoaXMuZGV0YWlsc0NvbmZpZ1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25TZXJ2aWNlLnRlc3REaXNhYmxlZChidXR0b25XaXRoQ29uZmlnLCByb3cpO1xyXG4gIH1cclxuXHJcblxyXG4gIHRlc3RWaXNpYmxlKHJvdywgYnV0dG9uTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmdldEJ1dHRvbihidXR0b25OYW1lKTtcclxuICAgIGlmICghYnV0dG9uKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgYnV0dG9uIHdpdGggY29tcG9uZW50J3MgZGV0YWlsc0NvbmZpZ1xyXG4gICAgY29uc3QgYnV0dG9uV2l0aENvbmZpZyA9IHtcclxuICAgICAgLi4uYnV0dG9uLFxyXG4gICAgICBkZXRhaWxzQ29uZmlnOiBidXR0b24uZGV0YWlsc0NvbmZpZyA/IHsgLi4uYnV0dG9uLmRldGFpbHNDb25maWcgfSA6IHRoaXMuZGV0YWlsc0NvbmZpZ1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25TZXJ2aWNlLnRlc3RWaXNpYmxlKGJ1dHRvbldpdGhDb25maWcsIHJvdylcclxuICB9XHJcblxyXG4gIHRlc3RWaXNpYmxlVGFiKHRibENvbmZpZzogVGFibGVDb25maWcpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAoIXRoaXMudGFibGVDb25maWdTZXJ2aWNlLmhhc1RhYmxlQWNjZXNzKHRibENvbmZpZykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmJ1dHRvblNlcnZpY2UuaXNUYWJWaXNpYmxlKHRibENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXR0b25Db2xvcihidXR0b246IEJ1dHRvbiwgcm93KSB7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25TZXJ2aWNlLmdldEJ1dHRvbkNvbG9yKGJ1dHRvbiwgcm93KTtcclxuICB9XHJcblxyXG4gIGdldFZpc2libGVGaWVsZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnLmZpZWxkcz8uZmlsdGVyKHggPT4gQ29yZS50ZXN0VmlzaWJsZSh0aGlzLmZvcm1Db25maWcsIHRoaXMuZGV0YWlscywgeCwgdGhpcy5hdXRoU2VydmljZS5jdXJyZW50Um9sZVNvdXJjZS52YWx1ZSkpXHJcbiAgfVxyXG5cclxuXHJcbiAgY3JlYXRlKCkge1xyXG4gICAgdGhpcy5oYW5kbGVCdXR0b25BY3Rpb24oJ2NyZWF0ZScpO1xyXG4gIH1cclxuXHJcbiAgZWRpdCgpIHtcclxuICAgIHRoaXMuaGFuZGxlQnV0dG9uQWN0aW9uKCdlZGl0Jyk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoKSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0QnV0dG9uKHRoaXMuYnV0dG9ucywgJ2RlbGV0ZScpO1xyXG4gICAgaWYgKCFidXR0b24pIHJldHVybjtcclxuXHJcbiAgICBsZXQgY29uZmlybU1lc3NhZ2UgPSB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0Q29uZmlybU1lc3NhZ2UoYnV0dG9uLCB0aGlzLmRldGFpbHMpO1xyXG4gICAgaWYgKCFjb25maXJtTWVzc2FnZSkge1xyXG4gICAgICBjb25maXJtTWVzc2FnZSA9IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlID9gO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY29uZmlybShjb25maXJtTWVzc2FnZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVCdXR0b25BY3Rpb24oJ2RlbGV0ZScpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBjdXN0b20oYnV0dG9uOiBCdXR0b24pIHtcclxuICAgIGlmIChidXR0b24uZGlhbG9nICYmIGJ1dHRvbi5kZXRhaWxzQ29uZmlnKSB7XHJcbiAgICAgIHRoaXMub3Blbk5lc3RlZERldGFpbHNEaWFsb2coYnV0dG9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlQnV0dG9uQWN0aW9uKGJ1dHRvbi5uYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3Blbk5lc3RlZERldGFpbHNEaWFsb2coYnV0dG9uOiBCdXR0b24pOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkNvbmZpZ3VyZWREZXRhaWxzRGlhbG9nKGJ1dHRvbiwgdGhpcy5kZXRhaWxzLCBEZXRhaWxzRGlhbG9nTGl0ZSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcblxyXG4gICAgICBpZiAocmVzdWx0LmFjdGlvbiA9PT0gJ2lucHV0Q2hhbmdlJykge1xyXG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2VkKHJlc3VsdC5jaGFuZ2UpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlc3VsdCAmJiByZXN1bHQubWVzc2FnZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoRGF0YSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hEYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbmZpZy5sb2FkQWN0aW9uKSB7XHJcbiAgICAgIHRoaXMubG9hZERhdGEodGhpcy5mb3JtQ29uZmlnLmxvYWRBY3Rpb24sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQnV0dG9uQWN0aW9uKGJ1dHRvbk5hbWU6IHN0cmluZykge1xyXG4gICAgXHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmdldEJ1dHRvbihidXR0b25OYW1lKTtcclxuICAgIGlmICghYnV0dG9uKSByZXR1cm47XHJcbiAgIFxyXG5cclxuICAgIGlmIChidXR0b24ub25DbGljaykge1xyXG4gICAgICBidXR0b24ub25DbGljayh0aGlzLmRldGFpbHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucHJvY2Vzc0J1dHRvbkFjdGlvbihidXR0b24pO1xyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0J1dHRvbkFjdGlvbihidXR0b24gOiBCdXR0b24pIHtcclxuICAgIGlmICghYnV0dG9uLmFjdGlvbikge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IG1lc3NhZ2U6ICdlbWl0JywgZGF0YTogdGhpcy5kZXRhaWxzIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudmFsaWRhdGVGb3JtKCkpIHtcclxuICAgICAgdGhpcy5leGVjdXRlQWN0aW9uKGJ1dHRvbiwgdGhpcy5kZXRhaWxzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbGlkYXRpb25SZXN1bHQgPSBDb3JlLnZhbGlkYXRlT2JqZWN0KHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpLCB0aGlzLmRldGFpbHMpO1xyXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgIT09ICcnKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QodmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPCAxICYmIHRoaXMuZmlsZUZpZWxkPy5yZXF1aXJlZCAmJiB0aGlzLmZvcm1Db25maWcubW9kZSA9PT0gJ2NyZWF0ZScpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlBsZWFzZSBhdHRhY2ggZmlsZShzKVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFZhbGlkYXRlIGNvbXBvc2l0ZSBmaWVsZHNcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5nZXRWaXNpYmxlRmllbGRzKCkpIHtcclxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdjb21wb3NpdGUnKSB7XHJcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IENvcmUudmFsaWRhdGVPYmplY3QoQ29yZS5nZXRWaXNpYmxlU3ViZmllbGRzKHRoaXMuZm9ybUNvbmZpZywgdGhpcy5kZXRhaWxzLCBmaWVsZCwgdGhpcy5hdXRoU2VydmljZS5jdXJyZW50Um9sZVNvdXJjZS52YWx1ZSksIHRoaXMuZGV0YWlscywgKTtcclxuICAgICAgICBpZiAodmFsaWRhdGlvblJlc3VsdCAhPT0gJycpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QodmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXBhcmVBY3Rpb25EYXRhKGJ1dHRvbjogQnV0dG9uLCBkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuYnV0dG9uU2VydmljZS5pc0Zvcm1CdXR0b24oYnV0dG9uKSkge1xyXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYHVwbG9hZEZpbGUke2l9YCwgdGhpcy5maWxlc1tpXSwgdGhpcy5maWxlc1tpXS5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoXCJkYXRhXCIsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgcmV0dXJuIGZvcm1EYXRhO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4ZWN1dGVBY3Rpb24oYnV0dG9uOiBCdXR0b24sIGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgYWN0aW9uRGF0YSA9IHRoaXMucHJlcGFyZUFjdGlvbkRhdGEoYnV0dG9uLCBkYXRhKTtcclxuXHJcbiAgICBpZiAoYnV0dG9uLmNvbmZpcm0pIHtcclxuICAgICAgbGV0IGNvbmZpcm1NZXNzYWdlID0gdGhpcy5idXR0b25TZXJ2aWNlLmdldENvbmZpcm1NZXNzYWdlKGJ1dHRvbiwgdGhpcy5kZXRhaWxzKTtcclxuXHJcbiAgICAgIGlmICghY29uZmlybU1lc3NhZ2UgJiYgYnV0dG9uLm5hbWUgPT0gJ2RlbGV0ZScpIHtcclxuICAgICAgICBjb25maXJtTWVzc2FnZSA9IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlID9gO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnBlcmZvcm1BcGlDYWxsKGJ1dHRvbiwgYWN0aW9uRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBlcmZvcm1BcGlDYWxsKGJ1dHRvbiwgYWN0aW9uRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwZXJmb3JtQXBpQ2FsbChidXR0b246IEJ1dHRvbiwgZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoYnV0dG9uLmFjdGlvbiwgZGF0YSkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgIGlmIChhcGlSZXNwb25zZS5tZXNzYWdlLmluY2x1ZGVzKFwiYXBwcm92YWxcIikgfHwgYXBpUmVzcG9uc2UubWVzc2FnZS5pbmNsdWRlcyhcImFwcHJvdmVcIikgfHwgYXBpUmVzcG9uc2UubWVzc2FnZS5pbmNsdWRlcyhcImRlY2xpbmVcIikpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChidXR0b24uYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGJ1dHRvbi5hY3Rpb24uc3VjY2Vzc01lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYXBpUmVzcG9uc2UubWVzc2FnZSAhPSBcInN1Y2Nlc3NcIiAmJiBhcGlSZXNwb25zZS5tZXNzYWdlICE9IFwiXCIpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJVcGRhdGVkXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGJ1dHRvbi5vblN1Y2Nlc3MpIHtcclxuICAgICAgICAgIGJ1dHRvbi5vblN1Y2Nlc3MoYXBpUmVzcG9uc2UuZGF0YSwgdGhpcy5kZXRhaWxzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChidXR0b24ua2VlcE9wZW4pIHtcclxuICAgICAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ3N1Y2Nlc3MnLCBkYXRhOiB7IC4uLmFwaVJlc3BvbnNlLCBkYXRhOiBidXR0b24ubmFtZSA9PSAnY3JlYXRlJyA/IGFwaVJlc3BvbnNlLmRhdGEgOiB0aGlzLmRldGFpbHMgIH0gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpe1xyXG4gICAgaWYgKHRoaXMuZGV0YWlsc0NvbmZpZy5yZWZyZXNoT25DbG9zZSl7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ3N1Y2Nlc3MnLCBkYXRhOiB0aGlzLmRldGFpbHMgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBtZXNzYWdlOiAnZW1pdCcsIGRhdGE6IHRoaXMuZGV0YWlscyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59O1xyXG5cclxuXHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRhaW5lclwiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRlbnRcIj5cclxuXHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNQcm9jZXNzaW5nICYmIGRhdGFTZXJ2aWNlLmFwcENvbmZpZy5wcm9ncmVzc0xpbmVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bGFiZWwgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OjUwMDttYXJnaW4tYm90dG9tOiAxMHB4O1wiPnt7dGl0bGVBY3Rpb24gfCB0aXRsZWNhc2V9fSB7e2Zvcm1Db25maWc/LnRpdGxlfX08L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcblxyXG4gICAgICAgIDxzcGEtY2hlY2sgKm5nSWY9XCJkZXRhaWxzQ29uZmlnLmF1dG9SZWZyZXNoQ29uZmlnXCIgZGlzcGxheT1cIkF1dG8gUmVmcmVzaFwiIFsodmFsdWUpXT1cImF1dG9SZWZyZXNoRW5hYmxlZFwiICh2YWx1ZUNoYW5nZSk9XCJ0b2dnbGVBdXRvUmVmcmVzaCgpXCI+PC9zcGEtY2hlY2s+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmb3JtQ29uZmlnLm1vZGU9PSd2aWV3JyAmJiBlZGl0QnV0dG9uICYmIHRlc3RWaXNpYmxlKGRldGFpbHMsZWRpdEJ1dHRvbi5uYW1lKVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBtYXRUb29sdGlwPVwiRWRpdFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzZXRNb2RlKCdlZGl0JylcIiBbZGlzYWJsZWRdPVwidGVzdERpc2FibGVkKGRldGFpbHMsZWRpdEJ1dHRvbi5uYW1lKVwiPjxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgKm5nSWY9XCJsb2FkQnlBY3Rpb25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBtYXRUb29sdGlwPVwiUmVmcmVzaFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJsb2FkRGF0YShmb3JtQ29uZmlnLmxvYWRBY3Rpb24sIGRldGFpbHNDb25maWcuY2F1c2VUYWJsZVJlZnJlc2gpXCI+PG1hdC1pY29uIGNsYXNzPVwicmVmcmVzaEljb25cIj5jYWNoZWQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibWF0LXR5cG9ncmFwaHkgZGlhbG9nLXNjcm9sbC1jb250ZW50XCI+XHJcblxyXG4gICAgICAgICAgPHNwYS1hbGVydCBbYWxlcnRNZXNzYWdlc109XCJmb3JtQ29uZmlnLmFsZXJ0TWVzc2FnZXNcIiBbZGF0YV09XCJkZXRhaWxzXCI+PC9zcGEtYWxlcnQ+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGluLWlucHV0XCIgc3R5bGU9XCJmb250LXNpemU6MTRweFwiPlxyXG5cclxuICAgICAgICAgPHAgKm5nSWY9XCJmb3JtQ29uZmlnICYmICFkZXRhaWxzXCI+PGVtPkxvYWRpbmcuLi48L2VtPjwvcD5cclxuXHJcbiAgICAgICAgPHNwYS1mb3JtICpuZ0lmPVwiZm9ybUNvbmZpZyAmJiBkZXRhaWxzXCIgW2ZpbGVzXT1cImZpbGVzXCIgW2RhdGFdPVwiZGV0YWlsc1wiIFtjb25maWddPVwiZm9ybUNvbmZpZ1wiIChpbnB1dENoYW5nZSk9XCJpbnB1dENoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkeW5hbWljU2VsZWN0IGxldC1maWVsZD1cImZpZWxkXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LXRlc3RSZWFkT25seT1cInRlc3RSZWFkT25seVwiIGxldC1zZWxlY3RDaGFuZ2VkPVwic2VsZWN0Q2hhbmdlZFwiPlxyXG4gICAgICAgICAgICA8c3BhLXNlbGVjdC1saXRlXHJcbiAgICAgICAgICAgICAgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiXHJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cImZpZWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICBbbnVsbGFibGVdPVwiZmllbGQubnVsbGFibGVcIlxyXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFttYXN0ZXJPcHRpb25zXT1cImZpZWxkLm1hc3Rlck9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFttYXN0ZXJGaWVsZF09XCJmaWVsZC5tYXN0ZXJGaWVsZFwiXHJcbiAgICAgICAgICAgICAgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIlxyXG4gICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCJmaWVsZC5vcHRpb25WYWx1ZSA/PyAndmFsdWUnXCJcclxuICAgICAgICAgICAgICBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCJcclxuICAgICAgICAgICAgICBbZGVmYXVsdEZpcnN0VmFsdWVdPVwiZmllbGQuZGVmYXVsdEZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCJcclxuICAgICAgICAgICAgICBbaGludF09XCJmaWVsZC5oaW50XCJcclxuICAgICAgICAgICAgICBbbG9hZEFjdGlvbl09XCJmaWVsZC5sb2FkQWN0aW9uXCJcclxuICAgICAgICAgICAgICBbbG9hZElERmllbGRdPVwiZmllbGQubG9hZElERmllbGRcIlxyXG4gICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCJcclxuICAgICAgICAgICAgICBbY29weUNvbnRlbnRdPVwiZmllbGQuY29weUNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZWxlY3RDaGFuZ2VkKGZpZWxkKVwiXHJcbiAgICAgICAgICAgID48L3NwYS1zZWxlY3QtbGl0ZT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9zcGEtZm9ybT5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJ0YWJsZUNvbmZpZ3NcIj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0Ymwgb2YgdGFibGVDb25maWdTZXJ2aWNlLmdldFZpc2libGVUYWJsZUNvbmZpZ3ModGFibGVDb25maWdzKVwiPlxyXG4gICAgICAgICAgICA8bWF0LXRhYiAqbmdJZj1cInRlc3RWaXNpYmxlVGFiKHRibClcIj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0YmwudGFiVGl0bGUgPz8gJ1VudGl0bGVkJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgIDxzcGEtdGFibGUtaW50ZXJuYWwgW2NvbmZpZ109XCJ0YmxcIiBbcmVsb2FkXT1cInRhYmxlUmVsb2FkXCIgKGRhdGFMb2FkKT1cImxvYWREYXRhKGZvcm1Db25maWcubG9hZEFjdGlvbiwgZmFsc2UpXCI+PC9zcGEtdGFibGUtaW50ZXJuYWw+XHJcblxyXG4gICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9tYXQtdGFiLWdyb3VwPiAtLT5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtYXQtZGlhbG9nLWFjdGlvbnM+XHJcblxyXG4gICAgPGRpdj5cclxuXHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiICpuZ0lmPVwiZm9ybUNvbmZpZy5tb2RlPT0nY3JlYXRlJyAmJiBjcmVhdGVCdXR0b25cIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY3JlYXRlKClcIiBjZGtGb2N1c0luaXRpYWw+e3tjcmVhdGVCdXR0b24uZGlzcGxheSA/PyAnU3VibWl0J319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgKm5nSWY9XCJmb3JtQ29uZmlnLm1vZGU9PSdlZGl0JyAmJiBlZGl0QnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImVkaXQoKVwiIGNka0ZvY3VzSW5pdGlhbD57e2VkaXRCdXR0b24uZGlzcGxheSA/PyAnU3VibWl0J319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnRuIG9mIGV4dHJhQnV0dG9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ0ZXN0VmlzaWJsZShkZXRhaWxzLGJ0bi5uYW1lKVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nIHx8IHRlc3REaXNhYmxlZChkZXRhaWxzLGJ0bi5uYW1lKVwiIFtuZ1N0eWxlXT1cInsnY29sb3InOiBnZXRCdXR0b25Db2xvcihidG4sIGRldGFpbHMpfVwiIChjbGljayk9XCJjdXN0b20oYnRuKVwiIGNka0ZvY3VzSW5pdGlhbD48bWF0LWljb24gW25nU3R5bGVdPVwieydjb2xvcic6IGdldEJ1dHRvbkNvbG9yKGJ0biwgZGV0YWlscyl9XCI+e3tidG4uaWNvbi5uYW1lfX08L21hdC1pY29uPnt7YnRuLmRpc3BsYXkgPz8gYnRuLm5hbWUgfCB0aXRsZWNhc2V9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbG9zZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiICpuZ0lmPVwic21hbGxTY3JlZW5cIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBtYXRUb29sdGlwPVwiRGVsZXRlXCIgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiIHN0eWxlPVwiY29sb3I6IHJlZDtcIiAoY2xpY2spPVwiZGVsZXRlKClcIiAqbmdJZj1cImZvcm1Db25maWcubW9kZSE9J2NyZWF0ZScgICYmIGRlbGV0ZUJ1dHRvblwiPjxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuXHJcblxyXG48L2Rpdj5cclxuIl19
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsc0RpYWxvZy1saXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlLWxpdGUvZGV0YWlsc0RpYWxvZy1saXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlLWxpdGUvZGV0YWlsc0RpYWxvZy1saXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQU16RSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVXZELE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsWUFBb0Isa0JBQXNDLEVBQVMsYUFBNEIsRUFBUSxXQUEyQixFQUFTLGNBQThCLEVBQy9KLFNBQTBDLEVBQWtDLGFBQWtDLEVBQVUsYUFBNEIsRUFDcEosYUFBNEIsRUFBVSxXQUF3QixFQUFTLGtCQUFzQztRQUZuRyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBUSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0osY0FBUyxHQUFULFNBQVMsQ0FBaUM7UUFBa0Msa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDcEosa0JBQWEsR0FB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RTVCO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztxQkFDcEI7aUJBQ0Y7cUJBQUk7b0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRyxFQUFFLENBQUMsQ0FBQztpQkFDMUk7YUFFRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzVEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNsRTthQUFJO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7OzhHQS9hVSxpQkFBaUIseUtBR2tDLGVBQWU7a0dBSGxFLGlCQUFpQix1R0NyQjlCLDhyS0ErR0E7MkZEMUZhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSx3QkFBd0I7OzBCQU9xQixNQUFNOzJCQUFDLGVBQWU7K0pBcUZuRSxXQUFXO3NCQUFwQixNQUFNOztBQXlWUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBGb3JtQ29uZmlnLCBGaWVsZCwgVGFibGVDb25maWcsIEJ1dHRvbiwgRGV0YWlsc0RpYWxvZ0NvbmZpZywgQWN0aW9uLCBBcGlSZXNwb25zZSwgU3RlcENvbmZpZyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvQ2xhc3Nlcyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VMaWIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhbGliLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9hZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgeyBDb3JlLCBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9UaW5Db3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnV0dG9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1dHRvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgaW50ZXJ2YWwsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFRhYmxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RhYmxlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3BhLWRldGFpbHNEaWFsb2ctbGl0ZScsIC8vdW5pcSB0byBsaXRlXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RldGFpbHNEaWFsb2ctbGl0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtbGl0ZS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERldGFpbHNEaWFsb2dMaXRlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLHByaXZhdGUgbG9hZGVyU2VydmljZTogTG9hZGVyU2VydmljZSxwdWJsaWMgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEZXRhaWxzRGlhbG9nTGl0ZT4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGV0YWlsc0NvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZywgcHJpdmF0ZSBidXR0b25TZXJ2aWNlOiBCdXR0b25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHVibGljIHRhYmxlQ29uZmlnU2VydmljZTogVGFibGVDb25maWdTZXJ2aWNlKVxyXG4gIHtcclxuICAgIC8vIGRldGVjdCBzY3JlZW4gc2l6ZSBjaGFuZ2VzXHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKFtcIihtYXgtd2lkdGg6IDYwMHB4KVwiXSkuc3Vic2NyaWJlKChyZXN1bHQ6IEJyZWFrcG9pbnRTdGF0ZSkgPT4ge1xyXG5cclxuICAgICAgaWYgKHJlc3VsdC5tYXRjaGVzKSB7XHJcbiAgICAgICAgdGhpcy5zbWFsbFNjcmVlbiA9IHRydWVcclxuICAgICAgfWVsc2Uge1xyXG4gICAgICAgIHRoaXMuc21hbGxTY3JlZW4gPSBmYWxzZVxyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICBjb25zdCB7IHRhYmxlQ29uZmlnLCB0YWJsZUNvbmZpZ3MsIGZvcm1Db25maWcsIHN0ZXBDb25maWcsIGJ1dHRvbnMgfSA9IERldGFpbHNEaWFsb2dQcm9jZXNzb3IuaW5pdGlhbGl6ZUNvbmZpZ3ModGhpcy5kZXRhaWxzQ29uZmlnKTtcclxuICAgIHRoaXMudGFibGVDb25maWcgPSB0YWJsZUNvbmZpZztcclxuICAgIHRoaXMudGFibGVDb25maWdzID0gdGFibGVDb25maWdzO1xyXG4gICAgdGhpcy5mb3JtQ29uZmlnID0gZm9ybUNvbmZpZztcclxuICAgIHRoaXMuc3RlcENvbmZpZyA9IHN0ZXBDb25maWc7XHJcbiAgICB0aGlzLmJ1dHRvbnMgPSBidXR0b25zO1xyXG5cclxuICAgIGxldCByZXNwID0gRGV0YWlsc0RpYWxvZ1Byb2Nlc3Nvci5oYW5kbGVGb3JtTW9kZSh0aGlzLmRldGFpbHNDb25maWcsIHRoaXMuZm9ybUNvbmZpZywpO1xyXG5cclxuICAgIGlmIChyZXNwLmxvYWRCeUFjdGlvbikge1xyXG4gICAgICB0aGlzLmxvYWRCeUFjdGlvbiA9IHRydWU7XHJcbiAgICAgIGZvcm1Db25maWcubG9hZEFjdGlvbiA9IHJlc3AuYWN0aW9uO1xyXG4gICAgICB0aGlzLmxvYWREYXRhKHJlc3AuYWN0aW9uLCBmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRldGFpbHMgPSByZXNwLmRldGFpbHM7XHJcbiAgICAgIERldGFpbHNEaWFsb2dQcm9jZXNzb3Iuc2V0SGVyb1ZhbHVlKHRoaXMuZGV0YWlsc0NvbmZpZywgdGhpcy5kZXRhaWxzKTtcclxuICAgICAgdGhpcy5sb2FkQnlBY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc0xvYWRDb21wbGV0ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlRmllbGQgPSBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yLnNldEZpbGVGaWVsZCh0aGlzLmZvcm1Db25maWcpO1xyXG5cclxuICAgIHRoaXMubG9hZGVyU2VydmljZS5pc0xvYWRpbmcuc3Vic2NyaWJlKHggPT4gdGhpcy5pc1Byb2Nlc3NpbmcgPSB4KTtcclxuXHJcbiAgICBjb25zdCB7IGV4dHJhQnV0dG9ucywgY3JlYXRlQnV0dG9uLCBlZGl0QnV0dG9uLCBkZWxldGVCdXR0b24gfSA9IERldGFpbHNEaWFsb2dQcm9jZXNzb3Iuc2V0dXBCdXR0b25zKHRoaXMuZm9ybUNvbmZpZywgdGhpcy5idXR0b25zKTtcclxuICAgIHRoaXMuZXh0cmFCdXR0b25zID0gZXh0cmFCdXR0b25zO1xyXG4gICAgdGhpcy5jcmVhdGVCdXR0b24gPSBjcmVhdGVCdXR0b247XHJcbiAgICB0aGlzLmVkaXRCdXR0b24gPSBlZGl0QnV0dG9uO1xyXG4gICAgdGhpcy5kZWxldGVCdXR0b24gPSBkZWxldGVCdXR0b247XHJcblxyXG4gICAgdGhpcy5zZXRUaXRsZUFjdGlvbigpXHJcbiAgICB0aGlzLmluaXRBdXRvUmVmcmVzaCgpO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW51cCBzdWJzY3JpcHRpb24gb24gY29tcG9uZW50IGRlc3Ryb3lcclxuICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBhdXRvUmVmcmVzaEVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgdGl0bGVBY3Rpb24gPSBcIlZpZXdcIjtcclxuICBsb2FkQnlBY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgZXh0cmFCdXR0b25zOiBCdXR0b25bXTtcclxuICBidXR0b25zOiBCdXR0b25bXTtcclxuICBjcmVhdGVCdXR0b246IEJ1dHRvbjtcclxuICBlZGl0QnV0dG9uOiBCdXR0b247XHJcbiAgZGVsZXRlQnV0dG9uOiBCdXR0b247XHJcblxyXG4gIC8vIG1vZGVCdXR0b24gOiBCdXR0b25cclxuICBmaWxlRmllbGQ6IEZpZWxkO1xyXG4gIGZpbGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICB0YWJsZVJlbG9hZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZ1xyXG4gIHRhYmxlQ29uZmlncyA6IFRhYmxlQ29uZmlnW11cclxuICBkZXRhaWxzOiBhbnlcclxuICBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnO1xyXG4gIHN0ZXBDb25maWc6IFN0ZXBDb25maWc7XHJcbiAgc21hbGxTY3JlZW4gPSBmYWxzZTtcclxuXHJcbiAgaXNMb2FkQ29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIHNlbGVjdGVkVGFiSW5kZXggPSAwO1xyXG4gICAgb25UYWJDaGFuZ2UoZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IGV2ZW50LmluZGV4O1xyXG4gICAgfVxyXG5cclxuICBwcml2YXRlIGluaXRBdXRvUmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZGV0YWlsc0NvbmZpZy5hdXRvUmVmcmVzaENvbmZpZztcclxuICAgIGlmICghY29uZmlnKSByZXR1cm47XHJcblxyXG4gICAgLy8gU2V0IGluaXRpYWwgc3RhdGUgYmFzZWQgb24gZGVmYXVsdE9uIGNvbmZpZ3VyYXRpb25cclxuICAgIHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkID0gY29uZmlnLmRlZmF1bHRPbiB8fCBmYWxzZTtcclxuXHJcbiAgICAvLyBTdGFydCBhdXRvLXJlZnJlc2ggaWYgZW5hYmxlZCBieSBkZWZhdWx0XHJcbiAgICBpZiAodGhpcy5hdXRvUmVmcmVzaEVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5zdGFydEF1dG9SZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0QXV0b1JlZnJlc2goKSB7XHJcblxyXG4gICAgaWYgKCF0aGlzLmRldGFpbHNDb25maWcuYXV0b1JlZnJlc2hDb25maWcpIHJldHVybjtcclxuICAgIFxyXG4gICAgY29uc3QgcmVmcmVzaEludGVydmFsID0gdGhpcy5kZXRhaWxzQ29uZmlnLmF1dG9SZWZyZXNoQ29uZmlnLmludGVydmFsIHx8IDUwMDA7IC8vIERlZmF1bHQgdG8gNSBzZWNvbmRzXHJcbiAgICBcclxuICAgIC8vIENsZWFyIGFueSBleGlzdGluZyBzdWJzY3JpcHRpb25cclxuICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcbiAgICBcclxuICAgIC8vIENyZWF0ZSBuZXcgc3Vic2NyaXB0aW9uXHJcbiAgICB0aGlzLnJlZnJlc2hTdWJzY3JpcHRpb24gPSBpbnRlcnZhbChyZWZyZXNoSW50ZXJ2YWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzTG9hZENvbXBsZXRlICYmICF0aGlzLmlzUHJvY2Vzc2luZykge1xyXG4gICAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0b3BBdXRvUmVmcmVzaCgpIHtcclxuICAgIGlmICh0aGlzLnJlZnJlc2hTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdXRvUmVmcmVzaCgpIHtcclxuICAgIC8vIHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkID0gIXRoaXMuYXV0b1JlZnJlc2hFbmFibGVkO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5hdXRvUmVmcmVzaEVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5zdGFydEF1dG9SZWZyZXNoKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3BBdXRvUmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZERhdGEoYWN0aW9uOiBBY3Rpb24sIGNhdXNlVGFibGVzUmVsb2FkKSB7XHJcblxyXG4gICAgaWYgKGFjdGlvbiAmJiB0aGlzLmxvYWRCeUFjdGlvbikge1xyXG5cclxuICAgICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKGFjdGlvbikuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMuZGV0YWlscyA9IGFwaVJlc3BvbnNlLmRhdGFcclxuICAgICAgICAgIHRoaXMuaXNMb2FkQ29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgICAgLy8gRGV0YWlsc0RpYWxvZ1Byb2Nlc3Nvci5zZXRIZXJvVmFsdWUodGhpcy5kZXRhaWxzQ29uZmlnLCB0aGlzLmRldGFpbHMpO1xyXG4gICAgICAgICAgaWYoY2F1c2VUYWJsZXNSZWxvYWQpIHRoaXMudGFibGVSZWxvYWQubmV4dCh0cnVlKTtcclxuXHJcbiAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmRldGFpbHNDb25maWcuYXV0b1JlZnJlc2hDb25maWc7XHJcbiAgICAgICAgICBpZiAodGhpcy5hdXRvUmVmcmVzaEVuYWJsZWQgJiYgY29uZmlnPy5zdG9wQ29uZGl0aW9uICYmIGNvbmZpZy5zdG9wQ29uZGl0aW9uKHRoaXMuZGV0YWlscykpIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvUmVmcmVzaEVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5hdXRvUmVmcmVzaEVuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvUmVmcmVzaEVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBpbnB1dENoYW5nZWQoZXZlbnQpIHtcclxuICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh7IGZpZWxkOiBldmVudC5maWVsZCwgdmFsdWU6IGV2ZW50LnZhbHVlIH0pXHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0TW9kZShuZXdNb2RlKSB7XHJcbiAgICB0aGlzLmZvcm1Db25maWcubW9kZSA9IG5ld01vZGVcclxuICAgIHRoaXMuc2V0VGl0bGVBY3Rpb24oKVxyXG4gIH1cclxuXHJcbiAgc2V0VGl0bGVBY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29uZmlnLmZpeGVkVGl0bGUpIHtcclxuICAgICAgdGhpcy50aXRsZUFjdGlvbiA9IFwiXCI7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRpdGxlQWN0aW9uID0gdGhpcy5idXR0b25TZXJ2aWNlLmdldFRpdGxlQWN0aW9uKHRoaXMuZm9ybUNvbmZpZy5tb2RlLCB0aGlzLmJ1dHRvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnV0dG9uKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uU2VydmljZS5nZXRCdXR0b24odGhpcy5idXR0b25zLCBuYW1lKTtcclxuICB9XHJcblxyXG4gIHRlc3REaXNhYmxlZChyb3csIGJ1dHRvbk5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5nZXRCdXR0b24oYnV0dG9uTmFtZSk7XHJcblxyXG4gICAgaWYgKCFidXR0b24pIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoZSBidXR0b24gd2l0aCBjb21wb25lbnQncyBkZXRhaWxzQ29uZmlnXHJcbiAgICBjb25zdCBidXR0b25XaXRoQ29uZmlnID0ge1xyXG4gICAgICAuLi5idXR0b24sXHJcbiAgICAgIGRldGFpbHNDb25maWc6IGJ1dHRvbi5kZXRhaWxzQ29uZmlnID8geyAuLi5idXR0b24uZGV0YWlsc0NvbmZpZyB9IDogdGhpcy5kZXRhaWxzQ29uZmlnXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJ1dHRvblNlcnZpY2UudGVzdERpc2FibGVkKGJ1dHRvbldpdGhDb25maWcsIHJvdyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdGVzdFZpc2libGUocm93LCBidXR0b25OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uKGJ1dHRvbk5hbWUpO1xyXG4gICAgaWYgKCFidXR0b24pIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoZSBidXR0b24gd2l0aCBjb21wb25lbnQncyBkZXRhaWxzQ29uZmlnXHJcbiAgICBjb25zdCBidXR0b25XaXRoQ29uZmlnID0ge1xyXG4gICAgICAuLi5idXR0b24sXHJcbiAgICAgIGRldGFpbHNDb25maWc6IGJ1dHRvbi5kZXRhaWxzQ29uZmlnID8geyAuLi5idXR0b24uZGV0YWlsc0NvbmZpZyB9IDogdGhpcy5kZXRhaWxzQ29uZmlnXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJ1dHRvblNlcnZpY2UudGVzdFZpc2libGUoYnV0dG9uV2l0aENvbmZpZywgcm93KVxyXG4gIH1cclxuXHJcbiAgdGVzdFZpc2libGVUYWIodGJsQ29uZmlnOiBUYWJsZUNvbmZpZyk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmICghdGhpcy50YWJsZUNvbmZpZ1NlcnZpY2UuaGFzVGFibGVBY2Nlc3ModGJsQ29uZmlnKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uU2VydmljZS5pc1RhYlZpc2libGUodGJsQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIGdldEJ1dHRvbkNvbG9yKGJ1dHRvbjogQnV0dG9uLCByb3cpIHtcclxuICAgIHJldHVybiB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0QnV0dG9uQ29sb3IoYnV0dG9uLCByb3cpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmlzaWJsZUZpZWxkcygpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWcuZmllbGRzPy5maWx0ZXIoeCA9PiBDb3JlLnRlc3RWaXNpYmxlKHRoaXMuZm9ybUNvbmZpZywgdGhpcy5kZXRhaWxzLCB4LCB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRSb2xlU291cmNlLnZhbHVlKSlcclxuICB9XHJcblxyXG5cclxuICBjcmVhdGUoKSB7XHJcbiAgICB0aGlzLmhhbmRsZUJ1dHRvbkFjdGlvbignY3JlYXRlJyk7XHJcbiAgfVxyXG5cclxuICBlZGl0KCkge1xyXG4gICAgdGhpcy5oYW5kbGVCdXR0b25BY3Rpb24oJ2VkaXQnKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZSgpIHtcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuYnV0dG9uU2VydmljZS5nZXRCdXR0b24odGhpcy5idXR0b25zLCAnZGVsZXRlJyk7XHJcbiAgICBpZiAoIWJ1dHRvbikgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjb25maXJtTWVzc2FnZSA9IHRoaXMuYnV0dG9uU2VydmljZS5nZXRDb25maXJtTWVzc2FnZShidXR0b24sIHRoaXMuZGV0YWlscyk7XHJcbiAgICBpZiAoIWNvbmZpcm1NZXNzYWdlKSB7XHJcbiAgICAgIGNvbmZpcm1NZXNzYWdlID0gYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgP2A7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jb25maXJtKGNvbmZpcm1NZXNzYWdlKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0ID09IFwieWVzXCIpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUJ1dHRvbkFjdGlvbignZGVsZXRlJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGN1c3RvbShidXR0b246IEJ1dHRvbikge1xyXG4gICAgaWYgKGJ1dHRvbi5kaWFsb2cgJiYgYnV0dG9uLmRldGFpbHNDb25maWcpIHtcclxuICAgICAgdGhpcy5vcGVuTmVzdGVkRGV0YWlsc0RpYWxvZyhidXR0b24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oYW5kbGVCdXR0b25BY3Rpb24oYnV0dG9uLm5hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuTmVzdGVkRGV0YWlsc0RpYWxvZyhidXR0b246IEJ1dHRvbik6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuQ29uZmlndXJlZERldGFpbHNEaWFsb2coYnV0dG9uLCB0aGlzLmRldGFpbHMsIERldGFpbHNEaWFsb2dMaXRlKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQuYWN0aW9uID09PSAnaW5wdXRDaGFuZ2UnKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZWQocmVzdWx0LmNoYW5nZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ICYmIHJlc3VsdC5tZXNzYWdlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaERhdGEoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29uZmlnLmxvYWRBY3Rpb24pIHtcclxuICAgICAgdGhpcy5sb2FkRGF0YSh0aGlzLmZvcm1Db25maWcubG9hZEFjdGlvbiwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25BY3Rpb24oYnV0dG9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uKGJ1dHRvbk5hbWUpO1xyXG4gICAgaWYgKCFidXR0b24pIHJldHVybjtcclxuICAgXHJcblxyXG4gICAgaWYgKGJ1dHRvbi5vbkNsaWNrKSB7XHJcbiAgICAgIGJ1dHRvbi5vbkNsaWNrKHRoaXMuZGV0YWlscyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcm9jZXNzQnV0dG9uQWN0aW9uKGJ1dHRvbik7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzQnV0dG9uQWN0aW9uKGJ1dHRvbiA6IEJ1dHRvbikge1xyXG4gICAgaWYgKCFidXR0b24uYWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ2VtaXQnLCBkYXRhOiB0aGlzLmRldGFpbHMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy52YWxpZGF0ZUZvcm0oKSkge1xyXG4gICAgICB0aGlzLmV4ZWN1dGVBY3Rpb24oYnV0dG9uLCB0aGlzLmRldGFpbHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUZvcm0oKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgdmFsaWRhdGlvblJlc3VsdCA9IENvcmUudmFsaWRhdGVPYmplY3QodGhpcy5nZXRWaXNpYmxlRmllbGRzKCksIHRoaXMuZGV0YWlscyk7XHJcbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdCAhPT0gJycpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdCh2YWxpZGF0aW9uUmVzdWx0KTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA8IDEgJiYgdGhpcy5maWxlRmllbGQ/LnJlcXVpcmVkICYmIHRoaXMuZm9ybUNvbmZpZy5tb2RlID09PSAnY3JlYXRlJykge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUGxlYXNlIGF0dGFjaCBmaWxlKHMpXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmFsaWRhdGUgY29tcG9zaXRlIGZpZWxkc1xyXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmdldFZpc2libGVGaWVsZHMoKSkge1xyXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2NvbXBvc2l0ZScpIHtcclxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gQ29yZS52YWxpZGF0ZU9iamVjdChDb3JlLmdldFZpc2libGVTdWJmaWVsZHModGhpcy5mb3JtQ29uZmlnLCB0aGlzLmRldGFpbHMsIGZpZWxkLCB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRSb2xlU291cmNlLnZhbHVlKSwgdGhpcy5kZXRhaWxzLCApO1xyXG4gICAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0ICE9PSAnJykge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdCh2YWxpZGF0aW9uUmVzdWx0KTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZUFjdGlvbkRhdGEoYnV0dG9uOiBCdXR0b24sIGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5idXR0b25TZXJ2aWNlLmlzRm9ybUJ1dHRvbihidXR0b24pKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChgdXBsb2FkRmlsZSR7aX1gLCB0aGlzLmZpbGVzW2ldLCB0aGlzLmZpbGVzW2ldLm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcImRhdGFcIiwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgICByZXR1cm4gZm9ybURhdGE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhlY3V0ZUFjdGlvbihidXR0b246IEJ1dHRvbiwgZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBhY3Rpb25EYXRhID0gdGhpcy5wcmVwYXJlQWN0aW9uRGF0YShidXR0b24sIGRhdGEpO1xyXG5cclxuICAgIGlmIChidXR0b24uY29uZmlybSkge1xyXG4gICAgICBsZXQgY29uZmlybU1lc3NhZ2UgPSB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0Q29uZmlybU1lc3NhZ2UoYnV0dG9uLCB0aGlzLmRldGFpbHMpO1xyXG5cclxuICAgICAgaWYgKCFjb25maXJtTWVzc2FnZSAmJiBidXR0b24ubmFtZSA9PSAnZGVsZXRlJykge1xyXG4gICAgICAgIGNvbmZpcm1NZXNzYWdlID0gYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgP2A7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY29uZmlybShjb25maXJtTWVzc2FnZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0ID09IFwieWVzXCIpIHtcclxuICAgICAgICAgIHRoaXMucGVyZm9ybUFwaUNhbGwoYnV0dG9uLCBhY3Rpb25EYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGVyZm9ybUFwaUNhbGwoYnV0dG9uLCBhY3Rpb25EYXRhKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBlcmZvcm1BcGlDYWxsKGJ1dHRvbjogQnV0dG9uLCBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaShidXR0b24uYWN0aW9uLCBkYXRhKS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlOiBBcGlSZXNwb25zZSkgPT4ge1xyXG5cclxuICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuXHJcbiAgICAgICAgaWYgKGFwaVJlc3BvbnNlLm1lc3NhZ2UuaW5jbHVkZXMoXCJhcHByb3ZhbFwiKSB8fCBhcGlSZXNwb25zZS5tZXNzYWdlLmluY2x1ZGVzKFwiYXBwcm92ZVwiKSB8fCBhcGlSZXNwb25zZS5tZXNzYWdlLmluY2x1ZGVzKFwiZGVjbGluZVwiKSkge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbi5hY3Rpb24uc3VjY2Vzc01lc3NhZ2UpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoYnV0dG9uLmFjdGlvbi5zdWNjZXNzTWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhcGlSZXNwb25zZS5tZXNzYWdlICE9IFwic3VjY2Vzc1wiICYmIGFwaVJlc3BvbnNlLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlVwZGF0ZWRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYnV0dG9uLm9uU3VjY2Vzcykge1xyXG4gICAgICAgICAgYnV0dG9uLm9uU3VjY2VzcyhhcGlSZXNwb25zZS5kYXRhLCB0aGlzLmRldGFpbHMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGJ1dHRvbi5rZWVwT3Blbikge1xyXG4gICAgICAgICAgaWYgKGJ1dHRvbi5uYW1lID09PSAnY3JlYXRlJyAmJiBhcGlSZXNwb25zZS5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlscyA9IGFwaVJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5kZXRhaWxzQ29uZmlnLmhlcm9GaWVsZCAmJiBhcGlSZXNwb25zZS5kYXRhW3RoaXMuZGV0YWlsc0NvbmZpZy5oZXJvRmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZXRhaWxzQ29uZmlnLmhlcm9WYWx1ZSA9IGFwaVJlc3BvbnNlLmRhdGFbdGhpcy5kZXRhaWxzQ29uZmlnLmhlcm9GaWVsZF07XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtQ29uZmlnLmhlcm9GaWVsZCA9IHRoaXMuZGV0YWlsc0NvbmZpZy5oZXJvRmllbGQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtQ29uZmlnLmhlcm9WYWx1ZSA9IHRoaXMuZGV0YWlsc0NvbmZpZy5oZXJvVmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbmZpZy5tb2RlID0gJ2VkaXQnO1xyXG4gICAgICAgICAgICB0aGlzLnNldFRpdGxlQWN0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkQ29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ3N1Y2Nlc3MnLCBkYXRhOiB7IC4uLmFwaVJlc3BvbnNlLCBkYXRhOiBidXR0b24ubmFtZSA9PSAnY3JlYXRlJyA/IGFwaVJlc3BvbnNlLmRhdGEgOiB0aGlzLmRldGFpbHMgIH0gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpe1xyXG4gICAgaWYgKHRoaXMuZGV0YWlsc0NvbmZpZy5yZWZyZXNoT25DbG9zZSl7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ3N1Y2Nlc3MnLCBkYXRhOiB0aGlzLmRldGFpbHMgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBtZXNzYWdlOiAnZW1pdCcsIGRhdGE6IHRoaXMuZGV0YWlscyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59O1xyXG5cclxuXHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRhaW5lclwiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRlbnRcIj5cclxuXHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNQcm9jZXNzaW5nICYmIGRhdGFTZXJ2aWNlLmFwcENvbmZpZy5wcm9ncmVzc0xpbmVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bGFiZWwgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OjUwMDttYXJnaW4tYm90dG9tOiAxMHB4O1wiPnt7dGl0bGVBY3Rpb24gfCB0aXRsZWNhc2V9fSB7e2Zvcm1Db25maWc/LnRpdGxlfX08L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcblxyXG4gICAgICAgIDxzcGEtY2hlY2sgKm5nSWY9XCJkZXRhaWxzQ29uZmlnLmF1dG9SZWZyZXNoQ29uZmlnXCIgZGlzcGxheT1cIkF1dG8gUmVmcmVzaFwiIFsodmFsdWUpXT1cImF1dG9SZWZyZXNoRW5hYmxlZFwiICh2YWx1ZUNoYW5nZSk9XCJ0b2dnbGVBdXRvUmVmcmVzaCgpXCI+PC9zcGEtY2hlY2s+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmb3JtQ29uZmlnLm1vZGU9PSd2aWV3JyAmJiBlZGl0QnV0dG9uICYmIHRlc3RWaXNpYmxlKGRldGFpbHMsZWRpdEJ1dHRvbi5uYW1lKVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBtYXRUb29sdGlwPVwiRWRpdFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzZXRNb2RlKCdlZGl0JylcIiBbZGlzYWJsZWRdPVwidGVzdERpc2FibGVkKGRldGFpbHMsZWRpdEJ1dHRvbi5uYW1lKVwiPjxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgKm5nSWY9XCJsb2FkQnlBY3Rpb25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBtYXRUb29sdGlwPVwiUmVmcmVzaFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJsb2FkRGF0YShmb3JtQ29uZmlnLmxvYWRBY3Rpb24sIGRldGFpbHNDb25maWcuY2F1c2VUYWJsZVJlZnJlc2gpXCI+PG1hdC1pY29uIGNsYXNzPVwicmVmcmVzaEljb25cIj5jYWNoZWQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwibWF0LXR5cG9ncmFwaHkgZGlhbG9nLXNjcm9sbC1jb250ZW50XCI+XHJcblxyXG4gICAgICAgICAgPHNwYS1hbGVydCBbYWxlcnRNZXNzYWdlc109XCJmb3JtQ29uZmlnLmFsZXJ0TWVzc2FnZXNcIiBbZGF0YV09XCJkZXRhaWxzXCI+PC9zcGEtYWxlcnQ+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGluLWlucHV0XCIgc3R5bGU9XCJmb250LXNpemU6MTRweFwiPlxyXG5cclxuICAgICAgICAgPHAgKm5nSWY9XCJmb3JtQ29uZmlnICYmICFkZXRhaWxzXCI+PGVtPkxvYWRpbmcuLi48L2VtPjwvcD5cclxuXHJcbiAgICAgICAgPHNwYS1mb3JtICpuZ0lmPVwiZm9ybUNvbmZpZyAmJiBkZXRhaWxzXCIgW2ZpbGVzXT1cImZpbGVzXCIgW2RhdGFdPVwiZGV0YWlsc1wiIFtjb25maWddPVwiZm9ybUNvbmZpZ1wiIChpbnB1dENoYW5nZSk9XCJpbnB1dENoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkeW5hbWljU2VsZWN0IGxldC1maWVsZD1cImZpZWxkXCIgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LXRlc3RSZWFkT25seT1cInRlc3RSZWFkT25seVwiIGxldC1zZWxlY3RDaGFuZ2VkPVwic2VsZWN0Q2hhbmdlZFwiPlxyXG4gICAgICAgICAgICA8c3BhLXNlbGVjdC1saXRlXHJcbiAgICAgICAgICAgICAgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiXHJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cImZpZWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICBbbnVsbGFibGVdPVwiZmllbGQubnVsbGFibGVcIlxyXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFttYXN0ZXJPcHRpb25zXT1cImZpZWxkLm1hc3Rlck9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFttYXN0ZXJGaWVsZF09XCJmaWVsZC5tYXN0ZXJGaWVsZFwiXHJcbiAgICAgICAgICAgICAgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIlxyXG4gICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCJmaWVsZC5vcHRpb25WYWx1ZSA/PyAndmFsdWUnXCJcclxuICAgICAgICAgICAgICBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCJcclxuICAgICAgICAgICAgICBbZGVmYXVsdEZpcnN0VmFsdWVdPVwiZmllbGQuZGVmYXVsdEZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCJcclxuICAgICAgICAgICAgICBbaGludF09XCJmaWVsZC5oaW50XCJcclxuICAgICAgICAgICAgICBbbG9hZEFjdGlvbl09XCJmaWVsZC5sb2FkQWN0aW9uXCJcclxuICAgICAgICAgICAgICBbbG9hZElERmllbGRdPVwiZmllbGQubG9hZElERmllbGRcIlxyXG4gICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCJcclxuICAgICAgICAgICAgICBbY29weUNvbnRlbnRdPVwiZmllbGQuY29weUNvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJzZWxlY3RDaGFuZ2VkKGZpZWxkKVwiXHJcbiAgICAgICAgICAgID48L3NwYS1zZWxlY3QtbGl0ZT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9zcGEtZm9ybT5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJ0YWJsZUNvbmZpZ3NcIj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0Ymwgb2YgdGFibGVDb25maWdTZXJ2aWNlLmdldFZpc2libGVUYWJsZUNvbmZpZ3ModGFibGVDb25maWdzKVwiPlxyXG4gICAgICAgICAgICA8bWF0LXRhYiAqbmdJZj1cInRlc3RWaXNpYmxlVGFiKHRibClcIj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0YmwudGFiVGl0bGUgPz8gJ1VudGl0bGVkJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgIDxzcGEtdGFibGUtaW50ZXJuYWwgW2NvbmZpZ109XCJ0YmxcIiBbcmVsb2FkXT1cInRhYmxlUmVsb2FkXCIgKGRhdGFMb2FkKT1cImxvYWREYXRhKGZvcm1Db25maWcubG9hZEFjdGlvbiwgZmFsc2UpXCI+PC9zcGEtdGFibGUtaW50ZXJuYWw+XHJcblxyXG4gICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9tYXQtdGFiLWdyb3VwPiAtLT5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvbWF0LWRpYWxvZy1jb250ZW50PlxyXG5cclxuXHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtYXQtZGlhbG9nLWFjdGlvbnM+XHJcblxyXG4gICAgPGRpdj5cclxuXHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiICpuZ0lmPVwiZm9ybUNvbmZpZy5tb2RlPT0nY3JlYXRlJyAmJiBjcmVhdGVCdXR0b25cIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY3JlYXRlKClcIiBjZGtGb2N1c0luaXRpYWw+e3tjcmVhdGVCdXR0b24uZGlzcGxheSA/PyAnU3VibWl0J319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgKm5nSWY9XCJmb3JtQ29uZmlnLm1vZGU9PSdlZGl0JyAmJiBlZGl0QnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImVkaXQoKVwiIGNka0ZvY3VzSW5pdGlhbD57e2VkaXRCdXR0b24uZGlzcGxheSA/PyAnU3VibWl0J319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnRuIG9mIGV4dHJhQnV0dG9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ0ZXN0VmlzaWJsZShkZXRhaWxzLGJ0bi5uYW1lKVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nIHx8IHRlc3REaXNhYmxlZChkZXRhaWxzLGJ0bi5uYW1lKVwiIFtuZ1N0eWxlXT1cInsnY29sb3InOiBnZXRCdXR0b25Db2xvcihidG4sIGRldGFpbHMpfVwiIChjbGljayk9XCJjdXN0b20oYnRuKVwiIGNka0ZvY3VzSW5pdGlhbD48bWF0LWljb24gW25nU3R5bGVdPVwieydjb2xvcic6IGdldEJ1dHRvbkNvbG9yKGJ0biwgZGV0YWlscyl9XCI+e3tidG4uaWNvbi5uYW1lfX08L21hdC1pY29uPnt7YnRuLmRpc3BsYXkgPz8gYnRuLm5hbWUgfCB0aXRsZWNhc2V9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbG9zZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiICpuZ0lmPVwic21hbGxTY3JlZW5cIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBtYXRUb29sdGlwPVwiRGVsZXRlXCIgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiIHN0eWxlPVwiY29sb3I6IHJlZDtcIiAoY2xpY2spPVwiZGVsZXRlKClcIiAqbmdJZj1cImZvcm1Db25maWcubW9kZSE9J2NyZWF0ZScgICYmIGRlbGV0ZUJ1dHRvblwiPjxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuXHJcblxyXG48L2Rpdj5cclxuIl19
|
package/fesm2015/tin-spa.mjs
CHANGED
|
@@ -5314,7 +5314,20 @@ class DetailsDialogLite {
|
|
|
5314
5314
|
button.onSuccess(apiResponse.data, this.details);
|
|
5315
5315
|
}
|
|
5316
5316
|
if (button.keepOpen) {
|
|
5317
|
-
|
|
5317
|
+
if (button.name === 'create' && apiResponse.data) {
|
|
5318
|
+
this.details = apiResponse.data;
|
|
5319
|
+
if (this.detailsConfig.heroField && apiResponse.data[this.detailsConfig.heroField]) {
|
|
5320
|
+
this.detailsConfig.heroValue = apiResponse.data[this.detailsConfig.heroField];
|
|
5321
|
+
this.formConfig.heroField = this.detailsConfig.heroField;
|
|
5322
|
+
this.formConfig.heroValue = this.detailsConfig.heroValue;
|
|
5323
|
+
}
|
|
5324
|
+
this.formConfig.mode = 'edit';
|
|
5325
|
+
this.setTitleAction();
|
|
5326
|
+
this.isLoadComplete = true;
|
|
5327
|
+
}
|
|
5328
|
+
else {
|
|
5329
|
+
this.refreshData();
|
|
5330
|
+
}
|
|
5318
5331
|
}
|
|
5319
5332
|
else {
|
|
5320
5333
|
this.dialogRef.close({ message: 'success', data: Object.assign(Object.assign({}, apiResponse), { data: button.name == 'create' ? apiResponse.data : this.details }) });
|
|
@@ -6901,7 +6914,20 @@ class DetailsDialogInternal {
|
|
|
6901
6914
|
button.onSuccess(apiResponse.data, this.details);
|
|
6902
6915
|
}
|
|
6903
6916
|
if (button.keepOpen) {
|
|
6904
|
-
|
|
6917
|
+
if (button.name === 'create' && apiResponse.data) {
|
|
6918
|
+
this.details = apiResponse.data;
|
|
6919
|
+
if (this.detailsConfig.heroField && apiResponse.data[this.detailsConfig.heroField]) {
|
|
6920
|
+
this.detailsConfig.heroValue = apiResponse.data[this.detailsConfig.heroField];
|
|
6921
|
+
this.formConfig.heroField = this.detailsConfig.heroField;
|
|
6922
|
+
this.formConfig.heroValue = this.detailsConfig.heroValue;
|
|
6923
|
+
}
|
|
6924
|
+
this.formConfig.mode = 'edit';
|
|
6925
|
+
this.setTitleAction();
|
|
6926
|
+
this.isLoadComplete = true;
|
|
6927
|
+
}
|
|
6928
|
+
else {
|
|
6929
|
+
this.refreshData();
|
|
6930
|
+
}
|
|
6905
6931
|
}
|
|
6906
6932
|
else {
|
|
6907
6933
|
this.dialogRef.close({ message: 'success', data: Object.assign(Object.assign({}, apiResponse), { data: button.name == 'create' ? apiResponse.data : this.details }) });
|
|
@@ -7953,10 +7979,23 @@ class DetailsDialog {
|
|
|
7953
7979
|
this.messageService.toast("Updated");
|
|
7954
7980
|
}
|
|
7955
7981
|
if (button.onSuccess) {
|
|
7956
|
-
button.onSuccess(apiResponse, this.details);
|
|
7982
|
+
button.onSuccess(apiResponse.data, this.details);
|
|
7957
7983
|
}
|
|
7958
7984
|
if (button.keepOpen) {
|
|
7959
|
-
|
|
7985
|
+
if (button.name === 'create' && apiResponse.data) {
|
|
7986
|
+
this.details = apiResponse.data;
|
|
7987
|
+
if (this.detailsConfig.heroField && apiResponse.data[this.detailsConfig.heroField]) {
|
|
7988
|
+
this.detailsConfig.heroValue = apiResponse.data[this.detailsConfig.heroField];
|
|
7989
|
+
this.formConfig.heroField = this.detailsConfig.heroField;
|
|
7990
|
+
this.formConfig.heroValue = this.detailsConfig.heroValue;
|
|
7991
|
+
}
|
|
7992
|
+
this.formConfig.mode = 'edit';
|
|
7993
|
+
this.setTitleAction();
|
|
7994
|
+
this.isLoadComplete = true;
|
|
7995
|
+
}
|
|
7996
|
+
else {
|
|
7997
|
+
this.refreshData();
|
|
7998
|
+
}
|
|
7960
7999
|
}
|
|
7961
8000
|
else {
|
|
7962
8001
|
this.dialogRef.close({ message: 'success', data: Object.assign(Object.assign({}, apiResponse), { data: button.name == 'create' ? apiResponse.data : this.details }) });
|