@fundamental-ngx/platform 0.45.1 → 0.46.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +1 -1
  2. package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +1 -1
  3. package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +1 -1
  4. package/esm2022/approval-flow/approval-flow.component.mjs +2 -2
  5. package/esm2022/dynamic-page/dynamic-page.component.mjs +2 -2
  6. package/esm2022/feed-input/feed-input.component.mjs +2 -2
  7. package/esm2022/form/checkbox/checkbox.component.mjs +14 -9
  8. package/esm2022/form/checkbox/checkbox.module.mjs +4 -8
  9. package/esm2022/form/checkbox-group/checkbox-group.component.mjs +7 -7
  10. package/esm2022/form/checkbox-group/checkbox-group.module.mjs +5 -9
  11. package/esm2022/form/combobox/combobox/combobox.component.mjs +1 -1
  12. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +2 -2
  13. package/esm2022/form/form-group/form-group.component.mjs +2 -2
  14. package/esm2022/form/input-group/input-group.component.mjs +2 -2
  15. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +2 -2
  16. package/esm2022/form/select/select/select.component.mjs +2 -2
  17. package/esm2022/form/step-input/number/number-step-input.component.mjs +2 -2
  18. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +2 -2
  19. package/esm2022/link/link.component.mjs +2 -2
  20. package/esm2022/list/display-list-item/display-list-item.component.mjs +1 -1
  21. package/esm2022/list/list.component.mjs +2 -2
  22. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +2 -2
  23. package/esm2022/list/object-list-item/object-list-item.component.mjs +2 -2
  24. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +1 -1
  25. package/esm2022/menu/menu-item.component.mjs +2 -2
  26. package/esm2022/menu/menu.component.mjs +2 -2
  27. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +15 -16
  28. package/esm2022/message-popover/components/message-view/message-view.component.mjs +21 -9
  29. package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +6 -3
  30. package/esm2022/message-popover/message-popover.component.mjs +31 -11
  31. package/esm2022/message-popover/models/message-popover.interface.mjs +1 -1
  32. package/esm2022/message-popover/platform-message-popover.module.mjs +6 -65
  33. package/esm2022/message-popover/utils.mjs +18 -1
  34. package/esm2022/object-attribute/object-attribute.component.mjs +2 -2
  35. package/esm2022/page-footer/page-footer.component.mjs +2 -2
  36. package/esm2022/search-field/search-field.component.mjs +3 -3
  37. package/esm2022/slider/slider.component.mjs +13 -8
  38. package/esm2022/slider/slider.module.mjs +5 -9
  39. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +1 -1
  40. package/esm2022/split-menu-button/split-menu-button.component.mjs +2 -2
  41. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +1 -1
  42. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +1 -1
  43. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +1 -1
  44. package/esm2022/table/components/table-row/table-row.component.mjs +1 -1
  45. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +1 -1
  46. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +1 -1
  47. package/esm2022/table/table.component.mjs +2 -2
  48. package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +1 -1
  49. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +1 -1
  50. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +1 -1
  51. package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +1 -1
  52. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +1 -1
  53. package/esm2022/variant-management/variant-management.component.mjs +2 -2
  54. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +5 -5
  55. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  56. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +2 -2
  57. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  58. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +2 -2
  59. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  60. package/fesm2022/fundamental-ngx-platform-form.mjs +54 -52
  61. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  62. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +2 -2
  63. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  64. package/fesm2022/fundamental-ngx-platform-link.mjs +2 -2
  65. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-platform-list.mjs +8 -8
  67. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  68. package/fesm2022/fundamental-ngx-platform-menu.mjs +4 -4
  69. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  70. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +92 -100
  71. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  72. package/fesm2022/fundamental-ngx-platform-object-attribute.mjs +2 -2
  73. package/fesm2022/fundamental-ngx-platform-object-attribute.mjs.map +1 -1
  74. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -2
  75. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  76. package/fesm2022/fundamental-ngx-platform-search-field.mjs +2 -2
  77. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  78. package/fesm2022/fundamental-ngx-platform-slider.mjs +15 -13
  79. package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
  80. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +1 -1
  81. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  82. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +2 -2
  83. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  84. package/fesm2022/fundamental-ngx-platform-table.mjs +8 -8
  85. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  86. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +1 -1
  87. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +1 -1
  88. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +2 -2
  89. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  90. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +4 -4
  91. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  92. package/form/checkbox/checkbox.component.d.ts +3 -1
  93. package/form/checkbox/checkbox.module.d.ts +5 -8
  94. package/form/checkbox-group/checkbox-group.component.d.ts +1 -1
  95. package/form/checkbox-group/checkbox-group.module.d.ts +4 -7
  96. package/fundamental-ngx-platform-v0.46.0-rc.0.tgz +0 -0
  97. package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +1 -3
  98. package/message-popover/components/message-view/message-view.component.d.ts +1 -1
  99. package/message-popover/directives/message-popover-form-item.directive.d.ts +6 -3
  100. package/message-popover/message-popover.component.d.ts +3 -4
  101. package/message-popover/models/message-popover.interface.d.ts +2 -0
  102. package/message-popover/platform-message-popover.module.d.ts +1 -16
  103. package/message-popover/utils.d.ts +7 -0
  104. package/package.json +4 -4
  105. package/schematics/ng-add/index.js +1 -1
  106. package/slider/slider.component.d.ts +3 -1
  107. package/slider/slider.module.d.ts +3 -6
  108. package/fundamental-ngx-platform-v0.45.1.tgz +0 -0
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChildren, DestroyRef, Inject, Input, QueryList, ViewEncapsulation } from '@angular/core';
2
- import { ControlContainer, FormGroup, NgModel } from '@angular/forms';
3
- import { PlatformFormFieldControl } from '@fundamental-ngx/platform/shared';
2
+ import { ControlContainer, FormGroup } from '@angular/forms';
3
+ import { FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms';
4
4
  import { BehaviorSubject, filter, startWith, Subject, Subscription, switchMap, zip } from 'rxjs';
5
5
  import { FDP_MESSAGE_POPOVER_CONFIG } from '../../default-config';
6
6
  import { MessagePopoverFormItemDirective } from '../../directives/message-popover-form-item.directive';
@@ -57,9 +57,7 @@ export class MessagePopoverFormWrapperComponent {
57
57
  if (this._ngForms.length > 0) {
58
58
  return;
59
59
  }
60
- this._ngForms = this._projectedForm?.toArray();
61
- this._startListeningForErrors();
62
- this._projectedForm?.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
60
+ this._projectedForm?.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {
63
61
  this._ngForms = this._projectedForm.toArray();
64
62
  this._startListeningForErrors();
65
63
  });
@@ -151,11 +149,15 @@ export class MessagePopoverFormWrapperComponent {
151
149
  .filter((error) => configErrors.includes(error))
152
150
  .forEach((errorKey) => {
153
151
  const errorObj = control.errors[errorKey];
154
- const errorTextModel = this._getConfigErrorModel(errorKey);
152
+ const errorTextModel = this._getConfigErrorModel(errorKey, field.errorTypes);
153
+ const errorConfig = field?.errorTypes ? field?.errorTypes[errorKey] : null;
154
+ const errorState = errorConfig && this._isAdvancedError(errorConfig) && errorConfig.type
155
+ ? errorConfig.type
156
+ : 'error';
155
157
  const error = {
156
158
  name: controlName,
157
159
  type: errorTextModel.type,
158
- state: convertFormState('error'),
160
+ state: convertFormState(errorState),
159
161
  fieldName: field?.label ?? '',
160
162
  element: field?.elementRef,
161
163
  heading: {
@@ -288,8 +290,8 @@ export class MessagePopoverFormWrapperComponent {
288
290
  return parts.join(', ');
289
291
  }
290
292
  /** @hidden */
291
- _getConfigErrorModel(errorKey) {
292
- const configError = this._config.errors[errorKey];
293
+ _getConfigErrorModel(errorKey, customErrorTypes) {
294
+ const configError = customErrorTypes && customErrorTypes[errorKey] ? customErrorTypes[errorKey] : this._config.errors[errorKey];
293
295
  const isPlainError = !this._isAdvancedError(configError);
294
296
  const errorType = isPlainError ? 'error' : configError.type;
295
297
  const headingMessage = isPlainError ? configError : configError.heading;
@@ -305,23 +307,20 @@ export class MessagePopoverFormWrapperComponent {
305
307
  return !!error && typeof error !== 'string';
306
308
  }
307
309
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormWrapperComponent, deps: [{ token: i0.DestroyRef }, { token: FDP_MESSAGE_POPOVER_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
308
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverFormWrapperComponent, selector: "fdp-message-popover-form-wrapper", inputs: { forms: "forms", formFields: "formFields" }, queries: [{ propertyName: "_projectedForm", predicate: ControlContainer, descendants: true }, { propertyName: "_projectedFormItems", predicate: NgModel, descendants: true }, { propertyName: "_projectedFormFieldControls", predicate: PlatformFormFieldControl, descendants: true }, { propertyName: "_directiveItems", predicate: MessagePopoverFormItemDirective, descendants: true }], exportAs: ["messagePopoverWrapper"], ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverFormWrapperComponent, isStandalone: true, selector: "fdp-message-popover-form-wrapper", inputs: { forms: "forms", formFields: "formFields" }, queries: [{ propertyName: "_projectedForm", predicate: ControlContainer, descendants: true }, { propertyName: "_projectedFormFieldControls", predicate: FD_FORM_FIELD_CONTROL, descendants: true }, { propertyName: "_directiveItems", predicate: MessagePopoverFormItemDirective, descendants: true }], exportAs: ["messagePopoverWrapper"], ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
309
311
  }
310
312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormWrapperComponent, decorators: [{
311
313
  type: Component,
312
- args: [{ selector: 'fdp-message-popover-form-wrapper', exportAs: 'messagePopoverWrapper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-content></ng-content>\n" }]
314
+ args: [{ selector: 'fdp-message-popover-form-wrapper', exportAs: 'messagePopoverWrapper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<ng-content></ng-content>\n" }]
313
315
  }], ctorParameters: function () { return [{ type: i0.DestroyRef }, { type: undefined, decorators: [{
314
316
  type: Inject,
315
317
  args: [FDP_MESSAGE_POPOVER_CONFIG]
316
318
  }] }]; }, propDecorators: { _projectedForm: [{
317
319
  type: ContentChildren,
318
320
  args: [ControlContainer, { descendants: true }]
319
- }], _projectedFormItems: [{
320
- type: ContentChildren,
321
- args: [NgModel, { descendants: true }]
322
321
  }], _projectedFormFieldControls: [{
323
322
  type: ContentChildren,
324
- args: [PlatformFormFieldControl, { descendants: true }]
323
+ args: [FD_FORM_FIELD_CONTROL, { descendants: true }]
325
324
  }], _directiveItems: [{
326
325
  type: ContentChildren,
327
326
  args: [MessagePopoverFormItemDirective, { descendants: true }]
@@ -330,4 +329,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
330
329
  }], formFields: [{
331
330
  type: Input
332
331
  }] } });
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvbWVzc2FnZS1wb3BvdmVyL2NvbXBvbmVudHMvbWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyL21lc3NhZ2UtcG9wb3Zlci1mb3JtLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxTQUFTLEVBQThCLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25ILE9BQU8sRUFHSCx3QkFBd0IsRUFDM0IsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwwQkFBMEIsRUFBbUQsTUFBTSxzQkFBc0IsQ0FBQztBQUNuSCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQU92RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0s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QkFVbkUsS0FBSztzQkFEUixLQUFLO2dCQWNGLFVBQVU7c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0Zvcm0sIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtU3RhdGVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQge1xuICAgIEZvcm1GaWVsZEVycm9yRGlyZWN0aXZlQ29udGV4dCxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZCxcbiAgICBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIHN0YXJ0V2l0aCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkRQX01FU1NBR0VfUE9QT1ZFUl9DT05GSUcsIE1lc3NhZ2VQb3BvdmVyQ29uZmlnLCBNZXNzYWdlUG9wb3ZlckVycm9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vZGVmYXVsdC1jb25maWcnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbWVzc2FnZS1wb3BvdmVyLWZvcm0taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBNZXNzYWdlUG9wb3ZlckVudHJ5LFxuICAgIE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cCxcbiAgICBNZXNzYWdlUG9wb3ZlckVycm9yVGV4dFxufSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLWVudHJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlcldyYXBwZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLXdyYXBwZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IGNvbnZlcnRGb3JtU3RhdGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlciB9IGZyb20gJy4uLy4uL21vZGVscy9tZXNzYWdlLXBvcG92ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVBvcG92ZXJGb3JtID0gTmdGb3JtIHwgRm9ybUdyb3VwRGlyZWN0aXZlO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gICAgZXhwb3J0QXM6ICdtZXNzYWdlUG9wb3ZlcldyYXBwZXInLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVBvcG92ZXJGb3JtV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE1lc3NhZ2VQb3BvdmVyV3JhcHBlciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQ29udHJvbENvbnRhaW5lciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plY3RlZEZvcm06IFF1ZXJ5TGlzdDxNZXNzYWdlUG9wb3ZlckZvcm0+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihOZ01vZGVsLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJvamVjdGVkRm9ybUl0ZW1zITogUXVlcnlMaXN0PE5nTW9kZWw+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzITogUXVlcnlMaXN0PFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RpcmVjdGl2ZUl0ZW1zITogUXVlcnlMaXN0PE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqIE1lc3NhZ2UgUG9wb3ZlciBpbnN0YW5jZS4gKi9cbiAgICBtZXNzYWdlUG9wb3ZlciQgPSBuZXcgU3ViamVjdDxNZXNzYWdlUG9wb3Zlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIFVzZXItcGFzc2VkIGZvcm1zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZvcm1zKGZvcm1zOiBNZXNzYWdlUG9wb3ZlckZvcm0gfCBNZXNzYWdlUG9wb3ZlckZvcm1bXSkge1xuICAgICAgICBpZiAoIWZvcm1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZvcm1zKSkge1xuICAgICAgICAgICAgZm9ybXMgPSBbZm9ybXNdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25nRm9ybXMgPSBmb3JtcztcbiAgICAgICAgdGhpcy5fc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTtcbiAgICB9XG5cbiAgICAvKiogVXNlci1wYXNzZWQgZm9ybSBmaWVsZHMuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZm9ybUZpZWxkcyh2YWx1ZTogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10pIHtcbiAgICAgICAgdGhpcy5fZm9ybUZpZWxkcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1GaWVsZEVycm9ycyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm1GaWVsZHMoKTogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdPihbXSk7XG5cbiAgICAvKipcbiAgICAgKiBFcnJvciBtb2RlbHMgT2JzZXJ2YWJsZS4gRW1pdHRlZCB3aGVuIGZvcm0gc3VibWl0dGVkIGFuZCBjb250YWlucyBpbnZhbGlkIGZpZWxkcy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGVycm9ycyA9IHRoaXMuX2Vycm9ycyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1GaWVsZHM6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1FcnJvcnNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbmdGb3JtczogKE5nRm9ybSB8IEZvcm1Hcm91cERpcmVjdGl2ZSlbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybVN1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgQEluamVjdChGRFBfTUVTU0FHRV9QT1BPVkVSX0NPTkZJRykgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBNZXNzYWdlUG9wb3ZlckNvbmZpZ1xuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBGb3JtcyBhcmUgcGFzc2VkIHZpYSBpbnB1dCBwcm9wZXJ0eS5cbiAgICAgICAgaWYgKHRoaXMuX25nRm9ybXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25nRm9ybXMgPSB0aGlzLl9wcm9qZWN0ZWRGb3JtPy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuX3N0YXJ0TGlzdGVuaW5nRm9yRXJyb3JzKCk7XG4gICAgICAgIHRoaXMuX3Byb2plY3RlZEZvcm0/LmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9uZ0Zvcm1zID0gdGhpcy5fcHJvamVjdGVkRm9ybS50b0FycmF5KCk7XG4gICAgICAgICAgICB0aGlzLl9zdGFydExpc3RlbmluZ0ZvckVycm9ycygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIE1lc3NhZ2UgUG9wb3ZlciBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAgICovXG4gICAgc2V0TWVzc2FnZVBvcG92ZXIobWVzc2FnZVBvcG92ZXI6IE1lc3NhZ2VQb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVzc2FnZVBvcG92ZXIkLm5leHQobWVzc2FnZVBvcG92ZXIpO1xuICAgICAgICAvLyB0aGlzLm1lc3NhZ2VQb3BvdmVyID0gbWVzc2FnZVBvcG92ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvZ3JhbW1hdGljYWxseSBhZGQgbmV3IGZvcm0gdG8gYXJyYXkgb2YgZm9ybXMuXG4gICAgICogQHBhcmFtIGZvcm1zXG4gICAgICovXG4gICAgYWRkRm9ybXMoZm9ybXM6IE1lc3NhZ2VQb3BvdmVyRm9ybSB8IE1lc3NhZ2VQb3BvdmVyRm9ybVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1zQXJyYXkgPSBBcnJheS5pc0FycmF5KGZvcm1zKSA/IGZvcm1zIDogW2Zvcm1zXTtcbiAgICAgICAgdGhpcy5fbmdGb3Jtcy5wdXNoKC4uLmZvcm1zQXJyYXkpO1xuICAgICAgICB0aGlzLl9zdGFydExpc3RlbmluZ0ZvckVycm9ycygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2dyYW1tYXRpY2FsbHkgYWRkIG5ldyBmb3JtIGZpZWxkcyB0byBhcnJheSBvZiBsaXN0ZW5lZCBmb3JtIGZpZWxkcy5cbiAgICAgKiBAcGFyYW0gZm9ybUZpZWxkc1xuICAgICAqL1xuICAgIGFkZEZvcm1GaWVsZHMoZm9ybUZpZWxkczogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUZpZWxkcy5wdXNoKC4uLmZvcm1GaWVsZHMpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1GaWVsZEVycm9ycyh0aGlzLl9mb3JtRmllbGRzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0ZW5zIHRvIHRoZSBmb3JtIHN1Ym1pc3Npb24gYW5kIGNvbGxlY3RzIGZvcm0gY29udHJvbCBlcnJvcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbmdGb3Jtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Zvcm1FcnJvcnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2Vycm9ycyQubmV4dChbXSk7XG5cbiAgICAgICAgY29uc3QgZm9ybVN1Ym1pdEV2ZW50cyA9IHRoaXMuX25nRm9ybXMubWFwKChmb3JtKSA9PlxuICAgICAgICAgICAgZm9ybS5uZ1N1Ym1pdC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3JtLnN0YXR1c0NoYW5nZXMhLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoZm9ybS5zdGF0dXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0dXM6IHN0cmluZykgPT4gc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT09ICdwZW5kaW5nJylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9mb3JtRXJyb3JzU3Vic2NyaXB0aW9uID0gemlwKC4uLmZvcm1TdWJtaXRFdmVudHMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtU3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvcnMgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaXJlY3RpdmVJdGVtcy5sZW5ndGggPiAwID8gdGhpcy5fY29sbGVjdFBsYWluRm9ybURhdGEoKSA6IHRoaXMuX2NvbGxlY3RBZHZhbmNlZEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvcnMkLm5leHQoZXJyb3JzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzLnRvQXJyYXkoKSk7XG5cbiAgICAgICAgdGhpcy5fcHJvamVjdGVkRm9ybUZpZWxkQ29udHJvbHM/LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzLnRvQXJyYXkoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Gb3JtRmllbGRFcnJvcnMoZmllbGRzOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMuX2Zvcm1JdGVtRXJyb3JzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgICAgIGZpZWxkcz8uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtRXJyb3JzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICBmaWVsZC5mb3JtRmllbGQ/LmVycm9yc0NoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9mb3JtU3VibWl0dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RpcmVjdGl2ZUl0ZW1zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX2NvbGxlY3RQbGFpbkZvcm1EYXRhKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2NvbGxlY3RBZHZhbmNlZEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Vycm9ycyQubmV4dChlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbGxlY3RQbGFpbkZvcm1EYXRhKCk6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvcnM6IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5fZGlyZWN0aXZlSXRlbXMudG9BcnJheSgpO1xuXG4gICAgICAgIHRoaXMuX25nRm9ybXMuZm9yRWFjaCgoZm9ybSkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybS5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmb3JtRmllbGQpID0+IGZvcm1GaWVsZC5jb250cm9sPy5uYW1lID09PSBjb250cm9sTmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2w/LmVycm9ycyB8fCAhZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9ycyA9IE9iamVjdC5rZXlzKHRoaXMuX2NvbmZpZy5lcnJvcnMpO1xuXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVycm9yKSA9PiBjb25maWdFcnJvcnMuaW5jbHVkZXMoZXJyb3IpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZXJyb3JLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yT2JqID0gY29udHJvbC5lcnJvcnMhW2Vycm9yS2V5XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JUZXh0TW9kZWwgPSB0aGlzLl9nZXRDb25maWdFcnJvck1vZGVsKGVycm9yS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yOiBNZXNzYWdlUG9wb3ZlckVudHJ5ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbnRyb2xOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGVycm9yVGV4dE1vZGVsLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnZlcnRGb3JtU3RhdGUoJ2Vycm9yJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZD8ubGFiZWwgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogZmllbGQ/LmVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yT2JqLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclRleHRNb2RlbC5oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yT2JqLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclRleHRNb2RlbC5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBjb250cm9sIS5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yc1swXS5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb2xsZWN0QWR2YW5jZWRGb3JtRGF0YSgpOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSB7XG4gICAgICAgIGxldCBlcnJvcnM6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdID0gW107XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZm9ybUZpZWxkcy5sZW5ndGggPiAwID8gdGhpcy5mb3JtRmllbGRzIDogdGhpcy5fcHJvamVjdGVkRm9ybUZpZWxkQ29udHJvbHMudG9BcnJheSgpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJdGVyYXRlcyBvdmVyIGZvcm0gY29udHJvbHMgdG8gY29sbGVjdCB0aGVpciBlcnJvcnMuXG4gICAgICAgICAqIEBwYXJhbSBmb3JtIEZvcm0gR3JvdXAgb3IgYSBjb2xsZWN0aW9uIG9mIEZvcm0gR3JvdXBzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgaXRlcmF0ZU92ZXJGb3JtID0gKGZvcm06IEZvcm1Hcm91cCB8IEZvcm1Hcm91cFtdKTogTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwW10gPT4ge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtLmZvckVhY2goKGZvcm1Hcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBpdGVyYXRlT3ZlckZvcm0oZm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaCgoY29udHJvbE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoY29udHJvbE5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGZvcm1GaWVsZCkgPT4gZm9ybUZpZWxkLmlkID09PSBjb250cm9sTmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBpdGVyYXRlT3ZlckZvcm0oY29udHJvbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFjb250cm9sPy5lcnJvcnMgfHwgIWZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycykuZm9yRWFjaCgoZXJyb3JLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JEaXJlY3RpdmUgPSBmaWVsZC5mb3JtRmllbGQ/Lmdyb3VwZWRFcnJvcnMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChncm91cGVkRXJyb3IpID0+IGdyb3VwZWRFcnJvci5kaXJlY3RpdmUuZXJyb3IgPT09IGVycm9yS2V5XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBOYW1lID0gdGhpcy5fZ2V0R3JvdXBOYW1lKGZpZWxkPy5mb3JtRmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMuX2dldEVycm9yTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEaXJlY3RpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLmVycm9ycyFbZXJyb3JLZXldXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yR3JvdXBJbmRleCA9IGVycm9ycy5maW5kSW5kZXgoKGVycm9yR3JvdXApID0+IGVycm9yR3JvdXAuZ3JvdXAgPT09IGdyb3VwTmFtZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yR3JvdXBJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yR3JvdXBJbmRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogZ3JvdXBOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM6IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgLSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSBlcnJvcnNbZXJyb3JHcm91cEluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICBncm91cC5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gaXRlcmF0ZU92ZXJGb3JtKHRoaXMuX25nRm9ybXMubWFwKChmb3JtKSA9PiBmb3JtLmZvcm0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlcyBlcnJvciBtb2RlbFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEVycm9yTW9kZWwoXG4gICAgICAgIGNvbnRyb2xOYW1lOiBzdHJpbmcsXG4gICAgICAgIGdyb3VwTmFtZTogc3RyaW5nLFxuICAgICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgIGZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgIGVycm9yS2V5OiBzdHJpbmcsXG4gICAgICAgIGVycm9yRGlyZWN0aXZlPzogRm9ybUZpZWxkRXJyb3JEaXJlY3RpdmVDb250ZXh0LFxuICAgICAgICBlcnJvcj86IGFueVxuICAgICk6IE1lc3NhZ2VQb3BvdmVyRW50cnkge1xuICAgICAgICBsZXQgc3RhdGU6IEZvcm1TdGF0ZXMgPSAnZXJyb3InO1xuICAgICAgICBjb25zdCBjb25maWdFcnJvciA9IHRoaXMuX2NvbmZpZy5lcnJvcnNbZXJyb3JLZXldO1xuXG4gICAgICAgIGlmIChlcnJvckRpcmVjdGl2ZT8uZGlyZWN0aXZlLnR5cGUpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZXJyb3JEaXJlY3RpdmUuZGlyZWN0aXZlLnR5cGU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5faXNBZHZhbmNlZEVycm9yKGNvbmZpZ0Vycm9yKSkge1xuICAgICAgICAgICAgc3RhdGUgPSBjb25maWdFcnJvci50eXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IGNvbnRyb2xOYW1lLFxuICAgICAgICAgICAgdHlwZTogc3RhdGUsXG4gICAgICAgICAgICBzdGF0ZTogY29udmVydEZvcm1TdGF0ZShzdGF0ZSksXG4gICAgICAgICAgICBncm91cDogZ3JvdXBOYW1lLFxuICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZD8uZm9ybUZpZWxkPy5sYWJlbCA/PyAnJyxcbiAgICAgICAgICAgIGhlYWRpbmc6IHRoaXMuX2dldEVycm9yVGV4dChmaWVsZCwgZXJyb3JEaXJlY3RpdmUsICdoZWFkaW5nJywgZXJyb3JLZXksIGVycm9yKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLl9nZXRFcnJvclRleHQoZmllbGQsIGVycm9yRGlyZWN0aXZlLCAnZGVzY3JpcHRpb24nLCBlcnJvcktleSwgZXJyb3IpLFxuICAgICAgICAgICAgZXJyb3JzOiBjb250cm9sIS5lcnJvcnMsXG4gICAgICAgICAgICBmb3JtRmllbGQ6IGZpZWxkLFxuICAgICAgICAgICAgZWxlbWVudDogZmllbGQ/LmVsZW1lbnRSZWZcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3JlYXRlcyBlcnJvciB0ZXh0IGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRoZSBlcnJvci5cbiAgICAgKiBAcGFyYW0gZmllbGQgRm9ybSBGaWVsZCBDb250cm9sLlxuICAgICAqIEBwYXJhbSBlcnJvckRpcmVjdGl2ZSBPcHRpb25hbCBFcnJvciBkaXJlY3RpdmVcbiAgICAgKiBAcGFyYW0gc2VjdGlvbiBTZWN0aW9uIHdoZXJlIHRleHQgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgICAqIEBwYXJhbSBlcnJvcktleVxuICAgICAqIEBwYXJhbSBlcnJvclxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEVycm9yVGV4dChcbiAgICAgICAgZmllbGQ6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgZXJyb3JEaXJlY3RpdmU6IE51bGxhYmxlPEZvcm1GaWVsZEVycm9yRGlyZWN0aXZlQ29udGV4dD4sXG4gICAgICAgIHNlY3Rpb246ICdoZWFkaW5nJyB8ICdkZXNjcmlwdGlvbicgPSAnaGVhZGluZycsXG4gICAgICAgIGVycm9yS2V5OiBzdHJpbmcsXG4gICAgICAgIGVycm9yPzogYW55XG4gICAgKTogTWVzc2FnZVBvcG92ZXJFcnJvclRleHQge1xuICAgICAgICBjb25zdCBlcnJvclRleHRPYmo6IE1lc3NhZ2VQb3BvdmVyRXJyb3JUZXh0ID0ge1xuICAgICAgICAgICAgZXJyb3I6IGVycm9yRGlyZWN0aXZlPy5lcnJvcixcbiAgICAgICAgICAgIHR5cGU6IGVycm9yRGlyZWN0aXZlPy5kaXJlY3RpdmUgPyAnZGlyZWN0aXZlJyA6IGZpZWxkPy5mb3JtRmllbGQ/LmkxOFN0cmluZ3MgPyAndGVtcGxhdGVSZWYnIDogJ3N0cmluZydcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZXJyb3JUZXh0T2JqLnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclRleHRNb2RlbCA9IHRoaXMuX2dldENvbmZpZ0Vycm9yTW9kZWwoZXJyb3JLZXkpO1xuXG4gICAgICAgICAgICBlcnJvclRleHRPYmouZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIGVycm9yVGV4dE9iai5tZXNzYWdlID0gZXJyb3JUZXh0TW9kZWxbc2VjdGlvbl07XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JUZXh0T2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yRGlyZWN0aXZlPy5kaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIGVycm9yVGV4dE9iai5tZXNzYWdlID1cbiAgICAgICAgICAgICAgICBzZWN0aW9uID09PSAnaGVhZGluZydcbiAgICAgICAgICAgICAgICAgICAgPyBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2hlYWRpbmdUZW1wbGF0ZVJlZiA/PyBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2Rlc2NyaXB0aW9uVGVtcGxhdGVSZWZcbiAgICAgICAgICAgICAgICAgICAgOiBlcnJvckRpcmVjdGl2ZS5kaXJlY3RpdmUuX2Rlc2NyaXB0aW9uVGVtcGxhdGVSZWY7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JUZXh0T2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgZXJyb3JUZXh0T2JqLm1lc3NhZ2UgPSBmaWVsZD8uZm9ybUZpZWxkPy5pMThTdHJpbmdzID8/IG51bGw7XG4gICAgICAgIHJldHVybiBlcnJvclRleHRPYmo7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRHcm91cE5hbWUoZm9ybUZpZWxkOiBOdWxsYWJsZTxQbGF0Zm9ybUZvcm1GaWVsZD4pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBpZiAoZm9ybUZpZWxkPy5mb3JtR3JvdXBDb250YWluZXI/Lm1haW5UaXRsZSkge1xuICAgICAgICAgICAgcGFydHMucHVzaChmb3JtRmllbGQuZm9ybUdyb3VwQ29udGFpbmVyLm1haW5UaXRsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybUZpZWxkPy5mb3JtRmllbGRHcm91cD8ubGFiZWwpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goZm9ybUZpZWxkLmZvcm1GaWVsZEdyb3VwLmxhYmVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q29uZmlnRXJyb3JNb2RlbChlcnJvcktleTogc3RyaW5nKTogTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZyB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9yID0gdGhpcy5fY29uZmlnLmVycm9yc1tlcnJvcktleV07XG4gICAgICAgIGNvbnN0IGlzUGxhaW5FcnJvciA9ICF0aGlzLl9pc0FkdmFuY2VkRXJyb3IoY29uZmlnRXJyb3IpO1xuICAgICAgICBjb25zdCBlcnJvclR5cGUgPSBpc1BsYWluRXJyb3IgPyAnZXJyb3InIDogY29uZmlnRXJyb3IudHlwZTtcbiAgICAgICAgY29uc3QgaGVhZGluZ01lc3NhZ2UgPSBpc1BsYWluRXJyb3IgPyBjb25maWdFcnJvciA6IGNvbmZpZ0Vycm9yLmhlYWRpbmc7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTWVzc2FnZSA9IGlzUGxhaW5FcnJvciA/IHVuZGVmaW5lZCA6IGNvbmZpZ0Vycm9yLmRlc2NyaXB0aW9uO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBlcnJvclR5cGUsXG4gICAgICAgICAgICBoZWFkaW5nOiBoZWFkaW5nTWVzc2FnZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbk1lc3NhZ2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQWR2YW5jZWRFcnJvcihlcnJvcjogc3RyaW5nIHwgTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZyk6IGVycm9yIGlzIE1lc3NhZ2VQb3BvdmVyRXJyb3JDb25maWcge1xuICAgICAgICByZXR1cm4gISFlcnJvciAmJiB0eXBlb2YgZXJyb3IgIT09ICdzdHJpbmcnO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvbWVzc2FnZS1wb3BvdmVyL2NvbXBvbmVudHMvbWVzc2FnZS1wb3BvdmVyLWZvcm0td3JhcHBlci9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyL21lc3NhZ2UtcG9wb3Zlci1mb3JtLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxTQUFTLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUcsT0FBTyxFQUFFLHFCQUFxQixFQUFjLE1BQU0sNEJBQTRCLENBQUM7QUFPL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRyxPQUFPLEVBQUUsMEJBQTBCLEVBQW1ELE1BQU0sc0JBQXNCLENBQUM7QUFDbkgsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFPdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQVloRSxNQUFNLE9BQU8sa0NBQWtDO0lBZ0IzQzs7T0FFRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQWdEO1FBQ3RELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QixLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsSUFDSSxVQUFVLENBQUMsS0FBaUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQTBCRCxjQUFjO0lBQ2QsWUFDcUIsV0FBdUIsRUFDYSxPQUE2QjtRQURqRSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUNhLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBeER0RixnQ0FBZ0M7UUFDaEMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBa0IsQ0FBQztRQTRCaEQsY0FBYztRQUNHLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBNkIsRUFBRSxDQUFDLENBQUM7UUFFaEY7O1dBRUc7UUFDSCw4REFBOEQ7UUFDOUQsV0FBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFdEMsY0FBYztRQUNOLGdCQUFXLEdBQStCLEVBQUUsQ0FBQztRQUtyRCxjQUFjO1FBQ04sYUFBUSxHQUFvQyxFQUFFLENBQUM7UUFFdkQsY0FBYztRQUNOLGdDQUEyQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFekQsY0FBYztRQUNOLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBTTVCLENBQUM7SUFFSixjQUFjO0lBQ2QsZUFBZTtRQUNYLHVDQUF1QztRQUN2QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsY0FBOEI7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUMsd0NBQXdDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsS0FBZ0Q7UUFDckQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxVQUFzQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSyx3QkFBd0I7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDZCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ1gsSUFBSSxDQUFDLGFBQWMsQ0FBQyxJQUFJLENBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQ3RCLE1BQU0sQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUNqRSxDQUNKLENBQ0osQ0FDSixDQUFDO1FBRUYsSUFBSSxDQUFDLHVCQUF1QixHQUFHLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO2FBQ2xELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDMUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLE1BQU0sTUFBTSxHQUNSLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBRXJHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLHdCQUF3QixDQUFDLE1BQWtDO1FBQy9ELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUvQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0RCxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdEIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FDaEMsS0FBSyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3RCLE9BQU87aUJBQ1Y7Z0JBQ0QsTUFBTSxNQUFNLEdBQ1IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtvQkFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLHFCQUFxQjtRQUN6QixNQUFNLE1BQU0sR0FBK0I7WUFDdkM7Z0JBQ0ksTUFBTSxFQUFFLEVBQUU7YUFDYjtTQUNKLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTlDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUM7Z0JBRWxGLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUM1QixPQUFPO2lCQUNWO2dCQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO3FCQUN0QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQy9DLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNsQixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUUzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDN0UsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUMzRSxNQUFNLFVBQVUsR0FDWixXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJO3dCQUNqRSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUk7d0JBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLE1BQU0sS0FBSyxHQUF3Qjt3QkFDL0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSTt3QkFDekIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFVBQVUsQ0FBQzt3QkFDbkMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTt3QkFDN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVO3dCQUMxQixPQUFPLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsS0FBSyxFQUFFLFFBQVE7NEJBQ2YsT0FBTyxFQUFFLGNBQWMsQ0FBQyxPQUFPO3lCQUNsQzt3QkFDRCxXQUFXLEVBQUU7NEJBQ1QsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsS0FBSyxFQUFFLFFBQVE7NEJBQ2YsT0FBTyxFQUFFLGNBQWMsQ0FBQyxXQUFXO3lCQUN0Qzt3QkFDRCxNQUFNLEVBQUUsT0FBUSxDQUFDLE1BQU07cUJBQzFCLENBQUM7b0JBRUYsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxjQUFjO0lBQ04sd0JBQXdCO1FBQzVCLElBQUksTUFBTSxHQUErQixFQUFFLENBQUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFekc7OztXQUdHO1FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUE2QixFQUE4QixFQUFFO1lBQ2xGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUN2QixNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLE1BQU0sQ0FBQzthQUNqQjtZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQyxDQUFDO2dCQUV2RSxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUU7b0JBQzlCLE1BQU0sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ3JDO2dCQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUM1QixPQUFPO2lCQUNWO2dCQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUM3QyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQ3RELENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQzlELENBQUM7b0JBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7b0JBQ3ZELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQzdCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsT0FBTyxFQUNQLEtBQUssRUFDTCxRQUFRLEVBQ1IsY0FBYyxFQUNkLE9BQU8sQ0FBQyxNQUFPLENBQUMsUUFBUSxDQUFDLENBQzVCLENBQUM7b0JBRUYsSUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQztvQkFFdkYsSUFBSSxlQUFlLEtBQUssQ0FBQyxDQUFDLEVBQUU7d0JBQ3hCLGVBQWU7NEJBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQztnQ0FDUixLQUFLLEVBQUUsU0FBUztnQ0FDaEIsTUFBTSxFQUFFLEVBQUU7NkJBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDZDtvQkFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBRXRDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFDO1FBRUYsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7O09BR0c7SUFDSyxjQUFjLENBQ2xCLFdBQW1CLEVBQ25CLFNBQWlCLEVBQ2pCLE9BQXdCLEVBQ3hCLEtBQStCLEVBQy9CLFFBQWdCLEVBQ2hCLGNBQStDLEVBQy9DLEtBQVc7UUFFWCxJQUFJLEtBQUssR0FBZSxPQUFPLENBQUM7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbEQsSUFBSSxjQUFjLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRTtZQUNoQyxLQUFLLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7U0FDekM7YUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMzQyxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztTQUM1QjtRQUVELE9BQU87WUFDSCxJQUFJLEVBQUUsV0FBVztZQUNqQixJQUFJLEVBQUUsS0FBSztZQUNYLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7WUFDOUIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDeEMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQztZQUM5RSxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDO1lBQ3RGLE1BQU0sRUFBRSxPQUFRLENBQUMsTUFBTTtZQUN2QixTQUFTLEVBQUUsS0FBSztZQUNoQixPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVU7U0FDN0IsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLGFBQWEsQ0FDakIsS0FBK0IsRUFDL0IsY0FBd0QsRUFDeEQsVUFBcUMsU0FBUyxFQUM5QyxRQUFnQixFQUNoQixLQUFXO1FBRVgsTUFBTSxZQUFZLEdBQTRCO1lBQzFDLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSztZQUM1QixJQUFJLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRO1NBQzFHLENBQUM7UUFFRixJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzRCxZQUFZLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUMzQixZQUFZLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxPQUFPLFlBQVksQ0FBQztTQUN2QjtRQUVELElBQUksY0FBYyxFQUFFLFNBQVMsRUFBRTtZQUMzQixZQUFZLENBQUMsT0FBTztnQkFDaEIsT0FBTyxLQUFLLFNBQVM7b0JBQ2pCLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLG1CQUFtQixJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsdUJBQXVCO29CQUNsRyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztZQUMzRCxPQUFPLFlBQVksQ0FBQztTQUN2QjtRQUVELFlBQVksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDO1FBQzVELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO0lBQ04sYUFBYSxDQUFDLFNBQXNDO1FBQ3hELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUUzQixJQUFJLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUU7WUFDMUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEQ7UUFFRCxJQUFJLFNBQVMsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFO1lBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QztRQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYztJQUNOLG9CQUFvQixDQUN4QixRQUFnQixFQUNoQixnQkFBaUQ7UUFFakQsTUFBTSxXQUFXLEdBQ2IsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoSCxNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUM1RCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUN4RSxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBRTlFLE9BQU87WUFDSCxJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFdBQVcsRUFBRSxrQkFBa0I7U0FDbEMsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ04sZ0JBQWdCLENBQUMsS0FBeUM7UUFDOUQsT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQztJQUNoRCxDQUFDOzhHQWhhUSxrQ0FBa0MsNENBcUUvQiwwQkFBMEI7a0dBckU3QixrQ0FBa0MsaUxBRTFCLGdCQUFnQixpRkFJaEIscUJBQXFCLHFFQUlyQiwrQkFBK0IscUZDckRwRCw2QkFDQTs7MkZEMENhLGtDQUFrQztrQkFSOUMsU0FBUzsrQkFDSSxrQ0FBa0MsWUFFbEMsdUJBQXVCLG1CQUNoQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUk7OzBCQXVFWCxNQUFNOzJCQUFDLDBCQUEwQjs0Q0FsRXJCLGNBQWM7c0JBRDlCLGVBQWU7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUt2QywyQkFBMkI7c0JBRDNDLGVBQWU7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUs1QyxlQUFlO3NCQUQvQixlQUFlO3VCQUFDLCtCQUErQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFVbkUsS0FBSztzQkFEUixLQUFLO2dCQWNGLFVBQVU7c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGRF9GT1JNX0ZJRUxEX0NPTlRST0wsIEZvcm1TdGF0ZXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgRm9ybUZpZWxkRXJyb3JEaXJlY3RpdmVDb250ZXh0LFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkLFxuICAgIFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgc3RhcnRXaXRoLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCwgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGRFBfTUVTU0FHRV9QT1BPVkVSX0NPTkZJRywgTWVzc2FnZVBvcG92ZXJDb25maWcsIE1lc3NhZ2VQb3BvdmVyRXJyb3JDb25maWcgfSBmcm9tICcuLi8uLi9kZWZhdWx0LWNvbmZpZyc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlckZvcm1JdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9tZXNzYWdlLXBvcG92ZXItZm9ybS1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIE1lc3NhZ2VQb3BvdmVyRW50cnksXG4gICAgTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwLFxuICAgIE1lc3NhZ2VQb3BvdmVyRXJyb3JUZXh0XG59IGZyb20gJy4uLy4uL21vZGVscy9tZXNzYWdlLXBvcG92ZXItZW50cnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1lc3NhZ2VQb3BvdmVyV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVscy9tZXNzYWdlLXBvcG92ZXItd3JhcHBlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgY29udmVydEZvcm1TdGF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IE1lc3NhZ2VQb3BvdmVyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21lc3NhZ2UtcG9wb3Zlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5leHBvcnQgdHlwZSBNZXNzYWdlUG9wb3ZlckZvcm0gPSBOZ0Zvcm0gfCBGb3JtR3JvdXBEaXJlY3RpdmU7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLW1lc3NhZ2UtcG9wb3Zlci1mb3JtLXdyYXBwZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLXBvcG92ZXItZm9ybS13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBleHBvcnRBczogJ21lc3NhZ2VQb3BvdmVyV3JhcHBlcicsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VQb3BvdmVyRm9ybVdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBNZXNzYWdlUG9wb3ZlcldyYXBwZXIsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKENvbnRyb2xDb250YWluZXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm9qZWN0ZWRGb3JtOiBRdWVyeUxpc3Q8TWVzc2FnZVBvcG92ZXJGb3JtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGRF9GT1JNX0ZJRUxEX0NPTlRST0wsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm9qZWN0ZWRGb3JtRmllbGRDb250cm9scyE6IFF1ZXJ5TGlzdDxQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2w+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW1EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kaXJlY3RpdmVJdGVtcyE6IFF1ZXJ5TGlzdDxNZXNzYWdlUG9wb3ZlckZvcm1JdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBNZXNzYWdlIFBvcG92ZXIgaW5zdGFuY2UuICovXG4gICAgbWVzc2FnZVBvcG92ZXIkID0gbmV3IFN1YmplY3Q8TWVzc2FnZVBvcG92ZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLXBhc3NlZCBmb3Jtcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmb3Jtcyhmb3JtczogTWVzc2FnZVBvcG92ZXJGb3JtIHwgTWVzc2FnZVBvcG92ZXJGb3JtW10pIHtcbiAgICAgICAgaWYgKCFmb3Jtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmb3JtcykpIHtcbiAgICAgICAgICAgIGZvcm1zID0gW2Zvcm1zXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9uZ0Zvcm1zID0gZm9ybXM7XG4gICAgICAgIHRoaXMuX3N0YXJ0TGlzdGVuaW5nRm9yRXJyb3JzKCk7XG4gICAgfVxuXG4gICAgLyoqIFVzZXItcGFzc2VkIGZvcm0gZmllbGRzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZvcm1GaWVsZHModmFsdWU6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFtdKSB7XG4gICAgICAgIHRoaXMuX2Zvcm1GaWVsZHMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fbGlzdGVuVG9Gb3JtRmllbGRFcnJvcnModmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBmb3JtRmllbGRzKCk6IFBsYXRmb3JtRm9ybUZpZWxkQ29udHJvbFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZHM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lcnJvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXT4oW10pO1xuXG4gICAgLyoqXG4gICAgICogRXJyb3IgbW9kZWxzIE9ic2VydmFibGUuIEVtaXR0ZWQgd2hlbiBmb3JtIHN1Ym1pdHRlZCBhbmQgY29udGFpbnMgaW52YWxpZCBmaWVsZHMuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBlcnJvcnMgPSB0aGlzLl9lcnJvcnMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb3JtRmllbGRzOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb3JtRXJyb3JzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX25nRm9ybXM6IChOZ0Zvcm0gfCBGb3JtR3JvdXBEaXJlY3RpdmUpW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9ybUl0ZW1FcnJvcnNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Zvcm1TdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICAgICAgIEBJbmplY3QoRkRQX01FU1NBR0VfUE9QT1ZFUl9DT05GSUcpIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZzogTWVzc2FnZVBvcG92ZXJDb25maWdcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gRm9ybXMgYXJlIHBhc3NlZCB2aWEgaW5wdXQgcHJvcGVydHkuXG4gICAgICAgIGlmICh0aGlzLl9uZ0Zvcm1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcm9qZWN0ZWRGb3JtPy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9uZ0Zvcm1zID0gdGhpcy5fcHJvamVjdGVkRm9ybS50b0FycmF5KCk7XG4gICAgICAgICAgICB0aGlzLl9zdGFydExpc3RlbmluZ0ZvckVycm9ycygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIE1lc3NhZ2UgUG9wb3ZlciBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAgICovXG4gICAgc2V0TWVzc2FnZVBvcG92ZXIobWVzc2FnZVBvcG92ZXI6IE1lc3NhZ2VQb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVzc2FnZVBvcG92ZXIkLm5leHQobWVzc2FnZVBvcG92ZXIpO1xuICAgICAgICAvLyB0aGlzLm1lc3NhZ2VQb3BvdmVyID0gbWVzc2FnZVBvcG92ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvZ3JhbW1hdGljYWxseSBhZGQgbmV3IGZvcm0gdG8gYXJyYXkgb2YgZm9ybXMuXG4gICAgICogQHBhcmFtIGZvcm1zXG4gICAgICovXG4gICAgYWRkRm9ybXMoZm9ybXM6IE1lc3NhZ2VQb3BvdmVyRm9ybSB8IE1lc3NhZ2VQb3BvdmVyRm9ybVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZvcm1zQXJyYXkgPSBBcnJheS5pc0FycmF5KGZvcm1zKSA/IGZvcm1zIDogW2Zvcm1zXTtcbiAgICAgICAgdGhpcy5fbmdGb3Jtcy5wdXNoKC4uLmZvcm1zQXJyYXkpO1xuICAgICAgICB0aGlzLl9zdGFydExpc3RlbmluZ0ZvckVycm9ycygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2dyYW1tYXRpY2FsbHkgYWRkIG5ldyBmb3JtIGZpZWxkcyB0byBhcnJheSBvZiBsaXN0ZW5lZCBmb3JtIGZpZWxkcy5cbiAgICAgKiBAcGFyYW0gZm9ybUZpZWxkc1xuICAgICAqL1xuICAgIGFkZEZvcm1GaWVsZHMoZm9ybUZpZWxkczogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUZpZWxkcy5wdXNoKC4uLmZvcm1GaWVsZHMpO1xuICAgICAgICB0aGlzLl9saXN0ZW5Ub0Zvcm1GaWVsZEVycm9ycyh0aGlzLl9mb3JtRmllbGRzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0ZW5zIHRvIHRoZSBmb3JtIHN1Ym1pc3Npb24gYW5kIGNvbGxlY3RzIGZvcm0gY29udHJvbCBlcnJvcnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc3RhcnRMaXN0ZW5pbmdGb3JFcnJvcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbmdGb3Jtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Zvcm1FcnJvcnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2Vycm9ycyQubmV4dChbXSk7XG5cbiAgICAgICAgY29uc3QgZm9ybVN1Ym1pdEV2ZW50cyA9IHRoaXMuX25nRm9ybXMubWFwKChmb3JtKSA9PlxuICAgICAgICAgICAgZm9ybS5uZ1N1Ym1pdC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3JtLnN0YXR1c0NoYW5nZXMhLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgoZm9ybS5zdGF0dXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0dXM6IHN0cmluZykgPT4gc3RhdHVzLnRvTG93ZXJDYXNlKCkgIT09ICdwZW5kaW5nJylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9mb3JtRXJyb3JzU3Vic2NyaXB0aW9uID0gemlwKC4uLmZvcm1TdWJtaXRFdmVudHMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtU3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvcnMgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaXJlY3RpdmVJdGVtcy5sZW5ndGggPiAwID8gdGhpcy5fY29sbGVjdFBsYWluRm9ybURhdGEoKSA6IHRoaXMuX2NvbGxlY3RBZHZhbmNlZEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9lcnJvcnMkLm5leHQoZXJyb3JzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzLnRvQXJyYXkoKSk7XG5cbiAgICAgICAgdGhpcy5fcHJvamVjdGVkRm9ybUZpZWxkQ29udHJvbHM/LmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RlblRvRm9ybUZpZWxkRXJyb3JzKHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzLnRvQXJyYXkoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Gb3JtRmllbGRFcnJvcnMoZmllbGRzOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2xbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtSXRlbUVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIHRoaXMuX2Zvcm1JdGVtRXJyb3JzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgICAgIGZpZWxkcz8uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1JdGVtRXJyb3JzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgICAgICBmaWVsZC5mb3JtRmllbGQ/LmVycm9yc0NoYW5nZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9mb3JtU3VibWl0dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RpcmVjdGl2ZUl0ZW1zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX2NvbGxlY3RQbGFpbkZvcm1EYXRhKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2NvbGxlY3RBZHZhbmNlZEZvcm1EYXRhKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Vycm9ycyQubmV4dChlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbGxlY3RQbGFpbkZvcm1EYXRhKCk6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvcnM6IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5fZGlyZWN0aXZlSXRlbXMudG9BcnJheSgpO1xuXG4gICAgICAgIHRoaXMuX25nRm9ybXMuZm9yRWFjaCgoZm9ybSkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybS5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmb3JtRmllbGQpID0+IGZvcm1GaWVsZC5jb250cm9sPy5uYW1lID09PSBjb250cm9sTmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2w/LmVycm9ycyB8fCAhZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0Vycm9ycyA9IE9iamVjdC5rZXlzKHRoaXMuX2NvbmZpZy5lcnJvcnMpO1xuXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVycm9yKSA9PiBjb25maWdFcnJvcnMuaW5jbHVkZXMoZXJyb3IpKVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZXJyb3JLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yT2JqID0gY29udHJvbC5lcnJvcnMhW2Vycm9yS2V5XTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JUZXh0TW9kZWwgPSB0aGlzLl9nZXRDb25maWdFcnJvck1vZGVsKGVycm9yS2V5LCBmaWVsZC5lcnJvclR5cGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yQ29uZmlnID0gZmllbGQ/LmVycm9yVHlwZXMgPyBmaWVsZD8uZXJyb3JUeXBlc1tlcnJvcktleV0gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JTdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb25maWcgJiYgdGhpcy5faXNBZHZhbmNlZEVycm9yKGVycm9yQ29uZmlnKSAmJiBlcnJvckNvbmZpZy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZXJyb3JDb25maWcudHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdlcnJvcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcjogTWVzc2FnZVBvcG92ZXJFbnRyeSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb250cm9sTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBlcnJvclRleHRNb2RlbC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb252ZXJ0Rm9ybVN0YXRlKGVycm9yU3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGQ/LmxhYmVsID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGZpZWxkPy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvck9iaixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JUZXh0TW9kZWwuaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvck9iaixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JUZXh0TW9kZWwuZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yczogY29udHJvbCEuZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnNbMF0uZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29sbGVjdEFkdmFuY2VkRm9ybURhdGEoKTogTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwW10ge1xuICAgICAgICBsZXQgZXJyb3JzOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXSA9IFtdO1xuICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZvcm1GaWVsZHMubGVuZ3RoID4gMCA/IHRoaXMuZm9ybUZpZWxkcyA6IHRoaXMuX3Byb2plY3RlZEZvcm1GaWVsZENvbnRyb2xzLnRvQXJyYXkoKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogSXRlcmF0ZXMgb3ZlciBmb3JtIGNvbnRyb2xzIHRvIGNvbGxlY3QgdGhlaXIgZXJyb3JzLlxuICAgICAgICAgKiBAcGFyYW0gZm9ybSBGb3JtIEdyb3VwIG9yIGEgY29sbGVjdGlvbiBvZiBGb3JtIEdyb3Vwcy5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGl0ZXJhdGVPdmVyRm9ybSA9IChmb3JtOiBGb3JtR3JvdXAgfCBGb3JtR3JvdXBbXSk6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm0pKSB7XG4gICAgICAgICAgICAgICAgZm9ybS5mb3JFYWNoKChmb3JtR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gaXRlcmF0ZU92ZXJGb3JtKGZvcm1Hcm91cCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpLmZvckVhY2goKGNvbnRyb2xOYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmb3JtRmllbGQpID0+IGZvcm1GaWVsZC5pZCA9PT0gY29udHJvbE5hbWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gaXRlcmF0ZU92ZXJGb3JtKGNvbnRyb2wpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghY29udHJvbD8uZXJyb3JzIHx8ICFmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmZvckVhY2goKGVycm9yS2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yRGlyZWN0aXZlID0gZmllbGQuZm9ybUZpZWxkPy5ncm91cGVkRXJyb3JzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXBlZEVycm9yKSA9PiBncm91cGVkRXJyb3IuZGlyZWN0aXZlLmVycm9yID09PSBlcnJvcktleVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwTmFtZSA9IHRoaXMuX2dldEdyb3VwTmFtZShmaWVsZD8uZm9ybUZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLl9nZXRFcnJvck1vZGVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcktleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGlyZWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5lcnJvcnMhW2Vycm9yS2V5XVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvckdyb3VwSW5kZXggPSBlcnJvcnMuZmluZEluZGV4KChlcnJvckdyb3VwKSA9PiBlcnJvckdyb3VwLmdyb3VwID09PSBncm91cE5hbWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvckdyb3VwSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckdyb3VwSW5kZXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA6IGdyb3VwTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gZXJyb3JzW2Vycm9yR3JvdXBJbmRleF07XG5cbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGl0ZXJhdGVPdmVyRm9ybSh0aGlzLl9uZ0Zvcm1zLm1hcCgoZm9ybSkgPT4gZm9ybS5mb3JtKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENyZWF0ZXMgZXJyb3IgbW9kZWxcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRFcnJvck1vZGVsKFxuICAgICAgICBjb250cm9sTmFtZTogc3RyaW5nLFxuICAgICAgICBncm91cE5hbWU6IHN0cmluZyxcbiAgICAgICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICAgICAgICBmaWVsZDogUGxhdGZvcm1Gb3JtRmllbGRDb250cm9sLFxuICAgICAgICBlcnJvcktleTogc3RyaW5nLFxuICAgICAgICBlcnJvckRpcmVjdGl2ZT86IEZvcm1GaWVsZEVycm9yRGlyZWN0aXZlQ29udGV4dCxcbiAgICAgICAgZXJyb3I/OiBhbnlcbiAgICApOiBNZXNzYWdlUG9wb3ZlckVudHJ5IHtcbiAgICAgICAgbGV0IHN0YXRlOiBGb3JtU3RhdGVzID0gJ2Vycm9yJztcbiAgICAgICAgY29uc3QgY29uZmlnRXJyb3IgPSB0aGlzLl9jb25maWcuZXJyb3JzW2Vycm9yS2V5XTtcblxuICAgICAgICBpZiAoZXJyb3JEaXJlY3RpdmU/LmRpcmVjdGl2ZS50eXBlKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGVycm9yRGlyZWN0aXZlLmRpcmVjdGl2ZS50eXBlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2lzQWR2YW5jZWRFcnJvcihjb25maWdFcnJvcikpIHtcbiAgICAgICAgICAgIHN0YXRlID0gY29uZmlnRXJyb3IudHlwZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBjb250cm9sTmFtZSxcbiAgICAgICAgICAgIHR5cGU6IHN0YXRlLFxuICAgICAgICAgICAgc3RhdGU6IGNvbnZlcnRGb3JtU3RhdGUoc3RhdGUpLFxuICAgICAgICAgICAgZ3JvdXA6IGdyb3VwTmFtZSxcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGQ/LmZvcm1GaWVsZD8ubGFiZWwgPz8gJycsXG4gICAgICAgICAgICBoZWFkaW5nOiB0aGlzLl9nZXRFcnJvclRleHQoZmllbGQsIGVycm9yRGlyZWN0aXZlLCAnaGVhZGluZycsIGVycm9yS2V5LCBlcnJvciksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5fZ2V0RXJyb3JUZXh0KGZpZWxkLCBlcnJvckRpcmVjdGl2ZSwgJ2Rlc2NyaXB0aW9uJywgZXJyb3JLZXksIGVycm9yKSxcbiAgICAgICAgICAgIGVycm9yczogY29udHJvbCEuZXJyb3JzLFxuICAgICAgICAgICAgZm9ybUZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgIGVsZW1lbnQ6IGZpZWxkPy5lbGVtZW50UmVmXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENyZWF0ZXMgZXJyb3IgdGV4dCBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgZXJyb3IuXG4gICAgICogQHBhcmFtIGZpZWxkIEZvcm0gRmllbGQgQ29udHJvbC5cbiAgICAgKiBAcGFyYW0gZXJyb3JEaXJlY3RpdmUgT3B0aW9uYWwgRXJyb3IgZGlyZWN0aXZlXG4gICAgICogQHBhcmFtIHNlY3Rpb24gU2VjdGlvbiB3aGVyZSB0ZXh0IHNob3VsZCBiZSByZW5kZXJlZC5cbiAgICAgKiBAcGFyYW0gZXJyb3JLZXlcbiAgICAgKiBAcGFyYW0gZXJyb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRFcnJvclRleHQoXG4gICAgICAgIGZpZWxkOiBQbGF0Zm9ybUZvcm1GaWVsZENvbnRyb2wsXG4gICAgICAgIGVycm9yRGlyZWN0aXZlOiBOdWxsYWJsZTxGb3JtRmllbGRFcnJvckRpcmVjdGl2ZUNvbnRleHQ+LFxuICAgICAgICBzZWN0aW9uOiAnaGVhZGluZycgfCAnZGVzY3JpcHRpb24nID0gJ2hlYWRpbmcnLFxuICAgICAgICBlcnJvcktleTogc3RyaW5nLFxuICAgICAgICBlcnJvcj86IGFueVxuICAgICk6IE1lc3NhZ2VQb3BvdmVyRXJyb3JUZXh0IHtcbiAgICAgICAgY29uc3QgZXJyb3JUZXh0T2JqOiBNZXNzYWdlUG9wb3ZlckVycm9yVGV4dCA9IHtcbiAgICAgICAgICAgIGVycm9yOiBlcnJvckRpcmVjdGl2ZT8uZXJyb3IsXG4gICAgICAgICAgICB0eXBlOiBlcnJvckRpcmVjdGl2ZT8uZGlyZWN0aXZlID8gJ2RpcmVjdGl2ZScgOiBmaWVsZD8uZm9ybUZpZWxkPy5pMThTdHJpbmdzID8gJ3RlbXBsYXRlUmVmJyA6ICdzdHJpbmcnXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGVycm9yVGV4dE9iai50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgZXJyb3JUZXh0TW9kZWwgPSB0aGlzLl9nZXRDb25maWdFcnJvck1vZGVsKGVycm9yS2V5KTtcblxuICAgICAgICAgICAgZXJyb3JUZXh0T2JqLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICBlcnJvclRleHRPYmoubWVzc2FnZSA9IGVycm9yVGV4dE1vZGVsW3NlY3Rpb25dO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yVGV4dE9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvckRpcmVjdGl2ZT8uZGlyZWN0aXZlKSB7XG4gICAgICAgICAgICBlcnJvclRleHRPYmoubWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgc2VjdGlvbiA9PT0gJ2hlYWRpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gZXJyb3JEaXJlY3RpdmUuZGlyZWN0aXZlLl9oZWFkaW5nVGVtcGxhdGVSZWYgPz8gZXJyb3JEaXJlY3RpdmUuZGlyZWN0aXZlLl9kZXNjcmlwdGlvblRlbXBsYXRlUmVmXG4gICAgICAgICAgICAgICAgICAgIDogZXJyb3JEaXJlY3RpdmUuZGlyZWN0aXZlLl9kZXNjcmlwdGlvblRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yVGV4dE9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIGVycm9yVGV4dE9iai5tZXNzYWdlID0gZmllbGQ/LmZvcm1GaWVsZD8uaTE4U3RyaW5ncyA/PyBudWxsO1xuICAgICAgICByZXR1cm4gZXJyb3JUZXh0T2JqO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0R3JvdXBOYW1lKGZvcm1GaWVsZDogTnVsbGFibGU8UGxhdGZvcm1Gb3JtRmllbGQ+KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgaWYgKGZvcm1GaWVsZD8uZm9ybUdyb3VwQ29udGFpbmVyPy5tYWluVGl0bGUpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goZm9ybUZpZWxkLmZvcm1Hcm91cENvbnRhaW5lci5tYWluVGl0bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1GaWVsZD8uZm9ybUZpZWxkR3JvdXA/LmxhYmVsKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKGZvcm1GaWVsZC5mb3JtRmllbGRHcm91cC5sYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFydHMuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldENvbmZpZ0Vycm9yTW9kZWwoXG4gICAgICAgIGVycm9yS2V5OiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbUVycm9yVHlwZXM/OiBNZXNzYWdlUG9wb3ZlckNvbmZpZ1snZXJyb3JzJ11cbiAgICApOiBNZXNzYWdlUG9wb3ZlckVycm9yQ29uZmlnIHtcbiAgICAgICAgY29uc3QgY29uZmlnRXJyb3IgPVxuICAgICAgICAgICAgY3VzdG9tRXJyb3JUeXBlcyAmJiBjdXN0b21FcnJvclR5cGVzW2Vycm9yS2V5XSA/IGN1c3RvbUVycm9yVHlwZXNbZXJyb3JLZXldIDogdGhpcy5fY29uZmlnLmVycm9yc1tlcnJvcktleV07XG4gICAgICAgIGNvbnN0IGlzUGxhaW5FcnJvciA9ICF0aGlzLl9pc0FkdmFuY2VkRXJyb3IoY29uZmlnRXJyb3IpO1xuICAgICAgICBjb25zdCBlcnJvclR5cGUgPSBpc1BsYWluRXJyb3IgPyAnZXJyb3InIDogY29uZmlnRXJyb3IudHlwZTtcbiAgICAgICAgY29uc3QgaGVhZGluZ01lc3NhZ2UgPSBpc1BsYWluRXJyb3IgPyBjb25maWdFcnJvciA6IGNvbmZpZ0Vycm9yLmhlYWRpbmc7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTWVzc2FnZSA9IGlzUGxhaW5FcnJvciA/IHVuZGVmaW5lZCA6IGNvbmZpZ0Vycm9yLmRlc2NyaXB0aW9uO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiBlcnJvclR5cGUsXG4gICAgICAgICAgICBoZWFkaW5nOiBoZWFkaW5nTWVzc2FnZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbk1lc3NhZ2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzQWR2YW5jZWRFcnJvcihlcnJvcjogc3RyaW5nIHwgTWVzc2FnZVBvcG92ZXJFcnJvckNvbmZpZyk6IGVycm9yIGlzIE1lc3NhZ2VQb3BvdmVyRXJyb3JDb25maWcge1xuICAgICAgICByZXR1cm4gISFlcnJvciAmJiB0eXBlb2YgZXJyb3IgIT09ICdzdHJpbmcnO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
@@ -1,17 +1,19 @@
1
1
  import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';
2
- import { DOCUMENT } from '@angular/common';
2
+ import { DOCUMENT, NgTemplateOutlet, NgFor, NgIf } from '@angular/common';
3
3
  import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, EventEmitter, HostBinding, Inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
4
4
  import { resizeObservable, TabbableElementService } from '@fundamental-ngx/cdk/utils';
5
5
  import { debounceTime } from 'rxjs';
6
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
+ import { FdTranslatePipe } from '@fundamental-ngx/i18n';
8
+ import { LinkComponent } from '@fundamental-ngx/core/link';
9
+ import { ObjectStatusModule } from '@fundamental-ngx/core/object-status';
10
+ import { ListModule } from '@fundamental-ngx/core/list';
11
+ import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';
12
+ import { CdkScrollable } from '@angular/cdk/overlay';
7
13
  import * as i0 from "@angular/core";
8
14
  import * as i1 from "@fundamental-ngx/cdk/utils";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "@fundamental-ngx/core/list";
11
- import * as i4 from "@fundamental-ngx/core/object-status";
12
- import * as i5 from "@fundamental-ngx/core/scrollbar";
13
- import * as i6 from "@fundamental-ngx/core/link";
14
- import * as i7 from "@fundamental-ngx/i18n";
15
+ import * as i2 from "@fundamental-ngx/core/list";
16
+ import * as i3 from "@fundamental-ngx/core/object-status";
15
17
  export class MessageViewComponent {
16
18
  /** @hidden */
17
19
  constructor(_destroyRef, _tabbableService, _document) {
@@ -69,7 +71,7 @@ export class MessageViewComponent {
69
71
  }
70
72
  }
71
73
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessageViewComponent, deps: [{ token: i0.DestroyRef }, { token: i1.TabbableElementService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessageViewComponent, selector: "fdp-message-view", inputs: { currentScreen: "currentScreen", filteredErrors: "filteredErrors", currentEntry: "currentEntry" }, outputs: { openDetails: "openDetails", focusItem: "focusItem", closePopover: "closePopover" }, host: { properties: { "class": "this._initialClass" } }, providers: [TabbableElementService], viewQueries: [{ propertyName: "_listView", first: true, predicate: ["listView"], descendants: true, read: ElementRef }, { propertyName: "_detailsView", first: true, predicate: ["detailsView"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-template #headingTemplate let-item>\n <ng-template #directiveHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message || item.description.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.heading.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringHeading>\n {{ item.heading.message | fdTranslate : { error: item.heading.error } : item.heading.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveHeading\n : item.heading.type === 'string'\n ? stringHeading\n : i18nHeading\n \"\n ></ng-template>\n</ng-template>\n\n<ng-template #descriptionTemplate let-item>\n <ng-template #directiveDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.description.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringDescription>\n {{ item.description.message | fdTranslate : { error: item.description.error } : item.description.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveDescription\n : item.heading.type === 'string'\n ? stringDescription\n : i18nDescription\n \"\n ></ng-template>\n</ng-template>\n\n<div class=\"fd-message-view\">\n <section\n class=\"fd-message-view__list\"\n tabindex=\"-1\"\n [@openCloseList]=\"currentScreen === 'list' ? 'open' : 'closed'\"\n (@openCloseList.done)=\"_onListAnimationComplete($event)\"\n fd-scrollbar\n [overrideTabindex]=\"false\"\n >\n <ul #listView fd-list class=\"message-popover__list fd-list--message-view\" [navigationIndicator]=\"true\">\n <ng-container *ngFor=\"let group of filteredErrors\">\n <li fd-list-group-header *ngIf=\"group.group\">\n <span fd-list-title>{{ group.group }}</span>\n </li>\n <ng-container *ngFor=\"let item of group.errors; let i = index\">\n <li fd-list-item [tabindex]=\"i === 0 ? 0 : -1\" [byline]=\"true\" (click)=\"_showDetails(item)\">\n <ng-template #itemIcon>\n <span\n fd-object-status\n class=\"fd-list__icon\"\n [status]=\"item.state\"\n [glyph]=\"'message-' + item.type\"\n ></span>\n </ng-template>\n <ng-template #listSubtitle>\n <span class=\"fd-list__subtitle\">\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </span>\n </ng-template>\n <span\n fd-list-link\n [navigationIndicator]=\"!!item.description.message\"\n *ngIf=\"item.element && !!item.description.message; else anchorListLink\"\n >\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>\n <a tabindex=\"0\" fd-link (click)=\"_focusElement($event, item)\">\n {{ item.fieldName }}\n </a>\n </span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </span>\n <ng-template #anchorListLink>\n <a fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>{{ item.fieldName }}</span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </section>\n <section class=\"fd-message-view__details\" [@openCloseDetails]=\"currentScreen === 'details' ? 'open' : 'closed'\">\n <div #detailsView>\n <ng-container *ngIf=\"currentEntry\">\n <span class=\"fd-message-view__details-title\">\n <span\n fd-object-status\n class=\"fd-message-view__icon\"\n [status]=\"currentEntry.state\"\n [glyph]=\"'message-' + currentEntry.type\"\n ></span>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n <span class=\"fd-message-view__details-description\" *ngIf=\"currentEntry.description.message\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n </ng-container>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator"], outputs: ["focusEscapeList"] }, { kind: "component", type: i3.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "directive", type: i3.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i3.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i3.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i3.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "component", type: i4.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "directive", type: i5.ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible", "overrideTabindex"] }, { kind: "component", type: i6.LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "pipe", type: i7.FdTranslatePipe, name: "fdTranslate" }], animations: [
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: MessageViewComponent, isStandalone: true, selector: "fdp-message-view", inputs: { currentScreen: "currentScreen", filteredErrors: "filteredErrors", currentEntry: "currentEntry" }, outputs: { openDetails: "openDetails", focusItem: "focusItem", closePopover: "closePopover" }, host: { properties: { "class": "this._initialClass" } }, providers: [TabbableElementService], viewQueries: [{ propertyName: "_listView", first: true, predicate: ["listView"], descendants: true, read: ElementRef }, { propertyName: "_detailsView", first: true, predicate: ["detailsView"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-template #headingTemplate let-item>\n <ng-template #directiveHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message || item.description.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.heading.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringHeading>\n {{ item.heading.message | fdTranslate : { error: item.heading.error } : item.heading.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveHeading\n : item.heading.type === 'string'\n ? stringHeading\n : i18nHeading\n \"\n ></ng-template>\n</ng-template>\n\n<ng-template #descriptionTemplate let-item>\n <ng-template #directiveDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.description.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringDescription>\n {{ item.description.message | fdTranslate : { error: item.description.error } : item.description.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveDescription\n : item.heading.type === 'string'\n ? stringDescription\n : i18nDescription\n \"\n ></ng-template>\n</ng-template>\n\n<div class=\"fd-message-view\">\n <section\n class=\"fd-message-view__list\"\n tabindex=\"-1\"\n [@openCloseList]=\"currentScreen === 'list' ? 'open' : 'closed'\"\n (@openCloseList.done)=\"_onListAnimationComplete($event)\"\n fd-scrollbar\n [overrideTabindex]=\"false\"\n >\n <ul #listView fd-list class=\"message-popover__list fd-list--message-view\" [navigationIndicator]=\"true\">\n <ng-container *ngFor=\"let group of filteredErrors\">\n <li fd-list-group-header *ngIf=\"group.group\">\n <span fd-list-title>{{ group.group }}</span>\n </li>\n <ng-container *ngFor=\"let item of group.errors; let i = index\">\n <li fd-list-item [tabindex]=\"i === 0 ? 0 : -1\" [byline]=\"true\" (click)=\"_showDetails(item)\">\n <ng-template #itemIcon>\n <span\n fd-object-status\n class=\"fd-list__icon\"\n [status]=\"item.state\"\n [glyph]=\"'message-' + item.type\"\n ></span>\n </ng-template>\n <ng-template #listSubtitle>\n <span class=\"fd-list__subtitle\">\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </span>\n </ng-template>\n <span\n fd-list-link\n [navigationIndicator]=\"!!item.description.message\"\n *ngIf=\"item.element && !!item.description.message; else anchorListLink\"\n >\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>\n <a tabindex=\"0\" fd-link (click)=\"_focusElement($event, item)\">\n {{ item.fieldName }}\n </a>\n </span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </span>\n <ng-template #anchorListLink>\n <a fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>{{ item.fieldName }}</span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </section>\n <section class=\"fd-message-view__details\" [@openCloseDetails]=\"currentScreen === 'details' ? 'open' : 'closed'\">\n <div #detailsView>\n <ng-container *ngIf=\"currentEntry\">\n <span class=\"fd-message-view__details-title\">\n <span\n fd-object-status\n class=\"fd-message-view__icon\"\n [status]=\"currentEntry.state\"\n [glyph]=\"'message-' + currentEntry.type\"\n ></span>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n <span class=\"fd-message-view__details-description\" *ngIf=\"currentEntry.description.message\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n </ng-container>\n </div>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ScrollbarDirective, selector: "[fdScrollbar], [fd-scrollbar]", inputs: ["noHorizontalScroll", "noVerticalScroll", "alwaysVisible", "overrideTabindex"] }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i2.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator"], outputs: ["focusEscapeList"] }, { kind: "component", type: i2.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "noData", "action", "interactive", "growing", "counter", "unread", "byline"], outputs: ["keyDown"] }, { kind: "directive", type: i2.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i2.ListGroupHeaderDirective, selector: "[fdListGroupHeader], [fd-list-group-header]", inputs: ["nativeElementId"], outputs: ["keyDown"] }, { kind: "directive", type: i2.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i2.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ObjectStatusModule }, { kind: "component", type: i3.ObjectStatusComponent, selector: "[fd-object-status]", inputs: ["class", "status", "glyph", "label", "glyphAriaLabel", "indicationColor", "clickable", "inverted", "large"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], animations: [
73
75
  trigger('openCloseList', [
74
76
  // ...
75
77
  state('open', style({
@@ -163,6 +165,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
163
165
  animate('0.1s .1s cubic-bezier(0, 0, 0.2, 1)')
164
166
  ])
165
167
  ])
168
+ ], standalone: true, imports: [
169
+ NgTemplateOutlet,
170
+ CdkScrollable,
171
+ ScrollbarDirective,
172
+ ListModule,
173
+ NgFor,
174
+ NgIf,
175
+ ObjectStatusModule,
176
+ LinkComponent,
177
+ FdTranslatePipe
166
178
  ], template: "<ng-template #headingTemplate let-item>\n <ng-template #directiveHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message || item.description.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.heading.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nHeading>\n <ng-template\n [ngTemplateOutlet]=\"item.heading.message\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringHeading>\n {{ item.heading.message | fdTranslate : { error: item.heading.error } : item.heading.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveHeading\n : item.heading.type === 'string'\n ? stringHeading\n : i18nHeading\n \"\n ></ng-template>\n</ng-template>\n\n<ng-template #descriptionTemplate let-item>\n <ng-template #directiveDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.description.error }\"\n ></ng-template>\n </ng-template>\n <ng-template #i18nDescription>\n <ng-template\n [ngTemplateOutlet]=\"item.description.message!\"\n [ngTemplateOutletContext]=\"{ $implicit: item.errors }\"\n ></ng-template>\n </ng-template>\n <ng-template #stringDescription>\n {{ item.description.message | fdTranslate : { error: item.description.error } : item.description.message }}\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"\n item.heading.type === 'directive'\n ? directiveDescription\n : item.heading.type === 'string'\n ? stringDescription\n : i18nDescription\n \"\n ></ng-template>\n</ng-template>\n\n<div class=\"fd-message-view\">\n <section\n class=\"fd-message-view__list\"\n tabindex=\"-1\"\n [@openCloseList]=\"currentScreen === 'list' ? 'open' : 'closed'\"\n (@openCloseList.done)=\"_onListAnimationComplete($event)\"\n fd-scrollbar\n [overrideTabindex]=\"false\"\n >\n <ul #listView fd-list class=\"message-popover__list fd-list--message-view\" [navigationIndicator]=\"true\">\n <ng-container *ngFor=\"let group of filteredErrors\">\n <li fd-list-group-header *ngIf=\"group.group\">\n <span fd-list-title>{{ group.group }}</span>\n </li>\n <ng-container *ngFor=\"let item of group.errors; let i = index\">\n <li fd-list-item [tabindex]=\"i === 0 ? 0 : -1\" [byline]=\"true\" (click)=\"_showDetails(item)\">\n <ng-template #itemIcon>\n <span\n fd-object-status\n class=\"fd-list__icon\"\n [status]=\"item.state\"\n [glyph]=\"'message-' + item.type\"\n ></span>\n </ng-template>\n <ng-template #listSubtitle>\n <span class=\"fd-list__subtitle\">\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-template>\n </span>\n </ng-template>\n <span\n fd-list-link\n [navigationIndicator]=\"!!item.description.message\"\n *ngIf=\"item.element && !!item.description.message; else anchorListLink\"\n >\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>\n <a tabindex=\"0\" fd-link (click)=\"_focusElement($event, item)\">\n {{ item.fieldName }}\n </a>\n </span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </span>\n <ng-template #anchorListLink>\n <a fd-list-link [navigationIndicator]=\"!!item.description.message\">\n <ng-template [ngTemplateOutlet]=\"itemIcon\"></ng-template>\n <span fd-list-content>\n <span fd-list-title>{{ item.fieldName }}</span>\n <ng-template [ngTemplateOutlet]=\"listSubtitle\"></ng-template>\n </span>\n </a>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </section>\n <section class=\"fd-message-view__details\" [@openCloseDetails]=\"currentScreen === 'details' ? 'open' : 'closed'\">\n <div #detailsView>\n <ng-container *ngIf=\"currentEntry\">\n <span class=\"fd-message-view__details-title\">\n <span\n fd-object-status\n class=\"fd-message-view__icon\"\n [status]=\"currentEntry.state\"\n [glyph]=\"'message-' + currentEntry.type\"\n ></span>\n <ng-template\n [ngTemplateOutlet]=\"headingTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n <span class=\"fd-message-view__details-description\" *ngIf=\"currentEntry.description.message\">\n <ng-template\n [ngTemplateOutlet]=\"descriptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: currentEntry }\"\n ></ng-template>\n </span>\n </ng-container>\n </div>\n </section>\n</div>\n" }]
167
179
  }], ctorParameters: function () { return [{ type: i0.DestroyRef }, { type: i1.TabbableElementService }, { type: Document, decorators: [{
168
180
  type: Inject,
@@ -189,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
189
201
  type: HostBinding,
190
202
  args: ['class']
191
203
  }] } });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXZpZXcvbWVzc2FnZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXZpZXcvbWVzc2FnZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQVksZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7QUFzRWhFLE1BQU0sT0FBTyxvQkFBb0I7SUF3QzdCLGNBQWM7SUFDZCxZQUNxQixXQUF1QixFQUN2QixnQkFBd0MsRUFDdEIsU0FBbUI7UUFGckMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN0Qixj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LE9BQU8sRUFBRSxDQUFDO3dDQUNWLE9BQU8sRUFBRSxNQUFNO3FDQUNsQixDQUFDO2lDQUNMLENBQUMsQ0FDTDs2QkFDSixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRTtnQ0FDekIsS0FBSyxDQUFDO29DQUNGLE9BQU8sRUFBRSxPQUFPO2lDQUNuQixDQUFDO2dDQUNGLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQzs2QkFDakQsQ0FBQzt5QkFDTCxDQUFDO3FCQUNMOzswQkE4Q0ksTUFBTTsyQkFBQyxRQUFROzRDQXpDcEIsYUFBYTtzQkFEWixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sV0FBVztzQkFEVixNQUFNO2dCQUtQLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBS0MsU0FBUztzQkFEaEIsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUtuQyxZQUFZO3NCQURuQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSzdCLGFBQWE7c0JBRDdCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIGtleWZyYW1lcywgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgcmVzaXplT2JzZXJ2YWJsZSwgVGFiYmFibGVFbGVtZW50U2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJFbnRyeSwgTWVzc2FnZVBvcG92ZXJFcnJvckdyb3VwIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21lc3NhZ2UtcG9wb3Zlci1lbnRyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1tZXNzYWdlLXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbVGFiYmFibGVFbGVtZW50U2VydmljZV0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdvcGVuQ2xvc2VMaXN0JywgW1xuICAgICAgICAgICAgLy8gLi4uXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnb3BlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2Nsb3NlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MHB4KScsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDBcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW2FuaW1hdGUoJy4xcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScpXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdjbG9zZWQgPT4gb3BlbicsIFthbmltYXRlKCcwLjFzIC4xcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScpXSlcbiAgICAgICAgXSksXG4gICAgICAgIHRyaWdnZXIoJ29wZW5DbG9zZURldGFpbHMnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnb3BlbicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2Nsb3NlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgICAgICAgJy4xcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKScsXG4gICAgICAgICAgICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDUwcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzAuMXMgLjFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJylcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBDdXJyZW50IE1lc3NhZ2UgUG9wb3ZlciBzY3JlZW4uIENhbiBiZSBlaXRoZXIgYGxpc3RgIG9yIGBkZXRhaWxzYC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRTY3JlZW46ICdsaXN0JyB8ICdkZXRhaWxzJztcblxuICAgIC8qKiBGaWx0ZXJlZCBlcnJvcnMgdG8gcmVuZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyZWRFcnJvcnM6IE1lc3NhZ2VQb3BvdmVyRXJyb3JHcm91cFtdO1xuXG4gICAgLyoqIEN1cnJlbnQgZXJyb3IgZW50cnkuIFVzZWQgZm9yIGRldGFpbHMgdmlldy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRFbnRyeTogTnVsbGFibGU8TWVzc2FnZVBvcG92ZXJFbnRyeT47XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIGVycm9yIGVudHJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBkZXNjcmlwdGlvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBvcGVuRGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8TWVzc2FnZVBvcG92ZXJFbnRyeT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdXNlciBjbGlja3Mgb24gZXJyb3IgZW50cnkgYW5kIGl0ZW0ncyBlbGVtZW50IHNob3VsZCBiZSBmb2N1c2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvY3VzSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TWVzc2FnZVBvcG92ZXJFbnRyeT4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdXNlciBjbGlja3Mgb24gdGhlIGZpZWxkIGxpbmsgdG8gZm9jdXMgb24gdGhlIGZpZWxkIGl0c2VsZi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjbG9zZVBvcG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpc3RWaWV3JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSBfbGlzdFZpZXc6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RldGFpbHNWaWV3JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSBfZGV0YWlsc1ZpZXc6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2luaXRpYWxDbGFzcyA9ICdmZC1tZXNzYWdlLXBvcG92ZXJfX3ZpZXctY29udGFpbmVyJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYWN0aXZlTGlzdEVsZW1lbnQ6IE51bGxhYmxlPEhUTUxFbGVtZW50PiA9IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJiYWJsZVNlcnZpY2U6IFRhYmJhYmxlRWxlbWVudFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgX2RvY3VtZW50OiBEb2N1bWVudFxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2RldGFpbHNWaWV3Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGhlaWdodCB9ID0gdGhpcy5fZGV0YWlsc1ZpZXcubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9saXN0Vmlldy5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbkhlaWdodCA9IGAke2hlaWdodH1weGA7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zaG93RGV0YWlscyhlbnRyeTogTWVzc2FnZVBvcG92ZXJFbnRyeSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVMaXN0RWxlbWVudCA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICghZW50cnkuZGVzY3JpcHRpb24ubWVzc2FnZSkge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNFbGVtZW50KHVuZGVmaW5lZCwgZW50cnkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFNjcmVlbiA9ICdkZXRhaWxzJztcbiAgICAgICAgdGhpcy5vcGVuRGV0YWlscy5lbWl0KGVudHJ5KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9mb2N1c0VsZW1lbnQoZXZlbnQ/OiBNb3VzZUV2ZW50LCBpdGVtPzogTWVzc2FnZVBvcG92ZXJFbnRyeSk6IHZvaWQge1xuICAgICAgICBpZiAoIWl0ZW0/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudD8uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyLmVtaXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmZvY3VzSXRlbS5lbWl0KGl0ZW0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmJhYmxlRWxlbWVudCA9IHRoaXMuX3RhYmJhYmxlU2VydmljZS5nZXRUYWJiYWJsZUVsZW1lbnQoaXRlbS5lbGVtZW50Py5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIHRhYmJhYmxlRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25MaXN0QW5pbWF0aW9uQ29tcGxldGUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ29wZW4nICYmIHRoaXMuX2FjdGl2ZUxpc3RFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVMaXN0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlTGlzdEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNoZWFkaW5nVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgPG5nLXRlbXBsYXRlICNkaXJlY3RpdmVIZWFkaW5nPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uaGVhZGluZy5tZXNzYWdlIHx8IGl0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0uaGVhZGluZy5lcnJvciB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2kxOG5IZWFkaW5nPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW0uaGVhZGluZy5tZXNzYWdlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5lcnJvcnMgfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNzdHJpbmdIZWFkaW5nPlxuICAgICAgICB7eyBpdGVtLmhlYWRpbmcubWVzc2FnZSB8IGZkVHJhbnNsYXRlIDogeyBlcnJvcjogaXRlbS5oZWFkaW5nLmVycm9yIH0gOiBpdGVtLmhlYWRpbmcubWVzc2FnZSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICAgICAgaXRlbS5oZWFkaW5nLnR5cGUgPT09ICdkaXJlY3RpdmUnXG4gICAgICAgICAgICAgICAgPyBkaXJlY3RpdmVIZWFkaW5nXG4gICAgICAgICAgICAgICAgOiBpdGVtLmhlYWRpbmcudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IHN0cmluZ0hlYWRpbmdcbiAgICAgICAgICAgICAgICA6IGkxOG5IZWFkaW5nXG4gICAgICAgIFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Rlc2NyaXB0aW9uVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgPG5nLXRlbXBsYXRlICNkaXJlY3RpdmVEZXNjcmlwdGlvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2UhXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5kZXNjcmlwdGlvbi5lcnJvciB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2kxOG5EZXNjcmlwdGlvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2UhXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbS5lcnJvcnMgfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNzdHJpbmdEZXNjcmlwdGlvbj5cbiAgICAgICAge3sgaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlIHwgZmRUcmFuc2xhdGUgOiB7IGVycm9yOiBpdGVtLmRlc2NyaXB0aW9uLmVycm9yIH0gOiBpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2UgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJcbiAgICAgICAgICAgIGl0ZW0uaGVhZGluZy50eXBlID09PSAnZGlyZWN0aXZlJ1xuICAgICAgICAgICAgICAgID8gZGlyZWN0aXZlRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICA6IGl0ZW0uaGVhZGluZy50eXBlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gc3RyaW5nRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICA6IGkxOG5EZXNjcmlwdGlvblxuICAgICAgICBcIlxuICAgID48L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld1wiPlxuICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19saXN0XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFtAb3BlbkNsb3NlTGlzdF09XCJjdXJyZW50U2NyZWVuID09PSAnbGlzdCcgPyAnb3BlbicgOiAnY2xvc2VkJ1wiXG4gICAgICAgIChAb3BlbkNsb3NlTGlzdC5kb25lKT1cIl9vbkxpc3RBbmltYXRpb25Db21wbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgZmQtc2Nyb2xsYmFyXG4gICAgICAgIFtvdmVycmlkZVRhYmluZGV4XT1cImZhbHNlXCJcbiAgICA+XG4gICAgICAgIDx1bCAjbGlzdFZpZXcgZmQtbGlzdCBjbGFzcz1cIm1lc3NhZ2UtcG9wb3Zlcl9fbGlzdCBmZC1saXN0LS1tZXNzYWdlLXZpZXdcIiBbbmF2aWdhdGlvbkluZGljYXRvcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBmaWx0ZXJlZEVycm9yc1wiPlxuICAgICAgICAgICAgICAgIDxsaSBmZC1saXN0LWdyb3VwLWhlYWRlciAqbmdJZj1cImdyb3VwLmdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgZ3JvdXAuZ3JvdXAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwLmVycm9yczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1pdGVtIFt0YWJpbmRleF09XCJpID09PSAwID8gMCA6IC0xXCIgW2J5bGluZV09XCJ0cnVlXCIgKGNsaWNrKT1cIl9zaG93RGV0YWlscyhpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbGlzdF9faWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiaXRlbS5zdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCInbWVzc2FnZS0nICsgaXRlbS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlzdFN1YnRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbGlzdF9fc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1saXN0LWxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmF2aWdhdGlvbkluZGljYXRvcl09XCIhIWl0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmVsZW1lbnQgJiYgISFpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2U7IGVsc2UgYW5jaG9yTGlzdExpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtSWNvblwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFiaW5kZXg9XCIwXCIgZmQtbGluayAoY2xpY2spPVwiX2ZvY3VzRWxlbWVudCgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5maWVsZE5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFN1YnRpdGxlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2FuY2hvckxpc3RMaW5rPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayBbbmF2aWdhdGlvbkluZGljYXRvcl09XCIhIWl0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUljb25cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7IGl0ZW0uZmllbGROYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RTdWJ0aXRsZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdWw+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19kZXRhaWxzXCIgW0BvcGVuQ2xvc2VEZXRhaWxzXT1cImN1cnJlbnRTY3JlZW4gPT09ICdkZXRhaWxzJyA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+XG4gICAgICAgIDxkaXYgI2RldGFpbHNWaWV3PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRFbnRyeVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmQtbWVzc2FnZS12aWV3X19kZXRhaWxzLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1vYmplY3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld19faWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cImN1cnJlbnRFbnRyeS5zdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ21lc3NhZ2UtJyArIGN1cnJlbnRFbnRyeS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjdXJyZW50RW50cnkgfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld19fZGV0YWlscy1kZXNjcmlwdGlvblwiICpuZ0lmPVwiY3VycmVudEVudHJ5LmRlc2NyaXB0aW9uLm1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXNjcmlwdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY3VycmVudEVudHJ5IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXZpZXcvbWVzc2FnZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9tZXNzYWdlLXBvcG92ZXIvY29tcG9uZW50cy9tZXNzYWdlLXZpZXcvbWVzc2FnZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFFLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBWSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxx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RGhCLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLbkMsWUFBWTtzQkFEbkIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUs3QixhQUFhO3NCQUQ3QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBrZXlmcmFtZXMsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgRE9DVU1FTlQsIE5nVGVtcGxhdGVPdXRsZXQsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlLCByZXNpemVPYnNlcnZhYmxlLCBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZXNzYWdlUG9wb3ZlckVudHJ5LCBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXAgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWVzc2FnZS1wb3BvdmVyLWVudHJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgTGlua0NvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saW5rJztcbmltcG9ydCB7IE9iamVjdFN0YXR1c01vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9vYmplY3Qtc3RhdHVzJztcbmltcG9ydCB7IExpc3RNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGlzdCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLW1lc3NhZ2UtdmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2Utdmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ29wZW5DbG9zZUxpc3QnLCBbXG4gICAgICAgICAgICAvLyAuLi5cbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdvcGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnY2xvc2VkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwcHgpJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignb3BlbiA9PiBjbG9zZWQnLCBbYW5pbWF0ZSgnLjFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW2FuaW1hdGUoJzAuMXMgLjFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyldKVxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignb3BlbkNsb3NlRGV0YWlscycsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdvcGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnY2xvc2VkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoNTBweCknLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdvcGVuID0+IGNsb3NlZCcsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgICAgICAnLjFzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyxcbiAgICAgICAgICAgICAgICAgICAga2V5ZnJhbWVzKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaydcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoNTBweCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ25vbmUnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignY2xvc2VkID0+IG9wZW4nLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMC4xcyAuMXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIExpc3RNb2R1bGUsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBPYmplY3RTdGF0dXNNb2R1bGUsXG4gICAgICAgIExpbmtDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICAvKiogQ3VycmVudCBNZXNzYWdlIFBvcG92ZXIgc2NyZWVuLiBDYW4gYmUgZWl0aGVyIGBsaXN0YCBvciBgZGV0YWlsc2AuICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50U2NyZWVuOiAnbGlzdCcgfCAnZGV0YWlscyc7XG5cbiAgICAvKiogRmlsdGVyZWQgZXJyb3JzIHRvIHJlbmRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbHRlcmVkRXJyb3JzOiBNZXNzYWdlUG9wb3ZlckVycm9yR3JvdXBbXTtcblxuICAgIC8qKiBDdXJyZW50IGVycm9yIGVudHJ5LiBVc2VkIGZvciBkZXRhaWxzIHZpZXcuICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50RW50cnk6IE51bGxhYmxlPE1lc3NhZ2VQb3BvdmVyRW50cnk+O1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBlcnJvciBlbnRyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgZGVzY3JpcHRpb24uICovXG4gICAgQE91dHB1dCgpXG4gICAgb3BlbkRldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPE1lc3NhZ2VQb3BvdmVyRW50cnk+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIGVycm9yIGVudHJ5IGFuZCBpdGVtJ3MgZWxlbWVudCBzaG91bGQgYmUgZm9jdXNlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb2N1c0l0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyPE1lc3NhZ2VQb3BvdmVyRW50cnk+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIHRoZSBmaWVsZCBsaW5rIHRvIGZvY3VzIG9uIHRoZSBmaWVsZCBpdHNlbGYuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2xvc2VQb3BvdmVyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdsaXN0VmlldycsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgX2xpc3RWaWV3OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdkZXRhaWxzVmlldycsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgX2RldGFpbHNWaWV3OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pbml0aWFsQ2xhc3MgPSAnZmQtbWVzc2FnZS1wb3BvdmVyX192aWV3LWNvbnRhaW5lcic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FjdGl2ZUxpc3RFbGVtZW50OiBOdWxsYWJsZTxIVE1MRWxlbWVudD4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFiYmFibGVTZXJ2aWNlOiBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogRG9jdW1lbnRcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9kZXRhaWxzVmlldy5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBoZWlnaHQgfSA9IHRoaXMuX2RldGFpbHNWaWV3Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGlzdFZpZXcubmF0aXZlRWxlbWVudC5zdHlsZS5taW5IZWlnaHQgPSBgJHtoZWlnaHR9cHhgO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2hvd0RldGFpbHMoZW50cnk6IE1lc3NhZ2VQb3BvdmVyRW50cnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlTGlzdEVsZW1lbnQgPSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoIWVudHJ5LmRlc2NyaXB0aW9uLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzRWxlbWVudCh1bmRlZmluZWQsIGVudHJ5KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRTY3JlZW4gPSAnZGV0YWlscyc7XG4gICAgICAgIHRoaXMub3BlbkRldGFpbHMuZW1pdChlbnRyeSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZm9jdXNFbGVtZW50KGV2ZW50PzogTW91c2VFdmVudCwgaXRlbT86IE1lc3NhZ2VQb3BvdmVyRW50cnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQ/LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmNsb3NlUG9wb3Zlci5lbWl0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5mb2N1c0l0ZW0uZW1pdChpdGVtKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWJiYWJsZUVsZW1lbnQgPSB0aGlzLl90YWJiYWJsZVNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KGl0ZW0uZWxlbWVudD8ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0YWJiYWJsZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uTGlzdEFuaW1hdGlvbkNvbXBsZXRlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdvcGVuJyAmJiB0aGlzLl9hY3RpdmVMaXN0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlTGlzdEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUxpc3RFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjaGVhZGluZ1RlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGlyZWN0aXZlSGVhZGluZz5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmhlYWRpbmcubWVzc2FnZSB8fCBpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2VcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtLmhlYWRpbmcuZXJyb3IgfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNpMThuSGVhZGluZz5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtLmhlYWRpbmcubWVzc2FnZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0uZXJyb3JzIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjc3RyaW5nSGVhZGluZz5cbiAgICAgICAge3sgaXRlbS5oZWFkaW5nLm1lc3NhZ2UgfCBmZFRyYW5zbGF0ZSA6IHsgZXJyb3I6IGl0ZW0uaGVhZGluZy5lcnJvciB9IDogaXRlbS5oZWFkaW5nLm1lc3NhZ2UgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJcbiAgICAgICAgICAgIGl0ZW0uaGVhZGluZy50eXBlID09PSAnZGlyZWN0aXZlJ1xuICAgICAgICAgICAgICAgID8gZGlyZWN0aXZlSGVhZGluZ1xuICAgICAgICAgICAgICAgIDogaXRlbS5oZWFkaW5nLnR5cGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBzdHJpbmdIZWFkaW5nXG4gICAgICAgICAgICAgICAgOiBpMThuSGVhZGluZ1xuICAgICAgICBcIlxuICAgID48L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZXNjcmlwdGlvblRlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGlyZWN0aXZlRGVzY3JpcHRpb24+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlIVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0uZGVzY3JpcHRpb24uZXJyb3IgfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNpMThuRGVzY3JpcHRpb24+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlIVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0uZXJyb3JzIH1cIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjc3RyaW5nRGVzY3JpcHRpb24+XG4gICAgICAgIHt7IGl0ZW0uZGVzY3JpcHRpb24ubWVzc2FnZSB8IGZkVHJhbnNsYXRlIDogeyBlcnJvcjogaXRlbS5kZXNjcmlwdGlvbi5lcnJvciB9IDogaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiXG4gICAgICAgICAgICBpdGVtLmhlYWRpbmcudHlwZSA9PT0gJ2RpcmVjdGl2ZSdcbiAgICAgICAgICAgICAgICA/IGRpcmVjdGl2ZURlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgOiBpdGVtLmhlYWRpbmcudHlwZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IHN0cmluZ0Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgOiBpMThuRGVzY3JpcHRpb25cbiAgICAgICAgXCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgY2xhc3M9XCJmZC1tZXNzYWdlLXZpZXdcIj5cbiAgICA8c2VjdGlvblxuICAgICAgICBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld19fbGlzdFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbQG9wZW5DbG9zZUxpc3RdPVwiY3VycmVudFNjcmVlbiA9PT0gJ2xpc3QnID8gJ29wZW4nIDogJ2Nsb3NlZCdcIlxuICAgICAgICAoQG9wZW5DbG9zZUxpc3QuZG9uZSk9XCJfb25MaXN0QW5pbWF0aW9uQ29tcGxldGUoJGV2ZW50KVwiXG4gICAgICAgIGZkLXNjcm9sbGJhclxuICAgICAgICBbb3ZlcnJpZGVUYWJpbmRleF09XCJmYWxzZVwiXG4gICAgPlxuICAgICAgICA8dWwgI2xpc3RWaWV3IGZkLWxpc3QgY2xhc3M9XCJtZXNzYWdlLXBvcG92ZXJfX2xpc3QgZmQtbGlzdC0tbWVzc2FnZS12aWV3XCIgW25hdmlnYXRpb25JbmRpY2F0b3JdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZmlsdGVyZWRFcnJvcnNcIj5cbiAgICAgICAgICAgICAgICA8bGkgZmQtbGlzdC1ncm91cC1oZWFkZXIgKm5nSWY9XCJncm91cC5ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRpdGxlPnt7IGdyb3VwLmdyb3VwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cC5lcnJvcnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGZkLWxpc3QtaXRlbSBbdGFiaW5kZXhdPVwiaSA9PT0gMCA/IDAgOiAtMVwiIFtieWxpbmVdPVwidHJ1ZVwiIChjbGljayk9XCJfc2hvd0RldGFpbHMoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbUljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWxpc3RfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cIml0ZW0uc3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ21lc3NhZ2UtJyArIGl0ZW0udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xpc3RTdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWxpc3RfX3N1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtbGlzdC1saW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hdmlnYXRpb25JbmRpY2F0b3JdPVwiISFpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5lbGVtZW50ICYmICEhaXRlbS5kZXNjcmlwdGlvbi5tZXNzYWdlOyBlbHNlIGFuY2hvckxpc3RMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbUljb25cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhYmluZGV4PVwiMFwiIGZkLWxpbmsgKGNsaWNrKT1cIl9mb2N1c0VsZW1lbnQoJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZmllbGROYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RTdWJ0aXRsZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhbmNob3JMaXN0TGluaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBmZC1saXN0LWxpbmsgW25hdmlnYXRpb25JbmRpY2F0b3JdPVwiISFpdGVtLmRlc2NyaXB0aW9uLm1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1JY29uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aXRsZT57eyBpdGVtLmZpZWxkTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0U3VidGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3VsPlxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld19fZGV0YWlsc1wiIFtAb3BlbkNsb3NlRGV0YWlsc109XCJjdXJyZW50U2NyZWVuID09PSAnZGV0YWlscycgPyAnb3BlbicgOiAnY2xvc2VkJ1wiPlxuICAgICAgICA8ZGl2ICNkZXRhaWxzVmlldz5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50RW50cnlcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZkLW1lc3NhZ2Utdmlld19fZGV0YWlscy10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtb2JqZWN0LXN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1tZXNzYWdlLXZpZXdfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXR1c109XCJjdXJyZW50RW50cnkuc3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidtZXNzYWdlLScgKyBjdXJyZW50RW50cnkudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY3VycmVudEVudHJ5IH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1tZXNzYWdlLXZpZXdfX2RldGFpbHMtZGVzY3JpcHRpb25cIiAqbmdJZj1cImN1cnJlbnRFbnRyeS5kZXNjcmlwdGlvbi5tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVzY3JpcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGN1cnJlbnRFbnRyeSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
@@ -9,17 +9,20 @@ export class MessagePopoverFormItemDirective {
9
9
  this.control = control;
10
10
  }
11
11
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormItemDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
12
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverFormItemDirective, selector: "[fdpMessagePopoverFormItem]", inputs: { label: ["fdpMessagePopoverFormItem", "label"] }, ngImport: i0 }); }
12
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: MessagePopoverFormItemDirective, isStandalone: true, selector: "[fdpMessagePopoverFormItem]", inputs: { label: ["fdpMessagePopoverFormItem", "label"], errorTypes: "errorTypes" }, ngImport: i0 }); }
13
13
  }
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: MessagePopoverFormItemDirective, decorators: [{
15
15
  type: Directive,
16
16
  args: [{
17
- selector: '[fdpMessagePopoverFormItem]'
17
+ selector: '[fdpMessagePopoverFormItem]',
18
+ standalone: true
18
19
  }]
19
20
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
20
21
  type: Optional
21
22
  }] }]; }, propDecorators: { label: [{
22
23
  type: Input,
23
24
  args: ['fdpMessagePopoverFormItem']
25
+ }], errorTypes: [{
26
+ type: Input
24
27
  }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3BvdmVyLWZvcm0taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvbWVzc2FnZS1wb3BvdmVyL2RpcmVjdGl2ZXMvbWVzc2FnZS1wb3BvdmVyLWZvcm0taXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUszQyxNQUFNLE9BQU8sK0JBQStCO0lBS3hDLGNBQWM7SUFDZCxZQUFtQixVQUFzQixFQUFxQixPQUFrQjtRQUE3RCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQXFCLFlBQU8sR0FBUCxPQUFPLENBQVc7SUFBRyxDQUFDOzhHQU4zRSwrQkFBK0I7a0dBQS9CLCtCQUErQjs7MkZBQS9CLCtCQUErQjtrQkFIM0MsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNkJBQTZCO2lCQUMxQzs7MEJBTytDLFFBQVE7NENBSHBELEtBQUs7c0JBREosS0FBSzt1QkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBNZXNzYWdlUG9wb3ZlckZvcm1JdGVtXSdcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVBvcG92ZXJGb3JtSXRlbURpcmVjdGl2ZSB7XG4gICAgLyoqIEZvcm0gaXRlbSBuYW1lLiAqL1xuICAgIEBJbnB1dCgnZmRwTWVzc2FnZVBvcG92ZXJGb3JtSXRlbScpXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIEBPcHRpb25hbCgpIHB1YmxpYyBjb250cm9sOiBOZ0NvbnRyb2wpIHt9XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wb3BvdmVyLWZvcm0taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvbWVzc2FnZS1wb3BvdmVyL2RpcmVjdGl2ZXMvbWVzc2FnZS1wb3BvdmVyLWZvcm0taXRlbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU8zQyxNQUFNLE9BQU8sK0JBQStCO0lBU3hDLGNBQWM7SUFDZCxZQUE0QixVQUFzQixFQUE4QixPQUFrQjtRQUF0RSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQThCLFlBQU8sR0FBUCxPQUFPLENBQVc7SUFBRyxDQUFDOzhHQVY3RiwrQkFBK0I7a0dBQS9CLCtCQUErQjs7MkZBQS9CLCtCQUErQjtrQkFKM0MsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQVd3RCxRQUFROzRDQVA3RCxLQUFLO3NCQURKLEtBQUs7dUJBQUMsMkJBQTJCO2dCQUtsQyxVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWVzc2FnZVBvcG92ZXJDb25maWcgfSBmcm9tICcuLi9kZWZhdWx0LWNvbmZpZyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW1dJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW1EaXJlY3RpdmUge1xuICAgIC8qKiBGb3JtIGl0ZW0gbmFtZS4gKi9cbiAgICBASW5wdXQoJ2ZkcE1lc3NhZ2VQb3BvdmVyRm9ybUl0ZW0nKVxuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogRXJyb3IgdHlwZSBkZWZpbml0aW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZXJyb3JUeXBlczogTWVzc2FnZVBvcG92ZXJDb25maWdbJ2Vycm9ycyddO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgQE9wdGlvbmFsKCkgcHVibGljIHJlYWRvbmx5IGNvbnRyb2w6IE5nQ29udHJvbCkge31cbn1cbiJdfQ==