@alauda-fe/common 1.3.1 → 1.4.1

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 (99) hide show
  1. package/api/auth-api.service.d.ts +14 -0
  2. package/api/platform-ui.service.d.ts +1 -0
  3. package/api/public-api.d.ts +1 -0
  4. package/array-form-table/form/component.d.ts +6 -2
  5. package/assets/icons/icon-refresh-drag.svg +1 -0
  6. package/authorization/interceptor.service.d.ts +2 -1
  7. package/authorization/public-api.d.ts +1 -0
  8. package/authorization/session-manage.service.d.ts +2 -4
  9. package/authorization/state.service.d.ts +19 -18
  10. package/authorization/storage-token.d.ts +4 -10
  11. package/core/constants/patterns.d.ts +4 -0
  12. package/core/directives/feature-gate.directive.d.ts +2 -1
  13. package/core/module.d.ts +21 -21
  14. package/core/pipes/minimum-format.pipe.d.ts +1 -1
  15. package/core/pipes/time.pipe.d.ts +1 -1
  16. package/core/services/context.service.d.ts +3 -4
  17. package/core/services/feature-gate.service.d.ts +1 -0
  18. package/core/services/workspace-helper.service.d.ts +3 -1
  19. package/core/types/commons.d.ts +2 -0
  20. package/core/types/k8s/crd.d.ts +64 -0
  21. package/core/types/resource-definitions.d.ts +3 -3
  22. package/core/utils/cache-store.d.ts +15 -13
  23. package/core/utils/common.d.ts +1 -2
  24. package/core/utils/public-api.d.ts +1 -0
  25. package/core/utils/router.d.ts +3 -0
  26. package/editable/editable.component.d.ts +23 -0
  27. package/editable/editable.directive.d.ts +9 -0
  28. package/editable/editable.type.d.ts +5 -0
  29. package/editable/public-api.d.ts +2 -0
  30. package/effect-directive/event.directive.d.ts +36 -0
  31. package/esm2022/api/auth-api.service.mjs +34 -0
  32. package/esm2022/api/platform-ui.service.mjs +2 -1
  33. package/esm2022/api/public-api.mjs +2 -1
  34. package/esm2022/array-form-table/form/component.mjs +30 -15
  35. package/esm2022/authorization/guard.service.mjs +2 -2
  36. package/esm2022/authorization/interceptor.service.mjs +31 -24
  37. package/esm2022/authorization/public-api.mjs +2 -1
  38. package/esm2022/authorization/session-manage.service.mjs +11 -24
  39. package/esm2022/authorization/state.service.mjs +94 -100
  40. package/esm2022/authorization/storage-token.mjs +12 -88
  41. package/esm2022/core/constants/patterns.mjs +6 -4
  42. package/esm2022/core/directives/feature-gate.directive.mjs +7 -4
  43. package/esm2022/core/guards/feature.guard.mjs +3 -2
  44. package/esm2022/core/module.mjs +7 -12
  45. package/esm2022/core/pipes/minimum-format.pipe.mjs +4 -3
  46. package/esm2022/core/pipes/time.pipe.mjs +3 -3
  47. package/esm2022/core/services/context.service.mjs +9 -12
  48. package/esm2022/core/services/feature-gate.service.mjs +4 -3
  49. package/esm2022/core/services/workspace-helper.service.mjs +7 -1
  50. package/esm2022/core/types/commons.mjs +1 -1
  51. package/esm2022/core/types/k8s/crd.mjs +8 -1
  52. package/esm2022/core/types/resource-definitions.mjs +2 -2
  53. package/esm2022/core/utils/cache-store.mjs +51 -29
  54. package/esm2022/core/utils/common.mjs +8 -10
  55. package/esm2022/core/utils/public-api.mjs +2 -1
  56. package/esm2022/core/utils/router.mjs +20 -0
  57. package/esm2022/editable/editable.component.mjs +136 -0
  58. package/esm2022/editable/editable.directive.mjs +25 -0
  59. package/esm2022/editable/editable.type.mjs +6 -0
  60. package/esm2022/editable/public-api.mjs +3 -0
  61. package/esm2022/effect-directive/event.directive.mjs +79 -4
  62. package/esm2022/exec/terminal/component.mjs +12 -19
  63. package/esm2022/k8s-resource-list/footer/component.mjs +63 -25
  64. package/esm2022/k8s-resource-list/k8s-resource-list.module.mjs +18 -6
  65. package/esm2022/k8s-resource-list/utils.mjs +7 -3
  66. package/esm2022/multi-search/multi-search-tags/component.mjs +2 -2
  67. package/esm2022/multi-search/types.mjs +1 -1
  68. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +55 -53
  69. package/esm2022/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.mjs +4 -4
  70. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +3 -8
  71. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +6 -10
  72. package/esm2022/pie-derivative-chart/pie-derivative-chart.module.mjs +6 -6
  73. package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +51 -40
  74. package/esm2022/pie-derivative-chart/units.mjs +14 -0
  75. package/esm2022/pod-status/component.mjs +34 -55
  76. package/esm2022/public-api.mjs +2 -1
  77. package/esm2022/searchable-selector/component.mjs +2 -2
  78. package/esm2022/table/component.mjs +47 -30
  79. package/esm2022/table/module.mjs +1 -1
  80. package/esm2022/view-chart/view-chart.component.mjs +5 -8
  81. package/esm2022/widget/public-api.mjs +2 -1
  82. package/esm2022/widget/resource-label/component.mjs +131 -0
  83. package/esm2022/widget/zero-state/zero-state.component.mjs +36 -21
  84. package/exec/terminal/component.d.ts +1 -3
  85. package/k8s-resource-list/footer/component.d.ts +8 -1
  86. package/k8s-resource-list/k8s-resource-list.module.d.ts +1 -1
  87. package/multi-search/types.d.ts +1 -0
  88. package/package.json +1 -1
  89. package/page-scaffold/page-header/common-layout/product-select/component.d.ts +1 -3
  90. package/pie-derivative-chart/radial-bar/radial-bar-chart.component.d.ts +4 -0
  91. package/pie-derivative-chart/units.d.ts +2 -0
  92. package/pod-status/component.d.ts +1 -3
  93. package/public-api.d.ts +1 -0
  94. package/styles/global.scss +1 -0
  95. package/styles/tailwind-preset.scss +1 -1
  96. package/table/component.d.ts +4 -3
  97. package/widget/public-api.d.ts +1 -0
  98. package/widget/resource-label/component.d.ts +25 -0
  99. package/widget/zero-state/zero-state.component.d.ts +4 -1
@@ -5,7 +5,7 @@ import { ComponentPortal, DomPortalOutlet, TemplatePortal, } from '@angular/cdk/
5
5
  import { ApplicationRef, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, EventEmitter, Injector, Input, Output, TemplateRef, ViewChild, ViewContainerRef, } from '@angular/core';
6
6
  import { timeFormat } from 'd3';
7
7
  import dayjs from 'dayjs';
8
- import { BehaviorSubject, map, merge, Observable, Subject, takeUntil, tap, combineLatest, startWith, } from 'rxjs';
8
+ import { BehaviorSubject, map, Observable, Subject, takeUntil, tap, combineLatest, startWith, } from 'rxjs';
9
9
  import { handleDateFormat, ObservableInput, pointFormat, publishRef, TranslateService, ValueHook, } from '../public-api';
10
10
  import { LegendComponent } from './legend/legend.component';
11
11
  import * as i0 from "@angular/core";
@@ -250,7 +250,6 @@ export class ViewChartComponent {
250
250
  get isScaleTime() {
251
251
  return this.scaleType === ScaleType.TIME;
252
252
  }
253
- // eslint-disable-next-line sonarjs/cognitive-complexity
254
253
  get options() {
255
254
  const defaultXAxisTickFormatter = this.isScaleTime
256
255
  ? () => timeFormat(this.dateAxisLabelFormats || '%H:%M')
@@ -342,9 +341,7 @@ export class ViewChartComponent {
342
341
  }
343
342
  }
344
343
  }
345
- constructor(
346
- // eslint-disable-next-line sonar/deprecation
347
- componentFactoryResolver, injector, appRef, translate, cdr, viewContainerRef) {
344
+ constructor(componentFactoryResolver, injector, appRef, translate, cdr, viewContainerRef) {
348
345
  this.componentFactoryResolver = componentFactoryResolver;
349
346
  this.injector = injector;
350
347
  this.appRef = appRef;
@@ -383,8 +380,8 @@ export class ViewChartComponent {
383
380
  startX: 0,
384
381
  endX: 0,
385
382
  };
386
- this.status$ = merge(this.chartStatus$, this._chartStatus$$).pipe(map(status => ({
387
- ...this._status,
383
+ this.status$ = combineLatest([this.chartStatus$, this._chartStatus$$]).pipe(map(([status, _status]) => ({
384
+ ..._status,
388
385
  ...status,
389
386
  })), tap(status => (this._status = status)), publishRef());
390
387
  this.isTemplateRef = isTemplateRef;
@@ -834,4 +831,4 @@ __decorate([
834
831
  type: Output
835
832
  }] }); })();
836
833
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ViewChartComponent, { className: "ViewChartComponent" }); })();
837
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvdmlldy1jaGFydC92aWV3LWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy92aWV3LWNoYXJ0L3ZpZXctY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFLTCxLQUFLLEVBTUwsV0FBVyxFQUNYLFNBQVMsR0FJVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGNBQWMsR0FDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBRXhCLFVBQVUsRUFFVixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFzQyxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEUsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsR0FBRyxFQUNILEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFNBQVMsRUFDVCxHQUFHLEVBQ0gsYUFBYSxFQUNiLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFLTCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLFdBQVcsRUFDWCxVQUFVLEVBRVYsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJC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cEIsS0FBSztZQUtHLFdBQVc7a0JBQW5CLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQU1OLFdBQVcsTUFFRixVQUFVO2tCQUFsQixLQUFLO1lBR04sV0FBVyxNQUdYLFlBQVksTUFFRixZQUFZO2tCQUFyQixNQUFNO1lBRUcsY0FBYztrQkFBdkIsTUFBTTtZQUVHLFlBQVk7a0JBQXJCLE1BQU07O2tGQXROSSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBQ2hhcnQsXG4gIEFyZWFTZXJpZXNPcHRpb24sXG4gIEJhckNvbHVtblBhcmFtcyxcbiAgQmFyU2VyaWVzT3B0aW9uLFxuICBDaGFydCxcbiAgQ2hhcnREYXRhLFxuICBMaW5lU2VyaWVzT3B0aW9uLFxuICBWaWV3T3B0aW9ucyxcbiAgUGVyY2VudGFnZSxcbiAgUGllU2VyaWVzT3B0aW9uLFxuICBSRUNUX0VWRU5UUyxcbiAgU2NhbGVUeXBlLFxuICBUb29sdGlwQ29udGV4dCxcbiAgVG9vbHRpcENvbnRleHRJdGVtLFxuICBWaWV3LFxufSBmcm9tICdAYWxhdWRhL2NoYXJ0JztcbmltcG9ydCB7IGlzVGVtcGxhdGVSZWYgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIENvbXBvbmVudFBvcnRhbCxcbiAgRG9tUG9ydGFsT3V0bGV0LFxuICBUZW1wbGF0ZVBvcnRhbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBBcHBsaWNhdGlvblJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBFbGVtZW50UmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEN1cnZlRmFjdG9yeSwgQ3VydmVGYWN0b3J5TGluZU9ubHksIHRpbWVGb3JtYXQgfSBmcm9tICdkMyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBtYXAsXG4gIG1lcmdlLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgY29tYmluZUxhdGVzdCxcbiAgc3RhcnRXaXRoLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgQXJlYVBvc2l0aW9uLFxuICBDaGFydERhdGFJdGVtLFxuICBDaGFydFN0YXR1cyxcbiAgQ29udGV4dEl0ZW0sXG4gIGhhbmRsZURhdGVGb3JtYXQsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgcG9pbnRGb3JtYXQsXG4gIHB1Ymxpc2hSZWYsXG4gIFN0cmluZ01hcCxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVmFsdWVIb29rLFxuICBYUGxvdExpbmVzLFxufSBmcm9tICcuLi9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgTGVnZW5kQ29tcG9uZW50IH0gZnJvbSAnLi9sZWdlbmQvbGVnZW5kLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBab29tUGFyYW1zIHtcbiAgeDogbnVtYmVyO1xuICB2YWx1ZTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtdmlldy1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVmlld0NoYXJ0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcblxuICBASW5wdXQoKSBoaWRlSGVhZGVyOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0Q29udGFpbmVyJykgY2hhcnRDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndGl0bGVDb250YWluZXInKSB0aXRsZUNvbnRhaW5lcjogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcEl0ZW1WaXJ0dWFsJykgdG9vbHRpcEl0ZW1WaXJ0dWFsOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBUaXRsZVZpcnR1YWwnKSB0b29sdGlwVGl0bGVWaXJ0dWFsOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBOYW1lVmlydHVhbCcpIHRvb2x0aXBOYW1lVmlydHVhbDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdwaWVMYWJlbENvbnRhaW5lcicpIHBpZUxhYmVsQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBtb2RlOiAnY2FyZCcgfCAnZGVmYXVsdCcgPSAnZGVmYXVsdCc7XG5cbiAgQElucHV0KCkgY3VzdG9tTm9EYXRhVGl0bGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGN1c3RvbUVycm9yQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBtYXJnaW5MZWZ0OiBudW1iZXI7XG5cbiAgQElucHV0KCkgZ3JpZE9mZnNldFRvcCA9IDA7XG5cbiAgQElucHV0KCkgcm90YXRlZDogYm9vbGVhbjtcblxuICAvLyBiYXNlXG4gIEBJbnB1dCgpIGNoYXJ0VHlwZTogJ2xpbmUnIHwgJ2FyZWEnIHwgJ2JhcicgfCAncGllJyB8ICdzY2F0dGVyJyA9ICdhcmVhJztcblxuICBASW5wdXQoKSBzZXJpZXM6IENoYXJ0RGF0YVtdO1xuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgc2VyaWVzJCE6IE9ic2VydmFibGU8Q2hhcnREYXRhW10+O1xuXG4gIEBJbnB1dCgpIHhBY2Nlc3NvciA9IChkOiBDaGFydERhdGFJdGVtKSA9PiBkLng7XG5cbiAgQElucHV0KCkgeUFjY2Vzc29yID0gKGQ6IENoYXJ0RGF0YUl0ZW0pID0+IGQueTtcblxuICBASW5wdXQoKSB1bml0OiBzdHJpbmc7XG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICB1bml0JCE6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBAVmFsdWVIb29rKGZ1bmN0aW9uIChcbiAgICB0aGlzOiBWaWV3Q2hhcnRDb21wb25lbnQsXG4gICAgY29udGV4dENhbGxiYWNrRnVuY3Rpb246IChjb250ZXh0OiBWaWV3KSA9PiB2b2lkLFxuICApIHtcbiAgICBpZiAoY29udGV4dENhbGxiYWNrRnVuY3Rpb24gJiYgIXRoaXMub3B0aW9ucz8uY29udGV4dENhbGxiYWNrRnVuY3Rpb24pIHtcbiAgICAgIHRoaXMuY2hhcnQ/LnNldE9wdGlvbnMoeyBjb250ZXh0Q2FsbGJhY2tGdW5jdGlvbiB9KTtcbiAgICB9XG4gIH0pXG4gIEBJbnB1dCgpXG4gIGNvbnRleHRDYWxsYmFja0Z1bmN0aW9uOiAoY29udGV4dDogVmlldykgPT4gdm9pZDtcblxuICAvLyB0aXRsZVxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgaGlkZVRpdGxlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHRpdGxlRGVzY3JpcHRpb246IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHRpdGxlRGVzY3JpcHRpb25Db250ZXh0OiBTdHJpbmdNYXA7XG5cbiAgQElucHV0KCkgdGl0bGVPZmZzZXRYOiBudW1iZXI7XG5cbiAgLy8gbGVnZW5kXG4gIEBJbnB1dCgpIGhpZGVMZWdlbmQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBsZWdlbmRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBzdHJpbmc7XG5cbiAgLy8gY3VzdG9tIGxlZ2VuZFxuICBASW5wdXQoKSBsZWZ0T3BlcmF0aW9uOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBsZWZ0T3BlcmF0aW9uQ29udGV4dDogU3RyaW5nTWFwO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBsZWZ0T3BlcmF0aW9uJCE6IE9ic2VydmFibGU8VGVtcGxhdGVSZWY8dW5rbm93bj4+O1xuXG4gIEBJbnB1dCgpIHJpZ2h0T3BlcmF0aW9uOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgcmlnaHRPcGVyYXRpb24kITogT2JzZXJ2YWJsZTxUZW1wbGF0ZVJlZjx1bmtub3duPj47XG5cbiAgQElucHV0KCkgbGVnZW5kU2VsZWN0QWxsT3BlcmF0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbGVnZW5kU2VsZWN0QWxsTmFtZTogc3RyaW5nO1xuXG4gIC8vIGF4aXNcblxuICBASW5wdXQoKSB5QXhpc1RpY2tTdWZmaXg6IHN0cmluZztcblxuICBASW5wdXQoKSBkYXRlQXhpc0xhYmVsRm9ybWF0czogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHhBeGlzTGFiZWxUcmFuc2xhdGlvbjogYm9vbGVhbjtcblxuICBASW5wdXQoKSB4U2NhbGVUeXBlOiBTY2FsZVR5cGU7XG5cbiAgQElucHV0KCkgeEF4aXNUaWNrRm9ybWF0dGVyOiBzdHJpbmcgfCAoKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZyk7XG5cbiAgQElucHV0KCkgdGlja3M6IHVua25vd247XG5cbiAgQElucHV0KCkgeUF4aXNUaWNrRm9ybWF0dGVyOiBzdHJpbmcgfCAoKHZhbHVlOiBudW1iZXIpID0+IHN0cmluZyk7XG5cbiAgQElucHV0KCkgeUF4aXNNaW5TdGVwPzogbnVtYmVyO1xuXG4gIC8vIHRvb2x0aXBcbiAgQElucHV0KCkgdG9vbHRpcFRyaWdnZXI6ICdheGlzJyB8ICdpdGVtJyB8ICdub25lJztcblxuICBASW5wdXQoKSB0b29sdGlwQXV0b1NvcnQgPSBmYWxzZTtcblxuICBASW5wdXQoKSB0b29sdGlwSGlkZVRpdGxlOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBDb2x1bW5MYXlvdXQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgdG9vbHRpcFRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBQb2ludE5hbWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgdG9vbHRpcFRyYW5zbGF0aW9uOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBUaXRsZVRyYW5zbGF0aW9uOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGhpZGVUb29sdGlwVW5pdDogYm9vbGVhbjtcblxuICBASW5wdXQoKSB0b29sdGlwUG9pbnRGb3JtYXQ6IChkOiBDb250ZXh0SXRlbSkgPT4gbnVtYmVyIHwgc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBQb2ludFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSB0b29sdGlwUG9pbnRUZW1wbGF0ZUNvbnRleHQ6IHVua25vd247XG5cbiAgLy8gc2VyaWVzXG4gIEBJbnB1dCgpIGJhbmRXaWR0aCA9IDEwO1xuXG4gIEBJbnB1dCgpIG1pbkhlaWdodDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIHN0ZXBMaW5lOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGN1cnZlVHlwZTogQ3VydmVGYWN0b3J5IHwgQ3VydmVGYWN0b3J5TGluZU9ubHk7XG5cbiAgQElucHV0KCkgYmFyVHlwZTogJ3N0YW5kYXJkJyB8ICdzdGFja2VkJyA9ICdzdGFuZGFyZCc7XG5cbiAgQElucHV0KCkgc3RhcnRPcGFjaXR5OiBudW1iZXI7XG5cbiAgQElucHV0KCkgZW5kT3BhY2l0eTogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIGxpbmVXaWR0aD86IG51bWJlcjtcblxuICAvLyBiYXIgc2VyaWVzXG4gIEBJbnB1dCgpIGlzR3JvdXA6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgYmFyUmFkaXVzOiBudW1iZXI7XG5cbiAgQElucHV0KCkgY2xvc2VSYWRpdXNMYWRkZXI6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgY29sdW1uQ2xpY2s6IChkYXRhOiBCYXJDb2x1bW5QYXJhbXMpID0+IHZvaWQ7XG5cbiAgLy8gem9vbVxuICBASW5wdXQoKSBlbmFibGVab29tOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNoYXJ0U3RhdHVzOiBDaGFydFN0YXR1cztcblxuICAvLyBwbG90IGxpbmVcbiAgQElucHV0KCkgeVBsb3RMaW5lc0hpZGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSB5UGxvdExpbmVzOiBUb29sdGlwQ29udGV4dDtcblxuICAvLyBwaWVcbiAgQElucHV0KCkgcGllSW5uZXJSYWRpdXM6IG51bWJlciB8IFBlcmNlbnRhZ2U7XG5cbiAgQElucHV0KCkgcGllT3V0ZXJSYWRpdXM6IG51bWJlciB8IFBlcmNlbnRhZ2U7XG5cbiAgQElucHV0KCkgcGllU3RhcnRBbmdsZTogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIHBpZUVuZEFuZ2xlOiBudW1iZXI7XG5cbiAgQElucHV0KCkgcGllQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcGllVG90YWw6IG51bWJlcjtcblxuICBASW5wdXQoKSBwaWVJbm5lckRpc2M6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgcGllTGFiZWxUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBwaWVMYWJlbFBvc2l0aW9uOiB7IHg6IHN0cmluZzsgeTogc3RyaW5nIH07XG5cbiAgQElucHV0KCkgcGllSXRlbVN0eWxlPzoge1xuICAgIGJvcmRlclJhZGl1cz86IG51bWJlcjtcbiAgfTtcblxuICAvLyBzY2F0dGVyXG4gIEBJbnB1dCgpIHNjYXR0ZXJUeXBlOiAnYnViYmxlJztcbiAgQElucHV0KCkgc2NhdHRlck9wYWNpdHk6IG51bWJlcjtcbiAgQElucHV0KCkgc2NhdHRlclNpemU6IG51bWJlcjtcbiAgQElucHV0KCkgc2NhdHRlclRocmVzaG9sZDoge1xuICAgIG1pblNpemU6IG51bWJlcjtcbiAgICBtYXhTaXplOiBudW1iZXI7XG4gIH07XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIHlQbG90TGluZXMkITogT2JzZXJ2YWJsZTxUb29sdGlwQ29udGV4dD47XG5cbiAgQElucHV0KCkgeFBsb3RMaW5lczogWFBsb3RMaW5lcztcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgeFBsb3RMaW5lcyQhOiBPYnNlcnZhYmxlPFhQbG90TGluZXM+O1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBjaGFydFN0YXR1cyQhOiBPYnNlcnZhYmxlPENoYXJ0U3RhdHVzPjtcblxuICBAT3V0cHV0KCkgbW91c2VVcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxBcmVhUG9zaXRpb24+KCk7XG5cbiAgQE91dHB1dCgpIG1hcmtDbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxUb29sdGlwQ29udGV4dD4oKTtcblxuICBAT3V0cHV0KCkgcmVmcmVzaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgX2NoYXJ0U3RhdHVzJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoYXJ0U3RhdHVzPih7XG4gICAgbG9hZGluZzogdHJ1ZSxcbiAgICBub0RhdGE6IGZhbHNlLFxuICAgIGZhaWxlZDogZmFsc2UsXG4gICAgbm9MZWdlbmQ6IGZhbHNlLFxuICB9KTtcblxuICBfc3RhdHVzOiBDaGFydFN0YXR1cyA9IHt9O1xuXG4gIGNoYXJ0OiBBQ2hhcnQ7XG5cbiAgYXJlYVBvc2l0aW9uOiBBcmVhUG9zaXRpb24gPSB7XG4gICAgeDE6IDAsXG4gICAgeDI6IDAsXG4gICAgc3RhcnRYOiAwLFxuICAgIGVuZFg6IDAsXG4gIH07XG5cbiAgc3RhdHVzJCA9IG1lcmdlKHRoaXMuY2hhcnRTdGF0dXMkLCB0aGlzLl9jaGFydFN0YXR1cyQkKS5waXBlKFxuICAgIG1hcChzdGF0dXMgPT4gKHtcbiAgICAgIC4uLnRoaXMuX3N0YXR1cyxcbiAgICAgIC4uLnN0YXR1cyxcbiAgICB9KSksXG4gICAgdGFwKHN0YXR1cyA9PiAodGhpcy5fc3RhdHVzID0gc3RhdHVzKSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGdldCBiYWNrZ3JvdW5kKCkge1xuICAgIHJldHVybiB0aGlzLmJhY2tncm91bmRDb2xvcjtcbiAgfVxuXG4gIGlzVGVtcGxhdGVSZWYgPSBpc1RlbXBsYXRlUmVmO1xuXG4gIGN1c3RvbUxlZ2VuZFJlZjogQ29tcG9uZW50UmVmPExlZ2VuZENvbXBvbmVudD47XG5cbiAgY3VzdG9tVGl0bGVSZWY6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICBjdXN0b21QaWVMYWJlbFRleHRSZWY6IEVtYmVkZGVkVmlld1JlZjx1bmtub3duPjtcblxuICB0b29sdGlwSXRlbUNvbnRleHQ6IHsgY29udGV4dDogVG9vbHRpcENvbnRleHRJdGVtW10gfSA9IHsgY29udGV4dDogW10gfTtcblxuICB0b29sdGlwVGl0bGVDb250ZXh0OiB7IGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0IH0gPSB7IGNvbnRleHQ6IG51bGwgfTtcblxuICBnZXQgc2VyaWVzT3B0aW9ucygpIHtcbiAgICBjb25zdCBiYXJTZXJpZXMgPSB7XG4gICAgICBzdGFjazogdGhpcy5iYXJUeXBlID09PSAnc3RhY2tlZCcsXG4gICAgICBiYW5kd2lkdGg6IHRoaXMuYmFuZFdpZHRoLFxuICAgICAgaXNHcm91cDogdGhpcy5pc0dyb3VwLFxuICAgICAgcmFkaXVzOiB0aGlzLmJhclJhZGl1cyxcbiAgICAgIGNsb3NlUmFkaXVzTGFkZGVyOiB0aGlzLmNsb3NlUmFkaXVzTGFkZGVyLFxuICAgICAgY29sdW1uQ2xpY2s6IHRoaXMuY29sdW1uQ2xpY2sgfHwgbnVsbCxcbiAgICAgIG1pbkhlaWdodDogdGhpcy5taW5IZWlnaHQsXG4gICAgfTtcbiAgICBjb25zdCBsaW5lU2VyaWVzID0ge1xuICAgICAgc3RlcDogdGhpcy5zdGVwTGluZSxcbiAgICAgIGN1cnZlVHlwZTogdGhpcy5jdXJ2ZVR5cGUsXG4gICAgICBsaW5lV2lkdGg6IHRoaXMubGluZVdpZHRoLFxuICAgIH07XG4gICAgY29uc3QgYXJlYVNlcmllcyA9IHtcbiAgICAgIGN1cnZlVHlwZTogdGhpcy5jdXJ2ZVR5cGUsXG4gICAgICBzdGFydE9wYWNpdHk6IHRoaXMuc3RhcnRPcGFjaXR5LFxuICAgICAgZW5kT3BhY2l0eTogdGhpcy5lbmRPcGFjaXR5LFxuICAgICAgbGluZVdpZHRoOiB0aGlzLmxpbmVXaWR0aCxcbiAgICB9O1xuXG4gICAgc3dpdGNoICh0aGlzLmNoYXJ0VHlwZSkge1xuICAgICAgY2FzZSAnYmFyJzoge1xuICAgICAgICByZXR1cm4gYmFyU2VyaWVzIGFzIEJhclNlcmllc09wdGlvbjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2xpbmUnOiB7XG4gICAgICAgIHJldHVybiBsaW5lU2VyaWVzIGFzIExpbmVTZXJpZXNPcHRpb247XG4gICAgICB9XG4gICAgICBjYXNlICdhcmVhJzoge1xuICAgICAgICByZXR1cm4gYXJlYVNlcmllcyBhcyBBcmVhU2VyaWVzT3B0aW9uO1xuICAgICAgfVxuICAgICAgY2FzZSAncGllJzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlubmVyUmFkaXVzOiB0aGlzLnBpZUlubmVyUmFkaXVzLFxuICAgICAgICAgIG91dGVyUmFkaXVzOiB0aGlzLnBpZU91dGVyUmFkaXVzLFxuICAgICAgICAgIHN0YXJ0QW5nbGU6IHRoaXMucGllU3RhcnRBbmdsZSxcbiAgICAgICAgICBlbmRBbmdsZTogdGhpcy5waWVFbmRBbmdsZSxcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMucGllQmFja2dyb3VuZENvbG9yIHx8ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgdG90YWw6IHRoaXMucGllVG90YWwsXG4gICAgICAgICAgbGFiZWw6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgIHg6IHRoaXMucGllTGFiZWxQb3NpdGlvbj8ueCB8fCAnNTAlJyxcbiAgICAgICAgICAgICAgeTogdGhpcy5waWVMYWJlbFBvc2l0aW9uPy55IHx8ICc1MCUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlubmVyRGlzYzogdGhpcy5waWVJbm5lckRpc2MsXG4gICAgICAgICAgaXRlbVN0eWxlOiB0aGlzLnBpZUl0ZW1TdHlsZSB8fCB7IGJvcmRlclJhZGl1czogdGhpcy5iYW5kV2lkdGggLyAyIH0sXG4gICAgICAgIH0gYXMgUGllU2VyaWVzT3B0aW9uO1xuICAgICAgfVxuICAgICAgY2FzZSAnc2NhdHRlcic6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzaXplOiB0aGlzLnNjYXR0ZXJTaXplLFxuICAgICAgICAgIC4uLnRoaXMuc2NhdHRlclRocmVzaG9sZCxcbiAgICAgICAgICB0eXBlOiB0aGlzLnNjYXR0ZXJUeXBlLFxuICAgICAgICAgIG9wYWNpdHk6IHRoaXMuc2NhdHRlck9wYWNpdHksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgaXNDYXJkTW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnY2FyZCc7XG4gIH1cblxuICBnZXQgc2NhbGVUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnhTY2FsZVR5cGUgfHwgU2NhbGVUeXBlLlRJTUU7XG4gIH1cblxuICBnZXQgaXNTY2FsZVRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGVUeXBlID09PSBTY2FsZVR5cGUuVElNRTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG4gIGdldCBvcHRpb25zKCk6IFZpZXdPcHRpb25zIHtcbiAgICBjb25zdCBkZWZhdWx0WEF4aXNUaWNrRm9ybWF0dGVyID0gdGhpcy5pc1NjYWxlVGltZVxuICAgICAgPyAoKSA9PiB0aW1lRm9ybWF0KHRoaXMuZGF0ZUF4aXNMYWJlbEZvcm1hdHMgfHwgJyVIOiVNJylcbiAgICAgIDogbnVsbDtcbiAgICBjb25zdCB4QXhpc1RpY2tGb3JtYXR0ZXIgPVxuICAgICAgdGhpcy54QXhpc1RpY2tGb3JtYXR0ZXIgfHwgZGVmYXVsdFhBeGlzVGlja0Zvcm1hdHRlcjtcbiAgICByZXR1cm4ge1xuICAgICAgY3VzdG9tSGVhZGVyOiB0aGlzLmNoYXJ0VHlwZSAhPT0gJ3BpZScsXG4gICAgICB0eXBlOiB0aGlzLnN0ZXBMaW5lID8gJ2xpbmUnIDogdGhpcy5jaGFydFR5cGUsXG4gICAgICBvZmZzZXQ6IHtcbiAgICAgICAgeDogdGhpcy5tYXJnaW5MZWZ0LFxuICAgICAgICB5OiB0aGlzLmlzQ2FyZE1vZGUgPyA1IDogMCxcbiAgICAgIH0sXG4gICAgICByb3RhdGVkOiB0aGlzLnJvdGF0ZWQsXG4gICAgICB0aXRsZToge1xuICAgICAgICB0ZXh0OiB0aGlzLnRpdGxlIGFzIHN0cmluZyxcbiAgICAgICAgb2Zmc2V0WDogdGhpcy50aXRsZU9mZnNldFgsXG4gICAgICAgIGhpZGU6IHRoaXMuaGlkZVRpdGxlIHx8IHRoaXMuaGlkZUhlYWRlcixcbiAgICAgICAgZm9ybWF0dGVyOiAoKSA9PiAnJyxcbiAgICAgIH0sXG4gICAgICBsZWdlbmQ6IHtcbiAgICAgICAgaGlkZTogdGhpcy5oaWRlSGVhZGVyLFxuICAgICAgICBmb3JtYXR0ZXI6ICgpID0+ICcnLFxuICAgICAgICBvZmZzZXRZOiB0aGlzLmlzQ2FyZE1vZGUgPyAtOCA6IDAsXG4gICAgICAgIGlzTW91bnQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgZ3JpZDogeyB0b3A6IHRoaXMuZ3JpZE9mZnNldFRvcCB8fCAwIH0sXG4gICAgICB5QXhpczoge1xuICAgICAgICB0aWNrRm9ybWF0dGVyOlxuICAgICAgICAgIHRoaXMueUF4aXNUaWNrRm9ybWF0dGVyIHx8XG4gICAgICAgICAgKCh2YWx1ZTogbnVtYmVyKSA9PlxuICAgICAgICAgICAgYCR7dGhpcy5jb252ZXJzaW9uTWF4aW11bSh2YWx1ZSl9JHt0aGlzLnlBeGlzVGlja1N1ZmZpeCB8fCAnJ31gKSxcbiAgICAgICAgbWluU3RlcDogdGhpcy55QXhpc01pblN0ZXAsXG4gICAgICB9LFxuICAgICAgeEF4aXM6IHtcbiAgICAgICAgdHlwZTogdGhpcy54U2NhbGVUeXBlIHx8IFNjYWxlVHlwZS5USU1FLFxuICAgICAgICB0aWNrRm9ybWF0dGVyOiB4QXhpc1RpY2tGb3JtYXR0ZXIsXG4gICAgICAgIHRpY2tzOiB0aGlzLnRpY2tzLFxuICAgICAgfSxcbiAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgaGlkZVRpdGxlOiB0aGlzLnRvb2x0aXBIaWRlVGl0bGUsXG4gICAgICAgIHRyaWdnZXI6IHRoaXMudG9vbHRpcFRyaWdnZXJUeXBlLFxuICAgICAgICB0aXRsZUZvcm1hdHRlcjogdGhpcy50aXRsZUZvcm1hdHRlcixcbiAgICAgICAgaXRlbUZvcm1hdHRlcjogKGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0SXRlbVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy50b29sdGlwSXRlbUNvbnRleHQgPSB0aGlzLm1lcmdlUG9pbnRDb250ZXh0KGNvbnRleHQpO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy50b29sdGlwUG9pbnRUZW1wbGF0ZVxuICAgICAgICAgICAgPyB0aGlzLnRvb2x0aXBJdGVtVmlydHVhbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTFxuICAgICAgICAgICAgOiB0aGlzLnRvb2x0aXBJdGVtQ29udGV4dC5jb250ZXh0O1xuICAgICAgICB9LFxuICAgICAgICBuYW1lRm9ybWF0dGVyOiAoeyBuYW1lIH0pID0+XG4gICAgICAgICAgdGhpcy50b29sdGlwVHJhbnNsYXRpb24gPyB0aGlzLnRyYW5zbGF0ZS5nZXQobmFtZSwgbnVsbCwgdHJ1ZSkgOiBuYW1lLFxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdGhpcy52YWx1ZUZvcm1hdHRlcixcbiAgICAgICAgc29ydDogdGhpcy50b29sdGlwQXV0b1NvcnQgPyAoYSwgYikgPT4gYi55IC0gYS55IDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBzZXJpZXNPcHRpb246IHRoaXMuc2VyaWVzT3B0aW9ucyxcbiAgICAgIHpvb206IHtcbiAgICAgICAgZW5hYmxlZDogdGhpcy5lbmFibGVab29tLFxuICAgICAgICBvbnpvb21TdGFydDogKGQ6IFpvb21QYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLmFyZWFQb3NpdGlvbi54MSA9IGQueDtcbiAgICAgICAgICB0aGlzLmFyZWFQb3NpdGlvbi5zdGFydFggPSBkLnZhbHVlLng7XG4gICAgICAgIH0sXG4gICAgICAgIG9uem9vbUVuZDogKGQ6IFpvb21QYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLmFyZWFQb3NpdGlvbi54MiA9IGQueDtcbiAgICAgICAgICB0aGlzLmFyZWFQb3NpdGlvbi5lbmRYID0gZC52YWx1ZS54O1xuICAgICAgICAgIGNvbnN0IHsgc3RhcnRYLCBlbmRYIH0gPSB0aGlzLmFyZWFQb3NpdGlvbjtcbiAgICAgICAgICBpZiAoc3RhcnRYICE9PSBlbmRYKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlVXBFdmVudC5uZXh0KHRoaXMuYXJlYVBvc2l0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgeFBsb3RMaW5lOiB7XG4gICAgICAgIGNvbG9yOiAncmVkJyxcbiAgICAgIH0sXG4gICAgICBjb250ZXh0Q2FsbGJhY2tGdW5jdGlvbjogdGhpcy5jb250ZXh0Q2FsbGJhY2tGdW5jdGlvbixcbiAgICB9O1xuICB9XG5cbiAgZ2V0IHRvb2x0aXBUcmlnZ2VyVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50b29sdGlwVHJpZ2dlciB8fCB0aGlzLmdldFRyaWdnZXJUeXBlKCk7XG4gIH1cblxuICBnZXRUcmlnZ2VyVHlwZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMuY2hhcnRUeXBlKSB7XG4gICAgICBjYXNlICdsaW5lJzpcbiAgICAgIGNhc2UgJ2FyZWEnOlxuICAgICAgY2FzZSAnYmFyJzoge1xuICAgICAgICByZXR1cm4gJ2F4aXMnO1xuICAgICAgfVxuICAgICAgY2FzZSAnc2NhdHRlcic6IHtcbiAgICAgICAgcmV0dXJuICdpdGVtJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3BpZSc6IHtcbiAgICAgICAgcmV0dXJuICdub25lJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXIvZGVwcmVjYXRpb25cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoeyBlbmFibGVab29tIH06IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoZW5hYmxlWm9vbT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNoYXJ0Py5zZXRPcHRpb25zKHsgem9vbTogeyBlbmFibGVkOiB0cnVlIH0gfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhcnQgPSBDaGFydCh7XG4gICAgICBjb250YWluZXI6IHRoaXMuY2hhcnRDb250YWluZXIubmF0aXZlRWxlbWVudCxcbiAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIGRhdGE6IFtdLFxuICAgIH0pO1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuc2VyaWVzJCwgdGhpcy54UGxvdExpbmVzJC5waXBlKHN0YXJ0V2l0aChudWxsKSldKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKFtkYXRhLCByZXNdKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQuc2V0T3B0aW9ucyh7XG4gICAgICAgICAgICAgIHR5cGU6XG4gICAgICAgICAgICAgICAgZGF0YS5sZW5ndGggPiAzICYmIHRoaXMuY2hhcnRUeXBlID09PSAnYXJlYSdcbiAgICAgICAgICAgICAgICAgID8gJ2xpbmUnXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuY2hhcnRUeXBlLFxuICAgICAgICAgICAgICBzZXJpZXNPcHRpb246IHtcbiAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IGRhdGEubGVuZ3RoID4gMyA/IDEgOiB0aGlzLmxpbmVXaWR0aCxcbiAgICAgICAgICAgICAgICBhY3RpdmVMaW5lV2lkdGg6IGRhdGEubGVuZ3RoID4gMyA/IDIgOiAzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB5QXhpczoge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy55QXhpcyxcbiAgICAgICAgICAgICAgICBtYXg6IHJlcz8udmFsdWUgfHwgdGhpcy5vcHRpb25zLnlBeGlzLm1heCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5oYW5kZWxEYXRhKGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5jaGFydC5kYXRhKHZhbHVlcyk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRDdXN0b21MZWdlbmQodGhpcy5jaGFydC5jaGFydFVJZCk7XG4gICAgICAgICAgICAgIHRoaXMuYWRkQ3VzdG9tVGl0bGUodGhpcy5jaGFydC5jaGFydFVJZCk7XG4gICAgICAgICAgICAgIHRoaXMuYWRkUGllTGFiZWxUZXh0KHRoaXMuY2hhcnQuY2hhcnRVSWQpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICBjb25zdCBsZWdlbmRJdGVtcyA9IHRoaXMuY2hhcnQuZ2V0Q29udHJvbGxlcignbGVnZW5kJykubGVnZW5kSXRlbXM7XG4gICAgICAgICAgICB0aGlzLmhhbmRlbENoYXJ0U3RhdHVzKHtcbiAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgIG5vTGVnZW5kOlxuICAgICAgICAgICAgICAgIGxlZ2VuZEl0ZW1zLmxlbmd0aCAmJiBsZWdlbmRJdGVtcy5ldmVyeShpdGVtID0+ICFpdGVtLmFjdGl2YXRlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0Py51cGRhdGVYUGxvdExpbmUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB0aGlzLmNoYXJ0Lm9uKFJFQ1RfRVZFTlRTLkNMSUNLLCAodmFsdWU6IFRvb2x0aXBDb250ZXh0KSA9PiB7XG4gICAgICB0aGlzLm1hcmtDbGlja0V2ZW50Lm5leHQodmFsdWUpO1xuICAgICAgaWYgKCF0aGlzLnlQbG90TGluZXNIaWRlICYmIHRoaXMueVBsb3RMaW5lcykge1xuICAgICAgICB0aGlzLmNoYXJ0LnVwZGF0ZVlQbG90TGluZSh7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgdGl0bGU6IGRheWpzKHZhbHVlLnRpdGxlKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy55UGxvdExpbmVzJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5jaGFydC51cGRhdGVZUGxvdExpbmUoe1xuICAgICAgICAgIC4uLnJlcyxcbiAgICAgICAgICB0aXRsZTogZGF5anMocmVzLnRpdGxlKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBoYW5kZWxEYXRhKGRhdGE6IENoYXJ0RGF0YVtdKSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKGQgPT4gKHtcbiAgICAgIC4uLmQsXG4gICAgICB2YWx1ZXM6IGQudmFsdWVzPy5tYXAodiA9PiAoe1xuICAgICAgICAuLi52LFxuICAgICAgICB4OiB0aGlzLnhBY2Nlc3Nvcih2KSxcbiAgICAgICAgeTogdGhpcy55QWNjZXNzb3IodiksXG4gICAgICB9KSksXG4gICAgfSkpO1xuICB9XG5cbiAgYWRkQ3VzdG9tTGVnZW5kKGNoYXJ0VUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkb20gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHtjaGFydFVJZH0gLmFjLWxlZ2VuZGApO1xuICAgIGlmICghdGhpcy5jdXN0b21MZWdlbmRSZWYgJiYgZG9tICYmICF0aGlzLmhpZGVIZWFkZXIpIHtcbiAgICAgIGNvbnN0IHAgPSBuZXcgQ29tcG9uZW50UG9ydGFsKExlZ2VuZENvbXBvbmVudCk7XG4gICAgICBjb25zdCBvID0gbmV3IERvbVBvcnRhbE91dGxldChcbiAgICAgICAgZG9tLFxuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgdGhpcy5hcHBSZWYsXG4gICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICApO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYgPSBwLmF0dGFjaChvKTtcbiAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLmNoYXJ0ID0gdGhpcy5jaGFydDtcbiAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLnN5bWJvbCA9IFsnYmFyJywgJ3BpZScsICdzY2F0dGVyJ10uaW5jbHVkZXMoXG4gICAgICAgIHRoaXMuY2hhcnRUeXBlLFxuICAgICAgKVxuICAgICAgICA/ICdjaXJjbGUnXG4gICAgICAgIDogJ2xpbmUnO1xuICAgICAgdGhpcy5sZWZ0T3BlcmF0aW9uJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5sZWZ0T3BlcmF0aW9uID0gdGhpcy5sZWZ0T3BlcmF0aW9uO1xuICAgICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5sZWZ0T3BlcmF0aW9uQ29udGV4dCA9XG4gICAgICAgICAgdGhpcy5sZWZ0T3BlcmF0aW9uQ29udGV4dDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJpZ2h0T3BlcmF0aW9uJC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5yaWdodE9wZXJhdGlvbiA9IHRoaXMucmlnaHRPcGVyYXRpb247XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGU7XG4gICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5oaWRlTGVnZW5kID0gdGhpcy5oaWRlTGVnZW5kO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2Uuc2VsZWN0QWxsTmFtZSA9IHRoaXMubGVnZW5kU2VsZWN0QWxsTmFtZTtcbiAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLnNlbGVjdEFsbE9wZXJhdGlvbiA9XG4gICAgICAgIHRoaXMubGVnZW5kU2VsZWN0QWxsT3BlcmF0aW9uO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2UudGVtcGxhdGUgPSB0aGlzLmxlZ2VuZFRlbXBsYXRlO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2UuY2hhbmdlTGVnZW5kXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kZWxDaGFydFN0YXR1cyh7XG4gICAgICAgICAgICBub0xlZ2VuZDogcmVzLmV2ZXJ5KGl0ZW0gPT4gIWl0ZW0uYWN0aXZhdGUpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRDdXN0b21UaXRsZShjaGFydFVJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZG9tID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7Y2hhcnRVSWR9IC5hYy10aXRsZWApO1xuICAgIGlmICghdGhpcy5jdXN0b21UaXRsZVJlZiAmJiBkb20gJiYgIXRoaXMuaGlkZUhlYWRlcikge1xuICAgICAgY29uc3QgcCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRpdGxlQ29udGFpbmVyLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgY29uc3QgbyA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoXG4gICAgICAgIGRvbSxcbiAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHRoaXMuYXBwUmVmLFxuICAgICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY3VzdG9tVGl0bGVSZWYgPSBwLmF0dGFjaChvKTtcbiAgICB9XG4gIH1cblxuICBhZGRQaWVMYWJlbFRleHQoY2hhcnRVSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGRvbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke2NoYXJ0VUlkfSAuYWMtcGllLWd1aWRlYCk7XG4gICAgaWYgKCF0aGlzLmN1c3RvbVBpZUxhYmVsVGV4dFJlZiAmJiBkb20gJiYgdGhpcy5waWVMYWJlbFRleHQpIHtcbiAgICAgIGNvbnN0IHAgPSBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIHRoaXMucGllTGFiZWxDb250YWluZXIsXG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICk7XG4gICAgICBjb25zdCBvID0gbmV3IERvbVBvcnRhbE91dGxldChcbiAgICAgICAgZG9tLFxuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgdGhpcy5hcHBSZWYsXG4gICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICApO1xuICAgICAgdGhpcy5jdXN0b21QaWVMYWJlbFRleHRSZWYgPSBwLmF0dGFjaChvKTtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMucmVmcmVzaEV2ZW50Lm5leHQobnVsbCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmPy5kZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IG1lcmdlUG9pbnRDb250ZXh0ID0gKGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0SXRlbVtdKSA9PiAoe1xuICAgIGNvbnRleHQ6IHRoaXMubGltaXRNYXhDb250ZXh0KGNvbnRleHQpLFxuICAgIC4uLih0aGlzLnRvb2x0aXBQb2ludFRlbXBsYXRlQ29udGV4dCBhcyBTdHJpbmdNYXApLFxuICB9KTtcblxuICBwcml2YXRlIGhhbmRlbENoYXJ0U3RhdHVzKHN0YXR1czogQ2hhcnRTdGF0dXMpIHtcbiAgICB0aGlzLl9jaGFydFN0YXR1cyQkLm5leHQoe1xuICAgICAgLi4uc3RhdHVzLFxuICAgIH0pO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbGltaXRNYXhDb250ZXh0KGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0SXRlbVtdLCBsaW1pdCA9IDE1KSB7XG4gICAgY29uc3QgdmFsdWVzID0gY29udGV4dC5zbGljZSgwLCBsaW1pdCk7XG4gICAgY29uc3QgZXhpc3RBY3RpdmUgPVxuICAgICAgY29udGV4dC5zb21lKGl0ZW0gPT4gaXRlbS5hY3RpdmF0ZWQpICYmIHZhbHVlcy5zb21lKGQgPT4gIWQuYWN0aXZhdGVkKTtcbiAgICBpZiAoIWV4aXN0QWN0aXZlICYmIGNvbnRleHQubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBjb250ZXh0LmZpbmQoaXRlbSA9PiBpdGVtLmFjdGl2YXRlZCk7XG4gICAgICByZXR1cm4gZGF0YSA/IFsuLi52YWx1ZXMuc2xpY2UoMCwgbGltaXQgLSAxKSwgZGF0YV0gOiB2YWx1ZXM7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRQb2ludEZvcm1hdCA9IHBvaW50Rm9ybWF0O1xuXG4gIHByaXZhdGUgY29udmVyc2lvbk1heGltdW0odmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IHVuaXQgPSAnayc7XG4gICAgaWYgKHZhbHVlID49IDEwMDApIHtcbiAgICAgIGNvbnN0IG51bSA9ICsodmFsdWUgLyAxMDAwKS50b0ZpeGVkKDIpO1xuICAgICAgcmV0dXJuIGAke251bX0ke3VuaXR9YDtcbiAgICB9XG4gICAgcmV0dXJuICcnICsgdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlRm9ybWF0dGVyID0gKGNvbnRleHQ6IFRvb2x0aXBDb250ZXh0KSA9PiB7XG4gICAgdGhpcy50b29sdGlwVGl0bGVDb250ZXh0ID0geyBjb250ZXh0IH07XG4gICAgY29uc3QgdGl0bGUgPVxuICAgICAgdGhpcy50b29sdGlwVHJhbnNsYXRpb24gJiYgIXRoaXMudG9vbHRpcFRpdGxlVGVtcGxhdGVcbiAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS5nZXQoY29udGV4dC50aXRsZSBhcyBzdHJpbmcsIG51bGwsIHRydWUpIHx8XG4gICAgICAgICAgY29udGV4dC50aXRsZVxuICAgICAgICA6IGNvbnRleHQudGl0bGU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgcmV0dXJuIHRoaXMudG9vbHRpcFRpdGxlVGVtcGxhdGVcbiAgICAgID8gdGhpcy50b29sdGlwVGl0bGVWaXJ0dWFsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MXG4gICAgICA6IGhhbmRsZURhdGVGb3JtYXQodGl0bGUpO1xuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsdWVGb3JtYXR0ZXIgPSAodmFsdWU6IFRvb2x0aXBDb250ZXh0SXRlbSkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMudG9vbHRpcFBvaW50Rm9ybWF0XG4gICAgICA/IHRoaXMudG9vbHRpcFBvaW50Rm9ybWF0KHZhbHVlKVxuICAgICAgOiB0aGlzLmRlZmF1bHRQb2ludEZvcm1hdCh2YWx1ZS55KTtcbiAgICByZXR1cm4gdGhpcy5oaWRlVG9vbHRpcFVuaXQgJiYgIXRoaXMudW5pdFxuICAgICAgPyAocmVzIGFzIHN0cmluZylcbiAgICAgIDogYCR7cmVzfSAke3RoaXMudHJhbnNsYXRlLmdldCh0aGlzLnVuaXQsIG51bGwsIHRydWUpfWA7XG4gIH07XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiYWMtY2hhcnRcIlxuICBbY2xhc3MuYWMtbm9uLWNoYXJ0XT1cImNoYXJ0VHlwZSA9PT0gJ3BpZSdcIlxuICBbY2xhc3MuYWMtYmFyXT1cImNoYXJ0VHlwZSA9PT0gJ2JhcidcIlxuICBbc3R5bGUuYmFja2dyb3VuZF09XCJiYWNrZ3JvdW5kXCJcbj5cbiAgPGRpdlxuICAgICNjaGFydENvbnRhaW5lclxuICAgIGNsYXNzPVwiYWMtY2hhcnQtY29udGFpbmVyIHR3LXctZnVsbCB0dy1oLWZ1bGxcIlxuICA+PC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYWMtY2hhcnQtc3RhdHVzXCJcbiAgICAqbmdJZj1cInN0YXR1cyQgfCBhc3luYyBhcyBzdGF0dXNcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzdGF0dXMuZmFpbGVkICYmICFzdGF0dXMubG9hZGluZ1wiXG4gICAgICBjbGFzcz1cInN0YXR1cyBmYWlsZWRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21FcnJvckNvbnRhaW5lcjsgZWxzZSBub0N1c3RvbUVycm9yQ29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tRXJyb3JDb250YWluZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0N1c3RvbUVycm9yQ29udGFpbmVyPlxuICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICBpY29uPVwiZXhjbGFtYXRpb25fdHJpYW5nbGVfc1wiXG4gICAgICAgICAgYmFja2dyb3VuZD1cInRyaWFuZ2xlXCJcbiAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICAgIHt7ICdmYWlsZWRfbG9hZF9wbGVhc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlZnJlc2goKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAoJ3JlZnJlc2gnIHwgdHJhbnNsYXRlKS50b0xvd2VyQ2FzZSgpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInN0YXR1cy5sb2FkaW5nXCJcbiAgICAgIGNsYXNzPVwic3RhdHVzIGxvYWRpbmdcIlxuICAgID5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwic3Bpbm5lclwiPjwvYXVpLWljb24+IHt7ICdsb2FkaW5nJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic3RhdHVzLm5vTGVnZW5kICYmICFzdGF0dXMubG9hZGluZ1wiXG4gICAgICBjbGFzcz1cInN0YXR1cyBuby1sZWdlbmRcIlxuICAgID5cbiAgICAgIHt7ICdub19pbmRpY2F0b3Jfc2VsZWN0ZWQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInN0YXR1cy5ub0RhdGEgJiYgIXN0YXR1cy5sb2FkaW5nICYmICFzdGF0dXMuZmFpbGVkXCJcbiAgICAgIGNsYXNzPVwic3RhdHVzIG5vLWRhdGFcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjdXN0b21Ob0RhdGFUaXRsZSAmJiBpc1RlbXBsYXRlUmVmKGN1c3RvbU5vRGF0YVRpdGxlKTtcbiAgICAgICAgICBlbHNlIG5vRGF0YVRpdGxlVGVtcGxhdGVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21Ob0RhdGFUaXRsZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI25vRGF0YVRpdGxlVGVtcGxhdGU+XG4gICAgICAgIHt7IGN1c3RvbU5vRGF0YVRpdGxlIHx8ICgnbm9fZGF0YScgfCB0cmFuc2xhdGUpIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIHRpdGxlIFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlICN0aXRsZUNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVtcGxhdGVSZWYodGl0bGUpOyBlbHNlIFRpdGxlVGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpdGxlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RlbXBsYXRlUmVmKHRpdGxlRGVzY3JpcHRpb24pOyBlbHNlIFRpdGxlRGVzVGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aXRsZURlc2NyaXB0aW9uXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ0aXRsZURlc2NyaXB0aW9uQ29udGV4dFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjVGl0bGVUZW1wbGF0ZT5cbiAge3sgdGl0bGUgfX1cbiAge3sgdW5pdCA/ICcoJyArICh1bml0IHwgdHJhbnNsYXRlOiB7fTp0cnVlKSArICcpJyA6ICcnIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI1RpdGxlRGVzVGVtcGxhdGU+XG4gIHt7IHRpdGxlRGVzY3JpcHRpb24gfX1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gdG9vbHRpcCB0ZW1wbGF0ZSAtLT5cbjxkaXZcbiAgI3Rvb2x0aXBJdGVtVmlydHVhbFxuICBjbGFzcz1cImhpZGVcIlxuPlxuICA8bmctY29udGFpbmVyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidG9vbHRpcFBvaW50VGVtcGxhdGVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ0b29sdGlwSXRlbUNvbnRleHRcIlxuICA+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdlxuICAjdG9vbHRpcFRpdGxlVmlydHVhbFxuICBjbGFzcz1cImhpZGVcIlxuPlxuICA8bmctY29udGFpbmVyXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidG9vbHRpcFRpdGxlVGVtcGxhdGVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ0b29sdGlwVGl0bGVDb250ZXh0XCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXZcbiAgI3Rvb2x0aXBOYW1lVmlydHVhbFxuICBjbGFzcz1cImhpZGVcIlxuPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvb2x0aXBQb2ludE5hbWVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcGllTGFiZWxDb250YWluZXI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cInBpZUxhYmVsVGV4dCAmJiBpc1RlbXBsYXRlUmVmKHBpZUxhYmVsVGV4dCk7IGVsc2Ugc3RyaW5nUGllTGFiZWxUZXh0XCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGllTGFiZWxUZXh0XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI3N0cmluZ1BpZUxhYmVsVGV4dD5cbiAgICB7eyBwaWVMYWJlbFRleHQgfX1cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
834
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvdmlldy1jaGFydC92aWV3LWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy92aWV3LWNoYXJ0L3ZpZXctY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFLTCxLQUFLLEVBTUwsV0FBVyxFQUNYLFNBQVMsR0FJVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGNBQWMsR0FDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFFTCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBRXhCLFVBQVUsRUFFVixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFHTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFzQyxVQUFVLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEUsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsR0FBRyxFQUNILFVBQVUsRUFDVixPQUFPLEVBQ1AsU0FBUyxFQUNULEdBQUcsRUFDSCxhQUFhLEVBQ2IsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUtMLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7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QUtHLFdBQVc7a0JBQW5CLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQU1OLFdBQVcsTUFFRixVQUFVO2tCQUFsQixLQUFLO1lBR04sV0FBVyxNQUdYLFlBQVksTUFFRixZQUFZO2tCQUFyQixNQUFNO1lBRUcsY0FBYztrQkFBdkIsTUFBTTtZQUVHLFlBQVk7a0JBQXJCLE1BQU07O2tGQXROSSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBQ2hhcnQsXG4gIEFyZWFTZXJpZXNPcHRpb24sXG4gIEJhckNvbHVtblBhcmFtcyxcbiAgQmFyU2VyaWVzT3B0aW9uLFxuICBDaGFydCxcbiAgQ2hhcnREYXRhLFxuICBMaW5lU2VyaWVzT3B0aW9uLFxuICBWaWV3T3B0aW9ucyxcbiAgUGVyY2VudGFnZSxcbiAgUGllU2VyaWVzT3B0aW9uLFxuICBSRUNUX0VWRU5UUyxcbiAgU2NhbGVUeXBlLFxuICBUb29sdGlwQ29udGV4dCxcbiAgVG9vbHRpcENvbnRleHRJdGVtLFxuICBWaWV3LFxufSBmcm9tICdAYWxhdWRhL2NoYXJ0JztcbmltcG9ydCB7IGlzVGVtcGxhdGVSZWYgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIENvbXBvbmVudFBvcnRhbCxcbiAgRG9tUG9ydGFsT3V0bGV0LFxuICBUZW1wbGF0ZVBvcnRhbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBBcHBsaWNhdGlvblJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBFbGVtZW50UmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEN1cnZlRmFjdG9yeSwgQ3VydmVGYWN0b3J5TGluZU9ubHksIHRpbWVGb3JtYXQgfSBmcm9tICdkMyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICBjb21iaW5lTGF0ZXN0LFxuICBzdGFydFdpdGgsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBBcmVhUG9zaXRpb24sXG4gIENoYXJ0RGF0YUl0ZW0sXG4gIENoYXJ0U3RhdHVzLFxuICBDb250ZXh0SXRlbSxcbiAgaGFuZGxlRGF0ZUZvcm1hdCxcbiAgT2JzZXJ2YWJsZUlucHV0LFxuICBwb2ludEZvcm1hdCxcbiAgcHVibGlzaFJlZixcbiAgU3RyaW5nTWFwLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBWYWx1ZUhvb2ssXG4gIFhQbG90TGluZXMsXG59IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuXG5pbXBvcnQgeyBMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuL2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIFpvb21QYXJhbXMge1xuICB4OiBudW1iZXI7XG4gIHZhbHVlOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH07XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC12aWV3LWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3LWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3Q2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGhpZGVIZWFkZXI6IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgnY2hhcnRDb250YWluZXInKSBjaGFydENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd0aXRsZUNvbnRhaW5lcicpIHRpdGxlQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBAVmlld0NoaWxkKCd0b29sdGlwSXRlbVZpcnR1YWwnKSB0b29sdGlwSXRlbVZpcnR1YWw6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcFRpdGxlVmlydHVhbCcpIHRvb2x0aXBUaXRsZVZpcnR1YWw6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcE5hbWVWaXJ0dWFsJykgdG9vbHRpcE5hbWVWaXJ0dWFsOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3BpZUxhYmVsQ29udGFpbmVyJykgcGllTGFiZWxDb250YWluZXI6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIG1vZGU6ICdjYXJkJyB8ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcblxuICBASW5wdXQoKSBjdXN0b21Ob0RhdGFUaXRsZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBzdHJpbmc7XG5cbiAgQElucHV0KCkgY3VzdG9tRXJyb3JDb250YWluZXI6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIG1hcmdpbkxlZnQ6IG51bWJlcjtcblxuICBASW5wdXQoKSBncmlkT2Zmc2V0VG9wID0gMDtcblxuICBASW5wdXQoKSByb3RhdGVkOiBib29sZWFuO1xuXG4gIC8vIGJhc2VcbiAgQElucHV0KCkgY2hhcnRUeXBlOiAnbGluZScgfCAnYXJlYScgfCAnYmFyJyB8ICdwaWUnIHwgJ3NjYXR0ZXInID0gJ2FyZWEnO1xuXG4gIEBJbnB1dCgpIHNlcmllczogQ2hhcnREYXRhW107XG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBzZXJpZXMkITogT2JzZXJ2YWJsZTxDaGFydERhdGFbXT47XG5cbiAgQElucHV0KCkgeEFjY2Vzc29yID0gKGQ6IENoYXJ0RGF0YUl0ZW0pID0+IGQueDtcblxuICBASW5wdXQoKSB5QWNjZXNzb3IgPSAoZDogQ2hhcnREYXRhSXRlbSkgPT4gZC55O1xuXG4gIEBJbnB1dCgpIHVuaXQ6IHN0cmluZztcbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIHVuaXQkITogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIEBWYWx1ZUhvb2soZnVuY3Rpb24gKFxuICAgIHRoaXM6IFZpZXdDaGFydENvbXBvbmVudCxcbiAgICBjb250ZXh0Q2FsbGJhY2tGdW5jdGlvbjogKGNvbnRleHQ6IFZpZXcpID0+IHZvaWQsXG4gICkge1xuICAgIGlmIChjb250ZXh0Q2FsbGJhY2tGdW5jdGlvbiAmJiAhdGhpcy5vcHRpb25zPy5jb250ZXh0Q2FsbGJhY2tGdW5jdGlvbikge1xuICAgICAgdGhpcy5jaGFydD8uc2V0T3B0aW9ucyh7IGNvbnRleHRDYWxsYmFja0Z1bmN0aW9uIH0pO1xuICAgIH1cbiAgfSlcbiAgQElucHV0KClcbiAgY29udGV4dENhbGxiYWNrRnVuY3Rpb246IChjb250ZXh0OiBWaWV3KSA9PiB2b2lkO1xuXG4gIC8vIHRpdGxlXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSBoaWRlVGl0bGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgdGl0bGVEZXNjcmlwdGlvbjogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgdGl0bGVEZXNjcmlwdGlvbkNvbnRleHQ6IFN0cmluZ01hcDtcblxuICBASW5wdXQoKSB0aXRsZU9mZnNldFg6IG51bWJlcjtcblxuICAvLyBsZWdlbmRcbiAgQElucHV0KCkgaGlkZUxlZ2VuZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGxlZ2VuZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHN0cmluZztcblxuICAvLyBjdXN0b20gbGVnZW5kXG4gIEBJbnB1dCgpIGxlZnRPcGVyYXRpb246IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIGxlZnRPcGVyYXRpb25Db250ZXh0OiBTdHJpbmdNYXA7XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIGxlZnRPcGVyYXRpb24kITogT2JzZXJ2YWJsZTxUZW1wbGF0ZVJlZjx1bmtub3duPj47XG5cbiAgQElucHV0KCkgcmlnaHRPcGVyYXRpb246IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByaWdodE9wZXJhdGlvbiQhOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPHVua25vd24+PjtcblxuICBASW5wdXQoKSBsZWdlbmRTZWxlY3RBbGxPcGVyYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoKSBsZWdlbmRTZWxlY3RBbGxOYW1lOiBzdHJpbmc7XG5cbiAgLy8gYXhpc1xuXG4gIEBJbnB1dCgpIHlBeGlzVGlja1N1ZmZpeDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGRhdGVBeGlzTGFiZWxGb3JtYXRzOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgeEF4aXNMYWJlbFRyYW5zbGF0aW9uOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHhTY2FsZVR5cGU6IFNjYWxlVHlwZTtcblxuICBASW5wdXQoKSB4QXhpc1RpY2tGb3JtYXR0ZXI6IHN0cmluZyB8ICgodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nKTtcblxuICBASW5wdXQoKSB0aWNrczogdW5rbm93bjtcblxuICBASW5wdXQoKSB5QXhpc1RpY2tGb3JtYXR0ZXI6IHN0cmluZyB8ICgodmFsdWU6IG51bWJlcikgPT4gc3RyaW5nKTtcblxuICBASW5wdXQoKSB5QXhpc01pblN0ZXA/OiBudW1iZXI7XG5cbiAgLy8gdG9vbHRpcFxuICBASW5wdXQoKSB0b29sdGlwVHJpZ2dlcjogJ2F4aXMnIHwgJ2l0ZW0nIHwgJ25vbmUnO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBBdXRvU29ydCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBIaWRlVGl0bGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgdG9vbHRpcENvbHVtbkxheW91dDogYm9vbGVhbjtcblxuICBASW5wdXQoKSB0b29sdGlwVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KCkgdG9vbHRpcFBvaW50TmFtZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKSB0b29sdGlwVHJhbnNsYXRpb246IGJvb2xlYW47XG5cbiAgQElucHV0KCkgdG9vbHRpcFRpdGxlVHJhbnNsYXRpb246IGJvb2xlYW47XG5cbiAgQElucHV0KCkgaGlkZVRvb2x0aXBVbml0OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBQb2ludEZvcm1hdDogKGQ6IENvbnRleHRJdGVtKSA9PiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgQElucHV0KCkgdG9vbHRpcFBvaW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHRvb2x0aXBQb2ludFRlbXBsYXRlQ29udGV4dDogdW5rbm93bjtcblxuICAvLyBzZXJpZXNcbiAgQElucHV0KCkgYmFuZFdpZHRoID0gMTA7XG5cbiAgQElucHV0KCkgbWluSGVpZ2h0OiBudW1iZXI7XG5cbiAgQElucHV0KCkgc3RlcExpbmU6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgY3VydmVUeXBlOiBDdXJ2ZUZhY3RvcnkgfCBDdXJ2ZUZhY3RvcnlMaW5lT25seTtcblxuICBASW5wdXQoKSBiYXJUeXBlOiAnc3RhbmRhcmQnIHwgJ3N0YWNrZWQnID0gJ3N0YW5kYXJkJztcblxuICBASW5wdXQoKSBzdGFydE9wYWNpdHk6IG51bWJlcjtcblxuICBASW5wdXQoKSBlbmRPcGFjaXR5OiBudW1iZXI7XG5cbiAgQElucHV0KCkgbGluZVdpZHRoPzogbnVtYmVyO1xuXG4gIC8vIGJhciBzZXJpZXNcbiAgQElucHV0KCkgaXNHcm91cDogYm9vbGVhbjtcblxuICBASW5wdXQoKSBiYXJSYWRpdXM6IG51bWJlcjtcblxuICBASW5wdXQoKSBjbG9zZVJhZGl1c0xhZGRlcjogYm9vbGVhbjtcblxuICBASW5wdXQoKSBjb2x1bW5DbGljazogKGRhdGE6IEJhckNvbHVtblBhcmFtcykgPT4gdm9pZDtcblxuICAvLyB6b29tXG4gIEBJbnB1dCgpIGVuYWJsZVpvb206IGJvb2xlYW47XG5cbiAgQElucHV0KCkgY2hhcnRTdGF0dXM6IENoYXJ0U3RhdHVzO1xuXG4gIC8vIHBsb3QgbGluZVxuICBASW5wdXQoKSB5UGxvdExpbmVzSGlkZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHlQbG90TGluZXM6IFRvb2x0aXBDb250ZXh0O1xuXG4gIC8vIHBpZVxuICBASW5wdXQoKSBwaWVJbm5lclJhZGl1czogbnVtYmVyIHwgUGVyY2VudGFnZTtcblxuICBASW5wdXQoKSBwaWVPdXRlclJhZGl1czogbnVtYmVyIHwgUGVyY2VudGFnZTtcblxuICBASW5wdXQoKSBwaWVTdGFydEFuZ2xlOiBudW1iZXI7XG5cbiAgQElucHV0KCkgcGllRW5kQW5nbGU6IG51bWJlcjtcblxuICBASW5wdXQoKSBwaWVCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcblxuICBASW5wdXQoKSBwaWVUb3RhbDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIHBpZUlubmVyRGlzYzogYm9vbGVhbjtcblxuICBASW5wdXQoKSBwaWVMYWJlbFRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpIHBpZUxhYmVsUG9zaXRpb246IHsgeDogc3RyaW5nOyB5OiBzdHJpbmcgfTtcblxuICBASW5wdXQoKSBwaWVJdGVtU3R5bGU/OiB7XG4gICAgYm9yZGVyUmFkaXVzPzogbnVtYmVyO1xuICB9O1xuXG4gIC8vIHNjYXR0ZXJcbiAgQElucHV0KCkgc2NhdHRlclR5cGU6ICdidWJibGUnO1xuICBASW5wdXQoKSBzY2F0dGVyT3BhY2l0eTogbnVtYmVyO1xuICBASW5wdXQoKSBzY2F0dGVyU2l6ZTogbnVtYmVyO1xuICBASW5wdXQoKSBzY2F0dGVyVGhyZXNob2xkOiB7XG4gICAgbWluU2l6ZTogbnVtYmVyO1xuICAgIG1heFNpemU6IG51bWJlcjtcbiAgfTtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgeVBsb3RMaW5lcyQhOiBPYnNlcnZhYmxlPFRvb2x0aXBDb250ZXh0PjtcblxuICBASW5wdXQoKSB4UGxvdExpbmVzOiBYUGxvdExpbmVzO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICB4UGxvdExpbmVzJCE6IE9ic2VydmFibGU8WFBsb3RMaW5lcz47XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIGNoYXJ0U3RhdHVzJCE6IE9ic2VydmFibGU8Q2hhcnRTdGF0dXM+O1xuXG4gIEBPdXRwdXQoKSBtb3VzZVVwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEFyZWFQb3NpdGlvbj4oKTtcblxuICBAT3V0cHV0KCkgbWFya0NsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRvb2x0aXBDb250ZXh0PigpO1xuXG4gIEBPdXRwdXQoKSByZWZyZXNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBfY2hhcnRTdGF0dXMkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hhcnRTdGF0dXM+KHtcbiAgICBsb2FkaW5nOiB0cnVlLFxuICAgIG5vRGF0YTogZmFsc2UsXG4gICAgZmFpbGVkOiBmYWxzZSxcbiAgICBub0xlZ2VuZDogZmFsc2UsXG4gIH0pO1xuXG4gIF9zdGF0dXM6IENoYXJ0U3RhdHVzID0ge307XG5cbiAgY2hhcnQ6IEFDaGFydDtcblxuICBhcmVhUG9zaXRpb246IEFyZWFQb3NpdGlvbiA9IHtcbiAgICB4MTogMCxcbiAgICB4MjogMCxcbiAgICBzdGFydFg6IDAsXG4gICAgZW5kWDogMCxcbiAgfTtcblxuICBzdGF0dXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5jaGFydFN0YXR1cyQsIHRoaXMuX2NoYXJ0U3RhdHVzJCRdKS5waXBlKFxuICAgIG1hcCgoW3N0YXR1cywgX3N0YXR1c10pID0+ICh7XG4gICAgICAuLi5fc3RhdHVzLFxuICAgICAgLi4uc3RhdHVzLFxuICAgIH0pKSxcbiAgICB0YXAoc3RhdHVzID0+ICh0aGlzLl9zdGF0dXMgPSBzdGF0dXMpKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgZ2V0IGJhY2tncm91bmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2dyb3VuZENvbG9yO1xuICB9XG5cbiAgaXNUZW1wbGF0ZVJlZiA9IGlzVGVtcGxhdGVSZWY7XG5cbiAgY3VzdG9tTGVnZW5kUmVmOiBDb21wb25lbnRSZWY8TGVnZW5kQ29tcG9uZW50PjtcblxuICBjdXN0b21UaXRsZVJlZjogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+O1xuXG4gIGN1c3RvbVBpZUxhYmVsVGV4dFJlZjogRW1iZWRkZWRWaWV3UmVmPHVua25vd24+O1xuXG4gIHRvb2x0aXBJdGVtQ29udGV4dDogeyBjb250ZXh0OiBUb29sdGlwQ29udGV4dEl0ZW1bXSB9ID0geyBjb250ZXh0OiBbXSB9O1xuXG4gIHRvb2x0aXBUaXRsZUNvbnRleHQ6IHsgY29udGV4dDogVG9vbHRpcENvbnRleHQgfSA9IHsgY29udGV4dDogbnVsbCB9O1xuXG4gIGdldCBzZXJpZXNPcHRpb25zKCkge1xuICAgIGNvbnN0IGJhclNlcmllcyA9IHtcbiAgICAgIHN0YWNrOiB0aGlzLmJhclR5cGUgPT09ICdzdGFja2VkJyxcbiAgICAgIGJhbmR3aWR0aDogdGhpcy5iYW5kV2lkdGgsXG4gICAgICBpc0dyb3VwOiB0aGlzLmlzR3JvdXAsXG4gICAgICByYWRpdXM6IHRoaXMuYmFyUmFkaXVzLFxuICAgICAgY2xvc2VSYWRpdXNMYWRkZXI6IHRoaXMuY2xvc2VSYWRpdXNMYWRkZXIsXG4gICAgICBjb2x1bW5DbGljazogdGhpcy5jb2x1bW5DbGljayB8fCBudWxsLFxuICAgICAgbWluSGVpZ2h0OiB0aGlzLm1pbkhlaWdodCxcbiAgICB9O1xuICAgIGNvbnN0IGxpbmVTZXJpZXMgPSB7XG4gICAgICBzdGVwOiB0aGlzLnN0ZXBMaW5lLFxuICAgICAgY3VydmVUeXBlOiB0aGlzLmN1cnZlVHlwZSxcbiAgICAgIGxpbmVXaWR0aDogdGhpcy5saW5lV2lkdGgsXG4gICAgfTtcbiAgICBjb25zdCBhcmVhU2VyaWVzID0ge1xuICAgICAgY3VydmVUeXBlOiB0aGlzLmN1cnZlVHlwZSxcbiAgICAgIHN0YXJ0T3BhY2l0eTogdGhpcy5zdGFydE9wYWNpdHksXG4gICAgICBlbmRPcGFjaXR5OiB0aGlzLmVuZE9wYWNpdHksXG4gICAgICBsaW5lV2lkdGg6IHRoaXMubGluZVdpZHRoLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMuY2hhcnRUeXBlKSB7XG4gICAgICBjYXNlICdiYXInOiB7XG4gICAgICAgIHJldHVybiBiYXJTZXJpZXMgYXMgQmFyU2VyaWVzT3B0aW9uO1xuICAgICAgfVxuICAgICAgY2FzZSAnbGluZSc6IHtcbiAgICAgICAgcmV0dXJuIGxpbmVTZXJpZXMgYXMgTGluZVNlcmllc09wdGlvbjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2FyZWEnOiB7XG4gICAgICAgIHJldHVybiBhcmVhU2VyaWVzIGFzIEFyZWFTZXJpZXNPcHRpb247XG4gICAgICB9XG4gICAgICBjYXNlICdwaWUnOiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5uZXJSYWRpdXM6IHRoaXMucGllSW5uZXJSYWRpdXMsXG4gICAgICAgICAgb3V0ZXJSYWRpdXM6IHRoaXMucGllT3V0ZXJSYWRpdXMsXG4gICAgICAgICAgc3RhcnRBbmdsZTogdGhpcy5waWVTdGFydEFuZ2xlLFxuICAgICAgICAgIGVuZEFuZ2xlOiB0aGlzLnBpZUVuZEFuZ2xlLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5waWVCYWNrZ3JvdW5kQ29sb3IgfHwgJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICB0b3RhbDogdGhpcy5waWVUb3RhbCxcbiAgICAgICAgICBsYWJlbDoge1xuICAgICAgICAgICAgcG9zaXRpb246IHtcbiAgICAgICAgICAgICAgeDogdGhpcy5waWVMYWJlbFBvc2l0aW9uPy54IHx8ICc1MCUnLFxuICAgICAgICAgICAgICB5OiB0aGlzLnBpZUxhYmVsUG9zaXRpb24/LnkgfHwgJzUwJScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5uZXJEaXNjOiB0aGlzLnBpZUlubmVyRGlzYyxcbiAgICAgICAgICBpdGVtU3R5bGU6IHRoaXMucGllSXRlbVN0eWxlIHx8IHsgYm9yZGVyUmFkaXVzOiB0aGlzLmJhbmRXaWR0aCAvIDIgfSxcbiAgICAgICAgfSBhcyBQaWVTZXJpZXNPcHRpb247XG4gICAgICB9XG4gICAgICBjYXNlICdzY2F0dGVyJzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNpemU6IHRoaXMuc2NhdHRlclNpemUsXG4gICAgICAgICAgLi4udGhpcy5zY2F0dGVyVGhyZXNob2xkLFxuICAgICAgICAgIHR5cGU6IHRoaXMuc2NhdHRlclR5cGUsXG4gICAgICAgICAgb3BhY2l0eTogdGhpcy5zY2F0dGVyT3BhY2l0eSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBpc0NhcmRNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdjYXJkJztcbiAgfVxuXG4gIGdldCBzY2FsZVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMueFNjYWxlVHlwZSB8fCBTY2FsZVR5cGUuVElNRTtcbiAgfVxuXG4gIGdldCBpc1NjYWxlVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zY2FsZVR5cGUgPT09IFNjYWxlVHlwZS5USU1FO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogVmlld09wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRYQXhpc1RpY2tGb3JtYXR0ZXIgPSB0aGlzLmlzU2NhbGVUaW1lXG4gICAgICA/ICgpID0+IHRpbWVGb3JtYXQodGhpcy5kYXRlQXhpc0xhYmVsRm9ybWF0cyB8fCAnJUg6JU0nKVxuICAgICAgOiBudWxsO1xuICAgIGNvbnN0IHhBeGlzVGlja0Zvcm1hdHRlciA9XG4gICAgICB0aGlzLnhBeGlzVGlja0Zvcm1hdHRlciB8fCBkZWZhdWx0WEF4aXNUaWNrRm9ybWF0dGVyO1xuICAgIHJldHVybiB7XG4gICAgICBjdXN0b21IZWFkZXI6IHRoaXMuY2hhcnRUeXBlICE9PSAncGllJyxcbiAgICAgIHR5cGU6IHRoaXMuc3RlcExpbmUgPyAnbGluZScgOiB0aGlzLmNoYXJ0VHlwZSxcbiAgICAgIG9mZnNldDoge1xuICAgICAgICB4OiB0aGlzLm1hcmdpbkxlZnQsXG4gICAgICAgIHk6IHRoaXMuaXNDYXJkTW9kZSA/IDUgOiAwLFxuICAgICAgfSxcbiAgICAgIHJvdGF0ZWQ6IHRoaXMucm90YXRlZCxcbiAgICAgIHRpdGxlOiB7XG4gICAgICAgIHRleHQ6IHRoaXMudGl0bGUgYXMgc3RyaW5nLFxuICAgICAgICBvZmZzZXRYOiB0aGlzLnRpdGxlT2Zmc2V0WCxcbiAgICAgICAgaGlkZTogdGhpcy5oaWRlVGl0bGUgfHwgdGhpcy5oaWRlSGVhZGVyLFxuICAgICAgICBmb3JtYXR0ZXI6ICgpID0+ICcnLFxuICAgICAgfSxcbiAgICAgIGxlZ2VuZDoge1xuICAgICAgICBoaWRlOiB0aGlzLmhpZGVIZWFkZXIsXG4gICAgICAgIGZvcm1hdHRlcjogKCkgPT4gJycsXG4gICAgICAgIG9mZnNldFk6IHRoaXMuaXNDYXJkTW9kZSA/IC04IDogMCxcbiAgICAgICAgaXNNb3VudDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBncmlkOiB7IHRvcDogdGhpcy5ncmlkT2Zmc2V0VG9wIHx8IDAgfSxcbiAgICAgIHlBeGlzOiB7XG4gICAgICAgIHRpY2tGb3JtYXR0ZXI6XG4gICAgICAgICAgdGhpcy55QXhpc1RpY2tGb3JtYXR0ZXIgfHxcbiAgICAgICAgICAoKHZhbHVlOiBudW1iZXIpID0+XG4gICAgICAgICAgICBgJHt0aGlzLmNvbnZlcnNpb25NYXhpbXVtKHZhbHVlKX0ke3RoaXMueUF4aXNUaWNrU3VmZml4IHx8ICcnfWApLFxuICAgICAgICBtaW5TdGVwOiB0aGlzLnlBeGlzTWluU3RlcCxcbiAgICAgIH0sXG4gICAgICB4QXhpczoge1xuICAgICAgICB0eXBlOiB0aGlzLnhTY2FsZVR5cGUgfHwgU2NhbGVUeXBlLlRJTUUsXG4gICAgICAgIHRpY2tGb3JtYXR0ZXI6IHhBeGlzVGlja0Zvcm1hdHRlcixcbiAgICAgICAgdGlja3M6IHRoaXMudGlja3MsXG4gICAgICB9LFxuICAgICAgdG9vbHRpcDoge1xuICAgICAgICBoaWRlVGl0bGU6IHRoaXMudG9vbHRpcEhpZGVUaXRsZSxcbiAgICAgICAgdHJpZ2dlcjogdGhpcy50b29sdGlwVHJpZ2dlclR5cGUsXG4gICAgICAgIHRpdGxlRm9ybWF0dGVyOiB0aGlzLnRpdGxlRm9ybWF0dGVyLFxuICAgICAgICBpdGVtRm9ybWF0dGVyOiAoY29udGV4dDogVG9vbHRpcENvbnRleHRJdGVtW10pID0+IHtcbiAgICAgICAgICB0aGlzLnRvb2x0aXBJdGVtQ29udGV4dCA9IHRoaXMubWVyZ2VQb2ludENvbnRleHQoY29udGV4dCk7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBQb2ludFRlbXBsYXRlXG4gICAgICAgICAgICA/IHRoaXMudG9vbHRpcEl0ZW1WaXJ0dWFsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MXG4gICAgICAgICAgICA6IHRoaXMudG9vbHRpcEl0ZW1Db250ZXh0LmNvbnRleHQ7XG4gICAgICAgIH0sXG4gICAgICAgIG5hbWVGb3JtYXR0ZXI6ICh7IG5hbWUgfSkgPT5cbiAgICAgICAgICB0aGlzLnRvb2x0aXBUcmFuc2xhdGlvbiA/IHRoaXMudHJhbnNsYXRlLmdldChuYW1lLCBudWxsLCB0cnVlKSA6IG5hbWUsXG4gICAgICAgIHZhbHVlRm9ybWF0dGVyOiB0aGlzLnZhbHVlRm9ybWF0dGVyLFxuICAgICAgICBzb3J0OiB0aGlzLnRvb2x0aXBBdXRvU29ydCA/IChhLCBiKSA9PiBiLnkgLSBhLnkgOiBudWxsLFxuICAgICAgfSxcbiAgICAgIHNlcmllc09wdGlvbjogdGhpcy5zZXJpZXNPcHRpb25zLFxuICAgICAgem9vbToge1xuICAgICAgICBlbmFibGVkOiB0aGlzLmVuYWJsZVpvb20sXG4gICAgICAgIG9uem9vbVN0YXJ0OiAoZDogWm9vbVBhcmFtcykgPT4ge1xuICAgICAgICAgIHRoaXMuYXJlYVBvc2l0aW9uLngxID0gZC54O1xuICAgICAgICAgIHRoaXMuYXJlYVBvc2l0aW9uLnN0YXJ0WCA9IGQudmFsdWUueDtcbiAgICAgICAgfSxcbiAgICAgICAgb256b29tRW5kOiAoZDogWm9vbVBhcmFtcykgPT4ge1xuICAgICAgICAgIHRoaXMuYXJlYVBvc2l0aW9uLngyID0gZC54O1xuICAgICAgICAgIHRoaXMuYXJlYVBvc2l0aW9uLmVuZFggPSBkLnZhbHVlLng7XG4gICAgICAgICAgY29uc3QgeyBzdGFydFgsIGVuZFggfSA9IHRoaXMuYXJlYVBvc2l0aW9uO1xuICAgICAgICAgIGlmIChzdGFydFggIT09IGVuZFgpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2VVcEV2ZW50Lm5leHQodGhpcy5hcmVhUG9zaXRpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB4UGxvdExpbmU6IHtcbiAgICAgICAgY29sb3I6ICdyZWQnLFxuICAgICAgfSxcbiAgICAgIGNvbnRleHRDYWxsYmFja0Z1bmN0aW9uOiB0aGlzLmNvbnRleHRDYWxsYmFja0Z1bmN0aW9uLFxuICAgIH07XG4gIH1cblxuICBnZXQgdG9vbHRpcFRyaWdnZXJUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnRvb2x0aXBUcmlnZ2VyIHx8IHRoaXMuZ2V0VHJpZ2dlclR5cGUoKTtcbiAgfVxuXG4gIGdldFRyaWdnZXJUeXBlKCkge1xuICAgIHN3aXRjaCAodGhpcy5jaGFydFR5cGUpIHtcbiAgICAgIGNhc2UgJ2xpbmUnOlxuICAgICAgY2FzZSAnYXJlYSc6XG4gICAgICBjYXNlICdiYXInOiB7XG4gICAgICAgIHJldHVybiAnYXhpcyc7XG4gICAgICB9XG4gICAgICBjYXNlICdzY2F0dGVyJzoge1xuICAgICAgICByZXR1cm4gJ2l0ZW0nO1xuICAgICAgfVxuICAgICAgY2FzZSAncGllJzoge1xuICAgICAgICByZXR1cm4gJ25vbmUnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyh7IGVuYWJsZVpvb20gfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChlbmFibGVab29tPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhcnQ/LnNldE9wdGlvbnMoeyB6b29tOiB7IGVuYWJsZWQ6IHRydWUgfSB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGFydCA9IENoYXJ0KHtcbiAgICAgIGNvbnRhaW5lcjogdGhpcy5jaGFydENvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgZGF0YTogW10sXG4gICAgfSk7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5zZXJpZXMkLCB0aGlzLnhQbG90TGluZXMkLnBpcGUoc3RhcnRXaXRoKG51bGwpKV0pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoW2RhdGEsIHJlc10pID0+IHtcbiAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5jaGFydC5zZXRPcHRpb25zKHtcbiAgICAgICAgICAgICAgdHlwZTpcbiAgICAgICAgICAgICAgICBkYXRhLmxlbmd0aCA+IDMgJiYgdGhpcy5jaGFydFR5cGUgPT09ICdhcmVhJ1xuICAgICAgICAgICAgICAgICAgPyAnbGluZSdcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5jaGFydFR5cGUsXG4gICAgICAgICAgICAgIHNlcmllc09wdGlvbjoge1xuICAgICAgICAgICAgICAgIGxpbmVXaWR0aDogZGF0YS5sZW5ndGggPiAzID8gMSA6IHRoaXMubGluZVdpZHRoLFxuICAgICAgICAgICAgICAgIGFjdGl2ZUxpbmVXaWR0aDogZGF0YS5sZW5ndGggPiAzID8gMiA6IDMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHlBeGlzOiB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnlBeGlzLFxuICAgICAgICAgICAgICAgIG1heDogcmVzPy52YWx1ZSB8fCB0aGlzLm9wdGlvbnMueUF4aXMubWF4LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmhhbmRlbERhdGEoZGF0YSk7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0LmRhdGEodmFsdWVzKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFkZEN1c3RvbUxlZ2VuZCh0aGlzLmNoYXJ0LmNoYXJ0VUlkKTtcbiAgICAgICAgICAgICAgdGhpcy5hZGRDdXN0b21UaXRsZSh0aGlzLmNoYXJ0LmNoYXJ0VUlkKTtcbiAgICAgICAgICAgICAgdGhpcy5hZGRQaWVMYWJlbFRleHQodGhpcy5jaGFydC5jaGFydFVJZCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIGNvbnN0IGxlZ2VuZEl0ZW1zID0gdGhpcy5jaGFydC5nZXRDb250cm9sbGVyKCdsZWdlbmQnKS5sZWdlbmRJdGVtcztcbiAgICAgICAgICAgIHRoaXMuaGFuZGVsQ2hhcnRTdGF0dXMoe1xuICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgbm9MZWdlbmQ6XG4gICAgICAgICAgICAgICAgbGVnZW5kSXRlbXMubGVuZ3RoICYmIGxlZ2VuZEl0ZW1zLmV2ZXJ5KGl0ZW0gPT4gIWl0ZW0uYWN0aXZhdGUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnQ/LnVwZGF0ZVhQbG90TGluZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIHRoaXMuY2hhcnQub24oUkVDVF9FVkVOVFMuQ0xJQ0ssICh2YWx1ZTogVG9vbHRpcENvbnRleHQpID0+IHtcbiAgICAgIHRoaXMubWFya0NsaWNrRXZlbnQubmV4dCh2YWx1ZSk7XG4gICAgICBpZiAoIXRoaXMueVBsb3RMaW5lc0hpZGUgJiYgdGhpcy55UGxvdExpbmVzKSB7XG4gICAgICAgIHRoaXMuY2hhcnQudXBkYXRlWVBsb3RMaW5lKHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICB0aXRsZTogZGF5anModmFsdWUudGl0bGUpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnlQbG90TGluZXMkLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLmNoYXJ0LnVwZGF0ZVlQbG90TGluZSh7XG4gICAgICAgICAgLi4ucmVzLFxuICAgICAgICAgIHRpdGxlOiBkYXlqcyhyZXMudGl0bGUpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRlbERhdGEoZGF0YTogQ2hhcnREYXRhW10pIHtcbiAgICByZXR1cm4gZGF0YS5tYXAoZCA9PiAoe1xuICAgICAgLi4uZCxcbiAgICAgIHZhbHVlczogZC52YWx1ZXM/Lm1hcCh2ID0+ICh7XG4gICAgICAgIC4uLnYsXG4gICAgICAgIHg6IHRoaXMueEFjY2Vzc29yKHYpLFxuICAgICAgICB5OiB0aGlzLnlBY2Nlc3Nvcih2KSxcbiAgICAgIH0pKSxcbiAgICB9KSk7XG4gIH1cblxuICBhZGRDdXN0b21MZWdlbmQoY2hhcnRVSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGRvbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke2NoYXJ0VUlkfSAuYWMtbGVnZW5kYCk7XG4gICAgaWYgKCF0aGlzLmN1c3RvbUxlZ2VuZFJlZiAmJiBkb20gJiYgIXRoaXMuaGlkZUhlYWRlcikge1xuICAgICAgY29uc3QgcCA9IG5ldyBDb21wb25lbnRQb3J0YWwoTGVnZW5kQ29tcG9uZW50KTtcbiAgICAgIGNvbnN0IG8gPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxuICAgICAgICBkb20sXG4gICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICB0aGlzLmFwcFJlZixcbiAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICk7XG4gICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZiA9IHAuYXR0YWNoKG8pO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2UuY2hhcnQgPSB0aGlzLmNoYXJ0O1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2Uuc3ltYm9sID0gWydiYXInLCAncGllJywgJ3NjYXR0ZXInXS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy5jaGFydFR5cGUsXG4gICAgICApXG4gICAgICAgID8gJ2NpcmNsZSdcbiAgICAgICAgOiAnbGluZSc7XG4gICAgICB0aGlzLmxlZnRPcGVyYXRpb24kLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLmxlZnRPcGVyYXRpb24gPSB0aGlzLmxlZnRPcGVyYXRpb247XG4gICAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLmxlZnRPcGVyYXRpb25Db250ZXh0ID1cbiAgICAgICAgICB0aGlzLmxlZnRPcGVyYXRpb25Db250ZXh0O1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmlnaHRPcGVyYXRpb24kLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLnJpZ2h0T3BlcmF0aW9uID0gdGhpcy5yaWdodE9wZXJhdGlvbjtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2UubW9kZSA9IHRoaXMubW9kZTtcbiAgICAgIHRoaXMuY3VzdG9tTGVnZW5kUmVmLmluc3RhbmNlLmhpZGVMZWdlbmQgPSB0aGlzLmhpZGVMZWdlbmQ7XG4gICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5zZWxlY3RBbGxOYW1lID0gdGhpcy5sZWdlbmRTZWxlY3RBbGxOYW1lO1xuICAgICAgdGhpcy5jdXN0b21MZWdlbmRSZWYuaW5zdGFuY2Uuc2VsZWN0QWxsT3BlcmF0aW9uID1cbiAgICAgICAgdGhpcy5sZWdlbmRTZWxlY3RBbGxPcGVyYXRpb247XG4gICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS50ZW1wbGF0ZSA9IHRoaXMubGVnZW5kVGVtcGxhdGU7XG4gICAgICB0aGlzLmN1c3RvbUxlZ2VuZFJlZi5pbnN0YW5jZS5jaGFuZ2VMZWdlbmRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRlbENoYXJ0U3RhdHVzKHtcbiAgICAgICAgICAgIG5vTGVnZW5kOiByZXMuZXZlcnkoaXRlbSA9PiAhaXRlbS5hY3RpdmF0ZSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkZEN1c3RvbVRpdGxlKGNoYXJ0VUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkb20gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHtjaGFydFVJZH0gLmFjLXRpdGxlYCk7XG4gICAgaWYgKCF0aGlzLmN1c3RvbVRpdGxlUmVmICYmIGRvbSAmJiAhdGhpcy5oaWRlSGVhZGVyKSB7XG4gICAgICBjb25zdCBwID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGl0bGVDb250YWluZXIsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICBjb25zdCBvID0gbmV3IERvbVBvcnRhbE91dGxldChcbiAgICAgICAgZG9tLFxuICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgdGhpcy5hcHBSZWYsXG4gICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICApO1xuICAgICAgdGhpcy5jdXN0b21UaXRsZVJlZiA9IHAuYXR0YWNoKG8pO1xuICAgIH1cbiAgfVxuXG4gIGFkZFBpZUxhYmVsVGV4dChjaGFydFVJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZG9tID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7Y2hhcnRVSWR9IC5hYy1waWUtZ3VpZGVgKTtcbiAgICBpZiAoIXRoaXMuY3VzdG9tUGllTGFiZWxUZXh0UmVmICYmIGRvbSAmJiB0aGlzLnBpZUxhYmVsVGV4dCkge1xuICAgICAgY29uc3QgcCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChcbiAgICAgICAgdGhpcy5waWVMYWJlbENvbnRhaW5lcixcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG8gPSBuZXcgRG9tUG9ydGFsT3V0bGV0KFxuICAgICAgICBkb20sXG4gICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICB0aGlzLmFwcFJlZixcbiAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICk7XG4gICAgICB0aGlzLmN1c3RvbVBpZUxhYmVsVGV4dFJlZiA9IHAuYXR0YWNoKG8pO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5yZWZyZXNoRXZlbnQubmV4dChudWxsKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5jdXN0b21MZWdlbmRSZWY/LmRlc3Ryb3koKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWVyZ2VQb2ludENvbnRleHQgPSAoY29udGV4dDogVG9vbHRpcENvbnRleHRJdGVtW10pID0+ICh7XG4gICAgY29udGV4dDogdGhpcy5saW1pdE1heENvbnRleHQoY29udGV4dCksXG4gICAgLi4uKHRoaXMudG9vbHRpcFBvaW50VGVtcGxhdGVDb250ZXh0IGFzIFN0cmluZ01hcCksXG4gIH0pO1xuXG4gIHByaXZhdGUgaGFuZGVsQ2hhcnRTdGF0dXMoc3RhdHVzOiBDaGFydFN0YXR1cykge1xuICAgIHRoaXMuX2NoYXJ0U3RhdHVzJCQubmV4dCh7XG4gICAgICAuLi5zdGF0dXMsXG4gICAgfSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaW1pdE1heENvbnRleHQoY29udGV4dDogVG9vbHRpcENvbnRleHRJdGVtW10sIGxpbWl0ID0gMTUpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBjb250ZXh0LnNsaWNlKDAsIGxpbWl0KTtcbiAgICBjb25zdCBleGlzdEFjdGl2ZSA9XG4gICAgICBjb250ZXh0LnNvbWUoaXRlbSA9PiBpdGVtLmFjdGl2YXRlZCkgJiYgdmFsdWVzLnNvbWUoZCA9PiAhZC5hY3RpdmF0ZWQpO1xuICAgIGlmICghZXhpc3RBY3RpdmUgJiYgY29udGV4dC5sZW5ndGggPiBsaW1pdCkge1xuICAgICAgY29uc3QgZGF0YSA9IGNvbnRleHQuZmluZChpdGVtID0+IGl0ZW0uYWN0aXZhdGVkKTtcbiAgICAgIHJldHVybiBkYXRhID8gWy4uLnZhbHVlcy5zbGljZSgwLCBsaW1pdCAtIDEpLCBkYXRhXSA6IHZhbHVlcztcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFBvaW50Rm9ybWF0ID0gcG9pbnRGb3JtYXQ7XG5cbiAgcHJpdmF0ZSBjb252ZXJzaW9uTWF4aW11bSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgY29uc3QgdW5pdCA9ICdrJztcbiAgICBpZiAodmFsdWUgPj0gMTAwMCkge1xuICAgICAgY29uc3QgbnVtID0gKyh2YWx1ZSAvIDEwMDApLnRvRml4ZWQoMik7XG4gICAgICByZXR1cm4gYCR7bnVtfSR7dW5pdH1gO1xuICAgIH1cbiAgICByZXR1cm4gJycgKyB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVGb3JtYXR0ZXIgPSAoY29udGV4dDogVG9vbHRpcENvbnRleHQpID0+IHtcbiAgICB0aGlzLnRvb2x0aXBUaXRsZUNvbnRleHQgPSB7IGNvbnRleHQgfTtcbiAgICBjb25zdCB0aXRsZSA9XG4gICAgICB0aGlzLnRvb2x0aXBUcmFuc2xhdGlvbiAmJiAhdGhpcy50b29sdGlwVGl0bGVUZW1wbGF0ZVxuICAgICAgICA/IHRoaXMudHJhbnNsYXRlLmdldChjb250ZXh0LnRpdGxlIGFzIHN0cmluZywgbnVsbCwgdHJ1ZSkgfHxcbiAgICAgICAgICBjb250ZXh0LnRpdGxlXG4gICAgICAgIDogY29udGV4dC50aXRsZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICByZXR1cm4gdGhpcy50b29sdGlwVGl0bGVUZW1wbGF0ZVxuICAgICAgPyB0aGlzLnRvb2x0aXBUaXRsZVZpcnR1YWwubmF0aXZlRWxlbWVudC5pbm5lckhUTUxcbiAgICAgIDogaGFuZGxlRGF0ZUZvcm1hdCh0aXRsZSk7XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZUZvcm1hdHRlciA9ICh2YWx1ZTogVG9vbHRpcENvbnRleHRJdGVtKSA9PiB7XG4gICAgY29uc3QgcmVzID0gdGhpcy50b29sdGlwUG9pbnRGb3JtYXRcbiAgICAgID8gdGhpcy50b29sdGlwUG9pbnRGb3JtYXQodmFsdWUpXG4gICAgICA6IHRoaXMuZGVmYXVsdFBvaW50Rm9ybWF0KHZhbHVlLnkpO1xuICAgIHJldHVybiB0aGlzLmhpZGVUb29sdGlwVW5pdCAmJiAhdGhpcy51bml0XG4gICAgICA/IChyZXMgYXMgc3RyaW5nKVxuICAgICAgOiBgJHtyZXN9ICR7dGhpcy50cmFuc2xhdGUuZ2V0KHRoaXMudW5pdCwgbnVsbCwgdHJ1ZSl9YDtcbiAgfTtcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhYy1jaGFydFwiXG4gIFtjbGFzcy5hYy1ub24tY2hhcnRdPVwiY2hhcnRUeXBlID09PSAncGllJ1wiXG4gIFtjbGFzcy5hYy1iYXJdPVwiY2hhcnRUeXBlID09PSAnYmFyJ1wiXG4gIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImJhY2tncm91bmRcIlxuPlxuICA8ZGl2XG4gICAgI2NoYXJ0Q29udGFpbmVyXG4gICAgY2xhc3M9XCJhYy1jaGFydC1jb250YWluZXIgdHctdy1mdWxsIHR3LWgtZnVsbFwiXG4gID48L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJhYy1jaGFydC1zdGF0dXNcIlxuICAgICpuZ0lmPVwic3RhdHVzJCB8IGFzeW5jIGFzIHN0YXR1c1wiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInN0YXR1cy5mYWlsZWQgJiYgIXN0YXR1cy5sb2FkaW5nXCJcbiAgICAgIGNsYXNzPVwic3RhdHVzIGZhaWxlZFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUVycm9yQ29udGFpbmVyOyBlbHNlIG5vQ3VzdG9tRXJyb3JDb250YWluZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21FcnJvckNvbnRhaW5lclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI25vQ3VzdG9tRXJyb3JDb250YWluZXI+XG4gICAgICAgIDxhdWktaWNvblxuICAgICAgICAgIGljb249XCJleGNsYW1hdGlvbl90cmlhbmdsZV9zXCJcbiAgICAgICAgICBiYWNrZ3JvdW5kPVwidHJpYW5nbGVcIlxuICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAge3sgJ2ZhaWxlZF9sb2FkX3BsZWFzZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICgncmVmcmVzaCcgfCB0cmFuc2xhdGUpLnRvTG93ZXJDYXNlKCkgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic3RhdHVzLmxvYWRpbmdcIlxuICAgICAgY2xhc3M9XCJzdGF0dXMgbG9hZGluZ1wiXG4gICAgPlxuICAgICAgPGF1aS1pY29uIGljb249XCJzcGlubmVyXCI+PC9hdWktaWNvbj4ge3sgJ2xvYWRpbmcnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzdGF0dXMubm9MZWdlbmQgJiYgIXN0YXR1cy5sb2FkaW5nXCJcbiAgICAgIGNsYXNzPVwic3RhdHVzIG5vLWxlZ2VuZFwiXG4gICAgPlxuICAgICAge3sgJ25vX2luZGljYXRvcl9zZWxlY3RlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic3RhdHVzLm5vRGF0YSAmJiAhc3RhdHVzLmxvYWRpbmcgJiYgIXN0YXR1cy5mYWlsZWRcIlxuICAgICAgY2xhc3M9XCJzdGF0dXMgbm8tZGF0YVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGN1c3RvbU5vRGF0YVRpdGxlICYmIGlzVGVtcGxhdGVSZWYoY3VzdG9tTm9EYXRhVGl0bGUpO1xuICAgICAgICAgIGVsc2Ugbm9EYXRhVGl0bGVUZW1wbGF0ZVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU5vRGF0YVRpdGxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EYXRhVGl0bGVUZW1wbGF0ZT5cbiAgICAgICAge3sgY3VzdG9tTm9EYXRhVGl0bGUgfHwgKCdub19kYXRhJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gdGl0bGUgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI3RpdGxlQ29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZW1wbGF0ZVJlZih0aXRsZSk7IGVsc2UgVGl0bGVUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGl0bGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVtcGxhdGVSZWYodGl0bGVEZXNjcmlwdGlvbik7IGVsc2UgVGl0bGVEZXNUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpdGxlRGVzY3JpcHRpb25cIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInRpdGxlRGVzY3JpcHRpb25Db250ZXh0XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNUaXRsZVRlbXBsYXRlPlxuICB7eyB0aXRsZSB9fVxuICB7eyB1bml0ID8gJygnICsgKHVuaXQgfCB0cmFuc2xhdGU6IHt9OnRydWUpICsgJyknIDogJycgfX1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjVGl0bGVEZXNUZW1wbGF0ZT5cbiAge3sgdGl0bGVEZXNjcmlwdGlvbiB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSB0b29sdGlwIHRlbXBsYXRlIC0tPlxuPGRpdlxuICAjdG9vbHRpcEl0ZW1WaXJ0dWFsXG4gIGNsYXNzPVwiaGlkZVwiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b29sdGlwUG9pbnRUZW1wbGF0ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInRvb2x0aXBJdGVtQ29udGV4dFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2XG4gICN0b29sdGlwVGl0bGVWaXJ0dWFsXG4gIGNsYXNzPVwiaGlkZVwiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b29sdGlwVGl0bGVUZW1wbGF0ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInRvb2x0aXBUaXRsZUNvbnRleHRcIlxuICA+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdlxuICAjdG9vbHRpcE5hbWVWaXJ0dWFsXG4gIGNsYXNzPVwiaGlkZVwiXG4+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidG9vbHRpcFBvaW50TmFtZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNwaWVMYWJlbENvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwicGllTGFiZWxUZXh0ICYmIGlzVGVtcGxhdGVSZWYocGllTGFiZWxUZXh0KTsgZWxzZSBzdHJpbmdQaWVMYWJlbFRleHRcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJwaWVMYWJlbFRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjc3RyaW5nUGllTGFiZWxUZXh0PlxuICAgIHt7IHBpZUxhYmVsVGV4dCB9fVxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -18,9 +18,10 @@ export * from './tags-label/component';
18
18
  export * from './status-icon/status-icon.component';
19
19
  export * from './text-ellipsis/component';
20
20
  export * from './password-input/component';
21
+ export { ResourceLabelComponent } from './resource-label/component';
21
22
  export { ResourceMultiSelectComponent } from './resource-multi-select/component';
22
23
  export { isSelectAll, ALL_VALUE, checkValueExit, } from './resource-multi-select/util';
23
24
  export { SearchItemComponent } from './search-panel/search-item/component';
24
25
  export { SearchPanelComponent } from './search-panel/component';
25
26
  export { SearchItemLabelDirective } from './search-panel/helper.directive';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy93aWRnZXQvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlCQUFpQixDQUFDO0FBRWhDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGNBQWMsR0FDZixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maXJtLWRlbGV0ZS9jb25maXJtLWRlbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maXJtLWRlbGV0ZS91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpZWxkLXNldCc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRpbmctbWFzay9sb2FkaW5nLW1hc2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LXByZWZpeC1sYWJlbC9kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi96ZXJvLXN0YXRlL3plcm8tc3RhdGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVsYXRpdmUtdGltZS9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXQubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9mb2xkYWJsZS1ibG9jay9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb2xkYWJsZS1pdGVtLWluLXRhYmxlL2NvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Rlcm1pbmF0aW5nLXRhZy9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LXdpdGgtdXJsL2NvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtc2VjdGlvbi9jYXJkLXNlY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY3VycmVudC10aW1lL2NvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RleHQtdG9vbHRpcC9kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vdGFncy1sYWJlbC9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0dXMtaWNvbi9zdGF0dXMtaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LWVsbGlwc2lzL2NvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcGFzc3dvcmQtaW5wdXQvY29tcG9uZW50JztcblxuZXhwb3J0IHsgUmVzb3VyY2VNdWx0aVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vcmVzb3VyY2UtbXVsdGktc2VsZWN0L2NvbXBvbmVudCc7XG5leHBvcnQge1xuICBpc1NlbGVjdEFsbCxcbiAgQUxMX1ZBTFVFLFxuICBjaGVja1ZhbHVlRXhpdCxcbn0gZnJvbSAnLi9yZXNvdXJjZS1tdWx0aS1zZWxlY3QvdXRpbCc7XG5leHBvcnQgeyBTZWFyY2hJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtcGFuZWwvc2VhcmNoLWl0ZW0vY29tcG9uZW50JztcbmV4cG9ydCB7IFNlYXJjaFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtcGFuZWwvY29tcG9uZW50JztcbmV4cG9ydCB7IFNlYXJjaEl0ZW1MYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4vc2VhcmNoLXBhbmVsL2hlbHBlci5kaXJlY3RpdmUnO1xuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy93aWRnZXQvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlCQUFpQixDQUFDO0FBRWhDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXBFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pGLE9BQU8sRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGNBQWMsR0FDZixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maXJtLWRlbGV0ZS9jb25maXJtLWRlbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maXJtLWRlbGV0ZS91dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpZWxkLXNldCc7XG5leHBvcnQgKiBmcm9tICcuL2xvYWRpbmctbWFzay9sb2FkaW5nLW1hc2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LXByZWZpeC1sYWJlbC9kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi96ZXJvLXN0YXRlL3plcm8tc3RhdGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVsYXRpdmUtdGltZS9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXQubW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9mb2xkYWJsZS1ibG9jay9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb2xkYWJsZS1pdGVtLWluLXRhYmxlL2NvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Rlcm1pbmF0aW5nLXRhZy9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LXdpdGgtdXJsL2NvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NhcmQtc2VjdGlvbi9jYXJkLXNlY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY3VycmVudC10aW1lL2NvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RleHQtdG9vbHRpcC9kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vdGFncy1sYWJlbC9jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdGF0dXMtaWNvbi9zdGF0dXMtaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LWVsbGlwc2lzL2NvbXBvbmVudCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcGFzc3dvcmQtaW5wdXQvY29tcG9uZW50JztcbmV4cG9ydCB7IFJlc291cmNlTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL3Jlc291cmNlLWxhYmVsL2NvbXBvbmVudCc7XG5cbmV4cG9ydCB7IFJlc291cmNlTXVsdGlTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3Jlc291cmNlLW11bHRpLXNlbGVjdC9jb21wb25lbnQnO1xuZXhwb3J0IHtcbiAgaXNTZWxlY3RBbGwsXG4gIEFMTF9WQUxVRSxcbiAgY2hlY2tWYWx1ZUV4aXQsXG59IGZyb20gJy4vcmVzb3VyY2UtbXVsdGktc2VsZWN0L3V0aWwnO1xuZXhwb3J0IHsgU2VhcmNoSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLXBhbmVsL3NlYXJjaC1pdGVtL2NvbXBvbmVudCc7XG5leHBvcnQgeyBTZWFyY2hQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vc2VhcmNoLXBhbmVsL2NvbXBvbmVudCc7XG5leHBvcnQgeyBTZWFyY2hJdGVtTGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuL3NlYXJjaC1wYW5lbC9oZWxwZXIuZGlyZWN0aXZlJztcbiJdfQ==
@@ -0,0 +1,131 @@
1
+ import { IconComponent, TooltipModule } from '@alauda/ui';
2
+ import { NgIf, NgTemplateOutlet } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
4
+ import { FIELD_NOT_AVAILABLE_PLACEHOLDER, formatNumber, PurePipe, } from '../../core/public-api';
5
+ import { TranslatePipe, TranslateService } from '../../translate/public-api';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../translate/public-api";
8
+ import * as i2 from "@alauda/ui";
9
+ const _c0 = a0 => ({ $implicit: a0 });
10
+ function ResourceLabelComponent_ng_template_1_aui_icon_0_Template(rf, ctx) { if (rf & 1) {
11
+ i0.ɵɵelement(0, "aui-icon", 3);
12
+ i0.ɵɵpipe(1, "translate");
13
+ } if (rf & 2) {
14
+ const info_r1 = i0.ɵɵnextContext().$implicit;
15
+ const ctx_r1 = i0.ɵɵnextContext();
16
+ i0.ɵɵclassMap("icon__" + ctx_r1.type);
17
+ i0.ɵɵproperty("icon", info_r1.icon)("auiTooltip", i0.ɵɵpipeBind1(1, 4, ctx_r1.type));
18
+ } }
19
+ function ResourceLabelComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵtemplate(0, ResourceLabelComponent_ng_template_1_aui_icon_0_Template, 2, 6, "aui-icon", 2);
21
+ i0.ɵɵtext(1);
22
+ i0.ɵɵpipe(2, "pure");
23
+ } if (rf & 2) {
24
+ const info_r1 = ctx.$implicit;
25
+ const ctx_r1 = i0.ɵɵnextContext();
26
+ i0.ɵɵproperty("ngIf", !ctx_r1.noIcon);
27
+ i0.ɵɵadvance();
28
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(2, 2, ctx_r1.rawValue, info_r1.formatter, ctx_r1.translate.locale), "\n");
29
+ } }
30
+ export class ResourceLabelComponent {
31
+ get formattedDefault() {
32
+ return this.default === FIELD_NOT_AVAILABLE_PLACEHOLDER
33
+ ? this.default
34
+ : this.translate.get(this.default);
35
+ }
36
+ constructor(translate) {
37
+ this.translate = translate;
38
+ this.default = 'unlimited';
39
+ this.noIcon = false;
40
+ this.labelIconMapper = {
41
+ cpu: {
42
+ icon: 'prod:cpu',
43
+ formatter: this.formatCPU.bind(this),
44
+ },
45
+ memory: {
46
+ icon: 'prod:memory',
47
+ formatter: this.formatMemory.bind(this),
48
+ },
49
+ };
50
+ }
51
+ formatCPU(rawData) {
52
+ const cpuUnit = this.getResourceUnit(rawData, this.formatCpuUnit);
53
+ if (!cpuUnit) {
54
+ return this.formattedDefault;
55
+ }
56
+ return cpuUnit.endsWith('m')
57
+ ? cpuUnit
58
+ : cpuUnit + ' ' + this.translate.get('unit_core');
59
+ }
60
+ formatMemory(rawData) {
61
+ const memoryUnit = this.getResourceUnit(rawData, this.formatMemoryUnit);
62
+ if (!memoryUnit) {
63
+ return this.formattedDefault;
64
+ }
65
+ return memoryUnit?.match(/[a-z]+/i) ? memoryUnit : memoryUnit + ' Bytes';
66
+ }
67
+ getResourceUnit(rawData, converter) {
68
+ if (typeof rawData === 'string') {
69
+ const matched = rawData.match(/([\d.]+)([a-z]+)/i);
70
+ if (matched) {
71
+ return matched[1] + ' ' + matched[2];
72
+ }
73
+ return rawData;
74
+ }
75
+ return converter(rawData);
76
+ }
77
+ formatCpuUnit(cpu) {
78
+ let cpuUnit = 'm';
79
+ if (cpu >= 1000) {
80
+ cpu /= 1000;
81
+ cpuUnit = '';
82
+ }
83
+ return isNaN(cpu)
84
+ ? ''
85
+ : formatNumber(cpu, [1, 0, 2]) + (cpuUnit ? ' ' + cpuUnit : '');
86
+ }
87
+ formatMemoryUnit(memory) {
88
+ let memoryUnit = 'Mi';
89
+ memory /= 1024 ** 2;
90
+ if (memory >= 1024) {
91
+ memory /= 1024;
92
+ memoryUnit = 'Gi';
93
+ }
94
+ return isNaN(memory)
95
+ ? ''
96
+ : formatNumber(memory, [1, 0, 2]) + (memoryUnit ? ' ' + memoryUnit : '');
97
+ }
98
+ static { this.ɵfac = function ResourceLabelComponent_Factory(t) { return new (t || ResourceLabelComponent)(i0.ɵɵdirectiveInject(i1.TranslateService)); }; }
99
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ResourceLabelComponent, selectors: [["acl-resource-label"]], inputs: { rawValue: "rawValue", default: "default", type: "type", noIcon: "noIcon" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 3, vars: 4, consts: [["infoTmpl", ""], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["size", "16", "auiTooltipType", "info", 3, "icon", "class", "auiTooltip", 4, "ngIf"], ["size", "16", "auiTooltipType", "info", 3, "icon", "auiTooltip"]], template: function ResourceLabelComponent_Template(rf, ctx) { if (rf & 1) {
100
+ i0.ɵɵelementContainer(0, 1);
101
+ i0.ɵɵtemplate(1, ResourceLabelComponent_ng_template_1_Template, 3, 6, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
102
+ } if (rf & 2) {
103
+ const infoTmpl_r3 = i0.ɵɵreference(2);
104
+ i0.ɵɵproperty("ngTemplateOutlet", infoTmpl_r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, ctx.labelIconMapper[ctx.type]));
105
+ } }, dependencies: [NgTemplateOutlet,
106
+ IconComponent,
107
+ NgIf,
108
+ TranslatePipe,
109
+ TooltipModule, i2.TooltipDirective, PurePipe], styles: ["[_nghost-%COMP%]{display:inline-flex;align-items:center}[_nghost-%COMP%] aui-icon[_ngcontent-%COMP%]{margin-right:4px}[_nghost-%COMP%] aui-icon.icon__cpu[_ngcontent-%COMP%]{color:var(--acl-icon-color-cpu)}[_nghost-%COMP%] aui-icon.icon__memory[_ngcontent-%COMP%]{color:var(--acl-icon-color-memory)}"], changeDetection: 0 }); }
110
+ }
111
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceLabelComponent, [{
112
+ type: Component,
113
+ args: [{ selector: 'acl-resource-label', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
114
+ NgTemplateOutlet,
115
+ IconComponent,
116
+ NgIf,
117
+ TranslatePipe,
118
+ TooltipModule,
119
+ PurePipe,
120
+ ], template: "<ng-container\n [ngTemplateOutlet]=\"infoTmpl\"\n [ngTemplateOutletContext]=\"{ $implicit: labelIconMapper[type] }\"\n></ng-container>\n<ng-template\n #infoTmpl\n let-info\n>\n <aui-icon\n size=\"16\"\n *ngIf=\"!noIcon\"\n [icon]=\"info.icon\"\n [class]=\"'icon__' + type\"\n [auiTooltip]=\"type | translate\"\n auiTooltipType=\"info\"\n ></aui-icon>\n {{ rawValue | pure: info.formatter : translate.locale }}\n</ng-template>\n", styles: [":host{display:inline-flex;align-items:center}:host aui-icon{margin-right:4px}:host aui-icon.icon__cpu{color:var(--acl-icon-color-cpu)}:host aui-icon.icon__memory{color:var(--acl-icon-color-memory)}\n"] }]
121
+ }], () => [{ type: i1.TranslateService }], { rawValue: [{
122
+ type: Input
123
+ }], default: [{
124
+ type: Input
125
+ }], type: [{
126
+ type: Input
127
+ }], noIcon: [{
128
+ type: Input
129
+ }] }); })();
130
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceLabelComponent, { className: "ResourceLabelComponent" }); })();
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3dpZGdldC9yZXNvdXJjZS1sYWJlbC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvd2lkZ2V0L3Jlc291cmNlLWxhYmVsL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsWUFBWSxFQUNaLFFBQVEsR0FDVCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7O0lDRDNFLDhCQU9ZOzs7OztJQUhWLHFDQUF5QjtJQUN6QixBQUZBLG1DQUFrQixpREFFYTs7O0lBTGpDLCtGQU9DO0lBQ0QsWUFDRjs7Ozs7SUFQSyxxQ0FBYTtJQU1oQixjQUNGO0lBREUsbUhBQ0Y7O0FEZ0JBLE1BQU0sT0FBTyxzQkFBc0I7SUFlakMsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLCtCQUErQjtZQUNyRCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFhRCxZQUE0QixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQTFCdkQsWUFBTyxHQUFHLFdBQVcsQ0FBQztR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LENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO3VGQXhGVSxzQkFBc0I7b0VBQXRCLHNCQUFzQjtZQ2pDbkMsMkJBR2dCO1lBQ2hCLHdIQUdDOzs7WUFMQyxBQURBLDhDQUE2QixzRkFDbUM7NEJEdUI5RCxnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLElBQUk7WUFDSixhQUFhO1lBQ2IsYUFBYSx1QkFDYixRQUFROztpRkFHQyxzQkFBc0I7Y0FmbEMsU0FBUzsyQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7b0JBQ1AsZ0JBQWdCO29CQUNoQixhQUFhO29CQUNiLElBQUk7b0JBQ0osYUFBYTtvQkFDYixhQUFhO29CQUNiLFFBQVE7aUJBQ1Q7aURBS0QsUUFBUTtrQkFEUCxLQUFLO1lBSU4sT0FBTztrQkFETixLQUFLO1lBS04sSUFBSTtrQkFESCxLQUFLO1lBSU4sTUFBTTtrQkFETCxLQUFLOztrRkFaSyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uQ29tcG9uZW50LCBUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEZJRUxEX05PVF9BVkFJTEFCTEVfUExBQ0VIT0xERVIsXG4gIGZvcm1hdE51bWJlcixcbiAgUHVyZVBpcGUsXG59IGZyb20gJy4uLy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuXG50eXBlIFJlc291cmNlVHlwZSA9ICdjcHUnIHwgJ21lbW9yeSc7XG5cbmludGVyZmFjZSBSZXNvdXJjZUluZm8ge1xuICBpY29uOiBzdHJpbmc7XG4gIGZvcm1hdHRlcjogKHJhd0RhdGE6IG51bWJlciB8IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKSA9PiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1yZXNvdXJjZS1sYWJlbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBOZ0lmLFxuICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBQdXJlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VMYWJlbENvbXBvbmVudCB7XG4gIC8vIOWQhOi1hOa6kOeahOWOn+Wni+WAvFxuICBASW5wdXQoKVxuICByYXdWYWx1ZTogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIGRlZmF1bHQgPSAndW5saW1pdGVkJztcblxuICAvLyDmlrDlop7nsbvlnovpnIDopoHov5vooYzmianlhYVcbiAgQElucHV0KClcbiAgdHlwZTogUmVzb3VyY2VUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIG5vSWNvbiA9IGZhbHNlO1xuXG4gIGdldCBmb3JtYXR0ZWREZWZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHQgPT09IEZJRUxEX05PVF9BVkFJTEFCTEVfUExBQ0VIT0xERVJcbiAgICAgID8gdGhpcy5kZWZhdWx0XG4gICAgICA6IHRoaXMudHJhbnNsYXRlLmdldCh0aGlzLmRlZmF1bHQpO1xuICB9XG5cbiAgbGFiZWxJY29uTWFwcGVyOiBSZWNvcmQ8UmVzb3VyY2VUeXBlLCBSZXNvdXJjZUluZm8+ID0ge1xuICAgIGNwdToge1xuICAgICAgaWNvbjogJ3Byb2Q6Y3B1JyxcbiAgICAgIGZvcm1hdHRlcjogdGhpcy5mb3JtYXRDUFUuYmluZCh0aGlzKSxcbiAgICB9LFxuICAgIG1lbW9yeToge1xuICAgICAgaWNvbjogJ3Byb2Q6bWVtb3J5JyxcbiAgICAgIGZvcm1hdHRlcjogdGhpcy5mb3JtYXRNZW1vcnkuYmluZCh0aGlzKSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgZm9ybWF0Q1BVKHJhd0RhdGE6IG51bWJlciB8IHN0cmluZykge1xuICAgIGNvbnN0IGNwdVVuaXQgPSB0aGlzLmdldFJlc291cmNlVW5pdChyYXdEYXRhLCB0aGlzLmZvcm1hdENwdVVuaXQpO1xuICAgIGlmICghY3B1VW5pdCkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkRGVmYXVsdDtcbiAgICB9XG4gICAgcmV0dXJuIGNwdVVuaXQuZW5kc1dpdGgoJ20nKVxuICAgICAgPyBjcHVVbml0XG4gICAgICA6IGNwdVVuaXQgKyAnICcgKyB0aGlzLnRyYW5zbGF0ZS5nZXQoJ3VuaXRfY29yZScpO1xuICB9XG5cbiAgZm9ybWF0TWVtb3J5KHJhd0RhdGE6IG51bWJlciB8IHN0cmluZykge1xuICAgIGNvbnN0IG1lbW9yeVVuaXQgPSB0aGlzLmdldFJlc291cmNlVW5pdChyYXdEYXRhLCB0aGlzLmZvcm1hdE1lbW9yeVVuaXQpO1xuXG4gICAgaWYgKCFtZW1vcnlVbml0KSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZWREZWZhdWx0O1xuICAgIH1cbiAgICByZXR1cm4gbWVtb3J5VW5pdD8ubWF0Y2goL1thLXpdKy9pKSA/IG1lbW9yeVVuaXQgOiBtZW1vcnlVbml0ICsgJyBCeXRlcyc7XG4gIH1cblxuICBwcml2YXRlIGdldFJlc291cmNlVW5pdChcbiAgICByYXdEYXRhOiBudW1iZXIgfCBzdHJpbmcsXG4gICAgY29udmVydGVyPzogKF86IG51bWJlcikgPT4gc3RyaW5nLFxuICApIHtcbiAgICBpZiAodHlwZW9mIHJhd0RhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBtYXRjaGVkID0gcmF3RGF0YS5tYXRjaCgvKFtcXGQuXSspKFthLXpdKykvaSk7XG4gICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlZFsxXSArICcgJyArIG1hdGNoZWRbMl07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmF3RGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRlcihyYXdEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0Q3B1VW5pdChjcHU6IG51bWJlcikge1xuICAgIGxldCBjcHVVbml0ID0gJ20nO1xuICAgIGlmIChjcHUgPj0gMTAwMCkge1xuICAgICAgY3B1IC89IDEwMDA7XG4gICAgICBjcHVVbml0ID0gJyc7XG4gICAgfVxuICAgIHJldHVybiBpc05hTihjcHUpXG4gICAgICA/ICcnXG4gICAgICA6IGZvcm1hdE51bWJlcihjcHUsIFsxLCAwLCAyXSkgKyAoY3B1VW5pdCA/ICcgJyArIGNwdVVuaXQgOiAnJyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE1lbW9yeVVuaXQobWVtb3J5OiBudW1iZXIpIHtcbiAgICBsZXQgbWVtb3J5VW5pdCA9ICdNaSc7XG4gICAgbWVtb3J5IC89IDEwMjQgKiogMjtcbiAgICBpZiAobWVtb3J5ID49IDEwMjQpIHtcbiAgICAgIG1lbW9yeSAvPSAxMDI0O1xuICAgICAgbWVtb3J5VW5pdCA9ICdHaSc7XG4gICAgfVxuICAgIHJldHVybiBpc05hTihtZW1vcnkpXG4gICAgICA/ICcnXG4gICAgICA6IGZvcm1hdE51bWJlcihtZW1vcnksIFsxLCAwLCAyXSkgKyAobWVtb3J5VW5pdCA/ICcgJyArIG1lbW9yeVVuaXQgOiAnJyk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXJcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5mb1RtcGxcIlxuICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGxhYmVsSWNvbk1hcHBlclt0eXBlXSB9XCJcbj48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZVxuICAjaW5mb1RtcGxcbiAgbGV0LWluZm9cbj5cbiAgPGF1aS1pY29uXG4gICAgc2l6ZT1cIjE2XCJcbiAgICAqbmdJZj1cIiFub0ljb25cIlxuICAgIFtpY29uXT1cImluZm8uaWNvblwiXG4gICAgW2NsYXNzXT1cIidpY29uX18nICsgdHlwZVwiXG4gICAgW2F1aVRvb2x0aXBdPVwidHlwZSB8IHRyYW5zbGF0ZVwiXG4gICAgYXVpVG9vbHRpcFR5cGU9XCJpbmZvXCJcbiAgPjwvYXVpLWljb24+XG4gIHt7IHJhd1ZhbHVlIHwgcHVyZTogaW5mby5mb3JtYXR0ZXIgOiB0cmFuc2xhdGUubG9jYWxlIH19XG48L25nLXRlbXBsYXRlPlxuIl19