ontimize-web-ngx 15.0.3 → 15.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +3 -3
  2. package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +3 -3
  3. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +15 -13
  4. package/esm2020/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.mjs +3 -3
  5. package/esm2020/lib/components/bar-menu/o-bar-menu.component.mjs +10 -1
  6. package/esm2020/lib/components/button/o-button.component.mjs +27 -11
  7. package/esm2020/lib/components/form/index.mjs +2 -1
  8. package/esm2020/lib/components/form/o-form-tokens.mjs +3 -0
  9. package/esm2020/lib/components/form/o-form.component.mjs +43 -16
  10. package/esm2020/lib/components/grid/o-grid.component.mjs +7 -12
  11. package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +4 -1
  12. package/esm2020/lib/components/input/combo/o-combo.component.mjs +10 -3
  13. package/esm2020/lib/components/input/date-range/o-daterange-picker.component.mjs +6 -5
  14. package/esm2020/lib/components/list/o-list.component.mjs +8 -13
  15. package/esm2020/lib/components/list/renderers/o-list-item-text-renderer.class.mjs +13 -4
  16. package/esm2020/lib/components/o-service-base-component.class.mjs +12 -6
  17. package/esm2020/lib/components/o-service-component.class.mjs +64 -1
  18. package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +2 -2
  19. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +2 -4
  20. package/esm2020/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.mjs +18 -10
  21. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +8 -7
  22. package/esm2020/lib/components/table/extensions/sort/o-mat-sort.mjs +2 -4
  23. package/esm2020/lib/components/table/o-table.component.mjs +28 -11
  24. package/esm2020/lib/components/tree/o-tree.component.mjs +22 -13
  25. package/esm2020/lib/interfaces/app-menu.interface.mjs +1 -1
  26. package/esm2020/lib/interfaces/service-data-component.interface.mjs +1 -1
  27. package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +1 -1
  28. package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.component.mjs +32 -16
  29. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +17 -1
  30. package/esm2020/lib/services/app-menu.service.mjs +36 -2
  31. package/esm2020/lib/services/o-auth.service.mjs +7 -1
  32. package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +34 -2
  33. package/esm2020/lib/services/permissions/permissions.service.mjs +40 -6
  34. package/esm2020/lib/types/form/index.mjs +2 -0
  35. package/esm2020/lib/types/form/o-form-global-config.type.mjs +2 -0
  36. package/esm2020/lib/types/index.mjs +3 -1
  37. package/esm2020/lib/types/o-component-permissions-by-route.type.mjs +2 -0
  38. package/esm2020/lib/types/o-form-permissions.type.mjs +1 -1
  39. package/esm2020/lib/types/o-global-config.type.mjs +3 -0
  40. package/esm2020/lib/types/o-grid-permissions.type.mjs +2 -0
  41. package/esm2020/lib/types/o-list-permissions.type.mjs +2 -0
  42. package/esm2020/lib/types/o-service-base-permissions.type.mjs +2 -0
  43. package/esm2020/lib/types/o-tree-permissions.type.mjs +2 -0
  44. package/esm2020/lib/types/table/o-table-global-config.type.mjs +1 -1
  45. package/esm2020/lib/types/table/o-table-permissions.type.mjs +1 -1
  46. package/esm2020/lib/util/codes.mjs +9 -1
  47. package/esm2020/lib/util/util.mjs +16 -1
  48. package/fesm2015/ontimize-web-ngx.mjs +1835 -1522
  49. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  50. package/fesm2020/ontimize-web-ngx.mjs +1834 -1522
  51. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  52. package/lib/components/app-sidenav/o-app-sidenav.component.d.ts +4 -4
  53. package/lib/components/bar-menu/o-bar-menu.component.d.ts +4 -0
  54. package/lib/components/button/o-button.component.d.ts +11 -2
  55. package/lib/components/form/index.d.ts +1 -0
  56. package/lib/components/form/o-form-tokens.d.ts +3 -0
  57. package/lib/components/form/o-form.component.d.ts +11 -4
  58. package/lib/components/grid/o-grid.component.d.ts +5 -4
  59. package/lib/components/input/combo/combo-search/o-combo-search.component.d.ts +1 -0
  60. package/lib/components/input/combo/o-combo.component.d.ts +2 -0
  61. package/lib/components/input/date-range/o-daterange-picker.component.d.ts +1 -0
  62. package/lib/components/list/o-list.component.d.ts +5 -4
  63. package/lib/components/list/renderers/o-list-item-text-renderer.class.d.ts +4 -1
  64. package/lib/components/o-service-base-component.class.d.ts +2 -0
  65. package/lib/components/o-service-component.class.d.ts +11 -0
  66. package/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.d.ts +3 -3
  67. package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -1
  68. package/lib/components/table/o-table.component.d.ts +3 -3
  69. package/lib/components/tree/o-tree.component.d.ts +6 -0
  70. package/lib/interfaces/app-menu.interface.d.ts +2 -0
  71. package/lib/interfaces/service-data-component.interface.d.ts +1 -0
  72. package/lib/layouts/card-menu-layout/o-card-menu-layout.component.d.ts +10 -2
  73. package/lib/layouts/form-layout/o-form-layout-manager.component.d.ts +1 -0
  74. package/lib/services/app-menu.service.d.ts +7 -1
  75. package/lib/services/o-auth.service.d.ts +1 -0
  76. package/lib/services/ontimize-export-data-base-provider.service.d.ts +1 -0
  77. package/lib/services/permissions/permissions.service.d.ts +14 -3
  78. package/lib/types/form/index.d.ts +1 -0
  79. package/lib/types/form/o-form-global-config.type.d.ts +3 -0
  80. package/lib/types/index.d.ts +2 -0
  81. package/lib/types/o-component-permissions-by-route.type.d.ts +5 -0
  82. package/lib/types/o-form-permissions.type.d.ts +2 -7
  83. package/lib/types/o-global-config.type.d.ts +5 -0
  84. package/lib/types/o-grid-permissions.type.d.ts +2 -0
  85. package/lib/types/o-list-permissions.type.d.ts +2 -0
  86. package/lib/types/o-service-base-permissions.type.d.ts +7 -0
  87. package/lib/types/o-tree-permissions.type.d.ts +2 -0
  88. package/lib/types/table/o-table-global-config.type.d.ts +5 -0
  89. package/lib/types/table/o-table-permissions.type.d.ts +2 -4
  90. package/lib/util/codes.d.ts +8 -1
  91. package/lib/util/util.d.ts +2 -0
  92. package/ontimize.scss +35 -34
  93. package/package.json +1 -1
  94. package/theme.scss +106 -73
  95. package/theming/ontimize-style.scss +19 -37
@@ -252,9 +252,7 @@ export class OTableFilterByColumnDataDialogComponent {
252
252
  let propertyA = '';
253
253
  let propertyB = '';
254
254
  [propertyA, propertyB] = [a['value'], b['value']];
255
- const valueA = typeof propertyA === 'undefined' ? '' : propertyA === '' ? propertyA : isNaN(+propertyA) ? propertyA.toString().trim().toLowerCase() : +propertyA;
256
- const valueB = typeof propertyB === 'undefined' ? '' : propertyB === '' ? propertyB : isNaN(+propertyB) ? propertyB.toString().trim().toLowerCase() : +propertyB;
257
- return (valueA <= valueB ? -1 : 1) * (this.activeSortDirection === 'asc' ? 1 : -1);
255
+ return Util.sortFunction(propertyA, propertyB, this.activeSortDirection);
258
256
  }
259
257
  onSlideChange(e) {
260
258
  this.isCustomFilterSubject.next(e.checked);
@@ -326,4 +324,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
326
324
  type: ViewChild,
327
325
  args: ['filterValueList']
328
326
  }] } });
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2ZpbHRlci1ieS1jb2x1bW4vby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2ZpbHRlci1ieS1jb2x1bW4vby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sd0JBQXdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSx5QkFBeUIsRUFBc0IsTUFBTSx1REFBdUQsQ0FBQztBQUN0SCxPQUFPLEVBRUwsK0JBQStCLEVBQ2hDLE1BQU0sK0RBQStELENBQUM7QUFD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Q3JCLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2pDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRVMsMEJBQTBCO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6SSxDQUFDOztxSUE1VVUsdUNBQXVDLDhDQWlDeEMsZUFBZTt5SEFqQ2QsdUNBQXVDLHdWQ3hDcEQsd29MQXlHQTs0RkRqRWEsdUNBQXVDO2tCQVZuRCxTQUFTOytCQUNFLHNDQUFzQyxpQkFHakMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixtQ0FBbUMsRUFBRSxNQUFNO3FCQUM1Qzs7MEJBbUNFLE1BQU07MkJBQUMsZUFBZTs0Q0FOSixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ1csZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdCwgTWF0U2VsZWN0aW9uTGlzdENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IsIE9Db2x1bW5WYWx1ZUZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL3RhYmxlL28tY29sdW1uLXZhbHVlLWZpbHRlci50eXBlJztcbmltcG9ydCB7XG4gIFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhLFxuICBUYWJsZUZpbHRlckJ5Q29sdW1uRGlhbG9nUmVzdWx0XG59IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL3RhYmxlL28tdGFibGUtZmlsdGVyLWJ5LWNvbHVtbi1kYXRhLnR5cGUnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi8uLi9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT0ZpbHRlckNvbHVtbiB9IGZyb20gJy4uLy4uL2hlYWRlci90YWJsZS1jb2x1bW5zLWZpbHRlci9jb2x1bW5zL28tdGFibGUtY29sdW1ucy1maWx0ZXItY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuXG5jb25zdCBDVVNUT01fRklMVEVSU19PUEVSQVRPUlMgPSBbQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5MRVNTX0VRVUFMLCBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLk1PUkVfRVFVQUwsIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuQkVUV0VFTiwgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5FUVVBTF07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtZmlsdGVyLWJ5LWNvbHVtbi1kYXRhLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ28tdGFibGUtZmlsdGVyLWJ5LWNvbHVtbi1kYXRhLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1maWx0ZXItYnktY29sdW1uLWRpYWxvZ10nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBwdWJsaWMgYWNjZXB0QWN0aW9uID0gVGFibGVGaWx0ZXJCeUNvbHVtbkRpYWxvZ1Jlc3VsdC5BQ0NFUFQ7XG4gIHB1YmxpYyBjYW5jZWxBY3Rpb24gPSBUYWJsZUZpbHRlckJ5Q29sdW1uRGlhbG9nUmVzdWx0LkNBTkNFTDtcbiAgcHVibGljIGNsZWFyQWN0aW9uID0gVGFibGVGaWx0ZXJCeUNvbHVtbkRpYWxvZ1Jlc3VsdC5DTEVBUjtcblxuICBjb2x1bW46IE9Db2x1bW47XG4gIHByZWxvYWRWYWx1ZXM6IGJvb2xlYW4gPSB0cnVlO1xuICBtb2RlOiBzdHJpbmc7XG4gIHN0YXJ0VmlldzogJ21vbnRoJyB8ICd5ZWFyJyB8ICdtdWx0aS15ZWFyJyB8ICcnID0gJ21vbnRoJztcbiAgcHVibGljIG9uU29ydEZpbHRlclZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPE9GaWx0ZXJDb2x1bW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcml2YXRlIGlzQ3VzdG9tRmlsdGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0N1c3RvbUZpbHRlcjogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaXNDdXN0b21GaWx0ZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgaXNEZWZhdWx0RmlsdGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0RlZmF1bHRGaWx0ZXI6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzRGVmYXVsdEZpbHRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZmNUZXh0ID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBmY0Zyb20gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIGZjVG8gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG5cbiAgcHJvdGVjdGVkIGNvbHVtbkRhdGE6IFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhW10gPSBbXTtcbiAgcHJvdGVjdGVkIHRhYmxlRGF0YTogYW55W10gPSBbXTtcblxuICBwcml2YXRlIGxpc3REYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFbXT4oW10pO1xuICBwcm90ZWN0ZWQgX2xpc3REYXRhOiBPYnNlcnZhYmxlPFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhW10+ID0gdGhpcy5saXN0RGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsdGVyJykgZmlsdGVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdmaWx0ZXJWYWx1ZUxpc3QnKSBmaWx0ZXJWYWx1ZUxpc3Q6IE1hdFNlbGVjdGlvbkxpc3Q7XG4gIHB1YmxpYyBhY3RpdmVTb3J0RGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyB8ICcnID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE9UYWJsZUZpbHRlckJ5Q29sdW1uRGF0YURpYWxvZ0NvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGRhdGE6IGFueVxuICApIHtcbiAgICBpZiAoZGF0YS5jb2x1bW4pIHtcbiAgICAgIHRoaXMuY29sdW1uID0gZGF0YS5jb2x1bW47XG4gICAgfVxuXG4gICAgaWYgKGRhdGEubW9kZSkge1xuICAgICAgdGhpcy5pc0RlZmF1bHRGaWx0ZXJTdWJqZWN0Lm5leHQoZGF0YS5tb2RlID09PSAnZGVmYXVsdCcpO1xuICAgICAgdGhpcy5pc0N1c3RvbUZpbHRlclN1YmplY3QubmV4dChkYXRhLm1vZGUgPT09ICdjdXN0b20nKTtcbiAgICAgIHRoaXMubW9kZSA9IGRhdGEubW9kZTtcbiAgICB9XG5cbiAgICBsZXQgcHJldmlvdXNGaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlciA9IGRhdGEucHJldmlvdXNGaWx0ZXIgfHwge1xuICAgICAgYXR0cjogdW5kZWZpbmVkLFxuICAgICAgb3BlcmF0b3I6IHVuZGVmaW5lZCxcbiAgICAgIHJvd1ZhbHVlOiB1bmRlZmluZWQsXG4gICAgICB2YWx1ZXM6IHVuZGVmaW5lZCxcbiAgICAgIGF2YWlsYWJsZVZhbHVlczogdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHByZXZpb3VzRmlsdGVyLm9wZXJhdG9yKSkge1xuICAgICAgdGhpcy5pc0N1c3RvbUZpbHRlclN1YmplY3QubmV4dChDVVNUT01fRklMVEVSU19PUEVSQVRPUlMuaW5kZXhPZihwcmV2aW91c0ZpbHRlci5vcGVyYXRvcikgIT09IC0xKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eSgncHJlbG9hZFZhbHVlcycpKSB7XG4gICAgICB0aGlzLnByZWxvYWRWYWx1ZXMgPSBkYXRhLnByZWxvYWRWYWx1ZXM7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuYWN0aXZlU29ydERpcmVjdGlvbikge1xuICAgICAgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uID0gZGF0YS5hY3RpdmVTb3J0RGlyZWN0aW9uO1xuICAgIH1cblxuICAgIGlmIChkYXRhLnN0YXJ0Vmlldykge1xuICAgICAgdGhpcy5zdGFydFZpZXcgPSBkYXRhLnN0YXJ0VmlldztcbiAgICB9XG5cbiAgICBpZiAoZGF0YS50YWJsZURhdGEgJiYgQXJyYXkuaXNBcnJheShkYXRhLnRhYmxlRGF0YSkpIHtcbiAgICAgIHRoaXMudGFibGVEYXRhID0gZGF0YS50YWJsZURhdGE7XG4gICAgICB0aGlzLmdldERpc3RpbmN0VmFsdWVzKHByZXZpb3VzRmlsdGVyKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUN1c3RvbUZpbHRlclZhbHVlcyhwcmV2aW91c0ZpbHRlcik7XG4gICAgICB0aGlzLmluaXRpYWxpemVEYXRhTGlzdChwcmV2aW91c0ZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlckV2ZW50KCk7XG4gIH1cblxuICBnZXQgbGlzdERhdGEoKTogT2JzZXJ2YWJsZTxUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3REYXRhO1xuICB9XG5cbiAgc2V0IGxpc3REYXRhKGFyZzogT2JzZXJ2YWJsZTxUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdPikge1xuICAgIHRoaXMuX2xpc3REYXRhID0gYXJnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVEYXRhTGlzdChmaWx0ZXI/OiBPQ29sdW1uVmFsdWVGaWx0ZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVsb2FkVmFsdWVzIHx8IChmaWx0ZXIgJiYgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLklOKSkge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9PT0gQ29kZXMuQVNDX1NPUlQgfHwgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uID09PSBDb2Rlcy5ERVNDX1NPUlQpIHtcbiAgICAgICAgdGhpcy5zb3J0RGF0YSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dCh0aGlzLmNvbHVtbkRhdGEuc2xpY2UoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVGaWx0ZXJFdmVudCgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgIGZyb21FdmVudCh0aGlzLmZpbHRlci5uYXRpdmVFbGVtZW50LCAna2V5dXAnKVxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTUwKSlcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgbGV0IGZpbHRlclZhbHVlOiBzdHJpbmcgPSB0aGlzLmZpbHRlci5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgIGZpbHRlclZhbHVlID0gVXRpbC5ub3JtYWxpemVTdHJpbmcoZmlsdGVyVmFsdWUpO1xuICAgICAgICAgIGlmIChmaWx0ZXJWYWx1ZS5pbmRleE9mKCcqJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhU3ViamVjdC5uZXh0KHRoaXMuY29sdW1uRGF0YS5maWx0ZXIoaXRlbSA9PiBuZXcgUmVnRXhwKCdeJyArIFV0aWwubm9ybWFsaXplU3RyaW5nKGZpbHRlclZhbHVlKS5zcGxpdCgnKicpLmpvaW4oJy4qJykgKyAnJCcpLnRlc3QoVXRpbC5ub3JtYWxpemVTdHJpbmcoaXRlbS5yZW5kZXJlZFZhbHVlKSkpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dCh0aGlzLmNvbHVtbkRhdGEuZmlsdGVyKGl0ZW0gPT4gKFV0aWwubm9ybWFsaXplU3RyaW5nKGl0ZW0ucmVuZGVyZWRWYWx1ZSkuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgIT09IC0xKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVDdXN0b21GaWx0ZXJWYWx1ZXMoZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkVRVUFMOlxuICAgICAgICBpZiAodGhpcy5pc1RleHRUeXBlKCkpIHtcbiAgICAgICAgICB0aGlzLmZjVGV4dC5zZXRWYWx1ZShmaWx0ZXIudmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkJFVFdFRU46XG4gICAgICAgIHRoaXMuZmNGcm9tLnNldFZhbHVlKHRoaXMuaXNEYXRlVHlwZSgpID8gbmV3IERhdGUoZmlsdGVyLnZhbHVlc1swXSkgOiBmaWx0ZXIudmFsdWVzWzBdKTtcbiAgICAgICAgdGhpcy5mY1RvLnNldFZhbHVlKHRoaXMuaXNEYXRlVHlwZSgpID8gbmV3IERhdGUoZmlsdGVyLnZhbHVlc1sxXSkgOiBmaWx0ZXIudmFsdWVzWzFdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGZpbHRlci5vcGVyYXRvciA9PT0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5NT1JFX0VRVUFMOlxuICAgICAgICB0aGlzLmZjRnJvbS5zZXRWYWx1ZSh0aGlzLmlzRGF0ZVR5cGUoKSA/IG5ldyBEYXRlKGZpbHRlci52YWx1ZXMpIDogZmlsdGVyLnZhbHVlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBmaWx0ZXIub3BlcmF0b3IgPT09IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTEVTU19FUVVBTDpcbiAgICAgICAgdGhpcy5mY1RvLnNldFZhbHVlKHRoaXMuaXNEYXRlVHlwZSgpID8gbmV3IERhdGUoZmlsdGVyLnZhbHVlcykgOiBmaWx0ZXIudmFsdWVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRWYWx1ZXMoKTogVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVMaXN0ID8gdGhpcy5maWx0ZXJWYWx1ZUxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLm1hcChzZWxlY3RlZCA9PiBzZWxlY3RlZC52YWx1ZSkgOiBbXTtcbiAgfVxuXG4gIGFyZUFsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gdGhpcy5jb2x1bW5EYXRhLmxlbmd0aDtcbiAgfVxuXG4gIGlzSW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXM7XG4gICAgcmV0dXJuIHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoICE9PSB0aGlzLmNvbHVtbkRhdGEubGVuZ3RoO1xuICB9XG5cbiAgb25TZWxlY3QoZXZlbnQ6IE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UpIHtcbiAgICBldmVudC5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi52YWx1ZS5zZWxlY3RlZCA9IG9wdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICBvblNlbGVjdEFsbENoYW5nZShldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICBpZiAoZXZlbnQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUxpc3Quc2VsZWN0QWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVMaXN0LmRlc2VsZWN0QWxsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldERpc3RpbmN0VmFsdWVzKGZpbHRlcjogT0NvbHVtblZhbHVlRmlsdGVyKTogdm9pZCB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGZpbHRlci5hdmFpbGFibGVWYWx1ZXMpKSB7XG4gICAgICB0aGlzLmNvbHVtbkRhdGEgPSBmaWx0ZXIuYXZhaWxhYmxlVmFsdWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2xSZW5kZXJlZFZhbHVlcyA9IHRoaXMuZ2V0Q29sdW1uRGF0YVVzaW5nUmVuZGVyZXIoKTtcbiAgICAgIGNvbnN0IGNvbFZhbHVlczogYW55W10gPSB0aGlzLnRhYmxlRGF0YS5tYXAoZWxlbSA9PiBlbGVtW3RoaXMuY29sdW1uLmF0dHJdKTtcblxuICAgICAgY29sUmVuZGVyZWRWYWx1ZXMuZm9yRWFjaCgocmVuZGVyZWRWYWx1ZSwgaSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uRGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5yZW5kZXJlZFZhbHVlID09PSByZW5kZXJlZFZhbHVlKSkge1xuICAgICAgICAgIHRoaXMuY29sdW1uRGF0YS5wdXNoKHtcbiAgICAgICAgICAgIHJlbmRlcmVkVmFsdWU6IHJlbmRlcmVkVmFsdWUsXG4gICAgICAgICAgICB2YWx1ZTogY29sVmFsdWVzW2ldLFxuICAgICAgICAgICAgcm93VmFsdWU6IHRoaXMudGFibGVEYXRhW2ldLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IGZpbHRlci5vcGVyYXRvciA9PT0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5JTiAmJiAoZmlsdGVyLnZhbHVlcyB8fCBbXSkuaW5kZXhPZihjb2xWYWx1ZXNbaV0pICE9PSAtMSxcbiAgICAgICAgICAgIC8vIHN0b3JpbmcgdGhlIGZpcnN0IGluZGV4IHdoZXJlIHRoaXMgcmVuZGVyZWRWYWx1ZSBpcyBvYnRhaW5lZC4gSW4gdGhlIHRlbXBsYXRlIG9mIHRoaXMgY29tcG9uZW50IHRoZSBjb2x1bW4gcmVuZGVyZXIgd2lsbCBvYnRhaW4gdGhlXG4gICAgICAgICAgICAvLyByb3cgdmFsdWUgb2YgdGhpcyBpbmRleFxuICAgICAgICAgICAgdGFibGVJbmRleDogaVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRDb2x1bW5WYWx1ZXNGaWx0ZXIoKTogT0NvbHVtblZhbHVlRmlsdGVyIHtcbiAgICBjb25zdCBmaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlciA9IHtcbiAgICAgIGF0dHI6IHRoaXMuY29sdW1uLmF0dHIsXG4gICAgICBvcGVyYXRvcjogdW5kZWZpbmVkLFxuICAgICAgdmFsdWVzOiB1bmRlZmluZWQsXG4gICAgICBhdmFpbGFibGVWYWx1ZXM6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICBpZiAoIXRoaXMuaXNDdXN0b21GaWx0ZXJTdWJqZWN0LmdldFZhbHVlKCkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlcztcbiAgICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgZmlsdGVyLm9wZXJhdG9yID0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5JTjtcbiAgICAgICAgZmlsdGVyLnZhbHVlcyA9IHNlbGVjdGVkVmFsdWVzLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSk7XG4gICAgICAgIGZpbHRlci5hdmFpbGFibGVWYWx1ZXMgPSB0aGlzLmNvbHVtbkRhdGE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmZjVGV4dC52YWx1ZSkge1xuICAgICAgICBmaWx0ZXIub3BlcmF0b3IgPSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkVRVUFMO1xuICAgICAgICBmaWx0ZXIudmFsdWVzID0gdGhpcy5nZXRUeXBlZFZhbHVlKHRoaXMuZmNUZXh0KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZjRnJvbS52YWx1ZSAmJiB0aGlzLmZjVG8udmFsdWUpIHtcbiAgICAgICAgZmlsdGVyLm9wZXJhdG9yID0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5CRVRXRUVOO1xuICAgICAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLmdldFR5cGVkVmFsdWUodGhpcy5mY0Zyb20pO1xuICAgICAgICBjb25zdCB0b1ZhbHVlID0gdGhpcy5nZXRUeXBlZFZhbHVlKHRoaXMuZmNUbyk7XG4gICAgICAgIGZpbHRlci52YWx1ZXMgPSBmcm9tVmFsdWUgPD0gdG9WYWx1ZSA/IFtmcm9tVmFsdWUsIHRvVmFsdWVdIDogW3RvVmFsdWUsIGZyb21WYWx1ZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5mY0Zyb20udmFsdWUpIHtcbiAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IgPSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLk1PUkVfRVFVQUw7XG4gICAgICAgICAgZmlsdGVyLnZhbHVlcyA9IHRoaXMuZ2V0VHlwZWRWYWx1ZSh0aGlzLmZjRnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmNUby52YWx1ZSkge1xuICAgICAgICAgIGZpbHRlci5vcGVyYXRvciA9IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTEVTU19FUVVBTDtcbiAgICAgICAgICBmaWx0ZXIudmFsdWVzID0gdGhpcy5nZXRUeXBlZFZhbHVlKHRoaXMuZmNUbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGNsZWFyVmFsdWVzKCkge1xuICAgIGlmICh0aGlzLmlzVGV4dFR5cGUoKSkge1xuICAgICAgdGhpcy5mY1RleHQuc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEYXRlVHlwZSgpIHx8IHRoaXMuaXNOdW1lcmljVHlwZSgpKSB7XG4gICAgICB0aGlzLmZjRnJvbS5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5mY1RvLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja1NvcnRWYWx1ZXMoKSB7XG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2FzYyc6XG4gICAgICAgIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9ICdkZXNjJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZXNjJzpcbiAgICAgICAgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uID0gJyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLm9uU29ydEZpbHRlclZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuZ2V0RmlsdGVyQ29sdW1uKCkpO1xuICAgIHRoaXMuc29ydERhdGEoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzb3J0RGF0YSgpIHtcbiAgICBjb25zdCBzb3J0ZWREYXRhID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5jb2x1bW5EYXRhKTtcbiAgICBpZiAodGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uICE9PSAnJykge1xuICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dChzb3J0ZWREYXRhLnNvcnQodGhpcy5zb3J0RnVuY3Rpb24uYmluZCh0aGlzKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3REYXRhU3ViamVjdC5uZXh0KHNvcnRlZERhdGEpO1xuICAgIH1cblxuICB9XG5cbiAgcHJvdGVjdGVkIHNvcnRGdW5jdGlvbihhOiBhbnksIGI6IGFueSk6IG51bWJlciB7XG4gICAgbGV0IHByb3BlcnR5QTogbnVtYmVyIHwgc3RyaW5nID0gJyc7XG4gICAgbGV0IHByb3BlcnR5QjogbnVtYmVyIHwgc3RyaW5nID0gJyc7XG4gICAgW3Byb3BlcnR5QSwgcHJvcGVydHlCXSA9IFthWyd2YWx1ZSddLCBiWyd2YWx1ZSddXTtcblxuICAgIGNvbnN0IHZhbHVlQSA9IHR5cGVvZiBwcm9wZXJ0eUEgPT09ICd1bmRlZmluZWQnID8gJycgOiBwcm9wZXJ0eUEgPT09ICcnID8gcHJvcGVydHlBIDogaXNOYU4oK3Byb3BlcnR5QSkgPyBwcm9wZXJ0eUEudG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKSA6ICtwcm9wZXJ0eUE7XG4gICAgY29uc3QgdmFsdWVCID0gdHlwZW9mIHByb3BlcnR5QiA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6IHByb3BlcnR5QiA9PT0gJycgPyBwcm9wZXJ0eUIgOiBpc05hTigrcHJvcGVydHlCKSA/IHByb3BlcnR5Qi50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpIDogK3Byb3BlcnR5QjtcbiAgICByZXR1cm4gKHZhbHVlQSA8PSB2YWx1ZUIgPyAtMSA6IDEpICogKHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAxIDogLTEpO1xuICB9XG5cbiAgb25TbGlkZUNoYW5nZShlOiBNYXRTbGlkZVRvZ2dsZUNoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuaXNDdXN0b21GaWx0ZXJTdWJqZWN0Lm5leHQoZS5jaGVja2VkKTtcblxuICAgIGlmICghZS5jaGVja2VkKSB7XG4gICAgICAvLyBTZWxlY3Rpb24gbW9kZVxuICAgICAgdGhpcy5pbml0aWFsaXplRGF0YUxpc3QoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVGaWx0ZXJFdmVudCgpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG5cbiAgaXNUZXh0VHlwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNOdW1lcmljVHlwZSgpICYmICF0aGlzLmlzRGF0ZVR5cGUoKTtcbiAgfVxuXG4gIGlzTnVtZXJpY1R5cGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFsnaW50ZWdlcicsICdyZWFsJywgJ2N1cnJlbmN5J10uaW5kZXhPZih0aGlzLmNvbHVtbi50eXBlKSAhPT0gLTE7XG4gIH1cblxuICBpc0RhdGVUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAnZGF0ZScgPT09IHRoaXMuY29sdW1uLnR5cGU7XG4gIH1cblxuICBnZXRGaXhlZERpbWVuc2lvbkNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdzZWxlY3Rpb24nIHx8IHRoaXMubW9kZSA9PT0gJ2RlZmF1bHQnO1xuICB9XG5cbiAgZ2V0U29ydEJ5QWxwaGFJY29uKCkge1xuICAgIGxldCBpY29uID0gJ29udGltaXplOnNvcnRfYnlfYWxwaGEnO1xuICAgIGlmICh0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb24gIT09ICcnKSB7XG4gICAgICBpY29uICs9ICdfJyArIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIGljb247XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmlsdGVyQ29sdW1uKCk6IE9GaWx0ZXJDb2x1bW4ge1xuICAgIGxldCBvYmo6IE9GaWx0ZXJDb2x1bW4gPSB7IGF0dHI6ICcnLCBzb3J0OiAnJywgc3RhcnRWaWV3OiAnJyB9O1xuICAgIG9iai5hdHRyID0gdGhpcy5jb2x1bW4uYXR0cjtcbiAgICBvYmouc29ydCA9IHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbjtcbiAgICBvYmouc3RhcnRWaWV3ID0gdGhpcy5zdGFydFZpZXc7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdGFydGVkVmlld0RhdGVwaWNrZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydFZpZXc7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHlwZWRWYWx1ZShjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiBhbnkge1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKHRoaXMuaXNOdW1lcmljVHlwZSgpKSB7XG4gICAgICB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzRGF0ZVR5cGUoKSkge1xuICAgICAgdmFsdWUgPSBjb250cm9sLnZhbHVlLnZhbHVlT2YoKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENvbHVtbkRhdGFVc2luZ1JlbmRlcmVyKCkge1xuICAgIGNvbnN0IHVzZVJlbmRlcmVyID0gdGhpcy5jb2x1bW4ucmVuZGVyZXIgJiYgdGhpcy5jb2x1bW4ucmVuZGVyZXIuZ2V0Q2VsbERhdGE7XG4gICAgcmV0dXJuIHRoaXMudGFibGVEYXRhLm1hcCgocm93KSA9PiB1c2VSZW5kZXJlciA/IHRoaXMuY29sdW1uLnJlbmRlcmVyLmdldENlbGxEYXRhKHJvd1t0aGlzLmNvbHVtbi5hdHRyXSwgcm93KSA6IHJvd1t0aGlzLmNvbHVtbi5hdHRyXSk7XG4gIH1cbn1cbiIsIjxzcGFuIG1hdC1kaWFsb2ctdGl0bGU+e3sgJ1RBQkxFLkJVVFRPTlMuRklMVEVSX0JZX0NPTFVNTicgfCBvVHJhbnNsYXRlIH19OiB7eyBjb2x1bW4udGl0bGUgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJkaWFsb2ctbGlzdC1jb250YWluZXJcIj5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiY29udGVudC13cmFwcGVyXCIgW2NsYXNzLmNvbnRlbnQtd3JhcHBlci1maXhlZC1kaW1lbnNpb25dPVwiZ2V0Rml4ZWREaW1lbnNpb25DbGFzcygpXCI+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI2N1c3RvbUZpbHRlclNsaWRlIChjaGFuZ2UpPVwib25TbGlkZUNoYW5nZSgkZXZlbnQpXCIgW2NoZWNrZWRdPVwiKGlzQ3VzdG9tRmlsdGVyIHwgYXN5bmMpXCIgKm5nSWY9XCJpc0RlZmF1bHRGaWx0ZXIgfCBhc3luY1wiPlxuICAgICAge3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uQ1VTVE9NX0ZJTFRFUicgfCBvVHJhbnNsYXRlIH19XG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxkaXYgZnhGaWxsICpuZ0lmPVwiIShpc0N1c3RvbUZpbHRlciB8IGFzeW5jKTtlbHNlIGN1c3RvbUZpbHRlclRlbXBsYXRlXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImhpbnRlZFwiPlxuICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4IHN2Z0ljb249XCJvbnRpbWl6ZTpzZWFyY2hcIj48L21hdC1pY29uPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgI2ZpbHRlciBwbGFjZWhvbGRlcj1cInt7ICdUQUJMRS5GSUxURVInIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgICAgICA8bWF0LWhpbnQ+e3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uSElOVF9TVEFSJyB8IG9UcmFuc2xhdGUgfX08L21hdC1oaW50PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxkaXYgKm5nSWY9XCIobGlzdERhdGEgfCBhc3luYykubGVuZ3RoID4gMDsgZWxzZSBlbXB0eUxpc3REYXRhXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBzdGFydFwiPlxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIm9uU2VsZWN0QWxsQ2hhbmdlKCRldmVudClcIiBbY2hlY2tlZF09XCJhcmVBbGxTZWxlY3RlZCgpXCIgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlKClcIiBbZGlzYWJsZWRdPVwiIWxpc3REYXRhXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveFwiPlxuICAgICAgICAgICAge3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uQ0hFQ0tfQUxMJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFsaXN0RGF0YVwiIGNsYXNzPVwiY29sdW1uLWZpbHRlci1lbXB0eS1saXN0XCI+XG4gICAgICAgICAgICB7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5MSVNUX0VNUFRZX0ZJTFRFUicgfCBvVHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNsaWNrU29ydFZhbHVlcygpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cImdldFNvcnRCeUFscGhhSWNvbigpXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eUxpc3REYXRhPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvbHVtbi1maWx0ZXItZW1wdHktbGlzdFwiPlxuICAgICAgICAgIHt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLkxJU1RfRU1QVFknIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bWF0LXNlbGVjdGlvbi1saXN0ICpuZ0lmPVwicHJlbG9hZFZhbHVlcyB8fCBsaXN0RGF0YVwiICNmaWx0ZXJWYWx1ZUxpc3QgY2xhc3M9XCJzZWxlY3QtdmFsdWVzLWxpc3RcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0KCRldmVudClcIj5cbiAgICAgICAgPG1hdC1saXN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgcmVjb3JkIG9mIChsaXN0RGF0YSB8IGFzeW5jKTsgbGV0IGkgPSBpbmRleFwiIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIiBbc2VsZWN0ZWRdPVwicmVjb3JkLnNlbGVjdGVkXCJcbiAgICAgICAgICBbdmFsdWVdPVwicmVjb3JkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4ucmVuZGVyZXJcIj5cbiAgICAgICAgICAgIHt7IHJlY29yZC52YWx1ZSB8fCAoJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uRU1QVFlfVkFMVUUnIHwgb1RyYW5zbGF0ZSkgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjb2x1bW4ucmVuZGVyZXJcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4ucmVuZGVyZXIudGVtcGxhdGVyZWZcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY2VsbHZhbHVlOiByZWNvcmQudmFsdWUsIHJvd3ZhbHVlOiByZWNvcmQucm93VmFsdWUgfVwiPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImNsZWFyQWN0aW9uXCIgY2xhc3M9XCJvLWJ1dHRvbi1pbmZvXCI+XG4gICAge3sgJ1RBQkxFLkJVVFRPTlMuRklMVEVSX0NMRUFSJyB8IG9UcmFuc2xhdGUgfX0gPC9idXR0b24+XG4gIDxzcGFuIGFsaWduPVwiZW5kXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImNhbmNlbEFjdGlvblwiIGNsYXNzPVwiby1idXR0b24tZGVmYXVsdCBjYW5jZWxcIj5cbiAgICAgIHt7ICdDQU5DRUwnIHwgb1RyYW5zbGF0ZSB9fSA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiYWNjZXB0QWN0aW9uXCIgY2xhc3M9XCJvLWJ1dHRvbi1wcmltYXJ5XCI+XG4gICAgICB7eyAnQUNDRVBUJyB8IG9UcmFuc2xhdGUgfX0gPC9idXR0b24+XG4gIDwvc3Bhbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuXG48IS0tIFRFTVBMQVRFIENVU1RPTSBGSUxURVItLT5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tRmlsdGVyVGVtcGxhdGU+XG4gIDxkaXYgKm5nSWY9XCJpc1RleHRUeXBlKClcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4IGNsYXNzPVwiaGludGVkXCI+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgI2ZpbHRlclRleHQgW2Zvcm1Db250cm9sXT1cImZjVGV4dFwiIHBsYWNlaG9sZGVyPVwie3sgJ1RBQkxFLkZJTFRFUicgfCBvVHJhbnNsYXRlIH19XCI+XG4gICAgICA8bWF0LWhpbnQ+e3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uSElOVF9TVEFSJyB8IG9UcmFuc2xhdGUgfX08L21hdC1oaW50PlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJWYWx1ZXMoKVwiPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaXNOdW1lcmljVHlwZSgpXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIiBmeExheW91dEdhcD1cIjEycHhcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImZjRnJvbVwiIHBsYWNlaG9sZGVyPVwie3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uRlJPTScgfCBvVHJhbnNsYXRlIH19XCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImZjVG9cIiBwbGFjZWhvbGRlcj1cInt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLlRPJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJWYWx1ZXMoKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpjbG9zZVwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaXNEYXRlVHlwZSgpXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIiBmeExheW91dEdhcD1cIjEycHhcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlckZyb21cIiBbbWF4XT1cImZjVG8udmFsdWVcIiBbZm9ybUNvbnRyb2xdPVwiZmNGcm9tXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5GUk9NJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZXBpY2tlckZyb21cIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdERhdGVwaWNrZXJUb2dnbGVJY29uPnRvZGF5PC9tYXQtaWNvbj5cbiAgICAgIDwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPG1hdC1kYXRlcGlja2VyICNkYXRlcGlja2VyRnJvbSBbc3RhcnRWaWV3XT1cImdldFN0YXJ0ZWRWaWV3RGF0ZXBpY2tlcigpXCI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlcGlja2VyVG9cIiBbbWluXT1cImZjRnJvbS52YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJmY1RvXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5UTycgfCBvVHJhbnNsYXRlIH19XCI+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImRhdGVwaWNrZXJUb1wiPlxuICAgICAgICA8bWF0LWljb24gbWF0RGF0ZXBpY2tlclRvZ2dsZUljb24+dG9kYXk8L21hdC1pY29uPlxuICAgICAgPC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVwaWNrZXJUbyBbc3RhcnRWaWV3XT1cImdldFN0YXJ0ZWRWaWV3RGF0ZXBpY2tlcigpXCI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNsZWFyVmFsdWVzKClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2ZpbHRlci1ieS1jb2x1bW4vby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2ZpbHRlci1ieS1jb2x1bW4vby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sd0JBQXdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSx5QkFBeUIsRUFBc0IsTUFBTSx1REFBdUQsQ0FBQztBQUN0SCxPQUFPLEVBRUwsK0JBQStCLEVBQ2hDLE1BQU0sK0RBQStELENBQUM7QUFD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QU0sUUFDekM7d0JBQ0osbUNBQW1DLEVBQUUsTUFBTTtxQkFDNUM7OzBCQW1DRSxNQUFNOzJCQUFDLGVBQWU7NENBTkosTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNXLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNlbGVjdGlvbkxpc3QsIE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLCBPQ29sdW1uVmFsdWVGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy90YWJsZS9vLWNvbHVtbi12YWx1ZS1maWx0ZXIudHlwZSc7XG5pbXBvcnQge1xuICBUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YSxcbiAgVGFibGVGaWx0ZXJCeUNvbHVtbkRpYWxvZ1Jlc3VsdFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy90YWJsZS9vLXRhYmxlLWZpbHRlci1ieS1jb2x1bW4tZGF0YS50eXBlJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vY29sdW1uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9GaWx0ZXJDb2x1bW4gfSBmcm9tICcuLi8uLi9oZWFkZXIvdGFibGUtY29sdW1ucy1maWx0ZXIvY29sdW1ucy9vLXRhYmxlLWNvbHVtbnMtZmlsdGVyLWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2NvZGVzJztcblxuY29uc3QgQ1VTVE9NX0ZJTFRFUlNfT1BFUkFUT1JTID0gW0NvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTEVTU19FUVVBTCwgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5NT1JFX0VRVUFMLCBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkJFVFdFRU4sIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuRVFVQUxdO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLWZpbHRlci1ieS1jb2x1bW4tZGF0YS1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJ28tdGFibGUtZmlsdGVyLWJ5LWNvbHVtbi1kYXRhLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydvLXRhYmxlLWZpbHRlci1ieS1jb2x1bW4tZGF0YS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tZmlsdGVyLWJ5LWNvbHVtbi1kaWFsb2ddJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlRmlsdGVyQnlDb2x1bW5EYXRhRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHVibGljIGFjY2VwdEFjdGlvbiA9IFRhYmxlRmlsdGVyQnlDb2x1bW5EaWFsb2dSZXN1bHQuQUNDRVBUO1xuICBwdWJsaWMgY2FuY2VsQWN0aW9uID0gVGFibGVGaWx0ZXJCeUNvbHVtbkRpYWxvZ1Jlc3VsdC5DQU5DRUw7XG4gIHB1YmxpYyBjbGVhckFjdGlvbiA9IFRhYmxlRmlsdGVyQnlDb2x1bW5EaWFsb2dSZXN1bHQuQ0xFQVI7XG5cbiAgY29sdW1uOiBPQ29sdW1uO1xuICBwcmVsb2FkVmFsdWVzOiBib29sZWFuID0gdHJ1ZTtcbiAgbW9kZTogc3RyaW5nO1xuICBzdGFydFZpZXc6ICdtb250aCcgfCAneWVhcicgfCAnbXVsdGkteWVhcicgfCAnJyA9ICdtb250aCc7XG4gIHB1YmxpYyBvblNvcnRGaWx0ZXJWYWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxPRmlsdGVyQ29sdW1uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBpc0N1c3RvbUZpbHRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNDdXN0b21GaWx0ZXI6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzQ3VzdG9tRmlsdGVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGlzRGVmYXVsdEZpbHRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNEZWZhdWx0RmlsdGVyOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc0RlZmF1bHRGaWx0ZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGZjVGV4dCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgZmNGcm9tID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBmY1RvID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuXG4gIHByb3RlY3RlZCBjb2x1bW5EYXRhOiBUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdID0gW107XG4gIHByb3RlY3RlZCB0YWJsZURhdGE6IGFueVtdID0gW107XG5cbiAgcHJpdmF0ZSBsaXN0RGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhW10+KFtdKTtcbiAgcHJvdGVjdGVkIF9saXN0RGF0YTogT2JzZXJ2YWJsZTxUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdPiA9IHRoaXMubGlzdERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlcicpIGZpbHRlcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVyVmFsdWVMaXN0JykgZmlsdGVyVmFsdWVMaXN0OiBNYXRTZWxlY3Rpb25MaXN0O1xuICBwdWJsaWMgYWN0aXZlU29ydERpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgfCAnJyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxPVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFEaWFsb2dDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkYXRhOiBhbnlcbiAgKSB7XG4gICAgaWYgKGRhdGEuY29sdW1uKSB7XG4gICAgICB0aGlzLmNvbHVtbiA9IGRhdGEuY29sdW1uO1xuICAgIH1cblxuICAgIGlmIChkYXRhLm1vZGUpIHtcbiAgICAgIHRoaXMuaXNEZWZhdWx0RmlsdGVyU3ViamVjdC5uZXh0KGRhdGEubW9kZSA9PT0gJ2RlZmF1bHQnKTtcbiAgICAgIHRoaXMuaXNDdXN0b21GaWx0ZXJTdWJqZWN0Lm5leHQoZGF0YS5tb2RlID09PSAnY3VzdG9tJyk7XG4gICAgICB0aGlzLm1vZGUgPSBkYXRhLm1vZGU7XG4gICAgfVxuXG4gICAgbGV0IHByZXZpb3VzRmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIgPSBkYXRhLnByZXZpb3VzRmlsdGVyIHx8IHtcbiAgICAgIGF0dHI6IHVuZGVmaW5lZCxcbiAgICAgIG9wZXJhdG9yOiB1bmRlZmluZWQsXG4gICAgICByb3dWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgdmFsdWVzOiB1bmRlZmluZWQsXG4gICAgICBhdmFpbGFibGVWYWx1ZXM6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChwcmV2aW91c0ZpbHRlci5vcGVyYXRvcikpIHtcbiAgICAgIHRoaXMuaXNDdXN0b21GaWx0ZXJTdWJqZWN0Lm5leHQoQ1VTVE9NX0ZJTFRFUlNfT1BFUkFUT1JTLmluZGV4T2YocHJldmlvdXNGaWx0ZXIub3BlcmF0b3IpICE9PSAtMSk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoJ3ByZWxvYWRWYWx1ZXMnKSkge1xuICAgICAgdGhpcy5wcmVsb2FkVmFsdWVzID0gZGF0YS5wcmVsb2FkVmFsdWVzO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmFjdGl2ZVNvcnREaXJlY3Rpb24pIHtcbiAgICAgIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9IGRhdGEuYWN0aXZlU29ydERpcmVjdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5zdGFydFZpZXcpIHtcbiAgICAgIHRoaXMuc3RhcnRWaWV3ID0gZGF0YS5zdGFydFZpZXc7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEudGFibGVEYXRhICYmIEFycmF5LmlzQXJyYXkoZGF0YS50YWJsZURhdGEpKSB7XG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IGRhdGEudGFibGVEYXRhO1xuICAgICAgdGhpcy5nZXREaXN0aW5jdFZhbHVlcyhwcmV2aW91c0ZpbHRlcik7XG4gICAgICB0aGlzLmluaXRpYWxpemVDdXN0b21GaWx0ZXJWYWx1ZXMocHJldmlvdXNGaWx0ZXIpO1xuICAgICAgdGhpcy5pbml0aWFsaXplRGF0YUxpc3QocHJldmlvdXNGaWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVGaWx0ZXJFdmVudCgpO1xuICB9XG5cbiAgZ2V0IGxpc3REYXRhKCk6IE9ic2VydmFibGU8VGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFbXT4ge1xuICAgIHJldHVybiB0aGlzLl9saXN0RGF0YTtcbiAgfVxuXG4gIHNldCBsaXN0RGF0YShhcmc6IE9ic2VydmFibGU8VGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFbXT4pIHtcbiAgICB0aGlzLl9saXN0RGF0YSA9IGFyZztcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplRGF0YUxpc3QoZmlsdGVyPzogT0NvbHVtblZhbHVlRmlsdGVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJlbG9hZFZhbHVlcyB8fCAoZmlsdGVyICYmIGZpbHRlci5vcGVyYXRvciA9PT0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5JTikpIHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb24gPT09IENvZGVzLkFTQ19TT1JUIHx8IHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9PT0gQ29kZXMuREVTQ19TT1JUKSB7XG4gICAgICAgIHRoaXMuc29ydERhdGEoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGlzdERhdGFTdWJqZWN0Lm5leHQodGhpcy5jb2x1bW5EYXRhLnNsaWNlKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplRmlsdGVyRXZlbnQoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICBmcm9tRXZlbnQodGhpcy5maWx0ZXIubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDE1MCkpXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGxldCBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gdGhpcy5maWx0ZXIubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IFV0aWwubm9ybWFsaXplU3RyaW5nKGZpbHRlclZhbHVlKTtcbiAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUuaW5kZXhPZignKicpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dCh0aGlzLmNvbHVtbkRhdGEuZmlsdGVyKGl0ZW0gPT4gbmV3IFJlZ0V4cCgnXicgKyBVdGlsLm5vcm1hbGl6ZVN0cmluZyhmaWx0ZXJWYWx1ZSkuc3BsaXQoJyonKS5qb2luKCcuKicpICsgJyQnKS50ZXN0KFV0aWwubm9ybWFsaXplU3RyaW5nKGl0ZW0ucmVuZGVyZWRWYWx1ZSkpKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGFTdWJqZWN0Lm5leHQodGhpcy5jb2x1bW5EYXRhLmZpbHRlcihpdGVtID0+IChVdGlsLm5vcm1hbGl6ZVN0cmluZyhpdGVtLnJlbmRlcmVkVmFsdWUpLmluZGV4T2YoZmlsdGVyVmFsdWUpICE9PSAtMSkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplQ3VzdG9tRmlsdGVyVmFsdWVzKGZpbHRlcjogT0NvbHVtblZhbHVlRmlsdGVyKTogdm9pZCB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIGZpbHRlci5vcGVyYXRvciA9PT0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5FUVVBTDpcbiAgICAgICAgaWYgKHRoaXMuaXNUZXh0VHlwZSgpKSB7XG4gICAgICAgICAgdGhpcy5mY1RleHQuc2V0VmFsdWUoZmlsdGVyLnZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGZpbHRlci5vcGVyYXRvciA9PT0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5CRVRXRUVOOlxuICAgICAgICB0aGlzLmZjRnJvbS5zZXRWYWx1ZSh0aGlzLmlzRGF0ZVR5cGUoKSA/IG5ldyBEYXRlKGZpbHRlci52YWx1ZXNbMF0pIDogZmlsdGVyLnZhbHVlc1swXSk7XG4gICAgICAgIHRoaXMuZmNUby5zZXRWYWx1ZSh0aGlzLmlzRGF0ZVR5cGUoKSA/IG5ldyBEYXRlKGZpbHRlci52YWx1ZXNbMV0pIDogZmlsdGVyLnZhbHVlc1sxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBmaWx0ZXIub3BlcmF0b3IgPT09IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTU9SRV9FUVVBTDpcbiAgICAgICAgdGhpcy5mY0Zyb20uc2V0VmFsdWUodGhpcy5pc0RhdGVUeXBlKCkgPyBuZXcgRGF0ZShmaWx0ZXIudmFsdWVzKSA6IGZpbHRlci52YWx1ZXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkxFU1NfRVFVQUw6XG4gICAgICAgIHRoaXMuZmNUby5zZXRWYWx1ZSh0aGlzLmlzRGF0ZVR5cGUoKSA/IG5ldyBEYXRlKGZpbHRlci52YWx1ZXMpIDogZmlsdGVyLnZhbHVlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlbGVjdGVkVmFsdWVzKCk6IFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlclZhbHVlTGlzdCA/IHRoaXMuZmlsdGVyVmFsdWVMaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5tYXAoc2VsZWN0ZWQgPT4gc2VsZWN0ZWQudmFsdWUpIDogW107XG4gIH1cblxuICBhcmVBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IHRoaXMuY29sdW1uRGF0YS5sZW5ndGg7XG4gIH1cblxuICBpc0luZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzO1xuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPiAwICYmIHNlbGVjdGVkVmFsdWVzLmxlbmd0aCAhPT0gdGhpcy5jb2x1bW5EYXRhLmxlbmd0aDtcbiAgfVxuXG4gIG9uU2VsZWN0KGV2ZW50OiBNYXRTZWxlY3Rpb25MaXN0Q2hhbmdlKSB7XG4gICAgZXZlbnQub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiBvcHRpb24udmFsdWUuc2VsZWN0ZWQgPSBvcHRpb24uc2VsZWN0ZWQpO1xuICB9XG5cbiAgb25TZWxlY3RBbGxDaGFuZ2UoZXZlbnQ6IE1hdENoZWNrYm94Q2hhbmdlKSB7XG4gICAgaWYgKGV2ZW50LmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVMaXN0LnNlbGVjdEFsbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlclZhbHVlTGlzdC5kZXNlbGVjdEFsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREaXN0aW5jdFZhbHVlcyhmaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlcik6IHZvaWQge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChmaWx0ZXIuYXZhaWxhYmxlVmFsdWVzKSkge1xuICAgICAgdGhpcy5jb2x1bW5EYXRhID0gZmlsdGVyLmF2YWlsYWJsZVZhbHVlcztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29sUmVuZGVyZWRWYWx1ZXMgPSB0aGlzLmdldENvbHVtbkRhdGFVc2luZ1JlbmRlcmVyKCk7XG4gICAgICBjb25zdCBjb2xWYWx1ZXM6IGFueVtdID0gdGhpcy50YWJsZURhdGEubWFwKGVsZW0gPT4gZWxlbVt0aGlzLmNvbHVtbi5hdHRyXSk7XG5cbiAgICAgIGNvbFJlbmRlcmVkVmFsdWVzLmZvckVhY2goKHJlbmRlcmVkVmFsdWUsIGkpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbkRhdGEuZmluZChpdGVtID0+IGl0ZW0ucmVuZGVyZWRWYWx1ZSA9PT0gcmVuZGVyZWRWYWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLmNvbHVtbkRhdGEucHVzaCh7XG4gICAgICAgICAgICByZW5kZXJlZFZhbHVlOiByZW5kZXJlZFZhbHVlLFxuICAgICAgICAgICAgdmFsdWU6IGNvbFZhbHVlc1tpXSxcbiAgICAgICAgICAgIHJvd1ZhbHVlOiB0aGlzLnRhYmxlRGF0YVtpXSxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmaWx0ZXIub3BlcmF0b3IgPT09IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuSU4gJiYgKGZpbHRlci52YWx1ZXMgfHwgW10pLmluZGV4T2YoY29sVmFsdWVzW2ldKSAhPT0gLTEsXG4gICAgICAgICAgICAvLyBzdG9yaW5nIHRoZSBmaXJzdCBpbmRleCB3aGVyZSB0aGlzIHJlbmRlcmVkVmFsdWUgaXMgb2J0YWluZWQuIEluIHRoZSB0ZW1wbGF0ZSBvZiB0aGlzIGNvbXBvbmVudCB0aGUgY29sdW1uIHJlbmRlcmVyIHdpbGwgb2J0YWluIHRoZVxuICAgICAgICAgICAgLy8gcm93IHZhbHVlIG9mIHRoaXMgaW5kZXhcbiAgICAgICAgICAgIHRhYmxlSW5kZXg6IGlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29sdW1uVmFsdWVzRmlsdGVyKCk6IE9Db2x1bW5WYWx1ZUZpbHRlciB7XG4gICAgY29uc3QgZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIgPSB7XG4gICAgICBhdHRyOiB0aGlzLmNvbHVtbi5hdHRyLFxuICAgICAgb3BlcmF0b3I6IHVuZGVmaW5lZCxcbiAgICAgIHZhbHVlczogdW5kZWZpbmVkLFxuICAgICAgYXZhaWxhYmxlVmFsdWVzOiB1bmRlZmluZWRcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLmlzQ3VzdG9tRmlsdGVyU3ViamVjdC5nZXRWYWx1ZSgpKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXM7XG4gICAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbHRlci5vcGVyYXRvciA9IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuSU47XG4gICAgICAgIGZpbHRlci52YWx1ZXMgPSBzZWxlY3RlZFZhbHVlcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpO1xuICAgICAgICBmaWx0ZXIuYXZhaWxhYmxlVmFsdWVzID0gdGhpcy5jb2x1bW5EYXRhO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5mY1RleHQudmFsdWUpIHtcbiAgICAgICAgZmlsdGVyLm9wZXJhdG9yID0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5FUVVBTDtcbiAgICAgICAgZmlsdGVyLnZhbHVlcyA9IHRoaXMuZ2V0VHlwZWRWYWx1ZSh0aGlzLmZjVGV4dCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mY0Zyb20udmFsdWUgJiYgdGhpcy5mY1RvLnZhbHVlKSB7XG4gICAgICAgIGZpbHRlci5vcGVyYXRvciA9IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuQkVUV0VFTjtcbiAgICAgICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5nZXRUeXBlZFZhbHVlKHRoaXMuZmNGcm9tKTtcbiAgICAgICAgY29uc3QgdG9WYWx1ZSA9IHRoaXMuZ2V0VHlwZWRWYWx1ZSh0aGlzLmZjVG8pO1xuICAgICAgICBmaWx0ZXIudmFsdWVzID0gZnJvbVZhbHVlIDw9IHRvVmFsdWUgPyBbZnJvbVZhbHVlLCB0b1ZhbHVlXSA6IFt0b1ZhbHVlLCBmcm9tVmFsdWVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZmNGcm9tLnZhbHVlKSB7XG4gICAgICAgICAgZmlsdGVyLm9wZXJhdG9yID0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5NT1JFX0VRVUFMO1xuICAgICAgICAgIGZpbHRlci52YWx1ZXMgPSB0aGlzLmdldFR5cGVkVmFsdWUodGhpcy5mY0Zyb20pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZjVG8udmFsdWUpIHtcbiAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IgPSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkxFU1NfRVFVQUw7XG4gICAgICAgICAgZmlsdGVyLnZhbHVlcyA9IHRoaXMuZ2V0VHlwZWRWYWx1ZSh0aGlzLmZjVG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBjbGVhclZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5pc1RleHRUeXBlKCkpIHtcbiAgICAgIHRoaXMuZmNUZXh0LnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRGF0ZVR5cGUoKSB8fCB0aGlzLmlzTnVtZXJpY1R5cGUoKSkge1xuICAgICAgdGhpcy5mY0Zyb20uc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuZmNUby5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tTb3J0VmFsdWVzKCkge1xuICAgIHN3aXRjaCAodGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uKSB7XG4gICAgICBjYXNlICdhc2MnOlxuICAgICAgICB0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb24gPSAnZGVzYyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVzYyc6XG4gICAgICAgIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9ICcnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9ICdhc2MnO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5vblNvcnRGaWx0ZXJWYWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLmdldEZpbHRlckNvbHVtbigpKTtcbiAgICB0aGlzLnNvcnREYXRhKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc29ydERhdGEoKSB7XG4gICAgY29uc3Qgc29ydGVkRGF0YSA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuY29sdW1uRGF0YSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiAhPT0gJycpIHtcbiAgICAgIHRoaXMubGlzdERhdGFTdWJqZWN0Lm5leHQoc29ydGVkRGF0YS5zb3J0KHRoaXMuc29ydEZ1bmN0aW9uLmJpbmQodGhpcykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dChzb3J0ZWREYXRhKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBzb3J0RnVuY3Rpb24oYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICAgIGxldCBwcm9wZXJ0eUE6IG51bWJlciB8IHN0cmluZyA9ICcnO1xuICAgIGxldCBwcm9wZXJ0eUI6IG51bWJlciB8IHN0cmluZyA9ICcnO1xuICAgIFtwcm9wZXJ0eUEsIHByb3BlcnR5Ql0gPSBbYVsndmFsdWUnXSwgYlsndmFsdWUnXV07XG5cbiAgICByZXR1cm4gVXRpbC5zb3J0RnVuY3Rpb24ocHJvcGVydHlBLCBwcm9wZXJ0eUIsIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbik7XG4gIH1cblxuICBvblNsaWRlQ2hhbmdlKGU6IE1hdFNsaWRlVG9nZ2xlQ2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5pc0N1c3RvbUZpbHRlclN1YmplY3QubmV4dChlLmNoZWNrZWQpO1xuXG4gICAgaWYgKCFlLmNoZWNrZWQpIHtcbiAgICAgIC8vIFNlbGVjdGlvbiBtb2RlXG4gICAgICB0aGlzLmluaXRpYWxpemVEYXRhTGlzdCgpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlckV2ZW50KCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBpc1RleHRUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc051bWVyaWNUeXBlKCkgJiYgIXRoaXMuaXNEYXRlVHlwZSgpO1xuICB9XG5cbiAgaXNOdW1lcmljVHlwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gWydpbnRlZ2VyJywgJ3JlYWwnLCAnY3VycmVuY3knXS5pbmRleE9mKHRoaXMuY29sdW1uLnR5cGUpICE9PSAtMTtcbiAgfVxuXG4gIGlzRGF0ZVR5cGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICdkYXRlJyA9PT0gdGhpcy5jb2x1bW4udHlwZTtcbiAgfVxuXG4gIGdldEZpeGVkRGltZW5zaW9uQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3NlbGVjdGlvbicgfHwgdGhpcy5tb2RlID09PSAnZGVmYXVsdCc7XG4gIH1cblxuICBnZXRTb3J0QnlBbHBoYUljb24oKSB7XG4gICAgbGV0IGljb24gPSAnb250aW1pemU6c29ydF9ieV9hbHBoYSc7XG4gICAgaWYgKHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiAhPT0gJycpIHtcbiAgICAgIGljb24gKz0gJ18nICsgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gaWNvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWx0ZXJDb2x1bW4oKTogT0ZpbHRlckNvbHVtbiB7XG4gICAgbGV0IG9iajogT0ZpbHRlckNvbHVtbiA9IHsgYXR0cjogJycsIHNvcnQ6ICcnLCBzdGFydFZpZXc6ICcnIH07XG4gICAgb2JqLmF0dHIgPSB0aGlzLmNvbHVtbi5hdHRyO1xuICAgIG9iai5zb3J0ID0gdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uO1xuICAgIG9iai5zdGFydFZpZXcgPSB0aGlzLnN0YXJ0VmlldztcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcHVibGljIGdldFN0YXJ0ZWRWaWV3RGF0ZXBpY2tlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0VmlldztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUeXBlZFZhbHVlKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IGFueSB7XG4gICAgbGV0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAodGhpcy5pc051bWVyaWNUeXBlKCkpIHtcbiAgICAgIHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNEYXRlVHlwZSgpKSB7XG4gICAgICB2YWx1ZSA9IGNvbnRyb2wudmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29sdW1uRGF0YVVzaW5nUmVuZGVyZXIoKSB7XG4gICAgY29uc3QgdXNlUmVuZGVyZXIgPSB0aGlzLmNvbHVtbi5yZW5kZXJlciAmJiB0aGlzLmNvbHVtbi5yZW5kZXJlci5nZXRDZWxsRGF0YTtcbiAgICByZXR1cm4gdGhpcy50YWJsZURhdGEubWFwKChyb3cpID0+IHVzZVJlbmRlcmVyID8gdGhpcy5jb2x1bW4ucmVuZGVyZXIuZ2V0Q2VsbERhdGEocm93W3RoaXMuY29sdW1uLmF0dHJdLCByb3cpIDogcm93W3RoaXMuY29sdW1uLmF0dHJdKTtcbiAgfVxufVxuIiwiPHNwYW4gbWF0LWRpYWxvZy10aXRsZT57eyAnVEFCTEUuQlVUVE9OUy5GSUxURVJfQllfQ09MVU1OJyB8IG9UcmFuc2xhdGUgfX06IHt7IGNvbHVtbi50aXRsZSB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImRpYWxvZy1saXN0LWNvbnRhaW5lclwiPlxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJjb250ZW50LXdyYXBwZXJcIiBbY2xhc3MuY29udGVudC13cmFwcGVyLWZpeGVkLWRpbWVuc2lvbl09XCJnZXRGaXhlZERpbWVuc2lvbkNsYXNzKClcIj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjY3VzdG9tRmlsdGVyU2xpZGUgKGNoYW5nZSk9XCJvblNsaWRlQ2hhbmdlKCRldmVudClcIiBbY2hlY2tlZF09XCIoaXNDdXN0b21GaWx0ZXIgfCBhc3luYylcIiAqbmdJZj1cImlzRGVmYXVsdEZpbHRlciB8IGFzeW5jXCI+XG4gICAgICB7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5DVVNUT01fRklMVEVSJyB8IG9UcmFuc2xhdGUgfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPGRpdiBmeEZpbGwgKm5nSWY9XCIhKGlzQ3VzdG9tRmlsdGVyIHwgYXN5bmMpO2Vsc2UgY3VzdG9tRmlsdGVyVGVtcGxhdGVcIiBmeExheW91dD1cImNvbHVtblwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaGludGVkXCI+XG4gICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXggc3ZnSWNvbj1cIm9udGltaXplOnNlYXJjaFwiPjwvbWF0LWljb24+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCAjZmlsdGVyIHBsYWNlaG9sZGVyPVwie3sgJ1RBQkxFLkZJTFRFUicgfCBvVHJhbnNsYXRlIH19XCI+XG4gICAgICAgIDxtYXQtaGludD57eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5ISU5UX1NUQVInIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPGRpdiAqbmdJZj1cIihsaXN0RGF0YSB8IGFzeW5jKS5sZW5ndGggPiAwOyBlbHNlIGVtcHR5TGlzdERhdGFcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIHN0YXJ0XCI+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RhcnRcIj5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiIFtjaGVja2VkXT1cImFyZUFsbFNlbGVjdGVkKClcIiBbaW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGUoKVwiIFtkaXNhYmxlZF09XCIhbGlzdERhdGFcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCI+XG4gICAgICAgICAgICB7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5DSEVDS19BTEwnIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWxpc3REYXRhXCIgY2xhc3M9XCJjb2x1bW4tZmlsdGVyLWVtcHR5LWxpc3RcIj5cbiAgICAgICAgICAgIHt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLkxJU1RfRU1QVFlfRklMVEVSJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ2xpY2tTb3J0VmFsdWVzKClcIj5cbiAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiZ2V0U29ydEJ5QWxwaGFJY29uKClcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5TGlzdERhdGE+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY29sdW1uLWZpbHRlci1lbXB0eS1saXN0XCI+XG4gICAgICAgICAge3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uTElTVF9FTVBUWScgfCBvVHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgKm5nSWY9XCJwcmVsb2FkVmFsdWVzIHx8IGxpc3REYXRhXCIgI2ZpbHRlclZhbHVlTGlzdCBjbGFzcz1cInNlbGVjdC12YWx1ZXMtbGlzdFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uICpuZ0Zvcj1cImxldCByZWNvcmQgb2YgKGxpc3REYXRhIHwgYXN5bmMpOyBsZXQgaSA9IGluZGV4XCIgY2hlY2tib3hQb3NpdGlvbj1cImJlZm9yZVwiIFtzZWxlY3RlZF09XCJyZWNvcmQuc2VsZWN0ZWRcIlxuICAgICAgICAgIFt2YWx1ZV09XCJyZWNvcmRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtbi5yZW5kZXJlclwiPlxuICAgICAgICAgICAge3sgcmVjb3JkLnZhbHVlIHx8ICgnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5FTVBUWV9WQUxVRScgfCBvVHJhbnNsYXRlKSB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNvbHVtbi5yZW5kZXJlclwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5yZW5kZXJlci50ZW1wbGF0ZXJlZlwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjZWxsdmFsdWU6IHJlY29yZC52YWx1ZSwgcm93dmFsdWU6IHJlY29yZC5yb3dWYWx1ZSB9XCI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiY2xlYXJBY3Rpb25cIiBjbGFzcz1cIm8tYnV0dG9uLWluZm9cIj5cbiAgICB7eyAnVEFCTEUuQlVUVE9OUy5GSUxURVJfQ0xFQVInIHwgb1RyYW5zbGF0ZSB9fSA8L2J1dHRvbj5cbiAgPHNwYW4gYWxpZ249XCJlbmRcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiY2FuY2VsQWN0aW9uXCIgY2xhc3M9XCJvLWJ1dHRvbi1kZWZhdWx0IGNhbmNlbFwiPlxuICAgICAge3sgJ0NBTkNFTCcgfCBvVHJhbnNsYXRlIH19IDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJhY2NlcHRBY3Rpb25cIiBjbGFzcz1cIm8tYnV0dG9uLXByaW1hcnlcIj5cbiAgICAgIHt7ICdBQ0NFUFQnIHwgb1RyYW5zbGF0ZSB9fSA8L2J1dHRvbj5cbiAgPC9zcGFuPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG5cbjwhLS0gVEVNUExBVEUgQ1VTVE9NIEZJTFRFUi0tPlxuPG5nLXRlbXBsYXRlICNjdXN0b21GaWx0ZXJUZW1wbGF0ZT5cbiAgPGRpdiAqbmdJZj1cImlzVGV4dFR5cGUoKVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBmeEZsZXggY2xhc3M9XCJoaW50ZWRcIj5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCAjZmlsdGVyVGV4dCBbZm9ybUNvbnRyb2xdPVwiZmNUZXh0XCIgcGxhY2Vob2xkZXI9XCJ7eyAnVEFCTEUuRklMVEVSJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICAgIDxtYXQtaGludD57eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5ISU5UX1NUQVInIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWhpbnQ+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGVhclZhbHVlcygpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpc051bWVyaWNUeXBlKClcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTJweFwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZmNGcm9tXCIgcGxhY2Vob2xkZXI9XCJ7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5GUk9NJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZmNUb1wiIHBsYWNlaG9sZGVyPVwie3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uVE8nIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGVhclZhbHVlcygpXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpc0RhdGVUeXBlKClcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTJweFwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlcGlja2VyRnJvbVwiIFttYXhdPVwiZmNUby52YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJmY0Zyb21cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLkZST00nIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkYXRlcGlja2VyRnJvbVwiPlxuICAgICAgICA8bWF0LWljb24gbWF0RGF0ZXBpY2tlclRvZ2dsZUljb24+dG9kYXk8L21hdC1pY29uPlxuICAgICAgPC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVwaWNrZXJGcm9tIFtzdGFydFZpZXddPVwiZ2V0U3RhcnRlZFZpZXdEYXRlcGlja2VyKClcIj48L21hdC1kYXRlcGlja2VyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImRhdGVwaWNrZXJUb1wiIFttaW5dPVwiZmNGcm9tLnZhbHVlXCIgW2Zvcm1Db250cm9sXT1cImZjVG9cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLlRPJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZXBpY2tlclRvXCI+XG4gICAgICAgIDxtYXQtaWNvbiBtYXREYXRlcGlja2VyVG9nZ2xlSWNvbj50b2RheTwvbWF0LWljb24+XG4gICAgICA8L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZGF0ZXBpY2tlclRvIFtzdGFydFZpZXddPVwiZ2V0U3RhcnRlZFZpZXdEYXRlcGlja2VyKClcIj48L21hdC1kYXRlcGlja2VyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJWYWx1ZXMoKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpjbG9zZVwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPlxuIl19
@@ -66,26 +66,25 @@ export class OTableColumnResizerComponent {
66
66
  return;
67
67
  }
68
68
  const DOMWidth = this.table.getClientWidthColumn(this.column);
69
- this.startX = startEvent.screenX;
69
+ this.startX = (startEvent instanceof MouseEvent) ? startEvent.screenX : startEvent.touches[0].screenX;
70
70
  this.startWidth = DOMWidth;
71
71
  this.minWidth = this.column.getMinWidthValue();
72
72
  this.initializeWidthData();
73
73
  this.ngZone.runOutsideAngular(() => {
74
- this.dragListeners.push(this.renderer.listen('document', 'mouseup', (e) => this.stopDragging()));
74
+ this.dragListeners.push(this.renderer.listen('document', 'mouseup', () => this.stopDragging()));
75
+ this.dragListeners.push(this.renderer.listen('document', 'touchend', () => this.stopDragging()));
75
76
  });
76
- if (!(startEvent instanceof MouseEvent)) {
77
- return;
78
- }
77
+ const moveEvent = (startEvent instanceof MouseEvent) ? 'mousemove' : 'touchmove';
79
78
  this.ngZone.runOutsideAngular(() => {
80
- this.dragListeners.push(this.renderer.listen('document', 'mousemove', (e) => this.resizeEvent(e)));
79
+ this.dragListeners.push(this.renderer.listen('document', moveEvent, (e) => this.resizeEvent(e)));
81
80
  });
82
81
  this.isResizing = true;
83
82
  }
84
83
  resizeEvent(event) {
85
- if (!this.isResizing || !(event instanceof MouseEvent)) {
84
+ if (!this.isResizing) {
86
85
  return;
87
86
  }
88
- const movementX = (event.screenX - this.startX);
87
+ const movementX = (event instanceof MouseEvent) ? (event.screenX - this.startX) : (event.touches[0].screenX - this.startX);
89
88
  if (movementX === 0) {
90
89
  return;
91
90
  }
@@ -217,7 +216,7 @@ export class OTableColumnResizerComponent {
217
216
  }
218
217
  }
219
218
  OTableColumnResizerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableColumnResizerComponent, deps: [{ token: forwardRef(() => OTableBase) }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
220
- OTableColumnResizerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnResizerComponent, selector: "o-table-column-resizer", inputs: { column: "column" }, host: { listeners: { "mousedown": "onMousedown($event)" }, properties: { "class.o-table-column-resizer": "true", "class.disabled": "isDisabled" } }, ngImport: i0, template: "<span class=\"resizer\" (click)=\"onClick($event)\"></span>", styles: [".o-table-column-resizer{display:inline-block;width:13px}.o-table-column-resizer:not(.disabled){cursor:col-resize}.o-table-column-resizer span{height:100%;width:1px;display:block;margin-left:auto;margin-right:auto}.o-table-column-resizer.disabled{cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
219
+ OTableColumnResizerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnResizerComponent, selector: "o-table-column-resizer", inputs: { column: "column" }, host: { listeners: { "mousedown": "onMousedown($event)", "touchstart": "onMousedown($event)", "document:mouseup": "onMouseup()", "document:touchend": "onMouseup()" }, properties: { "class.o-table-column-resizer": "true", "class.disabled": "isDisabled" } }, ngImport: i0, template: "<span class=\"resizer\" (click)=\"onClick($event)\"></span>", styles: [".o-table-column-resizer{display:inline-block;width:13px}.o-table-column-resizer:not(.disabled){cursor:col-resize}.o-table-column-resizer span{height:100%;width:1px;display:block;margin-left:auto;margin-right:auto}.o-table-column-resizer.disabled{cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
221
220
  __decorate([
222
221
  BooleanInputConverter(),
223
222
  __metadata("design:type", Boolean)
@@ -234,5 +233,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
234
233
  }] }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }]; }, propDecorators: { disabled: [], onMousedown: [{
235
234
  type: HostListener,
236
235
  args: ['mousedown', ['$event']]
236
+ }, {
237
+ type: HostListener,
238
+ args: ['touchstart', ['$event']]
239
+ }], onMouseup: [{
240
+ type: HostListener,
241
+ args: ['document:mouseup']
242
+ }, {
243
+ type: HostListener,
244
+ args: ['document:touchend']
237
245
  }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4tcmVzaXplci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW4tcmVzaXplci9vLXRhYmxlLWNvbHVtbi1yZXNpemVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLWNvbHVtbi1yZXNpemVyL28tdGFibGUtY29sdW1uLXJlc2l6ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFFekQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUc7SUFDbkQsUUFBUTtDQUNULENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxFQUdyRCxDQUFDO0FBZUYsTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsWUFDK0MsS0FBaUIsRUFDcEQsS0FBaUIsRUFDakIsTUFBYyxFQUNkLFFBQW1CO1FBSGdCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDcEQsVUFBSyxHQUFMLEtBQUssQ0FBWTtR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QUNwQyxzQ0FBc0MsbUJBRzlCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osZ0NBQWdDLEVBQUUsTUFBTTt3QkFDeEMsa0JBQWtCLEVBQUUsWUFBWTtxQkFDakM7OzBCQTRCRSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7a0hBdEJ0QyxRQUFRLE1BbURSLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi8uLi9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQmFzZSB9IGZyb20gJy4uLy4uLy4uL28tdGFibGUtYmFzZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTl9SRVNJWkVSID0gW1xuICAnY29sdW1uJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NPTFVNTl9SRVNJWkVSID0gW1xuICAvLyAncmVzaXppbmcnLFxuICAvLyAncmVzaXplZCdcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY29sdW1uLXJlc2l6ZXInLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ09MVU1OX1JFU0laRVIsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NPTFVNTl9SRVNJWkVSLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1jb2x1bW4tcmVzaXplci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tdGFibGUtY29sdW1uLXJlc2l6ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tdGFibGUtY29sdW1uLXJlc2l6ZXJdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQnLFxuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZUNvbHVtblJlc2l6ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgY29sdW1uOiBPQ29sdW1uO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyByZXNpemluZyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgLy8gcmVzaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBwcm90ZWN0ZWQgc3RhcnRXaWR0aDogYW55O1xuICBwcm90ZWN0ZWQgbWluV2lkdGg6IGFueTtcbiAgcHJvdGVjdGVkIG1heFdpZHRoOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHN0YXJ0WDogYW55O1xuXG4gIHByb3RlY3RlZCBoZWFkZXJFbDogYW55O1xuXG4gIHByb3RlY3RlZCBuZXh0T0NvbHVtbnM6IE9Db2x1bW5bXTtcblxuICBwcm90ZWN0ZWQgZHJhZ0xpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcbiAgcHJvdGVjdGVkIGlzUmVzaXppbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGJsb2NrZWRNaW5Db2xzID0gW107XG4gIHByb3RlY3RlZCBibG9ja2VkTWF4Q29scyA9IFtdO1xuXG4gIHByb3RlY3RlZCBjb2x1bW5zU3RhcnRXaWR0aCA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVCYXNlKSkgcHVibGljIHRhYmxlOiBPVGFibGVCYXNlLFxuICAgIHByb3RlY3RlZCBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5oZWFkZXJFbCA9IHRoaXMuZ2V0SGVhZGVyRUwoKTtcbiAgICAgIGlmICh0aGlzLmhlYWRlckVsKSB7XG4gICAgICAgIHRoaXMubmV4dE9Db2x1bW5zID0gdGhpcy5nZXRGb2xsb3dpbmdPQ29sdW1ucygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcERyYWdnaW5nKCk7XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbiAmJiAhdGhpcy5jb2x1bW4ucmVzaXphYmxlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZWRvd24oZTogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLnN0YXJ0UmVzaXplKGUpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2V1cCgpIHtcbiAgICB0aGlzLmlzUmVzaXppbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN0b3BEcmFnZ2luZygpO1xuICAgIC8vIHRoaXMucmVzaXplLmVtaXQodGhpcy5lbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdG9wRHJhZ2dpbmcoKSB7XG4gICAgdGhpcy5pc1Jlc2l6aW5nID0gZmFsc2U7XG4gICAgdGhpcy5jb2x1bW5zU3RhcnRXaWR0aCA9IHt9O1xuICAgIHdoaWxlICh0aGlzLmRyYWdMaXN0ZW5lcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmN0ID0gdGhpcy5kcmFnTGlzdGVuZXJzLnBvcCgpO1xuICAgICAgaWYgKGZjdCkge1xuICAgICAgICBmY3QoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGFydFJlc2l6ZShzdGFydEV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgc3RhcnRFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHN0YXJ0RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmhlYWRlckVsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBET01XaWR0aCA9IHRoaXMudGFibGUuZ2V0Q2xpZW50V2lkdGhDb2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIHRoaXMuc3RhcnRYID0gc3RhcnRFdmVudC5zY3JlZW5YO1xuICAgIHRoaXMuc3RhcnRXaWR0aCA9IERPTVdpZHRoO1xuICAgIHRoaXMubWluV2lkdGggPSB0aGlzLmNvbHVtbi5nZXRNaW5XaWR0aFZhbHVlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplV2lkdGhEYXRhKCk7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5kcmFnTGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNldXAnLCAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5zdG9wRHJhZ2dpbmcoKSkpO1xuICAgIH0pO1xuXG4gICAgaWYgKCEoc3RhcnRFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZHJhZ0xpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZW1vdmUnLCAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5yZXNpemVFdmVudChlKSkpO1xuICAgIH0pO1xuICAgIHRoaXMuaXNSZXNpemluZyA9IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzaXplRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZXNpemluZyB8fCAhKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbW92ZW1lbnRYID0gKGV2ZW50LnNjcmVlblggLSB0aGlzLnN0YXJ0WCk7XG4gICAgaWYgKG1vdmVtZW50WCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdDb2x1bW5XaWR0aCA9IHRoaXMuc3RhcnRXaWR0aCArIG1vdmVtZW50WDtcblxuICAgIGNvbnN0IGxlc3NUaGFuTWluID0gbmV3Q29sdW1uV2lkdGggPCB0aGlzLm1pbldpZHRoO1xuICAgIGNvbnN0IG1vcmVUaGFuTWF4ID0gbmV3Q29sdW1uV2lkdGggPiB0aGlzLm1heFdpZHRoO1xuICAgIGlmIChsZXNzVGhhbk1pbiB8fCBtb3JlVGhhbk1heCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudGFibGUuaG9yaXpvbnRhbFNjcm9sbCkge1xuICAgICAgdGhpcy5jYWxjdWxhdGVOZXdDb2x1bW5zV2lkdGgobW92ZW1lbnRYLCBuZXdDb2x1bW5XaWR0aCk7XG4gICAgICB0aGlzLnVwZGF0ZUJsb2NrZWRDb2xzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29sdW1uLnNldFdpZHRoKG5ld0NvbHVtbldpZHRoKTtcbiAgICB9XG4gICAgdGhpcy50YWJsZS5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SGVhZGVyRUwoKTogTm9kZSB7XG4gICAgbGV0IGVsZW1lbnQ7XG4gICAgbGV0IGN1cnJlbnRFbDogTm9kZSA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIHdoaWxlICghZWxlbWVudCAmJiBjdXJyZW50RWwpIHtcbiAgICAgIGlmIChjdXJyZW50RWwubm9kZU5hbWUgPT09ICdUSCcpIHtcbiAgICAgICAgZWxlbWVudCA9IGN1cnJlbnRFbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRFbCA9IGN1cnJlbnRFbC5wYXJlbnRFbGVtZW50O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudEVsO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZvbGxvd2luZ09Db2x1bW5zKCk6IE9Db2x1bW5bXSB7XG4gICAgY29uc3QgcmVzdWx0OiBPQ29sdW1uW10gPSBbXTtcbiAgICBsZXQgbmV4dFRoOiBhbnkgPSB0aGlzLmhlYWRlckVsLm5leHRTaWJsaW5nO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHdoaWxlIChuZXh0VGgpIHtcbiAgICAgIGNvbnN0IG9Db2w6IE9Db2x1bW4gPSBzZWxmLnRhYmxlLmdldE9Db2x1bW5Gcm9tVGgobmV4dFRoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChvQ29sKSkge1xuICAgICAgICByZXN1bHQucHVzaChvQ29sKTtcbiAgICAgIH1cbiAgICAgIG5leHRUaCA9IG5leHRUaC5uZXh0U2libGluZztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVCbG9ja2VkQ29scygpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICB0aGlzLmJsb2NrZWRNaW5Db2xzID0gW107XG4gICAgdGhpcy5ibG9ja2VkTWF4Q29scyA9IFtdO1xuICAgIGNvbnN0IGNvbHVtbnMgPSBbdGhpcy5jb2x1bW4sIC4uLnRoaXMubmV4dE9Db2x1bW5zXTtcbiAgICBjb2x1bW5zLmZvckVhY2gob0NvbCA9PiB7XG4gICAgICBjb25zdCBET01XaWR0aCA9IHRoaXMudGFibGUuZ2V0Q2xpZW50V2lkdGhDb2x1bW4ob0NvbCk7XG4gICAgICBpZiAoRE9NV2lkdGggPD0gb0NvbC5nZXRNaW5XaWR0aFZhbHVlKCkpIHtcbiAgICAgICAgc2VsZi5ibG9ja2VkTWluQ29scy5wdXNoKG9Db2wuYXR0cik7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhXID0gb0NvbC5nZXRNYXhXaWR0aFZhbHVlKCk7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQobWF4VykgJiYgRE9NV2lkdGggPj0gbWF4Vykge1xuICAgICAgICBzZWxmLmJsb2NrZWRNYXhDb2xzLnB1c2gob0NvbC5hdHRyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVOZXdDb2x1bW5zV2lkdGgobW92ZW1lbnRYOiBudW1iZXIsIG5ld0NvbHVtbldpZHRoOiBudW1iZXIpIHtcbiAgICBjb25zdCBwb3NpdGl2ZSA9IChtb3ZlbWVudFggPiAwKTtcbiAgICBpZiAocG9zaXRpdmUpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlVXNpbmdOZXh0Q29sdW1uc1Jlc3RyaWN0aW9ucyhtb3ZlbWVudFgsIG5ld0NvbHVtbldpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWxjdWxhdGVVc2luZ093bkNvbHVtblJlc3RyaWN0aW9uKG1vdmVtZW50WCwgbmV3Q29sdW1uV2lkdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVVc2luZ05leHRDb2x1bW5zUmVzdHJpY3Rpb25zKG1vdmVtZW50WDogbnVtYmVyLCBuZXdDb2x1bW5XaWR0aDogbnVtYmVyKSB7XG4gICAgY29uc3QgYXZhaWxhYmxlQ29scyA9IHRoaXMubmV4dE9Db2x1bW5zLmxlbmd0aCAtIHRoaXMuYmxvY2tlZE1pbkNvbHMubGVuZ3RoO1xuICAgIGlmIChhdmFpbGFibGVDb2xzIDw9IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgd2lkdGhSYXRpbyA9IG1vdmVtZW50WCAvIGF2YWlsYWJsZUNvbHM7XG4gICAgY29uc3QgY29scyA9IHRoaXMubmV4dE9Db2x1bW5zLmZpbHRlcigob0NvbDogT0NvbHVtbikgPT4gdGhpcy5ibG9ja2VkTWluQ29scy5pbmRleE9mKG9Db2wuYXR0cikgPT09IC0xKTtcbiAgICBjb2xzLmZvckVhY2gob0NvbCA9PiB7XG4gICAgICBsZXQgbmV3V2lkdGggPSAodGhpcy5jb2x1bW5zU3RhcnRXaWR0aFtvQ29sLmF0dHJdIC0gd2lkdGhSYXRpbyk7XG4gICAgICBjb25zdCBtaW5XaWR0aCA9IG9Db2wuZ2V0TWluV2lkdGhWYWx1ZSgpO1xuICAgICAgaWYgKG5ld1dpZHRoIDw9IG1pbldpZHRoKSB7XG4gICAgICAgIG5ld1dpZHRoID0gbWluV2lkdGg7XG4gICAgICAgIHRoaXMuYmxvY2tlZE1pbkNvbHMucHVzaChvQ29sLmF0dHIpO1xuICAgICAgfVxuICAgICAgb0NvbC5zZXRXaWR0aChuZXdXaWR0aCk7XG4gICAgfSk7XG4gICAgdGhpcy5jb2x1bW4uc2V0V2lkdGgobmV3Q29sdW1uV2lkdGgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZVVzaW5nT3duQ29sdW1uUmVzdHJpY3Rpb24obW92ZW1lbnRYOiBudW1iZXIsIG5ld0NvbHVtbldpZHRoOiBudW1iZXIpIHtcbiAgICBsZXQgd2lkdGhSYXRpbyA9IE1hdGguYWJzKG1vdmVtZW50WCkgLyB0aGlzLm5leHRPQ29sdW1ucy5sZW5ndGg7XG4gICAgbGV0IHdpZHRoRGlmZmVyZW5jZSA9IDA7XG4gICAgaWYgKHdpZHRoUmF0aW8gPiAwICYmIHRoaXMuYmxvY2tlZE1heENvbHMubGVuZ3RoIDwgdGhpcy5uZXh0T0NvbHVtbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjb2xzID0gdGhpcy5uZXh0T0NvbHVtbnMuZmlsdGVyKChvQ29sOiBPQ29sdW1uKSA9PiB0aGlzLmJsb2NrZWRNYXhDb2xzLmluZGV4T2Yob0NvbC5hdHRyKSA9PT0gLTEpO1xuICAgICAgY29scy5mb3JFYWNoKG9Db2wgPT4ge1xuICAgICAgICBsZXQgbmV3V2lkdGhWYWx1ZSA9ICh0aGlzLmNvbHVtbnNTdGFydFdpZHRoW29Db2wuYXR0cl0gKyB3aWR0aFJhdGlvKTtcbiAgICAgICAgY29uc3QgbWF4V2lkdGggPSBvQ29sLmdldE1heFdpZHRoVmFsdWUoKTtcbiAgICAgICAgaWYgKG1heFdpZHRoICYmIG5ld1dpZHRoVmFsdWUgPiBtYXhXaWR0aCkge1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSBuZXdXaWR0aFZhbHVlIC0gbWF4V2lkdGg7XG4gICAgICAgICAgbmV3V2lkdGhWYWx1ZSA9IG1heFdpZHRoO1xuICAgICAgICAgIHRoaXMuYmxvY2tlZE1heENvbHMucHVzaChvQ29sLmF0dHIpO1xuICAgICAgICAgIGNvbnN0IG5vdEJsb2NrZWQgPSB0aGlzLm5leHRPQ29sdW1ucy5sZW5ndGggLSB0aGlzLmJsb2NrZWRNYXhDb2xzLmxlbmd0aDtcbiAgICAgICAgICB3aWR0aFJhdGlvICs9IG5vdEJsb2NrZWQgPiAwID8gTWF0aC5mbG9vcihkaWZmIC8gbm90QmxvY2tlZCkgOiAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IERPTVdpZHRoID0gdGhpcy50YWJsZS5nZXRDbGllbnRXaWR0aENvbHVtbihvQ29sKTtcbiAgICAgICAgd2lkdGhEaWZmZXJlbmNlICs9IG5ld1dpZHRoVmFsdWUgLSBET01XaWR0aDtcbiAgICAgICAgb0NvbC5zZXRXaWR0aChuZXdXaWR0aFZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWluKHRoaXMuc3RhcnRXaWR0aCAtIHdpZHRoRGlmZmVyZW5jZSwgbmV3Q29sdW1uV2lkdGgpO1xuICAgIHRoaXMuY29sdW1uLnNldFdpZHRoKG5ld1dpZHRoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplV2lkdGhEYXRhKCkge1xuICAgIGxldCBtYXhXaWR0aCA9IHRoaXMuY29sdW1uLmdldE1heFdpZHRoVmFsdWUoKTtcbiAgICBsZXQgbmV4dENvbE1pbldpZHRoQWN1bSA9IDA7XG4gICAgbGV0IG5leHRDb2xXaWR0aEFjdW0gPSAwO1xuICAgIHRoaXMubmV4dE9Db2x1bW5zLmZvckVhY2goKGNvbDogT0NvbHVtbikgPT4ge1xuICAgICAgbmV4dENvbE1pbldpZHRoQWN1bSArPSBjb2wuZ2V0TWluV2lkdGhWYWx1ZSgpO1xuICAgICAgY29uc3QgRE9NV2lkdGggPSB0aGlzLnRhYmxlLmdldENsaWVudFdpZHRoQ29sdW1uKGNvbCk7XG4gICAgICBuZXh0Q29sV2lkdGhBY3VtICs9IERPTVdpZHRoO1xuICAgICAgdGhpcy5jb2x1bW5zU3RhcnRXaWR0aFtjb2wuYXR0cl0gPSBET01XaWR0aDtcbiAgICB9KTtcbiAgICBjb25zdCBjYWxjTWF4V2lkdGggPSB0aGlzLmhlYWRlckVsLmNsaWVudFdpZHRoICsgKG5leHRDb2xXaWR0aEFjdW0gLSBuZXh0Q29sTWluV2lkdGhBY3VtKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobWF4V2lkdGgpKSB7XG4gICAgICBtYXhXaWR0aCA9IE1hdGgubWluKG1heFdpZHRoLCBjYWxjTWF4V2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXhXaWR0aCA9IGNhbGNNYXhXaWR0aDtcbiAgICB9XG4gICAgdGhpcy5tYXhXaWR0aCA9IG1heFdpZHRoO1xuICB9XG5cbn1cbiIsIjxzcGFuIGNsYXNzPVwicmVzaXplclwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj48L3NwYW4+Il19
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4tcmVzaXplci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW4tcmVzaXplci9vLXRhYmxlLWNvbHVtbi1yZXNpemVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvaGVhZGVyL3RhYmxlLWNvbHVtbi1yZXNpemVyL28tdGFibGUtY29sdW1uLXJlc2l6ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFFekQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUc7SUFDbkQsUUFBUTtDQUNULENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxFQUdyRCxDQUFDO0FBZUYsTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsWUFDK0MsS0FBaUIsRUFDcEQsS0FBaUIsRUFDakIsTUFBYyxFQUNkLFFBQW1CO1FBSGdCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDcEQsVUFBSyxHQUFMLEtBQUssQ0FBWTtR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QVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1QixRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDN0M7YUFBTTtZQUNMLFFBQVEsR0FBRyxZQUFZLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDOzswSEFqUFUsNEJBQTRCLGtCQTBCN0IsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQzs4R0ExQjNCLDRCQUE0Qiw2VkN6Q3pDLDZEQUF1RDtBRDRDckQ7SUFBQyxxQkFBcUIsRUFBRTs7OERBQ0U7NEZBSmYsNEJBQTRCO2tCQWJ4QyxTQUFTOytCQUNFLHdCQUF3QixVQUMxQixxQ0FBcUMsV0FDcEMsc0NBQXNDLG1CQUc5Qix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLGdDQUFnQyxFQUFFLE1BQU07d0JBQ3hDLGtCQUFrQixFQUFFLFlBQVk7cUJBQ2pDOzswQkE0QkUsTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO2tIQXRCdEMsUUFBUSxNQW9EUixXQUFXO3NCQUZWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDcEMsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU3RDLFNBQVM7c0JBRlIsWUFBWTt1QkFBQyxrQkFBa0I7O3NCQUMvQixZQUFZO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS1iYXNlLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ09MVU1OX1JFU0laRVIgPSBbXG4gICdjb2x1bW4nXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OX1JFU0laRVIgPSBbXG4gIC8vICdyZXNpemluZycsXG4gIC8vICdyZXNpemVkJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1jb2x1bW4tcmVzaXplcicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DT0xVTU5fUkVTSVpFUixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OX1JFU0laRVIsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLWNvbHVtbi1yZXNpemVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1jb2x1bW4tcmVzaXplci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby10YWJsZS1jb2x1bW4tcmVzaXplcl0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnaXNEaXNhYmxlZCcsXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlQ29sdW1uUmVzaXplckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBjb2x1bW46IE9Db2x1bW47XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIHJlc2l6aW5nID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvLyByZXNpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIHByb3RlY3RlZCBzdGFydFdpZHRoOiBhbnk7XG4gIHByb3RlY3RlZCBtaW5XaWR0aDogYW55O1xuICBwcm90ZWN0ZWQgbWF4V2lkdGg6IGFueTtcblxuICBwcm90ZWN0ZWQgc3RhcnRYOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGhlYWRlckVsOiBhbnk7XG5cbiAgcHJvdGVjdGVkIG5leHRPQ29sdW1uczogT0NvbHVtbltdO1xuXG4gIHByb3RlY3RlZCBkcmFnTGlzdGVuZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuICBwcm90ZWN0ZWQgaXNSZXNpemluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgYmxvY2tlZE1pbkNvbHMgPSBbXTtcbiAgcHJvdGVjdGVkIGJsb2NrZWRNYXhDb2xzID0gW107XG5cbiAgcHJvdGVjdGVkIGNvbHVtbnNTdGFydFdpZHRoID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9UYWJsZUJhc2UpKSBwdWJsaWMgdGFibGU6IE9UYWJsZUJhc2UsXG4gICAgcHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICB0aGlzLmhlYWRlckVsID0gdGhpcy5nZXRIZWFkZXJFTCgpO1xuICAgICAgaWYgKHRoaXMuaGVhZGVyRWwpIHtcbiAgICAgICAgdGhpcy5uZXh0T0NvbHVtbnMgPSB0aGlzLmdldEZvbGxvd2luZ09Db2x1bW5zKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgfVxuXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uICYmICF0aGlzLmNvbHVtbi5yZXNpemFibGU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZWRvd24oZTogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy5zdGFydFJlc2l6ZShlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJylcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2hlbmQnKVxuICBvbk1vdXNldXAoKSB7XG4gICAgdGhpcy5pc1Jlc2l6aW5nID0gZmFsc2U7XG4gICAgdGhpcy5zdG9wRHJhZ2dpbmcoKTtcbiAgICAvLyB0aGlzLnJlc2l6ZS5lbWl0KHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RvcERyYWdnaW5nKCkge1xuICAgIHRoaXMuaXNSZXNpemluZyA9IGZhbHNlO1xuICAgIHRoaXMuY29sdW1uc1N0YXJ0V2lkdGggPSB7fTtcbiAgICB3aGlsZSAodGhpcy5kcmFnTGlzdGVuZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZjdCA9IHRoaXMuZHJhZ0xpc3RlbmVycy5wb3AoKTtcbiAgICAgIGlmIChmY3QpIHtcbiAgICAgICAgZmN0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhcnRSZXNpemUoc3RhcnRFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICBzdGFydEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgc3RhcnRFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuaGVhZGVyRWwpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IERPTVdpZHRoID0gdGhpcy50YWJsZS5nZXRDbGllbnRXaWR0aENvbHVtbih0aGlzLmNvbHVtbik7XG4gICAgdGhpcy5zdGFydFggPSAoc3RhcnRFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gc3RhcnRFdmVudC5zY3JlZW5YIDogc3RhcnRFdmVudC50b3VjaGVzWzBdLnNjcmVlblg7XG4gICAgdGhpcy5zdGFydFdpZHRoID0gRE9NV2lkdGg7XG4gICAgdGhpcy5taW5XaWR0aCA9IHRoaXMuY29sdW1uLmdldE1pbldpZHRoVmFsdWUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVXaWR0aERhdGEoKTtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmRyYWdMaXN0ZW5lcnMucHVzaCh0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2V1cCcsICgpID0+IHRoaXMuc3RvcERyYWdnaW5nKCkpKTtcbiAgICAgIHRoaXMuZHJhZ0xpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICd0b3VjaGVuZCcsICgpID0+IHRoaXMuc3RvcERyYWdnaW5nKCkpKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG1vdmVFdmVudCA9IChzdGFydEV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkgPyAnbW91c2Vtb3ZlJyA6ICd0b3VjaG1vdmUnO1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZHJhZ0xpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsIG1vdmVFdmVudCwgKGU6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB0aGlzLnJlc2l6ZUV2ZW50KGUpKSk7XG4gICAgfSk7XG4gICAgdGhpcy5pc1Jlc2l6aW5nID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNpemVFdmVudChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZXNpemluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtb3ZlbWVudFggPSAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSA/IChldmVudC5zY3JlZW5YIC0gdGhpcy5zdGFydFgpIDogKGV2ZW50LnRvdWNoZXNbMF0uc2NyZWVuWCAtIHRoaXMuc3RhcnRYKTtcbiAgICBpZiAobW92ZW1lbnRYID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld0NvbHVtbldpZHRoID0gdGhpcy5zdGFydFdpZHRoICsgbW92ZW1lbnRYO1xuXG4gICAgY29uc3QgbGVzc1RoYW5NaW4gPSBuZXdDb2x1bW5XaWR0aCA8IHRoaXMubWluV2lkdGg7XG4gICAgY29uc3QgbW9yZVRoYW5NYXggPSBuZXdDb2x1bW5XaWR0aCA+IHRoaXMubWF4V2lkdGg7XG4gICAgaWYgKGxlc3NUaGFuTWluIHx8IG1vcmVUaGFuTWF4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy50YWJsZS5ob3Jpem9udGFsU2Nyb2xsKSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZU5ld0NvbHVtbnNXaWR0aChtb3ZlbWVudFgsIG5ld0NvbHVtbldpZHRoKTtcbiAgICAgIHRoaXMudXBkYXRlQmxvY2tlZENvbHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb2x1bW4uc2V0V2lkdGgobmV3Q29sdW1uV2lkdGgpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRIZWFkZXJFTCgpOiBOb2RlIHtcbiAgICBsZXQgZWxlbWVudDtcbiAgICBsZXQgY3VycmVudEVsOiBOb2RlID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgd2hpbGUgKCFlbGVtZW50ICYmIGN1cnJlbnRFbCkge1xuICAgICAgaWYgKGN1cnJlbnRFbC5ub2RlTmFtZSA9PT0gJ1RIJykge1xuICAgICAgICBlbGVtZW50ID0gY3VycmVudEVsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudEVsID0gY3VycmVudEVsLnBhcmVudEVsZW1lbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50RWw7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Rm9sbG93aW5nT0NvbHVtbnMoKTogT0NvbHVtbltdIHtcbiAgICBjb25zdCByZXN1bHQ6IE9Db2x1bW5bXSA9IFtdO1xuICAgIGxldCBuZXh0VGg6IGFueSA9IHRoaXMuaGVhZGVyRWwubmV4dFNpYmxpbmc7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgd2hpbGUgKG5leHRUaCkge1xuICAgICAgY29uc3Qgb0NvbDogT0NvbHVtbiA9IHNlbGYudGFibGUuZ2V0T0NvbHVtbkZyb21UaChuZXh0VGgpO1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKG9Db2wpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKG9Db2wpO1xuICAgICAgfVxuICAgICAgbmV4dFRoID0gbmV4dFRoLm5leHRTaWJsaW5nO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUJsb2NrZWRDb2xzKCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuYmxvY2tlZE1pbkNvbHMgPSBbXTtcbiAgICB0aGlzLmJsb2NrZWRNYXhDb2xzID0gW107XG4gICAgY29uc3QgY29sdW1ucyA9IFt0aGlzLmNvbHVtbiwgLi4udGhpcy5uZXh0T0NvbHVtbnNdO1xuICAgIGNvbHVtbnMuZm9yRWFjaChvQ29sID0+IHtcbiAgICAgIGNvbnN0IERPTVdpZHRoID0gdGhpcy50YWJsZS5nZXRDbGllbnRXaWR0aENvbHVtbihvQ29sKTtcbiAgICAgIGlmIChET01XaWR0aCA8PSBvQ29sLmdldE1pbldpZHRoVmFsdWUoKSkge1xuICAgICAgICBzZWxmLmJsb2NrZWRNaW5Db2xzLnB1c2gob0NvbC5hdHRyKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heFcgPSBvQ29sLmdldE1heFdpZHRoVmFsdWUoKTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChtYXhXKSAmJiBET01XaWR0aCA+PSBtYXhXKSB7XG4gICAgICAgIHNlbGYuYmxvY2tlZE1heENvbHMucHVzaChvQ29sLmF0dHIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZU5ld0NvbHVtbnNXaWR0aChtb3ZlbWVudFg6IG51bWJlciwgbmV3Q29sdW1uV2lkdGg6IG51bWJlcikge1xuICAgIGNvbnN0IHBvc2l0aXZlID0gKG1vdmVtZW50WCA+IDApO1xuICAgIGlmIChwb3NpdGl2ZSkge1xuICAgICAgdGhpcy5jYWxjdWxhdGVVc2luZ05leHRDb2x1bW5zUmVzdHJpY3Rpb25zKG1vdmVtZW50WCwgbmV3Q29sdW1uV2lkdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZVVzaW5nT3duQ29sdW1uUmVzdHJpY3Rpb24obW92ZW1lbnRYLCBuZXdDb2x1bW5XaWR0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZVVzaW5nTmV4dENvbHVtbnNSZXN0cmljdGlvbnMobW92ZW1lbnRYOiBudW1iZXIsIG5ld0NvbHVtbldpZHRoOiBudW1iZXIpIHtcbiAgICBjb25zdCBhdmFpbGFibGVDb2xzID0gdGhpcy5uZXh0T0NvbHVtbnMubGVuZ3RoIC0gdGhpcy5ibG9ja2VkTWluQ29scy5sZW5ndGg7XG4gICAgaWYgKGF2YWlsYWJsZUNvbHMgPD0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB3aWR0aFJhdGlvID0gbW92ZW1lbnRYIC8gYXZhaWxhYmxlQ29scztcbiAgICBjb25zdCBjb2xzID0gdGhpcy5uZXh0T0NvbHVtbnMuZmlsdGVyKChvQ29sOiBPQ29sdW1uKSA9PiB0aGlzLmJsb2NrZWRNaW5Db2xzLmluZGV4T2Yob0NvbC5hdHRyKSA9PT0gLTEpO1xuICAgIGNvbHMuZm9yRWFjaChvQ29sID0+IHtcbiAgICAgIGxldCBuZXdXaWR0aCA9ICh0aGlzLmNvbHVtbnNTdGFydFdpZHRoW29Db2wuYXR0cl0gLSB3aWR0aFJhdGlvKTtcbiAgICAgIGNvbnN0IG1pbldpZHRoID0gb0NvbC5nZXRNaW5XaWR0aFZhbHVlKCk7XG4gICAgICBpZiAobmV3V2lkdGggPD0gbWluV2lkdGgpIHtcbiAgICAgICAgbmV3V2lkdGggPSBtaW5XaWR0aDtcbiAgICAgICAgdGhpcy5ibG9ja2VkTWluQ29scy5wdXNoKG9Db2wuYXR0cik7XG4gICAgICB9XG4gICAgICBvQ29sLnNldFdpZHRoKG5ld1dpZHRoKTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbHVtbi5zZXRXaWR0aChuZXdDb2x1bW5XaWR0aCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlVXNpbmdPd25Db2x1bW5SZXN0cmljdGlvbihtb3ZlbWVudFg6IG51bWJlciwgbmV3Q29sdW1uV2lkdGg6IG51bWJlcikge1xuICAgIGxldCB3aWR0aFJhdGlvID0gTWF0aC5hYnMobW92ZW1lbnRYKSAvIHRoaXMubmV4dE9Db2x1bW5zLmxlbmd0aDtcbiAgICBsZXQgd2lkdGhEaWZmZXJlbmNlID0gMDtcbiAgICBpZiAod2lkdGhSYXRpbyA+IDAgJiYgdGhpcy5ibG9ja2VkTWF4Q29scy5sZW5ndGggPCB0aGlzLm5leHRPQ29sdW1ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNvbHMgPSB0aGlzLm5leHRPQ29sdW1ucy5maWx0ZXIoKG9Db2w6IE9Db2x1bW4pID0+IHRoaXMuYmxvY2tlZE1heENvbHMuaW5kZXhPZihvQ29sLmF0dHIpID09PSAtMSk7XG4gICAgICBjb2xzLmZvckVhY2gob0NvbCA9PiB7XG4gICAgICAgIGxldCBuZXdXaWR0aFZhbHVlID0gKHRoaXMuY29sdW1uc1N0YXJ0V2lkdGhbb0NvbC5hdHRyXSArIHdpZHRoUmF0aW8pO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IG9Db2wuZ2V0TWF4V2lkdGhWYWx1ZSgpO1xuICAgICAgICBpZiAobWF4V2lkdGggJiYgbmV3V2lkdGhWYWx1ZSA+IG1heFdpZHRoKSB7XG4gICAgICAgICAgY29uc3QgZGlmZiA9IG5ld1dpZHRoVmFsdWUgLSBtYXhXaWR0aDtcbiAgICAgICAgICBuZXdXaWR0aFZhbHVlID0gbWF4V2lkdGg7XG4gICAgICAgICAgdGhpcy5ibG9ja2VkTWF4Q29scy5wdXNoKG9Db2wuYXR0cik7XG4gICAgICAgICAgY29uc3Qgbm90QmxvY2tlZCA9IHRoaXMubmV4dE9Db2x1bW5zLmxlbmd0aCAtIHRoaXMuYmxvY2tlZE1heENvbHMubGVuZ3RoO1xuICAgICAgICAgIHdpZHRoUmF0aW8gKz0gbm90QmxvY2tlZCA+IDAgPyBNYXRoLmZsb29yKGRpZmYgLyBub3RCbG9ja2VkKSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgRE9NV2lkdGggPSB0aGlzLnRhYmxlLmdldENsaWVudFdpZHRoQ29sdW1uKG9Db2wpO1xuICAgICAgICB3aWR0aERpZmZlcmVuY2UgKz0gbmV3V2lkdGhWYWx1ZSAtIERPTVdpZHRoO1xuICAgICAgICBvQ29sLnNldFdpZHRoKG5ld1dpZHRoVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG5ld1dpZHRoID0gTWF0aC5taW4odGhpcy5zdGFydFdpZHRoIC0gd2lkdGhEaWZmZXJlbmNlLCBuZXdDb2x1bW5XaWR0aCk7XG4gICAgdGhpcy5jb2x1bW4uc2V0V2lkdGgobmV3V2lkdGgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVXaWR0aERhdGEoKSB7XG4gICAgbGV0IG1heFdpZHRoID0gdGhpcy5jb2x1bW4uZ2V0TWF4V2lkdGhWYWx1ZSgpO1xuICAgIGxldCBuZXh0Q29sTWluV2lkdGhBY3VtID0gMDtcbiAgICBsZXQgbmV4dENvbFdpZHRoQWN1bSA9IDA7XG4gICAgdGhpcy5uZXh0T0NvbHVtbnMuZm9yRWFjaCgoY29sOiBPQ29sdW1uKSA9PiB7XG4gICAgICBuZXh0Q29sTWluV2lkdGhBY3VtICs9IGNvbC5nZXRNaW5XaWR0aFZhbHVlKCk7XG4gICAgICBjb25zdCBET01XaWR0aCA9IHRoaXMudGFibGUuZ2V0Q2xpZW50V2lkdGhDb2x1bW4oY29sKTtcbiAgICAgIG5leHRDb2xXaWR0aEFjdW0gKz0gRE9NV2lkdGg7XG4gICAgICB0aGlzLmNvbHVtbnNTdGFydFdpZHRoW2NvbC5hdHRyXSA9IERPTVdpZHRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGNhbGNNYXhXaWR0aCA9IHRoaXMuaGVhZGVyRWwuY2xpZW50V2lkdGggKyAobmV4dENvbFdpZHRoQWN1bSAtIG5leHRDb2xNaW5XaWR0aEFjdW0pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChtYXhXaWR0aCkpIHtcbiAgICAgIG1heFdpZHRoID0gTWF0aC5taW4obWF4V2lkdGgsIGNhbGNNYXhXaWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1heFdpZHRoID0gY2FsY01heFdpZHRoO1xuICAgIH1cbiAgICB0aGlzLm1heFdpZHRoID0gbWF4V2lkdGg7XG4gIH1cblxufVxuIiwiPHNwYW4gY2xhc3M9XCJyZXNpemVyXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiPjwvc3Bhbj4iXX0=
@@ -1,8 +1,9 @@
1
1
  import { Component, ElementRef, Injector, ViewEncapsulation } from '@angular/core';
2
2
  import { OSkeletonComponent } from '../../../o-skeleton.component';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/flex-layout/flex";
5
- import * as i2 from "ngx-skeleton-loader";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/flex-layout/flex";
6
+ import * as i3 from "ngx-skeleton-loader";
6
7
  export class OTableSkeletonComponent extends OSkeletonComponent {
7
8
  constructor(elRef, injector) {
8
9
  super(injector);
@@ -11,16 +12,16 @@ export class OTableSkeletonComponent extends OSkeletonComponent {
11
12
  }
12
13
  get count() {
13
14
  const parentElement = this.elRef.nativeElement.parentElement;
14
- const parentHeight = parentElement.offsetHeight - 50;
15
- return Math.floor(parentHeight / 30);
15
+ const parentHeight = parentElement.offsetHeight - 60;
16
+ return Array.from(new Array(Math.floor(parentHeight / 30)), (x, i) => i + 1);
16
17
  }
17
18
  }
18
19
  OTableSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableSkeletonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
19
- OTableSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableSkeletonComponent, selector: "o-table-skeleton", host: { properties: { "class.o-table-skeleton": "true" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative;padding:10px}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:0 10px 10px}.o-table-skeleton .o-table-skeleton-item{margin:0 10px}\n"], dependencies: [{ kind: "directive", type: i1.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i1.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i1.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i2.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }], encapsulation: i0.ViewEncapsulation.None });
20
+ OTableSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableSkeletonComponent, selector: "o-table-skeleton", host: { properties: { "class.o-table-skeleton": "true" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" *ngFor=\"let row of count\">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:10px}.o-table-skeleton .o-table-skeleton-item{margin:5px 10px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }], encapsulation: i0.ViewEncapsulation.None });
20
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableSkeletonComponent, decorators: [{
21
22
  type: Component,
22
23
  args: [{ selector: 'o-table-skeleton', encapsulation: ViewEncapsulation.None, host: {
23
24
  '[class.o-table-skeleton]': 'true'
24
- }, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative;padding:10px}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:0 10px 10px}.o-table-skeleton .o-table-skeleton-item{margin:0 10px}\n"] }]
25
+ }, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" *ngFor=\"let row of count\">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"1\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:10px}.o-table-skeleton .o-table-skeleton-item{margin:5px 10px}\n"] }]
25
26
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }]; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9za2VsZXRvbi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQWFuRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBRTdELFlBQXNCLEtBQWlCLEVBQVksUUFBa0I7UUFDbkUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBREssVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFZLGFBQVEsR0FBUixRQUFRLENBQVU7SUFFckUsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUU3RCxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O3FIQVhVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDJJQ2RwQyxrMENBeUJBOzRGRFhhLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSiwwQkFBMEIsRUFBRSxNQUFNO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uRGVzdHJveSwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9Ta2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL28tc2tlbGV0b24uY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLXNrZWxldG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tdGFibGUtc2tlbGV0b25dJzogJ3RydWUnXG4gIH1cblxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVTa2VsZXRvbkNvbXBvbmVudCBleHRlbmRzIE9Ta2VsZXRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpXG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIC8qIGF2YWlsYWJsZSBwYXJlbnRIZWlnaHQgPSBwYXJlbnRFbGVtZW50IGhlaWdodCAgLSAoaGVhZGVyIHRhYmxlIGhlYWRlciBoZWlnaHQgKyBtYXJnaW4gYm90dG9tKSovXG4gICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gcGFyZW50RWxlbWVudC5vZmZzZXRIZWlnaHQgLSA1MDtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihwYXJlbnRIZWlnaHQgLyAzMCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm8tdGFibGUtc2tlbGV0b24taGVhZGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvLXRhYmxlLXNrZWxldG9uLWl0ZW1cIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBmeEZsZXggY291bnQ9XCJ7e2NvdW50fX1cIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cInt7Y291bnR9fVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwXCI+XG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCJ7e2NvdW50fX1cIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cInt7Y291bnR9fVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwie3tjb3VudH19XCIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIlxuICAgICAgW3RoZW1lXT1cIntoZWlnaHQ6JzIwcHgnLCdib3JkZXItcmFkaXVzJzogJzAnLCAnbWFyZ2luJzogJzAnfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9za2VsZXRvbi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7QUFhbkUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGtCQUFrQjtJQUU3RCxZQUFzQixLQUFpQixFQUFZLFFBQWtCO1FBQ25FLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQURLLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBWSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRXJFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFFN0QsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDckQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQzs7cUhBWFUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsMklDZHBDLG96Q0F3QkE7NEZEVmEsdUJBQXVCO2tCQVZuQyxTQUFTOytCQUNFLGtCQUFrQixpQkFHYixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLDBCQUEwQixFQUFFLE1BQU07cUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25EZXN0cm95LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT1NrZWxldG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vby1za2VsZXRvbi5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtc2tlbGV0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby10YWJsZS1za2VsZXRvbl0nOiAndHJ1ZSdcbiAgfVxuXG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZVNrZWxldG9uQ29tcG9uZW50IGV4dGVuZHMgT1NrZWxldG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3RvcilcbiAgfVxuXG4gIGdldCBjb3VudCgpIHtcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgLyogYXZhaWxhYmxlIHBhcmVudEhlaWdodCA9IHBhcmVudEVsZW1lbnQgaGVpZ2h0ICAtIChoZWFkZXIgdGFibGUgaGVhZGVyIGhlaWdodCArIG1hcmdpbiBib3R0b20pKi9cbiAgICBjb25zdCBwYXJlbnRIZWlnaHQgPSBwYXJlbnRFbGVtZW50Lm9mZnNldEhlaWdodCAtIDYwO1xuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBBcnJheShNYXRoLmZsb29yKHBhcmVudEhlaWdodCAvIDMwKSksICh4LCBpKSA9PiBpICsgMSk7XG4gIH1cblxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLXRhYmxlLXNrZWxldG9uLWhlYWRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiby10YWJsZS1za2VsZXRvbi1pdGVtXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgKm5nRm9yPVwibGV0IHJvdyBvZiBjb3VudFwiPlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGZ4RmxleCBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMFwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -159,9 +159,7 @@ export class OMatSort extends MatSort {
159
159
  let propertyA = '';
160
160
  let propertyB = '';
161
161
  [propertyA, propertyB] = [a[this.activeSortColumn], b[this.activeSortColumn]];
162
- const valueA = typeof propertyA === 'undefined' ? '' : propertyA === '' ? propertyA : isNaN(+propertyA) ? propertyA.toString().trim().toLowerCase() : +propertyA;
163
- const valueB = typeof propertyB === 'undefined' ? '' : propertyB === '' ? propertyB : isNaN(+propertyB) ? propertyB.toString().trim().toLowerCase() : +propertyB;
164
- return (valueA <= valueB ? -1 : 1) * (this.activeSortDirection === 'asc' ? 1 : -1);
162
+ return Util.sortFunction(propertyA, propertyB, this.activeSortDirection);
165
163
  }
166
164
  }
167
165
  OMatSort.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OMatSort, deps: null, target: i0.ɵɵFactoryTarget.Directive });
@@ -177,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
177
175
  type: Output,
178
176
  args: ['matSortChange']
179
177
  }] } });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1tYXQtc29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvc29ydC9vLW1hdC1zb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFlLE1BQU0sd0JBQXdCLENBQUM7QUFHOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFZN0MsTUFBTSxPQUFPLFFBQVMsU0FBUSxPQUFPO0lBTHJDOztRQU9FLGdCQUFXLEdBQXVCLEVBQUUsQ0FBQztRQUNyQyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQU9mLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7S0E0S25FO0lBMUtDLElBQUksZUFBZSxDQUFDLEtBQWlCO1FBQ25DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFZO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUU7WUFDMUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDZCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FB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TUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7O3NHQXBMVSxRQUFROzBGQUFSLFFBQVE7NEZBQVIsUUFBUTtrQkFMcEIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLE1BQU0sRUFBRSxDQUFDLDRCQUE0QixFQUFFLGlCQUFpQixDQUFDO2lCQUMxRDs4QkFXVSxXQUFXO3NCQURuQixNQUFNO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuXG5pbXBvcnQgeyBTUUxPcmRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzL3NxbC1vcmRlci50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcblxuZXhwb3J0IHR5cGUgT01hdFNvcnRHcm91cGVkRGF0YSA9IHtcbiAga2V5OiBhbnk7XG4gIHZhbHVlczogYW55W107XG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbb01hdFNvcnRdJyxcbiAgZXhwb3J0QXM6ICdvTWF0U29ydCcsXG4gIGlucHV0czogWydkaXNhYmxlZDogb01hdFNvcnREaXNhYmxlZCcsICdvTWF0U29ydENvbHVtbnMnXVxufSlcbmV4cG9ydCBjbGFzcyBPTWF0U29ydCBleHRlbmRzIE1hdFNvcnQge1xuXG4gIGFjdGl2ZUFycmF5OiBBcnJheTxNYXRTb3J0YWJsZT4gPSBbXTtcbiAgZGlyZWN0aW9uQnlJZDogYW55ID0ge307XG5cbiAgcHJvdGVjdGVkIG11bHRpcGxlU29ydDogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIGFjdGl2ZVNvcnRDb2x1bW46IHN0cmluZztcbiAgcHJvdGVjdGVkIGFjdGl2ZVNvcnREaXJlY3Rpb246IHN0cmluZztcblxuICBAT3V0cHV0KCdtYXRTb3J0Q2hhbmdlJylcbiAgcmVhZG9ubHkgb1NvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgc2V0IG9NYXRTb3J0Q29sdW1ucyh2YWx1ZTogU1FMT3JkZXJbXSkge1xuICAgIHRoaXMucmVzdGFydCgpO1xuICAgIHRoaXMuc2V0VGFibGVJbmZvKHZhbHVlKTtcbiAgfVxuXG4gIHNldE11bHRpcGxlU29ydCh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm11bHRpcGxlU29ydCA9IHZhbDtcbiAgfVxuXG4gIGdldFNvcnRDb2x1bW5zKCk6IGFueVtdIHtcbiAgICBjb25zdCBhY3RpdmVEYXRhID0gW107XG4gICAgdGhpcy5hY3RpdmVBcnJheS5mb3JFYWNoKChzOiBNYXRTb3J0YWJsZSkgPT4ge1xuICAgICAgYWN0aXZlRGF0YS5wdXNoKHtcbiAgICAgICAgaWQ6IHMuaWQsXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5kaXJlY3Rpb25CeUlkW3MuaWRdXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZlRGF0YTtcbiAgfVxuXG4gIHNldFNvcnRDb2x1bW5zKHNvcnRDb2xBcnJheTogU1FMT3JkZXJbXSkge1xuICAgIHRoaXMucmVzdGFydCgpO1xuICAgIHRoaXMuc2V0VGFibGVJbmZvKHNvcnRDb2xBcnJheSk7XG4gIH1cblxuICBwcml2YXRlIHJlc3RhcnQoKSB7XG4gICAgdGhpcy5hY3RpdmVBcnJheSA9IFtdO1xuICAgIHRoaXMuZGlyZWN0aW9uQnlJZCA9IHt9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFRhYmxlSW5mbyhzb3J0Q29sQXJyYXk6IEFycmF5PFNRTE9yZGVyPikge1xuXG4gICAgc29ydENvbEFycmF5LmZvckVhY2goKGNvbERhdGE6IFNRTE9yZGVyKSA9PiB7XG4gICAgICBjb25zdCBzb3J0RGlyZWN0aW9uOiBhbnkgPSBjb2xEYXRhLmFzY2VuZGVudCA/IENvZGVzLkFTQ19TT1JUIDogQ29kZXMuREVTQ19TT1JUO1xuICAgICAgdGhpcy5hY3RpdmVBcnJheS5wdXNoKHtcbiAgICAgICAgaWQ6IGNvbERhdGEuY29sdW1uTmFtZSxcbiAgICAgICAgc3RhcnQ6IHNvcnREaXJlY3Rpb24sXG4gICAgICAgIGRpc2FibGVDbGVhcjogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kaXJlY3Rpb25CeUlkW2NvbERhdGEuY29sdW1uTmFtZV0gPSBzb3J0RGlyZWN0aW9uO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkU29ydENvbHVtbihzb3J0YWJsZTogTWF0U29ydGFibGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZShzb3J0YWJsZSkpIHtcbiAgICAgIC8vIHdvcmthcm91bmQgZm9yIGhhdmluZyBhIHByb3BwZXIgd29yayBpbiBnZXROZXh0U29ydERpcmVjdGlvbjtcbiAgICAgIHRoaXMuZGlyZWN0aW9uID0gdGhpcy5kaXJlY3Rpb25CeUlkW3NvcnRhYmxlLmlkXTtcbiAgICAgIHRoaXMuZGlyZWN0aW9uQnlJZFtzb3J0YWJsZS5pZF0gPSB0aGlzLmdldE5leHRTb3J0RGlyZWN0aW9uKHNvcnRhYmxlKTtcbiAgICAgIHRoaXMuZGlyZWN0aW9uID0gJyc7XG4gICAgICBpZiAodGhpcy5kaXJlY3Rpb25CeUlkW3NvcnRhYmxlLmlkXSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy5kZWxldGVTb3J0Q29sdW1uKHNvcnRhYmxlLmlkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLm11bHRpcGxlU29ydCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUFycmF5ID0gW107XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uQnlJZCA9IHt9O1xuICAgICAgfVxuICAgICAgdGhpcy5hY3RpdmVBcnJheS5wdXNoKHNvcnRhYmxlKTtcbiAgICAgIHRoaXMuZGlyZWN0aW9uQnlJZFtzb3J0YWJsZS5pZF0gPSBzb3J0YWJsZS5zdGFydCA/IHNvcnRhYmxlLnN0YXJ0IDogdGhpcy5zdGFydDtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlRGF0YSA9IHRoaXMuZ2V0U29ydENvbHVtbnMoKTtcbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIHRoaXMub1NvcnRDaGFuZ2UuZW1pdChhY3RpdmVEYXRhKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWxldGVTb3J0Q29sdW1uKGlkOiBzdHJpbmcpIHtcbiAgICBkZWxldGUgdGhpcy5kaXJlY3Rpb25CeUlkW2lkXTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWN0aXZlQXJyYXkuZmluZEluZGV4KGVsZW1lbnQgPT4gZWxlbWVudC5pZCA9PT0gaWQpO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmFjdGl2ZUFycmF5LnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgaXNBY3RpdmUoc29ydGFibGU6IE1hdFNvcnRhYmxlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHRoaXMuYWN0aXZlQXJyYXkuZmluZCgoczogTWF0U29ydGFibGUpID0+IHNvcnRhYmxlLmlkID09PSBzLmlkKSk7XG4gIH1cblxuICBoYXNEaXJlY3Rpb24oaWQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGxldCBkaXJlY3Rpb247XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuZGlyZWN0aW9uQnlJZFtpZF0pKSB7XG4gICAgICBkaXJlY3Rpb24gPSB0aGlzLmRpcmVjdGlvbkJ5SWRbaWRdO1xuICAgIH1cbiAgICByZXR1cm4gKGRpcmVjdGlvbiA9PT0gJ2FzYycgfHwgZGlyZWN0aW9uID09PSAnZGVzYycpO1xuICB9XG5cbiAgZ2V0U29ydGVkRGF0YUJ5U1FMT3JkZXIoZGF0YTogYW55W10sIHNxbE9yZGVyQXJyYXk6IFNRTE9yZGVyW10pOiBhbnlbXSB7XG4gICAgdGhpcy5zZXRTb3J0Q29sdW1ucyhzcWxPcmRlckFycmF5KTtcbiAgICByZXR1cm4gdGhpcy5nZXRTb3J0ZWREYXRhKGRhdGEpO1xuICB9XG5cbiAgZ2V0U29ydGVkRGF0YShkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBjb25zdCBzb3J0Q29sdW1ucyA9IHRoaXMuZ2V0U29ydENvbHVtbnMoKTtcbiAgICBpZiAoc29ydENvbHVtbnMubGVuZ3RoID09PSAwIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgdGhpcy5zb3J0YWJsZXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgdGhpcy5kZXJlZ2lzdGVyKHZhbHVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5zb3J0QnlDb2x1bW5zKGRhdGEsIHNvcnRDb2x1bW5zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzb3J0QnlDb2x1bW5zKGRhdGE6IGFueVtdLCBzb3J0Q29sdW1uczogYW55W10pIHtcbiAgICBjb25zdCBzb3J0RnVuY3Rpb25CaW5kID0gdGhpcy5zb3J0RnVuY3Rpb24uYmluZCh0aGlzKTtcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gc29ydENvbHVtbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IHNvcnRDID0gc29ydENvbHVtbnNbaV07XG4gICAgICB0aGlzLmFjdGl2ZVNvcnRDb2x1bW4gPSBzb3J0Qy5pZDtcbiAgICAgIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9IHNvcnRDLmRpcmVjdGlvbjtcbiAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgIGRhdGEgPSBkYXRhLnNvcnQoc29ydEZ1bmN0aW9uQmluZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBncm91cGVkRGF0YTogT01hdFNvcnRHcm91cGVkRGF0YVtdID0gdGhpcy5nZXREYXRhR3JvdXBlZChkYXRhLCBzb3J0Q29sdW1ucywgaSk7XG4gICAgICAgIGlmIChncm91cGVkRGF0YS5sZW5ndGggPj0gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkYXRhID0gdGhpcy5zb3J0R3JvdXBlZERhdGEoZ3JvdXBlZERhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREYXRhR3JvdXBlZChkYXRhOiBhbnksIHNvcnRDb2x1bW5zOiBhbnlbXSwgaW5kZXg6IG51bWJlcik6IE9NYXRTb3J0R3JvdXBlZERhdGFbXSB7XG4gICAgY29uc3QgcHJvcEFyciA9IFtdO1xuICAgIHNvcnRDb2x1bW5zLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgIGlmIChpIDwgaW5kZXgpIHtcbiAgICAgICAgcHJvcEFyci5wdXNoKGl0ZW0uaWQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChwcm9wQXJyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogT01hdFNvcnRHcm91cGVkRGF0YVtdID0gW107XG4gICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgbGV0IHZhbHVlID0gJyc7XG4gICAgICBwcm9wQXJyLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgIHZhbHVlICs9IGl0ZW1bcHJvcF07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZmlsdGVyZWQgPSByZXN1bHQuZmlsdGVyKHJlc0l0ZW0gPT4gcmVzSXRlbS5rZXkgPT09IHZhbHVlKTtcbiAgICAgIGlmIChmaWx0ZXJlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgIGtleTogdmFsdWUsXG4gICAgICAgICAgdmFsdWVzOiBbaXRlbV1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGZpbHRlcmVkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBmaWx0ZXJlZFswXS52YWx1ZXMucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIHNvcnRHcm91cGVkRGF0YShncm91cGVkRGF0YTogT01hdFNvcnRHcm91cGVkRGF0YVtdKTogYW55W10ge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBncm91cGVkRGF0YS5yZWR1Y2UoKG9iajogYW55LCBpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGFyciA9IGl0ZW0udmFsdWVzO1xuICAgICAgY29uc3Qgc29ydGVkID0gYXJyLmxlbmd0aCA8PSAxID8gYXJyIDogYXJyLnNvcnQoc2VsZi5zb3J0RnVuY3Rpb24uYmluZChzZWxmKSk7XG4gICAgICBvYmoucHVzaCguLi5zb3J0ZWQpO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBzb3J0RnVuY3Rpb24oYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICAgIGxldCBwcm9wZXJ0eUE6IG51bWJlciB8IHN0cmluZyA9ICcnO1xuICAgIGxldCBwcm9wZXJ0eUI6IG51bWJlciB8IHN0cmluZyA9ICcnO1xuICAgIFtwcm9wZXJ0eUEsIHByb3BlcnR5Ql0gPSBbYVt0aGlzLmFjdGl2ZVNvcnRDb2x1bW5dLCBiW3RoaXMuYWN0aXZlU29ydENvbHVtbl1dO1xuXG4gICAgY29uc3QgdmFsdWVBID0gdHlwZW9mIHByb3BlcnR5QSA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6IHByb3BlcnR5QSA9PT0gJycgPyBwcm9wZXJ0eUEgOiBpc05hTigrcHJvcGVydHlBKSA/IHByb3BlcnR5QS50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpIDogK3Byb3BlcnR5QTtcbiAgICBjb25zdCB2YWx1ZUIgPSB0eXBlb2YgcHJvcGVydHlCID09PSAndW5kZWZpbmVkJyA/ICcnIDogcHJvcGVydHlCID09PSAnJyA/IHByb3BlcnR5QiA6IGlzTmFOKCtwcm9wZXJ0eUIpID8gcHJvcGVydHlCLnRvU3RyaW5nKCkudHJpbSgpLnRvTG93ZXJDYXNlKCkgOiArcHJvcGVydHlCO1xuICAgIHJldHVybiAodmFsdWVBIDw9IHZhbHVlQiA/IC0xIDogMSkgKiAodGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/IDEgOiAtMSk7XG4gIH1cblxufVxuIl19
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1tYXQtc29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvc29ydC9vLW1hdC1zb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFlLE1BQU0sd0JBQXdCLENBQUM7QUFHOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFZN0MsTUFBTSxPQUFPLFFBQVMsU0FBUSxPQUFPO0lBTHJDOztRQU9FLGdCQUFXLEdBQXVCLEVBQUUsQ0FBQztRQUNyQyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQU9mLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7S0F5S25FO0lBdktDLElBQUksZUFBZSxDQUFDLEtBQWlCO1FBQ25DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFZO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUU7WUFDMUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDZCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1IsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FB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LEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM5RSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDcEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsWUFBWSxDQUFDLENBQU0sRUFBRSxDQUFNO1FBQ3pCLElBQUksU0FBUyxHQUFvQixFQUFFLENBQUM7UUFDcEMsSUFBSSxTQUFTLEdBQW9CLEVBQUUsQ0FBQztRQUNwQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUM5RSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzRSxDQUFDOztzR0FqTFUsUUFBUTswRkFBUixRQUFROzRGQUFSLFFBQVE7a0JBTHBCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixNQUFNLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxpQkFBaUIsQ0FBQztpQkFDMUQ7OEJBV1UsV0FBVztzQkFEbkIsTUFBTTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U29ydCwgTWF0U29ydGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcblxuaW1wb3J0IHsgU1FMT3JkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy9zcWwtb3JkZXIudHlwZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5cbmV4cG9ydCB0eXBlIE9NYXRTb3J0R3JvdXBlZERhdGEgPSB7XG4gIGtleTogYW55O1xuICB2YWx1ZXM6IGFueVtdO1xufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW29NYXRTb3J0XScsXG4gIGV4cG9ydEFzOiAnb01hdFNvcnQnLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQ6IG9NYXRTb3J0RGlzYWJsZWQnLCAnb01hdFNvcnRDb2x1bW5zJ11cbn0pXG5leHBvcnQgY2xhc3MgT01hdFNvcnQgZXh0ZW5kcyBNYXRTb3J0IHtcblxuICBhY3RpdmVBcnJheTogQXJyYXk8TWF0U29ydGFibGU+ID0gW107XG4gIGRpcmVjdGlvbkJ5SWQ6IGFueSA9IHt9O1xuXG4gIHByb3RlY3RlZCBtdWx0aXBsZVNvcnQ6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBhY3RpdmVTb3J0Q29sdW1uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhY3RpdmVTb3J0RGlyZWN0aW9uOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgnbWF0U29ydENoYW5nZScpXG4gIHJlYWRvbmx5IG9Tb3J0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHNldCBvTWF0U29ydENvbHVtbnModmFsdWU6IFNRTE9yZGVyW10pIHtcbiAgICB0aGlzLnJlc3RhcnQoKTtcbiAgICB0aGlzLnNldFRhYmxlSW5mbyh2YWx1ZSk7XG4gIH1cblxuICBzZXRNdWx0aXBsZVNvcnQodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5tdWx0aXBsZVNvcnQgPSB2YWw7XG4gIH1cblxuICBnZXRTb3J0Q29sdW1ucygpOiBhbnlbXSB7XG4gICAgY29uc3QgYWN0aXZlRGF0YSA9IFtdO1xuICAgIHRoaXMuYWN0aXZlQXJyYXkuZm9yRWFjaCgoczogTWF0U29ydGFibGUpID0+IHtcbiAgICAgIGFjdGl2ZURhdGEucHVzaCh7XG4gICAgICAgIGlkOiBzLmlkLFxuICAgICAgICBkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uQnlJZFtzLmlkXVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjdGl2ZURhdGE7XG4gIH1cblxuICBzZXRTb3J0Q29sdW1ucyhzb3J0Q29sQXJyYXk6IFNRTE9yZGVyW10pIHtcbiAgICB0aGlzLnJlc3RhcnQoKTtcbiAgICB0aGlzLnNldFRhYmxlSW5mbyhzb3J0Q29sQXJyYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXN0YXJ0KCkge1xuICAgIHRoaXMuYWN0aXZlQXJyYXkgPSBbXTtcbiAgICB0aGlzLmRpcmVjdGlvbkJ5SWQgPSB7fTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRUYWJsZUluZm8oc29ydENvbEFycmF5OiBBcnJheTxTUUxPcmRlcj4pIHtcblxuICAgIHNvcnRDb2xBcnJheS5mb3JFYWNoKChjb2xEYXRhOiBTUUxPcmRlcikgPT4ge1xuICAgICAgY29uc3Qgc29ydERpcmVjdGlvbjogYW55ID0gY29sRGF0YS5hc2NlbmRlbnQgPyBDb2Rlcy5BU0NfU09SVCA6IENvZGVzLkRFU0NfU09SVDtcbiAgICAgIHRoaXMuYWN0aXZlQXJyYXkucHVzaCh7XG4gICAgICAgIGlkOiBjb2xEYXRhLmNvbHVtbk5hbWUsXG4gICAgICAgIHN0YXJ0OiBzb3J0RGlyZWN0aW9uLFxuICAgICAgICBkaXNhYmxlQ2xlYXI6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGlyZWN0aW9uQnlJZFtjb2xEYXRhLmNvbHVtbk5hbWVdID0gc29ydERpcmVjdGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFNvcnRDb2x1bW4oc29ydGFibGU6IE1hdFNvcnRhYmxlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBY3RpdmUoc29ydGFibGUpKSB7XG4gICAgICAvLyB3b3JrYXJvdW5kIGZvciBoYXZpbmcgYSBwcm9wcGVyIHdvcmsgaW4gZ2V0TmV4dFNvcnREaXJlY3Rpb247XG4gICAgICB0aGlzLmRpcmVjdGlvbiA9IHRoaXMuZGlyZWN0aW9uQnlJZFtzb3J0YWJsZS5pZF07XG4gICAgICB0aGlzLmRpcmVjdGlvbkJ5SWRbc29ydGFibGUuaWRdID0gdGhpcy5nZXROZXh0U29ydERpcmVjdGlvbihzb3J0YWJsZSk7XG4gICAgICB0aGlzLmRpcmVjdGlvbiA9ICcnO1xuICAgICAgaWYgKHRoaXMuZGlyZWN0aW9uQnlJZFtzb3J0YWJsZS5pZF0gPT09ICcnKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlU29ydENvbHVtbihzb3J0YWJsZS5pZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZVNvcnQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVBcnJheSA9IFtdO1xuICAgICAgICB0aGlzLmRpcmVjdGlvbkJ5SWQgPSB7fTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWN0aXZlQXJyYXkucHVzaChzb3J0YWJsZSk7XG4gICAgICB0aGlzLmRpcmVjdGlvbkJ5SWRbc29ydGFibGUuaWRdID0gc29ydGFibGUuc3RhcnQgPyBzb3J0YWJsZS5zdGFydCA6IHRoaXMuc3RhcnQ7XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZURhdGEgPSB0aGlzLmdldFNvcnRDb2x1bW5zKCk7XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB0aGlzLm9Tb3J0Q2hhbmdlLmVtaXQoYWN0aXZlRGF0YSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVsZXRlU29ydENvbHVtbihpZDogc3RyaW5nKSB7XG4gICAgZGVsZXRlIHRoaXMuZGlyZWN0aW9uQnlJZFtpZF07XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFjdGl2ZUFycmF5LmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IGlkKTtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5hY3RpdmVBcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIGlzQWN0aXZlKHNvcnRhYmxlOiBNYXRTb3J0YWJsZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLmFjdGl2ZUFycmF5LmZpbmQoKHM6IE1hdFNvcnRhYmxlKSA9PiBzb3J0YWJsZS5pZCA9PT0gcy5pZCkpO1xuICB9XG5cbiAgaGFzRGlyZWN0aW9uKGlkOiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgZGlyZWN0aW9uO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmRpcmVjdGlvbkJ5SWRbaWRdKSkge1xuICAgICAgZGlyZWN0aW9uID0gdGhpcy5kaXJlY3Rpb25CeUlkW2lkXTtcbiAgICB9XG4gICAgcmV0dXJuIChkaXJlY3Rpb24gPT09ICdhc2MnIHx8IGRpcmVjdGlvbiA9PT0gJ2Rlc2MnKTtcbiAgfVxuXG4gIGdldFNvcnRlZERhdGFCeVNRTE9yZGVyKGRhdGE6IGFueVtdLCBzcWxPcmRlckFycmF5OiBTUUxPcmRlcltdKTogYW55W10ge1xuICAgIHRoaXMuc2V0U29ydENvbHVtbnMoc3FsT3JkZXJBcnJheSk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U29ydGVkRGF0YShkYXRhKTtcbiAgfVxuXG4gIGdldFNvcnRlZERhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3Qgc29ydENvbHVtbnMgPSB0aGlzLmdldFNvcnRDb2x1bW5zKCk7XG4gICAgaWYgKHNvcnRDb2x1bW5zLmxlbmd0aCA9PT0gMCB8fCBkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHRoaXMuc29ydGFibGVzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIHRoaXMuZGVyZWdpc3Rlcih2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuc29ydEJ5Q29sdW1ucyhkYXRhLCBzb3J0Q29sdW1ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc29ydEJ5Q29sdW1ucyhkYXRhOiBhbnlbXSwgc29ydENvbHVtbnM6IGFueVtdKSB7XG4gICAgY29uc3Qgc29ydEZ1bmN0aW9uQmluZCA9IHRoaXMuc29ydEZ1bmN0aW9uLmJpbmQodGhpcyk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHNvcnRDb2x1bW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBzb3J0QyA9IHNvcnRDb2x1bW5zW2ldO1xuICAgICAgdGhpcy5hY3RpdmVTb3J0Q29sdW1uID0gc29ydEMuaWQ7XG4gICAgICB0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb24gPSBzb3J0Qy5kaXJlY3Rpb247XG4gICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICBkYXRhID0gZGF0YS5zb3J0KHNvcnRGdW5jdGlvbkJpbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZ3JvdXBlZERhdGE6IE9NYXRTb3J0R3JvdXBlZERhdGFbXSA9IHRoaXMuZ2V0RGF0YUdyb3VwZWQoZGF0YSwgc29ydENvbHVtbnMsIGkpO1xuICAgICAgICBpZiAoZ3JvdXBlZERhdGEubGVuZ3RoID49IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IHRoaXMuc29ydEdyb3VwZWREYXRhKGdyb3VwZWREYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGF0YUdyb3VwZWQoZGF0YTogYW55LCBzb3J0Q29sdW1uczogYW55W10sIGluZGV4OiBudW1iZXIpOiBPTWF0U29ydEdyb3VwZWREYXRhW10ge1xuICAgIGNvbnN0IHByb3BBcnIgPSBbXTtcbiAgICBzb3J0Q29sdW1ucy5mb3JFYWNoKChpdGVtLCBpKSA9PiB7XG4gICAgICBpZiAoaSA8IGluZGV4KSB7XG4gICAgICAgIHByb3BBcnIucHVzaChpdGVtLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocHJvcEFyci5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IE9NYXRTb3J0R3JvdXBlZERhdGFbXSA9IFtdO1xuICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9ICcnO1xuICAgICAgcHJvcEFyci5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICB2YWx1ZSArPSBpdGVtW3Byb3BdO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gcmVzdWx0LmZpbHRlcihyZXNJdGVtID0+IHJlc0l0ZW0ua2V5ID09PSB2YWx1ZSk7XG4gICAgICBpZiAoZmlsdGVyZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBrZXk6IHZhbHVlLFxuICAgICAgICAgIHZhbHVlczogW2l0ZW1dXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJlZC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZmlsdGVyZWRbMF0udmFsdWVzLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzb3J0R3JvdXBlZERhdGEoZ3JvdXBlZERhdGE6IE9NYXRTb3J0R3JvdXBlZERhdGFbXSk6IGFueVtdIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gZ3JvdXBlZERhdGEucmVkdWNlKChvYmo6IGFueSwgaXRlbTogYW55KSA9PiB7XG4gICAgICBjb25zdCBhcnIgPSBpdGVtLnZhbHVlcztcbiAgICAgIGNvbnN0IHNvcnRlZCA9IGFyci5sZW5ndGggPD0gMSA/IGFyciA6IGFyci5zb3J0KHNlbGYuc29ydEZ1bmN0aW9uLmJpbmQoc2VsZikpO1xuICAgICAgb2JqLnB1c2goLi4uc29ydGVkKTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgc29ydEZ1bmN0aW9uKGE6IGFueSwgYjogYW55KTogbnVtYmVyIHtcbiAgICBsZXQgcHJvcGVydHlBOiBudW1iZXIgfCBzdHJpbmcgPSAnJztcbiAgICBsZXQgcHJvcGVydHlCOiBudW1iZXIgfCBzdHJpbmcgPSAnJztcbiAgICBbcHJvcGVydHlBLCBwcm9wZXJ0eUJdID0gW2FbdGhpcy5hY3RpdmVTb3J0Q29sdW1uXSwgYlt0aGlzLmFjdGl2ZVNvcnRDb2x1bW5dXTtcbiAgICByZXR1cm4gVXRpbC5zb3J0RnVuY3Rpb24ocHJvcGVydHlBLCBwcm9wZXJ0eUIsIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbik7XG4gIH1cblxufVxuIl19