@fundamental-ngx/platform 0.43.24 → 0.43.26

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.
Files changed (69) hide show
  1. package/esm2020/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +1 -1
  2. package/esm2020/approval-flow/approval-flow.component.mjs +1 -1
  3. package/esm2020/form/combobox/combobox/combobox.component.mjs +2 -3
  4. package/esm2020/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +2 -2
  5. package/esm2020/form/multi-input/multi-input.component.mjs +6 -4
  6. package/esm2020/search-field/search-field.component.mjs +3 -3
  7. package/esm2020/shared/form/collection-base.input.mjs +2 -2
  8. package/esm2020/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +1 -1
  9. package/esm2020/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +1 -1
  10. package/esm2020/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +5 -3
  11. package/esm2020/table/components/table-header-row/table-header-row.component.mjs +3 -3
  12. package/esm2020/table/components/table-p13-dialog/columns/columns.component.mjs +3 -3
  13. package/esm2020/table/components/table-toolbar/table-toolbar.component.mjs +5 -3
  14. package/esm2020/table/table.component.mjs +88 -8
  15. package/esm2020/table-helpers/directives/table-initial-state.directive.mjs +2 -2
  16. package/esm2020/table-helpers/services/table-column-resize.service.mjs +6 -1
  17. package/esm2020/upload-collection/upload-collection/upload-collection.component.mjs +1 -1
  18. package/esm2020/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +30 -14
  19. package/esm2020/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +1 -1
  20. package/fesm2015/fundamental-ngx-platform-approval-flow.mjs +2 -2
  21. package/fesm2015/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  22. package/fesm2015/fundamental-ngx-platform-form.mjs +7 -6
  23. package/fesm2015/fundamental-ngx-platform-form.mjs.map +1 -1
  24. package/fesm2015/fundamental-ngx-platform-search-field.mjs +2 -2
  25. package/fesm2015/fundamental-ngx-platform-search-field.mjs.map +1 -1
  26. package/fesm2015/fundamental-ngx-platform-shared.mjs +1 -1
  27. package/fesm2015/fundamental-ngx-platform-shared.mjs.map +1 -1
  28. package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs +2 -2
  29. package/fesm2015/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  30. package/fesm2015/fundamental-ngx-platform-table-helpers.mjs +6 -1
  31. package/fesm2015/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  32. package/fesm2015/fundamental-ngx-platform-table.mjs +97 -13
  33. package/fesm2015/fundamental-ngx-platform-table.mjs.map +1 -1
  34. package/fesm2015/fundamental-ngx-platform-upload-collection.mjs +1 -1
  35. package/fesm2015/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  36. package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs +29 -12
  37. package/fesm2015/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  38. package/fesm2015/fundamental-ngx-platform-variant-management.mjs +1 -1
  39. package/fesm2015/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  40. package/fesm2020/fundamental-ngx-platform-approval-flow.mjs +2 -2
  41. package/fesm2020/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  42. package/fesm2020/fundamental-ngx-platform-form.mjs +7 -6
  43. package/fesm2020/fundamental-ngx-platform-form.mjs.map +1 -1
  44. package/fesm2020/fundamental-ngx-platform-search-field.mjs +2 -2
  45. package/fesm2020/fundamental-ngx-platform-search-field.mjs.map +1 -1
  46. package/fesm2020/fundamental-ngx-platform-shared.mjs +1 -1
  47. package/fesm2020/fundamental-ngx-platform-shared.mjs.map +1 -1
  48. package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs +2 -2
  49. package/fesm2020/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  50. package/fesm2020/fundamental-ngx-platform-table-helpers.mjs +6 -1
  51. package/fesm2020/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  52. package/fesm2020/fundamental-ngx-platform-table.mjs +97 -13
  53. package/fesm2020/fundamental-ngx-platform-table.mjs.map +1 -1
  54. package/fesm2020/fundamental-ngx-platform-upload-collection.mjs +1 -1
  55. package/fesm2020/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  56. package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs +28 -12
  57. package/fesm2020/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  58. package/fesm2020/fundamental-ngx-platform-variant-management.mjs +1 -1
  59. package/fesm2020/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  60. package/form/multi-input/multi-input.component.d.ts +3 -1
  61. package/fundamental-ngx-platform-v0.43.26.tgz +0 -0
  62. package/package.json +4 -4
  63. package/schematics/ng-add/index.js +1 -1
  64. package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +3 -1
  65. package/table/components/table-toolbar/table-toolbar.component.d.ts +4 -1
  66. package/table/table.component.d.ts +20 -1
  67. package/table-helpers/services/table-column-resize.service.d.ts +2 -0
  68. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +6 -1
  69. package/fundamental-ngx-platform-v0.43.24.tgz +0 -0
@@ -36,7 +36,7 @@ export class TableInitialStateDirective extends TableInitialState {
36
36
  const columns = this._table.getTableColumns();
37
37
  const page = prevState.page;
38
38
  const visibleColumns = this.initialVisibleColumns ||
39
- (prevState.columns.length ? prevState.columns : columns.map(({ name }) => name));
39
+ (prevState.columns.length ? prevState.columns : columns.filter((c) => c.visible).map(({ name }) => name));
40
40
  const directiveInitialPage = this.initialPage ?? 1;
41
41
  this._table._loadPreviousPages =
42
42
  this._table.pageScrolling && this._table.loadPagesBefore && directiveInitialPage > 1;
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
104
104
  }], state: [{
105
105
  type: Input
106
106
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5pdGlhbC1zdGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvdGFibGUtaGVscGVycy9kaXJlY3RpdmVzL3RhYmxlLWluaXRpYWwtc3RhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFjekQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGlCQUFpQjtJQVhqRTs7UUFnQkksNEJBQTRCO1FBRTVCLGtCQUFhLEdBQXFCLEVBQUUsQ0FBQztRQUVyQyw4QkFBOEI7UUFFOUIsb0JBQWUsR0FBdUIsRUFBRSxDQUFDO1FBRXpDLDZCQUE2QjtRQUU3QixtQkFBYyxHQUFzQixFQUFFLENBQUM7UUFFdkMsb0JBQW9CO1FBRXBCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBaUJoQixjQUFjO1FBQ0csa0JBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0F3RHpEO0lBeEVHOztPQUVHO0lBQ0gsSUFDSSxLQUFLLENBQUMsS0FBaUI7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksbUJBQW1CLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQVFELGNBQWM7SUFDZCxRQUFRLENBQUMsS0FBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FB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Y0FDQTtvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFdBQVcsNEJBQTRCO3lCQUMxQztxQkFDSjtpQkFDSjs4QkFJRyxxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQU9GLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9UQUJMRV9TVEFURSwgRkRQX1RBQkxFX1NUQVRFX0RJUkVDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyLCBDb2xsZWN0aW9uR3JvdXAsIENvbGxlY3Rpb25Tb3J0LCBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZUluaXRpYWxTdGF0ZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYFtmZHBUYWJsZUluaXRpYWxTdGF0ZV0sXG4gICAgZmRwLXRhYmxlYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfVEFCTEVfU1RBVEVfRElSRUNUSVZFLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlIGV4dGVuZHMgVGFibGVJbml0aWFsU3RhdGUge1xuICAgIC8qKiBJbml0aWFsIHZpc2libGUgY29sdW1ucy4gQ29uc2lzdCBvZiBhIGxpc3Qgb2YgdW5pcXVlIGNvbHVtbiBuYW1lcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbFZpc2libGVDb2x1bW5zOiBzdHJpbmdbXTtcblxuICAgIC8qKiBJbml0aWFsIHNvcnQgb3B0aW9ucy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGluaXRpYWxTb3J0Qnk6IENvbGxlY3Rpb25Tb3J0W10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIGZpbHRlciBvcHRpb25zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbEZpbHRlckJ5OiBDb2xsZWN0aW9uRmlsdGVyW10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIGdyb3VwIG9wdGlvbnMuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsR3JvdXBCeTogQ29sbGVjdGlvbkdyb3VwW10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIHBhZ2UuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsUGFnZSA9IDE7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHN0YXRlIG9mIHRhYmxlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXRlKHZhbHVlOiBUYWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZSh2YWx1ZSB8fCBERUZBVUxUX1RBQkxFX1NUQVRFKTtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKTogVGFibGVTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmxlOiBUYWJsZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0SW5pdGlhbFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX3RhYmxlLmdldFRhYmxlQ29sdW1ucygpO1xuICAgICAgICBjb25zdCBwYWdlID0gcHJldlN0YXRlLnBhZ2U7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID1cbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFZpc2libGVDb2x1bW5zIHx8XG4gICAgICAgICAgICAocHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoID8gcHJldlN0YXRlLmNvbHVtbnMgOiBjb2x1bW5zLm1hcCgoeyBuYW1lIH0pID0+IG5hbWUpKTtcblxuICAgICAgICBjb25zdCBkaXJlY3RpdmVJbml0aWFsUGFnZSA9IHRoaXMuaW5pdGlhbFBhZ2UgPz8gMTtcblxuICAgICAgICB0aGlzLl90YWJsZS5fbG9hZFByZXZpb3VzUGFnZXMgPVxuICAgICAgICAgICAgdGhpcy5fdGFibGUucGFnZVNjcm9sbGluZyAmJiB0aGlzLl90YWJsZS5sb2FkUGFnZXNCZWZvcmUgJiYgZGlyZWN0aXZlSW5pdGlhbFBhZ2UgPiAxO1xuXG4gICAgICAgIGNvbnN0IGluaXRpYWxQYWdlID0gdGhpcy5fdGFibGUuX2xvYWRQcmV2aW91c1BhZ2VzXG4gICAgICAgICAgICA/IDFcbiAgICAgICAgICAgIDogZGlyZWN0aXZlSW5pdGlhbFBhZ2UgPCBwYWdlLmN1cnJlbnRQYWdlXG4gICAgICAgICAgICA/IHBhZ2UuY3VycmVudFBhZ2VcbiAgICAgICAgICAgIDogZGlyZWN0aXZlSW5pdGlhbFBhZ2U7XG5cbiAgICAgICAgY29uc3QgaW5pdGlhbFBhZ2VTaXplID1cbiAgICAgICAgICAgICh0aGlzLl90YWJsZS5fbG9hZFByZXZpb3VzUGFnZXMgPyBkaXJlY3RpdmVJbml0aWFsUGFnZSA6IGluaXRpYWxQYWdlKSAqXG4gICAgICAgICAgICAodGhpcy5fdGFibGUucGFnZVNpemUgfHwgcGFnZS5wYWdlU2l6ZSk7XG5cbiAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHtcbiAgICAgICAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgICAgICAgIGNvbHVtbnM6IHZpc2libGVDb2x1bW5zLFxuICAgICAgICAgICAgY29sdW1uS2V5czogY29sdW1ucy5maWx0ZXIoKGMpID0+IHZpc2libGVDb2x1bW5zLmluY2x1ZGVzKGMubmFtZSkpLm1hcCgoYykgPT4gYy5rZXkpLFxuICAgICAgICAgICAgc29ydEJ5OiB0aGlzLmluaXRpYWxTb3J0QnkgfHwgcHJldlN0YXRlLnNvcnRCeSxcbiAgICAgICAgICAgIGZpbHRlckJ5OiB0aGlzLmluaXRpYWxGaWx0ZXJCeSB8fCBwcmV2U3RhdGUuZmlsdGVyQnksXG4gICAgICAgICAgICBncm91cEJ5OiB0aGlzLmluaXRpYWxHcm91cEJ5IHx8IHByZXZTdGF0ZS5ncm91cEJ5LFxuICAgICAgICAgICAgZnJlZXplVG9Db2x1bW46IHRoaXMuX3RhYmxlLmZyZWV6ZUNvbHVtbnNUbyB8fCBwcmV2U3RhdGUuZnJlZXplVG9Db2x1bW4sXG4gICAgICAgICAgICBmcmVlemVUb0VuZENvbHVtbjogdGhpcy5fdGFibGUuZnJlZXplRW5kQ29sdW1uc1RvIHx8IHByZXZTdGF0ZS5mcmVlemVUb0VuZENvbHVtbixcbiAgICAgICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogaW5pdGlhbFBhZ2UsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IGluaXRpYWxQYWdlU2l6ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGN1cnJlbnQgc3RhdGUvc2V0dGluZ3Mgb2YgdGhlIFRhYmxlLiAqL1xuICAgIGdldFRhYmxlU3RhdGUoKTogVGFibGVTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZVNlcnZpY2UuZ2V0VGFibGVTdGF0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgY3VycmVudCBzdGF0ZS9zZXR0aW5ncyBvZiB0aGUgVGFibGUuICovXG4gICAgc2V0VGFibGVTdGF0ZShzdGF0ZTogVGFibGVTdGF0ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZVNlcnZpY2Uuc2V0VGFibGVTdGF0ZShzdGF0ZSk7XG4gICAgfVxufVxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5pdGlhbC1zdGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvdGFibGUtaGVscGVycy9kaXJlY3RpdmVzL3RhYmxlLWluaXRpYWwtc3RhdGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFjekQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLGlCQUFpQjtJQVhqRTs7UUFnQkksNEJBQTRCO1FBRTVCLGtCQUFhLEdBQXFCLEVBQUUsQ0FBQztRQUVyQyw4QkFBOEI7UUFFOUIsb0JBQWUsR0FBdUIsRUFBRSxDQUFDO1FBRXpDLDZCQUE2QjtRQUU3QixtQkFBYyxHQUFzQixFQUFFLENBQUM7UUFFdkMsb0JBQW9CO1FBRXBCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBaUJoQixjQUFjO1FBQ0csa0JBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0F3RHpEO0lBeEVHOztPQUVHO0lBQ0gsSUFDSSxLQUFLLENBQUMsS0FBaUI7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksbUJBQW1CLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQVFELGNBQWM7SUFDZCxRQUFRLENBQUMsS0FBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FB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QjtTQUMxQztLQUNKOzJGQUVRLDBCQUEwQjtrQkFYdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUU7Y0FDQTtvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFdBQVcsNEJBQTRCO3lCQUMxQztxQkFDSjtpQkFDSjs4QkFJRyxxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQU9GLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9UQUJMRV9TVEFURSwgRkRQX1RBQkxFX1NUQVRFX0RJUkVDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyLCBDb2xsZWN0aW9uR3JvdXAsIENvbGxlY3Rpb25Tb3J0LCBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZUluaXRpYWxTdGF0ZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYFtmZHBUYWJsZUluaXRpYWxTdGF0ZV0sXG4gICAgZmRwLXRhYmxlYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfVEFCTEVfU1RBVEVfRElSRUNUSVZFLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlIGV4dGVuZHMgVGFibGVJbml0aWFsU3RhdGUge1xuICAgIC8qKiBJbml0aWFsIHZpc2libGUgY29sdW1ucy4gQ29uc2lzdCBvZiBhIGxpc3Qgb2YgdW5pcXVlIGNvbHVtbiBuYW1lcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbFZpc2libGVDb2x1bW5zOiBzdHJpbmdbXTtcblxuICAgIC8qKiBJbml0aWFsIHNvcnQgb3B0aW9ucy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGluaXRpYWxTb3J0Qnk6IENvbGxlY3Rpb25Tb3J0W10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIGZpbHRlciBvcHRpb25zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbEZpbHRlckJ5OiBDb2xsZWN0aW9uRmlsdGVyW10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIGdyb3VwIG9wdGlvbnMuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsR3JvdXBCeTogQ29sbGVjdGlvbkdyb3VwW10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIHBhZ2UuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsUGFnZSA9IDE7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHN0YXRlIG9mIHRhYmxlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXRlKHZhbHVlOiBUYWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZSh2YWx1ZSB8fCBERUZBVUxUX1RBQkxFX1NUQVRFKTtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKTogVGFibGVTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmxlOiBUYWJsZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0SW5pdGlhbFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX3RhYmxlLmdldFRhYmxlQ29sdW1ucygpO1xuICAgICAgICBjb25zdCBwYWdlID0gcHJldlN0YXRlLnBhZ2U7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID1cbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFZpc2libGVDb2x1bW5zIHx8XG4gICAgICAgICAgICAocHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoID8gcHJldlN0YXRlLmNvbHVtbnMgOiBjb2x1bW5zLmZpbHRlcigoYykgPT4gYy52aXNpYmxlKS5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSk7XG5cbiAgICAgICAgY29uc3QgZGlyZWN0aXZlSW5pdGlhbFBhZ2UgPSB0aGlzLmluaXRpYWxQYWdlID8/IDE7XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX2xvYWRQcmV2aW91c1BhZ2VzID1cbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLnBhZ2VTY3JvbGxpbmcgJiYgdGhpcy5fdGFibGUubG9hZFBhZ2VzQmVmb3JlICYmIGRpcmVjdGl2ZUluaXRpYWxQYWdlID4gMTtcblxuICAgICAgICBjb25zdCBpbml0aWFsUGFnZSA9IHRoaXMuX3RhYmxlLl9sb2FkUHJldmlvdXNQYWdlc1xuICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICA6IGRpcmVjdGl2ZUluaXRpYWxQYWdlIDwgcGFnZS5jdXJyZW50UGFnZVxuICAgICAgICAgICAgPyBwYWdlLmN1cnJlbnRQYWdlXG4gICAgICAgICAgICA6IGRpcmVjdGl2ZUluaXRpYWxQYWdlO1xuXG4gICAgICAgIGNvbnN0IGluaXRpYWxQYWdlU2l6ZSA9XG4gICAgICAgICAgICAodGhpcy5fdGFibGUuX2xvYWRQcmV2aW91c1BhZ2VzID8gZGlyZWN0aXZlSW5pdGlhbFBhZ2UgOiBpbml0aWFsUGFnZSkgKlxuICAgICAgICAgICAgKHRoaXMuX3RhYmxlLnBhZ2VTaXplIHx8IHBhZ2UucGFnZVNpemUpO1xuXG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZSh7XG4gICAgICAgICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICAgICAgICBjb2x1bW5zOiB2aXNpYmxlQ29sdW1ucyxcbiAgICAgICAgICAgIGNvbHVtbktleXM6IGNvbHVtbnMuZmlsdGVyKChjKSA9PiB2aXNpYmxlQ29sdW1ucy5pbmNsdWRlcyhjLm5hbWUpKS5tYXAoKGMpID0+IGMua2V5KSxcbiAgICAgICAgICAgIHNvcnRCeTogdGhpcy5pbml0aWFsU29ydEJ5IHx8IHByZXZTdGF0ZS5zb3J0QnksXG4gICAgICAgICAgICBmaWx0ZXJCeTogdGhpcy5pbml0aWFsRmlsdGVyQnkgfHwgcHJldlN0YXRlLmZpbHRlckJ5LFxuICAgICAgICAgICAgZ3JvdXBCeTogdGhpcy5pbml0aWFsR3JvdXBCeSB8fCBwcmV2U3RhdGUuZ3JvdXBCeSxcbiAgICAgICAgICAgIGZyZWV6ZVRvQ29sdW1uOiB0aGlzLl90YWJsZS5mcmVlemVDb2x1bW5zVG8gfHwgcHJldlN0YXRlLmZyZWV6ZVRvQ29sdW1uLFxuICAgICAgICAgICAgZnJlZXplVG9FbmRDb2x1bW46IHRoaXMuX3RhYmxlLmZyZWV6ZUVuZENvbHVtbnNUbyB8fCBwcmV2U3RhdGUuZnJlZXplVG9FbmRDb2x1bW4sXG4gICAgICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IGluaXRpYWxQYWdlLFxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBpbml0aWFsUGFnZVNpemVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEdldCBjdXJyZW50IHN0YXRlL3NldHRpbmdzIG9mIHRoZSBUYWJsZS4gKi9cbiAgICBnZXRUYWJsZVN0YXRlKCk6IFRhYmxlU3RhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGVTZXJ2aWNlLmdldFRhYmxlU3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgc3RhdGUvc2V0dGluZ3Mgb2YgdGhlIFRhYmxlLiAqL1xuICAgIHNldFRhYmxlU3RhdGUoc3RhdGU6IFRhYmxlU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -39,6 +39,8 @@ export class TableColumnResizeService {
39
39
  constructor(_tableScrollDispatcherService, _rtlService) {
40
40
  this._tableScrollDispatcherService = _tableScrollDispatcherService;
41
41
  this._rtlService = _rtlService;
42
+ /** Subject that emits new map of fixed columns and their respective width. */
43
+ this.fixedColumsWidthChange = new BehaviorSubject(new Map());
42
44
  /** @hidden */
43
45
  this._fixedColumnsWidthMap = new Map();
44
46
  /** @hidden */
@@ -170,6 +172,7 @@ export class TableColumnResizeService {
170
172
  /** Register the value of column width that changed from input */
171
173
  setCustomWidth(columnName, value) {
172
174
  this._fixedColumnsWidthMap.set(columnName, value);
175
+ this.fixedColumsWidthChange.next(this._fixedColumnsWidthMap);
173
176
  }
174
177
  /** Set the appropriate column resizer position. */
175
178
  setInitialResizerPosition(resizerPosition, resizedColumn) {
@@ -236,6 +239,7 @@ export class TableColumnResizeService {
236
239
  }
237
240
  }
238
241
  }
242
+ this.fixedColumsWidthChange.next(this._fixedColumnsWidthMap);
239
243
  /**
240
244
  * In case "_resizedColumn" is freezable, make sure the overall width of freezable columns does not exceed the width of the table.
241
245
  * If it does, columns will be made unfrozen.
@@ -257,6 +261,7 @@ export class TableColumnResizeService {
257
261
  }
258
262
  const updatedWidth = columnWidth + diffX;
259
263
  this._fixedColumnsWidthMap.set(this._resizedColumn, updatedWidth + 'px');
264
+ this.fixedColumsWidthChange.next(this._fixedColumnsWidthMap);
260
265
  this.updateFrozenColumnsWidthAfterResize(this._resizedColumn, diffX);
261
266
  const computed = window.getComputedStyle(resizedElement);
262
267
  const padding = parseInt(computed.paddingLeft, 10) + parseInt(computed.paddingRight, 10);
@@ -300,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
300
305
  }], ctorParameters: function () { return [{ type: i1.TableScrollDispatcherService }, { type: i2.RtlService, decorators: [{
301
306
  type: Optional
302
307
  }] }]; } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXJlc2l6ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlLWhlbHBlcnMvc2VydmljZXMvdGFibGUtY29sdW1uLXJlc2l6ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3RELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBRWpGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQztBQUU1Qzs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFvRGpDLGdEQUFnRDtJQUNoRCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBUUQsdUNBQXVDO0lBQ3ZDLElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBS0QscUNBQXFDO0lBQ3JDLElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksS0FBSyxJ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QUFDLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRTFHLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbkMsT0FBTztTQUNWO1FBQ0QsYUFBYSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztJQUM5RSxDQUFDOztxSEFyV1Esd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVTs7MEJBMEZGLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFRBQkxFX0NPTFVNTl9NSU5fV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLXNjcm9sbC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfUkVTSVpFUl9CT1JERVJfV0lEVEggPSAzO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gaGFuZGxlIGFsbCB0aGluZ3MgcmVsYXRlZCB0byBjb2x1bW4gcmVzaXppbmc6XG4gKiAtIFNldHRpbmcgcmVzaXplclxuICogLSBQcm9jZXNzaW5nIHJlc2l6ZVxuICogLSBDYWxjdWxhdGluZyB0aGUgcmVhbCBjb2x1bW5zIHdpZHRoXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZml4ZWRDb2x1bW5zV2lkdGhNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb2x1bW5zQ2VsbE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBFbGVtZW50UmVmPEhUTUxUYWJsZURhdGFDZWxsRWxlbWVudD5bXT4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUNvbHVtbk5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aXNpYmxlQ29sdW1uTGVmdE5laWdoYm91ck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVDb2x1bW5SaWdodE5laWdoYm91ck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVDb2x1bW5MZWZ0T2Zmc2V0UHhNYXAgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aXNpYmxlQ29sdW1uUmlnaHRPZmZzZXRQeE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3N0YXJ0WDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NsaWVudFN0YXJ0WDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2l6ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplZENvbHVtbjogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemVyUG9zaXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxMZWZ0ID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWFya0ZvckNoZWNrID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplck1vdmVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmxlUmVmOiBUYWJsZTtcblxuICAgIC8qKiBJbmRpY2F0ZSBpZiByZXNpemluZyBwcm9jZXNzIGluIHByb2dyZXNzLiAqL1xuICAgIGdldCByZXNpemVJblByb2dyZXNzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzaXplSW5Qcm9ncmVzcztcbiAgICB9XG5cbiAgICAvKiogUmVzaXplIHByb2dyZXNzIHN0cmVhbS4gKi9cbiAgICByZWFkb25seSByZXNpemVJblByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcmVzaXplSW5Qcm9ncmVzcyk7XG5cbiAgICAvKiogV2hldGhlciBjZWxsIG1vY2sgc2hvdWxkIGJlIHZpc2libGUuICovXG4gICAgcmVhZG9ubHkgY2VsbE1vY2tWaXNpYmxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEN1cnJlbnQgY29sdW1uIHJlc2l6ZXIgcG9zaXRpb24uICovXG4gICAgZ2V0IHJlc2l6ZXJQb3NpdGlvbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzaXplclBvc2l0aW9uID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIFJlc2l6ZXIgcG9zaXRpb24gc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHJlc2l6ZXJQb3NpdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbiAgICAvKiogT2JzZXJ2YWJsZSB0byBub3RpZnkgdG8gcnVuIENEICovXG4gICAgZ2V0IG1hcmtGb3JDaGVjaygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcmtGb3JDaGVjay5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKiogdGFibGUgaGFzIGZpeGVkIHdpZHRoIGlmIGFsbCBvZiBpdCdzIGNvbHVtbnMgYXJlIGZpeGVkICovXG4gICAgZ2V0IGZpeGVkV2lkdGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcC5zaXplID09PSB0aGlzLl92aXNpYmxlQ29sdW1uTmFtZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX3J0bCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2U6IFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5fdGFibGVTY3JvbGxEaXNwYXRjaGVyU2VydmljZVxuICAgICAgICAgICAgPy5ob3Jpem9udGFsbHlTY3JvbGxlZCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNjcm9sbGFibGUpID0+ICh0aGlzLl9zY3JvbGxMZWZ0ID0gc2Nyb2xsYWJsZS5nZXRTY3JvbGxMZWZ0KCkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNpemVJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVzaXplSW5Qcm9ncmVzcyQubmV4dChmYWxzZSk7XG5cbiAgICAgICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgdGhpcy5fcmVzaXplck1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldFRhYmxlUmVmKHJlZjogVGFibGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVSZWYgPSByZWY7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gaW5pdGlhbGl6ZXMgc2VydmljZSB3aXRoIGRhdGEsIHRyaWdnZXIgY29sdW1ucyB3aWR0aCBjYWxjdWxhdGlvbi4gKi9cbiAgICBzZXRDb2x1bW5OYW1lcyh2aXNpYmxlQ29sdW1uTmFtZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0TmVpZ2hib3VyTWFwLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5SaWdodE5laWdoYm91ck1hcC5jbGVhcigpO1xuICAgICAgICB2aXNpYmxlQ29sdW1uTmFtZXMuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnROZWlnaGJvdXJNYXAuc2V0KGNvbHVtbiwgdmlzaWJsZUNvbHVtbk5hbWVzW2luZGV4IC0gMV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmlzaWJsZUNvbHVtbk5hbWVzLnJldmVyc2UoKS5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl92aXNpYmxlQ29sdW1uUmlnaHROZWlnaGJvdXJNYXAuc2V0KGNvbHVtbiwgdmlzaWJsZUNvbHVtbk5hbWVzW2luZGV4IC0gMV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtbk5hbWVzID0gWy4uLnZpc2libGVDb2x1bW5OYW1lc107XG4gICAgICAgIHRoaXMudXBkYXRlRnJvemVuQ29sdW1uc1dpZHRoKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB1cGRhdGVGcm96ZW5Db2x1bW5zV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGxldCBhbGxQcmV2aW91c1dpZHRocyA9IDAsXG4gICAgICAgICAgICBhbGxOZXh0V2lkdGhzID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBbY29sdW1uLCBwcmV2Q29sdW1uXSBvZiB0aGlzLl92aXNpYmxlQ29sdW1uTGVmdE5laWdoYm91ck1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGFsbFByZXZpb3VzV2lkdGhzICs9XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KHByZXZDb2x1bW4gYXMgc3RyaW5nKT8uWzBdPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID8/IDA7XG4gICAgICAgICAgICB0aGlzLl92aXNpYmxlQ29sdW1uTGVmdE9mZnNldFB4TWFwLnNldChjb2x1bW4sIGFsbFByZXZpb3VzV2lkdGhzKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IFtjb2x1bW4sIG5leHRDb2x1bW5dIG9mIHRoaXMuX3Zpc2libGVDb2x1bW5SaWdodE5laWdoYm91ck1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGFsbE5leHRXaWR0aHMgKz1cbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5nZXQobmV4dENvbHVtbiBhcyBzdHJpbmcpPy5bMF0/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPz8gMDtcbiAgICAgICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5SaWdodE9mZnNldFB4TWFwLnNldChjb2x1bW4sIGFsbE5leHRXaWR0aHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB1cGRhdGVGcm96ZW5Db2x1bW5zV2lkdGhBZnRlclJlc2l6ZShjb2x1bW5OYW1lOiBzdHJpbmcsIGRpZmZYOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgW2NvbHVtbiwgd2lkdGhdIG9mIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0T2Zmc2V0UHhNYXAuZW50cmllcygpKSB7XG4gICAgICAgICAgICBpZiAoY29sdW1uID09PSBjb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0T2Zmc2V0UHhNYXAuc2V0KGNvbHVtbiwgd2lkdGggKyBkaWZmWCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogUmV0cmlldmVzIGN1c3RvbSBjb2x1bW4gdmFsdWUgb3IgcmV0dXJucyBgdW5zZXRgICovXG4gICAgZ2V0Q29sdW1uV2lkdGhTdHlsZShjb2x1bW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjYWxjdWxhdGVkV2lkdGggPSB0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcC5nZXQoY29sdW1uTmFtZSk7XG4gICAgICAgIHJldHVybiBjYWxjdWxhdGVkV2lkdGggfHwgJ3Vuc2V0JztcbiAgICB9XG5cbiAgICAvKiogUHJldmlvdXMgY29sdW1uIG5hbWUgKi9cbiAgICBnZXRQcmV2aW91c0NvbHVtbk5hbWUoY29sdW1uTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0TmVpZ2hib3VyTWFwLmdldChjb2x1bW5OYW1lKTtcbiAgICB9XG5cbiAgICAvKiogUHJldmlvdXMgY29sdW1uIG5hbWUgKi9cbiAgICBnZXROZXh0Q29sdW1uTmFtZShjb2x1bW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwLmdldChjb2x1bW5OYW1lKTtcbiAgICB9XG5cbiAgICAvKiogT3ZlcmFsbCBwcmV2aW91cyBjb2x1bW5zIHdpZHRoLiBVc2VkIHRvIGNhbGN1bGF0ZSBvZmZzZXQgZm9yIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbmVkIGNlbGxzLiAqL1xuICAgIGdldFByZXZDb2x1bW5zV2lkdGgoY29sdW1uTmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0T2Zmc2V0UHhNYXAuZ2V0KGNvbHVtbk5hbWUpID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIE92ZXJhbGwgbmV4dCBjb2x1bW5zIHdpZHRoLiBVc2VkIHRvIGNhbGN1bGF0ZSBvZmZzZXQgZm9yIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbmVkIGNlbGxzLiAqL1xuICAgIGdldE5leHRDb2x1bW5zV2lkdGgoY29sdW1uTmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVDb2x1bW5SaWdodE9mZnNldFB4TWFwLmdldChjb2x1bW5OYW1lKSA/PyAwO1xuICAgIH1cblxuICAgIC8qKiBSZWdpc3RlciBjb2x1bW4ncyBjZWxsIHRvIGdldCBpdHMgZGltZW5zaW9ucyBpbiBmdXJ0aGVyLiAqL1xuICAgIHJlZ2lzdGVyQ29sdW1uQ2VsbChjb2x1bW5OYW1lOiBzdHJpbmcsIGNlbGxFbFJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5DZWxscyA9IHRoaXMuX2NvbHVtbnNDZWxsTWFwLmdldChjb2x1bW5OYW1lKSB8fCBbXTtcbiAgICAgICAgdGhpcy5fY29sdW1uc0NlbGxNYXAuc2V0KGNvbHVtbk5hbWUsIFtjZWxsRWxSZWYsIC4uLmNvbHVtbkNlbGxzXSk7XG4gICAgfVxuXG4gICAgLyoqIFVucmVnaXN0ZXIgY29sdW1uJ3MgY2VsbC4gKi9cbiAgICB1bnJlZ2lzdGVyQ29sdW1uQ2VsbChjb2x1bW5OYW1lOiBzdHJpbmcsIGNlbGxFbFJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5DZWxscyA9IHRoaXMuX2NvbHVtbnNDZWxsTWFwLmdldChjb2x1bW5OYW1lKSB8fCBbXTtcbiAgICAgICAgY29uc3QgZWxtSW5kZXggPSBjb2x1bW5DZWxscy5maW5kSW5kZXgoKGUpID0+IGUubmF0aXZlRWxlbWVudCA9PT0gY2VsbEVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChlbG1JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbHVtbkNlbGxzLnNwbGljZShlbG1JbmRleCwgMSk7XG5cbiAgICAgICAgdGhpcy5fY29sdW1uc0NlbGxNYXAuc2V0KGNvbHVtbk5hbWUsIGNvbHVtbkNlbGxzKTtcbiAgICB9XG5cbiAgICAvKiogUmVnaXN0ZXIgdGhlIHZhbHVlIG9mIGNvbHVtbiB3aWR0aCB0aGF0IGNoYW5nZWQgZnJvbSAgaW5wdXQgKi9cbiAgICBzZXRDdXN0b21XaWR0aChjb2x1bW5OYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZml4ZWRDb2x1bW5zV2lkdGhNYXAuc2V0KGNvbHVtbk5hbWUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IHRoZSBhcHByb3ByaWF0ZSBjb2x1bW4gcmVzaXplciBwb3NpdGlvbi4gKi9cbiAgICBzZXRJbml0aWFsUmVzaXplclBvc2l0aW9uKHJlc2l6ZXJQb3NpdGlvbjogbnVtYmVyLCByZXNpemVkQ29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVzaXplSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVzaXplZENvbHVtbiA9IHJlc2l6ZWRDb2x1bW47XG4gICAgICAgIHRoaXMuX3Jlc2l6ZXJQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMucmVzaXplclBvc2l0aW9uJC5uZXh0KHRoaXMucmVzaXplclBvc2l0aW9uKTtcblxuICAgICAgICBpZiAocmVzaXplclBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbExlZnRPZmZzZXQgPSB0aGlzLl9zY3JvbGxMZWZ0ICogKHRoaXMuX3J0bCA/IDEgOiAtMSk7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSByZXNpemVyUG9zaXRpb24gLSBUQUJMRV9SRVNJWkVSX0JPUkRFUl9XSURUSCArIHNjcm9sbExlZnRPZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2submV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBIaWRlIHRoZSBjb2x1bW4gcmVzaXplci4gKi9cbiAgICBoaWRlUmVzaXplcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jlc2l6ZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZXJQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMucmVzaXplclBvc2l0aW9uJC5uZXh0KHRoaXMucmVzaXplclBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlIHN0YXJ0IHJlc2l6aW5nLiAqL1xuICAgIHN0YXJ0UmVzaXplKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0YXJ0WCA9IHRoaXMucmVzaXplclBvc2l0aW9uO1xuICAgICAgICB0aGlzLl9jbGllbnRTdGFydFggPSBldmVudC5jbGllbnRYO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVJlc2l6ZXJQb3NpdGlvbk9uTW91c2VNb3ZlKCk7XG5cbiAgICAgICAgdGhpcy5fcmVzaXplSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIHRoaXMucmVzaXplSW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlIGVuZCByZXNpemluZy4gKi9cbiAgICBmaW5pc2hSZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzaXplck1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVzaXplSW5Qcm9ncmVzcyQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZXJQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMucmVzaXplclBvc2l0aW9uJC5uZXh0KHRoaXMucmVzaXplclBvc2l0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5fc3RhcnRYICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWVudFN0YXJ0WCA9IHRoaXMuX2NsaWVudFN0YXJ0WCA/PyAwO1xuICAgICAgICAgICAgY29uc3QgZGlmZlggPSB0aGlzLl9ydGwgPyBjbGllbnRTdGFydFggLSBldmVudC5jbGllbnRYIDogZXZlbnQuY2xpZW50WCAtIGNsaWVudFN0YXJ0WDtcblxuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1Jlc2l6ZShkaWZmWCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdGFydFggPSBudWxsO1xuICAgICAgICB0aGlzLl9jbGllbnRTdGFydFggPSBudWxsO1xuXG4gICAgICAgIHRoaXMuX21hcmtGb3JDaGVjay5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSBjb2x1bW5zIHdpZHRoIGFmdGVyIHJlc2l6aW5nLCBwcmV2ZW50IGZyb20gaGF2aW5nIHRvbyBzbWFsbCBjb2x1bW5zLiAqL1xuICAgIF9wcm9jZXNzUmVzaXplKGRpZmZYOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVzaXplZEVsZW1lbnQgPSB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5nZXQodGhpcy5fcmVzaXplZENvbHVtbik/LlswXT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29sdW1uV2lkdGggPSByZXNpemVkRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG5cbiAgICAgICAgaWYgKCFjb2x1bW5XaWR0aCB8fCAhcmVzaXplZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkaWZmWCA8IDAgJiYgY29sdW1uV2lkdGggKyBkaWZmWCA8IFRBQkxFX0NPTFVNTl9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgIGRpZmZYID0gVEFCTEVfQ09MVU1OX01JTl9XSURUSCAtIGNvbHVtbldpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmZpeGVkV2lkdGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2NvbHVtbk5hbWUsIGNlbGxzXSBvZiB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2VsbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjZWxsc1swXS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICsgJ3B4J1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbiBjYXNlIFwiX3Jlc2l6ZWRDb2x1bW5cIiBpcyBmcmVlemFibGUsIG1ha2Ugc3VyZSB0aGUgb3ZlcmFsbCB3aWR0aCBvZiBmcmVlemFibGUgY29sdW1ucyBkb2VzIG5vdCBleGNlZWQgdGhlIHdpZHRoIG9mIHRoZSB0YWJsZS5cbiAgICAgICAgICogSWYgaXQgZG9lcywgY29sdW1ucyB3aWxsIGJlIG1hZGUgdW5mcm96ZW4uXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBkaWZmWCA+IDAgJiZcbiAgICAgICAgICAgICh0aGlzLl90YWJsZVJlZi5fZnJlZXphYmxlQ29sdW1ucy5oYXModGhpcy5fcmVzaXplZENvbHVtbikgfHxcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJlZi5fZnJlZXphYmxlRW5kQ29sdW1ucz8uaGFzKHRoaXMuX3Jlc2l6ZWRDb2x1bW4pKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGxldCBhY3R1YWxXaWR0aCA9IHRoaXMuZ2V0UHJldkNvbHVtbnNXaWR0aCh0aGlzLl9yZXNpemVkQ29sdW1uKSArIGNvbHVtbldpZHRoO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVFbmRDb2x1bW5zPy5oYXModGhpcy5fcmVzaXplZENvbHVtbikpIHtcbiAgICAgICAgICAgICAgICBhY3R1YWxXaWR0aCA9IHRoaXMuZ2V0TmV4dENvbHVtbnNXaWR0aCh0aGlzLl9yZXNpemVkQ29sdW1uKSArIGNvbHVtbldpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbmV3V2lkdGggPSBhY3R1YWxXaWR0aCArIGRpZmZYO1xuICAgICAgICAgICAgY29uc3QgbWF4V2lkdGggPSB0aGlzLl90YWJsZVJlZi5nZXRNYXhBbGxvd2VkRnJlZXphYmxlQ29sdW1uc1dpZHRoKCk7XG4gICAgICAgICAgICBpZiAobmV3V2lkdGggPj0gbWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJlZi5fZnJlZXphYmxlQ29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGVSZWYudW5mcmVlemUoY29sdW1uLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXBkYXRlZFdpZHRoID0gY29sdW1uV2lkdGggKyBkaWZmWDtcbiAgICAgICAgdGhpcy5fZml4ZWRDb2x1bW5zV2lkdGhNYXAuc2V0KHRoaXMuX3Jlc2l6ZWRDb2x1bW4sIHVwZGF0ZWRXaWR0aCArICdweCcpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZyb3plbkNvbHVtbnNXaWR0aEFmdGVyUmVzaXplKHRoaXMuX3Jlc2l6ZWRDb2x1bW4sIGRpZmZYKTtcblxuICAgICAgICBjb25zdCBjb21wdXRlZCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHJlc2l6ZWRFbGVtZW50KTtcbiAgICAgICAgY29uc3QgcGFkZGluZyA9IHBhcnNlSW50KGNvbXB1dGVkLnBhZGRpbmdMZWZ0LCAxMCkgKyBwYXJzZUludChjb21wdXRlZC5wYWRkaW5nUmlnaHQsIDEwKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlSGVhZGVyT3ZlcmZsb3dTdGF0ZSh1cGRhdGVkV2lkdGggLSBwYWRkaW5nKTtcbiAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogVXBkYXRlIGNvbHVtbiByZXNpemVyIHBvc2l0aW9uLiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVJlc2l6ZXJQb3NpdGlvbk9uTW91c2VNb3ZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNpemVyTW92ZVN1YnNjcmlwdGlvbiA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGllbnRTdGFydFggPSB0aGlzLl9jbGllbnRTdGFydFggPz8gMDtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWZmWCA9IHRoaXMuX3J0bCA/IGNsaWVudFN0YXJ0WCAtIGV2ZW50LmNsaWVudFggOiBldmVudC5jbGllbnRYIC0gY2xpZW50U3RhcnRYO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzaXplclBvc2l0aW9uID0gKHRoaXMuX3N0YXJ0WCA/PyAwKSArIGRpZmZYO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplclBvc2l0aW9uJC5uZXh0KHRoaXMucmVzaXplclBvc2l0aW9uKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX21hcmtGb3JDaGVjay5uZXh0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgaGVhZGVyIHRleHQgbGVuZ3RoIGdvZXMgb3ZlciB0aGUgY29sdW1uIHdpZHRoLiBJbiBzdWNoIGNhc2UgYXBwbGllcyB0ZXh0IHRydW5jYXRpb24gd2l0aFxuICAgICAqIGVsbGlwc2lzIGFuZCBtYWtlIHN1cmUgd2UgYWxzbyBzaG93IGEgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlSGVhZGVyT3ZlcmZsb3dTdGF0ZSh1cGRhdGVkV2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fY29sdW1uc0NlbGxNYXBcbiAgICAgICAgICAgIC5nZXQodGhpcy5fcmVzaXplZENvbHVtbilcbiAgICAgICAgICAgID8uZmluZCgoYykgPT4gYz8ubmF0aXZlRWxlbWVudC50YWdOYW1lID09PSAnVEgnKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbiA9IHRoaXMuX3RhYmxlUmVmLmdldFZpc2libGVUYWJsZUNvbHVtbnMoKS5maW5kKChjKSA9PiBjLm5hbWUgPT09IHRoaXMuX3Jlc2l6ZWRDb2x1bW4pO1xuICAgICAgICBjb25zdCBoZWFkZXJUZXh0RWxlbSA9IGVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoYCMke3RoaXMuX3RhYmxlUmVmLmlkfS1oZWFkZXItY2VsbC0ke3RoaXMuX3Jlc2l6ZWRDb2x1bW59YCk7XG5cbiAgICAgICAgaWYgKCFoZWFkZXJUZXh0RWxlbSB8fCAhdmlzaWJsZUNvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZpc2libGVDb2x1bW4uaGVhZGVyT3ZlcmZsb3dzID0gaGVhZGVyVGV4dEVsZW0uc2Nyb2xsV2lkdGggPiB1cGRhdGVkV2lkdGg7XG4gICAgfVxufVxuIl19
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXJlc2l6ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlLWhlbHBlcnMvc2VydmljZXMvdGFibGUtY29sdW1uLXJlc2l6ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3RELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBRWpGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQztBQUU1Qzs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFzRGpDLGdEQUFnRDtJQUNoRCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBUUQsdUNBQXVDO0lBQ3ZDLElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBS0QscUNBQXFDO0lBQ3JDLElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksS0FBSyxJ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RSxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLEVBQUUsYUFBYSxDQUFDO1FBQ3BFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFHLE1BQU0sY0FBYyxHQUFHLE9BQU8sRUFBRSxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRTFHLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDbkMsT0FBTztTQUNWO1FBQ0QsYUFBYSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztJQUM5RSxDQUFDOztxSEEzV1Esd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVTs7MEJBNEZGLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFRBQkxFX0NPTFVNTl9NSU5fV0lEVEggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLXNjcm9sbC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfUkVTSVpFUl9CT1JERVJfV0lEVEggPSAzO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gaGFuZGxlIGFsbCB0aGluZ3MgcmVsYXRlZCB0byBjb2x1bW4gcmVzaXppbmc6XG4gKiAtIFNldHRpbmcgcmVzaXplclxuICogLSBQcm9jZXNzaW5nIHJlc2l6ZVxuICogLSBDYWxjdWxhdGluZyB0aGUgcmVhbCBjb2x1bW5zIHdpZHRoXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBTdWJqZWN0IHRoYXQgZW1pdHMgbmV3IG1hcCBvZiBmaXhlZCBjb2x1bW5zIGFuZCB0aGVpciByZXNwZWN0aXZlIHdpZHRoLiAqL1xuICAgIHJlYWRvbmx5IGZpeGVkQ29sdW1zV2lkdGhDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxzdHJpbmcsIHN0cmluZz4+KG5ldyBNYXAoKSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9maXhlZENvbHVtbnNXaWR0aE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbHVtbnNDZWxsTWFwID0gbmV3IE1hcDxzdHJpbmcsIEVsZW1lbnRSZWY8SFRNTFRhYmxlRGF0YUNlbGxFbGVtZW50PltdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aXNpYmxlQ29sdW1uTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVDb2x1bW5MZWZ0TmVpZ2hib3VyTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVDb2x1bW5SaWdodE9mZnNldFB4TWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RhcnRYOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xpZW50U3RhcnRYOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemVkQ29sdW1uOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2l6ZXJQb3NpdGlvbjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Njcm9sbExlZnQgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tYXJrRm9yQ2hlY2sgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemVyTW92ZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFibGVSZWY6IFRhYmxlO1xuXG4gICAgLyoqIEluZGljYXRlIGlmIHJlc2l6aW5nIHByb2Nlc3MgaW4gcHJvZ3Jlc3MuICovXG4gICAgZ2V0IHJlc2l6ZUluUHJvZ3Jlc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVJblByb2dyZXNzO1xuICAgIH1cblxuICAgIC8qKiBSZXNpemUgcHJvZ3Jlc3Mgc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHJlc2l6ZUluUHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0aGlzLl9yZXNpemVJblByb2dyZXNzKTtcblxuICAgIC8qKiBXaGV0aGVyIGNlbGwgbW9jayBzaG91bGQgYmUgdmlzaWJsZS4gKi9cbiAgICByZWFkb25seSBjZWxsTW9ja1Zpc2libGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQ3VycmVudCBjb2x1bW4gcmVzaXplciBwb3NpdGlvbi4gKi9cbiAgICBnZXQgcmVzaXplclBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVyUG9zaXRpb24gPz8gMDtcbiAgICB9XG5cbiAgICAvKiogUmVzaXplciBwb3NpdGlvbiBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgcmVzaXplclBvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICAgIC8qKiBPYnNlcnZhYmxlIHRvIG5vdGlmeSB0byBydW4gQ0QgKi9cbiAgICBnZXQgbWFya0ZvckNoZWNrKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFya0ZvckNoZWNrLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiB0YWJsZSBoYXMgZml4ZWQgd2lkdGggaWYgYWxsIG9mIGl0J3MgY29sdW1ucyBhcmUgZml4ZWQgKi9cbiAgICBnZXQgZml4ZWRXaWR0aCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwLnNpemUgPT09IHRoaXMuX3Zpc2libGVDb2x1bW5OYW1lcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfcnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVTY3JvbGxEaXNwYXRjaGVyU2VydmljZTogVGFibGVTY3JvbGxEaXNwYXRjaGVyU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl90YWJsZVNjcm9sbERpc3BhdGNoZXJTZXJ2aWNlXG4gICAgICAgICAgICA/Lmhvcml6b250YWxseVNjcm9sbGVkKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsYWJsZSkgPT4gKHRoaXMuX3Njcm9sbExlZnQgPSBzY3JvbGxhYmxlLmdldFNjcm9sbExlZnQoKSkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNpemVJblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcblxuICAgICAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVyTW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0VGFibGVSZWYocmVmOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZVJlZiA9IHJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBpbml0aWFsaXplcyBzZXJ2aWNlIHdpdGggZGF0YSwgdHJpZ2dlciBjb2x1bW5zIHdpZHRoIGNhbGN1bGF0aW9uLiAqL1xuICAgIHNldENvbHVtbk5hbWVzKHZpc2libGVDb2x1bW5OYW1lczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnROZWlnaGJvdXJNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwLmNsZWFyKCk7XG4gICAgICAgIHZpc2libGVDb2x1bW5OYW1lcy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl92aXNpYmxlQ29sdW1uTGVmdE5laWdoYm91ck1hcC5zZXQoY29sdW1uLCB2aXNpYmxlQ29sdW1uTmFtZXNbaW5kZXggLSAxXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2aXNpYmxlQ29sdW1uTmFtZXMucmV2ZXJzZSgpLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5SaWdodE5laWdoYm91ck1hcC5zZXQoY29sdW1uLCB2aXNpYmxlQ29sdW1uTmFtZXNbaW5kZXggLSAxXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl92aXNpYmxlQ29sdW1uTmFtZXMgPSBbLi4udmlzaWJsZUNvbHVtbk5hbWVzXTtcbiAgICAgICAgdGhpcy51cGRhdGVGcm96ZW5Db2x1bW5zV2lkdGgoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVwZGF0ZUZyb3plbkNvbHVtbnNXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGFsbFByZXZpb3VzV2lkdGhzID0gMCxcbiAgICAgICAgICAgIGFsbE5leHRXaWR0aHMgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IFtjb2x1bW4sIHByZXZDb2x1bW5dIG9mIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0TmVpZ2hib3VyTWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgYWxsUHJldmlvdXNXaWR0aHMgKz1cbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5nZXQocHJldkNvbHVtbiBhcyBzdHJpbmcpPy5bMF0/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPz8gMDtcbiAgICAgICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0T2Zmc2V0UHhNYXAuc2V0KGNvbHVtbiwgYWxsUHJldmlvdXNXaWR0aHMpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgW2NvbHVtbiwgbmV4dENvbHVtbl0gb2YgdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgYWxsTmV4dFdpZHRocyArPVxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNDZWxsTWFwLmdldChuZXh0Q29sdW1uIGFzIHN0cmluZyk/LlswXT8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/PyAwO1xuICAgICAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0T2Zmc2V0UHhNYXAuc2V0KGNvbHVtbiwgYWxsTmV4dFdpZHRocyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVwZGF0ZUZyb3plbkNvbHVtbnNXaWR0aEFmdGVyUmVzaXplKGNvbHVtbk5hbWU6IHN0cmluZywgZGlmZlg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBbY29sdW1uLCB3aWR0aF0gb2YgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4gPT09IGNvbHVtbk5hbWUpIHtcbiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcC5zZXQoY29sdW1uLCB3aWR0aCArIGRpZmZYKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgY3VzdG9tIGNvbHVtbiB2YWx1ZSBvciByZXR1cm5zIGB1bnNldGAgKi9cbiAgICBnZXRDb2x1bW5XaWR0aFN0eWxlKGNvbHVtbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRXaWR0aCA9IHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwLmdldChjb2x1bW5OYW1lKTtcbiAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWRXaWR0aCB8fCAndW5zZXQnO1xuICAgIH1cblxuICAgIC8qKiBQcmV2aW91cyBjb2x1bW4gbmFtZSAqL1xuICAgIGdldFByZXZpb3VzQ29sdW1uTmFtZShjb2x1bW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnROZWlnaGJvdXJNYXAuZ2V0KGNvbHVtbk5hbWUpO1xuICAgIH1cblxuICAgIC8qKiBQcmV2aW91cyBjb2x1bW4gbmFtZSAqL1xuICAgIGdldE5leHRDb2x1bW5OYW1lKGNvbHVtbk5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlQ29sdW1uUmlnaHROZWlnaGJvdXJNYXAuZ2V0KGNvbHVtbk5hbWUpO1xuICAgIH1cblxuICAgIC8qKiBPdmVyYWxsIHByZXZpb3VzIGNvbHVtbnMgd2lkdGguIFVzZWQgdG8gY2FsY3VsYXRlIG9mZnNldCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uZWQgY2VsbHMuICovXG4gICAgZ2V0UHJldkNvbHVtbnNXaWR0aChjb2x1bW5OYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcC5nZXQoY29sdW1uTmFtZSkgPz8gMDtcbiAgICB9XG5cbiAgICAvKiogT3ZlcmFsbCBuZXh0IGNvbHVtbnMgd2lkdGguIFVzZWQgdG8gY2FsY3VsYXRlIG9mZnNldCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uZWQgY2VsbHMuICovXG4gICAgZ2V0TmV4dENvbHVtbnNXaWR0aChjb2x1bW5OYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0T2Zmc2V0UHhNYXAuZ2V0KGNvbHVtbk5hbWUpID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIFJlZ2lzdGVyIGNvbHVtbidzIGNlbGwgdG8gZ2V0IGl0cyBkaW1lbnNpb25zIGluIGZ1cnRoZXIuICovXG4gICAgcmVnaXN0ZXJDb2x1bW5DZWxsKGNvbHVtbk5hbWU6IHN0cmluZywgY2VsbEVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkNlbGxzID0gdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KGNvbHVtbk5hbWUpIHx8IFtdO1xuICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5zZXQoY29sdW1uTmFtZSwgW2NlbGxFbFJlZiwgLi4uY29sdW1uQ2VsbHNdKTtcbiAgICB9XG5cbiAgICAvKiogVW5yZWdpc3RlciBjb2x1bW4ncyBjZWxsLiAqL1xuICAgIHVucmVnaXN0ZXJDb2x1bW5DZWxsKGNvbHVtbk5hbWU6IHN0cmluZywgY2VsbEVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkNlbGxzID0gdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KGNvbHVtbk5hbWUpIHx8IFtdO1xuICAgICAgICBjb25zdCBlbG1JbmRleCA9IGNvbHVtbkNlbGxzLmZpbmRJbmRleCgoZSkgPT4gZS5uYXRpdmVFbGVtZW50ID09PSBjZWxsRWxSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGVsbUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29sdW1uQ2VsbHMuc3BsaWNlKGVsbUluZGV4LCAxKTtcblxuICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5zZXQoY29sdW1uTmFtZSwgY29sdW1uQ2VsbHMpO1xuICAgIH1cblxuICAgIC8qKiBSZWdpc3RlciB0aGUgdmFsdWUgb2YgY29sdW1uIHdpZHRoIHRoYXQgY2hhbmdlZCBmcm9tICBpbnB1dCAqL1xuICAgIHNldEN1c3RvbVdpZHRoKGNvbHVtbk5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcC5zZXQoY29sdW1uTmFtZSwgdmFsdWUpO1xuICAgICAgICB0aGlzLmZpeGVkQ29sdW1zV2lkdGhDaGFuZ2UubmV4dCh0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCB0aGUgYXBwcm9wcmlhdGUgY29sdW1uIHJlc2l6ZXIgcG9zaXRpb24uICovXG4gICAgc2V0SW5pdGlhbFJlc2l6ZXJQb3NpdGlvbihyZXNpemVyUG9zaXRpb246IG51bWJlciwgcmVzaXplZENvbHVtbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZWRDb2x1bW4gPSByZXNpemVkQ29sdW1uO1xuICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKHJlc2l6ZXJQb3NpdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxMZWZ0T2Zmc2V0ID0gdGhpcy5fc2Nyb2xsTGVmdCAqICh0aGlzLl9ydGwgPyAxIDogLTEpO1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplclBvc2l0aW9uID0gcmVzaXplclBvc2l0aW9uIC0gVEFCTEVfUkVTSVpFUl9CT1JERVJfV0lEVEggKyBzY3JvbGxMZWZ0T2Zmc2V0O1xuICAgICAgICAgICAgdGhpcy5yZXNpemVyUG9zaXRpb24kLm5leHQodGhpcy5yZXNpemVyUG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogSGlkZSB0aGUgY29sdW1uIHJlc2l6ZXIuICovXG4gICAgaGlkZVJlc2l6ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9yZXNpemVJblByb2dyZXNzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG4gICAgICAgIHRoaXMuX21hcmtGb3JDaGVjay5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBzdGFydCByZXNpemluZy4gKi9cbiAgICBzdGFydFJlc2l6ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGFydFggPSB0aGlzLnJlc2l6ZXJQb3NpdGlvbjtcbiAgICAgICAgdGhpcy5fY2xpZW50U3RhcnRYID0gZXZlbnQuY2xpZW50WDtcblxuICAgICAgICB0aGlzLl91cGRhdGVSZXNpemVyUG9zaXRpb25Pbk1vdXNlTW92ZSgpO1xuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlc2l6ZUluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBlbmQgcmVzaXppbmcuICovXG4gICAgZmluaXNoUmVzaXplKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZXJNb3ZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5fcmVzaXplSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlc2l6ZUluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKHRoaXMuX3N0YXJ0WCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBjbGllbnRTdGFydFggPSB0aGlzLl9jbGllbnRTdGFydFggPz8gMDtcbiAgICAgICAgICAgIGNvbnN0IGRpZmZYID0gdGhpcy5fcnRsID8gY2xpZW50U3RhcnRYIC0gZXZlbnQuY2xpZW50WCA6IGV2ZW50LmNsaWVudFggLSBjbGllbnRTdGFydFg7XG5cbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NSZXNpemUoZGlmZlgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3RhcnRYID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2xpZW50U3RhcnRYID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2submV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBVcGRhdGUgY29sdW1ucyB3aWR0aCBhZnRlciByZXNpemluZywgcHJldmVudCBmcm9tIGhhdmluZyB0b28gc21hbGwgY29sdW1ucy4gKi9cbiAgICBfcHJvY2Vzc1Jlc2l6ZShkaWZmWDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc2l6ZWRFbGVtZW50ID0gdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KHRoaXMuX3Jlc2l6ZWRDb2x1bW4pPy5bMF0/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gcmVzaXplZEVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAgIGlmICghY29sdW1uV2lkdGggfHwgIXJlc2l6ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlmZlggPCAwICYmIGNvbHVtbldpZHRoICsgZGlmZlggPCBUQUJMRV9DT0xVTU5fTUlOX1dJRFRIKSB7XG4gICAgICAgICAgICBkaWZmWCA9IFRBQkxFX0NPTFVNTl9NSU5fV0lEVEggLSBjb2x1bW5XaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5maXhlZFdpZHRoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtjb2x1bW5OYW1lLCBjZWxsc10gb2YgdGhpcy5fY29sdW1uc0NlbGxNYXAuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNlbGxzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcC5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2VsbHNbMF0ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCArICdweCdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpeGVkQ29sdW1zV2lkdGhDaGFuZ2UubmV4dCh0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluIGNhc2UgXCJfcmVzaXplZENvbHVtblwiIGlzIGZyZWV6YWJsZSwgbWFrZSBzdXJlIHRoZSBvdmVyYWxsIHdpZHRoIG9mIGZyZWV6YWJsZSBjb2x1bW5zIGRvZXMgbm90IGV4Y2VlZCB0aGUgd2lkdGggb2YgdGhlIHRhYmxlLlxuICAgICAgICAgKiBJZiBpdCBkb2VzLCBjb2x1bW5zIHdpbGwgYmUgbWFkZSB1bmZyb3plbi5cbiAgICAgICAgICovXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGRpZmZYID4gMCAmJlxuICAgICAgICAgICAgKHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVDb2x1bW5zLmhhcyh0aGlzLl9yZXNpemVkQ29sdW1uKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVFbmRDb2x1bW5zPy5oYXModGhpcy5fcmVzaXplZENvbHVtbikpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbGV0IGFjdHVhbFdpZHRoID0gdGhpcy5nZXRQcmV2Q29sdW1uc1dpZHRoKHRoaXMuX3Jlc2l6ZWRDb2x1bW4pICsgY29sdW1uV2lkdGg7XG4gICAgICAgICAgICBpZiAodGhpcy5fdGFibGVSZWYuX2ZyZWV6YWJsZUVuZENvbHVtbnM/Lmhhcyh0aGlzLl9yZXNpemVkQ29sdW1uKSkge1xuICAgICAgICAgICAgICAgIGFjdHVhbFdpZHRoID0gdGhpcy5nZXROZXh0Q29sdW1uc1dpZHRoKHRoaXMuX3Jlc2l6ZWRDb2x1bW4pICsgY29sdW1uV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXdXaWR0aCA9IGFjdHVhbFdpZHRoICsgZGlmZlg7XG4gICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IHRoaXMuX3RhYmxlUmVmLmdldE1heEFsbG93ZWRGcmVlemFibGVDb2x1bW5zV2lkdGgoKTtcbiAgICAgICAgICAgIGlmIChuZXdXaWR0aCA+PSBtYXhXaWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJlZi51bmZyZWV6ZShjb2x1bW4udG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVkV2lkdGggPSBjb2x1bW5XaWR0aCArIGRpZmZYO1xuICAgICAgICB0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcC5zZXQodGhpcy5fcmVzaXplZENvbHVtbiwgdXBkYXRlZFdpZHRoICsgJ3B4Jyk7XG4gICAgICAgIHRoaXMuZml4ZWRDb2x1bXNXaWR0aENoYW5nZS5uZXh0KHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwKTtcbiAgICAgICAgdGhpcy51cGRhdGVGcm96ZW5Db2x1bW5zV2lkdGhBZnRlclJlc2l6ZSh0aGlzLl9yZXNpemVkQ29sdW1uLCBkaWZmWCk7XG5cbiAgICAgICAgY29uc3QgY29tcHV0ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyZXNpemVkRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHBhZGRpbmcgPSBwYXJzZUludChjb21wdXRlZC5wYWRkaW5nTGVmdCwgMTApICsgcGFyc2VJbnQoY29tcHV0ZWQucGFkZGluZ1JpZ2h0LCAxMCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUhlYWRlck92ZXJmbG93U3RhdGUodXBkYXRlZFdpZHRoIC0gcGFkZGluZyk7XG4gICAgICAgIHRoaXMuX21hcmtGb3JDaGVjay5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSBjb2x1bW4gcmVzaXplciBwb3NpdGlvbi4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVSZXNpemVyUG9zaXRpb25Pbk1vdXNlTW92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzaXplck1vdmVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZW1vdmUnKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xpZW50U3RhcnRYID0gdGhpcy5fY2xpZW50U3RhcnRYID8/IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlmZlggPSB0aGlzLl9ydGwgPyBjbGllbnRTdGFydFggLSBldmVudC5jbGllbnRYIDogZXZlbnQuY2xpZW50WCAtIGNsaWVudFN0YXJ0WDtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZXJQb3NpdGlvbiA9ICh0aGlzLl9zdGFydFggPz8gMCkgKyBkaWZmWDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2submV4dCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGhlYWRlciB0ZXh0IGxlbmd0aCBnb2VzIG92ZXIgdGhlIGNvbHVtbiB3aWR0aC4gSW4gc3VjaCBjYXNlIGFwcGxpZXMgdGV4dCB0cnVuY2F0aW9uIHdpdGhcbiAgICAgKiBlbGxpcHNpcyBhbmQgbWFrZSBzdXJlIHdlIGFsc28gc2hvdyBhIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUhlYWRlck92ZXJmbG93U3RhdGUodXBkYXRlZFdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2NvbHVtbnNDZWxsTWFwXG4gICAgICAgICAgICAuZ2V0KHRoaXMuX3Jlc2l6ZWRDb2x1bW4pXG4gICAgICAgICAgICA/LmZpbmQoKGMpID0+IGM/Lm5hdGl2ZUVsZW1lbnQudGFnTmFtZSA9PT0gJ1RIJyk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW4gPSB0aGlzLl90YWJsZVJlZi5nZXRWaXNpYmxlVGFibGVDb2x1bW5zKCkuZmluZCgoYykgPT4gYy5uYW1lID09PSB0aGlzLl9yZXNpemVkQ29sdW1uKTtcbiAgICAgICAgY29uc3QgaGVhZGVyVGV4dEVsZW0gPSBlbGVtZW50Py5xdWVyeVNlbGVjdG9yKGAjJHt0aGlzLl90YWJsZVJlZi5pZH0taGVhZGVyLWNlbGwtJHt0aGlzLl9yZXNpemVkQ29sdW1ufWApO1xuXG4gICAgICAgIGlmICghaGVhZGVyVGV4dEVsZW0gfHwgIXZpc2libGVDb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2aXNpYmxlQ29sdW1uLmhlYWRlck92ZXJmbG93cyA9IGhlYWRlclRleHRFbGVtLnNjcm9sbFdpZHRoID4gdXBkYXRlZFdpZHRoO1xuICAgIH1cbn1cbiJdfQ==