@coolon/angular-ui-powerups 16.1.0-aplpha.78 → 16.1.0-aplpha.79

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.
@@ -64,7 +64,7 @@ import { DefaultCellRendererComponent } from './tables/renderer/default-cell-ren
64
64
  import { DefaultHeaderCellRendererComponent } from './tables/renderer/default-header-cell-renderer/default-header-cell-renderer.component';
65
65
  import { SelectionHeaderCellComponent } from './tables/renderer/select-header-cell/selection-header-cell.component';
66
66
  import { SelectionCellComponent } from './tables/renderer/selection-cell/selection-cell.component';
67
- import { TableBodyComponent } from './tables/renderer/table-body/table-body.component';
67
+ import { TableBodyComponent, TableRowAttributesDirective } from './tables/renderer/table-body/table-body.component';
68
68
  import { TableCellComponent } from './tables/renderer/table-cell/table-cell.component';
69
69
  import { TableHeaderCellComponent } from './tables/renderer/table-header-cell/table-header-cell.component';
70
70
  import { TableMoreMenuPopupComponent } from "./tables/renderer/table-more-menu/table-more-menu-popup/table-more-menu-popup.component";
@@ -100,6 +100,7 @@ export class ComponentsModule {
100
100
  FocusableComponent,
101
101
  CardContainerComponent,
102
102
  TableComponent,
103
+ TableRowAttributesDirective,
103
104
  EditRowControlsComponent,
104
105
  ColumnTemplateDirective,
105
106
  DefaultCellRendererComponent,
@@ -270,6 +271,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
270
271
  FocusableComponent,
271
272
  CardContainerComponent,
272
273
  TableComponent,
274
+ TableRowAttributesDirective,
273
275
  EditRowControlsComponent,
274
276
  ColumnTemplateDirective,
275
277
  DefaultCellRendererComponent,
@@ -354,4 +356,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
354
356
  ]
355
357
  }]
356
358
  }] });
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxF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QTJCO3dCQUMzQixvQkFBb0I7cUJBQ3JCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxtQkFBbUI7d0JBQ25CLGVBQWU7cUJBQ2hCO2lCQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQb3J0YWxNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtDZGtTY3JvbGxhYmxlTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdENoZWNrYm94TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQge01hdERpdmlkZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7TWF0TWVudU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQge01hdFByb2dyZXNzQmFyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHtNYXRTZWxlY3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQge01hdFRhYmxlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge01hdFRhYnNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtNYXRUb29sdGlwTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7QnJvd3NlckFuaW1hdGlvbnNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1RhYmxlVmlydHVhbFNjcm9sbE1vZHVsZX0gZnJvbSBcIm5nLXRhYmxlLXZpcnR1YWwtc2Nyb2xsXCI7XG5pbXBvcnQge0RpcmVjdGl2ZXNNb2R1bGV9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUnO1xuaW1wb3J0IHtGb2N1c0JpbmRpbmdGYWN0b3J5fSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZvY3VzLWJpbmRpbmctZmFjdG9yeSc7XG5pbXBvcnQge01hcmtkb3duU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbWFya2Rvd24vbWFya2Rvd24uc2VydmljZSc7XG5pbXBvcnQge0J1c3lPdmVybGF5Q29tcG9uZW50fSBmcm9tICcuL2J1c3ktb3ZlcmxheS9idXN5LW92ZXJsYXkuY29tcG9uZW50JztcbmltcG9ydCB7QWJzdHJhY3RDYXJkQ29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuL2NhcmRzL2Fic3RyYWN0LWNhcmQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0NhcmRDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vY2FyZHMvY2FyZC1jb250YWluZXIvY2FyZC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7Q29tbWFuZEZhY2VDb21wb25lbnR9IGZyb20gJy4vY29tbWFuZHMvY29tbWFuZC1mYWNlL2NvbW1hbmQtZmFjZS5jb21wb25lbnQnO1xuaW1wb3J0IHtDb21tYW5kQ29tcG9uZW50fSBmcm9tICcuL2NvbW1hbmRzL2NvbW1hbmQvY29tbWFuZC5jb21wb25lbnQnO1xuaW1wb3J0IHtGbGV4Q29tcG9uZW50fSBmcm9tICcuL2NvbW1hbmRzL2ZsZXguY29tcG9uZW50JztcbmltcG9ydCB7QWJzdHJhY3RQb3B1cE1lbnVDb21wb25lbnR9IGZyb20gJy4vY29tbWFuZHMvZ3JvdXAvcG9wdXAtbWVudS9hYnN0cmFjdC1wb3B1cC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQge01vcmVNZW51Q29tcG9uZW50fSBmcm9tICcuL2NvbW1hbmRzL2dyb3VwL3BvcHVwLW1lbnUvbW9yZS1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBQb3B1cE1lbnVSZW5kZXJlckNvbXBvbmVudFxufSBmcm9tICcuL2NvbW1hbmRzL2dyb3VwL3BvcHVwLW1lbnUvcG9wdXAtbWVudS1yZW5kZXJlci9wb3B1cC1tZW51LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1BvcHVwTWVudUNvbXBvbmVudH0gZnJvbSAnLi9jb21tYW5kcy9ncm91cC9wb3B1cC1tZW51L3BvcHVwLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7VG9vbEJhckNvbXBvbmVudH0gZnJvbSAnLi9jb21tYW5kcy9ncm91cC90b29sLWJhci90b29sLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtTZXBhcmF0b3JDb21wb25lbnR9IGZyb20gJy4vY29tbWFuZHMvc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0VtcHR5U3RhdGVDb21wb25lbnR9IGZyb20gJy4vZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7Rm9jdXNDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vZm9jdXMtY29udGFpbmVyL2ZvY3VzLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtGb2N1c2FibGVDb21wb25lbnR9IGZyb20gJy4vZm9jdXNhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Fic3RyYWN0SW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvYWJzdHJhY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7QWJzdHJhY3RMaXN0SW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvYWJzdHJhY3QtbGlzdC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtBYnN0cmFjdFZhbHVlSW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvYWJzdHJhY3QtdmFsdWUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7QXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvYXV0b2NvbXBsZXRlLWlucHV0L2F1dG9jb21wbGV0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtDaGVja2JveElucHV0Q29tcG9uZW50fSBmcm9tICcuL2Zvcm1zL2NoZWNrYm94LWlucHV0L2NoZWNrYm94LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge011bHRpcGxlU2VsZWN0SW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvbXVsdGlwbGUtc2VsZWN0LWlucHV0L211bHRpcGxlLXNlbGVjdC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtOdW1iZXJJbnB1dENvbXBvbmVudH0gZnJvbSAnLi9mb3Jtcy9udW1iZXItaW5wdXQvbnVtYmVyLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge1Bhc3N3b3JkSW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7U2VhcmNoSW5wdXRDb21wb25lbnR9IGZyb20gXCIuL2Zvcm1zL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50XCI7XG5pbXBvcnQge1NlbGVjdElucHV0Q29tcG9uZW50fSBmcm9tICcuL2Zvcm1zL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7U3RyaW5nSW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtUZXh0SW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvdGV4dC1pbnB1dC90ZXh0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge0ljb25Db21wb25lbnR9IGZyb20gJy4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQge0xhYmVsbGVkVmFsdWVDb21wb25lbnR9IGZyb20gJy4vbGFiZWxsZWQtdmFsdWUvbGFiZWxsZWQtdmFsdWUuY29tcG9uZW50JztcbmltcG9ydCB7TG9hZGluZ0NvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9sb2FkaW5nLWNvbnRhaW5lci9sb2FkaW5nLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtOb29wQ29tcG9uZW50fSBmcm9tICcuL25vb3Avbm9vcC5jb21wb25lbnQnO1xuaW1wb3J0IHtTY3JvbGxDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vc2Nyb2xsLWNvbnRhaW5lci9zY3JvbGwtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1NlY3Rpb25IZWFkZXJDb21wb25lbnR9IGZyb20gJy4vc2VjdGlvbi1oZWFkZXIvc2VjdGlvbi1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFN3aXRjaENhc2VDb21wb25lbnQsXG4gIFN3aXRjaENhc2VEZWZhdWx0RGlyZWN0aXZlLFxuICBTd2l0Y2hDYXNlV2hlbkRpcmVjdGl2ZVxufSBmcm9tICcuL3N3aXRjaC1jYXNlL3N3aXRjaC1jYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Fic3RyYWN0VGFibGVDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL2Fic3RyYWN0LXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQge0NvbHVtblRlbXBsYXRlRGlyZWN0aXZlfSBmcm9tICcuL3RhYmxlcy9jb2x1bW4vY29sdW1uLXRlbXBsYXRlL2NvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtFZGl0Um93Q29udHJvbHNDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL2VkaXRvci9lZGl0LXJvdy1jb250cm9scy9lZGl0LXJvdy1jb250cm9scy5jb21wb25lbnQnO1xuaW1wb3J0IHtQYWdpbmF0b3JDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7RGVmYXVsdENlbGxSZW5kZXJlckNvbXBvbmVudH0gZnJvbSAnLi90YWJsZXMvcmVuZGVyZXIvZGVmYXVsdC1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudFxufSBmcm9tICcuL3RhYmxlcy9yZW5kZXJlci9kZWZhdWx0LWhlYWRlci1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtaGVhZGVyLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7U2VsZWN0aW9uSGVhZGVyQ2VsbENvbXBvbmVudH0gZnJvbSAnLi90YWJsZXMvcmVuZGVyZXIvc2VsZWN0LWhlYWRlci1jZWxsL3NlbGVjdGlvbi1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtTZWxlY3Rpb25DZWxsQ29tcG9uZW50fSBmcm9tICcuL3RhYmxlcy9yZW5kZXJlci9zZWxlY3Rpb24tY2VsbC9zZWxlY3Rpb24tY2VsbC5jb21wb25lbnQnO1xuXG5cbmltcG9ydCB7VGFibGVCb2R5Q29tcG9uZW50fSBmcm9tICcuL3RhYmxlcy9yZW5kZXJlci90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7VGFibGVDZWxsQ29tcG9uZW50fSBmcm9tICcuL3RhYmxlcy9yZW5kZXJlci90YWJsZS1jZWxsL3RhYmxlLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7VGFibGVIZWFkZXJDZWxsQ29tcG9uZW50fSBmcm9tICcuL3RhYmxlcy9yZW5kZXJlci90YWJsZS1oZWFkZXItY2VsbC90YWJsZS1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgVGFibGVNb3JlTWVudVBvcHVwQ29tcG9uZW50XG59IGZyb20gXCIuL3RhYmxlcy9yZW5kZXJlci90YWJsZS1tb3JlLW1lbnUvdGFibGUtbW9yZS1tZW51LXBvcHVwL3RhYmxlLW1vcmUtbWVudS1wb3B1cC5jb21wb25lbnRcIjtcbmltcG9ydCB7VGFibGVNb3JlTWVudUNvbXBvbmVudH0gZnJvbSBcIi4vdGFibGVzL3JlbmRlcmVyL3RhYmxlLW1vcmUtbWVudS90YWJsZS1tb3JlLW1lbnUuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlUm93TWVudUNvbXBvbmVudH0gZnJvbSAnLi90YWJsZXMvdGFibGUtcm93LW1lbnUvdGFibGUtcm93LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7VGFibGVDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQge1RyZWVJbmhlcml0YW5jZUljb25Db21wb25lbnR9IGZyb20gJy4vdGFibGVzL3RyZWUtdGFibGUvdHJlZS1pbmhlcml0YW5jZS1pY29uL3RyZWUtaW5oZXJpdGFuY2UtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgVHJlZUxhYmVsQ2VsbFJlbmRlcmVyQ29tcG9uZW50XG59IGZyb20gJy4vdGFibGVzL3RyZWUtdGFibGUvdHJlZS1sYWJlbC1jZWxsLXJlbmRlcmVyL3RyZWUtbGFiZWwtY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHtUcmVlVGFibGVDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL3RyZWUtdGFibGUvdHJlZS10YWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHtNYXJrZG93bkNvbXBvbmVudH0gZnJvbSAnLi90ZXh0L21hcmtkb3duL21hcmtkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQge1ZlcnRpY2FsRm9jdXNDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vdmVydGljYWwtZm9jdXMtY29udGFpbmVyL3ZlcnRpY2FsLWZvY3VzLWNvbnRhaW5lci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBEaXJlY3RpdmVzTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIFBvcnRhbE1vZHVsZSxcbiAgICBDZGtTY3JvbGxhYmxlTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgU2Nyb2xsaW5nTW9kdWxlLFxuICAgIFRhYmxlVmlydHVhbFNjcm9sbE1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBBYnN0cmFjdElucHV0Q29tcG9uZW50LFxuICAgIEFic3RyYWN0VmFsdWVJbnB1dENvbXBvbmVudCxcbiAgICBBYnN0cmFjdExpc3RJbnB1dENvbXBvbmVudCxcbiAgICBOdW1iZXJJbnB1dENvbXBvbmVudCxcbiAgICBTdHJpbmdJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0SW5wdXRDb21wb25lbnQsXG4gICAgUGFzc3dvcmRJbnB1dENvbXBvbmVudCxcbiAgICBTZWxlY3RJbnB1dENvbXBvbmVudCxcbiAgICBNdWx0aXBsZVNlbGVjdElucHV0Q29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUlucHV0Q29tcG9uZW50LFxuICAgIENoZWNrYm94SW5wdXRDb21wb25lbnQsXG4gICAgU2Nyb2xsQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIE5vb3BDb21wb25lbnQsXG4gICAgU3dpdGNoQ2FzZUNvbXBvbmVudCxcbiAgICBTd2l0Y2hDYXNlV2hlbkRpcmVjdGl2ZSxcbiAgICBTd2l0Y2hDYXNlRGVmYXVsdERpcmVjdGl2ZSxcbiAgICBGb2N1c0NvbnRhaW5lckNvbXBvbmVudCxcbiAgICBWZXJ0aWNhbEZvY3VzQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgICBDYXJkQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIEVkaXRSb3dDb250cm9sc0NvbXBvbmVudCxcbiAgICBDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEZWZhdWx0Q2VsbFJlbmRlcmVyQ29tcG9uZW50LFxuICAgIFRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBTZWxlY3Rpb25DZWxsQ29tcG9uZW50LFxuICAgIFNlbGVjdGlvbkhlYWRlckNlbGxDb21wb25lbnQsXG4gICAgRGVmYXVsdEhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCxcbiAgICBUYWJsZUhlYWRlckNlbGxDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBTZWN0aW9uSGVhZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlUm93TWVudUNvbXBvbmVudCxcbiAgICBUb29sQmFyQ29tcG9uZW50LFxuICAgIENvbW1hbmRDb21wb25lbnQsXG4gICAgUG9wdXBNZW51Q29tcG9uZW50LFxuICAgIENvbW1hbmRGYWNlQ29tcG9uZW50LFxuICAgIE1vcmVNZW51Q29tcG9uZW50LFxuICAgIFNlcGFyYXRvckNvbXBvbmVudCxcbiAgICBGbGV4Q29tcG9uZW50LFxuICAgIEFic3RyYWN0UG9wdXBNZW51Q29tcG9uZW50LFxuICAgIFBvcHVwTWVudVJlbmRlcmVyQ29tcG9uZW50LFxuICAgIFRyZWVUYWJsZUNvbXBvbmVudCxcbiAgICBUcmVlSW5oZXJpdGFuY2VJY29uQ29tcG9uZW50LFxuICAgIFRyZWVMYWJlbENlbGxSZW5kZXJlckNvbXBvbmVudCxcbiAgICBCdXN5T3ZlcmxheUNvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIFBhZ2luYXRvckNvbXBvbmVudCxcbiAgICBBYnN0cmFjdFRhYmxlQ29tcG9uZW50LFxuICAgIEFic3RyYWN0Q2FyZENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBMYWJlbGxlZFZhbHVlQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb250YWluZXJDb21wb25lbnQsXG4gICAgTWFya2Rvd25Db21wb25lbnQsXG4gICAgVGFibGVCb2R5Q29tcG9uZW50LFxuICAgIFRhYmxlTW9yZU1lbnVDb21wb25lbnQsXG4gICAgVGFibGVNb3JlTWVudVBvcHVwQ29tcG9uZW50LFxuICAgIFNlYXJjaElucHV0Q29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOdW1iZXJJbnB1dENvbXBvbmVudCxcbiAgICBTdHJpbmdJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0SW5wdXRDb21wb25lbnQsXG4gICAgUGFzc3dvcmRJbnB1dENvbXBvbmVudCxcbiAgICBDaGVja2JveElucHV0Q29tcG9uZW50LFxuICAgIFNlbGVjdElucHV0Q29tcG9uZW50LFxuICAgIE11bHRpcGxlU2VsZWN0SW5wdXRDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnQsXG4gICAgU2Nyb2xsQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIE5vb3BDb21wb25lbnQsXG4gICAgU3dpdGNoQ2FzZUNvbXBvbmVudCxcbiAgICBTd2l0Y2hDYXNlV2hlbkRpcmVjdGl2ZSxcbiAgICBTd2l0Y2hDYXNlRGVmYXVsdERpcmVjdGl2ZSxcbiAgICBGb2N1c0NvbnRhaW5lckNvbXBvbmVudCxcbiAgICBWZXJ0aWNhbEZvY3VzQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgICBDYXJkQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIFRhYmxlQ29tcG9uZW50LFxuICAgIEVkaXRSb3dDb250cm9sc0NvbXBvbmVudCxcbiAgICBDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIFNlY3Rpb25IZWFkZXJDb21wb25lbnQsXG4gICAgVGFibGVSb3dNZW51Q29tcG9uZW50LFxuICAgIFRvb2xCYXJDb21wb25lbnQsXG4gICAgQ29tbWFuZENvbXBvbmVudCxcbiAgICBQb3B1cE1lbnVDb21wb25lbnQsXG4gICAgQ29tbWFuZEZhY2VDb21wb25lbnQsXG4gICAgTW9yZU1lbnVDb21wb25lbnQsXG4gICAgU2VwYXJhdG9yQ29tcG9uZW50LFxuICAgIEZsZXhDb21wb25lbnQsXG4gICAgVHJlZVRhYmxlQ29tcG9uZW50LFxuICAgIEJ1c3lPdmVybGF5Q29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgUGFnaW5hdG9yQ29tcG9uZW50LFxuICAgIExhYmVsbGVkVmFsdWVDb21wb25lbnQsXG4gICAgTG9hZGluZ0NvbnRhaW5lckNvbXBvbmVudCxcbiAgICBNYXJrZG93bkNvbXBvbmVudCxcbiAgICBUYWJsZU1vcmVNZW51Q29tcG9uZW50LFxuICAgIFRhYmxlTW9yZU1lbnVQb3B1cENvbXBvbmVudCxcbiAgICBTZWFyY2hJbnB1dENvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBGb2N1c0JpbmRpbmdGYWN0b3J5LFxuICAgIE1hcmtkb3duU2VydmljZVxuICBdXG5cbn0pXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50c01vZHVsZSB7XG5cbn1cbiJdfQ==
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxF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O3dCQUN6QixpQkFBaUI7d0JBQ2pCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixvQkFBb0I7cUJBQ3JCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxtQkFBbUI7d0JBQ25CLGVBQWU7cUJBQ2hCO2lCQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQb3J0YWxNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtDZGtTY3JvbGxhYmxlTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge01hdENoZWNrYm94TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQge01hdERpdmlkZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7TWF0TWVudU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQge01hdFByb2dyZXNzQmFyTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHtNYXRTZWxlY3RNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQge01hdFRhYmxlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge01hdFRhYnNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtNYXRUb29sdGlwTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7QnJvd3NlckFuaW1hdGlvbnNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1RhYmxlVmlydHVhbFNjcm9sbE1vZHVsZX0gZnJvbSBcIm5nLXRhYmxlLXZpcnR1YWwtc2Nyb2xsXCI7XG5pbXBvcnQge0RpcmVjdGl2ZXNNb2R1bGV9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUnO1xuaW1wb3J0IHtGb2N1c0JpbmRpbmdGYWN0b3J5fSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZvY3VzLWJpbmRpbmctZmFjdG9yeSc7XG5pbXBvcnQge01hcmtkb3duU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbWFya2Rvd24vbWFya2Rvd24uc2VydmljZSc7XG5pbXBvcnQge0J1c3lPdmVybGF5Q29tcG9uZW50fSBmcm9tICcuL2J1c3ktb3ZlcmxheS9idXN5LW92ZXJsYXkuY29tcG9uZW50JztcbmltcG9ydCB7QWJzdHJhY3RDYXJkQ29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuL2NhcmRzL2Fic3RyYWN0LWNhcmQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0NhcmRDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vY2FyZHMvY2FyZC1jb250YWluZXIvY2FyZC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7Q29tbWFuZEZhY2VDb21wb25lbnR9IGZyb20gJy4vY29tbWFuZHMvY29tbWFuZC1mYWNlL2NvbW1hbmQtZmFjZS5jb21wb25lbnQnO1xuaW1wb3J0IHtDb21tYW5kQ29tcG9uZW50fSBmcm9tICcuL2NvbW1hbmRzL2NvbW1hbmQvY29tbWFuZC5jb21wb25lbnQnO1xuaW1wb3J0IHtGbGV4Q29tcG9uZW50fSBmcm9tICcuL2NvbW1hbmRzL2ZsZXguY29tcG9uZW50JztcbmltcG9ydCB7QWJzdHJhY3RQb3B1cE1lbnVDb21wb25lbnR9IGZyb20gJy4vY29tbWFuZHMvZ3JvdXAvcG9wdXAtbWVudS9hYnN0cmFjdC1wb3B1cC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQge01vcmVNZW51Q29tcG9uZW50fSBmcm9tICcuL2NvbW1hbmRzL2dyb3VwL3BvcHVwLW1lbnUvbW9yZS1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBQb3B1cE1lbnVSZW5kZXJlckNvbXBvbmVudFxufSBmcm9tICcuL2NvbW1hbmRzL2dyb3VwL3BvcHVwLW1lbnUvcG9wdXAtbWVudS1yZW5kZXJlci9wb3B1cC1tZW51LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1BvcHVwTWVudUNvbXBvbmVudH0gZnJvbSAnLi9jb21tYW5kcy9ncm91cC9wb3B1cC1tZW51L3BvcHVwLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7VG9vbEJhckNvbXBvbmVudH0gZnJvbSAnLi9jb21tYW5kcy9ncm91cC90b29sLWJhci90b29sLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHtTZXBhcmF0b3JDb21wb25lbnR9IGZyb20gJy4vY29tbWFuZHMvc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0VtcHR5U3RhdGVDb21wb25lbnR9IGZyb20gJy4vZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7Rm9jdXNDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vZm9jdXMtY29udGFpbmVyL2ZvY3VzLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtGb2N1c2FibGVDb21wb25lbnR9IGZyb20gJy4vZm9jdXNhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Fic3RyYWN0SW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvYWJzdHJhY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7QWJzdHJhY3RMaXN0SW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvYWJzdHJhY3QtbGlzdC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtBYnN0cmFjdFZhbHVlSW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvYWJzdHJhY3QtdmFsdWUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7QXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvYXV0b2NvbXBsZXRlLWlucHV0L2F1dG9jb21wbGV0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtDaGVja2JveElucHV0Q29tcG9uZW50fSBmcm9tICcuL2Zvcm1zL2NoZWNrYm94LWlucHV0L2NoZWNrYm94LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge011bHRpcGxlU2VsZWN0SW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvbXVsdGlwbGUtc2VsZWN0LWlucHV0L211bHRpcGxlLXNlbGVjdC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtOdW1iZXJJbnB1dENvbXBvbmVudH0gZnJvbSAnLi9mb3Jtcy9udW1iZXItaW5wdXQvbnVtYmVyLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge1Bhc3N3b3JkSW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7U2VhcmNoSW5wdXRDb21wb25lbnR9IGZyb20gXCIuL2Zvcm1zL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50XCI7XG5pbXBvcnQge1NlbGVjdElucHV0Q29tcG9uZW50fSBmcm9tICcuL2Zvcm1zL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7U3RyaW5nSW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvc3RyaW5nLWlucHV0L3N0cmluZy1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtUZXh0SW5wdXRDb21wb25lbnR9IGZyb20gJy4vZm9ybXMvdGV4dC1pbnB1dC90ZXh0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQge0ljb25Db21wb25lbnR9IGZyb20gJy4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQge0xhYmVsbGVkVmFsdWVDb21wb25lbnR9IGZyb20gJy4vbGFiZWxsZWQtdmFsdWUvbGFiZWxsZWQtdmFsdWUuY29tcG9uZW50JztcbmltcG9ydCB7TG9hZGluZ0NvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9sb2FkaW5nLWNvbnRhaW5lci9sb2FkaW5nLWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtOb29wQ29tcG9uZW50fSBmcm9tICcuL25vb3Avbm9vcC5jb21wb25lbnQnO1xuaW1wb3J0IHtTY3JvbGxDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vc2Nyb2xsLWNvbnRhaW5lci9zY3JvbGwtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1NlY3Rpb25IZWFkZXJDb21wb25lbnR9IGZyb20gJy4vc2VjdGlvbi1oZWFkZXIvc2VjdGlvbi1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFN3aXRjaENhc2VDb21wb25lbnQsXG4gIFN3aXRjaENhc2VEZWZhdWx0RGlyZWN0aXZlLFxuICBTd2l0Y2hDYXNlV2hlbkRpcmVjdGl2ZVxufSBmcm9tICcuL3N3aXRjaC1jYXNlL3N3aXRjaC1jYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0Fic3RyYWN0VGFibGVDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL2Fic3RyYWN0LXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQge0NvbHVtblRlbXBsYXRlRGlyZWN0aXZlfSBmcm9tICcuL3RhYmxlcy9jb2x1bW4vY29sdW1uLXRlbXBsYXRlL2NvbHVtbi10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtFZGl0Um93Q29udHJvbHNDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL2VkaXRvci9lZGl0LXJvdy1jb250cm9scy9lZGl0LXJvdy1jb250cm9scy5jb21wb25lbnQnO1xuaW1wb3J0IHtQYWdpbmF0b3JDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7RGVmYXVsdENlbGxSZW5kZXJlckNvbXBvbmVudH0gZnJvbSAnLi90YWJsZXMvcmVuZGVyZXIvZGVmYXVsdC1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRGVmYXVsdEhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudFxufSBmcm9tICcuL3RhYmxlcy9yZW5kZXJlci9kZWZhdWx0LWhlYWRlci1jZWxsLXJlbmRlcmVyL2RlZmF1bHQtaGVhZGVyLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7U2VsZWN0aW9uSGVhZGVyQ2VsbENvbXBvbmVudH0gZnJvbSAnLi90YWJsZXMvcmVuZGVyZXIvc2VsZWN0LWhlYWRlci1jZWxsL3NlbGVjdGlvbi1oZWFkZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtTZWxlY3Rpb25DZWxsQ29tcG9uZW50fSBmcm9tICcuL3RhYmxlcy9yZW5kZXJlci9zZWxlY3Rpb24tY2VsbC9zZWxlY3Rpb24tY2VsbC5jb21wb25lbnQnO1xuXG5cbmltcG9ydCB7VGFibGVCb2R5Q29tcG9uZW50LCBUYWJsZVJvd0F0dHJpYnV0ZXNEaXJlY3RpdmV9IGZyb20gJy4vdGFibGVzL3JlbmRlcmVyL3RhYmxlLWJvZHkvdGFibGUtYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJsZUNlbGxDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL3JlbmRlcmVyL3RhYmxlLWNlbGwvdGFibGUtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJsZUhlYWRlckNlbGxDb21wb25lbnR9IGZyb20gJy4vdGFibGVzL3JlbmRlcmVyL3RhYmxlLWhlYWRlci1jZWxsL3RhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBUYWJsZU1vcmVNZW51UG9wdXBDb21wb25lbnRcbn0gZnJvbSBcIi4vdGFibGVzL3JlbmRlcmVyL3RhYmxlLW1vcmUtbWVudS90YWJsZS1tb3JlLW1lbnUtcG9wdXAvdGFibGUtbW9yZS1tZW51LXBvcHVwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtUYWJsZU1vcmVNZW51Q29tcG9uZW50fSBmcm9tIFwiLi90YWJsZXMvcmVuZGVyZXIvdGFibGUtbW9yZS1tZW51L3RhYmxlLW1vcmUtbWVudS5jb21wb25lbnRcIjtcbmltcG9ydCB7VGFibGVSb3dNZW51Q29tcG9uZW50fSBmcm9tICcuL3RhYmxlcy90YWJsZS1yb3ctbWVudS90YWJsZS1yb3ctbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHtUYWJsZUNvbXBvbmVudH0gZnJvbSAnLi90YWJsZXMvdGFibGUvdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7VHJlZUluaGVyaXRhbmNlSWNvbkNvbXBvbmVudH0gZnJvbSAnLi90YWJsZXMvdHJlZS10YWJsZS90cmVlLWluaGVyaXRhbmNlLWljb24vdHJlZS1pbmhlcml0YW5jZS1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBUcmVlTGFiZWxDZWxsUmVuZGVyZXJDb21wb25lbnRcbn0gZnJvbSAnLi90YWJsZXMvdHJlZS10YWJsZS90cmVlLWxhYmVsLWNlbGwtcmVuZGVyZXIvdHJlZS1sYWJlbC1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1RyZWVUYWJsZUNvbXBvbmVudH0gZnJvbSAnLi90YWJsZXMvdHJlZS10YWJsZS90cmVlLXRhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQge01hcmtkb3duQ29tcG9uZW50fSBmcm9tICcuL3RleHQvbWFya2Rvd24vbWFya2Rvd24uY29tcG9uZW50JztcbmltcG9ydCB7VmVydGljYWxGb2N1c0NvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi92ZXJ0aWNhbC1mb2N1cy1jb250YWluZXIvdmVydGljYWwtZm9jdXMtY29udGFpbmVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIERpcmVjdGl2ZXNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgUG9ydGFsTW9kdWxlLFxuICAgIENka1Njcm9sbGFibGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBTY3JvbGxpbmdNb2R1bGUsXG4gICAgVGFibGVWaXJ0dWFsU2Nyb2xsTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEFic3RyYWN0SW5wdXRDb21wb25lbnQsXG4gICAgQWJzdHJhY3RWYWx1ZUlucHV0Q29tcG9uZW50LFxuICAgIEFic3RyYWN0TGlzdElucHV0Q29tcG9uZW50LFxuICAgIE51bWJlcklucHV0Q29tcG9uZW50LFxuICAgIFN0cmluZ0lucHV0Q29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBQYXNzd29yZElucHV0Q29tcG9uZW50LFxuICAgIFNlbGVjdElucHV0Q29tcG9uZW50LFxuICAgIE11bHRpcGxlU2VsZWN0SW5wdXRDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnQsXG4gICAgQ2hlY2tib3hJbnB1dENvbXBvbmVudCxcbiAgICBTY3JvbGxDb250YWluZXJDb21wb25lbnQsXG4gICAgTm9vcENvbXBvbmVudCxcbiAgICBTd2l0Y2hDYXNlQ29tcG9uZW50LFxuICAgIFN3aXRjaENhc2VXaGVuRGlyZWN0aXZlLFxuICAgIFN3aXRjaENhc2VEZWZhdWx0RGlyZWN0aXZlLFxuICAgIEZvY3VzQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIFZlcnRpY2FsRm9jdXNDb250YWluZXJDb21wb25lbnQsXG4gICAgRm9jdXNhYmxlQ29tcG9uZW50LFxuICAgIENhcmRDb250YWluZXJDb21wb25lbnQsXG4gICAgVGFibGVDb21wb25lbnQsXG4gICAgVGFibGVSb3dBdHRyaWJ1dGVzRGlyZWN0aXZlLFxuICAgIEVkaXRSb3dDb250cm9sc0NvbXBvbmVudCxcbiAgICBDb2x1bW5UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEZWZhdWx0Q2VsbFJlbmRlcmVyQ29tcG9uZW50LFxuICAgIFRhYmxlQ2VsbENvbXBvbmVudCxcbiAgICBTZWxlY3Rpb25DZWxsQ29tcG9uZW50LFxuICAgIFNlbGVjdGlvbkhlYWRlckNlbGxDb21wb25lbnQsXG4gICAgRGVmYXVsdEhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCxcbiAgICBUYWJsZUhlYWRlckNlbGxDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBTZWN0aW9uSGVhZGVyQ29tcG9uZW50LFxuICAgIFRhYmxlUm93TWVudUNvbXBvbmVudCxcbiAgICBUb29sQmFyQ29tcG9uZW50LFxuICAgIENvbW1hbmRDb21wb25lbnQsXG4gICAgUG9wdXBNZW51Q29tcG9uZW50LFxuICAgIENvbW1hbmRGYWNlQ29tcG9uZW50LFxuICAgIE1vcmVNZW51Q29tcG9uZW50LFxuICAgIFNlcGFyYXRvckNvbXBvbmVudCxcbiAgICBGbGV4Q29tcG9uZW50LFxuICAgIEFic3RyYWN0UG9wdXBNZW51Q29tcG9uZW50LFxuICAgIFBvcHVwTWVudVJlbmRlcmVyQ29tcG9uZW50LFxuICAgIFRyZWVUYWJsZUNvbXBvbmVudCxcbiAgICBUcmVlSW5oZXJpdGFuY2VJY29uQ29tcG9uZW50LFxuICAgIFRyZWVMYWJlbENlbGxSZW5kZXJlckNvbXBvbmVudCxcbiAgICBCdXN5T3ZlcmxheUNvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIFBhZ2luYXRvckNvbXBvbmVudCxcbiAgICBBYnN0cmFjdFRhYmxlQ29tcG9uZW50LFxuICAgIEFic3RyYWN0Q2FyZENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBMYWJlbGxlZFZhbHVlQ29tcG9uZW50LFxuICAgIExvYWRpbmdDb250YWluZXJDb21wb25lbnQsXG4gICAgTWFya2Rvd25Db21wb25lbnQsXG4gICAgVGFibGVCb2R5Q29tcG9uZW50LFxuICAgIFRhYmxlTW9yZU1lbnVDb21wb25lbnQsXG4gICAgVGFibGVNb3JlTWVudVBvcHVwQ29tcG9uZW50LFxuICAgIFNlYXJjaElucHV0Q29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOdW1iZXJJbnB1dENvbXBvbmVudCxcbiAgICBTdHJpbmdJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0SW5wdXRDb21wb25lbnQsXG4gICAgUGFzc3dvcmRJbnB1dENvbXBvbmVudCxcbiAgICBDaGVja2JveElucHV0Q29tcG9uZW50LFxuICAgIFNlbGVjdElucHV0Q29tcG9uZW50LFxuICAgIE11bHRpcGxlU2VsZWN0SW5wdXRDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlSW5wdXRDb21wb25lbnQsXG4gICAgU2Nyb2xsQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIE5vb3BDb21wb25lbnQsXG4gICAgU3dpdGNoQ2FzZUNvbXBvbmVudCxcbiAgICBTd2l0Y2hDYXNlV2hlbkRpcmVjdGl2ZSxcbiAgICBTd2l0Y2hDYXNlRGVmYXVsdERpcmVjdGl2ZSxcbiAgICBGb2N1c0NvbnRhaW5lckNvbXBvbmVudCxcbiAgICBWZXJ0aWNhbEZvY3VzQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgICBDYXJkQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIFRhYmxlQ29tcG9uZW50LFxuXG4gICAgRWRpdFJvd0NvbnRyb2xzQ29tcG9uZW50LFxuICAgIENvbHVtblRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIEljb25Db21wb25lbnQsXG4gICAgU2VjdGlvbkhlYWRlckNvbXBvbmVudCxcbiAgICBUYWJsZVJvd01lbnVDb21wb25lbnQsXG4gICAgVG9vbEJhckNvbXBvbmVudCxcbiAgICBDb21tYW5kQ29tcG9uZW50LFxuICAgIFBvcHVwTWVudUNvbXBvbmVudCxcbiAgICBDb21tYW5kRmFjZUNvbXBvbmVudCxcbiAgICBNb3JlTWVudUNvbXBvbmVudCxcbiAgICBTZXBhcmF0b3JDb21wb25lbnQsXG4gICAgRmxleENvbXBvbmVudCxcbiAgICBUcmVlVGFibGVDb21wb25lbnQsXG4gICAgQnVzeU92ZXJsYXlDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgTGFiZWxsZWRWYWx1ZUNvbXBvbmVudCxcbiAgICBMb2FkaW5nQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIE1hcmtkb3duQ29tcG9uZW50LFxuICAgIFRhYmxlTW9yZU1lbnVDb21wb25lbnQsXG4gICAgVGFibGVNb3JlTWVudVBvcHVwQ29tcG9uZW50LFxuICAgIFNlYXJjaElucHV0Q29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIEZvY3VzQmluZGluZ0ZhY3RvcnksXG4gICAgTWFya2Rvd25TZXJ2aWNlXG4gIF1cblxufSlcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRzTW9kdWxlIHtcblxufVxuIl19
@@ -24,6 +24,14 @@ class RowClass {
24
24
  this.matches = matches;
25
25
  }
26
26
  }
27
+ class RowAttribute {
28
+ attributeName;
29
+ getValue;
30
+ constructor(attributeName, getValue) {
31
+ this.attributeName = attributeName;
32
+ this.getValue = getValue;
33
+ }
34
+ }
27
35
  export class AbstractTableModel extends GarbageCollector {
28
36
  _dataSource$ = this.registerDisposable(new DelegatingListModel());
29
37
  _filteredRows$ = this.registerDisposable(new DelegatingListModel());
@@ -34,6 +42,7 @@ export class AbstractTableModel extends GarbageCollector {
34
42
  saveCommandFactory;
35
43
  _editorSessionByRowId;
36
44
  rowClassNamePredicates = [];
45
+ rowAttributeGenerators = [];
37
46
  _columnTextPropertiesLookup;
38
47
  editing$;
39
48
  firstEditableColumn$;
@@ -202,6 +211,9 @@ export class AbstractTableModel extends GarbageCollector {
202
211
  addRowClass(className, predicate) {
203
212
  this.rowClassNamePredicates.push(new RowClass(className, predicate));
204
213
  }
214
+ addRowAttribute(attributeName, getValue) {
215
+ this.rowAttributeGenerators.push(new RowAttribute(attributeName, getValue));
216
+ }
205
217
  getRowClasses(row) {
206
218
  const classNames = [];
207
219
  this.rowClassNamePredicates.forEach(i => {
@@ -211,6 +223,11 @@ export class AbstractTableModel extends GarbageCollector {
211
223
  });
212
224
  return classNames;
213
225
  }
226
+ getRowAttributes(row) {
227
+ return this.rowAttributeGenerators.reduce((result, generator) => {
228
+ return { ...result, [generator.attributeName]: generator.getValue(row) };
229
+ }, {});
230
+ }
214
231
  addColumn(column, position) {
215
232
  return this.columnManager.addColumn(column, position);
216
233
  }
@@ -261,4 +278,4 @@ export class AbstractTableModel extends GarbageCollector {
261
278
  }
262
279
  }
263
280
  ProxyRegistry.registerOneTimeBinding(AbstractTableModel);
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFibGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9hYnN0cmFjdC10YWJsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEVBSU4sbUJBQW1CLEVBQ25CLGlCQUFpQixFQUVqQixHQUFHLEVBQ0gsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUdoQixnQkFBZ0IsRUFFaEIsT0FBTyxFQUNQLGFBQWEsRUFDYixjQUFjLEVBRWQsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUl0RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFbEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFNaEYsT0FBTyxF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QUMsR0FBRyxDQUFDLENBQUM7U0FDckI7YUFBTTtZQUNMLGdCQUFnQjtZQUNoQiw2RUFBNkU7WUFDN0Usd0VBQXdFO1lBQ3hFLHVEQUF1RDtZQUN2RCxzRUFBc0U7WUFDdEUsS0FBSztTQUNOO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FFRjtBQUNELGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnRUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW4sXG4gIENvbW1hbmQsXG4gIENvbnN0cnVjdGFibGUsXG4gIERlbGVnYXRpbmdMaXN0TW9kZWwsXG4gIERpcnR5VHJhY2tpbmdGb3JtLFxuICBEaXNwb3NhYmxlLFxuICBEc2wsXG4gIEV2ZW50TGlzdGVuZXJMaXN0LFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBMaXN0TW9kZWwsXG4gIE1hcE1vZGVsQ2hhaW4sXG4gIE11dGFibGVMaXN0TW9kZWwsXG4gIFByb3hpZmllZCxcbiAgcHJveGlmeSxcbiAgUHJveHlSZWdpc3RyeSxcbiAgU2VsZWN0aW9uTW9kZWwsXG4gIFR5cGVzLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge2xhbmd9IGZyb20gXCJAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzXCI7XG5cbmltcG9ydCB7aXNGdW5jdGlvbiwgaXNOaWx9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7Q29sdW1uTWFuYWdlcn0gZnJvbSBcIi4vY29sdW1uL2NvbHVtbi1tYW5hZ2VyXCI7XG5pbXBvcnQge0NlbGxSZW5kZXJlck9wdGlvbnMsIENvbHVtbk1vZGVsLCBPbkNvbXBvbmVudEluaXR9IGZyb20gXCIuL2NvbHVtbi9jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7Q29sdW1uT3JkZXJNYW5hZ2VyfSBmcm9tIFwiLi9jb2x1bW4vY29sdW1uLW9yZGVyLW1hbmFnZXJcIjtcbmltcG9ydCB7Q29sdW1uVGV4dFByb3BlcnRpZXN9IGZyb20gXCIuL2NvbHVtbi9jb2x1bW4tdGV4dC1wcm9wZXJ0aWVzXCI7XG5pbXBvcnQge0N1c3RvbVRlbXBsYXRlQ29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9jdXN0b20tdGVtcGxhdGUtY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0N1c3RvbVZhbHVlQ29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9jdXN0b20tdmFsdWUtY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0VkaXRvckNvbnRyb2xDb2x1bW5Nb2RlbH0gZnJvbSBcIi4vY29sdW1uL2VkaXRvci1jb250cm9scy1jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7TGlzdFByb3BlcnR5Q29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9saXN0LXByb3BlcnktY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge1Byb3BlcnR5Q29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9wcm9wZXJ0eS1jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7U2VsZWN0aW9uQ29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9zZWxlY3Rpb24tY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0VkaXRTZXNzaW9ufSBmcm9tIFwiLi9lZGl0b3IvZWRpdC1zZXNzaW9uXCI7XG5cbmltcG9ydCB7Q29sdW1uVGV4dFNlYXJjaEZvcm1hdHRlcn0gZnJvbSBcIi4vZmlsdGVyL2NvbHVtbi10ZXh0LXNlYXJjaC1mb3JtYXR0ZXJcIjtcbmltcG9ydCB7VGV4dFNlYXJjaFByZWRpY2F0ZX0gZnJvbSBcIi4vZmlsdGVyL3RleHQtc2VhcmNoLXByZWRpY2F0ZVwiO1xuaW1wb3J0IHtDZWxsUmVuZGVyZXJ9IGZyb20gXCIuL3JlbmRlcmVyL2NlbGwtcmVuZGVyZXJcIjtcbmltcG9ydCB7XG4gIFRhYmxlTW9yZU1lbnVQb3B1cENvbXBvbmVudFxufSBmcm9tIFwiLi9yZW5kZXJlci90YWJsZS1tb3JlLW1lbnUvdGFibGUtbW9yZS1tZW51LXBvcHVwL3RhYmxlLW1vcmUtbWVudS1wb3B1cC5jb21wb25lbnRcIjtcbmltcG9ydCB7VGFibGVNb3JlTWVudUNvbXBvbmVudH0gZnJvbSBcIi4vcmVuZGVyZXIvdGFibGUtbW9yZS1tZW51L3RhYmxlLW1vcmUtbWVudS5jb21wb25lbnRcIjtcbmltcG9ydCBEZWZhdWx0QXJyYXlGb3JtYXR0ZXIgPSBDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyLkRlZmF1bHRBcnJheUZvcm1hdHRlcjtcbmltcG9ydCBEZWZhdWx0VmFsdWVGb3JtYXR0ZXIgPSBDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyLkRlZmF1bHRWYWx1ZUZvcm1hdHRlcjtcblxuLy8gZXhwb3J0IHR5cGUgU3RyaW5nUHJvcGVydGllc09mPFQ+ID0geyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIHN0cmluZyA/IEsgOiBuZXZlciB9W2tleW9mIFRdO1xuLy8gZXhwb3J0IHR5cGUgTnVtYmVyUHJvcGVydGllc09mPFQ+ID0geyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIG51bWJlciA/IEsgOiBuZXZlciB9W2tleW9mIFRdO1xuXG5jbGFzcyBSb3dDbGFzczxSb3c+IHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHJlYWRvbmx5IG1hdGNoZXM6IChyb3c6IFJvdykgPT4gYm9vbGVhbikge1xuICB9XG59XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VGFibGVNb2RlbDxSb3c+IGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhU291cmNlJCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nTGlzdE1vZGVsPFJvdz4oKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfZmlsdGVyZWRSb3dzJCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nTGlzdE1vZGVsPFJvdz4oKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfdmlzaWJsZVJvd3MkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdMaXN0TW9kZWw8Um93PigpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sdW1uTWFuYWdlciA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBDb2x1bW5NYW5hZ2VyPFJvdz4oKSk7XG5cbiAgcHJpdmF0ZSBfZWRpdG9yU2Vzc2lvbnMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxFZGl0U2Vzc2lvbjxSb3c+PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3dzQmVpbmdFZGl0ZWQkOiBNdXRhYmxlTGlzdE1vZGVsPFJvdz47XG4gIHByaXZhdGUgc2F2ZUNvbW1hbmRGYWN0b3J5OiBDb21tYW5kLkZhY3Rvcnk8RGlydHlUcmFja2luZ0Zvcm08Um93PiwgYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4+O1xuICBwcml2YXRlIF9lZGl0b3JTZXNzaW9uQnlSb3dJZDogTWFwTW9kZWxDaGFpbjxhbnksIEVkaXRTZXNzaW9uPFJvdz4+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm93Q2xhc3NOYW1lUHJlZGljYXRlczogUm93Q2xhc3M8Um93PltdID0gW107XG5cbiAgcHJpdmF0ZSBfY29sdW1uVGV4dFByb3BlcnRpZXNMb29rdXA6IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106IENvbHVtblRleHRQcm9wZXJ0aWVzIH07XG5cbiAgcmVhZG9ubHkgZWRpdGluZyQ6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG4gIHJlYWRvbmx5IGZpcnN0RWRpdGFibGVDb2x1bW4kOiBWYWx1ZU1vZGVsQ2hhaW48Q29sdW1uTW9kZWw8Um93Pj47XG4gIHByaXZhdGUgc2VsZWN0aW9uQ29sdW1uTW9kZWw6IFNlbGVjdGlvbkNvbHVtbk1vZGVsPFJvdz47XG4gIHByaXZhdGUgcm93U2VsZWN0aW9uRGlzYWJsZWRPbkFsbENvbHVtbnMkOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvd0NsaWNrTGlzdGVuZXJzID0gbmV3IEV2ZW50TGlzdGVuZXJMaXN0PChyb3c6IFJvdykgPT4gdm9pZD4oKTtcbiAgcmVhZG9ubHkgZmlyc3RWaXNpYmxlQ29sdW1uJDogVmFsdWVNb2RlbDxDb2x1bW5Nb2RlbDxSb3c+PjtcbiAgcmVhZG9ubHkgbGFzdFZpc2libGVDb2x1bW4kOiBWYWx1ZU1vZGVsPENvbHVtbk1vZGVsPFJvdz4+O1xuXG4gIHByaXZhdGUgX2NyZWF0ZUZvcm06IChyb3c6IFJvdykgPT4gRGlydHlUcmFja2luZ0Zvcm08Um93PiA9IChyb3cpID0+IG5ldyBEaXJ0eVRyYWNraW5nRm9ybTxSb3c+KCk7XG4gIHJlYWRvbmx5IHRleHRTZWFyY2hQcmVkaWNhdGUkOiBWYWx1ZU1vZGVsPFRleHRTZWFyY2hQcmVkaWNhdGU8Um93Pj47XG4gIHByb3RlY3RlZCBpZGVudGl0eU9mOiAoaXRlbTogUm93KSA9PiBhbnk7XG4gIHJlYWRvbmx5IGRhdGFTb3VyY2VFbXB0eSQ6IFZhbHVlTW9kZWw8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZWxQcm94eSA9IHByb3hpZnkoU2VsZWN0aW9uTW9kZWw8Um93PikgYXMgUHJveGlmaWVkPFNlbGVjdGlvbk1vZGVsPFJvdz4+O1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkSXRlbXMkOiBMaXN0TW9kZWw8Um93PjtcbiAgcmVhZG9ubHkgbGVhZFNlbGVjdGlvbiQ6IFZhbHVlTW9kZWw8Um93PjtcbiAgcmVhZG9ubHkgaGFzU2VsZWN0aW9uJDogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMuX3Jvd3NCZWluZ0VkaXRlZCQgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxSb3c+KFtdLCB7XG4gICAgICBpZGVudGlmaWVkV2l0aDogcm93ID0+IHRoaXMuaWRlbnRpdHlPZihyb3cpXG4gICAgfSk7XG4gICAgdGhpcy5fZWRpdG9yU2Vzc2lvbkJ5Um93SWQgPSBjaGFpbih0aGlzLl9lZGl0b3JTZXNzaW9ucykuaW5kZXhCeShcInJvd0lkXCIpO1xuICAgIHRoaXMuZWRpdGluZyQgPSBjaGFpbih0aGlzLl9lZGl0b3JTZXNzaW9ucykuY291bnQoKS5pc0dyZWF0ZXJUaGFuKDApO1xuXG4gICAgdGhpcy50ZXh0U2VhcmNoUHJlZGljYXRlJCA9IGNoYWluKHRoaXMudmlzaWJsZUNvbHVtbnMkKS5yZWR1Y2VBbGwoY29sdW1ucyA9PiB7XG4gICAgICByZXR1cm4gKHJvdzogUm93LCByZWdleDogUmVnRXhwKSA9PiB7XG4gICAgICAgIHJldHVybiAoIXJlZ2V4IHx8ICEhY29sdW1ucy5maW5kKGMgPT4gcmVnZXgudGVzdChjLmdldFNlYXJjaFRleHRGb3Iocm93KSkpKTtcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5maXJzdEVkaXRhYmxlQ29sdW1uJCA9IGNoYWluKHRoaXMuY29sdW1ucykuc2VsZWN0KGMgPT4gYy5oYXNFZGl0b3JQb3J0YWwoKSkuZmlyc3QoKTtcbiAgICB0aGlzLmZpcnN0VmlzaWJsZUNvbHVtbiQgPSBjaGFpbih0aGlzLnZpc2libGVDb2x1bW5zJCkuZmlyc3QoKTtcbiAgICB0aGlzLmxhc3RWaXNpYmxlQ29sdW1uJCA9IGNoYWluKHRoaXMudmlzaWJsZUNvbHVtbnMkKS5sYXN0KCk7XG5cbiAgICB0aGlzLnJvd1NlbGVjdGlvbkRpc2FibGVkT25BbGxDb2x1bW5zJCA9IGNoYWluKHRoaXMuY29sdW1uTWFuYWdlci52aXNpYmxlQ29sdW1ucyQpLnNlbGVjdChjb2x1bW4gPT4gY29sdW1uLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpKS5jb3VudCgpLmVxdWFscygwKTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZUVtcHR5JCA9IGNoYWluKHRoaXMuZGF0YVNvdXJjZSQpLmlzRW1wdHkoKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyQgPSB0aGlzLnNlbGVjdGlvbk1vZGVsUHJveHkuc2VsZWN0ZWRJdGVtcyQ7XG4gICAgdGhpcy5sZWFkU2VsZWN0aW9uJCA9IHRoaXMuc2VsZWN0aW9uTW9kZWxQcm94eS5sZWFkU2VsZWN0aW9uJDtcbiAgICB0aGlzLmhhc1NlbGVjdGlvbiQgPSBjaGFpbih0aGlzLnNlbGVjdGVkSXRlbXMkKS5pc05vdEVtcHR5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0RGF0YVNvdXJjZShkYXRhU291cmNlJCkge1xuICAgIHRoaXMuX2RhdGFTb3VyY2UkLnNldERlbGVnYXRlKGRhdGFTb3VyY2UkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2RvOiBtYWtlIHRoaXMgZm9yY2Ugb25lIHRhYmxlIGF0IGEgdGltZVxuICAgKiBAcGFyYW0gaW5qZWN0b3JcbiAgICogQHBhcmFtIGlkZW50aXR5T2ZcbiAgICogQHBhcmFtIHJlc3RcbiAgICovXG4gIGluaXRpYWxpc2UoaW5qZWN0b3I6IEluamVjdG9yLCBpZGVudGl0eU9mOiAoaXRlbTogUm93KSA9PiBhbnkpIHtcbiAgICAvLyBub3Qgc3VyZSBpZiBJIHNob3VsZCBkZWZpbmUgdGhlc2UgYXQgdGhlIG1vZHVsZSBsZXZlbCBvciBub3QuLi5cbiAgICBjb25zdCBjdXN0b21JbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IERlZmF1bHRWYWx1ZUZvcm1hdHRlcn0sXG4gICAgICAgIHtwcm92aWRlOiBEZWZhdWx0QXJyYXlGb3JtYXR0ZXJ9XG4gICAgICBdLFxuICAgICAgcGFyZW50OiBpbmplY3RvclxuICAgIH0pO1xuICAgIHRoaXMuY29sdW1ucy52YWx1ZS5mb3JFYWNoKGMgPT4gYy5pbml0aWFsaXNlKGN1c3RvbUluamVjdG9yKSk7XG4gICAgdGhpcy5pZGVudGl0eU9mID0gaWRlbnRpdHlPZjtcbiAgfVxuXG4gIGdldCBkYXRhU291cmNlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZSQucmVhZG9ubHkkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJvd3MgdGhhdCBhcmUgdmlzaWJsZSBhZnRlciBhbnkgZmlsdGVycyBhcmUgYXBwbGllZC4gIElmIHRoZXJlIGFyZVxuICAgKiBubyBmaWx0ZXJzIHRoZW4gdGhpcyB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSByb290IGRhdGFzZXQuXG4gICAqL1xuICBnZXQgZmlsdGVyZWRSb3dzJCgpOiBMaXN0TW9kZWw8Um93PiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcmVkUm93cyQucmVhZG9ubHkkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHJvd3MgYXJlIGN1cnJlbnRseSB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgSS5lLiB0aGUgY3VycmVudCBwYWdlIGluIGEgcGFnZWQgdGFibGUgb3IgdGhlXG4gICAqIGV4cGFuZGVkIHJvd3MgaW4gYSB0cmVlIHRhYmxlLlxuICAgKi9cbiAgZ2V0IHZpc2libGVSb3dzJCgpOiBMaXN0TW9kZWw8Um93PiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGVSb3dzJC5yZWFkb25seSQ7XG4gIH1cblxuICBnZXQgcm93c0JlaW5nRWRpdGVkJCgpOiBMaXN0TW9kZWw8Um93PiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NCZWluZ0VkaXRlZCQucmVhZG9ubHkkO1xuICB9XG5cblxuICBzdGFydEVkaXRTZXNzaW9uKHJvdzogUm93KTogRWRpdFNlc3Npb248Um93PiB7XG4gICAgY29uc3Qgcm93SWQgPSB0aGlzLmlkZW50aXR5T2Yocm93KTtcbiAgICBpZiAodGhpcy5fcm93c0JlaW5nRWRpdGVkJC5xdWVyeSgpLmluZGV4T2Yocm93KSA+IC0xKSB7XG4gICAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYFJvdyB3aXRoIGlkPSR7cm93SWR9IGFscmVhZHkgYmVpbmcgZWRpdGVkYCk7XG4gICAgfVxuXG4gICAgLy8gdG9kbzogcGFzcyB0aGUgZmFjdG9yaWVzIHRvIHRoZSBlZGl0IHNlc3Npb24gc28gd2UgY2FuIG1ha2UgdGhlIHdob2xlIGxvdCBwbHVnZ2FibGU/XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuX2NyZWF0ZUZvcm0ocm93KTtcbiAgICBjb25zdCBzYXZlQ29tbWFuZCA9IHRoaXMuc2F2ZUNvbW1hbmRGYWN0b3J5LmNyZWF0ZShmb3JtLCB7ZGlzcG9zZWRXaXRoOiB0aGlzfSk7XG4gICAgY29uc3QgZWRpdFNlc3Npb24gPSBuZXcgRWRpdFNlc3Npb248Um93Pihyb3dJZCwgcm93LCBmb3JtLCBzYXZlQ29tbWFuZCk7XG4gICAgY29uc3Qge3doZW59ID0gRHNsLmRpc3Bvc2VXaXRoKGVkaXRTZXNzaW9uKTtcbiAgICB3aGVuKGVkaXRTZXNzaW9uLmxpdmVSb3dWYWx1ZSQpLmNoYW5nZXMoKGVkaXRlZFZhbHVlKSA9PiB7XG4gICAgICB0aGlzLl9yb3dzQmVpbmdFZGl0ZWQkLnJlcGxhY2VPclB1c2goZWRpdGVkVmFsdWUpO1xuICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG5cbiAgICB0aGlzLl9lZGl0b3JTZXNzaW9ucy5wdXNoKGVkaXRTZXNzaW9uKTtcbiAgICBlZGl0U2Vzc2lvbi5vbkRpc3Bvc2UoKCkgPT4ge1xuICAgICAgdGhpcy5fcm93c0JlaW5nRWRpdGVkJC5yZW1vdmUoZWRpdFNlc3Npb24ubGl2ZVJvd1ZhbHVlJC52YWx1ZSk7XG4gICAgICB0aGlzLl9lZGl0b3JTZXNzaW9ucy5yZW1vdmUoZWRpdFNlc3Npb24pO1xuICAgIH0pO1xuICAgIHJldHVybiBlZGl0U2Vzc2lvbjtcbiAgfVxuXG4gIGdldEVkaXRTZXNzaW9uRm9yKHJvdzogUm93KTogRWRpdFNlc3Npb248Um93PiB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRvclNlc3Npb25CeVJvd0lkLmdldCh0aGlzLmlkZW50aXR5T2Yocm93KSk7XG4gIH1cblxuICBjYW5jZWxBbGxFZGl0b3JTZXNzaW9ucygpIHtcbiAgICB0aGlzLl9lZGl0b3JTZXNzaW9ucy5ydW5JblRyYW5zYWN0aW9uKChkcmFmdCkgPT4ge1xuICAgICAgdGhpcy5fcm93c0JlaW5nRWRpdGVkJC5ydW5JblRyYW5zYWN0aW9uKCgpID0+IHtcbiAgICAgICAgZHJhZnQudmFsdWUuZm9yRWFjaChzZXNzaW9uID0+IHNlc3Npb24uZGlzcG9zZSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cblxuICBnZXQgY29sdW1ucygpOiBMaXN0TW9kZWw8Q29sdW1uTW9kZWw8Um93Pj4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk1hbmFnZXIuYWxsQ29sdW1ucyQ7XG4gIH1cblxuICBnZXQgdmlzaWJsZUNvbHVtbnMkKCk6IExpc3RNb2RlbDxDb2x1bW5Nb2RlbDxSb3c+PiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTWFuYWdlci52aXNpYmxlQ29sdW1ucyQ7XG4gIH1cblxuICBwbHVjazxQIGV4dGVuZHMgVHlwZXMuVmFsdWVQcm9wZXJ0aWVzT2Y8Um93Pj4ocHJvcGVydHk6IFAsIG9wdGlvbnM/OiB7IGNvbHVtbklkOiBzdHJpbmcgfSk6IFByb3BlcnR5Q29sdW1uTW9kZWw8Um93LCBQPiB7XG4gICAgY29uc3QgY29sdW1uSWQgPSBvcHRpb25zPy5jb2x1bW5JZCB8fCBwcm9wZXJ0eS50b1N0cmluZygpO1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgUHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsIHByb3BlcnR5LCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSkpO1xuICB9XG5cbiAgcGx1Y2tMaXN0PFAgZXh0ZW5kcyBUeXBlcy5BcnJheVByb3BlcnRpZXNPZjxSb3c+Pihwcm9wZXJ0eTogUCwgb3B0aW9ucz86IHsgY29sdW1uSWQ6IHN0cmluZyB9KTogTGlzdFByb3BlcnR5Q29sdW1uTW9kZWw8Um93LCBQPiB7XG4gICAgY29uc3QgY29sdW1uSWQgPSBvcHRpb25zPy5jb2x1bW5JZCB8fCBwcm9wZXJ0eS50b1N0cmluZygpO1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgTGlzdFByb3BlcnR5Q29sdW1uTW9kZWw8Um93LCBQPihjb2x1bW5JZCwgdGhpcy5jb2x1bW5NYW5hZ2VyLCBwcm9wZXJ0eSwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCkpKTtcbiAgfVxuXG4gIC8vIFRPRE86IGNsZWFuIHRoaXMgdXAgYW5kIGFzc2lnbiB0aGUgc2VsZWN0aW9uIG1vZGVsIG9uIHRlaCB0YWJsZSBkaXJlY3RseS5cbiAgLy8gICAgICAgdGFibGVNb2RlbC51c2VTZWxlY3Rpb25Nb2RlbChtb2RlbCkgYW5kIGhhdmUgdGhlIHNlbGVjaXRvbiBjb2x1bW4gYXV0b21hdGljYWxseVxuICAvLyAgICAgICBhZGRlZC4gIE5lZWQgdG8gbG9vayBhdCBob3cgd2UncmUgdXNpbmcgdGhlIHZpc2liaWxpdHkgY29udHJvbHMgYXMgd2VsbC5cbiAgLy8gICAgICAgU2hvdWxkIGFsc28gbGF6eSBjcmVhdGUgdGhlIHNlbGVjdGlvbiBjb2x1bW4gbW9kZWwgaWYgc29tZW9uZSBhY2Nlc3NlcyBpdC5cbiAgcHJvdGVjdGVkIF9hZGRTZWxlY3Rpb25Db2x1bW4oc2VsZWN0aW9uTW9kZWw/OiBTZWxlY3Rpb25Nb2RlbDxSb3c+LCB2aXNpYmxlPzogVmFsdWVNb2RlbDxib29sZWFuPiB8IGJvb2xlYW4pOiBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3c+IHtcbiAgICBhc3NlcnQuaXNOaWwodGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbCk7XG4gICAgY29uc3QgY29sdW1uSWQgPSBcInNlbGVjdGlvbi1jb2x1bW5cIjtcbiAgICB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsID0gbmV3IFNlbGVjdGlvbkNvbHVtbk1vZGVsPFJvdz4oY29sdW1uSWQsIHRoaXMuY29sdW1uTWFuYWdlciwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCksIHRoaXMuc2VsZWN0aW9uTW9kZWxQcm94eSk7XG4gICAgdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbC51c2VTZWxlY3Rpb25Nb2RlbChzZWxlY3Rpb25Nb2RlbClcbiAgICB0aGlzLmFkZFJvd0NsYXNzKFwiYXVwLXJvdy1zZWxlY3RlZFwiLCByb3cgPT4gdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbC5pc1NlbGVjdGVkKHJvdykpO1xuICAgIGNvbnN0IHNlbGVjdGlvbkNvbHVtbk1vZGVsID0gdGhpcy5hZGRDb2x1bW4odGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbCwge2JlZm9yZTogbnVsbH0pOyAvLyBmaXJzdCBjb2x1bW5cbiAgICBpZiAoIWlzTmlsKHZpc2libGUpKSB7XG4gICAgICBzZWxlY3Rpb25Db2x1bW5Nb2RlbC52aXNpYmxlV2hpbGUodmlzaWJsZSBpbnN0YW5jZW9mIFZhbHVlTW9kZWwgPyB2aXNpYmxlIDogVmFsdWVNb2RlbC5jb25zdGFudCh2aXNpYmxlKSk7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3Rpb25Db2x1bW5Nb2RlbDtcbiAgfVxuXG5cbiAgYWRkRWRpdENvbnRyb2xzKHNhdmVDb21tYW5kRmFjdG9yeTogQ29tbWFuZC5GYWN0b3J5PERpcnR5VHJhY2tpbmdGb3JtPFJvdz4sIGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+PiwgZm9ybUZhY3Rvcnk/OiAocm93OiBSb3cpID0+IERpcnR5VHJhY2tpbmdGb3JtPFJvdz4pOiBFZGl0b3JDb250cm9sQ29sdW1uTW9kZWw8Um93PiB7XG4gICAgdGhpcy5zYXZlQ29tbWFuZEZhY3RvcnkgPSBzYXZlQ29tbWFuZEZhY3Rvcnk7XG4gICAgaWYgKGlzRnVuY3Rpb24oZm9ybUZhY3RvcnkpKSB7XG4gICAgICB0aGlzLl9jcmVhdGVGb3JtID0gZm9ybUZhY3Rvcnk7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbklkID0gXCJlZGl0Q29udHJvbHNcIjtcbiAgICByZXR1cm4gdGhpcy5hZGRDb2x1bW4obmV3IEVkaXRvckNvbnRyb2xDb2x1bW5Nb2RlbDxSb3c+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsIHNhdmVDb21tYW5kRmFjdG9yeSwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCkpKTtcbiAgfVxuXG4gIGFkZEN1c3RvbUNvbHVtbjxWPihjb2x1bW5JZDogc3RyaW5nLCBkYXRhQWNjZXNzb3I6IChyb3c6IFJvdykgPT4gVik6IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBWPiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgVj4oY29sdW1uSWQsIHRoaXMuY29sdW1uTWFuYWdlciwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCksIGRhdGFBY2Nlc3NvcikpO1xuICB9XG5cbiAgYWRkQ29tcG9uZW50Q29sdW1uPEMgZXh0ZW5kcyBDZWxsUmVuZGVyZXI8UGFydGlhbDxSb3c+Pj4oY29sdW1uSWQ6IHN0cmluZywgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPEM+LCBvbkluaXQ/OiBPbkNvbXBvbmVudEluaXQ8Qz4pOiBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgUm93PlxuICBhZGRDb21wb25lbnRDb2x1bW48QyBleHRlbmRzIENlbGxSZW5kZXJlcjxQYXJ0aWFsPFJvdz4+Pihjb2x1bW5JZDogc3RyaW5nLCBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8Qz4sIG9wdGlvbnM/OiBDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgQz4pOiBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgUm93PlxuICBhZGRDb21wb25lbnRDb2x1bW48QyBleHRlbmRzIENlbGxSZW5kZXJlcjxQYXJ0aWFsPFJvdz4+Pihjb2x1bW5JZDogc3RyaW5nLCBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8Qz4sIG9uQ29tcG9uZW50SW5pdE9yT3B0aW9ucz86IE9uQ29tcG9uZW50SW5pdDxDPiB8IENlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBDPik6IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb2x1bW4obmV3IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBSb3c+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpLCByb3cgPT4gcm93KSkuY2VsbFJlbmRlcmVyKGNvbXBvbmVudCwgb25Db21wb25lbnRJbml0T3JPcHRpb25zKTtcbiAgfVxuXG4gIGFkZE1vcmVNZW51PEMgZXh0ZW5kcyBUYWJsZU1vcmVNZW51UG9wdXBDb21wb25lbnQ8Um93Pj4oY29tcG9uZW50Q2xhc3M6IENvbnN0cnVjdGFibGU8Qz4sIGluaXRpYWxpc2VDYWxsYmFjaz86IChjb21wb25lbnQ6QykgPT4gdm9pZCkge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENvbHVtbihcIm1vcmUtbWVudVwiLCBUYWJsZU1vcmVNZW51Q29tcG9uZW50LCAoY29tcG9uZW50OlRhYmxlTW9yZU1lbnVDb21wb25lbnQ8Um93PikgPT4ge1xuICAgICAgY29tcG9uZW50LmNvbmZpZ3VyZVBvcHVwQ29tcG9uZW50VHlwZShjb21wb25lbnRDbGFzcywgaW5pdGlhbGlzZUNhbGxiYWNrKTtcbiAgICB9KS5jb2x1bW5UZXh0UHJvcGVydGllcyh7XG4gICAgICBoZWFkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuXG4gIGFkZFRlbXBsYXRlQ29sdW1uPFY+KGNvbHVtbklkOiBzdHJpbmcpOiBDdXN0b21UZW1wbGF0ZUNvbHVtbk1vZGVsPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgQ3VzdG9tVGVtcGxhdGVDb2x1bW5Nb2RlbDxSb3c+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpKSk7XG4gIH1cblxuICBhZGRSb3dDbGFzcyhjbGFzc05hbWU6IHN0cmluZywgcHJlZGljYXRlOiAocm93OiBSb3cpID0+IGJvb2xlYW4pIHtcbiAgICB0aGlzLnJvd0NsYXNzTmFtZVByZWRpY2F0ZXMucHVzaChuZXcgUm93Q2xhc3M8Um93PihjbGFzc05hbWUsIHByZWRpY2F0ZSkpO1xuICB9XG5cbiAgZ2V0Um93Q2xhc3Nlcyhyb3c6IFJvdyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMucm93Q2xhc3NOYW1lUHJlZGljYXRlcy5mb3JFYWNoKGkgPT4ge1xuICAgICAgaWYgKGkubWF0Y2hlcyhyb3cpKSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaChpLmNsYXNzTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNsYXNzTmFtZXM7XG4gIH1cblxuXG4gIHByb3RlY3RlZCBhZGRDb2x1bW48QyBleHRlbmRzIENvbHVtbk1vZGVsPFJvdz4+KGNvbHVtbjogQywgcG9zaXRpb24/OiBDb2x1bW5PcmRlck1hbmFnZXIuUG9zaXRpb24pOiBDIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5NYW5hZ2VyLmFkZENvbHVtbihjb2x1bW4sIHBvc2l0aW9uKTtcbiAgfVxuXG4gIGNvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtblRleHRQcm9wZXJ0aWVzOiB7IFtjb2x1bW5OYW1lOiBzdHJpbmddOiBDb2x1bW5UZXh0UHJvcGVydGllcyB9KSB7XG4gICAgdGhpcy5fY29sdW1uVGV4dFByb3BlcnRpZXNMb29rdXAgPSBjb2x1bW5UZXh0UHJvcGVydGllcztcbiAgfVxuXG4gIGdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkOiBzdHJpbmcpOiBDb2x1bW5UZXh0UHJvcGVydGllcyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzTG9va3VwID8gdGhpcy5fY29sdW1uVGV4dFByb3BlcnRpZXNMb29rdXBbY29sdW1uSWRdIDogdW5kZWZpbmVkO1xuICB9XG5cblxuICBpc1Jvd1NlbGVjdGlvbkVuYWJsZWRGb3IoY29sdW1uOiBDb2x1bW5Nb2RlbDxSb3c+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNSb3dTZWxlY3Rpb25FbmFibGVkKCkgJiYgY29sdW1uLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpO1xuICB9XG5cbiAgaXNSb3dTZWxlY3Rpb25FbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmhhc1VzZXJTZWxlY3Rpb25Nb2RlbFRoYXRJc0VuYWJsZWQoKSAmJiAhdGhpcy5yb3dTZWxlY3Rpb25EaXNhYmxlZE9uQWxsQ29sdW1ucyQudmFsdWU7XG4gIH1cblxuICBoYXNVc2VyU2VsZWN0aW9uTW9kZWxUaGF0SXNFbmFibGVkKCkge1xuICAgIGNvbnN0IHVzZXJTZWxlY3Rpb25Nb2RlbCA9IHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWw/LnNlbGVjdGlvbk1vZGVsLmdldFByb3h5VGFyZ2V0KCk7XG4gICAgcmV0dXJuICEhdXNlclNlbGVjdGlvbk1vZGVsICYmIHVzZXJTZWxlY3Rpb25Nb2RlbC5lbmFibGVkJC52YWx1ZTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbk1vZGVsKCk6IFNlbGVjdGlvbk1vZGVsPFJvdz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsPy5zZWxlY3Rpb25Nb2RlbDtcbiAgfVxuXG4gIGlzSG92ZXJFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpIHx8IHRoaXMucm93Q2xpY2tMaXN0ZW5lcnMubGlzdGVuZXJDb3VudCA+IDA7XG4gIH1cblxuICBpc0N1cnNvckVuYWJsZWQoY29sdW1uOiBDb2x1bW5Nb2RlbDxSb3c+KSB7XG4gICAgcmV0dXJuIHRoaXMuaXNSb3dTZWxlY3Rpb25FbmFibGVkRm9yKGNvbHVtbikgfHwgdGhpcy5yb3dDbGlja0xpc3RlbmVycy5saXN0ZW5lckNvdW50ID4gMDtcbiAgfVxuXG4gIHNlbGVjdFJvdyhyb3c6IFJvdykge1xuICAgIHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWw/LnNlbGVjdFJvdyhyb3cpO1xuICB9XG5cbiAgb25Sb3dDbGlja2VkKGNhbGxiYWNrOiAocm93OiBSb3cpID0+IHZvaWQpOiBEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5yb3dDbGlja0xpc3RlbmVycy5hZGQoY2FsbGJhY2spO1xuICB9XG5cbiAgX25vdGlmeUNlbGxDbGlja2VkKGNvbHVtbk1vZGVsOiBDb2x1bW5Nb2RlbDxSb3c+LCByb3c6IFJvdykge1xuICAgIGlmICh0aGlzLmlzUm93U2VsZWN0aW9uRW5hYmxlZEZvcihjb2x1bW5Nb2RlbCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0Um93KHJvdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHtcbiAgICAgIC8vICAgaGFzRW5hYmxlZFVzZXJTZWxlY3Rpb25Nb2RlbDogdGhpcy5oYXNVc2VyU2VsZWN0aW9uTW9kZWxUaGF0SXNFbmFibGVkKCksXG4gICAgICAvLyAgIGFsbFNlbGVjdGlvbkRpc2FibGVkOiB0aGlzLnJvd1NlbGVjdGlvbkRpc2FibGVkT25BbGxDb2x1bW5zJC52YWx1ZSxcbiAgICAgIC8vICAgcm93U2VsZWN0aW9uRW5hYmxlZDogdGhpcy5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKSxcbiAgICAgIC8vICAgcm93U2VsZWN0aW9uRW5hYmxlZEZvckNvbHVtbjogY29sdW1uTW9kZWwuaXNSb3dTZWxlY3Rpb25FbmFibGVkKClcbiAgICAgIC8vIH0pXG4gICAgfVxuXG4gICAgdGhpcy5yb3dDbGlja0xpc3RlbmVycy5maXJlKGwgPT4gbChyb3cpKTtcbiAgfVxuXG59XG5Qcm94eVJlZ2lzdHJ5LnJlZ2lzdGVyT25lVGltZUJpbmRpbmcoQWJzdHJhY3RUYWJsZU1vZGVsKVxuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFibGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9hYnN0cmFjdC10YWJsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEVBSU4sbUJBQW1CLEVBQ25CLGlCQUFpQixFQUVqQixHQUFHLEVBQ0gsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUdoQixnQkFBZ0IsRUFFaEIsT0FBTyxFQUNQLGFBQWEsRUFDYixjQUFjLEVBRWQsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRWxELE9BQU8sRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUl0RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFbEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFNaEYsT0FBTyxF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QUFDO0lBQ25ELENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQXdCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBUTtRQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBNEI7UUFDdkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxXQUE2QixFQUFFLEdBQVE7UUFDeEQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyQjthQUFNO1lBQ0wsZ0JBQWdCO1lBQ2hCLDZFQUE2RTtZQUM3RSx3RUFBd0U7WUFDeEUsdURBQXVEO1lBQ3ZELHNFQUFzRTtZQUN0RSxLQUFLO1NBQ047UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUVGO0FBRUQsYUFBYSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudFR5cGV9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHtJbmplY3Rvcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgQ29tbWFuZCxcbiAgQ29uc3RydWN0YWJsZSxcbiAgRGVsZWdhdGluZ0xpc3RNb2RlbCxcbiAgRGlydHlUcmFja2luZ0Zvcm0sXG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgRXZlbnRMaXN0ZW5lckxpc3QsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsXG4gIExpc3RNb2RlbCxcbiAgTWFwTW9kZWxDaGFpbixcbiAgTXV0YWJsZUxpc3RNb2RlbCxcbiAgUHJveGlmaWVkLFxuICBwcm94aWZ5LFxuICBQcm94eVJlZ2lzdHJ5LFxuICBTZWxlY3Rpb25Nb2RlbCxcbiAgVHlwZXMsXG4gIFZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxDaGFpblxufSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7bGFuZ30gZnJvbSBcIkBjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXNcIjtcblxuaW1wb3J0IHtpc0Z1bmN0aW9uLCBpc05pbH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHtDb2x1bW5NYW5hZ2VyfSBmcm9tIFwiLi9jb2x1bW4vY29sdW1uLW1hbmFnZXJcIjtcbmltcG9ydCB7Q2VsbFJlbmRlcmVyT3B0aW9ucywgQ29sdW1uTW9kZWwsIE9uQ29tcG9uZW50SW5pdH0gZnJvbSBcIi4vY29sdW1uL2NvbHVtbi1tb2RlbFwiO1xuaW1wb3J0IHtDb2x1bW5PcmRlck1hbmFnZXJ9IGZyb20gXCIuL2NvbHVtbi9jb2x1bW4tb3JkZXItbWFuYWdlclwiO1xuaW1wb3J0IHtDb2x1bW5UZXh0UHJvcGVydGllc30gZnJvbSBcIi4vY29sdW1uL2NvbHVtbi10ZXh0LXByb3BlcnRpZXNcIjtcbmltcG9ydCB7Q3VzdG9tVGVtcGxhdGVDb2x1bW5Nb2RlbH0gZnJvbSBcIi4vY29sdW1uL2N1c3RvbS10ZW1wbGF0ZS1jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7Q3VzdG9tVmFsdWVDb2x1bW5Nb2RlbH0gZnJvbSBcIi4vY29sdW1uL2N1c3RvbS12YWx1ZS1jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7RWRpdG9yQ29udHJvbENvbHVtbk1vZGVsfSBmcm9tIFwiLi9jb2x1bW4vZWRpdG9yLWNvbnRyb2xzLWNvbHVtbi1tb2RlbFwiO1xuaW1wb3J0IHtMaXN0UHJvcGVydHlDb2x1bW5Nb2RlbH0gZnJvbSBcIi4vY29sdW1uL2xpc3QtcHJvcGVyeS1jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7UHJvcGVydHlDb2x1bW5Nb2RlbH0gZnJvbSBcIi4vY29sdW1uL3Byb3BlcnR5LWNvbHVtbi1tb2RlbFwiO1xuaW1wb3J0IHtTZWxlY3Rpb25Db2x1bW5Nb2RlbH0gZnJvbSBcIi4vY29sdW1uL3NlbGVjdGlvbi1jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7RWRpdFNlc3Npb259IGZyb20gXCIuL2VkaXRvci9lZGl0LXNlc3Npb25cIjtcblxuaW1wb3J0IHtDb2x1bW5UZXh0U2VhcmNoRm9ybWF0dGVyfSBmcm9tIFwiLi9maWx0ZXIvY29sdW1uLXRleHQtc2VhcmNoLWZvcm1hdHRlclwiO1xuaW1wb3J0IHtUZXh0U2VhcmNoUHJlZGljYXRlfSBmcm9tIFwiLi9maWx0ZXIvdGV4dC1zZWFyY2gtcHJlZGljYXRlXCI7XG5pbXBvcnQge0NlbGxSZW5kZXJlcn0gZnJvbSBcIi4vcmVuZGVyZXIvY2VsbC1yZW5kZXJlclwiO1xuaW1wb3J0IHtcbiAgVGFibGVNb3JlTWVudVBvcHVwQ29tcG9uZW50XG59IGZyb20gXCIuL3JlbmRlcmVyL3RhYmxlLW1vcmUtbWVudS90YWJsZS1tb3JlLW1lbnUtcG9wdXAvdGFibGUtbW9yZS1tZW51LXBvcHVwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtUYWJsZU1vcmVNZW51Q29tcG9uZW50fSBmcm9tIFwiLi9yZW5kZXJlci90YWJsZS1tb3JlLW1lbnUvdGFibGUtbW9yZS1tZW51LmNvbXBvbmVudFwiO1xuaW1wb3J0IERlZmF1bHRBcnJheUZvcm1hdHRlciA9IENvbHVtblRleHRTZWFyY2hGb3JtYXR0ZXIuRGVmYXVsdEFycmF5Rm9ybWF0dGVyO1xuaW1wb3J0IERlZmF1bHRWYWx1ZUZvcm1hdHRlciA9IENvbHVtblRleHRTZWFyY2hGb3JtYXR0ZXIuRGVmYXVsdFZhbHVlRm9ybWF0dGVyO1xuXG4vLyBleHBvcnQgdHlwZSBTdHJpbmdQcm9wZXJ0aWVzT2Y8VD4gPSB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gSyA6IG5ldmVyIH1ba2V5b2YgVF07XG4vLyBleHBvcnQgdHlwZSBOdW1iZXJQcm9wZXJ0aWVzT2Y8VD4gPSB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbnVtYmVyID8gSyA6IG5ldmVyIH1ba2V5b2YgVF07XG5cbmNsYXNzIFJvd0NsYXNzPFJvdz4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjbGFzc05hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgbWF0Y2hlczogKHJvdzogUm93KSA9PiBib29sZWFuKSB7XG4gIH1cbn1cblxuY2xhc3MgUm93QXR0cmlidXRlPFJvdz4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGdldFZhbHVlOiAocm93OiBSb3cpID0+IHN0cmluZykge1xuICB9XG59XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VGFibGVNb2RlbDxSb3c+IGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhU291cmNlJCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nTGlzdE1vZGVsPFJvdz4oKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfZmlsdGVyZWRSb3dzJCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nTGlzdE1vZGVsPFJvdz4oKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfdmlzaWJsZVJvd3MkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdMaXN0TW9kZWw8Um93PigpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sdW1uTWFuYWdlciA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBDb2x1bW5NYW5hZ2VyPFJvdz4oKSk7XG5cbiAgcHJpdmF0ZSBfZWRpdG9yU2Vzc2lvbnMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxFZGl0U2Vzc2lvbjxSb3c+PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3dzQmVpbmdFZGl0ZWQkOiBNdXRhYmxlTGlzdE1vZGVsPFJvdz47XG4gIHByaXZhdGUgc2F2ZUNvbW1hbmRGYWN0b3J5OiBDb21tYW5kLkZhY3Rvcnk8RGlydHlUcmFja2luZ0Zvcm08Um93PiwgYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4+O1xuICBwcml2YXRlIF9lZGl0b3JTZXNzaW9uQnlSb3dJZDogTWFwTW9kZWxDaGFpbjxhbnksIEVkaXRTZXNzaW9uPFJvdz4+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm93Q2xhc3NOYW1lUHJlZGljYXRlczogUm93Q2xhc3M8Um93PltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93QXR0cmlidXRlR2VuZXJhdG9yczogUm93QXR0cmlidXRlPFJvdz5bXSA9IFtdO1xuXG4gIHByaXZhdGUgX2NvbHVtblRleHRQcm9wZXJ0aWVzTG9va3VwOiB7IFtjb2x1bW5OYW1lOiBzdHJpbmddOiBDb2x1bW5UZXh0UHJvcGVydGllcyB9O1xuXG4gIHJlYWRvbmx5IGVkaXRpbmckOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuICByZWFkb25seSBmaXJzdEVkaXRhYmxlQ29sdW1uJDogVmFsdWVNb2RlbENoYWluPENvbHVtbk1vZGVsPFJvdz4+O1xuICBwcml2YXRlIHNlbGVjdGlvbkNvbHVtbk1vZGVsOiBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3c+O1xuICBwcml2YXRlIHJvd1NlbGVjdGlvbkRpc2FibGVkT25BbGxDb2x1bW5zJDogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgcHJpdmF0ZSByZWFkb25seSByb3dDbGlja0xpc3RlbmVycyA9IG5ldyBFdmVudExpc3RlbmVyTGlzdDwocm93OiBSb3cpID0+IHZvaWQ+KCk7XG4gIHJlYWRvbmx5IGZpcnN0VmlzaWJsZUNvbHVtbiQ6IFZhbHVlTW9kZWw8Q29sdW1uTW9kZWw8Um93Pj47XG4gIHJlYWRvbmx5IGxhc3RWaXNpYmxlQ29sdW1uJDogVmFsdWVNb2RlbDxDb2x1bW5Nb2RlbDxSb3c+PjtcblxuICBwcml2YXRlIF9jcmVhdGVGb3JtOiAocm93OiBSb3cpID0+IERpcnR5VHJhY2tpbmdGb3JtPFJvdz4gPSAocm93KSA9PiBuZXcgRGlydHlUcmFja2luZ0Zvcm08Um93PigpO1xuICByZWFkb25seSB0ZXh0U2VhcmNoUHJlZGljYXRlJDogVmFsdWVNb2RlbDxUZXh0U2VhcmNoUHJlZGljYXRlPFJvdz4+O1xuICBwcm90ZWN0ZWQgaWRlbnRpdHlPZjogKGl0ZW06IFJvdykgPT4gYW55O1xuICByZWFkb25seSBkYXRhU291cmNlRW1wdHkkOiBWYWx1ZU1vZGVsPGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbk1vZGVsUHJveHkgPSBwcm94aWZ5KFNlbGVjdGlvbk1vZGVsPFJvdz4pIGFzIFByb3hpZmllZDxTZWxlY3Rpb25Nb2RlbDxSb3c+PjtcblxuICByZWFkb25seSBzZWxlY3RlZEl0ZW1zJDogTGlzdE1vZGVsPFJvdz47XG4gIHJlYWRvbmx5IGxlYWRTZWxlY3Rpb24kOiBWYWx1ZU1vZGVsPFJvdz47XG4gIHJlYWRvbmx5IGhhc1NlbGVjdGlvbiQ6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWlufSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLl9yb3dzQmVpbmdFZGl0ZWQkID0gbmV3IE11dGFibGVMaXN0TW9kZWw8Um93PihbXSwge1xuICAgICAgaWRlbnRpZmllZFdpdGg6IHJvdyA9PiB0aGlzLmlkZW50aXR5T2Yocm93KVxuICAgIH0pO1xuICAgIHRoaXMuX2VkaXRvclNlc3Npb25CeVJvd0lkID0gY2hhaW4odGhpcy5fZWRpdG9yU2Vzc2lvbnMpLmluZGV4QnkoXCJyb3dJZFwiKTtcbiAgICB0aGlzLmVkaXRpbmckID0gY2hhaW4odGhpcy5fZWRpdG9yU2Vzc2lvbnMpLmNvdW50KCkuaXNHcmVhdGVyVGhhbigwKTtcblxuICAgIHRoaXMudGV4dFNlYXJjaFByZWRpY2F0ZSQgPSBjaGFpbih0aGlzLnZpc2libGVDb2x1bW5zJCkucmVkdWNlQWxsKGNvbHVtbnMgPT4ge1xuICAgICAgcmV0dXJuIChyb3c6IFJvdywgcmVnZXg6IFJlZ0V4cCkgPT4ge1xuICAgICAgICByZXR1cm4gKCFyZWdleCB8fCAhIWNvbHVtbnMuZmluZChjID0+IHJlZ2V4LnRlc3QoYy5nZXRTZWFyY2hUZXh0Rm9yKHJvdykpKSk7XG4gICAgICB9XG4gICAgfSlcblxuICAgIHRoaXMuZmlyc3RFZGl0YWJsZUNvbHVtbiQgPSBjaGFpbih0aGlzLmNvbHVtbnMpLnNlbGVjdChjID0+IGMuaGFzRWRpdG9yUG9ydGFsKCkpLmZpcnN0KCk7XG4gICAgdGhpcy5maXJzdFZpc2libGVDb2x1bW4kID0gY2hhaW4odGhpcy52aXNpYmxlQ29sdW1ucyQpLmZpcnN0KCk7XG4gICAgdGhpcy5sYXN0VmlzaWJsZUNvbHVtbiQgPSBjaGFpbih0aGlzLnZpc2libGVDb2x1bW5zJCkubGFzdCgpO1xuXG4gICAgdGhpcy5yb3dTZWxlY3Rpb25EaXNhYmxlZE9uQWxsQ29sdW1ucyQgPSBjaGFpbih0aGlzLmNvbHVtbk1hbmFnZXIudmlzaWJsZUNvbHVtbnMkKS5zZWxlY3QoY29sdW1uID0+IGNvbHVtbi5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKSkuY291bnQoKS5lcXVhbHMoMCk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2VFbXB0eSQgPSBjaGFpbih0aGlzLmRhdGFTb3VyY2UkKS5pc0VtcHR5KCk7XG5cbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMkID0gdGhpcy5zZWxlY3Rpb25Nb2RlbFByb3h5LnNlbGVjdGVkSXRlbXMkO1xuICAgIHRoaXMubGVhZFNlbGVjdGlvbiQgPSB0aGlzLnNlbGVjdGlvbk1vZGVsUHJveHkubGVhZFNlbGVjdGlvbiQ7XG4gICAgdGhpcy5oYXNTZWxlY3Rpb24kID0gY2hhaW4odGhpcy5zZWxlY3RlZEl0ZW1zJCkuaXNOb3RFbXB0eSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldERhdGFTb3VyY2UoZGF0YVNvdXJjZSQpIHtcbiAgICB0aGlzLl9kYXRhU291cmNlJC5zZXREZWxlZ2F0ZShkYXRhU291cmNlJCk7XG4gIH1cblxuICAvKipcbiAgICogVG9kbzogbWFrZSB0aGlzIGZvcmNlIG9uZSB0YWJsZSBhdCBhIHRpbWVcbiAgICogQHBhcmFtIGluamVjdG9yXG4gICAqIEBwYXJhbSBpZGVudGl0eU9mXG4gICAqIEBwYXJhbSByZXN0XG4gICAqL1xuICBpbml0aWFsaXNlKGluamVjdG9yOiBJbmplY3RvciwgaWRlbnRpdHlPZjogKGl0ZW06IFJvdykgPT4gYW55KSB7XG4gICAgLy8gbm90IHN1cmUgaWYgSSBzaG91bGQgZGVmaW5lIHRoZXNlIGF0IHRoZSBtb2R1bGUgbGV2ZWwgb3Igbm90Li4uXG4gICAgY29uc3QgY3VzdG9tSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiBEZWZhdWx0VmFsdWVGb3JtYXR0ZXJ9LFxuICAgICAgICB7cHJvdmlkZTogRGVmYXVsdEFycmF5Rm9ybWF0dGVyfVxuICAgICAgXSxcbiAgICAgIHBhcmVudDogaW5qZWN0b3JcbiAgICB9KTtcbiAgICB0aGlzLmNvbHVtbnMudmFsdWUuZm9yRWFjaChjID0+IGMuaW5pdGlhbGlzZShjdXN0b21JbmplY3RvcikpO1xuICAgIHRoaXMuaWRlbnRpdHlPZiA9IGlkZW50aXR5T2Y7XG4gIH1cblxuICBnZXQgZGF0YVNvdXJjZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByb3dzIHRoYXQgYXJlIHZpc2libGUgYWZ0ZXIgYW55IGZpbHRlcnMgYXJlIGFwcGxpZWQuICBJZiB0aGVyZSBhcmVcbiAgICogbm8gZmlsdGVycyB0aGVuIHRoaXMgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgcm9vdCBkYXRhc2V0LlxuICAgKi9cbiAgZ2V0IGZpbHRlcmVkUm93cyQoKTogTGlzdE1vZGVsPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZFJvd3MkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByb3dzIGFyZSBjdXJyZW50bHkgdmlzaWJsZSB0byB0aGUgdXNlci4gIEkuZS4gdGhlIGN1cnJlbnQgcGFnZSBpbiBhIHBhZ2VkIHRhYmxlIG9yIHRoZVxuICAgKiBleHBhbmRlZCByb3dzIGluIGEgdHJlZSB0YWJsZS5cbiAgICovXG4gIGdldCB2aXNpYmxlUm93cyQoKTogTGlzdE1vZGVsPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlUm93cyQucmVhZG9ubHkkO1xuICB9XG5cbiAgZ2V0IHJvd3NCZWluZ0VkaXRlZCQoKTogTGlzdE1vZGVsPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl9yb3dzQmVpbmdFZGl0ZWQkLnJlYWRvbmx5JDtcbiAgfVxuXG5cbiAgc3RhcnRFZGl0U2Vzc2lvbihyb3c6IFJvdyk6IEVkaXRTZXNzaW9uPFJvdz4ge1xuICAgIGNvbnN0IHJvd0lkID0gdGhpcy5pZGVudGl0eU9mKHJvdyk7XG4gICAgaWYgKHRoaXMuX3Jvd3NCZWluZ0VkaXRlZCQucXVlcnkoKS5pbmRleE9mKHJvdykgPiAtMSkge1xuICAgICAgcmV0dXJuIGxhbmcuaWxsZWdhbFN0YXRlKGBSb3cgd2l0aCBpZD0ke3Jvd0lkfSBhbHJlYWR5IGJlaW5nIGVkaXRlZGApO1xuICAgIH1cblxuICAgIC8vIHRvZG86IHBhc3MgdGhlIGZhY3RvcmllcyB0byB0aGUgZWRpdCBzZXNzaW9uIHNvIHdlIGNhbiBtYWtlIHRoZSB3aG9sZSBsb3QgcGx1Z2dhYmxlP1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLl9jcmVhdGVGb3JtKHJvdyk7XG4gICAgY29uc3Qgc2F2ZUNvbW1hbmQgPSB0aGlzLnNhdmVDb21tYW5kRmFjdG9yeS5jcmVhdGUoZm9ybSwge2Rpc3Bvc2VkV2l0aDogdGhpc30pO1xuICAgIGNvbnN0IGVkaXRTZXNzaW9uID0gbmV3IEVkaXRTZXNzaW9uPFJvdz4ocm93SWQsIHJvdywgZm9ybSwgc2F2ZUNvbW1hbmQpO1xuICAgIGNvbnN0IHt3aGVufSA9IERzbC5kaXNwb3NlV2l0aChlZGl0U2Vzc2lvbik7XG4gICAgd2hlbihlZGl0U2Vzc2lvbi5saXZlUm93VmFsdWUkKS5jaGFuZ2VzKChlZGl0ZWRWYWx1ZSkgPT4ge1xuICAgICAgdGhpcy5fcm93c0JlaW5nRWRpdGVkJC5yZXBsYWNlT3JQdXNoKGVkaXRlZFZhbHVlKTtcbiAgICB9LCB7aW5pdGlhbFZhbHVlOiBcInRyaWdnZXJDaGFuZ2VVbmxlc3NOaWxcIn0pO1xuXG4gICAgdGhpcy5fZWRpdG9yU2Vzc2lvbnMucHVzaChlZGl0U2Vzc2lvbik7XG4gICAgZWRpdFNlc3Npb24ub25EaXNwb3NlKCgpID0+IHtcbiAgICAgIHRoaXMuX3Jvd3NCZWluZ0VkaXRlZCQucmVtb3ZlKGVkaXRTZXNzaW9uLmxpdmVSb3dWYWx1ZSQudmFsdWUpO1xuICAgICAgdGhpcy5fZWRpdG9yU2Vzc2lvbnMucmVtb3ZlKGVkaXRTZXNzaW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZWRpdFNlc3Npb247XG4gIH1cblxuICBnZXRFZGl0U2Vzc2lvbkZvcihyb3c6IFJvdyk6IEVkaXRTZXNzaW9uPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl9lZGl0b3JTZXNzaW9uQnlSb3dJZC5nZXQodGhpcy5pZGVudGl0eU9mKHJvdykpO1xuICB9XG5cbiAgY2FuY2VsQWxsRWRpdG9yU2Vzc2lvbnMoKSB7XG4gICAgdGhpcy5fZWRpdG9yU2Vzc2lvbnMucnVuSW5UcmFuc2FjdGlvbigoZHJhZnQpID0+IHtcbiAgICAgIHRoaXMuX3Jvd3NCZWluZ0VkaXRlZCQucnVuSW5UcmFuc2FjdGlvbigoKSA9PiB7XG4gICAgICAgIGRyYWZ0LnZhbHVlLmZvckVhY2goc2Vzc2lvbiA9PiBzZXNzaW9uLmRpc3Bvc2UoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG5cbiAgZ2V0IGNvbHVtbnMoKTogTGlzdE1vZGVsPENvbHVtbk1vZGVsPFJvdz4+IHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5NYW5hZ2VyLmFsbENvbHVtbnMkO1xuICB9XG5cbiAgZ2V0IHZpc2libGVDb2x1bW5zJCgpOiBMaXN0TW9kZWw8Q29sdW1uTW9kZWw8Um93Pj4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk1hbmFnZXIudmlzaWJsZUNvbHVtbnMkO1xuICB9XG5cbiAgcGx1Y2s8UCBleHRlbmRzIFR5cGVzLlZhbHVlUHJvcGVydGllc09mPFJvdz4+KHByb3BlcnR5OiBQLCBvcHRpb25zPzoge1xuICAgIGNvbHVtbklkOiBzdHJpbmdcbiAgfSk6IFByb3BlcnR5Q29sdW1uTW9kZWw8Um93LCBQPiB7XG4gICAgY29uc3QgY29sdW1uSWQgPSBvcHRpb25zPy5jb2x1bW5JZCB8fCBwcm9wZXJ0eS50b1N0cmluZygpO1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgUHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsIHByb3BlcnR5LCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSkpO1xuICB9XG5cbiAgcGx1Y2tMaXN0PFAgZXh0ZW5kcyBUeXBlcy5BcnJheVByb3BlcnRpZXNPZjxSb3c+Pihwcm9wZXJ0eTogUCwgb3B0aW9ucz86IHtcbiAgICBjb2x1bW5JZDogc3RyaW5nXG4gIH0pOiBMaXN0UHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+IHtcbiAgICBjb25zdCBjb2x1bW5JZCA9IG9wdGlvbnM/LmNvbHVtbklkIHx8IHByb3BlcnR5LnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBMaXN0UHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsIHByb3BlcnR5LCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSkpO1xuICB9XG5cbiAgLy8gVE9ETzogY2xlYW4gdGhpcyB1cCBhbmQgYXNzaWduIHRoZSBzZWxlY3Rpb24gbW9kZWwgb24gdGVoIHRhYmxlIGRpcmVjdGx5LlxuICAvLyAgICAgICB0YWJsZU1vZGVsLnVzZVNlbGVjdGlvbk1vZGVsKG1vZGVsKSBhbmQgaGF2ZSB0aGUgc2VsZWNpdG9uIGNvbHVtbiBhdXRvbWF0aWNhbGx5XG4gIC8vICAgICAgIGFkZGVkLiAgTmVlZCB0byBsb29rIGF0IGhvdyB3ZSdyZSB1c2luZyB0aGUgdmlzaWJpbGl0eSBjb250cm9scyBhcyB3ZWxsLlxuICAvLyAgICAgICBTaG91bGQgYWxzbyBsYXp5IGNyZWF0ZSB0aGUgc2VsZWN0aW9uIGNvbHVtbiBtb2RlbCBpZiBzb21lb25lIGFjY2Vzc2VzIGl0LlxuICBwcm90ZWN0ZWQgX2FkZFNlbGVjdGlvbkNvbHVtbihzZWxlY3Rpb25Nb2RlbD86IFNlbGVjdGlvbk1vZGVsPFJvdz4sIHZpc2libGU/OiBWYWx1ZU1vZGVsPGJvb2xlYW4+IHwgYm9vbGVhbik6IFNlbGVjdGlvbkNvbHVtbk1vZGVsPFJvdz4ge1xuICAgIGFzc2VydC5pc05pbCh0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsKTtcbiAgICBjb25zdCBjb2x1bW5JZCA9IFwic2VsZWN0aW9uLWNvbHVtblwiO1xuICAgIHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWwgPSBuZXcgU2VsZWN0aW9uQ29sdW1uTW9kZWw8Um93Pihjb2x1bW5JZCwgdGhpcy5jb2x1bW5NYW5hZ2VyLCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSwgdGhpcy5zZWxlY3Rpb25Nb2RlbFByb3h5KTtcbiAgICB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsLnVzZVNlbGVjdGlvbk1vZGVsKHNlbGVjdGlvbk1vZGVsKVxuICAgIHRoaXMuYWRkUm93Q2xhc3MoXCJhdXAtcm93LXNlbGVjdGVkXCIsIHJvdyA9PiB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsLmlzU2VsZWN0ZWQocm93KSk7XG4gICAgY29uc3Qgc2VsZWN0aW9uQ29sdW1uTW9kZWwgPSB0aGlzLmFkZENvbHVtbih0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsLCB7YmVmb3JlOiBudWxsfSk7IC8vIGZpcnN0IGNvbHVtblxuICAgIGlmICghaXNOaWwodmlzaWJsZSkpIHtcbiAgICAgIHNlbGVjdGlvbkNvbHVtbk1vZGVsLnZpc2libGVXaGlsZSh2aXNpYmxlIGluc3RhbmNlb2YgVmFsdWVNb2RlbCA/IHZpc2libGUgOiBWYWx1ZU1vZGVsLmNvbnN0YW50KHZpc2libGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGlvbkNvbHVtbk1vZGVsO1xuICB9XG5cblxuICBhZGRFZGl0Q29udHJvbHMoc2F2ZUNvbW1hbmRGYWN0b3J5OiBDb21tYW5kLkZhY3Rvcnk8RGlydHlUcmFja2luZ0Zvcm08Um93PiwgYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4+LCBmb3JtRmFjdG9yeT86IChyb3c6IFJvdykgPT4gRGlydHlUcmFja2luZ0Zvcm08Um93Pik6IEVkaXRvckNvbnRyb2xDb2x1bW5Nb2RlbDxSb3c+IHtcbiAgICB0aGlzLnNhdmVDb21tYW5kRmFjdG9yeSA9IHNhdmVDb21tYW5kRmFjdG9yeTtcbiAgICBpZiAoaXNGdW5jdGlvbihmb3JtRmFjdG9yeSkpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZUZvcm0gPSBmb3JtRmFjdG9yeTtcbiAgICB9XG4gICAgY29uc3QgY29sdW1uSWQgPSBcImVkaXRDb250cm9sc1wiO1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgRWRpdG9yQ29udHJvbENvbHVtbk1vZGVsPFJvdz4oY29sdW1uSWQsIHRoaXMuY29sdW1uTWFuYWdlciwgc2F2ZUNvbW1hbmRGYWN0b3J5LCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSkpO1xuICB9XG5cbiAgYWRkQ3VzdG9tQ29sdW1uPFY+KGNvbHVtbklkOiBzdHJpbmcsIGRhdGFBY2Nlc3NvcjogKHJvdzogUm93KSA9PiBWKTogQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFY+IHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb2x1bW4obmV3IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBWPihjb2x1bW5JZCwgdGhpcy5jb2x1bW5NYW5hZ2VyLCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSwgZGF0YUFjY2Vzc29yKSk7XG4gIH1cblxuICBhZGRDb21wb25lbnRDb2x1bW48QyBleHRlbmRzIENlbGxSZW5kZXJlcjxQYXJ0aWFsPFJvdz4+Pihjb2x1bW5JZDogc3RyaW5nLCBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8Qz4sIG9uSW5pdD86IE9uQ29tcG9uZW50SW5pdDxDPik6IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBSb3c+XG4gIGFkZENvbXBvbmVudENvbHVtbjxDIGV4dGVuZHMgQ2VsbFJlbmRlcmVyPFBhcnRpYWw8Um93Pj4+KGNvbHVtbklkOiBzdHJpbmcsIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxDPiwgb3B0aW9ucz86IENlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBDPik6IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBSb3c+XG4gIGFkZENvbXBvbmVudENvbHVtbjxDIGV4dGVuZHMgQ2VsbFJlbmRlcmVyPFBhcnRpYWw8Um93Pj4+KGNvbHVtbklkOiBzdHJpbmcsIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxDPiwgb25Db21wb25lbnRJbml0T3JPcHRpb25zPzogT25Db21wb25lbnRJbml0PEM+IHwgQ2VsbFJlbmRlcmVyT3B0aW9uczxSb3csIEM+KTogQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFJvdz4ge1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFJvdz4oY29sdW1uSWQsIHRoaXMuY29sdW1uTWFuYWdlciwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCksIHJvdyA9PiByb3cpKS5jZWxsUmVuZGVyZXIoY29tcG9uZW50LCBvbkNvbXBvbmVudEluaXRPck9wdGlvbnMpO1xuICB9XG5cbiAgYWRkTW9yZU1lbnU8QyBleHRlbmRzIFRhYmxlTW9yZU1lbnVQb3B1cENvbXBvbmVudDxSb3c+Pihjb21wb25lbnRDbGFzczogQ29uc3RydWN0YWJsZTxDPiwgaW5pdGlhbGlzZUNhbGxiYWNrPzogKGNvbXBvbmVudDogQykgPT4gdm9pZCkge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENvbHVtbihcIm1vcmUtbWVudVwiLCBUYWJsZU1vcmVNZW51Q29tcG9uZW50LCAoY29tcG9uZW50OiBUYWJsZU1vcmVNZW51Q29tcG9uZW50PFJvdz4pID0+IHtcbiAgICAgIGNvbXBvbmVudC5jb25maWd1cmVQb3B1cENvbXBvbmVudFR5cGUoY29tcG9uZW50Q2xhc3MsIGluaXRpYWxpc2VDYWxsYmFjayk7XG4gICAgfSkuY29sdW1uVGV4dFByb3BlcnRpZXMoe1xuICAgICAgaGVhZGVyVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBhZGRUZW1wbGF0ZUNvbHVtbjxWPihjb2x1bW5JZDogc3RyaW5nKTogQ3VzdG9tVGVtcGxhdGVDb2x1bW5Nb2RlbDxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb2x1bW4obmV3IEN1c3RvbVRlbXBsYXRlQ29sdW1uTW9kZWw8Um93Pihjb2x1bW5JZCwgdGhpcy5jb2x1bW5NYW5hZ2VyLCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSkpO1xuICB9XG5cbiAgYWRkUm93Q2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcsIHByZWRpY2F0ZTogKHJvdzogUm93KSA9PiBib29sZWFuKSB7XG4gICAgdGhpcy5yb3dDbGFzc05hbWVQcmVkaWNhdGVzLnB1c2gobmV3IFJvd0NsYXNzPFJvdz4oY2xhc3NOYW1lLCBwcmVkaWNhdGUpKTtcbiAgfVxuXG4gIGFkZFJvd0F0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIGdldFZhbHVlOiAocm93OiBSb3cpID0+IHN0cmluZykge1xuICAgIHRoaXMucm93QXR0cmlidXRlR2VuZXJhdG9ycy5wdXNoKG5ldyBSb3dBdHRyaWJ1dGU8Um93PihhdHRyaWJ1dGVOYW1lLCBnZXRWYWx1ZSkpO1xuICB9XG5cbiAgZ2V0Um93Q2xhc3Nlcyhyb3c6IFJvdyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMucm93Q2xhc3NOYW1lUHJlZGljYXRlcy5mb3JFYWNoKGkgPT4ge1xuICAgICAgaWYgKGkubWF0Y2hlcyhyb3cpKSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaChpLmNsYXNzTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNsYXNzTmFtZXM7XG4gIH1cblxuICBnZXRSb3dBdHRyaWJ1dGVzKHJvdzogUm93KTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucm93QXR0cmlidXRlR2VuZXJhdG9ycy5yZWR1Y2UoKHJlc3VsdCwgZ2VuZXJhdG9yKSA9PiB7XG4gICAgICByZXR1cm4gey4uLnJlc3VsdCwgW2dlbmVyYXRvci5hdHRyaWJ1dGVOYW1lXTogZ2VuZXJhdG9yLmdldFZhbHVlKHJvdyl9XG4gICAgfSwge30pO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgYWRkQ29sdW1uPEMgZXh0ZW5kcyBDb2x1bW5Nb2RlbDxSb3c+Pihjb2x1bW46IEMsIHBvc2l0aW9uPzogQ29sdW1uT3JkZXJNYW5hZ2VyLlBvc2l0aW9uKTogQyB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTWFuYWdlci5hZGRDb2x1bW4oY29sdW1uLCBwb3NpdGlvbik7XG4gIH1cblxuICBjb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5UZXh0UHJvcGVydGllczogeyBbY29sdW1uTmFtZTogc3RyaW5nXTogQ29sdW1uVGV4dFByb3BlcnRpZXMgfSkge1xuICAgIHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzTG9va3VwID0gY29sdW1uVGV4dFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZDogc3RyaW5nKTogQ29sdW1uVGV4dFByb3BlcnRpZXMge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5UZXh0UHJvcGVydGllc0xvb2t1cCA/IHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzTG9va3VwW2NvbHVtbklkXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG5cbiAgaXNSb3dTZWxlY3Rpb25FbmFibGVkRm9yKGNvbHVtbjogQ29sdW1uTW9kZWw8Um93Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpICYmIGNvbHVtbi5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKTtcbiAgfVxuXG4gIGlzUm93U2VsZWN0aW9uRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNVc2VyU2VsZWN0aW9uTW9kZWxUaGF0SXNFbmFibGVkKCkgJiYgIXRoaXMucm93U2VsZWN0aW9uRGlzYWJsZWRPbkFsbENvbHVtbnMkLnZhbHVlO1xuICB9XG5cbiAgaGFzVXNlclNlbGVjdGlvbk1vZGVsVGhhdElzRW5hYmxlZCgpIHtcbiAgICBjb25zdCB1c2VyU2VsZWN0aW9uTW9kZWwgPSB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsPy5zZWxlY3Rpb25Nb2RlbC5nZXRQcm94eVRhcmdldCgpO1xuICAgIHJldHVybiAhIXVzZXJTZWxlY3Rpb25Nb2RlbCAmJiB1c2VyU2VsZWN0aW9uTW9kZWwuZW5hYmxlZCQudmFsdWU7XG4gIH1cblxuICBnZXRTZWxlY3Rpb25Nb2RlbCgpOiBTZWxlY3Rpb25Nb2RlbDxSb3c+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbD8uc2VsZWN0aW9uTW9kZWw7XG4gIH1cblxuICBpc0hvdmVyRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKSB8fCB0aGlzLnJvd0NsaWNrTGlzdGVuZXJzLmxpc3RlbmVyQ291bnQgPiAwO1xuICB9XG5cbiAgaXNDdXJzb3JFbmFibGVkKGNvbHVtbjogQ29sdW1uTW9kZWw8Um93Pikge1xuICAgIHJldHVybiB0aGlzLmlzUm93U2VsZWN0aW9uRW5hYmxlZEZvcihjb2x1bW4pIHx8IHRoaXMucm93Q2xpY2tMaXN0ZW5lcnMubGlzdGVuZXJDb3VudCA+IDA7XG4gIH1cblxuICBzZWxlY3RSb3cocm93OiBSb3cpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsPy5zZWxlY3RSb3cocm93KTtcbiAgfVxuXG4gIG9uUm93Q2xpY2tlZChjYWxsYmFjazogKHJvdzogUm93KSA9PiB2b2lkKTogRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMucm93Q2xpY2tMaXN0ZW5lcnMuYWRkKGNhbGxiYWNrKTtcbiAgfVxuXG4gIF9ub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW5Nb2RlbDogQ29sdW1uTW9kZWw8Um93Piwgcm93OiBSb3cpIHtcbiAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGlvbkVuYWJsZWRGb3IoY29sdW1uTW9kZWwpKSB7XG4gICAgICB0aGlzLnNlbGVjdFJvdyhyb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyh7XG4gICAgICAvLyAgIGhhc0VuYWJsZWRVc2VyU2VsZWN0aW9uTW9kZWw6IHRoaXMuaGFzVXNlclNlbGVjdGlvbk1vZGVsVGhhdElzRW5hYmxlZCgpLFxuICAgICAgLy8gICBhbGxTZWxlY3Rpb25EaXNhYmxlZDogdGhpcy5yb3dTZWxlY3Rpb25EaXNhYmxlZE9uQWxsQ29sdW1ucyQudmFsdWUsXG4gICAgICAvLyAgIHJvd1NlbGVjdGlvbkVuYWJsZWQ6IHRoaXMuaXNSb3dTZWxlY3Rpb25FbmFibGVkKCksXG4gICAgICAvLyAgIHJvd1NlbGVjdGlvbkVuYWJsZWRGb3JDb2x1bW46IGNvbHVtbk1vZGVsLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpXG4gICAgICAvLyB9KVxuICAgIH1cblxuICAgIHRoaXMucm93Q2xpY2tMaXN0ZW5lcnMuZmlyZShsID0+IGwocm93KSk7XG4gIH1cblxufVxuXG5Qcm94eVJlZ2lzdHJ5LnJlZ2lzdGVyT25lVGltZUJpbmRpbmcoQWJzdHJhY3RUYWJsZU1vZGVsKVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Component, HostBinding, Inject, InjectionToken, Input, Optional } from "@angular/core";
2
+ import { Component, Directive, ElementRef, HostBinding, Inject, InjectionToken, Input, Optional } from "@angular/core";
3
3
  import { Dsl, ListModel, Logger, MutableValueModel, Proxify, proxify, StoreInValueModel, TransactionObserver, ValueModel } from "@coolon/pectin";
4
4
  import { TableVirtualScrollDataSource } from "ng-table-virtual-scroll";
5
5
  import { ResizeAwareComponent } from "../../../resize-aware.component";
@@ -123,6 +123,28 @@ import * as i6 from "../table-header-cell/table-header-cell.component";
123
123
  //
124
124
  // }
125
125
  export const AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER = new InjectionToken("AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER");
126
+ export class TableRowAttributesDirective {
127
+ elementRef;
128
+ aupTableRowAttributes;
129
+ constructor(elementRef) {
130
+ this.elementRef = elementRef;
131
+ }
132
+ ngOnInit() {
133
+ for (const attr in this.aupTableRowAttributes) {
134
+ this.elementRef.nativeElement.setAttribute(attr, this.aupTableRowAttributes[attr]);
135
+ }
136
+ }
137
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
138
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.9", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: { aupTableRowAttributes: "aupTableRowAttributes" }, ngImport: i0 });
139
+ }
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableRowAttributesDirective, decorators: [{
141
+ type: Directive,
142
+ args: [{
143
+ selector: "[aupTableRowAttributes]",
144
+ }]
145
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { aupTableRowAttributes: [{
146
+ type: Input
147
+ }] } });
126
148
  export class TableBodyComponent extends ResizeAwareComponent {
127
149
  bufferMultiplier;
128
150
  #data$_accessor_storage = proxify((ListModel));
@@ -231,7 +253,7 @@ export class TableBodyComponent extends ResizeAwareComponent {
231
253
  }, waitMillis);
232
254
  }
233
255
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, deps: [{ token: AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
234
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, host: { properties: { "attr.scrollMode": "this.scrollMode", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i4.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "component", type: i5.TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: i6.TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }] });
256
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.9", type: TableBodyComponent, selector: "aup-table-body", inputs: { data$: "data$", tableModel: "tableModel", showHeader$: "showHeader$", showHeader: "showHeader", trackBy: "trackBy", scrollMode$: "scrollMode$", scrollMode: "scrollMode" }, host: { properties: { "attr.scrollMode": "this.scrollMode", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i4.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "directive", type: TableRowAttributesDirective, selector: "[aupTableRowAttributes]", inputs: ["aupTableRowAttributes"] }, { kind: "component", type: i5.TableCellComponent, selector: "aup-table-cell", inputs: ["row", "column", "editSession", "tableModel"] }, { kind: "component", type: i6.TableHeaderCellComponent, selector: "aup-table-header-cell", inputs: ["column"] }] });
235
257
  }
236
258
  __decorate([
237
259
  Proxify(),
@@ -259,7 +281,7 @@ __decorate([
259
281
  ], TableBodyComponent.prototype, "scrollMode", null);
260
282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: TableBodyComponent, decorators: [{
261
283
  type: Component,
262
- args: [{ selector: "aup-table-body", template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
284
+ args: [{ selector: "aup-table-body", template: "\n<div class=\"classic-scroll-container\" *ngIf=\"scrollMode$.value !== 'virtual'\">\n <table mat-table [dataSource]=\"data$.value\" [trackBy]=\"trackBy\" [multiTemplateDataRows]>\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n\n<cdk-virtual-scroll-viewport *ngIf=\"scrollMode$.value === 'virtual'\"\n [tvsItemSize]=\"rowHeight$.value\" [headerHeight]=\"headerHeight$.value\" [bufferMultiplier]=\"bufferMultiplier\">\n <table mat-table [dataSource]=\"virtualScrollDataSource\" [trackBy]=\"trackBy\">\n\n <ng-container *ngFor=\"let column of columns$.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell [column]=\"$any(column)\"\n [row]=\"row\"\n [tableModel]=\"$any(tableModel)\"\n [editSession]=\"$any(tableModel.getEditSessionFor(row))\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds$.value; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds$.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\"\n [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [aupTableRowAttributes]=\"tableModel.getRowAttributes(row)\"\n [attr.aup-row-id]=\"trackBy(i, row)\"\n ></tr>\n\n </table>\n</cdk-virtual-scroll-viewport>\n\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host[scrollMode=virtual] cdk-virtual-scroll-viewport{flex:1}:host[scrollMode=classic]{min-height:0}:host[scrollMode=classic] .classic-scroll-container{flex:1;flex-basis:0;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}\n"] }]
263
285
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
264
286
  type: Inject,
265
287
  args: [AUP_TABLE_VIRTUAL_SCROLL_BUFFER_MULTIPLIER]
@@ -289,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
289
311
  type: HostBinding,
290
312
  args: ["class.hide-header"]
291
313
  }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNQSxPQUFPLEVBR0wsU0FBUyxFQUNULFdBQVcsRUFBRSxNQUFNLEVBQ1gsY0FBYyxFQUN0QixLQUFLLEVBQ0csUUFBUSxFQUdqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsR0FBRyxFQUVILFNBQVMsRUFDTyxNQUFNLEVBRXRCLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFckUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBRzlELE1BQU07QUFDTiw2QkFBNkI7QUFDN0IsTUFBTTtBQUNOLG9GQUFvRjtBQUNwRix5REFBeUQ7QUFDekQsRUFBRTtBQUNGLDRGQUE0RjtBQUM1Rix5REFBeUQ7QUFDekQsMkRBQTJEO0FBQzNELHNDQUFzQztBQUN0QyxtRUFBbUU7QUFDbkUsbURBQW1EO0FBQ25ELE1BQU07QUFDTixJQUFJO0FBR0osa0hBQWtIO0FBQ2xI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b20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcbmltcG9ydCB7XG4gIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgRml4ZWRTaXplVmlydHVhbFNjcm9sbFN0cmF0ZWd5LFxuICBWSVJUVUFMX1NDUk9MTF9TVFJBVEVHWVxufSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3Njcm9sbGluZ1wiO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsIEluamVjdCxcbiAgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCwgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgTGlzdE1vZGVsLFxuICBMaXN0TW9kZWxDaGFpbiwgTG9nZ2VyLFxuICBNYXBNb2RlbENoYWluLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgUHJveGlmeSxcbiAgcHJveGlmeSxcbiAgU3RvcmVJblZhbHVlTW9kZWwsIFRyYWNlLFxuICBUcmFuc2FjdGlvbk9ic2VydmVyLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge1RhYmxlVmlydHVhbFNjcm9sbERhdGFTb3VyY2V9IGZyb20gXCJuZy10YWJsZS12aXJ0dWFsLXNjcm9sbFwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1Jlc2l6ZUF3YXJlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vcmVzaXplLWF3YXJlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtBYnN0cmFjdFRhYmxlTW9kZWx9IGZyb20gXCIuLi8uLi9hYnN0cmFjdC10YWJsZS1tb2RlbFwiO1xuaW1wb3J0IHtDb2x1bW5Nb2RlbH0gZnJvbSBcIi4uLy4uL2NvbHVtbi9jb2x1bW4tbW9kZWxcIjtcblxuLy8gLyoqXG4vLyAgKiBWaXJ0dWFsIFNjcm9sbCBTdHJhdGVneVxuLy8gICovXG4vLyBleHBvcnQgY2xhc3MgQ3VzdG9tVmlydHVhbFNjcm9sbFN0cmF0ZWd5IGV4dGVuZHMgRml4ZWRTaXplVmlydHVhbFNjcm9sbFN0cmF0ZWd5IHtcbi8vICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdhcmJhZ2UgPSBuZXcgR2FyYmFnZUNvbGxlY3RvcigpO1xuLy9cbi8vICAgY29uc3RydWN0b3Iocm93SGVpZ2h0JDogVmFsdWVNb2RlbDxudW1iZXI+LCBtaW5CdWZmZXJQeDogbnVtYmVyLCBtYXhCdWZmZXJQeDogbnVtYmVyKSB7XG4vLyAgICAgc3VwZXIocm93SGVpZ2h0JC52YWx1ZSwgbWluQnVmZmVyUHgsIG1heEJ1ZmZlclB4KTtcbi8vICAgICBjb25zdCB7Y2hhaW4sIHdoZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMuZ2FyYmFnZSk7XG4vLyAgICAgd2hlbihyb3dIZWlnaHQkKS5jaGFuZ2VzKGggPT4ge1xuLy8gICAgICAgdGhpcy51cGRhdGVJdGVtQW5kQnVmZmVyU2l6ZShoLCBtaW5CdWZmZXJQeCwgbWF4QnVmZmVyUHgpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSlcbi8vICAgfVxuLy8gfVxuXG5cbi8vIGV4cG9ydCBjbGFzcyBWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZTxSb3c+IGV4dGVuZHMgRGF0YVNvdXJjZTxSb3c+IGltcGxlbWVudHMgRGlzcG9zYWJsZSwgRGlzcG9zYWJsZS5Db2xsZWN0b3Ige1xuLy9cbi8vICAgcHJpdmF0ZSBnYXJiYWdlID0gbmV3IEdhcmJhZ2VDb2xsZWN0b3IoKTtcbi8vXG4vLyAgIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxSb3dSYW5nZSQ6IFZhbHVlTW9kZWxDaGFpbjx7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0+O1xuLy8gICByZWFkb25seSB2aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQ6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuLy8gICByZWFkb25seSB0b3RhbENvbnRlbnRTaXplJDogVmFsdWVNb2RlbENoYWluPG51bWJlcj47XG4vLyAgIHJlYWRvbmx5IHNob3dWaXJ0dWFsU2Nyb2xsT2Zmc2V0OiAoaW5kZXg6IG51bWJlciwgcm93RGF0YTogYW55KSA9PiBib29sZWFuO1xuLy9cbi8vICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpcnR1YWxSb3dzT2JzZXJ2YWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHJlYWRvbmx5IFJvd1tdPihbXSk7XG4vLyAgIHByaXZhdGUgcmVhZG9ubHkgdmlydHVhbFNjcm9sbFBpeGVsT2Zmc2V0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxudW1iZXI+KDApO1xuLy9cbi8vXG4vLyAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIGRhdGEkOkxpc3RNb2RlbDxSb3c+LCByZWFkb25seSByb3dIZWlnaHQkOlZhbHVlTW9kZWw8bnVtYmVyPiwgcGFnZVNpemUkOiBWYWx1ZU1vZGVsPG51bWJlcj4pIHtcbi8vICAgICBzdXBlcigpO1xuLy8gICAgIGNvbnN0IHtjaGFpbiwgd2hlbiwgb2JzZXJ2ZX0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4vL1xuLy8gICAgIG9ic2VydmUudmFsdWVzRnJvbSh2aWV3cG9ydC5lbGVtZW50U2Nyb2xsZWQoKSkuc3Vic2NyaWJlKChldjogRXZlbnQpID0+IHtcbi8vICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFBpeGVsT2Zmc2V0JC52YWx1ZSA9IChldi5jdXJyZW50VGFyZ2V0IGFzIGFueSkuc2Nyb2xsVG9wO1xuLy8gICAgIH0pO1xuLy9cbi8vICAgICB0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQgPSBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxQaXhlbE9mZnNldCQpLm1hcChyYXdQaXhlbE9mZnNldCA9PiB7XG4vLyAgICAgICBjb25zdCBzdGFydEluZGV4ID0gTWF0aC5mbG9vcihyYXdQaXhlbE9mZnNldCAvIHRoaXMucm93SGVpZ2h0JC52YWx1ZSk7XG4vLyAgICAgICBjb25zb2xlLmxvZyhyYXdQaXhlbE9mZnNldCwgc3RhcnRJbmRleClcbi8vICAgICAgIC8vIGNvbnN0IHByZXZFeHRyYURhdGEgPSBzdGFydEluZGV4ID4gNSA/IDUgOiAwO1xuLy8gICAgICAgY29uc3QgcHJldkV4dHJhRGF0YSA9IDA7XG4vLyAgICAgICAvLyByZXR1cm4gcm93cy5zbGljZShzdGFydEluZGV4IC0gcHJldkV4dHJhRGF0YSwgc3RhcnRJbmRleCArIChwYWdlU2l6ZSQudmFsdWUgLSBwcmV2RXh0cmFEYXRhKSk7XG4vLyAgICAgICByZXR1cm4ge1xuLy8gICAgICAgICBzdGFydDogc3RhcnRJbmRleCAtIHByZXZFeHRyYURhdGEsXG4vLyAgICAgICAgIGVuZDogc3RhcnRJbmRleCArIChwYWdlU2l6ZSQudmFsdWUgLSBwcmV2RXh0cmFEYXRhKVxuLy8gICAgICAgfVxuLy8gICAgIH0sIHtcbi8vICAgICAgIGRlcGVuZHNPbjogW3RoaXMucm93SGVpZ2h0JCwgcGFnZVNpemUkXSxcbi8vICAgICAgIHBvc3Rwb25lV2hpbGU6IGNoYWluLm51bWVyaWNWYWx1ZShwYWdlU2l6ZSQpLmlzTGVzc1RoYW4oMSksXG4vLyAgICAgICBjaGFuZ2VkOiAoaXMsIHdhcykgPT4ge1xuLy8gICAgICAgICByZXR1cm4gd2FzPy5zdGFydCAhPT0gaXM/LnN0YXJ0IHx8IHdhcz8uZW5kICE9PSBpcz8uZW5kXG4vLyAgICAgICB9XG4vLyAgICAgfSlcbi8vXG4vLyAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQgPSBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQpLm1hcChyYW5nZSA9PiB7XG4vLyAgICAgICBjb25zdCBwaXhlbE9mZnNldCA9IHRoaXMucm93SGVpZ2h0JC52YWx1ZSAqIHJhbmdlLnN0YXJ0O1xuLy8gICAgICAgcmV0dXJuIHBpeGVsT2Zmc2V0O1xuLy8gICAgIH0sIHsgZGVwZW5kc09uOiB0aGlzLnJvd0hlaWdodCR9KVxuLy9cbi8vICAgICB0aGlzLnRvdGFsQ29udGVudFNpemUkID0gY2hhaW4oZGF0YSQpLmNvdW50KCkubWFwKHJvd0NvdW50ID0+IHtcbi8vICAgICAgIHJldHVybiB0aGlzLnJvd0hlaWdodCQudmFsdWUgKiByb3dDb3VudFxuLy8gICAgIH0sIHtkZXBlbmRzT246IHJvd0hlaWdodCR9KVxuLy9cbi8vICAgICBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQpLm1hcFRvTGlzdChyYW5nZSA9PiB7XG4vLyAgICAgICByZXR1cm4gZGF0YSQudmFsdWUuc2xpY2UocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCk7XG4vLyAgICAgfSwge1xuLy8gICAgICAgZGVwZW5kc09uOiBkYXRhJFxuLy8gICAgIH0pLnN1YnNjcmliZSh2aXNpYmxlUm93cyA9PiB7XG4vLyAgICAgICBjb25zb2xlLmxvZyh2aXNpYmxlUm93cylcbi8vICAgICAgIHRoaXMudmlydHVhbFJvd3NPYnNlcnZhYmxlJC5uZXh0KHZpc2libGVSb3dzKVxuLy8gICAgIH0pO1xuLy9cbi8vICAgICB3aGVuKHRoaXMudmlydHVhbFNjcm9sbFNwYWNlclNpemUkKS5jaGFuZ2VzKHNjcm9sbFRvcCA9PiB7XG4vLyAgICAgICB2aWV3cG9ydC5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQoc2Nyb2xsVG9wLCBcInRvLXN0YXJ0XCIpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG4vL1xuLy8gICAgIHdoZW4odGhpcy50b3RhbENvbnRlbnRTaXplJCkuY2hhbmdlcyh0b3RhbFNpemUgPT4ge1xuLy8gICAgICAgdmlld3BvcnQuc2V0VG90YWxDb250ZW50U2l6ZSh0b3RhbFNpemUpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG4vL1xuLy9cbi8vICAgICB0aGlzLnNob3dWaXJ0dWFsU2Nyb2xsT2Zmc2V0ID0gKGluZGV4OiBudW1iZXIsIHJvd0RhdGE6IGFueSk6IGJvb2xlYW4gPT4ge1xuLy8gICAgICAgY29uc3QgaGF2ZVNjcm9sbGVkID0gdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQudmFsdWUgPiAwO1xuLy8gICAgICAgY29uc3QgZmlyc3RSb3cgPSBpbmRleCA9PT0gMDtcbi8vICAgICAgIHJldHVybiBpbmRleCA9PT0gMCAmJiBoYXZlU2Nyb2xsZWRcbi8vICAgICB9O1xuLy9cbi8vXG4vL1xuLy8gICB9XG4vL1xuLy9cbi8vXG4vLyAgIGRpc3Bvc2UoKTogdm9pZCB7XG4vLyAgICAgdGhpcy5nYXJiYWdlLmRpc3Bvc2UoKTtcbi8vICAgfVxuLy9cbi8vICAgcmVnaXN0ZXJEaXNwb3NhYmxlPFQgZXh0ZW5kcyBEaXNwb3NhYmxlPihkaXNwb3NhYmxlOiBUKTogVCB7XG4vLyAgICAgcmV0dXJuIHRoaXMuZ2FyYmFnZS5yZWdpc3RlckRpc3Bvc2FibGUoZGlzcG9zYWJsZSk7XG4vLyAgIH1cbi8vXG4vL1xuLy8gICBjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiBPYnNlcnZhYmxlPHJlYWRvbmx5IFJvd1tdPiB7XG4vLyAgICAgcmV0dXJuIHRoaXMudmlydHVhbFJvd3NPYnNlcnZhYmxlJDtcbi8vICAgfVxuLy9cbi8vICAgZGlzY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogdm9pZCB7XG4vLyAgICAgLy8gbm9vcFxuLy8gICB9XG4vL1xuLy9cbi8vIH1cblxuZXhwb3J0IGNvbnN0IEFVUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9CVUZGRVJfTVVMVElQTElFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KFwiQVVQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0JVRkZFUl9NVUxUSVBMSUVSXCIpXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhdXAtdGFibGUtYm9keVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLWJvZHkuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3RhYmxlLWJvZHkuY29tcG9uZW50LnNjc3NcIl0sXG4gIC8vIHByb3ZpZGVyczogW3tcbiAgLy8gICBwcm92aWRlOiBWSVJUVUFMX1NDUk9MTF9TVFJBVEVHWSwgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAvLyAgICAgcmV0dXJuIGluamVjdChUYWJsZUJvZHlDb21wb25lbnQpLnZpcnR1YWxTY3JvbGxTdHJhdGVneVxuICAvLyAgIH1cbiAgLy8gfV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQm9keUNvbXBvbmVudDxSb3c+IGV4dGVuZHMgUmVzaXplQXdhcmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgZGF0YSQgPSBwcm94aWZ5KExpc3RNb2RlbDxSb3c+KTtcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHRhYmxlTW9kZWwgPSBwcm94aWZ5KEFic3RyYWN0VGFibGVNb2RlbDxSb3c+KTtcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHNob3dIZWFkZXIkID0gcHJveGlmeShWYWx1ZU1vZGVsPGJvb2xlYW4+KTtcblxuICBASW5wdXQoKSBAU3RvcmVJblZhbHVlTW9kZWwoKVxuICBhY2Nlc3NvciBzaG93SGVhZGVyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICB0cmFja0J5OiAoaW5kZXg6IG51bWJlciwgaXRlbTogUm93KSA9PiBhbnlcblxuICBASW5wdXQoKSBAUHJveGlmeSgpXG4gIGFjY2Vzc29yIHNjcm9sbE1vZGUkOiBWYWx1ZU1vZGVsPFRhYmxlQm9keUNvbXBvbmVudC5TY3JvbGxNb2RlPiA9IHByb3hpZnkoVmFsdWVNb2RlbDxUYWJsZUJvZHlDb21wb25lbnQuU2Nyb2xsTW9kZT4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIEBIb3N0QmluZGluZyhcImF0dHIuc2Nyb2xsTW9kZVwiKVxuICBhY2Nlc3NvciBzY3JvbGxNb2RlOiBUYWJsZUJvZHlDb21wb25lbnQuU2Nyb2xsTW9kZSA9IFwibm9uZVwiO1xuXG4gIGNvbHVtbnMkOiBMaXN0TW9kZWxDaGFpbjxDb2x1bW5Nb2RlbDxSb3c+PjtcbiAgY29sdW1uSWRzJDogTGlzdE1vZGVsQ2hhaW48c3RyaW5nPjtcblxuICBwcml2YXRlIGNvbHVtbnNCeUlkJDogTWFwTW9kZWxDaGFpbjxzdHJpbmcsIENvbHVtbk1vZGVsPFJvdz4+O1xuXG5cbiAgLy8gVE9ETzogc3VwcG9ydCB1c2VyIGRlZmluZWQgaGVhZGVyIGFuZCByb3cgaGVpZ2h0cyB2aWEgY3NzIHZhcnMuXG4gIHByb3RlY3RlZCByZWFkb25seSBoZWFkZXJIZWlnaHQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPG51bWJlcj4oMjkpO1xuICBwcm90ZWN0ZWQgcm93SGVpZ2h0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxudW1iZXI+KDQwKTtcblxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKVxuICBiYXNlQ3NzQ2xhc3MgPSBcImF1cC10YWJsZS1jb21wb25lbnRcIjtcblxuICBwcm90ZWN0ZWQgdmlydHVhbFNjcm9sbERhdGFTb3VyY2UgPSBuZXcgVGFibGVWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZTxSb3c+KCk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChBVVBfVEFCTEVfVklSVFVBTF9TQ1JPTExfQlVGRkVSX01VTFRJUExJRVIpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBidWZmZXJNdWx0aXBsaWVyOm51bWJlciA9IDEpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHtjaGFpbiwgd2hlbiwgb2JzZXJ2ZX0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG5cbiAgICBjb25zdCBhY3R1YWxIZWFkZXJIZWlnaHQkID0gY2hhaW4odGhpcy5zaG93SGVhZGVyJCkubWFwKHNob3cgPT4ge1xuICAgICAgcmV0dXJuIHNob3cgPyB0aGlzLmhlYWRlckhlaWdodCQudmFsdWUgOiAwO1xuICAgIH0sIHtkZXBlbmRzT246IHRoaXMuaGVhZGVySGVpZ2h0JH0pO1xuXG4gICAgLy8gdGhpcy50YWJsZUJvZHlIZWlnaHQkID0gY2hhaW4odGhpcy5ib3VuZHMkKS5tYXAoYm91bmRzID0+IHtcbiAgICAvLyAgIHJldHVybiAoYm91bmRzLmhlaWdodCAtIGFjdHVhbEhlYWRlckhlaWdodCQudmFsdWUpXG4gICAgLy8gfSwge2RlcGVuZHNPbjogYWN0dWFsSGVhZGVySGVpZ2h0JH0pXG4gICAgLy8gICAub3RoZXJ3aXNlKDApO1xuXG5cbiAgICAvLyBjb25zdCB2aXNpYmxlUm93Q291bnQkID0gY2hhaW4odGhpcy5ib3VuZHMkKS5tYXAoYm91bmRzID0+IHtcbiAgICAvLyAgIC8vIFRPRE86IHRoaXMgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCBhbnkgY3NzIHN0eWxpbmcgYWRqdXN0bWVudHMgZXRjLiAgV2lsbCBpbnZlc3RpZ2F0ZSBpZiBpdCdzIGFuIGlzc3VlLlxuICAgIC8vICAgY29uc3QgcmF3Um93Q291bnQgPSAoYm91bmRzLmhlaWdodCAtIGFjdHVhbEhlYWRlckhlaWdodCQudmFsdWUpIC8gdGhpcy5yb3dIZWlnaHQkLnZhbHVlO1xuICAgIC8vICAgcmV0dXJuIHJhd1Jvd0NvdW50IDwgMSA/IDAgOiBNYXRoLmZsb29yKHJhd1Jvd0NvdW50KTtcbiAgICAvLyB9LCB7XG4gICAgLy8gICBkZXBlbmRzT246IFthY3R1YWxIZWFkZXJIZWlnaHQkLCB0aGlzLnJvd0hlaWdodCRdLFxuICAgIC8vICAgcG9zdHBvbmVXaGlsZTogY2hhaW4odGhpcy5ib3VuZHMkKS5wbHVja051bWVyaWMoXCJoZWlnaHRcIikuaXNMZXNzVGhhbigxKVxuICAgIC8vIH0pO1xuXG4gICAgLy8gLy8gY29uc3QgcGFnZVNpemUkID0gY2hhaW4odmlzaWJsZVJvd0NvdW50JClcbiAgICAvLyAvLyAgIC5tYXAoY291bnQgPT4gMiAqIGNvdW50KS5vdGhlcndpc2UoMClcbiAgICAvLyBjb25zdCBwYWdlU2l6ZSQgPSBWYWx1ZU1vZGVsLmNvbnN0YW50KDEyKVxuXG5cbiAgICB3aGVuKHRoaXMuZGF0YSQpLmNoYW5nZXMoaXMgPT4ge1xuICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZS5kYXRhID0gaXM7XG4gICAgICB0aGlzLnNjaGVkdWxlVGFibGVIZWlnaHRDaGVjaygpO1xuICAgIH0sIHtpbml0aWFsVmFsdWU6IFwiZXZhbHVhdGVcIn0pXG5cblxuICAgIHRoaXMub25Jbml0KCgpID0+IHtcbiAgICAgIHRoaXMuY29sdW1ucyQgPSBjaGFpbih0aGlzLnRhYmxlTW9kZWwuY29sdW1ucyk7XG4gICAgICB0aGlzLmNvbHVtbklkcyQgPSBjaGFpbih0aGlzLmNvbHVtbnMkKS5wbHVjayhcImNvbHVtbklkXCIpO1xuICAgICAgdGhpcy5jb2x1bW5zQnlJZCQgPSBjaGFpbih0aGlzLmNvbHVtbnMkKS5pbmRleEJ5KCdjb2x1bW5JZCcpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgdHhvID0gbmV3IFRyYW5zYWN0aW9uT2JzZXJ2ZXIoe3ZlcmJvc2U6IGZhbHNlfSkub25FdmVudChlID0+IGNvbnNvbGUubG9nKGUubmFtZSwgZS5wYXlsb2FkKSk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMudmlydHVhbFNjcm9sbFJvd1JhbmdlJCcsIHRoaXMudmlydHVhbFNjcm9sbFJvd1JhbmdlJCk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMudmlydHVhbFNjcm9sbFNwYWNlclNpemUkJywgdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQpO1xuICAgIC8vIHR4by5vYnNlcnZlKCd0aGlzLnZpcnR1YWxSb3dzJCcsIHRoaXMudmlydHVhbFJvd3MkKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy50YWJsZUJvZHlIZWlnaHQkJywgdGhpcy50YWJsZUJvZHlIZWlnaHQkKTtcblxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGlkZS1oZWFkZXJcIilcbiAgZ2V0IGhpZGVIZWFkZXIoKSB7XG4gICAgcmV0dXJuICF0aGlzLnNob3dIZWFkZXI7XG4gIH1cblxuICBpc0VkaXRpbmcocm93OiBSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnRhYmxlTW9kZWwuZ2V0RWRpdFNlc3Npb25Gb3Iocm93KTtcbiAgfVxuXG4gIG5vdGlmeUNlbGxDbGlja2VkKGNvbHVtbk1vZGVsOiBDb2x1bW5Nb2RlbDxSb3c+LCByb3c6IFJvdykge1xuICAgIHRoaXMudGFibGVNb2RlbC5fbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWwsIHJvdyk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIGlzRmlyc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmZpcnN0VmlzaWJsZUNvbHVtbiQucXVlcnkoKS52YWx1ZT8uY29sdW1uSWQgPT09IGNvbHVtbklkO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcblxuICBpc0xhc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZU1vZGVsLmxhc3RWaXNpYmxlQ29sdW1uJC5xdWVyeSgpLnZhbHVlPy5jb2x1bW5JZCA9PT0gY29sdW1uSWQ7XG4gIH1cblxuICBnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbklkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbGFzc2VzID0gW2BhdXAtY29sLSR7dGhpcy5jb2x1bW5zQnlJZCQuZ2V0KGNvbHVtbklkKS5kYXNoZXJpc2VkQ29sdW1uSWR9YF07XG4gICAgaWYgKHRoaXMuaXNGaXJzdFZpc2libGVDb2x1bW4oY29sdW1uSWQpKSB7XG4gICAgICBjbGFzc2VzLnB1c2goXCJmaXJzdC12aXNpYmxlLWNvbHVtblwiKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNMYXN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZCkpIHtcbiAgICAgIGNsYXNzZXMucHVzaChcImxhc3QtdmlzaWJsZS1jb2x1bW5cIik7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZVRhYmxlSGVpZ2h0Q2hlY2sod2FpdE1pbGxpcyA9IDUwKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB0Ym9keSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJ0Ym9keVwiKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGJvZHlIZWlnaHQgPSB0Ym9keS5vZmZzZXRIZWlnaHQ7XG4gICAgICBpZiAodGhpcy5kYXRhJC5sZW5ndGggPiAwICYmIGJvZHlIZWlnaHQgPCB0aGlzLnJvd0hlaWdodCQudmFsdWUpIHtcbiAgICAgICAgLy8gSGFja3MgdG8gZ2V0IG91ciB2aXJ0dWFsIHNjcm9sbCB0byByZXBhaW50XG4gICAgICAgIExvZ2dlci5nZXQodGhpcykubG9nKGByb3dDb3VudD0ke3RoaXMuZGF0YSQubGVuZ3RofSwgYm9keUhlaWdodD0ke2JvZHlIZWlnaHR9IC0+IHZyaXR1YWwgdGFibGUgbm90IHJlbmRlcmluZywgdHJpZ2dlcmluZyByZXNpemUgdG8gZm9yY2UgcmVwYWludGApXG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpO1xuICAgICAgICBpZiAod2FpdE1pbGxpcyA8IDUwMCkge1xuICAgICAgICAgIHRoaXMuc2NoZWR1bGVUYWJsZUhlaWdodENoZWNrKHdhaXRNaWxsaXMgKyA1MCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB3YWl0TWlsbGlzKVxuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVCb2R5Q29tcG9uZW50IHtcbiAgZXhwb3J0IHR5cGUgU2Nyb2xsTW9kZSA9IFwibm9uZVwiIHwgXCJjbGFzc2ljXCIgfCBcInZpcnR1YWxcIjtcblxufVxuIiwiXG48ZGl2IGNsYXNzPVwiY2xhc3NpYy1zY3JvbGwtY29udGFpbmVyXCIgKm5nSWY9XCJzY3JvbGxNb2RlJC52YWx1ZSAhPT0gJ3ZpcnR1YWwnXCI+XG4gIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YSQudmFsdWVcIiBbdHJhY2tCeV09XCJ0cmFja0J5XCIgW211bHRpVGVtcGxhdGVEYXRhUm93c10+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1ucyQudmFsdWU7IGluZGV4IGFzIGluZGV4OyBmaXJzdCBhcyBmaXJzdDsgbGFzdCBhcyBsYXN0XCJcbiAgICAgICAgICAgICAgICAgIG1hdENvbHVtbkRlZj1cInt7Y29sdW1uLmNvbHVtbklkfX1cIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCIgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiPlxuICAgICAgICA8YXVwLXRhYmxlLWhlYWRlci1jZWxsIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtaGVhZGVyLWNlbGw+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5lbmFibGUtY3Vyc29yXT1cInRhYmxlTW9kZWwuaXNDdXJzb3JFbmFibGVkKGNvbHVtbilcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0U2Vzc2lvbl09XCIkYW55KHRhYmxlTW9kZWwuZ2V0RWRpdFNlc3Npb25Gb3Iocm93KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1jZWxsPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uSWRzJC52YWx1ZTsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uSWRzJC52YWx1ZTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlTW9kZWwuZ2V0Um93Q2xhc3Nlcyhyb3cpXCJcbiAgICAgICAgW2NsYXNzLmVuYWJsZS1ob3Zlcl09XCJ0YWJsZU1vZGVsLmlzSG92ZXJFbmFibGVkKClcIlxuICAgICAgICBbYXR0ci5hdXAtcm93LWlkXT1cInRyYWNrQnkoaSwgcm93KVwiXG4gICAgPjwvdHI+XG5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICAqbmdJZj1cInNjcm9sbE1vZGUkLnZhbHVlID09PSAndmlydHVhbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R2c0l0ZW1TaXplXT1cInJvd0hlaWdodCQudmFsdWVcIiBbaGVhZGVySGVpZ2h0XT1cImhlYWRlckhlaWdodCQudmFsdWVcIiBbYnVmZmVyTXVsdGlwbGllcl09XCJidWZmZXJNdWx0aXBsaWVyXCI+XG4gIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwidmlydHVhbFNjcm9sbERhdGFTb3VyY2VcIiBbdHJhY2tCeV09XCJ0cmFja0J5XCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1ucyQudmFsdWU7IGluZGV4IGFzIGluZGV4OyBmaXJzdCBhcyBmaXJzdDsgbGFzdCBhcyBsYXN0XCJcbiAgICAgICAgICAgICAgICAgIG1hdENvbHVtbkRlZj1cInt7Y29sdW1uLmNvbHVtbklkfX1cIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCIgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiPlxuICAgICAgICA8YXVwLXRhYmxlLWhlYWRlci1jZWxsIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtaGVhZGVyLWNlbGw+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5lbmFibGUtY3Vyc29yXT1cInRhYmxlTW9kZWwuaXNDdXJzb3JFbmFibGVkKGNvbHVtbilcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0U2Vzc2lvbl09XCIkYW55KHRhYmxlTW9kZWwuZ2V0RWRpdFNlc3Npb25Gb3Iocm93KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1jZWxsPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uSWRzJC52YWx1ZTsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uSWRzJC52YWx1ZTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlTW9kZWwuZ2V0Um93Q2xhc3Nlcyhyb3cpXCJcbiAgICAgICAgW2NsYXNzLmVuYWJsZS1ob3Zlcl09XCJ0YWJsZU1vZGVsLmlzSG92ZXJFbmFibGVkKClcIlxuICAgICAgICBbYXR0ci5hdXAtcm93LWlkXT1cInRyYWNrQnkoaSwgcm93KVwiXG4gICAgPjwvdHI+XG5cbiAgPC90YWJsZT5cbjwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG4iXX0=
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9yZW5kZXJlci90YWJsZS1ib2R5L3RhYmxlLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvcmVuZGVyZXIvdGFibGUtYm9keS90YWJsZS1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFNQSxPQUFPLEVBR0wsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQ2hDLFdBQVcsRUFBRSxNQUFNLEVBQ1gsY0FBYyxFQUN0QixLQUFLLEVBQ0csUUFBUSxFQUdqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsR0FBRyxFQUVILFNBQVMsRUFDTyxNQUFNLEVBRXRCLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsT0FBTyxFQUNQLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFckUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBRzlELE1BQU07QUFDTiw2QkFBNkI7QUFDN0IsTUFBTTtBQUNOLG9GQUFvRjtBQUNwRix5REFBeUQ7QUFDekQsRUFBRTtBQUNGLDRGQUE0RjtBQUM1Rix5REFBeUQ7QUFDekQsMkRBQTJEO0FBQzNELHNDQUFzQztBQUN0QyxtRUFBbUU7QUFDbkUsbURBQW1EO0FBQ25ELE1BQU07QUFDTixJ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O0FBSTVHO0lBRkMsaUJBQWlCLEVBQUU7O29EQUUrQjsyRkF0QmpELGtCQUFrQjtrQkFWOUIsU0FBUzsrQkFDRSxnQkFBZ0I7OzBCQWdEYixNQUFNOzJCQUFDLDBDQUEwQzs7MEJBQUcsUUFBUTs0Q0FwQ2hFLEtBQUs7c0JBRGIsS0FBSztnQkFJRyxVQUFVO3NCQURsQixLQUFLO2dCQUlHLFdBQVc7c0JBRG5CLEtBQUs7Z0JBSUcsVUFBVTtzQkFEbEIsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSUcsV0FBVztzQkFEbkIsS0FBSztnQkFLRyxVQUFVO3NCQUZsQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFjOUIsWUFBWTtzQkFEWCxXQUFXO3VCQUFDLE9BQU87Z0JBc0RoQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb2xsZWN0aW9uVmlld2VyLCBEYXRhU291cmNlfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zXCI7XG5pbXBvcnQge1xuICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gIEZpeGVkU2l6ZVZpcnR1YWxTY3JvbGxTdHJhdGVneSxcbiAgVklSVFVBTF9TQ1JPTExfU1RSQVRFR1lcbn0gZnJvbSBcIkBhbmd1bGFyL2Nkay9zY3JvbGxpbmdcIjtcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsIEluamVjdCxcbiAgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCwgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgTGlzdE1vZGVsLFxuICBMaXN0TW9kZWxDaGFpbiwgTG9nZ2VyLFxuICBNYXBNb2RlbENoYWluLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgUHJveGlmeSxcbiAgcHJveGlmeSxcbiAgU3RvcmVJblZhbHVlTW9kZWwsIFRyYWNlLFxuICBUcmFuc2FjdGlvbk9ic2VydmVyLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge1RhYmxlVmlydHVhbFNjcm9sbERhdGFTb3VyY2V9IGZyb20gXCJuZy10YWJsZS12aXJ0dWFsLXNjcm9sbFwiO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1Jlc2l6ZUF3YXJlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vcmVzaXplLWF3YXJlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtBYnN0cmFjdFRhYmxlTW9kZWx9IGZyb20gXCIuLi8uLi9hYnN0cmFjdC10YWJsZS1tb2RlbFwiO1xuaW1wb3J0IHtDb2x1bW5Nb2RlbH0gZnJvbSBcIi4uLy4uL2NvbHVtbi9jb2x1bW4tbW9kZWxcIjtcblxuLy8gLyoqXG4vLyAgKiBWaXJ0dWFsIFNjcm9sbCBTdHJhdGVneVxuLy8gICovXG4vLyBleHBvcnQgY2xhc3MgQ3VzdG9tVmlydHVhbFNjcm9sbFN0cmF0ZWd5IGV4dGVuZHMgRml4ZWRTaXplVmlydHVhbFNjcm9sbFN0cmF0ZWd5IHtcbi8vICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdhcmJhZ2UgPSBuZXcgR2FyYmFnZUNvbGxlY3RvcigpO1xuLy9cbi8vICAgY29uc3RydWN0b3Iocm93SGVpZ2h0JDogVmFsdWVNb2RlbDxudW1iZXI+LCBtaW5CdWZmZXJQeDogbnVtYmVyLCBtYXhCdWZmZXJQeDogbnVtYmVyKSB7XG4vLyAgICAgc3VwZXIocm93SGVpZ2h0JC52YWx1ZSwgbWluQnVmZmVyUHgsIG1heEJ1ZmZlclB4KTtcbi8vICAgICBjb25zdCB7Y2hhaW4sIHdoZW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMuZ2FyYmFnZSk7XG4vLyAgICAgd2hlbihyb3dIZWlnaHQkKS5jaGFuZ2VzKGggPT4ge1xuLy8gICAgICAgdGhpcy51cGRhdGVJdGVtQW5kQnVmZmVyU2l6ZShoLCBtaW5CdWZmZXJQeCwgbWF4QnVmZmVyUHgpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSlcbi8vICAgfVxuLy8gfVxuXG5cbi8vIGV4cG9ydCBjbGFzcyBWaXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZTxSb3c+IGV4dGVuZHMgRGF0YVNvdXJjZTxSb3c+IGltcGxlbWVudHMgRGlzcG9zYWJsZSwgRGlzcG9zYWJsZS5Db2xsZWN0b3Ige1xuLy9cbi8vICAgcHJpdmF0ZSBnYXJiYWdlID0gbmV3IEdhcmJhZ2VDb2xsZWN0b3IoKTtcbi8vXG4vLyAgIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxSb3dSYW5nZSQ6IFZhbHVlTW9kZWxDaGFpbjx7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0+O1xuLy8gICByZWFkb25seSB2aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQ6IFZhbHVlTW9kZWxDaGFpbjxudW1iZXI+O1xuLy8gICByZWFkb25seSB0b3RhbENvbnRlbnRTaXplJDogVmFsdWVNb2RlbENoYWluPG51bWJlcj47XG4vLyAgIHJlYWRvbmx5IHNob3dWaXJ0dWFsU2Nyb2xsT2Zmc2V0OiAoaW5kZXg6IG51bWJlciwgcm93RGF0YTogYW55KSA9PiBib29sZWFuO1xuLy9cbi8vICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpcnR1YWxSb3dzT2JzZXJ2YWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHJlYWRvbmx5IFJvd1tdPihbXSk7XG4vLyAgIHByaXZhdGUgcmVhZG9ubHkgdmlydHVhbFNjcm9sbFBpeGVsT2Zmc2V0JCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxudW1iZXI+KDApO1xuLy9cbi8vXG4vLyAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIGRhdGEkOkxpc3RNb2RlbDxSb3c+LCByZWFkb25seSByb3dIZWlnaHQkOlZhbHVlTW9kZWw8bnVtYmVyPiwgcGFnZVNpemUkOiBWYWx1ZU1vZGVsPG51bWJlcj4pIHtcbi8vICAgICBzdXBlcigpO1xuLy8gICAgIGNvbnN0IHtjaGFpbiwgd2hlbiwgb2JzZXJ2ZX0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4vL1xuLy8gICAgIG9ic2VydmUudmFsdWVzRnJvbSh2aWV3cG9ydC5lbGVtZW50U2Nyb2xsZWQoKSkuc3Vic2NyaWJlKChldjogRXZlbnQpID0+IHtcbi8vICAgICAgIHRoaXMudmlydHVhbFNjcm9sbFBpeGVsT2Zmc2V0JC52YWx1ZSA9IChldi5jdXJyZW50VGFyZ2V0IGFzIGFueSkuc2Nyb2xsVG9wO1xuLy8gICAgIH0pO1xuLy9cbi8vICAgICB0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQgPSBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxQaXhlbE9mZnNldCQpLm1hcChyYXdQaXhlbE9mZnNldCA9PiB7XG4vLyAgICAgICBjb25zdCBzdGFydEluZGV4ID0gTWF0aC5mbG9vcihyYXdQaXhlbE9mZnNldCAvIHRoaXMucm93SGVpZ2h0JC52YWx1ZSk7XG4vLyAgICAgICBjb25zb2xlLmxvZyhyYXdQaXhlbE9mZnNldCwgc3RhcnRJbmRleClcbi8vICAgICAgIC8vIGNvbnN0IHByZXZFeHRyYURhdGEgPSBzdGFydEluZGV4ID4gNSA/IDUgOiAwO1xuLy8gICAgICAgY29uc3QgcHJldkV4dHJhRGF0YSA9IDA7XG4vLyAgICAgICAvLyByZXR1cm4gcm93cy5zbGljZShzdGFydEluZGV4IC0gcHJldkV4dHJhRGF0YSwgc3RhcnRJbmRleCArIChwYWdlU2l6ZSQudmFsdWUgLSBwcmV2RXh0cmFEYXRhKSk7XG4vLyAgICAgICByZXR1cm4ge1xuLy8gICAgICAgICBzdGFydDogc3RhcnRJbmRleCAtIHByZXZFeHRyYURhdGEsXG4vLyAgICAgICAgIGVuZDogc3RhcnRJbmRleCArIChwYWdlU2l6ZSQudmFsdWUgLSBwcmV2RXh0cmFEYXRhKVxuLy8gICAgICAgfVxuLy8gICAgIH0sIHtcbi8vICAgICAgIGRlcGVuZHNPbjogW3RoaXMucm93SGVpZ2h0JCwgcGFnZVNpemUkXSxcbi8vICAgICAgIHBvc3Rwb25lV2hpbGU6IGNoYWluLm51bWVyaWNWYWx1ZShwYWdlU2l6ZSQpLmlzTGVzc1RoYW4oMSksXG4vLyAgICAgICBjaGFuZ2VkOiAoaXMsIHdhcykgPT4ge1xuLy8gICAgICAgICByZXR1cm4gd2FzPy5zdGFydCAhPT0gaXM/LnN0YXJ0IHx8IHdhcz8uZW5kICE9PSBpcz8uZW5kXG4vLyAgICAgICB9XG4vLyAgICAgfSlcbi8vXG4vLyAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQgPSBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQpLm1hcChyYW5nZSA9PiB7XG4vLyAgICAgICBjb25zdCBwaXhlbE9mZnNldCA9IHRoaXMucm93SGVpZ2h0JC52YWx1ZSAqIHJhbmdlLnN0YXJ0O1xuLy8gICAgICAgcmV0dXJuIHBpeGVsT2Zmc2V0O1xuLy8gICAgIH0sIHsgZGVwZW5kc09uOiB0aGlzLnJvd0hlaWdodCR9KVxuLy9cbi8vICAgICB0aGlzLnRvdGFsQ29udGVudFNpemUkID0gY2hhaW4oZGF0YSQpLmNvdW50KCkubWFwKHJvd0NvdW50ID0+IHtcbi8vICAgICAgIHJldHVybiB0aGlzLnJvd0hlaWdodCQudmFsdWUgKiByb3dDb3VudFxuLy8gICAgIH0sIHtkZXBlbmRzT246IHJvd0hlaWdodCR9KVxuLy9cbi8vICAgICBjaGFpbih0aGlzLnZpcnR1YWxTY3JvbGxSb3dSYW5nZSQpLm1hcFRvTGlzdChyYW5nZSA9PiB7XG4vLyAgICAgICByZXR1cm4gZGF0YSQudmFsdWUuc2xpY2UocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCk7XG4vLyAgICAgfSwge1xuLy8gICAgICAgZGVwZW5kc09uOiBkYXRhJFxuLy8gICAgIH0pLnN1YnNjcmliZSh2aXNpYmxlUm93cyA9PiB7XG4vLyAgICAgICBjb25zb2xlLmxvZyh2aXNpYmxlUm93cylcbi8vICAgICAgIHRoaXMudmlydHVhbFJvd3NPYnNlcnZhYmxlJC5uZXh0KHZpc2libGVSb3dzKVxuLy8gICAgIH0pO1xuLy9cbi8vICAgICB3aGVuKHRoaXMudmlydHVhbFNjcm9sbFNwYWNlclNpemUkKS5jaGFuZ2VzKHNjcm9sbFRvcCA9PiB7XG4vLyAgICAgICB2aWV3cG9ydC5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQoc2Nyb2xsVG9wLCBcInRvLXN0YXJ0XCIpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG4vL1xuLy8gICAgIHdoZW4odGhpcy50b3RhbENvbnRlbnRTaXplJCkuY2hhbmdlcyh0b3RhbFNpemUgPT4ge1xuLy8gICAgICAgdmlld3BvcnQuc2V0VG90YWxDb250ZW50U2l6ZSh0b3RhbFNpemUpO1xuLy8gICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG4vL1xuLy9cbi8vICAgICB0aGlzLnNob3dWaXJ0dWFsU2Nyb2xsT2Zmc2V0ID0gKGluZGV4OiBudW1iZXIsIHJvd0RhdGE6IGFueSk6IGJvb2xlYW4gPT4ge1xuLy8gICAgICAgY29uc3QgaGF2ZVNjcm9sbGVkID0gdGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQudmFsdWUgPiAwO1xuLy8gICAgICAgY29uc3QgZmlyc3RSb3cgPSBpbmRleCA9PT0gMDtcbi8vICAgICAgIHJldHVybiBpbmRleCA9PT0gMCAmJiBoYXZlU2Nyb2xsZWRcbi8vICAgICB9O1xuLy9cbi8vXG4vL1xuLy8gICB9XG4vL1xuLy9cbi8vXG4vLyAgIGRpc3Bvc2UoKTogdm9pZCB7XG4vLyAgICAgdGhpcy5nYXJiYWdlLmRpc3Bvc2UoKTtcbi8vICAgfVxuLy9cbi8vICAgcmVnaXN0ZXJEaXNwb3NhYmxlPFQgZXh0ZW5kcyBEaXNwb3NhYmxlPihkaXNwb3NhYmxlOiBUKTogVCB7XG4vLyAgICAgcmV0dXJuIHRoaXMuZ2FyYmFnZS5yZWdpc3RlckRpc3Bvc2FibGUoZGlzcG9zYWJsZSk7XG4vLyAgIH1cbi8vXG4vL1xuLy8gICBjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiBPYnNlcnZhYmxlPHJlYWRvbmx5IFJvd1tdPiB7XG4vLyAgICAgcmV0dXJuIHRoaXMudmlydHVhbFJvd3NPYnNlcnZhYmxlJDtcbi8vICAgfVxuLy9cbi8vICAgZGlzY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogdm9pZCB7XG4vLyAgICAgLy8gbm9vcFxuLy8gICB9XG4vL1xuLy9cbi8vIH1cblxuZXhwb3J0IGNvbnN0IEFVUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9CVUZGRVJfTVVMVElQTElFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxudW1iZXI+KFwiQVVQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0JVRkZFUl9NVUxUSVBMSUVSXCIpXG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIlthdXBUYWJsZVJvd0F0dHJpYnV0ZXNdXCIsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlUm93QXR0cmlidXRlc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KClcbiAgYXVwVGFibGVSb3dBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGF0dHIgaW4gdGhpcy5hdXBUYWJsZVJvd0F0dHJpYnV0ZXMpIHtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyLCB0aGlzLmF1cFRhYmxlUm93QXR0cmlidXRlc1thdHRyXSk7XG4gICAgfVxuICB9XG59XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF1cC10YWJsZS1ib2R5XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFibGUtYm9keS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGFibGUtYm9keS5jb21wb25lbnQuc2Nzc1wiXSxcbiAgLy8gcHJvdmlkZXJzOiBbe1xuICAvLyAgIHByb3ZpZGU6IFZJUlRVQUxfU0NST0xMX1NUUkFURUdZLCB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gIC8vICAgICByZXR1cm4gaW5qZWN0KFRhYmxlQm9keUNvbXBvbmVudCkudmlydHVhbFNjcm9sbFN0cmF0ZWd5XG4gIC8vICAgfVxuICAvLyB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVCb2R5Q29tcG9uZW50PFJvdz4gZXh0ZW5kcyBSZXNpemVBd2FyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgQFByb3hpZnkoKVxuICBhY2Nlc3NvciBkYXRhJCA9IHByb3hpZnkoTGlzdE1vZGVsPFJvdz4pO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3IgdGFibGVNb2RlbCA9IHByb3hpZnkoQWJzdHJhY3RUYWJsZU1vZGVsPFJvdz4pO1xuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3Igc2hvd0hlYWRlciQgPSBwcm94aWZ5KFZhbHVlTW9kZWw8Ym9vbGVhbj4pO1xuXG4gIEBJbnB1dCgpIEBTdG9yZUluVmFsdWVNb2RlbCgpXG4gIGFjY2Vzc29yIHNob3dIZWFkZXIgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHRyYWNrQnk6IChpbmRleDogbnVtYmVyLCBpdGVtOiBSb3cpID0+IGFueVxuXG4gIEBJbnB1dCgpIEBQcm94aWZ5KClcbiAgYWNjZXNzb3Igc2Nyb2xsTW9kZSQ6IFZhbHVlTW9kZWw8VGFibGVCb2R5Q29tcG9uZW50LlNjcm9sbE1vZGU+ID0gcHJveGlmeShWYWx1ZU1vZGVsPFRhYmxlQm9keUNvbXBvbmVudC5TY3JvbGxNb2RlPik7XG5cbiAgQElucHV0KCkgQFN0b3JlSW5WYWx1ZU1vZGVsKClcbiAgQEhvc3RCaW5kaW5nKFwiYXR0ci5zY3JvbGxNb2RlXCIpXG4gIGFjY2Vzc29yIHNjcm9sbE1vZGU6IFRhYmxlQm9keUNvbXBvbmVudC5TY3JvbGxNb2RlID0gXCJub25lXCI7XG5cbiAgY29sdW1ucyQ6IExpc3RNb2RlbENoYWluPENvbHVtbk1vZGVsPFJvdz4+O1xuICBjb2x1bW5JZHMkOiBMaXN0TW9kZWxDaGFpbjxzdHJpbmc+O1xuXG4gIHByaXZhdGUgY29sdW1uc0J5SWQkOiBNYXBNb2RlbENoYWluPHN0cmluZywgQ29sdW1uTW9kZWw8Um93Pj47XG5cblxuICAvLyBUT0RPOiBzdXBwb3J0IHVzZXIgZGVmaW5lZCBoZWFkZXIgYW5kIHJvdyBoZWlnaHRzIHZpYSBjc3MgdmFycy5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhlYWRlckhlaWdodCQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8bnVtYmVyPigyOSk7XG4gIHByb3RlY3RlZCByb3dIZWlnaHQkID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPG51bWJlcj4oNDApO1xuXG4gIEBIb3N0QmluZGluZyhcImNsYXNzXCIpXG4gIGJhc2VDc3NDbGFzcyA9IFwiYXVwLXRhYmxlLWNvbXBvbmVudFwiO1xuXG4gIHByb3RlY3RlZCB2aXJ0dWFsU2Nyb2xsRGF0YVNvdXJjZSA9IG5ldyBUYWJsZVZpcnR1YWxTY3JvbGxEYXRhU291cmNlPFJvdz4oKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFVUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9CVUZGRVJfTVVMVElQTElFUikgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGJ1ZmZlck11bHRpcGxpZXI6bnVtYmVyID0gMSkge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qge2NoYWluLCB3aGVuLCBvYnNlcnZlfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcblxuICAgIGNvbnN0IGFjdHVhbEhlYWRlckhlaWdodCQgPSBjaGFpbih0aGlzLnNob3dIZWFkZXIkKS5tYXAoc2hvdyA9PiB7XG4gICAgICByZXR1cm4gc2hvdyA/IHRoaXMuaGVhZGVySGVpZ2h0JC52YWx1ZSA6IDA7XG4gICAgfSwge2RlcGVuZHNPbjogdGhpcy5oZWFkZXJIZWlnaHQkfSk7XG5cbiAgICAvLyB0aGlzLnRhYmxlQm9keUhlaWdodCQgPSBjaGFpbih0aGlzLmJvdW5kcyQpLm1hcChib3VuZHMgPT4ge1xuICAgIC8vICAgcmV0dXJuIChib3VuZHMuaGVpZ2h0IC0gYWN0dWFsSGVhZGVySGVpZ2h0JC52YWx1ZSlcbiAgICAvLyB9LCB7ZGVwZW5kc09uOiBhY3R1YWxIZWFkZXJIZWlnaHQkfSlcbiAgICAvLyAgIC5vdGhlcndpc2UoMCk7XG5cblxuICAgIC8vIGNvbnN0IHZpc2libGVSb3dDb3VudCQgPSBjaGFpbih0aGlzLmJvdW5kcyQpLm1hcChib3VuZHMgPT4ge1xuICAgIC8vICAgLy8gVE9ETzogdGhpcyBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IGFueSBjc3Mgc3R5bGluZyBhZGp1c3RtZW50cyBldGMuICBXaWxsIGludmVzdGlnYXRlIGlmIGl0J3MgYW4gaXNzdWUuXG4gICAgLy8gICBjb25zdCByYXdSb3dDb3VudCA9IChib3VuZHMuaGVpZ2h0IC0gYWN0dWFsSGVhZGVySGVpZ2h0JC52YWx1ZSkgLyB0aGlzLnJvd0hlaWdodCQudmFsdWU7XG4gICAgLy8gICByZXR1cm4gcmF3Um93Q291bnQgPCAxID8gMCA6IE1hdGguZmxvb3IocmF3Um93Q291bnQpO1xuICAgIC8vIH0sIHtcbiAgICAvLyAgIGRlcGVuZHNPbjogW2FjdHVhbEhlYWRlckhlaWdodCQsIHRoaXMucm93SGVpZ2h0JF0sXG4gICAgLy8gICBwb3N0cG9uZVdoaWxlOiBjaGFpbih0aGlzLmJvdW5kcyQpLnBsdWNrTnVtZXJpYyhcImhlaWdodFwiKS5pc0xlc3NUaGFuKDEpXG4gICAgLy8gfSk7XG5cbiAgICAvLyAvLyBjb25zdCBwYWdlU2l6ZSQgPSBjaGFpbih2aXNpYmxlUm93Q291bnQkKVxuICAgIC8vIC8vICAgLm1hcChjb3VudCA9PiAyICogY291bnQpLm90aGVyd2lzZSgwKVxuICAgIC8vIGNvbnN0IHBhZ2VTaXplJCA9IFZhbHVlTW9kZWwuY29uc3RhbnQoMTIpXG5cblxuICAgIHdoZW4odGhpcy5kYXRhJCkuY2hhbmdlcyhpcyA9PiB7XG4gICAgICB0aGlzLnZpcnR1YWxTY3JvbGxEYXRhU291cmNlLmRhdGEgPSBpcztcbiAgICAgIHRoaXMuc2NoZWR1bGVUYWJsZUhlaWdodENoZWNrKCk7XG4gICAgfSwge2luaXRpYWxWYWx1ZTogXCJldmFsdWF0ZVwifSlcblxuXG4gICAgdGhpcy5vbkluaXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5zJCA9IGNoYWluKHRoaXMudGFibGVNb2RlbC5jb2x1bW5zKTtcbiAgICAgIHRoaXMuY29sdW1uSWRzJCA9IGNoYWluKHRoaXMuY29sdW1ucyQpLnBsdWNrKFwiY29sdW1uSWRcIik7XG4gICAgICB0aGlzLmNvbHVtbnNCeUlkJCA9IGNoYWluKHRoaXMuY29sdW1ucyQpLmluZGV4QnkoJ2NvbHVtbklkJyk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0eG8gPSBuZXcgVHJhbnNhY3Rpb25PYnNlcnZlcih7dmVyYm9zZTogZmFsc2V9KS5vbkV2ZW50KGUgPT4gY29uc29sZS5sb2coZS5uYW1lLCBlLnBheWxvYWQpKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy52aXJ0dWFsU2Nyb2xsUm93UmFuZ2UkJywgdGhpcy52aXJ0dWFsU2Nyb2xsUm93UmFuZ2UkKTtcbiAgICAvLyB0eG8ub2JzZXJ2ZSgndGhpcy52aXJ0dWFsU2Nyb2xsU3BhY2VyU2l6ZSQnLCB0aGlzLnZpcnR1YWxTY3JvbGxTcGFjZXJTaXplJCk7XG4gICAgLy8gdHhvLm9ic2VydmUoJ3RoaXMudmlydHVhbFJvd3MkJywgdGhpcy52aXJ0dWFsUm93cyQpO1xuICAgIC8vIHR4by5vYnNlcnZlKCd0aGlzLnRhYmxlQm9keUhlaWdodCQnLCB0aGlzLnRhYmxlQm9keUhlaWdodCQpO1xuXG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5oaWRlLWhlYWRlclwiKVxuICBnZXQgaGlkZUhlYWRlcigpIHtcbiAgICByZXR1cm4gIXRoaXMuc2hvd0hlYWRlcjtcbiAgfVxuXG4gIGlzRWRpdGluZyhyb3c6IFJvdyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVNb2RlbC5nZXRFZGl0U2Vzc2lvbkZvcihyb3cpO1xuICB9XG5cbiAgbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4sIHJvdzogUm93KSB7XG4gICAgdGhpcy50YWJsZU1vZGVsLl9ub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW5Nb2RlbCwgcm93KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG5cbiAgaXNGaXJzdFZpc2libGVDb2x1bW4oY29sdW1uSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwuZmlyc3RWaXNpYmxlQ29sdW1uJC5xdWVyeSgpLnZhbHVlPy5jb2x1bW5JZCA9PT0gY29sdW1uSWQ7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuXG4gIGlzTGFzdFZpc2libGVDb2x1bW4oY29sdW1uSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRhYmxlTW9kZWwubGFzdFZpc2libGVDb2x1bW4kLnF1ZXJ5KCkudmFsdWU/LmNvbHVtbklkID09PSBjb2x1bW5JZDtcbiAgfVxuXG4gIGdldENvbHVtbkNsYXNzZXMoY29sdW1uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbYGF1cC1jb2wtJHt0aGlzLmNvbHVtbnNCeUlkJC5nZXQoY29sdW1uSWQpLmRhc2hlcmlzZWRDb2x1bW5JZH1gXTtcbiAgICBpZiAodGhpcy5pc0ZpcnN0VmlzaWJsZUNvbHVtbihjb2x1bW5JZCkpIHtcbiAgICAgIGNsYXNzZXMucHVzaChcImZpcnN0LXZpc2libGUtY29sdW1uXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0xhc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkKSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKFwibGFzdC12aXNpYmxlLWNvbHVtblwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzZXM7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlVGFibGVIZWlnaHRDaGVjayh3YWl0TWlsbGlzID0gNTApIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRib2R5ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcInRib2R5XCIpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgYm9keUhlaWdodCA9IHRib2R5Lm9mZnNldEhlaWdodDtcbiAgICAgIGlmICh0aGlzLmRhdGEkLmxlbmd0aCA+IDAgJiYgYm9keUhlaWdodCA8IHRoaXMucm93SGVpZ2h0JC52YWx1ZSkge1xuICAgICAgICAvLyBIYWNrcyB0byBnZXQgb3VyIHZpcnR1YWwgc2Nyb2xsIHRvIHJlcGFpbnRcbiAgICAgICAgTG9nZ2VyLmdldCh0aGlzKS5sb2coYHJvd0NvdW50PSR7dGhpcy5kYXRhJC5sZW5ndGh9LCBib2R5SGVpZ2h0PSR7Ym9keUhlaWdodH0gLT4gdnJpdHVhbCB0YWJsZSBub3QgcmVuZGVyaW5nLCB0cmlnZ2VyaW5nIHJlc2l6ZSB0byBmb3JjZSByZXBhaW50YClcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSk7XG4gICAgICAgIGlmICh3YWl0TWlsbGlzIDwgNTAwKSB7XG4gICAgICAgICAgdGhpcy5zY2hlZHVsZVRhYmxlSGVpZ2h0Q2hlY2sod2FpdE1pbGxpcyArIDUwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHdhaXRNaWxsaXMpXG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBUYWJsZUJvZHlDb21wb25lbnQge1xuICBleHBvcnQgdHlwZSBTY3JvbGxNb2RlID0gXCJub25lXCIgfCBcImNsYXNzaWNcIiB8IFwidmlydHVhbFwiO1xuXG59XG4iLCJcbjxkaXYgY2xhc3M9XCJjbGFzc2ljLXNjcm9sbC1jb250YWluZXJcIiAqbmdJZj1cInNjcm9sbE1vZGUkLnZhbHVlICE9PSAndmlydHVhbCdcIj5cbiAgPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhJC52YWx1ZVwiIFt0cmFja0J5XT1cInRyYWNrQnlcIiBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zJC52YWx1ZTsgaW5kZXggYXMgaW5kZXg7IGZpcnN0IGFzIGZpcnN0OyBsYXN0IGFzIGxhc3RcIlxuICAgICAgICAgICAgICAgICAgbWF0Q29sdW1uRGVmPVwie3tjb2x1bW4uY29sdW1uSWR9fVwiPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbY2xhc3MuZmxleF09XCJjb2x1bW4uaXNGbGV4KClcIiBbY2xhc3MuaGlkZV09XCIhY29sdW1uLmlzVmlzaWJsZSgpXCI+XG4gICAgICAgIDxhdXAtdGFibGUtaGVhZGVyLWNlbGwgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWlkXT1cImNvbHVtbi5jb2x1bW5JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1oZWFkZXItY2VsbD5cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgKGNsaWNrKT1cIm5vdGlmeUNlbGxDbGlja2VkKGNvbHVtbiwgcm93KVwiXG4gICAgICAgICAgW2NsYXNzLmVuYWJsZS1jdXJzb3JdPVwidGFibGVNb2RlbC5pc0N1cnNvckVuYWJsZWQoY29sdW1uKVwiXG4gICAgICAgICAgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCJcbiAgICAgICAgICBbY2xhc3MuaGlkZV09XCIhY29sdW1uLmlzVmlzaWJsZSgpXCJcbiAgICAgID5cbiAgICAgICAgPGF1cC10YWJsZS1jZWxsIFtjb2x1bW5dPVwiJGFueShjb2x1bW4pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJsZU1vZGVsXT1cIiRhbnkodGFibGVNb2RlbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRTZXNzaW9uXT1cIiRhbnkodGFibGVNb2RlbC5nZXRFZGl0U2Vzc2lvbkZvcihyb3cpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWlkXT1cImNvbHVtbi5jb2x1bW5JZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0Q29sdW1uQ2xhc3Nlcyhjb2x1bW4uY29sdW1uSWQpXCJcbiAgICAgICAgPjwvYXVwLXRhYmxlLWNlbGw+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5JZHMkLnZhbHVlOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBjb2x1bW5JZHMkLnZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgW25nQ2xhc3NdPVwidGFibGVNb2RlbC5nZXRSb3dDbGFzc2VzKHJvdylcIlxuICAgICAgICBbY2xhc3MuZW5hYmxlLWhvdmVyXT1cInRhYmxlTW9kZWwuaXNIb3ZlckVuYWJsZWQoKVwiXG4gICAgICAgIFthdXBUYWJsZVJvd0F0dHJpYnV0ZXNdPVwidGFibGVNb2RlbC5nZXRSb3dBdHRyaWJ1dGVzKHJvdylcIlxuICAgICAgICBbYXR0ci5hdXAtcm93LWlkXT1cInRyYWNrQnkoaSwgcm93KVwiXG4gICAgPjwvdHI+XG5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICAqbmdJZj1cInNjcm9sbE1vZGUkLnZhbHVlID09PSAndmlydHVhbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R2c0l0ZW1TaXplXT1cInJvd0hlaWdodCQudmFsdWVcIiBbaGVhZGVySGVpZ2h0XT1cImhlYWRlckhlaWdodCQudmFsdWVcIiBbYnVmZmVyTXVsdGlwbGllcl09XCJidWZmZXJNdWx0aXBsaWVyXCI+XG4gIDx0YWJsZSBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwidmlydHVhbFNjcm9sbERhdGFTb3VyY2VcIiBbdHJhY2tCeV09XCJ0cmFja0J5XCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1ucyQudmFsdWU7IGluZGV4IGFzIGluZGV4OyBmaXJzdCBhcyBmaXJzdDsgbGFzdCBhcyBsYXN0XCJcbiAgICAgICAgICAgICAgICAgIG1hdENvbHVtbkRlZj1cInt7Y29sdW1uLmNvbHVtbklkfX1cIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLmZsZXhdPVwiY29sdW1uLmlzRmxleCgpXCIgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiPlxuICAgICAgICA8YXVwLXRhYmxlLWhlYWRlci1jZWxsIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb2x1bW4taW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJnZXRDb2x1bW5DbGFzc2VzKGNvbHVtbi5jb2x1bW5JZClcIlxuICAgICAgICA+PC9hdXAtdGFibGUtaGVhZGVyLWNlbGw+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIChjbGljayk9XCJub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW4sIHJvdylcIlxuICAgICAgICAgIFtjbGFzcy5lbmFibGUtY3Vyc29yXT1cInRhYmxlTW9kZWwuaXNDdXJzb3JFbmFibGVkKGNvbHVtbilcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4XT1cImNvbHVtbi5pc0ZsZXgoKVwiXG4gICAgICAgICAgW2NsYXNzLmhpZGVdPVwiIWNvbHVtbi5pc1Zpc2libGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxhdXAtdGFibGUtY2VsbCBbY29sdW1uXT1cIiRhbnkoY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVNb2RlbF09XCIkYW55KHRhYmxlTW9kZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0U2Vzc2lvbl09XCIkYW55KHRhYmxlTW9kZWwuZ2V0RWRpdFNlc3Npb25Gb3Iocm93KSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29sdW1uLWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmNvbHVtbi1pZF09XCJjb2x1bW4uY29sdW1uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImdldENvbHVtbkNsYXNzZXMoY29sdW1uLmNvbHVtbklkKVwiXG4gICAgICAgID48L2F1cC10YWJsZS1jZWxsPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uSWRzJC52YWx1ZTsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogY29sdW1uSWRzJC52YWx1ZTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInRhYmxlTW9kZWwuZ2V0Um93Q2xhc3Nlcyhyb3cpXCJcbiAgICAgICAgW2NsYXNzLmVuYWJsZS1ob3Zlcl09XCJ0YWJsZU1vZGVsLmlzSG92ZXJFbmFibGVkKClcIlxuICAgICAgICBbYXVwVGFibGVSb3dBdHRyaWJ1dGVzXT1cInRhYmxlTW9kZWwuZ2V0Um93QXR0cmlidXRlcyhyb3cpXCJcbiAgICAgICAgW2F0dHIuYXVwLXJvdy1pZF09XCJ0cmFja0J5KGksIHJvdylcIlxuICAgID48L3RyPlxuXG4gIDwvdGFibGU+XG48L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuIl19