ontimize-web-ngx 15.6.0-next.3 → 15.6.0-next.5

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 (44) hide show
  1. package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +19 -3
  2. package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +17 -4
  3. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +7 -5
  4. package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +27 -16
  5. package/esm2020/lib/components/grid/o-grid.component.mjs +17 -16
  6. package/esm2020/lib/components/grid/skeketon/o-grid-skeleton.component.mjs +12 -15
  7. package/esm2020/lib/components/index.mjs +2 -1
  8. package/esm2020/lib/components/list/o-list.component.mjs +24 -13
  9. package/esm2020/lib/components/list/skeleton/o-list-skeleton.component.mjs +12 -15
  10. package/esm2020/lib/components/o-repeatable-skeleton.component.mjs +33 -0
  11. package/esm2020/lib/components/o-service-base-component.class.mjs +2 -2
  12. package/esm2020/lib/components/o-skeleton.component.mjs +15 -6
  13. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +5 -19
  14. package/esm2020/lib/components/table/o-table.component.mjs +11 -2
  15. package/esm2020/lib/injection-tokens/index.mjs +2 -1
  16. package/esm2020/lib/interfaces/index.mjs +2 -1
  17. package/esm2020/lib/layouts/app-layout/o-app-layout-base.class.mjs +1 -1
  18. package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +26 -9
  19. package/esm2020/lib/services/factories.mjs +7 -2
  20. package/esm2020/lib/util/codes.mjs +3 -1
  21. package/fesm2015/ontimize-web-ngx.mjs +288 -182
  22. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  23. package/fesm2020/ontimize-web-ngx.mjs +287 -182
  24. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  25. package/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.d.ts +3 -0
  26. package/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.d.ts +1 -0
  27. package/lib/components/app-sidenav/o-app-sidenav.component.d.ts +2 -1
  28. package/lib/components/form/navigation/o-form-navigation.component.d.ts +6 -4
  29. package/lib/components/grid/skeketon/o-grid-skeleton.component.d.ts +4 -7
  30. package/lib/components/index.d.ts +1 -0
  31. package/lib/components/list/o-list.component.d.ts +2 -0
  32. package/lib/components/list/skeleton/o-list-skeleton.component.d.ts +4 -7
  33. package/lib/components/o-repeatable-skeleton.component.d.ts +9 -0
  34. package/lib/components/o-skeleton.component.d.ts +10 -5
  35. package/lib/components/table/extensions/header/o-table-header-components.d.ts +2 -2
  36. package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -10
  37. package/lib/components/table/o-table.component.d.ts +1 -0
  38. package/lib/injection-tokens/index.d.ts +2 -0
  39. package/lib/interfaces/index.d.ts +1 -0
  40. package/lib/layouts/app-layout/o-app-layout-base.class.d.ts +1 -1
  41. package/lib/layouts/app-layout/o-app-layout.component.d.ts +7 -3
  42. package/lib/util/codes.d.ts +3 -0
  43. package/package.json +1 -1
  44. package/theme.scss +69 -69
@@ -355,7 +355,7 @@ export class AbstractOServiceBaseComponent {
355
355
  this.state.totalQueryRecordsNumber = queryRes.totalQueryRecordsNumber;
356
356
  }
357
357
  const pageNumber = this.state.queryRecordOffset == 0 ? 0 : this.dataService?.getPaginationContext().pageNumber;
358
- this.updatePaginationContext({ pageNumber: pageNumber, offset: this.state.queryRecordOffset, totalSize: this.state.totalQueryRecordsNumber });
358
+ this.updatePaginationContext({ pageNumber: pageNumber, offset: this.state.queryRecordOffset, totalSize: this.state.totalQueryRecordsNumber, pageSize: this.state.queryRows });
359
359
  }
360
360
  else {
361
361
  this.updatePaginationContext({ totalSize: queryRes.data.length });
@@ -446,4 +446,4 @@ OServiceBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0",
446
446
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OServiceBaseComponent, decorators: [{
447
447
  type: Directive
448
448
  }] });
449
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1zZXJ2aWNlLWJhc2UtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvby1zZXJ2aWNlLWJhc2UtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBS3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFeEUsT0FBTyxFQUFFLDZCQUE2QixFQUF1QyxNQUFNLDZDQUE2QyxDQUFDO0FBSWpJLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDeEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUV6RCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRztJQUVyRCxh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QUFxQixFQUFFOztpRUFDRztBQUMzQjtJQUFDLHFCQUFxQixFQUFFOzs4RUFDaUI7MkZBckRyQiw2QkFBNkI7a0JBSGxELFNBQVM7bUJBQUM7b0JBQ1QsTUFBTSxFQUFFLHVDQUF1QztpQkFDaEQ7K0ZBZUMsV0FBVyxNQUVYLFdBQVcsTUFHWCxRQUFRLE1BZ0NSLFVBQVUsTUFFVix1QkFBdUIsTUEwSnZCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFOztBQTRSekMsTUFBTSxPQUFPLDRCQUE2QixTQUFRLDZCQUFrRTs7eUhBQXZHLDRCQUE0Qjs2R0FBNUIsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFNBQVM7O0FBT1YsTUFBTSxPQUFPLHFCQUFzQixTQUFRLDZCQUFrRTs7a0hBQWhHLHFCQUFxQjtzR0FBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBpc0Rldk1vZGUsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IFBhZ2luYXRpb25Db250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sb2NhbC1zdG9yYWdlLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Utc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBPRXJyb3JEaWFsb2dNYW5hZ2VyIH0gZnJvbSAnLi4vc2VydmljZXMvby1lcnJvci1kaWFsb2ctbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29udGltaXplL29udGltaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RTZXJ2aWNlQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlLCBEZWZhdWx0U2VydmljZUNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0NvbmZpZ3VyZVNlcnZpY2VBcmdzIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJlLXNlcnZpY2UtYXJncy50eXBlJztcbmltcG9ydCB7IE9RdWVyeURhdGFBcmdzIH0gZnJvbSAnLi4vdHlwZXMvcXVlcnktZGF0YS1hcmdzLnR5cGUnO1xuaW1wb3J0IHsgT1F1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vdHlwZXMvcXVlcnktcGFyYW1zLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNlcnZpY2VVdGlscyB9IGZyb20gJy4uL3V0aWwvc2VydmljZS51dGlscyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9leHBhbmRhYmxlLWNvbnRhaW5lci9vLWV4cGFuZGFibGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS9vLWZvcm0uY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fU0VSVklDRV9CQVNFX0NPTVBPTkVOVCA9IFtcbiAgLy8gYXR0ciBbc3RyaW5nXTogbGlzdCBpZGVudGlmaWVyLiBJdCBpcyBtYW5kYXRvcnkgaWYgZGF0YSBhcmUgcHJvdmlkZWQgdGhyb3VnaCB0aGUgZGF0YSBhdHRyaWJ1dGUuIERlZmF1bHQ6IGVudGl0eSAoaWYgc2V0KS5cbiAgJ29hdHRyOiBhdHRyJyxcblxuICAvLyBzZXJ2aWNlIFtzdHJpbmddOiBKRUUgc2VydmljZSBwYXRoLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3NlcnZpY2UnLFxuXG4gICdzZXJ2aWNlVHlwZSA6IHNlcnZpY2UtdHlwZScsXG5cbiAgLy8gZW50aXR5IFtzdHJpbmddOiBlbnRpdHkgb2YgdGhlIHNlcnZpY2UuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnZW50aXR5JyxcblxuICAvLyBxdWVyeS1vbi1pbml0IFtub3x5ZXNdOiBxdWVyeSBvbiBpbml0LiBEZWZhdWx0OiB5ZXMuXG4gICdxdWVyeU9uSW5pdDogcXVlcnktb24taW5pdCcsXG5cbiAgLy8gcXVlcnktb24taW5pdCBbbm98eWVzXTogcXVlcnkgb24gYmluZC4gRGVmYXVsdDogeWVzLlxuICAncXVlcnlPbkJpbmQ6IHF1ZXJ5LW9uLWJpbmQnLFxuXG4gICdxdWVyeU9uRXZlbnQ6IHF1ZXJ5LW9uLWV2ZW50JyxcblxuICAncGFnZWFibGUnLFxuXG4gIC8vIGNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgb2YgdGhlIGVudGl0eSwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdjb2x1bW5zJyxcblxuICAvLyBrZXlzIFtzdHJpbmddOiBlbnRpdHkga2V5cywgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdrZXlzJyxcblxuICAvLyBwYXJlbnQta2V5cyBbc3RyaW5nXTogcGFyZW50IGtleXMgdG8gZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3BhcmVudEtleXM6IHBhcmVudC1rZXlzJyxcblxuICAvLyBzdGF0aWMtZGF0YSBbQXJyYXk8YW55Pl0gOiB3YXkgdG8gcG9wdWxhdGUgd2l0aCBzdGF0aWMgZGF0YS4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdzdGF0aWNEYXRhOiBzdGF0aWMtZGF0YScsXG5cbiAgLy8gcXVlcnktbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIHF1ZXJpZXMuIERlZmF1bHQ6IHF1ZXJ5LlxuICAncXVlcnlNZXRob2Q6IHF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gcGFnaW5hdGVkLXF1ZXJ5LW1ldGhvZCBbc3RyaW5nXTogbmFtZSBvZiB0aGUgc2VydmljZSBtZXRob2QgdG8gcGVyZm9ybSBwYWdpbmF0ZWQgcXVlcmllcy4gRGVmYXVsdDogYWR2YW5jZWRRdWVyeS5cbiAgJ3BhZ2luYXRlZFF1ZXJ5TWV0aG9kIDogcGFnaW5hdGVkLXF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gcXVlcnktcm93cyBbbnVtYmVyXTogbnVtYmVyIG9mIHJvd3MgcGVyIHBhZ2UuIERlZmF1bHQ6IDEwLlxuICAnb1F1ZXJ5Um93czogcXVlcnktcm93cycsXG5cbiAgLy8gaW5zZXJ0LW1ldGhvZCBbc3RyaW5nXTogbmFtZSBvZiB0aGUgc2VydmljZSBtZXRob2QgdG8gcGVyZm9ybSBpbnNlcnRzLiBEZWZhdWx0OiBpbnNlcnQuXG4gICdpbnNlcnRNZXRob2Q6IGluc2VydC1tZXRob2QnLFxuXG4gIC8vIHVwZGF0ZS1tZXRob2QgW3N0cmluZ106IG5hbWUgb2YgdGhlIHNlcnZpY2UgbWV0aG9kIHRvIHBlcmZvcm0gdXBkYXRlcy4gRGVmYXVsdDogdXBkYXRlLlxuICAndXBkYXRlTWV0aG9kOiB1cGRhdGUtbWV0aG9kJyxcblxuICAvLyBkZWxldGUtbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIGRlbGV0aW9ucy4gRGVmYXVsdDogZGVsZXRlLlxuICAnZGVsZXRlTWV0aG9kOiBkZWxldGUtbWV0aG9kJyxcblxuICAnc3RvcmVTdGF0ZTogc3RvcmUtc3RhdGUnLFxuXG4gIC8vIHF1ZXJ5LXdpdGgtbnVsbC1wYXJlbnQta2V5cyBbc3RyaW5nXVt5ZXN8bm98dHJ1ZXxmYWxzZV06IEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0byB0cmlnZ2VyIHF1ZXJ5IG1ldGhvZCB3aGVuIHBhcmVudC1rZXlzIGZpbHRlciBpcyBudWxsLiBEZWZhdWx0OiBmYWxzZVxuICAncXVlcnlXaXRoTnVsbFBhcmVudEtleXM6IHF1ZXJ5LXdpdGgtbnVsbC1wYXJlbnQta2V5cycsXG5cbiAgLy8gW2Z1bmN0aW9uXTogZnVuY3Rpb24gdG8gZXhlY3V0ZSBvbiBxdWVyeSBlcnJvci4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdxdWVyeUZhbGxiYWNrRnVuY3Rpb246IHF1ZXJ5LWZhbGxiYWNrLWZ1bmN0aW9uJyxcbiAgLy8gLFxuXG4gIC8vICdpbnNlcnRGYWxsYmFja0Z1bmN0aW9uOiBpbnNlcnQtZmFsbGJhY2stZnVuY3Rpb24nLFxuXG4gIC8vICd1cGRhdGVGYWxsYmFja0Z1bmN0aW9uOiB1cGRhdGUtZmFsbGJhY2stZnVuY3Rpb24nLFxuXG4gIC8vICdkZWxldGVGYWxsYmFja0Z1bmN0aW9uOiBkZWxldGUtZmFsbGJhY2stZnVuY3Rpb24nLFxuICAvLyAgY29uZmlndXJlLXNlcnZpY2UtYXJncyBbT0NvbmZpZ3VyZVNlcnZpY2VBcmdzXTogQWxsb3dzIGNvbmZpZ3VyZSBzZXJ2aWNlIC5cbiAgJ2NvbmZpZ3VyZVNlcnZpY2VBcmdzOiBjb25maWd1cmUtc2VydmljZS1hcmdzJ1xuXTtcblxuQERpcmVjdGl2ZSh7XG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19TRVJWSUNFX0JBU0VfQ09NUE9ORU5UXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0T1NlcnZpY2VCYXNlQ29tcG9uZW50PFQgZXh0ZW5kcyBBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZTxBYnN0cmFjdFNlcnZpY2VDb21wb25lbnRTdGF0ZUNsYXNzPj4gaW1wbGVtZW50cyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50LCBPbkNoYW5nZXMge1xuXG4gIHByb3RlY3RlZCBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlO1xuICBjb21wb25lbnRTdGF0ZVNlcnZpY2U6IFQ7XG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgb0Vycm9yRGlhbG9nTWFuYWdlcjogT0Vycm9yRGlhbG9nTWFuYWdlcjtcbiAgcGFyZW50Q29tcG9uZW50OiBBYnN0cmFjdE9TZXJ2aWNlQmFzZUNvbXBvbmVudDxUPjtcblxuICAvKiBpbnB1dHMgdmFyaWFibGVzICovXG4gIG9hdHRyOiBzdHJpbmc7XG4gIHNlcnZpY2U6IHN0cmluZztcbiAgc2VydmljZVR5cGU6IHN0cmluZztcbiAgZW50aXR5OiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBxdWVyeU9uSW5pdDogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBxdWVyeU9uQmluZDogYm9vbGVhbiA9IHRydWU7XG4gIHF1ZXJ5T25FdmVudDogYW55O1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcGFnZWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29sdW1uczogc3RyaW5nO1xuICBrZXlzOiBzdHJpbmc7XG4gIHBhcmVudEtleXM6IHN0cmluZztcbiAgc3RhdGljRGF0YTogQXJyYXk8YW55PjtcbiAgcXVlcnlNZXRob2Q6IHN0cmluZyA9IENvZGVzLlFVRVJZX01FVEhPRDtcbiAgcGFnaW5hdGVkUXVlcnlNZXRob2Q6IHN0cmluZyA9IENvZGVzLlBBR0lOQVRFRF9RVUVSWV9NRVRIT0Q7XG5cbiAgb3JpZ2luYWxRdWVyeVJvd3M6IG51bWJlciA9IENvZGVzLkRFRkFVTFRfUVVFUllfUk9XUztcbiAgcHJvdGVjdGVkIF9xdWVyeVJvd3MgPSB0aGlzLm9yaWdpbmFsUXVlcnlSb3dzO1xuXG4gIHNldCBvUXVlcnlSb3dzKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgPyBwYXJzZUludCh2YWx1ZSwgMTApIDogdmFsdWU7XG4gICAgICB0aGlzLm9yaWdpbmFsUXVlcnlSb3dzID0gdmFsdWU7XG4gICAgICB0aGlzLl9xdWVyeVJvd3MgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgcXVlcnlSb3dzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5Um93cztcbiAgfVxuXG4gIHNldCBxdWVyeVJvd3ModmFsdWU6IG51bWJlcikge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3F1ZXJ5Um93cyA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBpbnNlcnRNZXRob2Q6IHN0cmluZyA9IENvZGVzLklOU0VSVF9NRVRIT0Q7XG4gIHVwZGF0ZU1ldGhvZDogc3RyaW5nID0gQ29kZXMuVVBEQVRFX01FVEhPRDtcbiAgZGVsZXRlTWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5ERUxFVEVfTUVUSE9EO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc3RvcmVTdGF0ZTogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBxdWVyeVdpdGhOdWxsUGFyZW50S2V5czogYm9vbGVhbiA9IGZhbHNlO1xuICBxdWVyeUZhbGxiYWNrRnVuY3Rpb246IChlcnI6IGFueSkgPT4gdm9pZDtcbiAgLy8gaW5zZXJ0RmFsbGJhY2tGdW5jdGlvbjogKGVycjogYW55KSA9PiB2b2lkO1xuICAvLyB1cGRhdGVGYWxsYmFja0Z1bmN0aW9uOiAoZXJyOiBhbnkpID0+IHZvaWQ7XG4gIC8vIGRlbGV0ZUZhbGxiYWNrRnVuY3Rpb246IChlcnI6IGFueSkgPT4gdm9pZDtcbiAgLyogZW5kIG9mIGlucHV0cyB2YXJpYWJsZXMgKi9cblxuICAvKiBwYXJzZWQgaW5wdXRzIHZhcmlhYmxlcyAqL1xuICBwcm90ZWN0ZWQgY29sQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHJvdGVjdGVkIGtleXNBcnJheTogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwcm90ZWN0ZWQgX3BLZXlzRXF1aXYgPSB7fTtcbiAgZGF0YUFycmF5OiBBcnJheTxhbnk+ID0gW107XG4gIHByb3RlY3RlZCBvYXR0ckZyb21FbnRpdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyogZW5kIG9mIHBhcnNlZCBpbnB1dHMgdmFyaWFibGVzICovXG5cbiAgcHJvdGVjdGVkIG9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uOiBhbnk7XG4gIHByb3RlY3RlZCBvbkZvcm1EYXRhU3Vic2NyaWJlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHF1ZXJ5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBkYXRhU2VydmljZTogQmFzZVNlcnZpY2U8U2VydmljZVJlc3BvbnNlPjtcblxuICBwcm90ZWN0ZWQgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGxvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByb3RlY3RlZCBmb3JtOiBPRm9ybUNvbXBvbmVudDtcbiAgcHVibGljIGV4cGFuZGFibGVDb250YWluZXI6IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgYWxyZWFkeVN0b3JlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBxdWVyeU9uRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZjsgLy8gYm9ycmFyXG4gIHByb3RlY3RlZCBxdWVyeUFyZ3VtZW50czogT1F1ZXJ5UGFyYW1zO1xuXG4gIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcbiAgcHJvdGVjdGVkIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcblxuICBwcm90ZWN0ZWQgc3FsVHlwZXMgPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFib3J0UXVlcnk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcm90ZWN0ZWQgY29uZmlndXJlU2VydmljZUFyZ3M6IE9Db25maWd1cmVTZXJ2aWNlQXJncztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PERpYWxvZ1NlcnZpY2U+KERpYWxvZ1NlcnZpY2UgYXMgVHlwZTxEaWFsb2dTZXJ2aWNlPik7XG4gICAgdGhpcy5vRXJyb3JEaWFsb2dNYW5hZ2VyID0gdGhpcy5pbmplY3Rvci5nZXQ8T0Vycm9yRGlhbG9nTWFuYWdlcj4oT0Vycm9yRGlhbG9nTWFuYWdlciBhcyBUeXBlPE9FcnJvckRpYWxvZ01hbmFnZXI+KTtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxMb2NhbFN0b3JhZ2VTZXJ2aWNlPihMb2NhbFN0b3JhZ2VTZXJ2aWNlIGFzIFR5cGU8TG9jYWxTdG9yYWdlU2VydmljZT4pO1xuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8VD4oQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2UgYXMgVHlwZTxUPik7XG4gICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldDxSb3V0ZXI+KFJvdXRlciBhcyBUeXBlPFJvdXRlcj4pO1xuICAgIHRoaXMuYWN0Um91dGUgPSB0aGlzLmluamVjdG9yLmdldDxBY3RpdmF0ZWRSb3V0ZT4oQWN0aXZhdGVkUm91dGUgYXMgVHlwZTxBY3RpdmF0ZWRSb3V0ZT4pO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmNkID0gdGhpcy5pbmplY3Rvci5nZXQ8Q2hhbmdlRGV0ZWN0b3JSZWY+KENoYW5nZURldGVjdG9yUmVmIGFzIFR5cGU8Q2hhbmdlRGV0ZWN0b3JSZWY+KTtcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9Gb3JtQ29tcG9uZW50PihPRm9ybUNvbXBvbmVudCBhcyBUeXBlPE9Gb3JtQ29tcG9uZW50Pik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gbm8gcGFyZW50IGZvcm1cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZXhwYW5kYWJsZUNvbnRhaW5lciA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50PihPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudCBhcyBUeXBlPE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50Pik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTm8gcGFyZW50IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IEFic3RyYWN0U2VydmljZUNvbXBvbmVudFN0YXRlQ2xhc3Mge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5zdGF0ZTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm9hdHRyKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLmVudGl0eSkpIHtcbiAgICAgIHRoaXMub2F0dHIgPSB0aGlzLmVudGl0eS5yZXBsYWNlKCcuJywgJ18nKTtcbiAgICAgIHRoaXMub2F0dHJGcm9tRW50aXR5ID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5rZXlzQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5rZXlzKTtcbiAgICB0aGlzLmNoZWNrQ29sdW1ucygpO1xuICAgIGNvbnN0IHBrQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5wYXJlbnRLZXlzKTtcbiAgICB0aGlzLl9wS2V5c0VxdWl2ID0gVXRpbC5wYXJzZVBhcmVudEtleXNFcXVpdmFsZW5jZXMocGtBcnJheSwgQ29kZXMuQ09MVU1OU19BTElBU19TRVBBUkFUT1IpO1xuXG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGlmICh0aGlzLnN0YXRpY0RhdGEpIHtcbiAgICAgIHRoaXMucXVlcnlPbkJpbmQgPSBmYWxzZTtcbiAgICAgIHRoaXMucXVlcnlPbkluaXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0RGF0YUFycmF5KHRoaXMuc3RhdGljRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uZmlndXJlU2VydmljZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm0gJiYgVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhU2VydmljZSkpIHtcbiAgICAgIHRoaXMuc2V0Rm9ybUNvbXBvbmVudCh0aGlzLmZvcm0pO1xuICAgIH1cblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnF1ZXJ5T25FdmVudCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5xdWVyeU9uRXZlbnQuc3Vic2NyaWJlKSkge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLnF1ZXJ5T25FdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMucXVlcnlPbkV2ZW50LnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHZhbHVlKSB8fCB0aGlzLnF1ZXJ5V2l0aE51bGxQYXJlbnRLZXlzKSB7XG4gICAgICAgICAgc2VsZi5xdWVyeURhdGEoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLnF1ZXJ5RmFsbGJhY2tGdW5jdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5xdWVyeUZhbGxiYWNrRnVuY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tDb2x1bW5zKCkge1xuICAgIHRoaXMuY29sQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5jb2x1bW5zLCB0cnVlKTtcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMua2V5c0FycmF5LmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1ucy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBJbiB0aGUgY29tcG9uZW50ICcke3RoaXMub2F0dHJ9JywgdGhlIGtleSAnJHtrZXl9JyBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGNvbHVtbnMgZGVmaW5pdGlvbiBhbmQgc29tZSBmdW5jdGlvbmFsaXRpZXMgbWF5IG5vdCB3b3JrIGNvcnJlY3RseWApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpO1xuXG4gICAgdGhpcy5hYm9ydFF1ZXJ5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMucXVlcnlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREYXRhKFtdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMub25Gb3JtRGF0YVN1YnNjcmliZSkge1xuICAgICAgdGhpcy5vbkZvcm1EYXRhU3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnF1ZXJ5T25FdmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5xdWVyeU9uRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FuU2V0U3RhdGljRGF0YShzdGF0aWNEYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoc3RhdGljRGF0YSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xuICAgIGlmICh0aGlzLmNhblNldFN0YXRpY0RhdGEoY2hhbmdlcy5zdGF0aWNEYXRhPy5jdXJyZW50VmFsdWUpKSB7XG4gICAgICB0aGlzLnNldERhdGEoY2hhbmdlcy5zdGF0aWNEYXRhLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFtdKVxuICBiZWZvcmV1bmxvYWRIYW5kbGVyKCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gIH1cblxuICBnZXRBdHRyaWJ1dGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vYXR0cjtcbiAgfVxuXG4gIGdldENvbXBvbmVudEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgpO1xuICB9XG5cbiAgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgfVxuXG4gIGdldFJvdXRlS2V5KCk6IHN0cmluZyB7XG4gICAgbGV0IHJvdXRlID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIHRoaXMuYWN0Um91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHJvdXRlID0gcm91dGUucmVwbGFjZShwYXJhbXNba2V5XSwga2V5KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIGdldEtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmtleXNBcnJheTtcbiAgfVxuXG4gIGNvbmZpZ3VyZVNlcnZpY2UoKSB7XG4gICAgbGV0IGNvbmZpZ3VyZVNlcnZpY2VBcmdzOiBPQ29uZmlndXJlU2VydmljZUFyZ3MgPSB7IGluamVjdG9yOiB0aGlzLmluamVjdG9yLCBiYXNlU2VydmljZTogT250aW1pemVTZXJ2aWNlLCBlbnRpdHk6IHRoaXMuZW50aXR5LCBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsIHNlcnZpY2VUeXBlOiB0aGlzLnNlcnZpY2VUeXBlIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb25maWd1cmVTZXJ2aWNlQXJncykpIHtcbiAgICAgIGNvbmZpZ3VyZVNlcnZpY2VBcmdzID0geyAuLi5jb25maWd1cmVTZXJ2aWNlQXJncywgLi4udGhpcy5jb25maWd1cmVTZXJ2aWNlQXJncyB9O1xuICAgIH1cblxuICAgIHRoaXMuZGF0YVNlcnZpY2UgPSBVdGlsLmNvbmZpZ3VyZVNlcnZpY2UoY29uZmlndXJlU2VydmljZUFyZ3MpO1xuICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkNvbnRleHQoeyBwYWdlTnVtYmVyOiAwLCBwYWdlU2l6ZTogdGhpcy5xdWVyeVJvd3MsIG9mZnNldDogMCwgdG90YWxTaXplOiAwIH0pO1xuICB9XG5cbiAgZ2V0RGF0YUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFBcnJheTtcbiAgfVxuXG4gIHNldERhdGFBcnJheShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAvKiBUaGUgby10YWJsZSBoYXMgb3duIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kICovXG4gICAgaWYgKFV0aWwuaXNBcnJheShkYXRhKSkge1xuICAgICAgdGhpcy5kYXRhQXJyYXkgPSBkYXRhO1xuICAgIH0gZWxzZSBpZiAoVXRpbC5pc09iamVjdChkYXRhKSkge1xuICAgICAgdGhpcy5kYXRhQXJyYXkgPSBbZGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignQ29tcG9uZW50IGhhcyByZWNlaXZlZCBub3Qgc3VwcG9ydGVkIHNlcnZpY2UgZGF0YS4gU3VwcG9ydGVkIGRhdGEgYXJlIEFycmF5IG9yIE9iamVjdCcpO1xuICAgICAgdGhpcy5kYXRhQXJyYXkgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhQXJyYXkgaW5zdGFuY2VvZiBBcnJheSAmJiB0aGlzLmRhdGFBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2U/LnJlaW5pdGlhbGl6ZVBhZ2luYXRpb25Db250ZXh0KHRoaXMucXVlcnlSb3dzKTtcbiAgICB9XG5cbiAgfVxuXG4gIHB1YmxpYyBzZXRGb3JtQ29tcG9uZW50KGZvcm06IE9Gb3JtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmZvcm0pKSB7XG4gICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnF1ZXJ5T25CaW5kKSB7XG4gICAgICB0aGlzLm9uRm9ybURhdGFTdWJzY3JpYmUgPSB0aGlzLmZvcm0ub25EYXRhTG9hZGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLnBhZ2VhYmxlID8gdGhpcy5yZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KCkgOiB0aGlzLnJlbG9hZERhdGEoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcmVudEtleXNGcm9tQ29udGV4dChwYXJlbnRLZXlzOiBvYmplY3QsIGNvbnRleHQ6IGFueSkge1xuICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICBjb25zdCBjaGVja1JvdXRlUGFyYW1zUmVjdXJzaXZlID0gdGhpcy5yb3V0ZXIucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSAhPT0gJ2Fsd2F5cyc7XG4gICAgaWYgKGNvbnRleHQgaW5zdGFuY2VvZiBPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudCkge1xuICAgICAgcmVzdWx0ID0gU2VydmljZVV0aWxzLmdldFBhcmVudEtleXNGcm9tRXhwYW5kYWJsZUNvbnRhaW5lcihwYXJlbnRLZXlzLCBjb250ZXh0LCB0aGlzLmFjdFJvdXRlLCBjaGVja1JvdXRlUGFyYW1zUmVjdXJzaXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gU2VydmljZVV0aWxzLmdldFBhcmVudEtleXNGcm9tRm9ybShwYXJlbnRLZXlzLCBjb250ZXh0LCB0aGlzLmFjdFJvdXRlLCBjaGVja1JvdXRlUGFyYW1zUmVjdXJzaXZlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcblxuICB9XG5cbiAgcHVibGljIGNsZWFyRGF0YSgpIHtcbiAgICB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID0gMDtcbiAgICB0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyID0gMDtcbiAgICB0aGlzLnNldERhdGEoW10sIFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBxdWVyeURhdGEoZmlsdGVyPzogYW55LCBvdnJyQXJncz86IE9RdWVyeURhdGFBcmdzKTogdm9pZCB7XG5cbiAgICBjb25zdCBxdWVyeU1ldGhvZE5hbWUgPSB0aGlzLnBhZ2VhYmxlID8gdGhpcy5wYWdpbmF0ZWRRdWVyeU1ldGhvZCA6IHRoaXMucXVlcnlNZXRob2Q7XG5cbiAgICBpZiAoIXRoaXMuZGF0YVNlcnZpY2UgfHwgIShxdWVyeU1ldGhvZE5hbWUgaW4gdGhpcy5kYXRhU2VydmljZSkgfHwgIXRoaXMuZW50aXR5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlclBhcmVudEtleXMgPSB0aGlzLmdldFBhcmVudEtleXNWYWx1ZXMoKTtcbiAgICBpZiAoIVNlcnZpY2VVdGlscy5maWx0ZXJDb250YWluc0FsbFBhcmVudEtleXMoZmlsdGVyUGFyZW50S2V5cywgdGhpcy5fcEtleXNFcXVpdikgJiYgIXRoaXMucXVlcnlXaXRoTnVsbFBhcmVudEtleXMpIHtcbiAgICAgIHRoaXMuc2V0RGF0YShbXSwgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5xdWVyeVN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG5cbiAgICAgIC8vIGVuc3VyaW5nIGZhbHNlIHZhbHVlXG4gICAgICB0aGlzLmFib3J0UXVlcnkubmV4dChmYWxzZSk7XG5cblxuICAgICAgaWYgKHRoaXMuYWJvcnRRdWVyeS52YWx1ZSkge1xuICAgICAgICB0aGlzLmNsZWFyRGF0YSgpO1xuICAgICAgICAvKiogIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpIGlzIHVzZWQgdG8gdXBkYXRlIGxvYWRpbmdTdWJqZWN0IHZhbHVlICh0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7IGluIGxpbmUgMzc3KVxuICAgICAgICAgKiAgYmVmb3JlIHVzaW5nIHRoZSBuZXh0IGxpbmUgYW5kIHNvIHVwZGF0ZSB0aGUgb1RhYmxlRXhwYW5kZWRGb290ZXIgZGlyZWN0aXZlIGFuZCBkaXNwbGF5IHRoZSBtZXNzYWdlXG4gICAgICAgICAqIHRoYXQgdGhlcmUgYXJlIG5vIHJlc3VsdHMgd2hlbiB0aGUgcXVlcnkgaXMgYWJvcnRlZCovXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucXVlcnlBcmd1bWVudHMgPSB0aGlzLmdldFF1ZXJ5QXJndW1lbnRzKGZpbHRlciwgb3ZyckFyZ3MpO1xuXG4gICAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhU2VydmljZVtxdWVyeU1ldGhvZE5hbWVdKC4uLnRoaXMuZGF0YVNlcnZpY2UucmVxdWVzdEFyZ3VtZW50QWRhcHRlci5wYXJzZVF1ZXJ5UGFyYW1ldGVycyh0aGlzLnF1ZXJ5QXJndW1lbnRzKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBTZXJ2aWNlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgICB0aGlzLnNxbFR5cGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChVdGlsLmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgICAgZGF0YSA9IHJlcztcbiAgICAgICAgICAgIHRoaXMuc3FsVHlwZXMgPSB7fTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgICAgICAgY29uc3QgYXJyRGF0YSA9IChyZXMuZGF0YSAhPT0gdW5kZWZpbmVkKSA/IHJlcy5kYXRhIDogW107XG4gICAgICAgICAgICBkYXRhID0gVXRpbC5pc0FycmF5KGFyckRhdGEpID8gYXJyRGF0YSA6IFtdO1xuICAgICAgICAgICAgdGhpcy5zcWxUeXBlcyA9IHJlcy5zcWxUeXBlcztcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkluZm8ocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnNldERhdGEoZGF0YSwgdGhpcy5zcWxUeXBlcywgKG92cnJBcmdzICYmIG92cnJBcmdzLnJlcGxhY2UpKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0RGF0YShbXSwgW10pO1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeUZhbGxiYWNrRnVuY3Rpb24oZXJyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vRXJyb3JEaWFsb2dNYW5hZ2VyLm9wZW5FcnJvckRpYWxvZyhlcnIpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbG9hZERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeURhdGEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWxvYWRzIHRoZSBjb21wb25lbnQgZGF0YSBhbmQgcmVzdGFydHMgdGhlIHBhZ2luYXRpb24uXG4gICAqL1xuICByZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RpbmcgdGhlIGdpdmVuIHJlY29yZCBrZXlzXG4gICAqIEBwYXJhbSBpdGVtIHJlY29yZCBvYmplY3RcbiAgICogQHJldHVybnMgb2JqZWN0IGNvbnRhaW5pbmcgaXRlbSBvYmplY3QgcHJvcGVydGllcyBjb250YWluZWQgaW4ga2V5c0FycmF5XG4gICAqL1xuICBleHRyYWN0S2V5c0Zyb21SZWNvcmQoaXRlbTogYW55KTogb2JqZWN0IHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBpZiAoVXRpbC5pc09iamVjdChpdGVtKSkge1xuICAgICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoaXRlbVtrZXldKSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gaXRlbVtrZXldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldEF0dHJpYnV0ZXNWYWx1ZXNUb1F1ZXJ5KCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29sQXJyYXk7XG4gICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cbiAgZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyOiBvYmplY3QsIG92cnJBcmdzOiBPUXVlcnlEYXRhQXJncyA9IHt9KTogT1F1ZXJ5UGFyYW1zIHtcbiAgICBjb25zdCBjb21wRmlsdGVyID0gdGhpcy5nZXRDb21wb25lbnRGaWx0ZXIoZmlsdGVyKTtcbiAgICBjb25zdCBxdWVyeUNvbHMgPSB0aGlzLmdldEF0dHJpYnV0ZXNWYWx1ZXNUb1F1ZXJ5KCk7XG4gICAgY29uc3Qgc3FsVHlwZXMgPSAob3ZyckFyZ3MgJiYgb3ZyckFyZ3MuaGFzT3duUHJvcGVydHkoJ3NxbHR5cGVzJykpID8gb3ZyckFyZ3Muc3FsdHlwZXMgOiB0aGlzLmZvcm0gPyB0aGlzLmZvcm0uZ2V0QXR0cmlidXRlc1NRTFR5cGVzKCkgOiB7fTtcblxuICAgIGlmICh0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICBjb25zdCBxdWVyeVJlY29yZE9mZnNldCA9IHRoaXMuc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQgPyB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0IDogMDtcbiAgICAgIG92cnJBcmdzLm9mZnNldCA9IG92cnJBcmdzPy5oYXNPd25Qcm9wZXJ0eSgnb2Zmc2V0JykgPyBvdnJyQXJncy5vZmZzZXQgOiBxdWVyeVJlY29yZE9mZnNldDtcbiAgICAgIG92cnJBcmdzLmxlbmd0aCA9IG92cnJBcmdzPy5oYXNPd25Qcm9wZXJ0eSgnbGVuZ3RoJykgPyBvdnJyQXJncy5sZW5ndGggOiB0aGlzLnF1ZXJ5Um93cztcblxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXI6IGNvbXBGaWx0ZXIsXG4gICAgICBjb2x1bW5zOiBxdWVyeUNvbHMsXG4gICAgICBlbnRpdHk6IHRoaXMuZW50aXR5LFxuICAgICAgcGFnZWFibGU6IHRoaXMucGFnZWFibGUsXG4gICAgICBzcWxUeXBlczogc3FsVHlwZXMsXG4gICAgICBvdnJyQXJnczogb3ZyckFyZ3MsXG4gICAgICBzb3J0OiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVBhZ2luYXRpb25JbmZvKHF1ZXJ5UmVzOiBTZXJ2aWNlUmVzcG9uc2UpIHtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgaWYgKHF1ZXJ5UmVzLnN0YXJ0UmVjb3JkSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCByZXN1bHRFbmRJbmRleCA9IHF1ZXJ5UmVzLnN0YXJ0UmVjb3JkSW5kZXggKyAocXVlcnlSZXMuZGF0YSA/IHF1ZXJ5UmVzLmRhdGEubGVuZ3RoIDogMCk7XG4gICAgICAgIHRoaXMuc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQgPSByZXN1bHRFbmRJbmRleDtcbiAgICAgIH1cbiAgICAgIGlmIChxdWVyeVJlcy50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXIgPSBxdWVyeVJlcy50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcjtcbiAgICAgIH1cbiAgICAgIC8qIHBhZ2VOdW1iZXIgPSAwIGlzIHJlaW5pdGlhbGl6ZWQgd2hlbiBpdCBnZW5lcmF0ZXMgYSBzZWFyY2ggICovXG4gICAgICBjb25zdCBwYWdlTnVtYmVyID0gdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldCA9PSAwID8gMCA6IHRoaXMuZGF0YVNlcnZpY2U/LmdldFBhZ2luYXRpb25Db250ZXh0KCkucGFnZU51bWJlcjtcbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkNvbnRleHQoeyBwYWdlTnVtYmVyOiBwYWdlTnVtYmVyLCBvZmZzZXQ6IHRoaXMuc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQsIHRvdGFsU2l6ZTogdGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVQYWdpbmF0aW9uQ29udGV4dCh7IHRvdGFsU2l6ZTogcXVlcnlSZXMuZGF0YS5sZW5ndGggfSk7XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBhZ2luYXRpb25Db250ZXh0KHBhZ2luYXRpb25Db250ZXh0OiBQYWdpbmF0aW9uQ29udGV4dCkge1xuICAgIGlmICghdGhpcy5wYWdlYWJsZSkge1xuICAgICAgZGVsZXRlIHBhZ2luYXRpb25Db250ZXh0Lm9mZnNldDtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFTZXJ2aWNlPy5zZXRQYWdpbmF0aW9uQ29udGV4dChwYWdpbmF0aW9uQ29udGV4dCk7XG4gIH1cblxuICBnZXRUb3RhbFJlY29yZHNOdW1iZXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcikgPyB0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0Q29udGV4dENvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmRhYmxlQ29udGFpbmVyIHx8IHRoaXMuZm9ybTtcbiAgfVxuXG4gIGdldENvbXBvbmVudEZpbHRlcihleGlzdGluZ0ZpbHRlcjogYW55ID0ge30pOiBhbnkge1xuICAgIGNvbnN0IGZpbHRlclBhcmVudEtleXMgPSB0aGlzLmdldFBhcmVudEtleXNGcm9tQ29udGV4dCh0aGlzLl9wS2V5c0VxdWl2LCB0aGlzLmdldENvbnRleHRDb21wb25lbnQoKSk7XG4gICAgZXhpc3RpbmdGaWx0ZXIgPSB7IC4uLmV4aXN0aW5nRmlsdGVyIHx8IHt9LCAuLi5maWx0ZXJQYXJlbnRLZXlzIH07XG4gICAgcmV0dXJuIGV4aXN0aW5nRmlsdGVyO1xuICB9XG5cbiAgZ2V0U3FsVHlwZXMoKSB7XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHRoaXMuc3FsVHlwZXMpID8gdGhpcy5zcWxUeXBlcyA6IHt9O1xuICB9XG5cbiAgZ2V0UGFyZW50S2V5c1ZhbHVlcygpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0Q29tcG9uZW50KCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UGFyZW50S2V5c0Zyb21Db250ZXh0KHRoaXMuX3BLZXlzRXF1aXYsIGNvbnRleHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVN0YXRlU3RvcmFnZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlICYmIHRoaXMuc3RvcmVTdGF0ZSAmJiAhdGhpcy5hbHJlYWR5U3RvcmVkKSB7XG4gICAgICB0aGlzLmFscmVhZHlTdG9yZWQgPSB0cnVlO1xuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZUNvbXBvbmVudFN0b3JhZ2UodGhpcywgdGhpcy5nZXRSb3V0ZUtleSgpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RGF0YShkYXRhOiBhbnksIHNxbFR5cGVzPzogYW55LCByZXBsYWNlPzogYm9vbGVhbik6IHZvaWQge1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgcmVnaXN0ZXJMb2NhbFN0b3JhZ2VTZXJ2aWNlUm91dGVDaGFuZ2UoKSB7XG4gICAgaWYgKHRoaXMuc3RvcmVTdGF0ZSkge1xuICAgICAgdGhpcy5vblJvdXRlQ2hhbmdlU3RvcmFnZVN1YnNjcmlwdGlvbiA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5vblJvdXRlQ2hhbmdlLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlU3RvcmFnZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgRGVmYXVsdE9TZXJ2aWNlQmFzZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0T1NlcnZpY2VCYXNlQ29tcG9uZW50PERlZmF1bHRTZXJ2aWNlQ29tcG9uZW50U3RhdGVTZXJ2aWNlPiB7XG5cbn1cblxuLyogVGhpcyBjbGFzcyBpcyBiZWluZyBkZWZpbmVkIHRvIG1hbnRhaW4gdGhlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMsIHVzZSBEZWZhdWx0T1NlcnZpY2VCYXNlQ29tcG9uZW50Ki9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIE9TZXJ2aWNlQmFzZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0T1NlcnZpY2VCYXNlQ29tcG9uZW50PERlZmF1bHRTZXJ2aWNlQ29tcG9uZW50U3RhdGVTZXJ2aWNlPiB7XG5cbn1cbiJdfQ==
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1zZXJ2aWNlLWJhc2UtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvby1zZXJ2aWNlLWJhc2UtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBS3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFeEUsT0FBTyxFQUFFLDZCQUE2QixFQUF1QyxNQUFNLDZDQUE2QyxDQUFDO0FBSWpJLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDeEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUV6RCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRztJQUVyRCxh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QjtJQUFDLHFCQUFxQixFQUFFOzsrREFDRTtBQStCMUI7SUFBQyxxQkFBcUIsRUFBRTs7aUVBQ0c7QUFDM0I7SUFBQyxxQkFBcUIsRUFBRTs7OEVBQ2lCOzJGQXJEckIsNkJBQTZCO2tCQUhsRCxTQUFTO21CQUFDO29CQUNULE1BQU0sRUFBRSx1Q0FBdUM7aUJBQ2hEOytGQWVDLFdBQVcsTUFFWCxXQUFXLE1BR1gsUUFBUSxNQWdDUixVQUFVLE1BRVYsdUJBQXVCLE1BMEp2QixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRTs7QUE0UnpDLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSw2QkFBa0U7O3lIQUF2Ryw0QkFBNEI7NkdBQTVCLDRCQUE0QjsyRkFBNUIsNEJBQTRCO2tCQUR4QyxTQUFTOztBQU9WLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSw2QkFBa0U7O2tIQUFoRyxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbmplY3RvciwgaXNEZXZNb2RlLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29udGV4dCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGFnaW5hdGlvbi1jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sb2NhbC1zdG9yYWdlLWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Utc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBPRXJyb3JEaWFsb2dNYW5hZ2VyIH0gZnJvbSAnLi4vc2VydmljZXMvby1lcnJvci1kaWFsb2ctbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29udGltaXplL29udGltaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RTZXJ2aWNlQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLmNsYXNzJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50U3RhdGVTZXJ2aWNlLCBEZWZhdWx0U2VydmljZUNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0NvbmZpZ3VyZVNlcnZpY2VBcmdzIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJlLXNlcnZpY2UtYXJncy50eXBlJztcbmltcG9ydCB7IE9RdWVyeURhdGFBcmdzIH0gZnJvbSAnLi4vdHlwZXMvcXVlcnktZGF0YS1hcmdzLnR5cGUnO1xuaW1wb3J0IHsgT1F1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vdHlwZXMvcXVlcnktcGFyYW1zLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNlcnZpY2VVdGlscyB9IGZyb20gJy4uL3V0aWwvc2VydmljZS51dGlscyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9leHBhbmRhYmxlLWNvbnRhaW5lci9vLWV4cGFuZGFibGUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS9vLWZvcm0uY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fU0VSVklDRV9CQVNFX0NPTVBPTkVOVCA9IFtcbiAgLy8gYXR0ciBbc3RyaW5nXTogbGlzdCBpZGVudGlmaWVyLiBJdCBpcyBtYW5kYXRvcnkgaWYgZGF0YSBhcmUgcHJvdmlkZWQgdGhyb3VnaCB0aGUgZGF0YSBhdHRyaWJ1dGUuIERlZmF1bHQ6IGVudGl0eSAoaWYgc2V0KS5cbiAgJ29hdHRyOiBhdHRyJyxcblxuICAvLyBzZXJ2aWNlIFtzdHJpbmddOiBKRUUgc2VydmljZSBwYXRoLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3NlcnZpY2UnLFxuXG4gICdzZXJ2aWNlVHlwZSA6IHNlcnZpY2UtdHlwZScsXG5cbiAgLy8gZW50aXR5IFtzdHJpbmddOiBlbnRpdHkgb2YgdGhlIHNlcnZpY2UuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAnZW50aXR5JyxcblxuICAvLyBxdWVyeS1vbi1pbml0IFtub3x5ZXNdOiBxdWVyeSBvbiBpbml0LiBEZWZhdWx0OiB5ZXMuXG4gICdxdWVyeU9uSW5pdDogcXVlcnktb24taW5pdCcsXG5cbiAgLy8gcXVlcnktb24taW5pdCBbbm98eWVzXTogcXVlcnkgb24gYmluZC4gRGVmYXVsdDogeWVzLlxuICAncXVlcnlPbkJpbmQ6IHF1ZXJ5LW9uLWJpbmQnLFxuXG4gICdxdWVyeU9uRXZlbnQ6IHF1ZXJ5LW9uLWV2ZW50JyxcblxuICAncGFnZWFibGUnLFxuXG4gIC8vIGNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgb2YgdGhlIGVudGl0eSwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdjb2x1bW5zJyxcblxuICAvLyBrZXlzIFtzdHJpbmddOiBlbnRpdHkga2V5cywgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdrZXlzJyxcblxuICAvLyBwYXJlbnQta2V5cyBbc3RyaW5nXTogcGFyZW50IGtleXMgdG8gZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3BhcmVudEtleXM6IHBhcmVudC1rZXlzJyxcblxuICAvLyBzdGF0aWMtZGF0YSBbQXJyYXk8YW55Pl0gOiB3YXkgdG8gcG9wdWxhdGUgd2l0aCBzdGF0aWMgZGF0YS4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdzdGF0aWNEYXRhOiBzdGF0aWMtZGF0YScsXG5cbiAgLy8gcXVlcnktbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIHF1ZXJpZXMuIERlZmF1bHQ6IHF1ZXJ5LlxuICAncXVlcnlNZXRob2Q6IHF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gcGFnaW5hdGVkLXF1ZXJ5LW1ldGhvZCBbc3RyaW5nXTogbmFtZSBvZiB0aGUgc2VydmljZSBtZXRob2QgdG8gcGVyZm9ybSBwYWdpbmF0ZWQgcXVlcmllcy4gRGVmYXVsdDogYWR2YW5jZWRRdWVyeS5cbiAgJ3BhZ2luYXRlZFF1ZXJ5TWV0aG9kIDogcGFnaW5hdGVkLXF1ZXJ5LW1ldGhvZCcsXG5cbiAgLy8gcXVlcnktcm93cyBbbnVtYmVyXTogbnVtYmVyIG9mIHJvd3MgcGVyIHBhZ2UuIERlZmF1bHQ6IDEwLlxuICAnb1F1ZXJ5Um93czogcXVlcnktcm93cycsXG5cbiAgLy8gaW5zZXJ0LW1ldGhvZCBbc3RyaW5nXTogbmFtZSBvZiB0aGUgc2VydmljZSBtZXRob2QgdG8gcGVyZm9ybSBpbnNlcnRzLiBEZWZhdWx0OiBpbnNlcnQuXG4gICdpbnNlcnRNZXRob2Q6IGluc2VydC1tZXRob2QnLFxuXG4gIC8vIHVwZGF0ZS1tZXRob2QgW3N0cmluZ106IG5hbWUgb2YgdGhlIHNlcnZpY2UgbWV0aG9kIHRvIHBlcmZvcm0gdXBkYXRlcy4gRGVmYXVsdDogdXBkYXRlLlxuICAndXBkYXRlTWV0aG9kOiB1cGRhdGUtbWV0aG9kJyxcblxuICAvLyBkZWxldGUtbWV0aG9kIFtzdHJpbmddOiBuYW1lIG9mIHRoZSBzZXJ2aWNlIG1ldGhvZCB0byBwZXJmb3JtIGRlbGV0aW9ucy4gRGVmYXVsdDogZGVsZXRlLlxuICAnZGVsZXRlTWV0aG9kOiBkZWxldGUtbWV0aG9kJyxcblxuICAnc3RvcmVTdGF0ZTogc3RvcmUtc3RhdGUnLFxuXG4gIC8vIHF1ZXJ5LXdpdGgtbnVsbC1wYXJlbnQta2V5cyBbc3RyaW5nXVt5ZXN8bm98dHJ1ZXxmYWxzZV06IEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0byB0cmlnZ2VyIHF1ZXJ5IG1ldGhvZCB3aGVuIHBhcmVudC1rZXlzIGZpbHRlciBpcyBudWxsLiBEZWZhdWx0OiBmYWxzZVxuICAncXVlcnlXaXRoTnVsbFBhcmVudEtleXM6IHF1ZXJ5LXdpdGgtbnVsbC1wYXJlbnQta2V5cycsXG5cbiAgLy8gW2Z1bmN0aW9uXTogZnVuY3Rpb24gdG8gZXhlY3V0ZSBvbiBxdWVyeSBlcnJvci4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdxdWVyeUZhbGxiYWNrRnVuY3Rpb246IHF1ZXJ5LWZhbGxiYWNrLWZ1bmN0aW9uJyxcbiAgLy8gLFxuXG4gIC8vICdpbnNlcnRGYWxsYmFja0Z1bmN0aW9uOiBpbnNlcnQtZmFsbGJhY2stZnVuY3Rpb24nLFxuXG4gIC8vICd1cGRhdGVGYWxsYmFja0Z1bmN0aW9uOiB1cGRhdGUtZmFsbGJhY2stZnVuY3Rpb24nLFxuXG4gIC8vICdkZWxldGVGYWxsYmFja0Z1bmN0aW9uOiBkZWxldGUtZmFsbGJhY2stZnVuY3Rpb24nLFxuICAvLyAgY29uZmlndXJlLXNlcnZpY2UtYXJncyBbT0NvbmZpZ3VyZVNlcnZpY2VBcmdzXTogQWxsb3dzIGNvbmZpZ3VyZSBzZXJ2aWNlIC5cbiAgJ2NvbmZpZ3VyZVNlcnZpY2VBcmdzOiBjb25maWd1cmUtc2VydmljZS1hcmdzJ1xuXTtcblxuQERpcmVjdGl2ZSh7XG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19TRVJWSUNFX0JBU0VfQ09NUE9ORU5UXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0T1NlcnZpY2VCYXNlQ29tcG9uZW50PFQgZXh0ZW5kcyBBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZTxBYnN0cmFjdFNlcnZpY2VDb21wb25lbnRTdGF0ZUNsYXNzPj4gaW1wbGVtZW50cyBJTG9jYWxTdG9yYWdlQ29tcG9uZW50LCBPbkNoYW5nZXMge1xuXG4gIHByb3RlY3RlZCBsb2NhbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlO1xuICBjb21wb25lbnRTdGF0ZVNlcnZpY2U6IFQ7XG4gIHByb3RlY3RlZCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgb0Vycm9yRGlhbG9nTWFuYWdlcjogT0Vycm9yRGlhbG9nTWFuYWdlcjtcbiAgcGFyZW50Q29tcG9uZW50OiBBYnN0cmFjdE9TZXJ2aWNlQmFzZUNvbXBvbmVudDxUPjtcblxuICAvKiBpbnB1dHMgdmFyaWFibGVzICovXG4gIG9hdHRyOiBzdHJpbmc7XG4gIHNlcnZpY2U6IHN0cmluZztcbiAgc2VydmljZVR5cGU6IHN0cmluZztcbiAgZW50aXR5OiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBxdWVyeU9uSW5pdDogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBxdWVyeU9uQmluZDogYm9vbGVhbiA9IHRydWU7XG4gIHF1ZXJ5T25FdmVudDogYW55O1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcGFnZWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29sdW1uczogc3RyaW5nO1xuICBrZXlzOiBzdHJpbmc7XG4gIHBhcmVudEtleXM6IHN0cmluZztcbiAgc3RhdGljRGF0YTogQXJyYXk8YW55PjtcbiAgcXVlcnlNZXRob2Q6IHN0cmluZyA9IENvZGVzLlFVRVJZX01FVEhPRDtcbiAgcGFnaW5hdGVkUXVlcnlNZXRob2Q6IHN0cmluZyA9IENvZGVzLlBBR0lOQVRFRF9RVUVSWV9NRVRIT0Q7XG5cbiAgb3JpZ2luYWxRdWVyeVJvd3M6IG51bWJlciA9IENvZGVzLkRFRkFVTFRfUVVFUllfUk9XUztcbiAgcHJvdGVjdGVkIF9xdWVyeVJvd3MgPSB0aGlzLm9yaWdpbmFsUXVlcnlSb3dzO1xuXG4gIHNldCBvUXVlcnlSb3dzKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgPyBwYXJzZUludCh2YWx1ZSwgMTApIDogdmFsdWU7XG4gICAgICB0aGlzLm9yaWdpbmFsUXVlcnlSb3dzID0gdmFsdWU7XG4gICAgICB0aGlzLl9xdWVyeVJvd3MgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgcXVlcnlSb3dzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5Um93cztcbiAgfVxuXG4gIHNldCBxdWVyeVJvd3ModmFsdWU6IG51bWJlcikge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3F1ZXJ5Um93cyA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBpbnNlcnRNZXRob2Q6IHN0cmluZyA9IENvZGVzLklOU0VSVF9NRVRIT0Q7XG4gIHVwZGF0ZU1ldGhvZDogc3RyaW5nID0gQ29kZXMuVVBEQVRFX01FVEhPRDtcbiAgZGVsZXRlTWV0aG9kOiBzdHJpbmcgPSBDb2Rlcy5ERUxFVEVfTUVUSE9EO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc3RvcmVTdGF0ZTogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBxdWVyeVdpdGhOdWxsUGFyZW50S2V5czogYm9vbGVhbiA9IGZhbHNlO1xuICBxdWVyeUZhbGxiYWNrRnVuY3Rpb246IChlcnI6IGFueSkgPT4gdm9pZDtcbiAgLy8gaW5zZXJ0RmFsbGJhY2tGdW5jdGlvbjogKGVycjogYW55KSA9PiB2b2lkO1xuICAvLyB1cGRhdGVGYWxsYmFja0Z1bmN0aW9uOiAoZXJyOiBhbnkpID0+IHZvaWQ7XG4gIC8vIGRlbGV0ZUZhbGxiYWNrRnVuY3Rpb246IChlcnI6IGFueSkgPT4gdm9pZDtcbiAgLyogZW5kIG9mIGlucHV0cyB2YXJpYWJsZXMgKi9cblxuICAvKiBwYXJzZWQgaW5wdXRzIHZhcmlhYmxlcyAqL1xuICBwcm90ZWN0ZWQgY29sQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHJvdGVjdGVkIGtleXNBcnJheTogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwcm90ZWN0ZWQgX3BLZXlzRXF1aXYgPSB7fTtcbiAgZGF0YUFycmF5OiBBcnJheTxhbnk+ID0gW107XG4gIHByb3RlY3RlZCBvYXR0ckZyb21FbnRpdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyogZW5kIG9mIHBhcnNlZCBpbnB1dHMgdmFyaWFibGVzICovXG5cbiAgcHJvdGVjdGVkIG9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uOiBhbnk7XG4gIHByb3RlY3RlZCBvbkZvcm1EYXRhU3Vic2NyaWJlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHF1ZXJ5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBkYXRhU2VydmljZTogQmFzZVNlcnZpY2U8U2VydmljZVJlc3BvbnNlPjtcblxuICBwcm90ZWN0ZWQgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGxvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByb3RlY3RlZCBmb3JtOiBPRm9ybUNvbXBvbmVudDtcbiAgcHVibGljIGV4cGFuZGFibGVDb250YWluZXI6IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50O1xuICBwcm90ZWN0ZWQgYWxyZWFkeVN0b3JlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBxdWVyeU9uRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZjsgLy8gYm9ycmFyXG4gIHByb3RlY3RlZCBxdWVyeUFyZ3VtZW50czogT1F1ZXJ5UGFyYW1zO1xuXG4gIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcjtcbiAgcHJvdGVjdGVkIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcblxuICBwcm90ZWN0ZWQgc3FsVHlwZXMgPSB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGFib3J0UXVlcnk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcm90ZWN0ZWQgY29uZmlndXJlU2VydmljZUFyZ3M6IE9Db25maWd1cmVTZXJ2aWNlQXJncztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0PERpYWxvZ1NlcnZpY2U+KERpYWxvZ1NlcnZpY2UgYXMgVHlwZTxEaWFsb2dTZXJ2aWNlPik7XG4gICAgdGhpcy5vRXJyb3JEaWFsb2dNYW5hZ2VyID0gdGhpcy5pbmplY3Rvci5nZXQ8T0Vycm9yRGlhbG9nTWFuYWdlcj4oT0Vycm9yRGlhbG9nTWFuYWdlciBhcyBUeXBlPE9FcnJvckRpYWxvZ01hbmFnZXI+KTtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxMb2NhbFN0b3JhZ2VTZXJ2aWNlPihMb2NhbFN0b3JhZ2VTZXJ2aWNlIGFzIFR5cGU8TG9jYWxTdG9yYWdlU2VydmljZT4pO1xuICAgIHRoaXMuY29tcG9uZW50U3RhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8VD4oQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2UgYXMgVHlwZTxUPik7XG4gICAgdGhpcy5yb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldDxSb3V0ZXI+KFJvdXRlciBhcyBUeXBlPFJvdXRlcj4pO1xuICAgIHRoaXMuYWN0Um91dGUgPSB0aGlzLmluamVjdG9yLmdldDxBY3RpdmF0ZWRSb3V0ZT4oQWN0aXZhdGVkUm91dGUgYXMgVHlwZTxBY3RpdmF0ZWRSb3V0ZT4pO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmNkID0gdGhpcy5pbmplY3Rvci5nZXQ8Q2hhbmdlRGV0ZWN0b3JSZWY+KENoYW5nZURldGVjdG9yUmVmIGFzIFR5cGU8Q2hhbmdlRGV0ZWN0b3JSZWY+KTtcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9Gb3JtQ29tcG9uZW50PihPRm9ybUNvbXBvbmVudCBhcyBUeXBlPE9Gb3JtQ29tcG9uZW50Pik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gbm8gcGFyZW50IGZvcm1cbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZXhwYW5kYWJsZUNvbnRhaW5lciA9IHRoaXMuaW5qZWN0b3IuZ2V0PE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50PihPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudCBhcyBUeXBlPE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50Pik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gTm8gcGFyZW50IE9FeHBhbmRhYmxlQ29udGFpbmVyQ29tcG9uZW50XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IEFic3RyYWN0U2VydmljZUNvbXBvbmVudFN0YXRlQ2xhc3Mge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFN0YXRlU2VydmljZS5zdGF0ZTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm9hdHRyKSAmJiBVdGlsLmlzRGVmaW5lZCh0aGlzLmVudGl0eSkpIHtcbiAgICAgIHRoaXMub2F0dHIgPSB0aGlzLmVudGl0eS5yZXBsYWNlKCcuJywgJ18nKTtcbiAgICAgIHRoaXMub2F0dHJGcm9tRW50aXR5ID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5rZXlzQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5rZXlzKTtcbiAgICB0aGlzLmNoZWNrQ29sdW1ucygpO1xuICAgIGNvbnN0IHBrQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5wYXJlbnRLZXlzKTtcbiAgICB0aGlzLl9wS2V5c0VxdWl2ID0gVXRpbC5wYXJzZVBhcmVudEtleXNFcXVpdmFsZW5jZXMocGtBcnJheSwgQ29kZXMuQ09MVU1OU19BTElBU19TRVBBUkFUT1IpO1xuXG4gICAgdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGlmICh0aGlzLnN0YXRpY0RhdGEpIHtcbiAgICAgIHRoaXMucXVlcnlPbkJpbmQgPSBmYWxzZTtcbiAgICAgIHRoaXMucXVlcnlPbkluaXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0RGF0YUFycmF5KHRoaXMuc3RhdGljRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uZmlndXJlU2VydmljZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm0gJiYgVXRpbC5pc0RlZmluZWQodGhpcy5kYXRhU2VydmljZSkpIHtcbiAgICAgIHRoaXMuc2V0Rm9ybUNvbXBvbmVudCh0aGlzLmZvcm0pO1xuICAgIH1cblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnF1ZXJ5T25FdmVudCkgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5xdWVyeU9uRXZlbnQuc3Vic2NyaWJlKSkge1xuICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICB0aGlzLnF1ZXJ5T25FdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMucXVlcnlPbkV2ZW50LnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHZhbHVlKSB8fCB0aGlzLnF1ZXJ5V2l0aE51bGxQYXJlbnRLZXlzKSB7XG4gICAgICAgICAgc2VsZi5xdWVyeURhdGEoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLnF1ZXJ5RmFsbGJhY2tGdW5jdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5xdWVyeUZhbGxiYWNrRnVuY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tDb2x1bW5zKCkge1xuICAgIHRoaXMuY29sQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy5jb2x1bW5zLCB0cnVlKTtcbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMua2V5c0FycmF5LmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1ucy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBJbiB0aGUgY29tcG9uZW50ICcke3RoaXMub2F0dHJ9JywgdGhlIGtleSAnJHtrZXl9JyBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGNvbHVtbnMgZGVmaW5pdGlvbiBhbmQgc29tZSBmdW5jdGlvbmFsaXRpZXMgbWF5IG5vdCB3b3JrIGNvcnJlY3RseWApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpO1xuXG4gICAgdGhpcy5hYm9ydFF1ZXJ5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMucXVlcnlTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREYXRhKFtdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMub25Gb3JtRGF0YVN1YnNjcmliZSkge1xuICAgICAgdGhpcy5vbkZvcm1EYXRhU3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnF1ZXJ5T25FdmVudFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5xdWVyeU9uRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FuU2V0U3RhdGljRGF0YShzdGF0aWNEYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQoc3RhdGljRGF0YSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSkge1xuICAgIGlmICh0aGlzLmNhblNldFN0YXRpY0RhdGEoY2hhbmdlcy5zdGF0aWNEYXRhPy5jdXJyZW50VmFsdWUpKSB7XG4gICAgICB0aGlzLnNldERhdGEoY2hhbmdlcy5zdGF0aWNEYXRhLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFtdKVxuICBiZWZvcmV1bmxvYWRIYW5kbGVyKCkge1xuICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gIH1cblxuICBnZXRBdHRyaWJ1dGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vYXR0cjtcbiAgfVxuXG4gIGdldENvbXBvbmVudEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgpO1xuICB9XG5cbiAgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZTtcbiAgfVxuXG4gIGdldFJvdXRlS2V5KCk6IHN0cmluZyB7XG4gICAgbGV0IHJvdXRlID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIHRoaXMuYWN0Um91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIHJvdXRlID0gcm91dGUucmVwbGFjZShwYXJhbXNba2V5XSwga2V5KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIGdldEtleXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmtleXNBcnJheTtcbiAgfVxuXG4gIGNvbmZpZ3VyZVNlcnZpY2UoKSB7XG4gICAgbGV0IGNvbmZpZ3VyZVNlcnZpY2VBcmdzOiBPQ29uZmlndXJlU2VydmljZUFyZ3MgPSB7IGluamVjdG9yOiB0aGlzLmluamVjdG9yLCBiYXNlU2VydmljZTogT250aW1pemVTZXJ2aWNlLCBlbnRpdHk6IHRoaXMuZW50aXR5LCBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsIHNlcnZpY2VUeXBlOiB0aGlzLnNlcnZpY2VUeXBlIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb25maWd1cmVTZXJ2aWNlQXJncykpIHtcbiAgICAgIGNvbmZpZ3VyZVNlcnZpY2VBcmdzID0geyAuLi5jb25maWd1cmVTZXJ2aWNlQXJncywgLi4udGhpcy5jb25maWd1cmVTZXJ2aWNlQXJncyB9O1xuICAgIH1cblxuICAgIHRoaXMuZGF0YVNlcnZpY2UgPSBVdGlsLmNvbmZpZ3VyZVNlcnZpY2UoY29uZmlndXJlU2VydmljZUFyZ3MpO1xuICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkNvbnRleHQoeyBwYWdlTnVtYmVyOiAwLCBwYWdlU2l6ZTogdGhpcy5xdWVyeVJvd3MsIG9mZnNldDogMCwgdG90YWxTaXplOiAwIH0pO1xuICB9XG5cbiAgZ2V0RGF0YUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFBcnJheTtcbiAgfVxuXG4gIHNldERhdGFBcnJheShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAvKiBUaGUgby10YWJsZSBoYXMgb3duIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kICovXG4gICAgaWYgKFV0aWwuaXNBcnJheShkYXRhKSkge1xuICAgICAgdGhpcy5kYXRhQXJyYXkgPSBkYXRhO1xuICAgIH0gZWxzZSBpZiAoVXRpbC5pc09iamVjdChkYXRhKSkge1xuICAgICAgdGhpcy5kYXRhQXJyYXkgPSBbZGF0YV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignQ29tcG9uZW50IGhhcyByZWNlaXZlZCBub3Qgc3VwcG9ydGVkIHNlcnZpY2UgZGF0YS4gU3VwcG9ydGVkIGRhdGEgYXJlIEFycmF5IG9yIE9iamVjdCcpO1xuICAgICAgdGhpcy5kYXRhQXJyYXkgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhQXJyYXkgaW5zdGFuY2VvZiBBcnJheSAmJiB0aGlzLmRhdGFBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2U/LnJlaW5pdGlhbGl6ZVBhZ2luYXRpb25Db250ZXh0KHRoaXMucXVlcnlSb3dzKTtcbiAgICB9XG5cbiAgfVxuXG4gIHB1YmxpYyBzZXRGb3JtQ29tcG9uZW50KGZvcm06IE9Gb3JtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmZvcm0pKSB7XG4gICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnF1ZXJ5T25CaW5kKSB7XG4gICAgICB0aGlzLm9uRm9ybURhdGFTdWJzY3JpYmUgPSB0aGlzLmZvcm0ub25EYXRhTG9hZGVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLnBhZ2VhYmxlID8gdGhpcy5yZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KCkgOiB0aGlzLnJlbG9hZERhdGEoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcmVudEtleXNGcm9tQ29udGV4dChwYXJlbnRLZXlzOiBvYmplY3QsIGNvbnRleHQ6IGFueSkge1xuICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICBjb25zdCBjaGVja1JvdXRlUGFyYW1zUmVjdXJzaXZlID0gdGhpcy5yb3V0ZXIucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSAhPT0gJ2Fsd2F5cyc7XG4gICAgaWYgKGNvbnRleHQgaW5zdGFuY2VvZiBPRXhwYW5kYWJsZUNvbnRhaW5lckNvbXBvbmVudCkge1xuICAgICAgcmVzdWx0ID0gU2VydmljZVV0aWxzLmdldFBhcmVudEtleXNGcm9tRXhwYW5kYWJsZUNvbnRhaW5lcihwYXJlbnRLZXlzLCBjb250ZXh0LCB0aGlzLmFjdFJvdXRlLCBjaGVja1JvdXRlUGFyYW1zUmVjdXJzaXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gU2VydmljZVV0aWxzLmdldFBhcmVudEtleXNGcm9tRm9ybShwYXJlbnRLZXlzLCBjb250ZXh0LCB0aGlzLmFjdFJvdXRlLCBjaGVja1JvdXRlUGFyYW1zUmVjdXJzaXZlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcblxuICB9XG5cbiAgcHVibGljIGNsZWFyRGF0YSgpIHtcbiAgICB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID0gMDtcbiAgICB0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyID0gMDtcbiAgICB0aGlzLnNldERhdGEoW10sIFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBxdWVyeURhdGEoZmlsdGVyPzogYW55LCBvdnJyQXJncz86IE9RdWVyeURhdGFBcmdzKTogdm9pZCB7XG5cbiAgICBjb25zdCBxdWVyeU1ldGhvZE5hbWUgPSB0aGlzLnBhZ2VhYmxlID8gdGhpcy5wYWdpbmF0ZWRRdWVyeU1ldGhvZCA6IHRoaXMucXVlcnlNZXRob2Q7XG5cbiAgICBpZiAoIXRoaXMuZGF0YVNlcnZpY2UgfHwgIShxdWVyeU1ldGhvZE5hbWUgaW4gdGhpcy5kYXRhU2VydmljZSkgfHwgIXRoaXMuZW50aXR5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlclBhcmVudEtleXMgPSB0aGlzLmdldFBhcmVudEtleXNWYWx1ZXMoKTtcbiAgICBpZiAoIVNlcnZpY2VVdGlscy5maWx0ZXJDb250YWluc0FsbFBhcmVudEtleXMoZmlsdGVyUGFyZW50S2V5cywgdGhpcy5fcEtleXNFcXVpdikgJiYgIXRoaXMucXVlcnlXaXRoTnVsbFBhcmVudEtleXMpIHtcbiAgICAgIHRoaXMuc2V0RGF0YShbXSwgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5xdWVyeVN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG5cbiAgICAgIC8vIGVuc3VyaW5nIGZhbHNlIHZhbHVlXG4gICAgICB0aGlzLmFib3J0UXVlcnkubmV4dChmYWxzZSk7XG5cblxuICAgICAgaWYgKHRoaXMuYWJvcnRRdWVyeS52YWx1ZSkge1xuICAgICAgICB0aGlzLmNsZWFyRGF0YSgpO1xuICAgICAgICAvKiogIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpIGlzIHVzZWQgdG8gdXBkYXRlIGxvYWRpbmdTdWJqZWN0IHZhbHVlICh0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7IGluIGxpbmUgMzc3KVxuICAgICAgICAgKiAgYmVmb3JlIHVzaW5nIHRoZSBuZXh0IGxpbmUgYW5kIHNvIHVwZGF0ZSB0aGUgb1RhYmxlRXhwYW5kZWRGb290ZXIgZGlyZWN0aXZlIGFuZCBkaXNwbGF5IHRoZSBtZXNzYWdlXG4gICAgICAgICAqIHRoYXQgdGhlcmUgYXJlIG5vIHJlc3VsdHMgd2hlbiB0aGUgcXVlcnkgaXMgYWJvcnRlZCovXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucXVlcnlBcmd1bWVudHMgPSB0aGlzLmdldFF1ZXJ5QXJndW1lbnRzKGZpbHRlciwgb3ZyckFyZ3MpO1xuXG4gICAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhU2VydmljZVtxdWVyeU1ldGhvZE5hbWVdKC4uLnRoaXMuZGF0YVNlcnZpY2UucmVxdWVzdEFyZ3VtZW50QWRhcHRlci5wYXJzZVF1ZXJ5UGFyYW1ldGVycyh0aGlzLnF1ZXJ5QXJndW1lbnRzKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBTZXJ2aWNlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgICB0aGlzLnNxbFR5cGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChVdGlsLmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgICAgZGF0YSA9IHJlcztcbiAgICAgICAgICAgIHRoaXMuc3FsVHlwZXMgPSB7fTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgICAgICAgY29uc3QgYXJyRGF0YSA9IChyZXMuZGF0YSAhPT0gdW5kZWZpbmVkKSA/IHJlcy5kYXRhIDogW107XG4gICAgICAgICAgICBkYXRhID0gVXRpbC5pc0FycmF5KGFyckRhdGEpID8gYXJyRGF0YSA6IFtdO1xuICAgICAgICAgICAgdGhpcy5zcWxUeXBlcyA9IHJlcy5zcWxUeXBlcztcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkluZm8ocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnNldERhdGEoZGF0YSwgdGhpcy5zcWxUeXBlcywgKG92cnJBcmdzICYmIG92cnJBcmdzLnJlcGxhY2UpKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0RGF0YShbXSwgW10pO1xuICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeUZhbGxiYWNrRnVuY3Rpb24oZXJyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vRXJyb3JEaWFsb2dNYW5hZ2VyLm9wZW5FcnJvckRpYWxvZyhlcnIpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbG9hZERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeURhdGEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWxvYWRzIHRoZSBjb21wb25lbnQgZGF0YSBhbmQgcmVzdGFydHMgdGhlIHBhZ2luYXRpb24uXG4gICAqL1xuICByZWxvYWRQYWdpbmF0ZWREYXRhRnJvbVN0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RpbmcgdGhlIGdpdmVuIHJlY29yZCBrZXlzXG4gICAqIEBwYXJhbSBpdGVtIHJlY29yZCBvYmplY3RcbiAgICogQHJldHVybnMgb2JqZWN0IGNvbnRhaW5pbmcgaXRlbSBvYmplY3QgcHJvcGVydGllcyBjb250YWluZWQgaW4ga2V5c0FycmF5XG4gICAqL1xuICBleHRyYWN0S2V5c0Zyb21SZWNvcmQoaXRlbTogYW55KTogb2JqZWN0IHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBpZiAoVXRpbC5pc09iamVjdChpdGVtKSkge1xuICAgICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQoaXRlbVtrZXldKSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gaXRlbVtrZXldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldEF0dHJpYnV0ZXNWYWx1ZXNUb1F1ZXJ5KCk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29sQXJyYXk7XG4gICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cbiAgZ2V0UXVlcnlBcmd1bWVudHMoZmlsdGVyOiBvYmplY3QsIG92cnJBcmdzOiBPUXVlcnlEYXRhQXJncyA9IHt9KTogT1F1ZXJ5UGFyYW1zIHtcbiAgICBjb25zdCBjb21wRmlsdGVyID0gdGhpcy5nZXRDb21wb25lbnRGaWx0ZXIoZmlsdGVyKTtcbiAgICBjb25zdCBxdWVyeUNvbHMgPSB0aGlzLmdldEF0dHJpYnV0ZXNWYWx1ZXNUb1F1ZXJ5KCk7XG4gICAgY29uc3Qgc3FsVHlwZXMgPSAob3ZyckFyZ3MgJiYgb3ZyckFyZ3MuaGFzT3duUHJvcGVydHkoJ3NxbHR5cGVzJykpID8gb3ZyckFyZ3Muc3FsdHlwZXMgOiB0aGlzLmZvcm0gPyB0aGlzLmZvcm0uZ2V0QXR0cmlidXRlc1NRTFR5cGVzKCkgOiB7fTtcblxuICAgIGlmICh0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICBjb25zdCBxdWVyeVJlY29yZE9mZnNldCA9IHRoaXMuc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQgPyB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0IDogMDtcbiAgICAgIG92cnJBcmdzLm9mZnNldCA9IG92cnJBcmdzPy5oYXNPd25Qcm9wZXJ0eSgnb2Zmc2V0JykgPyBvdnJyQXJncy5vZmZzZXQgOiBxdWVyeVJlY29yZE9mZnNldDtcbiAgICAgIG92cnJBcmdzLmxlbmd0aCA9IG92cnJBcmdzPy5oYXNPd25Qcm9wZXJ0eSgnbGVuZ3RoJykgPyBvdnJyQXJncy5sZW5ndGggOiB0aGlzLnF1ZXJ5Um93cztcblxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBmaWx0ZXI6IGNvbXBGaWx0ZXIsXG4gICAgICBjb2x1bW5zOiBxdWVyeUNvbHMsXG4gICAgICBlbnRpdHk6IHRoaXMuZW50aXR5LFxuICAgICAgcGFnZWFibGU6IHRoaXMucGFnZWFibGUsXG4gICAgICBzcWxUeXBlczogc3FsVHlwZXMsXG4gICAgICBvdnJyQXJnczogb3ZyckFyZ3MsXG4gICAgICBzb3J0OiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVBhZ2luYXRpb25JbmZvKHF1ZXJ5UmVzOiBTZXJ2aWNlUmVzcG9uc2UpIHtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgaWYgKHF1ZXJ5UmVzLnN0YXJ0UmVjb3JkSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCByZXN1bHRFbmRJbmRleCA9IHF1ZXJ5UmVzLnN0YXJ0UmVjb3JkSW5kZXggKyAocXVlcnlSZXMuZGF0YSA/IHF1ZXJ5UmVzLmRhdGEubGVuZ3RoIDogMCk7XG4gICAgICAgIHRoaXMuc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQgPSByZXN1bHRFbmRJbmRleDtcbiAgICAgIH1cbiAgICAgIGlmIChxdWVyeVJlcy50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXIgPSBxdWVyeVJlcy50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcjtcbiAgICAgIH1cbiAgICAgIC8qIHBhZ2VOdW1iZXIgPSAwIGlzIHJlaW5pdGlhbGl6ZWQgd2hlbiBpdCBnZW5lcmF0ZXMgYSBzZWFyY2ggICovXG4gICAgICBjb25zdCBwYWdlTnVtYmVyID0gdGhpcy5zdGF0ZS5xdWVyeVJlY29yZE9mZnNldCA9PSAwID8gMCA6IHRoaXMuZGF0YVNlcnZpY2U/LmdldFBhZ2luYXRpb25Db250ZXh0KCkucGFnZU51bWJlcjtcbiAgICAgIHRoaXMudXBkYXRlUGFnaW5hdGlvbkNvbnRleHQoeyBwYWdlTnVtYmVyOiBwYWdlTnVtYmVyLCBvZmZzZXQ6IHRoaXMuc3RhdGUucXVlcnlSZWNvcmRPZmZzZXQsIHRvdGFsU2l6ZTogdGhpcy5zdGF0ZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciwgcGFnZVNpemU6IHRoaXMuc3RhdGUucXVlcnlSb3dzIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVBhZ2luYXRpb25Db250ZXh0KHsgdG90YWxTaXplOiBxdWVyeVJlcy5kYXRhLmxlbmd0aCB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUGFnaW5hdGlvbkNvbnRleHQocGFnaW5hdGlvbkNvbnRleHQ6IFBhZ2luYXRpb25Db250ZXh0KSB7XG4gICAgaWYgKCF0aGlzLnBhZ2VhYmxlKSB7XG4gICAgICBkZWxldGUgcGFnaW5hdGlvbkNvbnRleHQub2Zmc2V0O1xuICAgIH1cblxuICAgIHRoaXMuZGF0YVNlcnZpY2U/LnNldFBhZ2luYXRpb25Db250ZXh0KHBhZ2luYXRpb25Db250ZXh0KTtcbiAgfVxuXG4gIGdldFRvdGFsUmVjb3Jkc051bWJlcigpOiBudW1iZXIge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLnN0YXRlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyKSA/IHRoaXMuc3RhdGUudG90YWxRdWVyeVJlY29yZHNOdW1iZXIgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRDb250ZXh0Q29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZGFibGVDb250YWluZXIgfHwgdGhpcy5mb3JtO1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50RmlsdGVyKGV4aXN0aW5nRmlsdGVyOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgY29uc3QgZmlsdGVyUGFyZW50S2V5cyA9IHRoaXMuZ2V0UGFyZW50S2V5c0Zyb21Db250ZXh0KHRoaXMuX3BLZXlzRXF1aXYsIHRoaXMuZ2V0Q29udGV4dENvbXBvbmVudCgpKTtcbiAgICBleGlzdGluZ0ZpbHRlciA9IHsgLi4uZXhpc3RpbmdGaWx0ZXIgfHwge30sIC4uLmZpbHRlclBhcmVudEtleXMgfTtcbiAgICByZXR1cm4gZXhpc3RpbmdGaWx0ZXI7XG4gIH1cblxuICBnZXRTcWxUeXBlcygpIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5zcWxUeXBlcykgPyB0aGlzLnNxbFR5cGVzIDoge307XG4gIH1cblxuICBnZXRQYXJlbnRLZXlzVmFsdWVzKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHRDb21wb25lbnQoKTtcbiAgICByZXR1cm4gdGhpcy5nZXRQYXJlbnRLZXlzRnJvbUNvbnRleHQodGhpcy5fcEtleXNFcXVpdiwgY29udGV4dCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5zdG9yZVN0YXRlICYmICF0aGlzLmFscmVhZHlTdG9yZWQpIHtcbiAgICAgIHRoaXMuYWxyZWFkeVN0b3JlZCA9IHRydWU7XG4gICAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UudXBkYXRlQ29tcG9uZW50U3RvcmFnZSh0aGlzLCB0aGlzLmdldFJvdXRlS2V5KCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXREYXRhKGRhdGE6IGFueSwgc3FsVHlwZXM/OiBhbnksIHJlcGxhY2U/OiBib29sZWFuKTogdm9pZCB7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLm9uUm91dGVDaGFuZ2Uuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBEZWZhdWx0T1NlcnZpY2VCYXNlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RPU2VydmljZUJhc2VDb21wb25lbnQ8RGVmYXVsdFNlcnZpY2VDb21wb25lbnRTdGF0ZVNlcnZpY2U+IHtcblxufVxuXG4vKiBUaGlzIGNsYXNzIGlzIGJlaW5nIGRlZmluZWQgdG8gbWFudGFpbiB0aGUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucywgdXNlIERlZmF1bHRPU2VydmljZUJhc2VDb21wb25lbnQqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgT1NlcnZpY2VCYXNlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RPU2VydmljZUJhc2VDb21wb25lbnQ8RGVmYXVsdFNlcnZpY2VDb21wb25lbnRTdGF0ZVNlcnZpY2U+IHtcblxufVxuIl19
@@ -1,21 +1,30 @@
1
- import { Directive, Injector } from "@angular/core";
2
- import { AppearanceService } from "../services/appearance.service";
1
+ import { ChangeDetectorRef, Directive, ElementRef, Injector } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import { AppearanceService } from '../services/appearance.service';
3
4
  import * as i0 from "@angular/core";
4
5
  export class OSkeletonComponent {
5
- constructor(injector) {
6
+ constructor(injector, elRef) {
6
7
  this.injector = injector;
8
+ this.elRef = elRef;
9
+ this.rows$ = of([1]);
10
+ this.cd = injector.get(ChangeDetectorRef);
7
11
  this.appearanceService = this.injector.get(AppearanceService);
8
12
  this.isDarkMode = this.appearanceService.isDarkMode();
9
13
  this.subscription = this.appearanceService.isDarkMode$.subscribe(x => this.isDarkMode = x);
14
+ ;
15
+ }
16
+ ngAfterViewInit() {
17
+ this.rows$ = of(this.getRows());
18
+ this.cd.detectChanges();
10
19
  }
11
20
  ngOnDestroy() {
12
21
  this.subscription?.unsubscribe();
13
22
  }
14
23
  }
15
- OSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OSkeletonComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
24
+ OSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OSkeletonComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
16
25
  OSkeletonComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: OSkeletonComponent, ngImport: i0 });
17
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OSkeletonComponent, decorators: [{
18
27
  type: Directive,
19
28
  args: [{}]
20
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9vLXNrZWxldG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUUvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLGtCQUFrQjtJQUs3QixZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBb0IsaUJBQWlCLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7K0dBYlUsa0JBQWtCO21HQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsU0FBUzttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBBcHBlYXJhbmNlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9hcHBlYXJhbmNlLnNlcnZpY2VcIjtcblxuQERpcmVjdGl2ZSh7fSlcbmV4cG9ydCBjbGFzcyBPU2tlbGV0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBpc0RhcmtNb2RlOiBib29sZWFuO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgYXBwZWFyYW5jZVNlcnZpY2U6IEFwcGVhcmFuY2VTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLmFwcGVhcmFuY2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8QXBwZWFyYW5jZVNlcnZpY2U+KEFwcGVhcmFuY2VTZXJ2aWNlKTtcbiAgICB0aGlzLmlzRGFya01vZGUgPSB0aGlzLmFwcGVhcmFuY2VTZXJ2aWNlLmlzRGFya01vZGUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuYXBwZWFyYW5jZVNlcnZpY2UuaXNEYXJrTW9kZSQuc3Vic2NyaWJlKHggPT4gdGhpcy5pc0RhcmtNb2RlID0geCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufSJdfQ==
29
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9vLXNrZWxldG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUduRSxNQUFNLE9BQWdCLGtCQUFrQjtJQU90QyxZQUFzQixRQUFrQixFQUFZLEtBQWlCO1FBQS9DLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBWSxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBSHJFLFVBQUssR0FBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUlwQyxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQW9CLGlCQUFpQixDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQzlGLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7K0dBckJtQixrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUR2QyxTQUFTO21CQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwcGVhcmFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwZWFyYW5jZS5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7fSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPU2tlbGV0b25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBpc0RhcmtNb2RlOiBib29sZWFuO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgYXBwZWFyYW5jZVNlcnZpY2U6IEFwcGVhcmFuY2VTZXJ2aWNlO1xuICByb3dzJDogT2JzZXJ2YWJsZTxudW1iZXJbXT4gPSBvZihbMV0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLCBwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLmNkID0gaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICB0aGlzLmFwcGVhcmFuY2VTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8QXBwZWFyYW5jZVNlcnZpY2U+KEFwcGVhcmFuY2VTZXJ2aWNlKTtcbiAgICB0aGlzLmlzRGFya01vZGUgPSB0aGlzLmFwcGVhcmFuY2VTZXJ2aWNlLmlzRGFya01vZGUoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuYXBwZWFyYW5jZVNlcnZpY2UuaXNEYXJrTW9kZSQuc3Vic2NyaWJlKHggPT4gdGhpcy5pc0RhcmtNb2RlID0geCk7O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm93cyQgPSBvZih0aGlzLmdldFJvd3MoKSk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7Ly8gc3VyZSBkZXRlY3QgY2hhbmdlc1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgLy8gT3ZlcnJpZGUgaW4gc3ViY2xhc3Nlc1xuICBhYnN0cmFjdCBnZXRSb3dzKCk6IG51bWJlcltdO1xufVxuIl19
@@ -1,25 +1,11 @@
1
- import { ChangeDetectorRef, Component, ElementRef, Injector, ViewEncapsulation } from '@angular/core';
2
- import { OSkeletonComponent } from '../../../o-skeleton.component';
3
- import { of } from 'rxjs';
1
+ import { Component, ViewEncapsulation } from '@angular/core';
4
2
  import { Util } from '../../../../util/util';
3
+ import { OSkeletonComponent } from '../../../o-skeleton.component';
5
4
  import * as i0 from "@angular/core";
6
5
  import * as i1 from "@angular/common";
7
6
  import * as i2 from "@angular/flex-layout/flex";
8
7
  import * as i3 from "ngx-skeleton-loader";
9
8
  export class OTableSkeletonComponent extends OSkeletonComponent {
10
- constructor(elRef, injector) {
11
- super(injector);
12
- this.elRef = elRef;
13
- this.injector = injector;
14
- this.cd = injector.get(ChangeDetectorRef);
15
- }
16
- ngOnInit() {
17
- this.rows$ = of([1]);
18
- }
19
- ngAfterViewInit() {
20
- this.cd.detectChanges();
21
- this.rows$ = of(this.getRows());
22
- }
23
9
  getRows() {
24
10
  const parentElement = this.elRef.nativeElement.parentElement;
25
11
  const header = parentElement.querySelector('div.o-table-skeleton-header');
@@ -46,12 +32,12 @@ export class OTableSkeletonComponent extends OSkeletonComponent {
46
32
  return Array.from(new Array(Math.floor(parentHeight / totalHeightItem)), (x, i) => i + 1);
47
33
  }
48
34
  }
49
- OTableSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableSkeletonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
35
+ OTableSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableSkeletonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
50
36
  OTableSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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 rows$ | async; \">\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"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None });
51
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: OTableSkeletonComponent, decorators: [{
52
38
  type: Component,
53
39
  args: [{ selector: 'o-table-skeleton', encapsulation: ViewEncapsulation.None, host: {
54
40
  '[class.o-table-skeleton]': 'true'
55
41
  }, 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 rows$ | async; \">\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"] }]
56
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }]; } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9za2VsZXRvbi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0gsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBYTdDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxrQkFBa0I7SUFHN0QsWUFBc0IsS0FBaUIsRUFBWSxRQUFrQjtRQUNuRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFESSxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVksYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVuRSxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU87UUFFTCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFHN0QsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV0RSxJQUFJLGlCQUF5QixDQUFDO1FBQzlCLElBQUksZUFBdUIsQ0FBQztRQUM1QixJQUFJLE1BQU0sRUFBRTtZQUVWLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNuQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBR2xFLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxZQUFZLEdBQUcsU0FBUyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxJQUFJLEVBQUU7WUFFUixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBR2hFLGVBQWUsR0FBRyxNQUFNLEdBQUcsWUFBWSxDQUFDO1NBQ3pDO1FBRUQsTUFBTSxZQUFZLEdBQUcsYUFBYSxFQUFFLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztRQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUU1RixDQUFDOztvSEF0RFUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMklDaEJwQyw4ekNBd0JBOzJGRFJhLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSiwwQkFBMEIsRUFBRSxNQUFNO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9vLXNrZWxldG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1za2VsZXRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRhYmxlLXNrZWxldG9uXSc6ICd0cnVlJ1xuICB9XG5cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlU2tlbGV0b25Db21wb25lbnQgZXh0ZW5kcyBPU2tlbGV0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICByb3dzJDogT2JzZXJ2YWJsZTxudW1iZXJbXT47XG4gIHByaXZhdGUgcmVhZG9ubHkgY2Q6IENoYW5nZURldGVjdG9yUmVmO1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWxSZWY6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgdGhpcy5jZCA9IGluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvd3MkID0gb2YoWzFdKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTsvLyBzdXJlIGRldGVjdCBjaGFuZ2VzXG4gICAgdGhpcy5yb3dzJCA9IG9mKHRoaXMuZ2V0Um93cygpKTtcbiAgfVxuXG4gIGdldFJvd3MoKSB7XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICAvKiBhdmFpbGFibGUgcGFyZW50SGVpZ2h0ID0gcGFyZW50RWxlbWVudCBoZWlnaHQgIC0gKGhlYWRlciB0YWJsZSBoZWFkZXIgaGVpZ2h0ICsgbWFyZ2luIGJvdHRvbSkqL1xuICAgIGNvbnN0IGhlYWRlciA9IHBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignZGl2Lm8tdGFibGUtc2tlbGV0b24taGVhZGVyJyk7XG4gICAgY29uc3QgaXRlbSA9IHBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignZGl2Lm8tdGFibGUtc2tlbGV0b24taXRlbScpO1xuXG4gICAgbGV0IHRvdGFsSGVpZ2h0SGVhZGVyOiBudW1iZXI7XG4gICAgbGV0IHRvdGFsSGVpZ2h0SXRlbTogbnVtYmVyO1xuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIC8vIE9idMOpbiBsYXMgZGltZW5zaW9uZXMgeSBlc3RpbG9zIGNvbXB1dGFkb3MgZGVsIGVsZW1lbnRvXG4gICAgICBjb25zdCBoZWFkZXJDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShoZWFkZXIpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gaGVhZGVyLm9mZnNldEhlaWdodDsgLy8gQWx0dXJhIGluY2x1eWVuZG8gcGFkZGluZ1xuICAgICAgY29uc3QgbWFyZ2luVG9wID0gcGFyc2VGbG9hdChoZWFkZXJDb21wdXRlZFN0eWxlLm1hcmdpblRvcCk7IC8vIE1hcmdlbiBzdXBlcmlvclxuICAgICAgY29uc3QgbWFyZ2luQm90dG9tID0gcGFyc2VGbG9hdChoZWFkZXJDb21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSk7IC8vIE1hcmdlbiBpbmZlcmlvclxuXG4gICAgICAvLyBDYWxjdWxhIGxhIGFsdHVyYSB0b3RhbFxuICAgICAgdG90YWxIZWlnaHRIZWFkZXIgPSBoZWlnaHQgKyBtYXJnaW5Cb3R0b20gKyBtYXJnaW5Ub3A7XG4gICAgfVxuICAgIGlmIChpdGVtKSB7XG4gICAgICAvLyBPYnTDqW4gbGFzIGRpbWVuc2lvbmVzIHkgZXN0aWxvcyBjb21wdXRhZG9zIGRlbCBlbGVtZW50b1xuICAgICAgY29uc3QgaXRlbUNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGl0ZW0pO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gaXRlbS5vZmZzZXRIZWlnaHQ7IC8vIEFsdHVyYSBpbmNsdXllbmRvIHBhZGRpbmdcbiAgICAgIGNvbnN0IG1hcmdpbkJvdHRvbSA9IHBhcnNlRmxvYXQoaXRlbUNvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tKTsgLy8gTWFyZ2VuIGluZmVyaW9yXG5cbiAgICAgIC8vIENhbGN1bGEgbGEgYWx0dXJhIHRvdGFsXG4gICAgICB0b3RhbEhlaWdodEl0ZW0gPSBoZWlnaHQgKyBtYXJnaW5Cb3R0b207XG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gcGFyZW50RWxlbWVudD8ub2Zmc2V0SGVpZ2h0IC0gdG90YWxIZWlnaHRIZWFkZXI7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChwYXJlbnRIZWlnaHQpIHx8IHBhcmVudEhlaWdodCA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgQXJyYXkoTWF0aC5mbG9vcihwYXJlbnRIZWlnaHQgLyB0b3RhbEhlaWdodEl0ZW0pKSwgKHgsIGkpID0+IGkgKyAxKTtcblxuICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cIm8tdGFibGUtc2tlbGV0b24taGVhZGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvLXRhYmxlLXNrZWxldG9uLWl0ZW1cIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3MkIHwgYXN5bmM7IFwiPlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGZ4RmxleCBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMFwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwiMVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9za2VsZXRvbi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7OztBQWFuRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBRTdELE9BQU87UUFFTCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFHN0QsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUV0RSxJQUFJLGlCQUF5QixDQUFDO1FBQzlCLElBQUksZUFBdUIsQ0FBQztRQUM1QixJQUFJLE1BQU0sRUFBRTtZQUVWLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNuQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBR2xFLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxZQUFZLEdBQUcsU0FBUyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxJQUFJLEVBQUU7WUFFUixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBR2hFLGVBQWUsR0FBRyxNQUFNLEdBQUcsWUFBWSxDQUFDO1NBQ3pDO1FBRUQsTUFBTSxZQUFZLEdBQUcsYUFBYSxFQUFFLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztRQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUU1RixDQUFDOztvSEF2Q1UsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMklDaEJwQyw4ekNBd0JBOzJGRFJhLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSiwwQkFBMEIsRUFBRSxNQUFNO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9vLXNrZWxldG9uLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1za2VsZXRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRhYmxlLXNrZWxldG9uXSc6ICd0cnVlJ1xuICB9XG5cbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlU2tlbGV0b25Db21wb25lbnQgZXh0ZW5kcyBPU2tlbGV0b25Db21wb25lbnQgIHtcblxuICBnZXRSb3dzKCkge1xuXG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuXG4gICAgLyogYXZhaWxhYmxlIHBhcmVudEhlaWdodCA9IHBhcmVudEVsZW1lbnQgaGVpZ2h0ICAtIChoZWFkZXIgdGFibGUgaGVhZGVyIGhlaWdodCArIG1hcmdpbiBib3R0b20pKi9cbiAgICBjb25zdCBoZWFkZXIgPSBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5vLXRhYmxlLXNrZWxldG9uLWhlYWRlcicpO1xuICAgIGNvbnN0IGl0ZW0gPSBwYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5vLXRhYmxlLXNrZWxldG9uLWl0ZW0nKTtcblxuICAgIGxldCB0b3RhbEhlaWdodEhlYWRlcjogbnVtYmVyO1xuICAgIGxldCB0b3RhbEhlaWdodEl0ZW06IG51bWJlcjtcbiAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAvLyBPYnTDqW4gbGFzIGRpbWVuc2lvbmVzIHkgZXN0aWxvcyBjb21wdXRhZG9zIGRlbCBlbGVtZW50b1xuICAgICAgY29uc3QgaGVhZGVyQ29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoaGVhZGVyKTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGhlYWRlci5vZmZzZXRIZWlnaHQ7IC8vIEFsdHVyYSBpbmNsdXllbmRvIHBhZGRpbmdcbiAgICAgIGNvbnN0IG1hcmdpblRvcCA9IHBhcnNlRmxvYXQoaGVhZGVyQ29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3ApOyAvLyBNYXJnZW4gc3VwZXJpb3JcbiAgICAgIGNvbnN0IG1hcmdpbkJvdHRvbSA9IHBhcnNlRmxvYXQoaGVhZGVyQ29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20pOyAvLyBNYXJnZW4gaW5mZXJpb3JcblxuICAgICAgLy8gQ2FsY3VsYSBsYSBhbHR1cmEgdG90YWxcbiAgICAgIHRvdGFsSGVpZ2h0SGVhZGVyID0gaGVpZ2h0ICsgbWFyZ2luQm90dG9tICsgbWFyZ2luVG9wO1xuICAgIH1cbiAgICBpZiAoaXRlbSkge1xuICAgICAgLy8gT2J0w6luIGxhcyBkaW1lbnNpb25lcyB5IGVzdGlsb3MgY29tcHV0YWRvcyBkZWwgZWxlbWVudG9cbiAgICAgIGNvbnN0IGl0ZW1Db21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShpdGVtKTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGl0ZW0ub2Zmc2V0SGVpZ2h0OyAvLyBBbHR1cmEgaW5jbHV5ZW5kbyBwYWRkaW5nXG4gICAgICBjb25zdCBtYXJnaW5Cb3R0b20gPSBwYXJzZUZsb2F0KGl0ZW1Db21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSk7IC8vIE1hcmdlbiBpbmZlcmlvclxuXG4gICAgICAvLyBDYWxjdWxhIGxhIGFsdHVyYSB0b3RhbFxuICAgICAgdG90YWxIZWlnaHRJdGVtID0gaGVpZ2h0ICsgbWFyZ2luQm90dG9tO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudEhlaWdodCA9IHBhcmVudEVsZW1lbnQ/Lm9mZnNldEhlaWdodCAtIHRvdGFsSGVpZ2h0SGVhZGVyO1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQocGFyZW50SGVpZ2h0KSB8fCBwYXJlbnRIZWlnaHQgPCAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IEFycmF5KE1hdGguZmxvb3IocGFyZW50SGVpZ2h0IC8gdG90YWxIZWlnaHRJdGVtKSksICh4LCBpKSA9PiBpICsgMSk7XG5cbiAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJvLXRhYmxlLXNrZWxldG9uLWhlYWRlclwiIGZ4TGF5b3V0R2FwPVwiMTBweFwiPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiby10YWJsZS1za2VsZXRvbi1pdGVtXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzJCB8IGFzeW5jOyBcIj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBmeEZsZXggY291bnQ9XCIxXCIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIlxuICAgICAgW3RoZW1lXT1cIntoZWlnaHQ6JzIwcHgnLCdib3JkZXItcmFkaXVzJzogJzAnLCAnbWFyZ2luJzogJzAnfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgPC9kaXY+XG4gIDxkaXYgZnhGbGV4PVwiMjAlXCI+XG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCIxXCIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIlxuICAgICAgW3RoZW1lXT1cIntoZWlnaHQ6JzIwcHgnLCdib3JkZXItcmFkaXVzJzogJzAnLCAnbWFyZ2luJzogJzAnfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgPC9kaXY+XG4gIDxkaXYgZnhGbGV4PVwiMjBcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19