@wavemaker/app-ng-runtime 12.0.0-next.45032 → 12.0.0-next.45501

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +405 -451
  2. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +2 -3
  3. app-ng-runtime/build-task/esm2022/public_api.mjs +1 -3
  4. app-ng-runtime/build-task/fesm2022/index.mjs +406 -454
  5. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  6. app-ng-runtime/build-task/public_api.d.ts +0 -2
  7. app-ng-runtime/components/base/bundles/index.umd.js +14 -62
  8. app-ng-runtime/components/base/components.module.d.ts +11 -12
  9. app-ng-runtime/components/base/esm2022/components.module.mjs +1 -5
  10. app-ng-runtime/components/base/esm2022/public_api.mjs +1 -2
  11. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +15 -25
  12. app-ng-runtime/components/base/fesm2022/index.mjs +15 -62
  13. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  14. app-ng-runtime/components/base/public_api.d.ts +0 -1
  15. app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +5 -10
  16. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +17 -0
  17. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +18 -1
  18. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +17 -0
  19. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  20. app-ng-runtime/components/containers/wizard/wizard.component.d.ts +1 -0
  21. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +1 -3
  22. app-ng-runtime/components/data/form/fesm2022/index.mjs +0 -2
  23. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  24. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +11 -0
  25. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +12 -1
  26. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +11 -0
  27. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  28. app-ng-runtime/components/input/default/bundles/index.umd.js +63 -39
  29. app-ng-runtime/components/input/default/checkboxset/checkboxset.component.d.ts +0 -1
  30. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +5 -8
  31. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +5 -8
  32. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +57 -29
  33. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +1 -4
  34. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +2 -2
  35. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +4 -1
  36. app-ng-runtime/components/input/default/fesm2022/index.mjs +63 -39
  37. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  38. app-ng-runtime/components/input/default/radioset/radioset.component.d.ts +0 -1
  39. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -4
  40. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +3 -2
  41. app-ng-runtime/components/input/epoch/bundles/index.umd.js +3 -0
  42. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +4 -1
  43. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +3 -0
  44. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  45. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +31 -5
  46. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +34 -8
  47. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +32 -6
  48. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  49. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +6 -2
  50. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +2 -2
  51. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +2 -2
  52. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
  53. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +2 -2
  54. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  55. app-ng-runtime/core/bundles/index.umd.js +6 -16
  56. app-ng-runtime/core/enums/enums.d.ts +1 -2
  57. app-ng-runtime/core/esm2022/enums/enums.mjs +1 -2
  58. app-ng-runtime/core/esm2022/types/types.mjs +1 -4
  59. app-ng-runtime/core/esm2022/utils/build-utils.mjs +1 -6
  60. app-ng-runtime/core/esm2022/utils/utils.mjs +4 -3
  61. app-ng-runtime/core/fesm2022/index.mjs +4 -12
  62. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  63. app-ng-runtime/core/types/types.d.ts +1 -5
  64. app-ng-runtime/core/utils/utils.d.ts +1 -0
  65. app-ng-runtime/mobile/core/bundles/index.umd.js +18 -2
  66. app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +19 -3
  67. app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -2
  68. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  69. app-ng-runtime/package.json +1 -1
  70. app-ng-runtime/runtime/base/bundles/index.umd.js +5 -288
  71. app-ng-runtime/runtime/base/esm2022/public_api.mjs +1 -2
  72. app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +1 -6
  73. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
  74. app-ng-runtime/runtime/base/esm2022/types/types.mjs +1 -2
  75. app-ng-runtime/runtime/base/fesm2022/index.mjs +4 -287
  76. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  77. app-ng-runtime/runtime/base/public_api.d.ts +0 -1
  78. app-ng-runtime/runtime/base/runtime-base.module.d.ts +8 -9
  79. app-ng-runtime/runtime/base/types/types.d.ts +1 -2
  80. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +9 -27
  81. app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +2 -5
  82. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +7 -23
  83. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +7 -26
  84. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  85. app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  86. app-ng-runtime/scripts/datatable/datatable.js +6 -3
  87. app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -3
  88. app-ng-runtime/transpiler/bundles/index.umd.js +0 -5
  89. app-ng-runtime/transpiler/esm2022/build.mjs +1 -4
  90. app-ng-runtime/transpiler/esm2022/imports.mjs +1 -3
  91. app-ng-runtime/transpiler/fesm2022/index.mjs +0 -5
  92. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
  93. app-ng-runtime/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +0 -2
  94. app-ng-runtime/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +0 -2
  95. app-ng-runtime/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +0 -15
  96. app-ng-runtime/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +0 -26
  97. app-ng-runtime/components/advanced/custom/.npmignore +0 -2
  98. app-ng-runtime/components/advanced/custom/bundles/index.umd.js +0 -232
  99. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +0 -19
  100. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +0 -2
  101. app-ng-runtime/components/advanced/custom/custom-widget-prop.d.ts +0 -1
  102. app-ng-runtime/components/advanced/custom/custom-widget.directive.d.ts +0 -19
  103. app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +0 -10
  104. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +0 -102
  105. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +0 -12
  106. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-prop.mjs +0 -8
  107. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +0 -68
  108. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +0 -32
  109. app-ng-runtime/components/advanced/custom/esm2022/index.mjs +0 -5
  110. app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +0 -4
  111. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +0 -215
  112. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +0 -1
  113. app-ng-runtime/components/advanced/custom/index.d.ts +0 -5
  114. app-ng-runtime/components/advanced/custom/package.json +0 -23
  115. app-ng-runtime/components/advanced/custom/public_api.d.ts +0 -3
  116. app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +0 -39
  117. app-ng-runtime/components/base/widgets/common/base/custom-widget-container.directive.d.ts +0 -14
  118. app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +0 -72
  119. app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +0 -288
@@ -91,7 +91,6 @@ import { PopoverModule } from "@wm/components/navigation/popover";
91
91
  import { CarouselModule } from "@wm/components/advanced/carousel";
92
92
  import { LoginModule } from "@wm/components/advanced/login";
93
93
  import { MarqueeModule } from "@wm/components/advanced/marquee";
94
- import { CustomModule } from "@wm/components/advanced/custom";
95
94
  import { BsDatepickerModule } from "ngx-bootstrap/datepicker";
96
95
  import { TimepickerModule as ngxTimepickerModule } from "ngx-bootstrap/timepicker";
97
96
  import { BsDropdownModule } from "ngx-bootstrap/dropdown";
@@ -217,7 +216,6 @@ export const REQUIRED_MODULES_FOR_DYNAMIC_COMPONENTS = [
217
216
  CarouselModule,
218
217
  LoginModule,
219
218
  MarqueeModule,
220
- CustomModule,
221
219
  PageModule,
222
220
  FooterModule,
223
221
  HeaderModule,
@@ -412,7 +410,6 @@ export class RuntimeBaseModule {
412
410
  CarouselModule,
413
411
  LoginModule,
414
412
  MarqueeModule,
415
- CustomModule,
416
413
  PageModule,
417
414
  FooterModule,
418
415
  HeaderModule,
@@ -543,7 +540,6 @@ export class RuntimeBaseModule {
543
540
  CarouselModule,
544
541
  LoginModule,
545
542
  MarqueeModule,
546
- CustomModule,
547
543
  PageModule,
548
544
  FooterModule,
549
545
  HeaderModule,
@@ -628,7 +624,6 @@ export class RuntimeBaseModule {
628
624
  CarouselModule,
629
625
  LoginModule,
630
626
  MarqueeModule,
631
- CustomModule,
632
627
  PageModule,
633
628
  FooterModule,
634
629
  HeaderModule,
@@ -646,4 +641,4 @@ export const WM_MODULES_FOR_ROOT = [
646
641
  HttpServiceModule.forRoot(),
647
642
  RuntimeBaseModule.forRoot()
648
643
  ];
649
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1iYXNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvcnVudGltZS1iYXNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFFBQVEsRUFDUixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsVUFBVSxFQUNiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FB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QUFVO1FBQ1YsWUFBWTtRQUVaLFVBQVU7UUFDVixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFFbkIsYUFBYTtRQUNiLGdCQUFnQjtRQUNoQixVQUFVO1FBQ1YsWUFBWTtRQUNaLGFBQWE7UUFFYixXQUFXO1FBQ1gsY0FBYztRQUNkLFdBQVc7UUFDWCxhQUFhO1FBQ2IsWUFBWTtRQUVaLFVBQVU7UUFDVixZQUFZO1FBQ1osWUFBWTtRQUNaLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLFlBQVk7QUF5SmhCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQy9CLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtJQUM1QixtQkFBbUIsQ0FBQyxPQUFPLEVBQUU7SUFDN0IsVUFBVSxDQUFDLE9BQU8sRUFBRTtJQUNwQixjQUFjLENBQUMsT0FBTyxFQUFFO0lBQ3hCLFdBQVcsQ0FBQyxPQUFPLEVBQUU7SUFDckIsZUFBZSxDQUFDLE9BQU8sRUFBRTtJQUN6QixpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7SUFDM0IsaUJBQWlCLENBQUMsT0FBTyxFQUFFO0NBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FQUF9JTklUSUFMSVpFUiwgTE9DQUxFX0lELCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSwgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMsIEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyDJtVNoYXJlZFN0eWxlc0hvc3QgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7ybVEb21SZW5kZXJlckZhY3RvcnkyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRvYXN0ck1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xuXG5pbXBvcnQge1xuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICAkcGFyc2VFeHByLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSxcbiAgICBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgIEFic3RyYWN0VG9hc3RlclNlcnZpY2UsXG4gICAgQXBwLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIENvcmVNb2R1bGUsXG4gICAgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIGlzT2JqZWN0LFxuICAgIGlzSXBob25lLFxuICAgIGlzSXBvZCxcbiAgICBpc0lwYWQsXG4gICAgVmlld3BvcnQsXG4gICAgaGFzQ29yZG92YVxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBXbUNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvY29uZmlybS1kaWFsb2cnO1xuaW1wb3J0IHsgRGVzaWduRGlhbG9nTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9kZXNpZ24tZGlhbG9nJztcbmltcG9ydCB7IFByZWZhYk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3ByZWZhYic7XG5pbXBvcnQgeyBNb2JpbGVSdW50aW1lTW9kdWxlIH0gZnJvbSAnQHdtL21vYmlsZS9ydW50aW1lJztcbmltcG9ydCB7IFNlY3VyaXR5TW9kdWxlIH0gZnJvbSAnQHdtL3NlY3VyaXR5JztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlTW9kdWxlIH0gZnJvbSAnQHdtL2h0dHAnO1xuaW1wb3J0IHsgVmFyaWFibGVzTW9kdWxlIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBPQXV0aE1vZHVsZSB9IGZyb20gJ0B3bS9vQXV0aCc7XG5cbmltcG9ydCB7IEFjY2Vzc3JvbGVzRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2FjY2Vzc3JvbGVzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FwcC1zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21Ub2FzdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS10b2FzdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVBhZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1wdHktY29tcG9uZW50L2VtcHR5LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFByZWZhYkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9wcmVmYWIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFwcFJlZiB9IGZyb20gJy4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy90b2FzdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Bpbm5lclNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy9zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGlwZVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9waXBlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEFwcERlZmF1bHRzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwLWRlZmF1bHRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC5tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZmFiTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ByZWZhYi1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvYXV0aC5ndWFyZCc7XG5pbXBvcnQgeyBSb2xlR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9yb2xlLmd1YXJkJztcbmltcG9ydCB7IFBhZ2VOb3RGb3VuZEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvcGFnZS1ub3QtZm91bmQuZ3VhcmQnO1xuaW1wb3J0IHsgQXBwSlNSZXNvbHZlIH0gZnJvbSAnLi9yZXNvbHZlcy9hcHAtanMucmVzb2x2ZSc7XG5pbXBvcnQgeyBBcHBFeHRlbnNpb25KU1Jlc29sdmUgfSBmcm9tICcuL3Jlc29sdmVzL2FwcC1leHRlbnNpb24ucmVzb2x2ZSc7XG5pbXBvcnQgeyBJMThuUmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZXMvaTE4bi5yZXNvbHZlJztcbmltcG9ydCB7IEFwcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHR0cENhbGxJbnRlcmNlcHRvciB9IGZyb20gJy4vc2VydmljZXMvaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcmVmYWJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ByZWZhYi1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9keW5hbWljLWNvbXBvbmVudC1yZWYtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlUGFnZUd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvY2FuLWRlYWN0aXZhdGUtcGFnZS5ndWFyZCc7XG5pbXBvcnQgeyBNQVhfQ0FDSEVfQUdFLCBNQVhfQ0FDSEVfU0laRSB9IGZyb20gJy4vdXRpbC93bS1yb3V0ZS1yZXVzZS1zdHJhdGVneSc7XG5cbi8vYW5ndWxhciBvdmVycmlkZXNcbmltcG9ydCB7IFdNRG9tU2hhcmVkU3R5bGVzSG9zdCB9IGZyb20gXCIuL292ZXJyaWRlcy93bV9zaGFyZWRfc3R5bGVzX2hvc3RcIjtcbmltcG9ydCB7IFdNRG9tUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gXCIuL292ZXJyaWRlcy93bV9kb21fcmVuZGVyZXJcIjtcbmltcG9ydCB7UGFnZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2VcIjtcbmltcG9ydCB7Rm9vdGVyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9mb290ZXJcIjtcbmltcG9ydCB7SGVhZGVyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9oZWFkZXJcIjtcbmltcG9ydCB7TGVmdFBhbmVsTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9sZWZ0LXBhbmVsXCI7XG5pbXBvcnQge1JpZ2h0UGFuZWxNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9wYWdlL3JpZ2h0LXBhbmVsXCI7XG5pbXBvcnQge1RvcE5hdk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvdG9wLW5hdlwiO1xuaW1wb3J0IHtCYXNpY01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljXCI7XG5pbXBvcnQge1Byb2dyZXNzTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzaWMvcHJvZ3Jlc3NcIjtcbmltcG9ydCB7UmljaFRleHRFZGl0b3JNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNpYy9yaWNoLXRleHQtZWRpdG9yXCI7XG5pbXBvcnQge1NlYXJjaE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljL3NlYXJjaFwiO1xuaW1wb3J0IHtUcmVlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzaWMvdHJlZVwiO1xuaW1wb3J0IHtDYWxlbmRhck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2NhbGVuZGFyXCI7XG5pbXBvcnQge0NoaXBzTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvY2hpcHNcIjtcbmltcG9ydCB7Q29sb3JQaWNrZXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jb2xvci1waWNrZXJcIjtcbmltcG9ydCB7Q3VycmVuY3lNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jdXJyZW5jeVwiO1xuaW1wb3J0IHtFcG9jaE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2Vwb2NoXCI7XG5pbXBvcnQge0ZpbGVVcGxvYWRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9maWxlLXVwbG9hZFwiO1xuaW1wb3J0IHtJbnB1dE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0XCI7XG5pbXBvcnQge1JhdGluZ01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L3JhdGluZ1wiO1xuaW1wb3J0IHtTbGlkZXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9zbGlkZXJcIjtcbmltcG9ydCB7Q2FyZE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RhdGEvY2FyZFwiO1xuaW1wb3J0IHtGb3JtTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9mb3JtXCI7XG5pbXBvcnQge0xpc3RNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL2xpc3RcIjtcbmltcG9ydCB7TGl2ZVRhYmxlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9saXZlLXRhYmxlXCI7XG5pbXBvcnQge1BhZ2luYXRpb25Nb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL3BhZ2luYXRpb25cIjtcbmltcG9ydCB7VGFibGVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL3RhYmxlXCI7XG5pbXBvcnQge0NoYXJ0TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY2hhcnRcIjtcbmltcG9ydCB7QWNjb3JkaW9uTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9hY2NvcmRpb25cIjtcbmltcG9ydCB7TGluZWFyTGF5b3V0TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9saW5lYXItbGF5b3V0XCI7XG5pbXBvcnQge0xheW91dEdyaWRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9jb250YWluZXJzL2xheW91dC1ncmlkXCI7XG5pbXBvcnQge1BhbmVsTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9wYW5lbFwiO1xuaW1wb3J0IHtUYWJzTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy90YWJzXCI7XG5pbXBvcnQge1RpbGVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9jb250YWluZXJzL3RpbGVcIjtcbmltcG9ydCB7V2l6YXJkTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy93aXphcmRcIjtcbmltcG9ydCB7QWxlcnREaWFsb2dNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZ1wiO1xuaW1wb3J0IHtJZnJhbWVEaWFsb2dNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kaWFsb2dzL2lmcmFtZS1kaWFsb2dcIjtcbmltcG9ydCB7TG9naW5EaWFsb2dNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kaWFsb2dzL2xvZ2luLWRpYWxvZ1wiO1xuaW1wb3J0IHtQYXJ0aWFsRGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9wYXJ0aWFsLWRpYWxvZ1wiO1xuaW1wb3J0IHtCcmVhZGNydW1iTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZGNydW1iXCI7XG5pbXBvcnQge01lbnVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL21lbnVcIjtcbmltcG9ydCB7TmF2YmFyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZiYXJcIjtcbmltcG9ydCB7UG9wb3Zlck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL25hdmlnYXRpb24vcG9wb3ZlclwiO1xuaW1wb3J0IHtDYXJvdXNlbE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2FkdmFuY2VkL2Nhcm91c2VsXCI7XG5pbXBvcnQge0xvZ2luTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYWR2YW5jZWQvbG9naW5cIjtcbmltcG9ydCB7TWFycXVlZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2FkdmFuY2VkL21hcnF1ZWVcIjtcbmltcG9ydCB7Q3VzdG9tTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYWR2YW5jZWQvY3VzdG9tXCI7XG5pbXBvcnQge0JzRGF0ZXBpY2tlck1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHtUaW1lcGlja2VyTW9kdWxlIGFzIG5neFRpbWVwaWNrZXJNb2R1bGV9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXJcIjtcbmltcG9ydCB7QnNEcm9wZG93bk1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcbmltcG9ydCB7UGFnaW5hdGlvbk1vZHVsZSBhcyBuZ3hQYWdpbmF0aW9uTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uXCI7XG5pbXBvcnQge1R5cGVhaGVhZE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdHlwZWFoZWFkXCI7XG5pbXBvcnQge1Byb2dyZXNzYmFyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xuaW1wb3J0IHtDYXJvdXNlbE1vZHVsZSBhcyBuZ3hDYXJvdXNlbE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvY2Fyb3VzZWxcIjtcbmltcG9ydCB7UG9wb3Zlck1vZHVsZSBhcyBuZ3hQb3BvdmVyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wb3BvdmVyXCI7XG5pbXBvcnQge05nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGV9IGZyb20gXCJuZy1jaXJjbGUtcHJvZ3Jlc3NcIjtcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdG9vbHRpcFwiO1xuXG5kZWNsYXJlIGNvbnN0IF9XTV9BUFBfUFJPUEVSVElFUztcblxuY29uc3QgaW5pdGlhbGl6ZVByb2plY3REZXRhaWxzID0gKCkgPT4ge1xuICAgIGxldCBjZG5VcmwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImRlcGxveVVybFwiXScpICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiZGVwbG95VXJsXCJdJykuZ2V0QXR0cmlidXRlKCdjb250ZW50Jyk7XG4gICAgLy9mb3IgcHJldmlld1xuICAgIGlmKCFjZG5VcmwpIHtcbiAgICAgICAgY2RuVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJjZG5VcmxcIl0nKSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImNkblVybFwiXScpLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICAgIH1cbiAgICBfV01fQVBQX1BST0pFQ1QuaWQgPSBoYXNDb3Jkb3ZhKCkgPyBfV01fQVBQX1BST1BFUlRJRVMuZGlzcGxheU5hbWUgOiBsb2NhdGlvbi5ocmVmLnNwbGl0KCcvJylbM107XG4gICAgLy8gSW50ZWdyYXRpb24gd2l0aCB0aGlyZCBwYXJ0eSBhcHBzIGxpa2UgaW4gU1NQQS9XZWJDb21wb25lbnRzLCB0aGlzIG1ldGEgdGFnIHdpdGggY2RuVXJsIHdpbGwgbm90IGJlIHRoZXJlIHRoZW4gZGVmYXVsdCBpdCB0byBuZy1idW5kbGUvXG4gICAgX1dNX0FQUF9QUk9KRUNULmNkblVybCA9IGNkblVybCB8fCAnbmctYnVuZGxlLyc7XG4gICAgX1dNX0FQUF9QUk9KRUNULm5nRGVzdCA9ICduZy1idW5kbGUvJztcbiAgICB0cnkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBjZG5Vcmw7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vZm9yIGFwcCBwcmV2aWV3IHRoZXJlIGlzIG5vIHdlYnBhY2suIERvbid0IGRvIGFueXRoaW5nLlxuICAgIH1cbn07XG5cbmVudW0gT1Mge1xuICAgIElPUyA9ICdpb3MnLFxuICAgIEFORFJPSUQgPSAnYW5kcm9pZCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdQcm92aWRlcihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBrZXksXG4gICAgICAgIHVzZVZhbHVlOiBkZWZhdWx0VmFsdWVcbiAgICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEluaXRpYWxpemVBcHAoSTE4blNlcnZpY2UsIEFwcEpTUmVzb2x2ZSkge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgICAgICBhd2FpdCBBcHBKU1Jlc29sdmUucmVzb2x2ZSgpO1xuICAgICAgICByZXR1cm4gSTE4blNlcnZpY2UubG9hZERlZmF1bHRMb2NhbGUoKTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QW5ndWxhckxvY2FsZShJMThuU2VydmljZSkge1xuICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgIHJldHVybiBJMThuU2VydmljZS5kZWR1Y2VBcHBMb2NhbGUoKTtcbn1cblxuY29uc3QgZGVmaW5pdGlvbnMgPSBbXG4gICAgQWNjZXNzcm9sZXNEaXJlY3RpdmUsXG4gICAgQXBwU3Bpbm5lckNvbXBvbmVudCxcbiAgICBDdXN0b21Ub2FzdGVyQ29tcG9uZW50LFxuICAgIFByZWZhYkRpcmVjdGl2ZSxcbiAgICBBcHBDb21wb25lbnQsXG4gICAgUHJlZmFiUHJldmlld0NvbXBvbmVudCxcbiAgICBFbXB0eVBhZ2VDb21wb25lbnRcbl07XG5cbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMgPSBbXG4gICAgQ29uZmlybURpYWxvZ01vZHVsZSxcbiAgICBEZXNpZ25EaWFsb2dNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gTkdYIEJvb3RzdHJhcFxuICAgIEJzRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBuZ3hUaW1lcGlja2VyTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUsXG4gICAgbmd4UGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUeXBlYWhlYWRNb2R1bGUsXG4gICAgUHJvZ3Jlc3NiYXJNb2R1bGUsXG4gICAgbmd4Q2Fyb3VzZWxNb2R1bGUsXG4gICAgbmd4UG9wb3Zlck1vZHVsZSxcbiAgICBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG5cbiAgICAvLyBCYXNpYyB3aWRnZXRzXG4gICAgQmFzaWNNb2R1bGUsXG4gICAgUHJvZ3Jlc3NNb2R1bGUsXG4gICAgUmljaFRleHRFZGl0b3JNb2R1bGUsXG4gICAgU2VhcmNoTW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG5cbiAgICAvLyBJbnB1dFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIENoaXBzTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIEN1cnJlbmN5TW9kdWxlLFxuICAgIEVwb2NoTW9kdWxlLFxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmF0aW5nTW9kdWxlLFxuICAgIFNsaWRlck1vZHVsZSxcblxuICAgIC8vIERhdGFcbiAgICBDYXJkTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBMaXZlVGFibGVNb2R1bGUsXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcblxuICAgIC8vIGNoYXJ0XG4gICAgQ2hhcnRNb2R1bGUsXG5cbiAgICAvLyBjb250YWluZXIgbW9kdWxlc1xuICAgIEFjY29yZGlvbk1vZHVsZSxcbiAgICBMaW5lYXJMYXlvdXRNb2R1bGUsXG4gICAgTGF5b3V0R3JpZE1vZHVsZSxcbiAgICBQYW5lbE1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIFRpbGVNb2R1bGUsXG4gICAgV2l6YXJkTW9kdWxlLFxuXG4gICAgLy8gZGlhbG9nc1xuICAgIEFsZXJ0RGlhbG9nTW9kdWxlLFxuICAgIElmcmFtZURpYWxvZ01vZHVsZSxcbiAgICBMb2dpbkRpYWxvZ01vZHVsZSxcbiAgICBQYXJ0aWFsRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gbmF2aWdhdGlvblxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgTWVudU1vZHVsZSxcbiAgICBOYXZiYXJNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcblxuICAgIC8vIEFkdmFuY2VkXG4gICAgQ2Fyb3VzZWxNb2R1bGUsXG4gICAgTG9naW5Nb2R1bGUsXG4gICAgTWFycXVlZU1vZHVsZSxcbiAgICBDdXN0b21Nb2R1bGUsXG5cbiAgICBQYWdlTW9kdWxlLFxuICAgIEZvb3Rlck1vZHVsZSxcbiAgICBIZWFkZXJNb2R1bGUsXG4gICAgTGVmdFBhbmVsTW9kdWxlLFxuICAgIFJpZ2h0UGFuZWxNb2R1bGUsXG4gICAgVG9wTmF2TW9kdWxlLFxuICAgIFByZWZhYk1vZHVsZVxuXTtcblxuLy8gc2V0dGluZyBwYXJzZUV4cHIgYXMgZXhwckV2YWx1YXRvciBmb3Igc3dpcGVBbmltYXRpb25cbigkLmZuIGFzIGFueSkuc3dpcGVBbmltYXRpb24uZXhwcmVzc2lvbkV2YWx1YXRvciA9ICRwYXJzZUV4cHI7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbIC4uLmRlZmluaXRpb25zIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cbiAgICAgICAgVG9hc3RyTW9kdWxlLFxuICAgICAgICBXbUNvbXBvbmVudHNNb2R1bGUsXG4gICAgICAgIE1vYmlsZVJ1bnRpbWVNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGUsXG4gICAgICAgIFNlY3VyaXR5TW9kdWxlLFxuICAgICAgICBPQXV0aE1vZHVsZSxcbiAgICAgICAgVmFyaWFibGVzTW9kdWxlLFxuICAgICAgICBIdHRwU2VydmljZU1vZHVsZSxcbiAgICAgICAgLi4uUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXG4gICAgICAgIC4uLmRlZmluaXRpb25zLFxuXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuXG4gICAgICAgIFRvYXN0ck1vZHVsZSxcbiAgICAgICAgV21Db21wb25lbnRzTW9kdWxlLFxuICAgICAgICBNb2JpbGVSdW50aW1lTW9kdWxlLFxuICAgICAgICBDb3JlTW9kdWxlLFxuICAgICAgICBTZWN1cml0eU1vZHVsZSxcbiAgICAgICAgT0F1dGhNb2R1bGUsXG4gICAgICAgIFZhcmlhYmxlc01vZHVsZSxcbiAgICAgICAgSHR0cFNlcnZpY2VNb2R1bGUsXG4gICAgICAgIC4uLlJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UU1xuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiDJtVNoYXJlZFN0eWxlc0hvc3QsIHVzZUNsYXNzOiBXTURvbVNoYXJlZFN0eWxlc0hvc3R9LFxuICAgICAgICB7cHJvdmlkZTogybVEb21SZW5kZXJlckZhY3RvcnkyLCB1c2VDbGFzczogV01Eb21SZW5kZXJlckZhY3RvcnkyfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUnVudGltZUJhc2VNb2R1bGUge1xuXG4gICAgLy8gdGhpcyBwb2x5ZmlsbCBpcyB0byBhZGQgc3VwcG9ydCBmb3IgQ3VzdG9tRXZlbnQgaW4gSUUxMVxuICAgIHN0YXRpYyBhZGRDdXN0b21FdmVudFBvbHlmaWxsKCkge1xuICAgICAgICAgICAgaWYgKCB0eXBlb2Ygd2luZG93WydDdXN0b21FdmVudCddID09PSAnZnVuY3Rpb24nICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFkZGluZyB0eXBlIGFzIGFueSB0byBhdm9pZCBlcnJvciBUUzIzMjJcbiAgICAgICAgICAgIGNvbnN0IEN1c3RvbUV2ZW50OiBhbnkgPSAoZXZlbnQsIHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7IGJ1YmJsZXM6IGZhbHNlLCBjYW5jZWxhYmxlOiBmYWxzZSwgZGV0YWlsOiBudWxsIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoICdDdXN0b21FdmVudCcgKTtcbiAgICAgICAgICAgICAgICBldnQuaW5pdEN1c3RvbUV2ZW50KCBldmVudCwgcGFyYW1zLmJ1YmJsZXMsIHBhcmFtcy5jYW5jZWxhYmxlLCBwYXJhbXMuZGV0YWlsICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV2dDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIEN1c3RvbUV2ZW50LnByb3RvdHlwZSA9IHdpbmRvd1snRXZlbnQnXS5wcm90b3R5cGU7XG4gICAgICAgICAgICAvLyAjIyMgQU5HVUxBUjlUT0RPICMjI1xuICAgICAgICAgICAgd2luZG93WydDdXN0b21FdmVudCddID0gQ3VzdG9tRXZlbnQ7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxSdW50aW1lQmFzZU1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IFJ1bnRpbWVCYXNlTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFwcCwgdXNlQ2xhc3M6IEFwcFJlZn0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFic3RyYWN0VG9hc3RlclNlcnZpY2UsIHVzZUNsYXNzOiBUb2FzdGVyU2VydmljZUltcGx9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlLCB1c2VDbGFzczogSTE4blNlcnZpY2VJbXBsfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQWJzdHJhY3RTcGlubmVyU2VydmljZSwgdXNlQ2xhc3M6IFNwaW5uZXJTZXJ2aWNlSW1wbH0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOYXZpZ2F0aW9uU2VydmljZUltcGx9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBBcHBEZWZhdWx0cywgdXNlQ2xhc3M6IEFwcERlZmF1bHRzU2VydmljZX0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlciwgdXNlQ2xhc3M6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlclNlcnZpY2V9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiBJbml0aWFsaXplQXBwLFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZSwgQXBwSlNSZXNvbHZlXSxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogTE9DQUxFX0lELFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiBzZXRBbmd1bGFyTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZV1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBIdHRwQ2FsbEludGVyY2VwdG9yLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgUGlwZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgRGVjaW1hbFBpcGUsXG4gICAgICAgICAgICAgICAgRGF0ZVBpcGUsXG4gICAgICAgICAgICAgICAgQXBwTWFuYWdlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgUHJlZmFiTWFuYWdlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQXV0aEd1YXJkLFxuICAgICAgICAgICAgICAgIFJvbGVHdWFyZCxcbiAgICAgICAgICAgICAgICBQYWdlTm90Rm91bmRHdWFyZCxcbiAgICAgICAgICAgICAgICBDYW5EZWFjdGl2YXRlUGFnZUd1YXJkLFxuICAgICAgICAgICAgICAgIEFwcEpTUmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBBcHBFeHRlbnNpb25KU1Jlc29sdmUsXG4gICAgICAgICAgICAgICAgSTE4blJlc29sdmUsXG4gICAgICAgICAgICAgICAgZ2V0U2V0dGluZ1Byb3ZpZGVyKE1BWF9DQUNIRV9TSVpFLCAxMCksXG4gICAgICAgICAgICAgICAgZ2V0U2V0dGluZ1Byb3ZpZGVyKE1BWF9DQUNIRV9BR0UsIDMwICogNjApXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IobW9iaWxlUnVudGltZU1vZHVsZTogTW9iaWxlUnVudGltZU1vZHVsZSxcbiAgICAgICAgICAgICAgICBhcHA6IEFwcCxcbiAgICAgICAgICAgICAgICB2aWV3cG9ydDogVmlld3BvcnQpIHtcbiAgICAgICAgUnVudGltZUJhc2VNb2R1bGUuYWRkQ3VzdG9tRXZlbnRQb2x5ZmlsbCgpO1xuXG4gICAgICAgIHRoaXMuZ2V0RGV2aWNlRGV0YWlscygpLnRoZW4oZGV0YWlscyA9PiB7XG4gICAgICAgICAgICBhcHAuc2VsZWN0ZWRWaWV3UG9ydCA9IHtcbiAgICAgICAgICAgICAgICBvczogZGV0YWlscy5vcyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogZGV0YWlscy5zZWxlY3RlZERldmljZUNhdGVnb3J5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmlld3BvcnQudXBkYXRlKGRldGFpbHMpO1xuICAgICAgICAgICAgYXBwLm5vdGlmeSgnb24tdmlld3BvcnQtZGV0YWlscycsIGRldGFpbHMub3MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgZ2V0RGV2aWNlRGV0YWlscygpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBtc2dDb250ZW50ID0ge2tleTogJ29uLWxvYWQnfTtcbiAgICAgICAgICAgIC8vIE5vdGlmeSBwcmV2aWV3IHdpbmRvdyB0aGF0IGFwcGxpY2F0aW9uIGlzIHJlYWR5LiBPdGhlcndpc2UsIGlkZW50aWZ5IHRoZSBPUy5cbiAgICAgICAgICAgIGlmICh3aW5kb3cudG9wICE9PSB3aW5kb3cpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cudG9wLnBvc3RNZXNzYWdlKG1zZ0NvbnRlbnQsICcqJyk7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgcHJldmlldyBwYWdlXG4gICAgICAgICAgICAgICAgd2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChtc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1zZy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QoZGF0YSkgJiYgZGF0YS5rZXkgPT09ICdzd2l0Y2gtZGV2aWNlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhLmRldmljZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0lwaG9uZSgpIHx8IGlzSXBvZCgpIHx8IGlzSXBhZCgpKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7J29zJzogT1MuSU9TfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoeydvcyc6IE9TLkFORFJPSUR9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgV01fTU9EVUxFU19GT1JfUk9PVCA9IFtcbiAgICBXbUNvbXBvbmVudHNNb2R1bGUuZm9yUm9vdCgpLFxuICAgIE1vYmlsZVJ1bnRpbWVNb2R1bGUuZm9yUm9vdCgpLFxuICAgIENvcmVNb2R1bGUuZm9yUm9vdCgpLFxuICAgIFNlY3VyaXR5TW9kdWxlLmZvclJvb3QoKSxcbiAgICBPQXV0aE1vZHVsZS5mb3JSb290KCksXG4gICAgVmFyaWFibGVzTW9kdWxlLmZvclJvb3QoKSxcbiAgICBIdHRwU2VydmljZU1vZHVsZS5mb3JSb290KCksXG4gICAgUnVudGltZUJhc2VNb2R1bGUuZm9yUm9vdCgpXG5dO1xuIl19
644
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1iYXNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvcnVudGltZS1iYXNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFFBQVEsRUFDUixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsVUFBVSxFQUNiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FB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QjtRQUVuQixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLFVBQVU7UUFDVixZQUFZO1FBQ1osYUFBYTtRQUViLFdBQVc7UUFDWCxjQUFjO1FBQ2QsV0FBVztRQUNYLGFBQWE7UUFFYixVQUFVO1FBQ1YsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixZQUFZO0FBeUpoQixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUMvQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7SUFDNUIsbUJBQW1CLENBQUMsT0FBTyxFQUFFO0lBQzdCLFVBQVUsQ0FBQyxPQUFPLEVBQUU7SUFDcEIsY0FBYyxDQUFDLE9BQU8sRUFBRTtJQUN4QixXQUFXLENBQUMsT0FBTyxFQUFFO0lBQ3JCLGVBQWUsQ0FBQyxPQUFPLEVBQUU7SUFDekIsaUJBQWlCLENBQUMsT0FBTyxFQUFFO0lBQzNCLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtDQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBUFBfSU5JVElBTElaRVIsIExPQ0FMRV9JRCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUsIERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgybVTaGFyZWRTdHlsZXNIb3N0IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge8m1RG9tUmVuZGVyZXJGYWN0b3J5Mn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUb2FzdHJNb2R1bGUgfSBmcm9tICduZ3gtdG9hc3RyJztcblxuaW1wb3J0IHtcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgJHBhcnNlRXhwcixcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICBBYnN0cmFjdFRvYXN0ZXJTZXJ2aWNlLFxuICAgIEFwcCxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBDb3JlTW9kdWxlLFxuICAgIER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICBpc09iamVjdCxcbiAgICBpc0lwaG9uZSxcbiAgICBpc0lwb2QsXG4gICAgaXNJcGFkLFxuICAgIFZpZXdwb3J0LFxuICAgIGhhc0NvcmRvdmFcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgV21Db21wb25lbnRzTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzL2NvbmZpcm0tZGlhbG9nJztcbmltcG9ydCB7IERlc2lnbkRpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvZGVzaWduLWRpYWxvZyc7XG5pbXBvcnQgeyBQcmVmYWJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wcmVmYWInO1xuaW1wb3J0IHsgTW9iaWxlUnVudGltZU1vZHVsZSB9IGZyb20gJ0B3bS9tb2JpbGUvcnVudGltZSc7XG5pbXBvcnQgeyBTZWN1cml0eU1vZHVsZSB9IGZyb20gJ0B3bS9zZWN1cml0eSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZU1vZHVsZSB9IGZyb20gJ0B3bS9odHRwJztcbmltcG9ydCB7IFZhcmlhYmxlc01vZHVsZSB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHsgT0F1dGhNb2R1bGUgfSBmcm9tICdAd20vb0F1dGgnO1xuXG5pbXBvcnQgeyBBY2Nlc3Nyb2xlc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9hY2Nlc3Nyb2xlcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQXBwU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hcHAtc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tdG9hc3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VtcHR5LWNvbXBvbmVudC9lbXB0eS1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcmVmYWJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcHJlZmFiLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHBSZWYgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFNwaW5uZXJTZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBpcGVTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvcGlwZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBcHBEZWZhdWx0c1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC1kZWZhdWx0cy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZhYk1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcmVmYWItbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL2F1dGguZ3VhcmQnO1xuaW1wb3J0IHsgUm9sZUd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvcm9sZS5ndWFyZCc7XG5pbXBvcnQgeyBQYWdlTm90Rm91bmRHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL3BhZ2Utbm90LWZvdW5kLmd1YXJkJztcbmltcG9ydCB7IEFwcEpTUmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZXMvYXBwLWpzLnJlc29sdmUnO1xuaW1wb3J0IHsgQXBwRXh0ZW5zaW9uSlNSZXNvbHZlIH0gZnJvbSAnLi9yZXNvbHZlcy9hcHAtZXh0ZW5zaW9uLnJlc29sdmUnO1xuaW1wb3J0IHsgSTE4blJlc29sdmUgfSBmcm9tICcuL3Jlc29sdmVzL2kxOG4ucmVzb2x2ZSc7XG5pbXBvcnQgeyBBcHBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50JztcbmltcG9ydCB7IEh0dHBDYWxsSW50ZXJjZXB0b3IgfSBmcm9tICcuL3NlcnZpY2VzL2h0dHAtaW50ZXJjZXB0b3Iuc2VydmljZXMnO1xuaW1wb3J0IHsgUHJlZmFiUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wcmVmYWItcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQtcmVmLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZVBhZ2VHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL2Nhbi1kZWFjdGl2YXRlLXBhZ2UuZ3VhcmQnO1xuaW1wb3J0IHsgTUFYX0NBQ0hFX0FHRSwgTUFYX0NBQ0hFX1NJWkUgfSBmcm9tICcuL3V0aWwvd20tcm91dGUtcmV1c2Utc3RyYXRlZ3knO1xuXG4vL2FuZ3VsYXIgb3ZlcnJpZGVzXG5pbXBvcnQgeyBXTURvbVNoYXJlZFN0eWxlc0hvc3QgfSBmcm9tIFwiLi9vdmVycmlkZXMvd21fc2hhcmVkX3N0eWxlc19ob3N0XCI7XG5pbXBvcnQgeyBXTURvbVJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tIFwiLi9vdmVycmlkZXMvd21fZG9tX3JlbmRlcmVyXCI7XG5pbXBvcnQge1BhZ2VNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9wYWdlXCI7XG5pbXBvcnQge0Zvb3Rlck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvZm9vdGVyXCI7XG5pbXBvcnQge0hlYWRlck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvaGVhZGVyXCI7XG5pbXBvcnQge0xlZnRQYW5lbE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvbGVmdC1wYW5lbFwiO1xuaW1wb3J0IHtSaWdodFBhbmVsTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9yaWdodC1wYW5lbFwiO1xuaW1wb3J0IHtUb3BOYXZNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9wYWdlL3RvcC1uYXZcIjtcbmltcG9ydCB7QmFzaWNNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNpY1wiO1xuaW1wb3J0IHtQcm9ncmVzc01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljL3Byb2dyZXNzXCI7XG5pbXBvcnQge1JpY2hUZXh0RWRpdG9yTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzaWMvcmljaC10ZXh0LWVkaXRvclwiO1xuaW1wb3J0IHtTZWFyY2hNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNpYy9zZWFyY2hcIjtcbmltcG9ydCB7VHJlZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljL3RyZWVcIjtcbmltcG9ydCB7Q2FsZW5kYXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jYWxlbmRhclwiO1xuaW1wb3J0IHtDaGlwc01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2NoaXBzXCI7XG5pbXBvcnQge0NvbG9yUGlja2VyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvY29sb3ItcGlja2VyXCI7XG5pbXBvcnQge0N1cnJlbmN5TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvY3VycmVuY3lcIjtcbmltcG9ydCB7RXBvY2hNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9lcG9jaFwiO1xuaW1wb3J0IHtGaWxlVXBsb2FkTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvZmlsZS11cGxvYWRcIjtcbmltcG9ydCB7SW5wdXRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dFwiO1xuaW1wb3J0IHtSYXRpbmdNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9yYXRpbmdcIjtcbmltcG9ydCB7U2xpZGVyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvc2xpZGVyXCI7XG5pbXBvcnQge0NhcmRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL2NhcmRcIjtcbmltcG9ydCB7Rm9ybU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RhdGEvZm9ybVwiO1xuaW1wb3J0IHtMaXN0TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9saXN0XCI7XG5pbXBvcnQge0xpdmVUYWJsZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RhdGEvbGl2ZS10YWJsZVwiO1xuaW1wb3J0IHtQYWdpbmF0aW9uTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9wYWdpbmF0aW9uXCI7XG5pbXBvcnQge1RhYmxlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS90YWJsZVwiO1xuaW1wb3J0IHtDaGFydE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NoYXJ0XCI7XG5pbXBvcnQge0FjY29yZGlvbk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvYWNjb3JkaW9uXCI7XG5pbXBvcnQge0xpbmVhckxheW91dE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGluZWFyLWxheW91dFwiO1xuaW1wb3J0IHtMYXlvdXRHcmlkTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9sYXlvdXQtZ3JpZFwiO1xuaW1wb3J0IHtQYW5lbE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvcGFuZWxcIjtcbmltcG9ydCB7VGFic01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvdGFic1wiO1xuaW1wb3J0IHtUaWxlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy90aWxlXCI7XG5pbXBvcnQge1dpemFyZE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvd2l6YXJkXCI7XG5pbXBvcnQge0FsZXJ0RGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9hbGVydC1kaWFsb2dcIjtcbmltcG9ydCB7SWZyYW1lRGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9pZnJhbWUtZGlhbG9nXCI7XG5pbXBvcnQge0xvZ2luRGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9sb2dpbi1kaWFsb2dcIjtcbmltcG9ydCB7UGFydGlhbERpYWxvZ01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RpYWxvZ3MvcGFydGlhbC1kaWFsb2dcIjtcbmltcG9ydCB7QnJlYWRjcnVtYk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL25hdmlnYXRpb24vYnJlYWRjcnVtYlwiO1xuaW1wb3J0IHtNZW51TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9tZW51XCI7XG5pbXBvcnQge05hdmJhck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2YmFyXCI7XG5pbXBvcnQge1BvcG92ZXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL3BvcG92ZXJcIjtcbmltcG9ydCB7Q2Fyb3VzZWxNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9hZHZhbmNlZC9jYXJvdXNlbFwiO1xuaW1wb3J0IHtMb2dpbk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2FkdmFuY2VkL2xvZ2luXCI7XG5pbXBvcnQge01hcnF1ZWVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9hZHZhbmNlZC9tYXJxdWVlXCI7XG5pbXBvcnQge0JzRGF0ZXBpY2tlck1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHtUaW1lcGlja2VyTW9kdWxlIGFzIG5neFRpbWVwaWNrZXJNb2R1bGV9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXJcIjtcbmltcG9ydCB7QnNEcm9wZG93bk1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcbmltcG9ydCB7UGFnaW5hdGlvbk1vZHVsZSBhcyBuZ3hQYWdpbmF0aW9uTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uXCI7XG5pbXBvcnQge1R5cGVhaGVhZE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdHlwZWFoZWFkXCI7XG5pbXBvcnQge1Byb2dyZXNzYmFyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xuaW1wb3J0IHtDYXJvdXNlbE1vZHVsZSBhcyBuZ3hDYXJvdXNlbE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvY2Fyb3VzZWxcIjtcbmltcG9ydCB7UG9wb3Zlck1vZHVsZSBhcyBuZ3hQb3BvdmVyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wb3BvdmVyXCI7XG5pbXBvcnQge05nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGV9IGZyb20gXCJuZy1jaXJjbGUtcHJvZ3Jlc3NcIjtcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdG9vbHRpcFwiO1xuXG5kZWNsYXJlIGNvbnN0IF9XTV9BUFBfUFJPUEVSVElFUztcblxuY29uc3QgaW5pdGlhbGl6ZVByb2plY3REZXRhaWxzID0gKCkgPT4ge1xuICAgIGxldCBjZG5VcmwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImRlcGxveVVybFwiXScpICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiZGVwbG95VXJsXCJdJykuZ2V0QXR0cmlidXRlKCdjb250ZW50Jyk7XG4gICAgLy9mb3IgcHJldmlld1xuICAgIGlmKCFjZG5VcmwpIHtcbiAgICAgICAgY2RuVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJjZG5VcmxcIl0nKSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImNkblVybFwiXScpLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICAgIH1cbiAgICBfV01fQVBQX1BST0pFQ1QuaWQgPSBoYXNDb3Jkb3ZhKCkgPyBfV01fQVBQX1BST1BFUlRJRVMuZGlzcGxheU5hbWUgOiBsb2NhdGlvbi5ocmVmLnNwbGl0KCcvJylbM107XG4gICAgLy8gSW50ZWdyYXRpb24gd2l0aCB0aGlyZCBwYXJ0eSBhcHBzIGxpa2UgaW4gU1NQQS9XZWJDb21wb25lbnRzLCB0aGlzIG1ldGEgdGFnIHdpdGggY2RuVXJsIHdpbGwgbm90IGJlIHRoZXJlIHRoZW4gZGVmYXVsdCBpdCB0byBuZy1idW5kbGUvXG4gICAgX1dNX0FQUF9QUk9KRUNULmNkblVybCA9IGNkblVybCB8fCAnbmctYnVuZGxlLyc7XG4gICAgX1dNX0FQUF9QUk9KRUNULm5nRGVzdCA9ICduZy1idW5kbGUvJztcbiAgICB0cnkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBjZG5Vcmw7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vZm9yIGFwcCBwcmV2aWV3IHRoZXJlIGlzIG5vIHdlYnBhY2suIERvbid0IGRvIGFueXRoaW5nLlxuICAgIH1cbn07XG5cbmVudW0gT1Mge1xuICAgIElPUyA9ICdpb3MnLFxuICAgIEFORFJPSUQgPSAnYW5kcm9pZCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdQcm92aWRlcihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBrZXksXG4gICAgICAgIHVzZVZhbHVlOiBkZWZhdWx0VmFsdWVcbiAgICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEluaXRpYWxpemVBcHAoSTE4blNlcnZpY2UsIEFwcEpTUmVzb2x2ZSkge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgICAgICBhd2FpdCBBcHBKU1Jlc29sdmUucmVzb2x2ZSgpO1xuICAgICAgICByZXR1cm4gSTE4blNlcnZpY2UubG9hZERlZmF1bHRMb2NhbGUoKTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QW5ndWxhckxvY2FsZShJMThuU2VydmljZSkge1xuICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgIHJldHVybiBJMThuU2VydmljZS5kZWR1Y2VBcHBMb2NhbGUoKTtcbn1cblxuY29uc3QgZGVmaW5pdGlvbnMgPSBbXG4gICAgQWNjZXNzcm9sZXNEaXJlY3RpdmUsXG4gICAgQXBwU3Bpbm5lckNvbXBvbmVudCxcbiAgICBDdXN0b21Ub2FzdGVyQ29tcG9uZW50LFxuICAgIFByZWZhYkRpcmVjdGl2ZSxcbiAgICBBcHBDb21wb25lbnQsXG4gICAgUHJlZmFiUHJldmlld0NvbXBvbmVudCxcbiAgICBFbXB0eVBhZ2VDb21wb25lbnRcbl07XG5cbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMgPSBbXG4gICAgQ29uZmlybURpYWxvZ01vZHVsZSxcbiAgICBEZXNpZ25EaWFsb2dNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gTkdYIEJvb3RzdHJhcFxuICAgIEJzRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBuZ3hUaW1lcGlja2VyTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUsXG4gICAgbmd4UGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUeXBlYWhlYWRNb2R1bGUsXG4gICAgUHJvZ3Jlc3NiYXJNb2R1bGUsXG4gICAgbmd4Q2Fyb3VzZWxNb2R1bGUsXG4gICAgbmd4UG9wb3Zlck1vZHVsZSxcbiAgICBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG5cbiAgICAvLyBCYXNpYyB3aWRnZXRzXG4gICAgQmFzaWNNb2R1bGUsXG4gICAgUHJvZ3Jlc3NNb2R1bGUsXG4gICAgUmljaFRleHRFZGl0b3JNb2R1bGUsXG4gICAgU2VhcmNoTW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG5cbiAgICAvLyBJbnB1dFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIENoaXBzTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIEN1cnJlbmN5TW9kdWxlLFxuICAgIEVwb2NoTW9kdWxlLFxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmF0aW5nTW9kdWxlLFxuICAgIFNsaWRlck1vZHVsZSxcblxuICAgIC8vIERhdGFcbiAgICBDYXJkTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBMaXZlVGFibGVNb2R1bGUsXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcblxuICAgIC8vIGNoYXJ0XG4gICAgQ2hhcnRNb2R1bGUsXG5cbiAgICAvLyBjb250YWluZXIgbW9kdWxlc1xuICAgIEFjY29yZGlvbk1vZHVsZSxcbiAgICBMaW5lYXJMYXlvdXRNb2R1bGUsXG4gICAgTGF5b3V0R3JpZE1vZHVsZSxcbiAgICBQYW5lbE1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIFRpbGVNb2R1bGUsXG4gICAgV2l6YXJkTW9kdWxlLFxuXG4gICAgLy8gZGlhbG9nc1xuICAgIEFsZXJ0RGlhbG9nTW9kdWxlLFxuICAgIElmcmFtZURpYWxvZ01vZHVsZSxcbiAgICBMb2dpbkRpYWxvZ01vZHVsZSxcbiAgICBQYXJ0aWFsRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gbmF2aWdhdGlvblxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgTWVudU1vZHVsZSxcbiAgICBOYXZiYXJNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcblxuICAgIC8vIEFkdmFuY2VkXG4gICAgQ2Fyb3VzZWxNb2R1bGUsXG4gICAgTG9naW5Nb2R1bGUsXG4gICAgTWFycXVlZU1vZHVsZSxcblxuICAgIFBhZ2VNb2R1bGUsXG4gICAgRm9vdGVyTW9kdWxlLFxuICAgIEhlYWRlck1vZHVsZSxcbiAgICBMZWZ0UGFuZWxNb2R1bGUsXG4gICAgUmlnaHRQYW5lbE1vZHVsZSxcbiAgICBUb3BOYXZNb2R1bGUsXG4gICAgUHJlZmFiTW9kdWxlXG5dO1xuXG4vLyBzZXR0aW5nIHBhcnNlRXhwciBhcyBleHByRXZhbHVhdG9yIGZvciBzd2lwZUFuaW1hdGlvblxuKCQuZm4gYXMgYW55KS5zd2lwZUFuaW1hdGlvbi5leHByZXNzaW9uRXZhbHVhdG9yID0gJHBhcnNlRXhwcjtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsgLi4uZGVmaW5pdGlvbnMgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcblxuICAgICAgICBUb2FzdHJNb2R1bGUsXG4gICAgICAgIFdtQ29tcG9uZW50c01vZHVsZSxcbiAgICAgICAgTW9iaWxlUnVudGltZU1vZHVsZSxcbiAgICAgICAgQ29yZU1vZHVsZSxcbiAgICAgICAgU2VjdXJpdHlNb2R1bGUsXG4gICAgICAgIE9BdXRoTW9kdWxlLFxuICAgICAgICBWYXJpYWJsZXNNb2R1bGUsXG4gICAgICAgIEh0dHBTZXJ2aWNlTW9kdWxlLFxuICAgICAgICAuLi5SRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFNcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cbiAgICAgICAgLi4uZGVmaW5pdGlvbnMsXG5cbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIEh0dHBDbGllbnRNb2R1bGUsXG5cbiAgICAgICAgVG9hc3RyTW9kdWxlLFxuICAgICAgICBXbUNvbXBvbmVudHNNb2R1bGUsXG4gICAgICAgIE1vYmlsZVJ1bnRpbWVNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGUsXG4gICAgICAgIFNlY3VyaXR5TW9kdWxlLFxuICAgICAgICBPQXV0aE1vZHVsZSxcbiAgICAgICAgVmFyaWFibGVzTW9kdWxlLFxuICAgICAgICBIdHRwU2VydmljZU1vZHVsZSxcbiAgICAgICAgLi4uUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IMm1U2hhcmVkU3R5bGVzSG9zdCwgdXNlQ2xhc3M6IFdNRG9tU2hhcmVkU3R5bGVzSG9zdH0sXG4gICAgICAgIHtwcm92aWRlOiDJtURvbVJlbmRlcmVyRmFjdG9yeTIsIHVzZUNsYXNzOiBXTURvbVJlbmRlcmVyRmFjdG9yeTJ9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBSdW50aW1lQmFzZU1vZHVsZSB7XG5cbiAgICAvLyB0aGlzIHBvbHlmaWxsIGlzIHRvIGFkZCBzdXBwb3J0IGZvciBDdXN0b21FdmVudCBpbiBJRTExXG4gICAgc3RhdGljIGFkZEN1c3RvbUV2ZW50UG9seWZpbGwoKSB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiB3aW5kb3dbJ0N1c3RvbUV2ZW50J10gPT09ICdmdW5jdGlvbicgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQWRkaW5nIHR5cGUgYXMgYW55IHRvIGF2b2lkIGVycm9yIFRTMjMyMlxuICAgICAgICAgICAgY29uc3QgQ3VzdG9tRXZlbnQ6IGFueSA9IChldmVudCwgcGFyYW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zIHx8IHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IGZhbHNlLCBkZXRhaWw6IG51bGwgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCggJ0N1c3RvbUV2ZW50JyApO1xuICAgICAgICAgICAgICAgIGV2dC5pbml0Q3VzdG9tRXZlbnQoIGV2ZW50LCBwYXJhbXMuYnViYmxlcywgcGFyYW1zLmNhbmNlbGFibGUsIHBhcmFtcy5kZXRhaWwgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXZ0O1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgQ3VzdG9tRXZlbnQucHJvdG90eXBlID0gd2luZG93WydFdmVudCddLnByb3RvdHlwZTtcbiAgICAgICAgICAgIC8vICMjIyBBTkdVTEFSOVRPRE8gIyMjXG4gICAgICAgICAgICB3aW5kb3dbJ0N1c3RvbUV2ZW50J10gPSBDdXN0b21FdmVudDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJ1bnRpbWVCYXNlTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogUnVudGltZUJhc2VNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQXBwLCB1c2VDbGFzczogQXBwUmVmfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQWJzdHJhY3RUb2FzdGVyU2VydmljZSwgdXNlQ2xhc3M6IFRvYXN0ZXJTZXJ2aWNlSW1wbH0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFic3RyYWN0STE4blNlcnZpY2UsIHVzZUNsYXNzOiBJMThuU2VydmljZUltcGx9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLCB1c2VDbGFzczogU3Bpbm5lclNlcnZpY2VJbXBsfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSwgdXNlQ2xhc3M6IE5hdmlnYXRpb25TZXJ2aWNlSW1wbH0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFwcERlZmF1bHRzLCB1c2VDbGFzczogQXBwRGVmYXVsdHNTZXJ2aWNlfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLCB1c2VDbGFzczogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZX0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6IEluaXRpYWxpemVBcHAsXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtBYnN0cmFjdEkxOG5TZXJ2aWNlLCBBcHBKU1Jlc29sdmVdLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBMT0NBTEVfSUQsXG4gICAgICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6IHNldEFuZ3VsYXJMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtBYnN0cmFjdEkxOG5TZXJ2aWNlXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgICAgICAgICAgICAgICAgdXNlQ2xhc3M6IEh0dHBDYWxsSW50ZXJjZXB0b3IsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBQaXBlU2VydmljZSxcbiAgICAgICAgICAgICAgICBEZWNpbWFsUGlwZSxcbiAgICAgICAgICAgICAgICBEYXRlUGlwZSxcbiAgICAgICAgICAgICAgICBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBQcmVmYWJNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBBdXRoR3VhcmQsXG4gICAgICAgICAgICAgICAgUm9sZUd1YXJkLFxuICAgICAgICAgICAgICAgIFBhZ2VOb3RGb3VuZEd1YXJkLFxuICAgICAgICAgICAgICAgIENhbkRlYWN0aXZhdGVQYWdlR3VhcmQsXG4gICAgICAgICAgICAgICAgQXBwSlNSZXNvbHZlLFxuICAgICAgICAgICAgICAgIEFwcEV4dGVuc2lvbkpTUmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBJMThuUmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBnZXRTZXR0aW5nUHJvdmlkZXIoTUFYX0NBQ0hFX1NJWkUsIDEwKSxcbiAgICAgICAgICAgICAgICBnZXRTZXR0aW5nUHJvdmlkZXIoTUFYX0NBQ0hFX0FHRSwgMzAgKiA2MClcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2JpbGVSdW50aW1lTW9kdWxlOiBNb2JpbGVSdW50aW1lTW9kdWxlLFxuICAgICAgICAgICAgICAgIGFwcDogQXBwLFxuICAgICAgICAgICAgICAgIHZpZXdwb3J0OiBWaWV3cG9ydCkge1xuICAgICAgICBSdW50aW1lQmFzZU1vZHVsZS5hZGRDdXN0b21FdmVudFBvbHlmaWxsKCk7XG5cbiAgICAgICAgdGhpcy5nZXREZXZpY2VEZXRhaWxzKCkudGhlbihkZXRhaWxzID0+IHtcbiAgICAgICAgICAgIGFwcC5zZWxlY3RlZFZpZXdQb3J0ID0ge1xuICAgICAgICAgICAgICAgIG9zOiBkZXRhaWxzLm9zLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBkZXRhaWxzLnNlbGVjdGVkRGV2aWNlQ2F0ZWdvcnlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2aWV3cG9ydC51cGRhdGUoZGV0YWlscyk7XG4gICAgICAgICAgICBhcHAubm90aWZ5KCdvbi12aWV3cG9ydC1kZXRhaWxzJywgZGV0YWlscy5vcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBnZXREZXZpY2VEZXRhaWxzKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZ0NvbnRlbnQgPSB7a2V5OiAnb24tbG9hZCd9O1xuICAgICAgICAgICAgLy8gTm90aWZ5IHByZXZpZXcgd2luZG93IHRoYXQgYXBwbGljYXRpb24gaXMgcmVhZHkuIE90aGVyd2lzZSwgaWRlbnRpZnkgdGhlIE9TLlxuICAgICAgICAgICAgaWYgKHdpbmRvdy50b3AgIT09IHdpbmRvdykge1xuICAgICAgICAgICAgICAgIHdpbmRvdy50b3AucG9zdE1lc3NhZ2UobXNnQ29udGVudCwgJyonKTtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciBwcmV2aWV3IHBhZ2VcbiAgICAgICAgICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24gKG1zZykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gbXNnLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkYXRhKSAmJiBkYXRhLmtleSA9PT0gJ3N3aXRjaC1kZXZpY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEuZGV2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSXBob25lKCkgfHwgaXNJcG9kKCkgfHwgaXNJcGFkKCkpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsnb3MnOiBPUy5JT1N9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7J29zJzogT1MuQU5EUk9JRH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBXTV9NT0RVTEVTX0ZPUl9ST09UID0gW1xuICAgIFdtQ29tcG9uZW50c01vZHVsZS5mb3JSb290KCksXG4gICAgTW9iaWxlUnVudGltZU1vZHVsZS5mb3JSb290KCksXG4gICAgQ29yZU1vZHVsZS5mb3JSb290KCksXG4gICAgU2VjdXJpdHlNb2R1bGUuZm9yUm9vdCgpLFxuICAgIE9BdXRoTW9kdWxlLmZvclJvb3QoKSxcbiAgICBWYXJpYWJsZXNNb2R1bGUuZm9yUm9vdCgpLFxuICAgIEh0dHBTZXJ2aWNlTW9kdWxlLmZvclJvb3QoKSxcbiAgICBSdW50aW1lQmFzZU1vZHVsZS5mb3JSb290KClcbl07XG4iXX0=
@@ -159,7 +159,7 @@ export class I18nServiceImpl extends AbstractI18nService {
159
159
  return locale === moment.tz(timezoneName).format('Z');
160
160
  });
161
161
  }
162
- this.formatsByLocale.timezone = locale;
162
+ moment.tz.setDefault(locale);
163
163
  const localeData = compInstance && compInstance.formatsByLocale ? compInstance.formatsByLocale : this.formatsByLocale;
164
164
  Object.assign(localeData, localeObj);
165
165
  resolve();
@@ -331,4 +331,4 @@ export class I18nServiceImpl extends AbstractI18nService {
331
331
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(I18nServiceImpl, [{
332
332
  type: Injectable
333
333
  }], () => [{ type: i1.HttpClient }, { type: i2.BsLocaleService }, { type: i3.AppDefaults }, { type: i0.Injector }], null); })();
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsR0FBRyxFQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7O0FBSTdGLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ3ZILE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxP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Z3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgZGVmaW5lTG9jYWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9jaHJvbm9zJztcbmltcG9ydCB7IEJzTG9jYWxlU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5cbmltcG9ydCB7XG4gICAgX1dNX0FQUF9QUk9KRUNULFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQXBwRGVmYXVsdHMsXG4gICAgZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIGdldFdtUHJvamVjdFByb3BlcnRpZXMsXG4gICAgaXNNb2JpbGUsXG4gICAgaXNNb2JpbGVBcHAsXG4gICAgbG9hZFNjcmlwdHMsXG4gICAgcmVwbGFjZSxcbiAgICBzZXRDU1MsXG4gICAgc2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIEFwcFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7ZmluZCwgZm9yRWFjaCwgZ2V0LCBpbmNsdWRlcywgaW50ZXJzZWN0aW9uLCBpc09iamVjdCwgbWFwLCB0b0xvd2VyfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgbW9tZW50O1xuXG5jb25zdCBBUFBfTE9DQUxFX1JPT1RfUEFUSCA9ICdyZXNvdXJjZXMvaTE4bic7XG5jb25zdCBSVExfTEFOR1VBR0VfQ09ERVMgPSBbJ2FyJywgJ2FyLTAwMScsICdhci1hZScsICdhci1iaCcsICdhci1keicsICdhci1lZycsICdhci1pcScsICdhci1qbycsICdhci1rdycsICdhci1sYicsICdhci1seScsXG4gICAgJ2FyLW1hJywgJ2FyLW9tJywgJ2FyLXFhJywgJ2FyLXNhJywgJ2FyLXNkJywgJ2FyLXN5JywgJ2FyLXRuJywgJ2FyLXllJywgJ2FyYycsICdiY2MnLCAnYnFpJywgJ2NrYicsICdkdicsICdmYScsICdnbGsnLFxuICAgICdoZScsICdrdScsICdtem4nLCAncG5iJywgJ3BzJywgJ3NkJywgJ3VnJywgJ3VyJywgJ3lpJ107XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJMThuU2VydmljZUltcGwgZXh0ZW5kcyBBYnN0cmFjdEkxOG5TZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgc2VsZWN0ZWRMb2NhbGU6IHN0cmluZztcbiAgICBwcml2YXRlIGRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUgPSAnZW4nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwTG9jYWxlOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmVmYWJMb2NhbGU6IE1hcDxTdHJpbmcsIGFueT47XG4gICAgcHJpdmF0ZSBtZXNzYWdlczogYW55O1xuICAgIHByaXZhdGUgX2lzQW5ndWxhckxvY2FsZUxvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgZm9ybWF0c0J5TG9jYWxlID0geyd0aW1lem9uZSc6ICcnLCAnbnVtYmVyJzogJyd9O1xuICAgIHByaXZhdGUgZ2V0IGFwcCgpIHsgcmV0dXJuIHRoaXMuaW5qLmdldChBcHApIH07XG5cbiAgICBwcml2YXRlIGJ1bmRsZUxvYWRlZDp7W2tleTpzdHJpbmddIDogYW55fSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgJGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgYnNMb2NhbGVTZXJ2aWNlOiBCc0xvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwRGVmYXVsdHM6IEFwcERlZmF1bHRzLFxuICAgICAgICBwcml2YXRlIGluajogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSB7fTtcbiAgICAgICAgdGhpcy5wcmVmYWJMb2NhbGUgPSBuZXcgTWFwKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVEaXJlY3Rpb24oKSB7XG4gICAgICAgIGxldCBkaXJlY3Rpb246ICdsdHInIHwgJ3J0bCcgPSAnbHRyJztcbiAgICAgICAgaWYgKFJUTF9MQU5HVUFHRV9DT0RFUy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkTG9jYWxlKSkge1xuICAgICAgICAgICAgZGlyZWN0aW9uID0gJ3J0bCc7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRDU1MoZG9jdW1lbnQuYm9keSwgJ2RpcmVjdGlvbicsIGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0ge307XG5cbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMuYXBwTG9jYWxlLCB0aGlzLm1lc3NhZ2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2VsZWN0ZWRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERlZmF1bHRTdXBwb3J0ZWRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXBwTG9jYWxlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcExvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJlZmFiTG9jYWxlQnVuZGxlKHByZWZhYk5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5wcmVmYWJMb2NhbGUuaGFzKHByZWZhYk5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLnByZWZhYkxvY2FsZS5zZXQocHJlZmFiTmFtZSwgT2JqZWN0LmNyZWF0ZSh0aGlzLmFwcExvY2FsZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnByZWZhYkxvY2FsZS5nZXQocHJlZmFiTmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRlbmRQcmVmYWJNZXNzYWdlcyhtZXNzYWdlczogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICghbWVzc2FnZXMucHJlZmFiTWVzc2FnZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5rZXlzKG1lc3NhZ2VzLnByZWZhYk1lc3NhZ2VzKS5mb3JFYWNoKChwcmVmYWJOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCBidW5kbGUgPSB0aGlzLnByZWZhYkxvY2FsZS5nZXQocHJlZmFiTmFtZSk7XG4gICAgICAgICAgICBpZiAoIWJ1bmRsZSkge1xuICAgICAgICAgICAgICAgIGJ1bmRsZSA9IE9iamVjdC5jcmVhdGUodGhpcy5hcHBMb2NhbGUpO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlZmFiTG9jYWxlLnNldChwcmVmYWJOYW1lLCBidW5kbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihidW5kbGUsIG1lc3NhZ2VzLnByZWZhYk1lc3NhZ2VzW3ByZWZhYk5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRlbmRNZXNzYWdlcyhtZXNzYWdlczogYW55KTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5tZXNzYWdlcywgbWVzc2FnZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFJlc291cmNlKHBhdGgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy4kaHR0cC5nZXQocGF0aClcbiAgICAgICAgICAgIC50b1Byb21pc2UoKVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYGVycm9yIGxvYWRpbmcgbG9jYWxlIHJlc291cmNlIGZyb20gJHtwYXRofWApO1xuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZEFwcExvY2FsZUJ1bmRsZSgpIHtcbiAgICAgICAgdGhpcy5sb2FkUmVzb3VyY2UoYCR7QVBQX0xPQ0FMRV9ST09UX1BBVEh9LyR7dGhpcy5zZWxlY3RlZExvY2FsZX0uanNvbmApXG4gICAgICAgICAgICAudGhlbihidW5kbGUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kTWVzc2FnZXMoYnVuZGxlLm1lc3NhZ2VzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV4dGVuZFByZWZhYk1lc3NhZ2VzKGJ1bmRsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBEZWZhdWx0cy5zZXRGb3JtYXRzKGJ1bmRsZS5mb3JtYXRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hcHAgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRNb21lbnRMb2NhbGVCdW5kbGUobW9tZW50TG9jYWxlKSB7XG4gICAgICAgIGNvbnN0IF9jZG5VcmwgPSBfV01fQVBQX1BST0pFQ1QuY2RuVXJsIHx8IF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3Q7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgIG1vbWVudC5sb2NhbGUodGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL21vbWVudC8ke21vbWVudExvY2FsZX0uanNgO1xuICAgICAgICBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpLnRoZW4oKCk9PntcbiAgICAgICAgICAgIG1vbWVudC5sb2NhbGUodGhpcy5zZWxlY3RlZExvY2FsZSk7XG5cbiAgICAgICAgICAgIC8vIEZvciBuZ3ggYm9vdHN0cmFwIGxvY2FsZSwgZ2V0IHRoZSBjb25maWcgZnJvbSBzY3JpcHQgYW5kIGFwcGx5IGxvY2FsZVxuICAgICAgICAgICAgLy8gbW9tZW50LmxvY2FsZURhdGEobW9tZW50TG9jYWxlKSB3aWxsIHJldHVybiBtb21lbnQgbG9jYWxlIGluc3RhbmNlLiBfY29uZmlnIGluc2lkZSB3aWxsIGhhdmUgYWN0dWFsIGNvbmZpZ1xuICAgICAgICAgICAgbGV0IF9jb25maWcgPSBtb21lbnQubG9jYWxlRGF0YShtb21lbnRMb2NhbGUpO1xuICAgICAgICAgICAgX2NvbmZpZyA9IF9jb25maWcgJiYgX2NvbmZpZy5fY29uZmlnO1xuICAgICAgICAgICAgZGVmaW5lTG9jYWxlKHRoaXMuc2VsZWN0ZWRMb2NhbGUsIF9jb25maWcpO1xuICAgICAgICAgICAgdGhpcy5ic0xvY2FsZVNlcnZpY2UudXNlKHRoaXMuZ2V0U2VsZWN0ZWRMb2NhbGUoKSB8fCB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubW9tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQW5ndWxhckxvY2FsZUJ1bmRsZShhbmdMb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IF9jZG5VcmwgKyBgbG9jYWxlcy9hbmd1bGFyL2dsb2JhbC8ke2FuZ0xvY2FsZX0uanNgO1xuXG4gICAgICAgICAgICBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0FuZ3VsYXJMb2NhbGVMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHJlc29sdmUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZENhbGVuZGFyTG9jYWxlQnVuZGxlKGNhbGVuZGFyTG9jYWxlLCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IF9jZG5VcmwgPSBfV01fQVBQX1BST0pFQ1QuY2RuVXJsIHx8IF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3Q7XG4gICAgICAgIGxldCBwYXRoOiBzdHJpbmc7XG4gICAgICAgIGlmIChjYWxlbmRhckxvY2FsZSkge1xuICAgICAgICAgICAgcGF0aCA9IF9jZG5VcmwgKyBgbG9jYWxlcy9mdWxsY2FsZW5kYXIvJHtjYWxlbmRhckxvY2FsZX0uanNgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmV0dXJuIGluIGNhc2Ugb2YgbW9iaWxlIGFwcCBvciBpZiBzZWxlY3RlZCBsb2NhbGUgaXMgZGVmYXVsdCBzdXBwb3J0ZWQgbG9jYWxlLlxuICAgICAgICBpZiAoIWZvcmNlICYmIChpc01vYmlsZSgpIHx8IGlzTW9iaWxlQXBwKCkgfHwgdGhpcy5zZWxlY3RlZExvY2FsZSA9PT0gdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKSkge1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuZnVsbENhbGVuZGFyID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGwgdGhlIHNjcmlwdC4gSW4gc2NyaXB0LCBtb21lbnQgZGVmaW5lcyB0aGUgbG9hZGVkIGxvY2FsZVxuICAgICAgICByZXR1cm4gbG9hZFNjcmlwdHMoW3BhdGhdLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZE1vbWVudFRpbWVab25lQnVuZGxlKGxvY2FsZSwgY29tcEluc3RhbmNlPykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfY2RuVXJsID0gX1dNX0FQUF9QUk9KRUNULmNkblVybCB8fCBfV01fQVBQX1BST0pFQ1QubmdEZXN0O1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IF9jZG5VcmwgKyBgbG9jYWxlcy9tb21lbnQtdGltZXpvbmUvbW9tZW50LXRpbWV6b25lLXdpdGgtZGF0YS5qc2A7XG4gICAgICAgICAgICBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBJZiBsb2NhbGUgaXMgcHJvdmlkZWQgaW4gdGhlIGZvcm0gb2Ygb2Zmc2V0IGFuZCBub3QgdGltZXpvbmUgbmFtZSwgZGVkdWNlIHRoZSBuYW1lLlxuICAgICAgICAgICAgICAgICAqIElmIGxvY2FsZSBpcyBwcm92aWRlZCBhcyBHTVQrOSwgbmFtZSB3aWxsIGJlIGRlZHVjZWQgYXMgQXNpYS9Ub2t5b1xuICAgICAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAgICAgbGV0IGxvY2FsZU9iaiA9IGxvY2FsZTtcbiAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGVPYmpbJ3RpbWV6b25lJ107XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlSW5kZXggPSBsb2NhbGUuaW5kZXhPZignKycpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbGVJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZS5zdWJzdHIobG9jYWxlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZU9ialsndGltZXpvbmUnXSA9IGZpbmQobW9tZW50LnR6Lm5hbWVzKCksICh0aW1lem9uZU5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGUgPT09IG1vbWVudC50eih0aW1lem9uZU5hbWUpLmZvcm1hdCgnWicpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXRzQnlMb2NhbGUudGltZXpvbmUgPSBsb2NhbGU7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlRGF0YSA9ICBjb21wSW5zdGFuY2UgJiYgY29tcEluc3RhbmNlLmZvcm1hdHNCeUxvY2FsZSA/IGNvbXBJbnN0YW5jZS5mb3JtYXRzQnlMb2NhbGUgOiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGxvY2FsZURhdGEsIGxvY2FsZU9iaik7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTG9jYWxlQnVuZGxlcyhsaWJMb2NhbGUpIHtcbiAgICAgICAgaWYgKGxpYkxvY2FsZS5tb21lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZE1vbWVudExvY2FsZUJ1bmRsZShsaWJMb2NhbGUubW9tZW50KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgIHRoaXMuYnNMb2NhbGVTZXJ2aWNlLnVzZSh0aGlzLmdldFNlbGVjdGVkTG9jYWxlKCkgfHwgdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKTtcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpYkxvY2FsZS5mdWxsQ2FsZW5kYXIgJiYgd2luZG93WydGdWxsQ2FsZW5kYXInXSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2FsZW5kYXJMb2NhbGVCdW5kbGUobGliTG9jYWxlLmZ1bGxDYWxlbmRhcik/LnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpYkxvY2FsZS5hbmd1bGFyKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRBcHBMb2NhbGVCdW5kbGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkQW5ndWxhckxvY2FsZUJ1bmRsZShsaWJMb2NhbGUuYW5ndWxhcik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFRpbWV6b25lKGxvY2FsZSwgY29tcEluc3RhbmNlPykge1xuICAgICAgICB0aGlzLmxvYWRNb21lbnRUaW1lWm9uZUJ1bmRsZShsb2NhbGUsIGNvbXBJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRpbWV6b25lKGNvbXBJbnN0YW5jZT8pIHtcbiAgICAgICAgY29uc3QgcGFnZUNvbmZpZyA9IGdldCh0aGlzLmFwcCwgJ2FjdGl2ZVBhZ2UuZm9ybWF0c0J5TG9jYWxlLnRpbWV6b25lJyk7XG4gICAgICAgIGNvbnN0IGNvbXBDb25maWcgPSBnZXQoY29tcEluc3RhbmNlLCAnZm9ybWF0c0J5TG9jYWxlLnRpbWV6b25lJyk7XG4gICAgICAgIGlmIChjb21wQ29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gY29tcENvbmZpZztcbiAgICAgICAgfSBlbHNlIGlmIChwYWdlQ29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFnZUNvbmZpZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZVsndGltZXpvbmUnXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGb3JtYXRzQnlMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U2VsZWN0ZWRMb2NhbGUobG9jYWxlKSB7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGV2ZW50IGlzIHByb3BhZ2F0ZWQgZnJvbSB0aGUgc2VsZWN0IG9yIGFueSBzdWNoIHdpZGdldFxuICAgICAgICBpZiAoaXNPYmplY3QobG9jYWxlKSkge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlLmRhdGF2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxpYkxvY2FsZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXNbbG9jYWxlXTtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlID0gT2JqZWN0LmtleXMoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnN1cHBvcnRlZExhbmd1YWdlcyk7XG5cbiAgICAgICAgaWYgKCFpbmNsdWRlcyhzdXBwb3J0ZWRMb2NhbGUsIGxvY2FsZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbG9jYWxlIHx8IGxvY2FsZSA9PT0gdGhpcy5zZWxlY3RlZExvY2FsZSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0U2Vzc2lvblN0b3JhZ2VJdGVtKCdzZWxlY3RlZExvY2FsZScsIGxvY2FsZSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZExvY2FsZSA9IGxvY2FsZTtcblxuICAgICAgICAvLyByZXNldCB0aGUgbG9jYWxlRGF0YSBvYmplY3RcbiAgICAgICAgdGhpcy5pbml0KCk7XG5cbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubW9tZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hcHAgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5saWJMb2NhbGUgPSBsaWJMb2NhbGU7XG5cbiAgICAgICAgLy8gbG9hZCB0aGUgbG9jYWxlIGJ1bmRsZXMgb2YgdGhlIHNlbGVjdGVkIGxvY2FsZVxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkTG9jYWxlQnVuZGxlcyhsaWJMb2NhbGUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NhbGVEaXJlY3Rpb24oKTtcbiAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFuZ3VsYXIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVkdWNlQXBwTG9jYWxlKCkge1xuICAgICAgICAvLyBjb21wdXRhdGlvbiB0byBmaW5kIGFwcCBkZWZhdWx0IGxvY2FsZVxuICAgICAgICBjb25zdCBfYWNjZXB0TGFuZyA9IHRoaXMuZ2V0QWNjZXB0ZWRMYW5ndWFnZXMoKTtcbiAgICAgICAgY29uc3QgX2RlZmF1bHRMYW5ndWFnZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5kZWZhdWx0TGFuZ3VhZ2U7XG4gICAgICAgIF9hY2NlcHRMYW5nLnB1c2goX2RlZmF1bHRMYW5ndWFnZSk7XG5cbiAgICAgICAgLy8gY2hlY2tzIHdoZXRoZXIgdXNlciBwcmVmZXJlbmNlIGlzIGJhc2VkIG9uIGJyb3dzZXIgc2V0IGxhbmd1YWdlcyBvciBkZWZhdWx0IGxhbmd1YWdlIHNldCBpbiBwcm9qZWN0XG4gICAgICAgIGxldCBwcmVmZXJCcm93c2VyTGFuZyA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5wcmVmZXJCcm93c2VyTGFuZztcbiAgICAgICAgaWYgKCFwcmVmZXJCcm93c2VyTGFuZykgeyAvLyB3aGVuIHByZWZlckJyb3dzZXJMYW5nIGlzIG5vdCBkZWZpbmVkLCBzZXQgdG8gaXRzIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgIHByZWZlckJyb3dzZXJMYW5nICA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7IC8vIGNvbnZlcnQgc3RyaW5naWZpZWQgYm9vbGVhbiB2YWx1ZXMgcmVjaWV2ZWQgZnJvbSBCRSB0byBib29sZWFuc1xuICAgICAgICAgICAgcHJlZmVyQnJvd3Nlckxhbmc9IChwcmVmZXJCcm93c2VyTGFuZyA9PT0gJ3RydWUnIHx8IHByZWZlckJyb3dzZXJMYW5nID09PSB0cnVlKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBfc3VwcG9ydGVkTGFuZyA9IE9iamVjdC5rZXlzKGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXMpIHx8IFt0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGVdO1xuXG4gICAgICAgIC8vIHdoZW4gcHJlZmVyZW5jZSBpcyBnaXZlbiB0byBicm93c2VyIHNldCBsYW5ndWFnZXMsIGRvIG5vdCBwb3B1bGF0ZSBfc2VsZWN0ZWREZWZhdWx0TGFuZyB2YXJpYWJsZVxuICAgICAgICBsZXQgX3NlbGVjdGVkRGVmYXVsdExhbmcgPSBwcmVmZXJCcm93c2VyTGFuZyA/IHVuZGVmaW5lZCA6IF9kZWZhdWx0TGFuZ3VhZ2U7XG5cbiAgICAgICAgbGV0IF9hcHBTdXBwb3J0ZWRMYW5nO1xuICAgICAgICAvKipcbiAgICAgICAgICogZm9yIGNvcmRvdmEsIGNoZWNrIGZvciBsYW5ndWFnZSBpZ25vcmluZyB0aGUgbG9jYWxlXG4gICAgICAgICAqIEFzIHRoZSBuYXZpZ2F0b3IubGFuZ3VhZ2VzIGFsd2F5cyByZXR1cm5zIHRoZSBsYW5ndWFnZSB3aXRoIGxvY2FsZSAoZW4tdXMpXG4gICAgICAgICAqIFRoZSBzdXBwb3J0ZWRMYW5ndWFnZXMgZnJvbSBCRSBkb2Vzbid0IGluY2x1ZGUgbG9jYWxlIChlbikgd2hpY2ggbGVhZHMgdG8gbWlzbWF0Y2hcbiAgICAgICAgICovXG4gICAgICAgIGlmIChDT05TVEFOVFMuaGFzQ29yZG92YSkge1xuICAgICAgICAgICAgbGV0IHN1cHBvcnRlZExhbmcgPSBbXTtcbiAgICAgICAgICAgIGZvckVhY2goX2FjY2VwdExhbmcsIGZ1bmN0aW9uIChsYW5nKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1hdGNoZWRMYW5nID0gZmluZChfc3VwcG9ydGVkTGFuZywgKHZhbCkgPT4gbGFuZyA9PT0gdmFsKSB8fCBmaW5kKF9zdXBwb3J0ZWRMYW5nLCAodmFsKSA9PiBsYW5nLnN0YXJ0c1dpdGgodmFsKSk7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRMYW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZExhbmcucHVzaChtYXRjaGVkTGFuZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBfYXBwU3VwcG9ydGVkTGFuZyA9IHN1cHBvcnRlZExhbmdbMF07XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2sgZm9yIHRoZSBzZXNzaW9uIHN0b3JhZ2UgdG8gbG9hZCBhbnkgcHJlLXJlcXVlc3RlZCBsb2NhbGVcbiAgICAgICAgY29uc3QgX2RlZmF1bHRMYW5nID0gZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtKCdzZWxlY3RlZExvY2FsZScpIHx8IF9zZWxlY3RlZERlZmF1bHRMYW5nIHx8IF9hcHBTdXBwb3J0ZWRMYW5nIHx8IGludGVyc2VjdGlvbihfYWNjZXB0TGFuZywgX3N1cHBvcnRlZExhbmcpWzBdIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZTtcbiAgICAgICAgLy8gaWYgdGhlIHN1cHBvcnRlZExvY2FsZSBpcyBub3QgYXZhaWxhYmxlIHNldCBpdCB0byBkZWZhdWx0TG9jYWxlXG4gICAgICAgIF9zdXBwb3J0ZWRMYW5nID0gX3N1cHBvcnRlZExhbmcgfHwgW19kZWZhdWx0TGFuZ107XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gX2RlZmF1bHRMYW5nIHx8IF9zdXBwb3J0ZWRMYW5nWzBdO1xuICAgICAgICByZXR1cm4gZGVmYXVsdExhbmd1YWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkRGVmYXVsdExvY2FsZSgpIHtcbiAgICAgICAgRGF0ZS5wcm90b3R5cGVbXCJtb250aFwiXSA9IERhdGUucHJvdG90eXBlLmdldE1vbnRoO1xuICAgICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmRlZHVjZUFwcExvY2FsZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRTZWxlY3RlZExvY2FsZShsb2NhbGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMb2NhbGl6ZWRNZXNzYWdlKG1lc3NhZ2UsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2UodGhpcy5hcHBMb2NhbGVbbWVzc2FnZV0sIGFyZ3MpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWNjZXB0ZWQgbGFuZ3VhZ2VzIGxpc3RcbiAgICBwdWJsaWMgZ2V0QWNjZXB0ZWRMYW5ndWFnZXMoKSB7XG4gICAgICAgIGxldCBsYW5ndWFnZXM7XG4gICAgICAgIGlmIChDT05TVEFOVFMuaGFzQ29yZG92YSkge1xuICAgICAgICAgICAgbGFuZ3VhZ2VzID0gbmF2aWdhdG9yLmxhbmd1YWdlcyB8fCBbbmF2aWdhdG9yLmxhbmd1YWdlXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhbmd1YWdlcyA9IGRlY29kZVVSSUNvbXBvbmVudChnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkucHJlZmVycmVkTGFuZ3VhZ2UgfHwgJycpO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBY2NlcHQtTGFuZ3VhZ2UgSGVhZGVyIHdpbGwgY29udGFpbiBzZXQgb2Ygc3VwcG9ydGVkIGxvY2FsZSwgc28gdHJ5IHNwbGl0dGluZyB0aGUgc3RyaW5nIHRvIHByb3BlciBsb2NhbGUgc2V0XG4gICAgICAgICAgICAgKiBFeDogZW4sZW4tVVM7cT0wLjksZGU7cT0wLjYsYXI7cT0wLjIsaGlcbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBTcGxpdCB0aGUgYWJvdmUgaW50byBbZW4sZW4tdXMsZGUsYXIsaGldXG4gICAgICAgICAgICAgKiBAdHlwZSB7QXJyYXl9XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxhbmd1YWdlcyA9IGxhbmd1YWdlcy5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbihsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxlLnNwbGl0KCc7JylbMF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwKGxhbmd1YWdlcywgdG9Mb3dlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRDYWxlbmRhckxvY2FsZSgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZExvY2FsZSAhPT0gJ2VuJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZENhbGVuZGFyTG9jYWxlQnVuZGxlKHRoaXMuc2VsZWN0ZWRMb2NhbGUsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBbmd1bGFyTG9jYWxlTG9hZGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNBbmd1bGFyTG9jYWxlTG9hZGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXR3aWRnZXRMb2NhbGUobG9jYWxlKSB7XG4gICAgICAgIHRoaXMuZm9ybWF0c0J5TG9jYWxlWydudW1iZXInXSA9IGxvY2FsZVsnbnVtYmVyJ107XG4gICAgfVxuXG4gICAgcHVibGljIGdldHdpZGdldExvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0c0J5TG9jYWxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5TG9jYWxlQ2hhbmdlZCgpIHtcbiAgICAgICAgaWYodGhpcy5idW5kbGVMb2FkZWQubW9tZW50ICYmIHRoaXMuYnVuZGxlTG9hZGVkLmZ1bGxDYWxlbmRhciAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5hbmd1bGFyICYmIHRoaXMuYnVuZGxlTG9hZGVkLmFwcCkge1xuICAgICAgICAgICAgdGhpcy5hcHAubm90aWZ5KCAgJ2xvY2FsZS1jaGFuZ2VkJywgdGhpcy5idW5kbGVMb2FkZWQubGliTG9jYWxlKTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsR0FBRyxFQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7O0FBSTdGLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ3ZILE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxP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ICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBkZWZpbmVMb2NhbGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Nocm9ub3MnO1xuaW1wb3J0IHsgQnNMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHtcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyxcbiAgICBpc01vYmlsZSxcbiAgICBpc01vYmlsZUFwcCxcbiAgICBsb2FkU2NyaXB0cyxcbiAgICByZXBsYWNlLFxuICAgIHNldENTUyxcbiAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgQXBwXG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHtmaW5kLCBmb3JFYWNoLCBnZXQsIGluY2x1ZGVzLCBpbnRlcnNlY3Rpb24sIGlzT2JqZWN0LCBtYXAsIHRvTG93ZXJ9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCBtb21lbnQ7XG5cbmNvbnN0IEFQUF9MT0NBTEVfUk9PVF9QQVRIID0gJ3Jlc291cmNlcy9pMThuJztcbmNvbnN0IFJUTF9MQU5HVUFHRV9DT0RFUyA9IFsnYXInLCAnYXItMDAxJywgJ2FyLWFlJywgJ2FyLWJoJywgJ2FyLWR6JywgJ2FyLWVnJywgJ2FyLWlxJywgJ2FyLWpvJywgJ2FyLWt3JywgJ2FyLWxiJywgJ2FyLWx5JyxcbiAgICAnYXItbWEnLCAnYXItb20nLCAnYXItcWEnLCAnYXItc2EnLCAnYXItc2QnLCAnYXItc3knLCAnYXItdG4nLCAnYXIteWUnLCAnYXJjJywgJ2JjYycsICdicWknLCAnY2tiJywgJ2R2JywgJ2ZhJywgJ2dsaycsXG4gICAgJ2hlJywgJ2t1JywgJ216bicsICdwbmInLCAncHMnLCAnc2QnLCAndWcnLCAndXInLCAneWknXTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEkxOG5TZXJ2aWNlSW1wbCBleHRlbmRzIEFic3RyYWN0STE4blNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzZWxlY3RlZExvY2FsZTogc3RyaW5nO1xuICAgIHByaXZhdGUgZGVmYXVsdFN1cHBvcnRlZExvY2FsZSA9ICdlbic7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBMb2NhbGU6IGFueTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZWZhYkxvY2FsZTogTWFwPFN0cmluZywgYW55PjtcbiAgICBwcml2YXRlIG1lc3NhZ2VzOiBhbnk7XG4gICAgcHJpdmF0ZSBfaXNBbmd1bGFyTG9jYWxlTG9hZGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBmb3JtYXRzQnlMb2NhbGUgPSB7J3RpbWV6b25lJzogJycsICdudW1iZXInOiAnJ307XG4gICAgcHJpdmF0ZSBnZXQgYXBwKCkgeyByZXR1cm4gdGhpcy5pbmouZ2V0KEFwcCkgfTtcblxuICAgIHByaXZhdGUgYnVuZGxlTG9hZGVkOntba2V5OnN0cmluZ10gOiBhbnl9ID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSAkaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBic0xvY2FsZVNlcnZpY2U6IEJzTG9jYWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBEZWZhdWx0czogQXBwRGVmYXVsdHMsXG4gICAgICAgIHByaXZhdGUgaW5qOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHt9O1xuICAgICAgICB0aGlzLnByZWZhYkxvY2FsZSA9IG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxvY2FsZURpcmVjdGlvbigpIHtcbiAgICAgICAgbGV0IGRpcmVjdGlvbjogJ2x0cicgfCAncnRsJyA9ICdsdHInO1xuICAgICAgICBpZiAoUlRMX0xBTkdVQUdFX0NPREVTLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRMb2NhbGUpKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAncnRsJztcbiAgICAgICAgfVxuXG4gICAgICAgIHNldENTUyhkb2N1bWVudC5ib2R5LCAnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXQoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSB7fTtcblxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcy5hcHBMb2NhbGUsIHRoaXMubWVzc2FnZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZWxlY3RlZExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdFN1cHBvcnRlZExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBcHBMb2NhbGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmVmYWJMb2NhbGVCdW5kbGUocHJlZmFiTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnByZWZhYkxvY2FsZS5oYXMocHJlZmFiTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJlZmFiTG9jYWxlLnNldChwcmVmYWJOYW1lLCBPYmplY3QuY3JlYXRlKHRoaXMuYXBwTG9jYWxlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZmFiTG9jYWxlLmdldChwcmVmYWJOYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZFByZWZhYk1lc3NhZ2VzKG1lc3NhZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlcy5wcmVmYWJNZXNzYWdlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMobWVzc2FnZXMucHJlZmFiTWVzc2FnZXMpLmZvckVhY2goKHByZWZhYk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbGV0IGJ1bmRsZSA9IHRoaXMucHJlZmFiTG9jYWxlLmdldChwcmVmYWJOYW1lKTtcbiAgICAgICAgICAgIGlmICghYnVuZGxlKSB7XG4gICAgICAgICAgICAgICAgYnVuZGxlID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmFwcExvY2FsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVmYWJMb2NhbGUuc2V0KHByZWZhYk5hbWUsIGJ1bmRsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bmRsZSwgbWVzc2FnZXMucHJlZmFiTWVzc2FnZXNbcHJlZmFiTmFtZV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZE1lc3NhZ2VzKG1lc3NhZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1lc3NhZ2VzLCBtZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUmVzb3VyY2UocGF0aCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRodHRwLmdldChwYXRoKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgZXJyb3IgbG9hZGluZyBsb2NhbGUgcmVzb3VyY2UgZnJvbSAke3BhdGh9YCk7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQXBwTG9jYWxlQnVuZGxlKCkge1xuICAgICAgICB0aGlzLmxvYWRSZXNvdXJjZShgJHtBUFBfTE9DQUxFX1JPT1RfUEFUSH0vJHt0aGlzLnNlbGVjdGVkTG9jYWxlfS5qc29uYClcbiAgICAgICAgICAgIC50aGVuKGJ1bmRsZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHRlbmRNZXNzYWdlcyhidW5kbGUubWVzc2FnZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kUHJlZmFiTWVzc2FnZXMoYnVuZGxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcERlZmF1bHRzLnNldEZvcm1hdHMoYnVuZGxlLmZvcm1hdHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFwcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZE1vbWVudExvY2FsZUJ1bmRsZShtb21lbnRMb2NhbGUpIHtcbiAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhdGggPSBfY2RuVXJsICsgYGxvY2FsZXMvbW9tZW50LyR7bW9tZW50TG9jYWxlfS5qc2A7XG4gICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLnNlbGVjdGVkTG9jYWxlKTtcblxuICAgICAgICAgICAgLy8gRm9yIG5neCBib290c3RyYXAgbG9jYWxlLCBnZXQgdGhlIGNvbmZpZyBmcm9tIHNjcmlwdCBhbmQgYXBwbHkgbG9jYWxlXG4gICAgICAgICAgICAvLyBtb21lbnQubG9jYWxlRGF0YShtb21lbnRMb2NhbGUpIHdpbGwgcmV0dXJuIG1vbWVudCBsb2NhbGUgaW5zdGFuY2UuIF9jb25maWcgaW5zaWRlIHdpbGwgaGF2ZSBhY3R1YWwgY29uZmlnXG4gICAgICAgICAgICBsZXQgX2NvbmZpZyA9IG1vbWVudC5sb2NhbGVEYXRhKG1vbWVudExvY2FsZSk7XG4gICAgICAgICAgICBfY29uZmlnID0gX2NvbmZpZyAmJiBfY29uZmlnLl9jb25maWc7XG4gICAgICAgICAgICBkZWZpbmVMb2NhbGUodGhpcy5zZWxlY3RlZExvY2FsZSwgX2NvbmZpZyk7XG4gICAgICAgICAgICB0aGlzLmJzTG9jYWxlU2VydmljZS51c2UodGhpcy5nZXRTZWxlY3RlZExvY2FsZSgpIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRBbmd1bGFyTG9jYWxlQnVuZGxlKGFuZ0xvY2FsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfY2RuVXJsID0gX1dNX0FQUF9QUk9KRUNULmNkblVybCB8fCBfV01fQVBQX1BST0pFQ1QubmdEZXN0O1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL2FuZ3VsYXIvZ2xvYmFsLyR7YW5nTG9jYWxlfS5qc2A7XG5cbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQ2FsZW5kYXJMb2NhbGVCdW5kbGUoY2FsZW5kYXJMb2NhbGUsIGZvcmNlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgbGV0IHBhdGg6IHN0cmluZztcbiAgICAgICAgaWYgKGNhbGVuZGFyTG9jYWxlKSB7XG4gICAgICAgICAgICBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL2Z1bGxjYWxlbmRhci8ke2NhbGVuZGFyTG9jYWxlfS5qc2A7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXR1cm4gaW4gY2FzZSBvZiBtb2JpbGUgYXBwIG9yIGlmIHNlbGVjdGVkIGxvY2FsZSBpcyBkZWZhdWx0IHN1cHBvcnRlZCBsb2NhbGUuXG4gICAgICAgIGlmICghZm9yY2UgJiYgKGlzTW9iaWxlKCkgfHwgaXNNb2JpbGVBcHAoKSB8fCB0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpKSB7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsbCB0aGUgc2NyaXB0LiBJbiBzY3JpcHQsIG1vbWVudCBkZWZpbmVzIHRoZSBsb2FkZWQgbG9jYWxlXG4gICAgICAgIHJldHVybiBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTW9tZW50VGltZVpvbmVCdW5kbGUobG9jYWxlLCBjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9jZG5VcmwgPSBfV01fQVBQX1BST0pFQ1QuY2RuVXJsIHx8IF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3Q7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL21vbWVudC10aW1lem9uZS9tb21lbnQtdGltZXpvbmUtd2l0aC1kYXRhLmpzYDtcbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIElmIGxvY2FsZSBpcyBwcm92aWRlZCBpbiB0aGUgZm9ybSBvZiBvZmZzZXQgYW5kIG5vdCB0aW1lem9uZSBuYW1lLCBkZWR1Y2UgdGhlIG5hbWUuXG4gICAgICAgICAgICAgICAgICogSWYgbG9jYWxlIGlzIHByb3ZpZGVkIGFzIEdNVCs5LCBuYW1lIHdpbGwgYmUgZGVkdWNlZCBhcyBBc2lhL1Rva3lvXG4gICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICBsZXQgbG9jYWxlT2JqID0gbG9jYWxlO1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZU9ialsndGltZXpvbmUnXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVJbmRleCA9IGxvY2FsZS5pbmRleE9mKCcrJyk7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlLnN1YnN0cihsb2NhbGVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlT2JqWyd0aW1lem9uZSddID0gZmluZChtb21lbnQudHoubmFtZXMoKSwgKHRpbWV6b25lTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZSA9PT0gbW9tZW50LnR6KHRpbWV6b25lTmFtZSkuZm9ybWF0KCdaJyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtb21lbnQudHouc2V0RGVmYXVsdChsb2NhbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsZURhdGEgPSAgY29tcEluc3RhbmNlICYmIGNvbXBJbnN0YW5jZS5mb3JtYXRzQnlMb2NhbGUgPyBjb21wSW5zdGFuY2UuZm9ybWF0c0J5TG9jYWxlIDogdGhpcy5mb3JtYXRzQnlMb2NhbGU7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihsb2NhbGVEYXRhLCBsb2NhbGVPYmopO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHJlc29sdmUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZExvY2FsZUJ1bmRsZXMobGliTG9jYWxlKSB7XG4gICAgICAgIGlmIChsaWJMb2NhbGUubW9tZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRNb21lbnRMb2NhbGVCdW5kbGUobGliTG9jYWxlLm1vbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZExvY2FsZSA9PT0gdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKSB7XG4gICAgICAgICAgICB0aGlzLmJzTG9jYWxlU2VydmljZS51c2UodGhpcy5nZXRTZWxlY3RlZExvY2FsZSgpIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaWJMb2NhbGUuZnVsbENhbGVuZGFyICYmIHdpbmRvd1snRnVsbENhbGVuZGFyJ10pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZENhbGVuZGFyTG9jYWxlQnVuZGxlKGxpYkxvY2FsZS5mdWxsQ2FsZW5kYXIpPy50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaWJMb2NhbGUuYW5ndWxhcikge1xuICAgICAgICAgICAgdGhpcy5sb2FkQXBwTG9jYWxlQnVuZGxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZEFuZ3VsYXJMb2NhbGVCdW5kbGUobGliTG9jYWxlLmFuZ3VsYXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUaW1lem9uZShsb2NhbGUsIGNvbXBJbnN0YW5jZT8pIHtcbiAgICAgICAgdGhpcy5sb2FkTW9tZW50VGltZVpvbmVCdW5kbGUobG9jYWxlLCBjb21wSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUaW1lem9uZShjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIGNvbnN0IHBhZ2VDb25maWcgPSBnZXQodGhpcy5hcHAsICdhY3RpdmVQYWdlLmZvcm1hdHNCeUxvY2FsZS50aW1lem9uZScpO1xuICAgICAgICBjb25zdCBjb21wQ29uZmlnID0gZ2V0KGNvbXBJbnN0YW5jZSwgJ2Zvcm1hdHNCeUxvY2FsZS50aW1lem9uZScpO1xuICAgICAgICBpZiAoY29tcENvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBDb25maWc7XG4gICAgICAgIH0gZWxzZSBpZiAocGFnZUNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIHBhZ2VDb25maWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzQnlMb2NhbGVbJ3RpbWV6b25lJ107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0c0J5TG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzQnlMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFNlbGVjdGVkTG9jYWxlKGxvY2FsZSkge1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBldmVudCBpcyBwcm9wYWdhdGVkIGZyb20gdGhlIHNlbGVjdCBvciBhbnkgc3VjaCB3aWRnZXRcbiAgICAgICAgaWYgKGlzT2JqZWN0KGxvY2FsZSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZS5kYXRhdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsaWJMb2NhbGUgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuc3VwcG9ydGVkTGFuZ3VhZ2VzW2xvY2FsZV07XG4gICAgICAgIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IE9iamVjdC5rZXlzKGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXMpO1xuXG4gICAgICAgIGlmICghaW5jbHVkZXMoc3VwcG9ydGVkTG9jYWxlLCBsb2NhbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxvY2FsZSB8fCBsb2NhbGUgPT09IHRoaXMuc2VsZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnLCBsb2NhbGUpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbGUgPSBsb2NhbGU7XG5cbiAgICAgICAgLy8gcmVzZXQgdGhlIGxvY2FsZURhdGEgb2JqZWN0XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuYXBwID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFuZ3VsYXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubGliTG9jYWxlID0gbGliTG9jYWxlO1xuXG4gICAgICAgIC8vIGxvYWQgdGhlIGxvY2FsZSBidW5kbGVzIG9mIHRoZSBzZWxlY3RlZCBsb2NhbGVcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZUJ1bmRsZXMobGliTG9jYWxlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxlRGlyZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hbmd1bGFyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZHVjZUFwcExvY2FsZSgpIHtcbiAgICAgICAgLy8gY29tcHV0YXRpb24gdG8gZmluZCBhcHAgZGVmYXVsdCBsb2NhbGVcbiAgICAgICAgY29uc3QgX2FjY2VwdExhbmcgPSB0aGlzLmdldEFjY2VwdGVkTGFuZ3VhZ2VzKCk7XG4gICAgICAgIGNvbnN0IF9kZWZhdWx0TGFuZ3VhZ2UgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuZGVmYXVsdExhbmd1YWdlO1xuICAgICAgICBfYWNjZXB0TGFuZy5wdXNoKF9kZWZhdWx0TGFuZ3VhZ2UpO1xuXG4gICAgICAgIC8vIGNoZWNrcyB3aGV0aGVyIHVzZXIgcHJlZmVyZW5jZSBpcyBiYXNlZCBvbiBicm93c2VyIHNldCBsYW5ndWFnZXMgb3IgZGVmYXVsdCBsYW5ndWFnZSBzZXQgaW4gcHJvamVjdFxuICAgICAgICBsZXQgcHJlZmVyQnJvd3NlckxhbmcgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkucHJlZmVyQnJvd3Nlckxhbmc7XG4gICAgICAgIGlmICghcHJlZmVyQnJvd3NlckxhbmcpIHsgLy8gd2hlbiBwcmVmZXJCcm93c2VyTGFuZyBpcyBub3QgZGVmaW5lZCwgc2V0IHRvIGl0cyBkZWZhdWx0IHZhbHVlXG4gICAgICAgICAgICBwcmVmZXJCcm93c2VyTGFuZyAgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgeyAvLyBjb252ZXJ0IHN0cmluZ2lmaWVkIGJvb2xlYW4gdmFsdWVzIHJlY2lldmVkIGZyb20gQkUgdG8gYm9vbGVhbnNcbiAgICAgICAgICAgIHByZWZlckJyb3dzZXJMYW5nPSAocHJlZmVyQnJvd3NlckxhbmcgPT09ICd0cnVlJyB8fCBwcmVmZXJCcm93c2VyTGFuZyA9PT0gdHJ1ZSkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgX3N1cHBvcnRlZExhbmcgPSBPYmplY3Qua2V5cyhnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuc3VwcG9ydGVkTGFuZ3VhZ2VzKSB8fCBbdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlXTtcblxuICAgICAgICAvLyB3aGVuIHByZWZlcmVuY2UgaXMgZ2l2ZW4gdG8gYnJvd3NlciBzZXQgbGFuZ3VhZ2VzLCBkbyBub3QgcG9wdWxhdGUgX3NlbGVjdGVkRGVmYXVsdExhbmcgdmFyaWFibGVcbiAgICAgICAgbGV0IF9zZWxlY3RlZERlZmF1bHRMYW5nID0gcHJlZmVyQnJvd3NlckxhbmcgPyB1bmRlZmluZWQgOiBfZGVmYXVsdExhbmd1YWdlO1xuXG4gICAgICAgIGxldCBfYXBwU3VwcG9ydGVkTGFuZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGZvciBjb3Jkb3ZhLCBjaGVjayBmb3IgbGFuZ3VhZ2UgaWdub3JpbmcgdGhlIGxvY2FsZVxuICAgICAgICAgKiBBcyB0aGUgbmF2aWdhdG9yLmxhbmd1YWdlcyBhbHdheXMgcmV0dXJucyB0aGUgbGFuZ3VhZ2Ugd2l0aCBsb2NhbGUgKGVuLXVzKVxuICAgICAgICAgKiBUaGUgc3VwcG9ydGVkTGFuZ3VhZ2VzIGZyb20gQkUgZG9lc24ndCBpbmNsdWRlIGxvY2FsZSAoZW4pIHdoaWNoIGxlYWRzIHRvIG1pc21hdGNoXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoQ09OU1RBTlRTLmhhc0NvcmRvdmEpIHtcbiAgICAgICAgICAgIGxldCBzdXBwb3J0ZWRMYW5nID0gW107XG4gICAgICAgICAgICBmb3JFYWNoKF9hY2NlcHRMYW5nLCBmdW5jdGlvbiAobGFuZykge1xuICAgICAgICAgICAgICAgIGxldCBtYXRjaGVkTGFuZyA9IGZpbmQoX3N1cHBvcnRlZExhbmcsICh2YWwpID0+IGxhbmcgPT09IHZhbCkgfHwgZmluZChfc3VwcG9ydGVkTGFuZywgKHZhbCkgPT4gbGFuZy5zdGFydHNXaXRoKHZhbCkpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkTGFuZykge1xuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5nLnB1c2gobWF0Y2hlZExhbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgX2FwcFN1cHBvcnRlZExhbmcgPSBzdXBwb3J0ZWRMYW5nWzBdO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIGZvciB0aGUgc2Vzc2lvbiBzdG9yYWdlIHRvIGxvYWQgYW55IHByZS1yZXF1ZXN0ZWQgbG9jYWxlXG4gICAgICAgIGNvbnN0IF9kZWZhdWx0TGFuZyA9IGdldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnKSB8fCBfc2VsZWN0ZWREZWZhdWx0TGFuZyB8fCBfYXBwU3VwcG9ydGVkTGFuZyB8fCBpbnRlcnNlY3Rpb24oX2FjY2VwdExhbmcsIF9zdXBwb3J0ZWRMYW5nKVswXSB8fCB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGU7XG4gICAgICAgIC8vIGlmIHRoZSBzdXBwb3J0ZWRMb2NhbGUgaXMgbm90IGF2YWlsYWJsZSBzZXQgaXQgdG8gZGVmYXVsdExvY2FsZVxuICAgICAgICBfc3VwcG9ydGVkTGFuZyA9IF9zdXBwb3J0ZWRMYW5nIHx8IFtfZGVmYXVsdExhbmddO1xuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IF9kZWZhdWx0TGFuZyB8fCBfc3VwcG9ydGVkTGFuZ1swXTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZERlZmF1bHRMb2NhbGUoKSB7XG4gICAgICAgIERhdGUucHJvdG90eXBlW1wibW9udGhcIl0gPSBEYXRlLnByb3RvdHlwZS5nZXRNb250aDtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5kZWR1Y2VBcHBMb2NhbGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0U2VsZWN0ZWRMb2NhbGUobG9jYWxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TG9jYWxpemVkTWVzc2FnZShtZXNzYWdlLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlKHRoaXMuYXBwTG9jYWxlW21lc3NhZ2VdLCBhcmdzKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFjY2VwdGVkIGxhbmd1YWdlcyBsaXN0XG4gICAgcHVibGljIGdldEFjY2VwdGVkTGFuZ3VhZ2VzKCkge1xuICAgICAgICBsZXQgbGFuZ3VhZ2VzO1xuICAgICAgICBpZiAoQ09OU1RBTlRTLmhhc0NvcmRvdmEpIHtcbiAgICAgICAgICAgIGxhbmd1YWdlcyA9IG5hdmlnYXRvci5sYW5ndWFnZXMgfHwgW25hdmlnYXRvci5sYW5ndWFnZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYW5ndWFnZXMgPSBkZWNvZGVVUklDb21wb25lbnQoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnByZWZlcnJlZExhbmd1YWdlIHx8ICcnKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWNjZXB0LUxhbmd1YWdlIEhlYWRlciB3aWxsIGNvbnRhaW4gc2V0IG9mIHN1cHBvcnRlZCBsb2NhbGUsIHNvIHRyeSBzcGxpdHRpbmcgdGhlIHN0cmluZyB0byBwcm9wZXIgbG9jYWxlIHNldFxuICAgICAgICAgICAgICogRXg6IGVuLGVuLVVTO3E9MC45LGRlO3E9MC42LGFyO3E9MC4yLGhpXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogU3BsaXQgdGhlIGFib3ZlIGludG8gW2VuLGVuLXVzLGRlLGFyLGhpXVxuICAgICAgICAgICAgICogQHR5cGUge0FycmF5fVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsYW5ndWFnZXMgPSBsYW5ndWFnZXMuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5zcGxpdCgnOycpWzBdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcChsYW5ndWFnZXMsIHRvTG93ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0Q2FsZW5kYXJMb2NhbGUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgIT09ICdlbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRDYWxlbmRhckxvY2FsZUJ1bmRsZSh0aGlzLnNlbGVjdGVkTG9jYWxlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQW5ndWxhckxvY2FsZUxvYWRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0d2lkZ2V0TG9jYWxlKGxvY2FsZSkge1xuICAgICAgICB0aGlzLmZvcm1hdHNCeUxvY2FsZVsnbnVtYmVyJ10gPSBsb2NhbGVbJ251bWJlciddO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXR3aWRnZXRMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUxvY2FsZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmKHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgJiYgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5hcHApIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSggICdsb2NhbGUtY2hhbmdlZCcsIHRoaXMuYnVuZGxlTG9hZGVkLmxpYkxvY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
@@ -3,7 +3,6 @@ export var ComponentType;
3
3
  ComponentType[ComponentType["PAGE"] = 0] = "PAGE";
4
4
  ComponentType[ComponentType["PREFAB"] = 1] = "PREFAB";
5
5
  ComponentType[ComponentType["PARTIAL"] = 2] = "PARTIAL";
6
- ComponentType[ComponentType["WIDGET"] = 3] = "WIDGET";
7
6
  })(ComponentType || (ComponentType = {}));
8
7
  export class ComponentRefProvider {
9
8
  clearComponentFactoryRefCache() { }
@@ -17,4 +16,4 @@ export class AppVariablesProvider {
17
16
  }
18
17
  export class AppExtensionProvider {
19
18
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL3R5cGVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDckIsaURBQUksQ0FBQTtJQUNKLHFEQUFNLENBQUE7SUFDTix1REFBTyxDQUFBO0lBQ1AscURBQU0sQ0FBQTtBQUNWLENBQUMsRUFMVyxhQUFhLEtBQWIsYUFBYSxRQUt4QjtBQUVELE1BQU0sT0FBZ0Isb0JBQW9CO0lBRXRDLDZCQUE2QixLQUFVLENBQUM7SUFBQSxDQUFDO0NBQzVDO0FBRUQsTUFBTSxPQUFnQixvQkFBb0I7Q0FFekM7QUFFRCxNQUFNLE9BQWdCLGFBQWE7Q0FFbEM7QUFFRCxNQUFNLE9BQWdCLG9CQUFvQjtDQUV6QztBQUNELE1BQU0sT0FBZ0Isb0JBQW9CO0NBRXpDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQ29tcG9uZW50VHlwZSB7XG4gICAgUEFHRSxcbiAgICBQUkVGQUIsXG4gICAgUEFSVElBTCxcbiAgICBXSURHRVRcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbXBvbmVudFJlZlByb3ZpZGVyIHtcbiAgICBhYnN0cmFjdCBnZXRDb21wb25lbnRGYWN0b3J5UmVmKGNvbXBvbmVudE5hbWU6IHN0cmluZywgY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZSk6IFByb21pc2U8YW55PjtcbiAgICBjbGVhckNvbXBvbmVudEZhY3RvcnlSZWZDYWNoZSgpOiB2b2lkIHt9O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUHJlZmFiQ29uZmlnUHJvdmlkZXIge1xuICAgIGFic3RyYWN0IGdldENvbmZpZyhwcmVmYWJOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBKU1Byb3ZpZGVyIHtcbiAgICBhYnN0cmFjdCBnZXRBcHBTY3JpcHRGbigpOiBQcm9taXNlPEZ1bmN0aW9uPjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcFZhcmlhYmxlc1Byb3ZpZGVyIHtcbiAgICBhYnN0cmFjdCBnZXRBcHBWYXJpYWJsZXMoKTogUHJvbWlzZTxhbnk+O1xufVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcEV4dGVuc2lvblByb3ZpZGVyIHtcbiAgICBhYnN0cmFjdCAgbG9hZEZvcm1hdHRlckNvbmZpZ1NjcmlwdChjYWxsYmFjazpGdW5jdGlvbik6IHZvaWQ7XG59XG5cbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL3R5cGVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsaURBQUksQ0FBQTtJQUNKLHFEQUFNLENBQUE7SUFDTix1REFBTyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBRUQsTUFBTSxPQUFnQixvQkFBb0I7SUFFdEMsNkJBQTZCLEtBQVUsQ0FBQztJQUFBLENBQUM7Q0FDNUM7QUFFRCxNQUFNLE9BQWdCLG9CQUFvQjtDQUV6QztBQUVELE1BQU0sT0FBZ0IsYUFBYTtDQUVsQztBQUVELE1BQU0sT0FBZ0Isb0JBQW9CO0NBRXpDO0FBQ0QsTUFBTSxPQUFnQixvQkFBb0I7Q0FFekMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDb21wb25lbnRUeXBlIHtcbiAgICBQQUdFLFxuICAgIFBSRUZBQixcbiAgICBQQVJUSUFMXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wb25lbnRSZWZQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0Q29tcG9uZW50RmFjdG9yeVJlZihjb21wb25lbnROYW1lOiBzdHJpbmcsIGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGUpOiBQcm9taXNlPGFueT47XG4gICAgY2xlYXJDb21wb25lbnRGYWN0b3J5UmVmQ2FjaGUoKTogdm9pZCB7fTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByZWZhYkNvbmZpZ1Byb3ZpZGVyIHtcbiAgICBhYnN0cmFjdCBnZXRDb25maWcocHJlZmFiTmFtZTogc3RyaW5nKTogUHJvbWlzZTxhbnk+O1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwSlNQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0QXBwU2NyaXB0Rm4oKTogUHJvbWlzZTxGdW5jdGlvbj47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBWYXJpYWJsZXNQcm92aWRlciB7XG4gICAgYWJzdHJhY3QgZ2V0QXBwVmFyaWFibGVzKCk6IFByb21pc2U8YW55Pjtcbn1cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBFeHRlbnNpb25Qcm92aWRlciB7XG4gICAgYWJzdHJhY3QgIGxvYWRGb3JtYXR0ZXJDb25maWdTY3JpcHQoY2FsbGJhY2s6RnVuY3Rpb24pOiB2b2lkO1xufVxuXG4iXX0=