@valtimo/components 12.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/assets/css/carbon.scss +3 -0
  2. package/assets/css/compatibility.scss +22 -0
  3. package/esm2022/lib/components/breadcrumb-navigation/breadcrumb-navigation.component.mjs +2 -2
  4. package/esm2022/lib/components/breadcrumb-navigation/breadcrumb.service.mjs +11 -2
  5. package/esm2022/lib/components/carbon-list/carbon-list.component.mjs +132 -39
  6. package/esm2022/lib/components/carbon-list/carbon-list.module.mjs +7 -3
  7. package/esm2022/lib/components/carbon-list/no-results/carbon-no-results.component.mjs +37 -5
  8. package/esm2022/lib/components/carbon-list/services/carbon-list-drag-and-drop.service.mjs +165 -0
  9. package/esm2022/lib/components/carbon-list/services/index.mjs +17 -0
  10. package/esm2022/lib/components/date-picker/date-picker.component.mjs +1 -1
  11. package/esm2022/lib/components/form-io/form-io-builder.component.mjs +2 -2
  12. package/esm2022/lib/components/input/input.component.mjs +1 -1
  13. package/esm2022/lib/components/input-label/input-label.component.mjs +6 -3
  14. package/esm2022/lib/components/list/list.module.mjs +22 -4
  15. package/esm2022/lib/components/multi-input/carbon-multi-input.component.mjs +1 -1
  16. package/esm2022/lib/components/multi-input-form/multi-input-form.component.mjs +3 -3
  17. package/esm2022/lib/components/page-header/page-header.component.mjs +2 -2
  18. package/esm2022/lib/components/radio/radio.component.mjs +1 -1
  19. package/esm2022/lib/components/right-sidebar/right-sidebar.component.mjs +92 -75
  20. package/esm2022/lib/components/search-fields/search-fields.component.mjs +23 -13
  21. package/esm2022/lib/components/select/select.component.mjs +1 -1
  22. package/esm2022/lib/components/stepper/stepper-footer-step/stepper-footer-step.component.mjs +4 -4
  23. package/esm2022/lib/components/stepper/stepper.module.mjs +5 -4
  24. package/esm2022/lib/components/tooltip-icon/tooltip-icon.component.mjs +2 -2
  25. package/esm2022/lib/components/view-content/type-converters/booleanTypeConverter.mjs +13 -17
  26. package/esm2022/lib/components/view-content/type-converters/currencyTypeConverter.mjs +37 -0
  27. package/esm2022/lib/components/view-content/type-converters/dateTimeTypeConverter.mjs +31 -0
  28. package/esm2022/lib/components/view-content/type-converters/dateTypeConverter.mjs +5 -3
  29. package/esm2022/lib/components/view-content/type-converters/enumTypeConverter.mjs +2 -2
  30. package/esm2022/lib/components/view-content/type-converters/numberTypeConverter.mjs +37 -0
  31. package/esm2022/lib/components/view-content/type-converters/percentTypeConverter.mjs +37 -0
  32. package/esm2022/lib/components/view-content/type-converters/relatedFilesTypeConverter.mjs +1 -1
  33. package/esm2022/lib/components/view-content/type-converters/stringReplaceUnderscoreTypeConverter.mjs +1 -1
  34. package/esm2022/lib/components/view-content/type-converters/stringTypeConverter.mjs +1 -1
  35. package/esm2022/lib/components/view-content/type-converters/type-converters.model.mjs +60 -17
  36. package/esm2022/lib/components/view-content/view-content.module.mjs +33 -0
  37. package/esm2022/lib/components/view-content/view-content.service.mjs +11 -22
  38. package/esm2022/lib/components/widget/widget.component.mjs +2 -2
  39. package/esm2022/lib/constants/carbon.constants.mjs +2 -1
  40. package/esm2022/lib/directives/fit-page/fit-page.directive.mjs +2 -2
  41. package/esm2022/lib/models/carbon-list.model.mjs +5 -2
  42. package/esm2022/lib/models/carbon-tag.model.mjs +2 -2
  43. package/esm2022/lib/models/modal.model.mjs +1 -1
  44. package/esm2022/lib/services/index.mjs +2 -1
  45. package/esm2022/lib/services/key-generator.service.mjs +50 -0
  46. package/esm2022/lib/services/key-state.service.mjs +33 -0
  47. package/fesm2022/valtimo-components.mjs +816 -195
  48. package/fesm2022/valtimo-components.mjs.map +1 -1
  49. package/lib/components/breadcrumb-navigation/breadcrumb.service.d.ts +3 -0
  50. package/lib/components/breadcrumb-navigation/breadcrumb.service.d.ts.map +1 -1
  51. package/lib/components/carbon-list/carbon-list.component.d.ts +28 -9
  52. package/lib/components/carbon-list/carbon-list.component.d.ts.map +1 -1
  53. package/lib/components/carbon-list/carbon-list.module.d.ts +2 -1
  54. package/lib/components/carbon-list/carbon-list.module.d.ts.map +1 -1
  55. package/lib/components/carbon-list/no-results/carbon-no-results.component.d.ts +13 -3
  56. package/lib/components/carbon-list/no-results/carbon-no-results.component.d.ts.map +1 -1
  57. package/lib/components/carbon-list/services/carbon-list-drag-and-drop.service.d.ts +40 -0
  58. package/lib/components/carbon-list/services/carbon-list-drag-and-drop.service.d.ts.map +1 -0
  59. package/lib/components/carbon-list/services/index.d.ts +2 -0
  60. package/lib/components/carbon-list/services/index.d.ts.map +1 -0
  61. package/lib/components/form-io/form-io-builder.component.d.ts.map +1 -1
  62. package/lib/components/input-label/input-label.component.d.ts +2 -1
  63. package/lib/components/input-label/input-label.component.d.ts.map +1 -1
  64. package/lib/components/list/list.module.d.ts +2 -1
  65. package/lib/components/list/list.module.d.ts.map +1 -1
  66. package/lib/components/right-sidebar/right-sidebar.component.d.ts +17 -20
  67. package/lib/components/right-sidebar/right-sidebar.component.d.ts.map +1 -1
  68. package/lib/components/search-fields/search-fields.component.d.ts +4 -4
  69. package/lib/components/search-fields/search-fields.component.d.ts.map +1 -1
  70. package/lib/components/stepper/stepper.module.d.ts +2 -1
  71. package/lib/components/stepper/stepper.module.d.ts.map +1 -1
  72. package/lib/components/view-content/type-converters/booleanTypeConverter.d.ts +6 -0
  73. package/lib/components/view-content/type-converters/booleanTypeConverter.d.ts.map +1 -1
  74. package/lib/components/view-content/type-converters/currencyTypeConverter.d.ts +7 -0
  75. package/lib/components/view-content/type-converters/currencyTypeConverter.d.ts.map +1 -0
  76. package/lib/components/view-content/type-converters/dateTimeTypeConverter.d.ts +6 -0
  77. package/lib/components/view-content/type-converters/dateTimeTypeConverter.d.ts.map +1 -0
  78. package/lib/components/view-content/type-converters/dateTypeConverter.d.ts.map +1 -1
  79. package/lib/components/view-content/type-converters/enumTypeConverter.d.ts.map +1 -1
  80. package/lib/components/view-content/type-converters/numberTypeConverter.d.ts +7 -0
  81. package/lib/components/view-content/type-converters/numberTypeConverter.d.ts.map +1 -0
  82. package/lib/components/view-content/type-converters/percentTypeConverter.d.ts +7 -0
  83. package/lib/components/view-content/type-converters/percentTypeConverter.d.ts.map +1 -0
  84. package/lib/components/view-content/type-converters/relatedFilesTypeConverter.d.ts.map +1 -1
  85. package/lib/components/view-content/type-converters/stringReplaceUnderscoreTypeConverter.d.ts.map +1 -1
  86. package/lib/components/view-content/type-converters/stringTypeConverter.d.ts.map +1 -1
  87. package/lib/components/view-content/type-converters/type-converters.model.d.ts +13 -1
  88. package/lib/components/view-content/type-converters/type-converters.model.d.ts.map +1 -1
  89. package/lib/components/view-content/view-content.module.d.ts +8 -0
  90. package/lib/components/view-content/view-content.module.d.ts.map +1 -0
  91. package/lib/components/view-content/view-content.service.d.ts +1 -5
  92. package/lib/components/view-content/view-content.service.d.ts.map +1 -1
  93. package/lib/constants/carbon.constants.d.ts +1 -0
  94. package/lib/constants/carbon.constants.d.ts.map +1 -1
  95. package/lib/models/carbon-list.model.d.ts +15 -3
  96. package/lib/models/carbon-list.model.d.ts.map +1 -1
  97. package/lib/models/carbon-tag.model.d.ts +2 -0
  98. package/lib/models/carbon-tag.model.d.ts.map +1 -1
  99. package/lib/models/modal.model.d.ts +2 -1
  100. package/lib/models/modal.model.d.ts.map +1 -1
  101. package/lib/services/index.d.ts +1 -0
  102. package/lib/services/index.d.ts.map +1 -1
  103. package/lib/services/key-generator.service.d.ts +8 -0
  104. package/lib/services/key-generator.service.d.ts.map +1 -0
  105. package/lib/services/key-state.service.d.ts +12 -0
  106. package/lib/services/key-state.service.d.ts.map +1 -0
  107. package/package.json +4 -2
@@ -18,6 +18,7 @@
18
18
  @use '@carbon/colors';
19
19
 
20
20
  $lightThemeVariables: (
21
+ 'white': themes.$white,
21
22
  'g10': themes.$g10,
22
23
  );
23
24
 
@@ -117,6 +118,8 @@ $darkThemeOverwriteVariables: (
117
118
  }
118
119
  }
119
120
 
121
+ @import '~node_modules/@carbon/charts-angular/styles.min.css';
122
+
120
123
  /* default Valtimo colors */
121
124
 
122
125
  :root {
@@ -639,6 +639,28 @@ valtimo-dossier-assign-user {
639
639
 
640
640
  /* FormIO */
641
641
 
642
+ valtimo-dossier-widgets-container {
643
+ .formio-widget {
644
+ h4,
645
+ dd,
646
+ dt {
647
+ color: var(--cds-text-primary) !important;
648
+ }
649
+ }
650
+ .formio-component {
651
+ .form-group {
652
+ margin-bottom: 0;
653
+ }
654
+ p {
655
+ color: var(--cds-text-primary);
656
+ }
657
+ input.form-control {
658
+ border: none !important;
659
+ background-color: unset !important;
660
+ }
661
+ }
662
+ }
663
+
642
664
  .card.card-border {
643
665
  border: none;
644
666
  background-color: var(--cds-background);
@@ -45,11 +45,11 @@ export class BreadcrumbNavigationComponent {
45
45
  this._subscriptions.unsubscribe();
46
46
  }
47
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BreadcrumbNavigationComponent, deps: [{ token: i1.BreadcrumbService }, { token: i2.PageHeaderService }, { token: i2.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: BreadcrumbNavigationComponent, selector: "valtimo-breadcrumb-navigation", host: { properties: { "class.valtimo-breadcrumb-navigation--compact": "this.isCompact" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb [items]=\"breadcrumbItems\"></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:1rem;display:flex;width:max-content}.breadcrumbs-container.--compact{margin-bottom:0}.valtimo-breadcrumb-navigation--compact{flex-shrink:0}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.Breadcrumb, selector: "cds-breadcrumb, ibm-breadcrumb", inputs: ["items", "noTrailingSlash", "ariaLabel", "skeleton", "threshold"], outputs: ["navigation"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: BreadcrumbNavigationComponent, selector: "valtimo-breadcrumb-navigation", host: { properties: { "class.valtimo-breadcrumb-navigation--compact": "this.isCompact" } }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb [items]=\"breadcrumbItems\"></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:8px;display:flex;width:max-content}.breadcrumbs-container.--compact{margin-bottom:0}.valtimo-breadcrumb-navigation--compact{flex-shrink:0}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.Breadcrumb, selector: "cds-breadcrumb, ibm-breadcrumb", inputs: ["items", "noTrailingSlash", "ariaLabel", "skeleton", "threshold"], outputs: ["navigation"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BreadcrumbNavigationComponent, decorators: [{
51
51
  type: Component,
52
- args: [{ selector: 'valtimo-breadcrumb-navigation', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb [items]=\"breadcrumbItems\"></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:1rem;display:flex;width:max-content}.breadcrumbs-container.--compact{margin-bottom:0}.valtimo-breadcrumb-navigation--compact{flex-shrink:0}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
52
+ args: [{ selector: 'valtimo-breadcrumb-navigation', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"breadcrumbItems$ | async as breadcrumbItems\">\n <div\n class=\"breadcrumbs-container\"\n *ngIf=\"breadcrumbItems.length > 0\"\n [ngClass]=\"{'--compact': compactMode$ | async}\"\n >\n <cds-breadcrumb [items]=\"breadcrumbItems\"></cds-breadcrumb>\n </div>\n</ng-container>\n", styles: [".breadcrumbs-container{margin-bottom:8px;display:flex;width:max-content}.breadcrumbs-container.--compact{margin-bottom:0}.valtimo-breadcrumb-navigation--compact{flex-shrink:0}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
53
53
  }], ctorParameters: () => [{ type: i1.BreadcrumbService }, { type: i2.PageHeaderService }, { type: i2.PageTitleService }], propDecorators: { isCompact: [{
54
54
  type: HostBinding,
55
55
  args: ['class.valtimo-breadcrumb-navigation--compact']
@@ -34,13 +34,15 @@ export class BreadcrumbService {
34
34
  this.serializer = serializer;
35
35
  this._cachedQueryParams = {};
36
36
  this._manualSecondBreadcrumb$ = new BehaviorSubject(null);
37
+ this._manualThirdBreadcrumb$ = new BehaviorSubject(null);
37
38
  this._breadcrumbItems$ = combineLatest([
38
39
  this.menuService.activeParentSequenceNumber$,
39
40
  this.menuService.menuItems$,
40
41
  this._manualSecondBreadcrumb$,
42
+ this._manualThirdBreadcrumb$,
41
43
  this.translateService.stream('key'),
42
44
  this.router.events.pipe(startWith(this.router)),
43
- ]).pipe(map(([activeParentSequenceNumber, menuItems, manualSecondBreadcrumb]) => {
45
+ ]).pipe(map(([activeParentSequenceNumber, menuItems, manualSecondBreadcrumb, manualThirdBreadcrumb]) => {
44
46
  const activeParentBreadcrumbTitle = menuItems.find(menuItem => `${menuItem.sequence}` === activeParentSequenceNumber)?.title;
45
47
  const activeParentBreadcrumbTitleTranslation = activeParentBreadcrumbTitle && this.translateService.instant(activeParentBreadcrumbTitle);
46
48
  const activeParentBreadcrumbItem = {
@@ -51,6 +53,7 @@ export class BreadcrumbService {
51
53
  ...(activeParentSequenceNumber ? [activeParentBreadcrumbItem] : []),
52
54
  ...(manualSecondBreadcrumb ? [manualSecondBreadcrumb] : []),
53
55
  ...(secondBreadCrumb && !manualSecondBreadcrumb ? [secondBreadCrumb] : []),
56
+ ...(!!manualThirdBreadcrumb ? [manualThirdBreadcrumb] : []),
54
57
  ];
55
58
  }), map(breadCrumbItems => this.matchCachedQueryParams(breadCrumbItems)));
56
59
  }
@@ -60,6 +63,12 @@ export class BreadcrumbService {
60
63
  clearSecondBreadcrumb() {
61
64
  this._manualSecondBreadcrumb$.next(null);
62
65
  }
66
+ setThirdBreadcrumb(breadcrumb) {
67
+ this._manualThirdBreadcrumb$.next(breadcrumb);
68
+ }
69
+ clearThirdBreadcrumb() {
70
+ this._manualThirdBreadcrumb$.next(null);
71
+ }
63
72
  cacheQueryParams(routeMatchString, params) {
64
73
  if (routeMatchString && typeof params === 'object' && Object.keys(params).length > 0) {
65
74
  this._cachedQueryParams = { ...this._cachedQueryParams, [routeMatchString]: params };
@@ -115,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
115
124
  providedIn: 'root',
116
125
  }]
117
126
  }], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ConfigService }, { type: i3.MenuService }, { type: i4.TranslateService }, { type: i1.UrlSerializer }] });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9icmVhZGNydW1iLW5hdmlnYXRpb24vYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFTbkMsTUFBTSxPQUFPLGlCQUFpQjtJQThCNUIsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQ21CLE1BQWMsRUFDZCxLQUFxQixFQUNyQixhQUE0QixFQUM1QixXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsVUFBeUI7UUFMekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQXZDcEMsdUJBQWtCLEdBQXlDLEVBQUUsQ0FBQztRQUNyRCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsSUFBSSxDQUFDLENBQUM7UUFDNUUsc0JBQWlCLEdBQXNDLGFBQWEsQ0FBQztZQUNwRixJQUFJLENBQUMsV0FBVyxDQUFDLDJCQUEyQjtZQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVU7WUFDM0IsSUFBSSxDQUFDLHdCQUF3QjtZQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNoRCxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixDQUFDLEVBQUUsRUFBRTtZQUN0RSxNQUFNLDJCQUEyQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQ2hELFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssMEJBQTBCLENBQ2xFLEVBQUUsS0FBSyxDQUFDO1lBQ1QsTUFBTSxzQ0FBc0MsR0FDMUMsMkJBQTJCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBQzVGLE1BQU0sMEJBQTBCLEdBQUc7Z0JBQ2pDLE9BQU8sRUFBRSxzQ0FBc0M7YUFDaEQsQ0FBQztZQUNGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFFcEQsT0FBTztnQkFDTCxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNuRSxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzRCxHQUFHLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDM0UsQ0FBQztRQUNKLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUNyRSxDQUFDO0lBYUMsQ0FBQztJQUVKLG1CQUFtQixDQUFDLFVBQTBCO1FBQzVDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxnQkFBd0IsRUFBRSxNQUFjO1FBQ3ZELElBQUksZ0JBQWdCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEVBQUMsQ0FBQztRQUNyRixDQUFDO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUM1QixNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNyRSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9ELElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxJQUFJO2dCQUN0RixFQUFFLEtBQUssQ0FBQztZQUVWLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixPQUFPO29CQUNMLEtBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQztvQkFDcEIsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO29CQUMvQyxJQUFJLEVBQUUsR0FBRyxXQUFXLEVBQUU7aUJBQ3ZCLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLHNCQUFzQixDQUFDLGVBQXNDO1FBQ25FLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztRQUU1QixNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3ZELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FDckYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUM3QyxDQUNGLENBQUM7WUFDRixNQUFNLFlBQVksR0FBRyxjQUFjLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRS9FLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBQyxXQUFXLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQztnQkFDMUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RELGVBQWUsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBQyxHQUFHLGNBQWMsRUFBRSxXQUFXLEVBQUUsRUFBQyxXQUFXLEVBQUUsWUFBWSxFQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBQyxDQUFDO1lBQzVGLENBQUM7WUFFRCxPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFdBQW1CO1FBQzVDLE9BQU8sV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELENBQUM7OEdBL0dVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIHN0YXJ0V2l0aH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0JyZWFkY3J1bWJJdGVtfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciwgVXJsU2VyaWFsaXplcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7TWVudVNlcnZpY2V9IGZyb20gJy4uL21lbnUvbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iU2VydmljZSB7XG4gIHByaXZhdGUgX2NhY2hlZFF1ZXJ5UGFyYW1zOiB7W3JvdXRlTWF0Y2hTdHJpbmc6IHN0cmluZ106IFBhcmFtc30gPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFudWFsU2Vjb25kQnJlYWRjcnVtYiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJyZWFkY3J1bWJJdGVtIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JyZWFkY3J1bWJJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8QnJlYWRjcnVtYkl0ZW0+PiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubWVudVNlcnZpY2UuYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIkLFxuICAgIHRoaXMubWVudVNlcnZpY2UubWVudUl0ZW1zJCxcbiAgICB0aGlzLl9tYW51YWxTZWNvbmRCcmVhZGNydW1iJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShzdGFydFdpdGgodGhpcy5yb3V0ZXIpKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFthY3RpdmVQYXJlbnRTZXF1ZW5jZU51bWJlciwgbWVudUl0ZW1zLCBtYW51YWxTZWNvbmRCcmVhZGNydW1iXSkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZlUGFyZW50QnJlYWRjcnVtYlRpdGxlID0gbWVudUl0ZW1zLmZpbmQoXG4gICAgICAgIG1lbnVJdGVtID0+IGAke21lbnVJdGVtLnNlcXVlbmNlfWAgPT09IGFjdGl2ZVBhcmVudFNlcXVlbmNlTnVtYmVyXG4gICAgICApPy50aXRsZTtcbiAgICAgIGNvbnN0IGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZVRyYW5zbGF0aW9uID1cbiAgICAgICAgYWN0aXZlUGFyZW50QnJlYWRjcnVtYlRpdGxlICYmIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZSk7XG4gICAgICBjb25zdCBhY3RpdmVQYXJlbnRCcmVhZGNydW1iSXRlbSA9IHtcbiAgICAgICAgY29udGVudDogYWN0aXZlUGFyZW50QnJlYWRjcnVtYlRpdGxlVHJhbnNsYXRpb24sXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2Vjb25kQnJlYWRDcnVtYiA9IHRoaXMuZ2V0U2Vjb25kQnJlYWRjcnVtYigpO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi4oYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIgPyBbYWN0aXZlUGFyZW50QnJlYWRjcnVtYkl0ZW1dIDogW10pLFxuICAgICAgICAuLi4obWFudWFsU2Vjb25kQnJlYWRjcnVtYiA/IFttYW51YWxTZWNvbmRCcmVhZGNydW1iXSA6IFtdKSxcbiAgICAgICAgLi4uKHNlY29uZEJyZWFkQ3J1bWIgJiYgIW1hbnVhbFNlY29uZEJyZWFkY3J1bWIgPyBbc2Vjb25kQnJlYWRDcnVtYl0gOiBbXSksXG4gICAgICBdO1xuICAgIH0pLFxuICAgIG1hcChicmVhZENydW1iSXRlbXMgPT4gdGhpcy5tYXRjaENhY2hlZFF1ZXJ5UGFyYW1zKGJyZWFkQ3J1bWJJdGVtcykpXG4gICk7XG5cbiAgZ2V0IGJyZWFkY3J1bWJJdGVtcyQoKTogT2JzZXJ2YWJsZTxBcnJheTxCcmVhZGNydW1iSXRlbT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYkl0ZW1zJDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcmlhbGl6ZXI6IFVybFNlcmlhbGl6ZXJcbiAgKSB7fVxuXG4gIHNldFNlY29uZEJyZWFkY3J1bWIoYnJlYWRjcnVtYjogQnJlYWRjcnVtYkl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLl9tYW51YWxTZWNvbmRCcmVhZGNydW1iJC5uZXh0KGJyZWFkY3J1bWIpO1xuICB9XG5cbiAgY2xlYXJTZWNvbmRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgIHRoaXMuX21hbnVhbFNlY29uZEJyZWFkY3J1bWIkLm5leHQobnVsbCk7XG4gIH1cblxuICBjYWNoZVF1ZXJ5UGFyYW1zKHJvdXRlTWF0Y2hTdHJpbmc6IHN0cmluZywgcGFyYW1zOiBQYXJhbXMpOiB2b2lkIHtcbiAgICBpZiAocm91dGVNYXRjaFN0cmluZyAmJiB0eXBlb2YgcGFyYW1zID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zID0gey4uLnRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zLCBbcm91dGVNYXRjaFN0cmluZ106IHBhcmFtc307XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWNvbmRCcmVhZGNydW1iKCk6IEJyZWFkY3J1bWJJdGVtIHwgZmFsc2Uge1xuICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICBjb25zdCB1cmxXaXRob3V0UGFyYW1zID0gdXJsLmluY2x1ZGVzKCc/JykgPyB1cmwuc3BsaXQoJz8nKVswXSA6IHVybDtcbiAgICBjb25zdCBzcGxpdFVybCA9IHVybFdpdGhvdXRQYXJhbXMuc3BsaXQoJy8nKTtcbiAgICBjb25zdCBmaWx0ZXJlZFNwbGl0VXJsID0gc3BsaXRVcmwuZmlsdGVyKHVybFBhcnQgPT4gISF1cmxQYXJ0KTtcblxuICAgIGlmIChmaWx0ZXJlZFNwbGl0VXJsLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IHJvdXRlID0gZmlsdGVyZWRTcGxpdFVybFswXTtcbiAgICAgIGNvbnN0IHJvdXRlU3RyaW5nID0gYC8ke3JvdXRlfWA7XG4gICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5yb3V0ZXIuY29uZmlnLmZpbmQocm91dGVDb25maWcgPT4gcm91dGVDb25maWcucGF0aCA9PT0gcm91dGUpPy5kYXRhXG4gICAgICAgID8udGl0bGU7XG5cbiAgICAgIGlmIChyb3V0ZSAmJiBjb250ZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm91dGU6IFtyb3V0ZVN0cmluZ10sXG4gICAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoY29udGVudCksXG4gICAgICAgICAgaHJlZjogYCR7cm91dGVTdHJpbmd9YCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG1hdGNoQ2FjaGVkUXVlcnlQYXJhbXMoYnJlYWRjcnVtYkl0ZW1zOiBBcnJheTxCcmVhZGNydW1iSXRlbT4pOiBBcnJheTxCcmVhZGNydW1iSXRlbT4ge1xuICAgIGxldCBoYXNDYWNoZWRQYXJhbXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gYnJlYWRjcnVtYkl0ZW1zLm1hcChicmVhZENydW1iSXRlbSA9PiB7XG4gICAgICBjb25zdCBjYWNoZWRQYXJhbUtleSA9IE9iamVjdC5rZXlzKHRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zKS5maW5kKGNhY2hlZFF1ZXJ5UGFyYW1LZXkgPT5cbiAgICAgICAgdGhpcy5yb3V0ZVN0cmluZ1RvUGxhaW4oYnJlYWRDcnVtYkl0ZW0uaHJlZikuaW5jbHVkZXMoXG4gICAgICAgICAgdGhpcy5yb3V0ZVN0cmluZ1RvUGxhaW4oY2FjaGVkUXVlcnlQYXJhbUtleSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNhY2hlZFBhcmFtcyA9IGNhY2hlZFBhcmFtS2V5ICYmIHRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zW2NhY2hlZFBhcmFtS2V5XTtcblxuICAgICAgaWYgKGNhY2hlZFBhcmFtcykge1xuICAgICAgICBjb25zdCB0cmVlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShicmVhZENydW1iSXRlbS5yb3V0ZSwge3F1ZXJ5UGFyYW1zOiBjYWNoZWRQYXJhbXN9KTtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZFVybCA9IHRoaXMuc2VyaWFsaXplci5zZXJpYWxpemUodHJlZSk7XG4gICAgICAgIGhhc0NhY2hlZFBhcmFtcyA9IHRydWU7XG4gICAgICAgIHJldHVybiB7Li4uYnJlYWRDcnVtYkl0ZW0sIHJvdXRlRXh0cmFzOiB7cXVlcnlQYXJhbXM6IGNhY2hlZFBhcmFtc30sIGhyZWY6IHNlcmlhbGl6ZWRVcmx9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYnJlYWRDcnVtYkl0ZW07XG4gICAgfSk7XG5cbiAgICBpZiAoaGFzQ2FjaGVkUGFyYW1zKSB7XG4gICAgICB0aGlzLl9jYWNoZWRRdWVyeVBhcmFtcyA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBtYXBwZWRJdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgcm91dGVTdHJpbmdUb1BsYWluKHJvdXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiByb3V0ZVN0cmluZz8ucmVwbGFjZSgnLycsICcnKS50b0xvd2VyQ2FzZSgpIHx8ICcnO1xuICB9XG59XG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9icmVhZGNydW1iLW5hdmlnYXRpb24vYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFTbkMsTUFBTSxPQUFPLGlCQUFpQjtJQW1DNUIsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQ21CLE1BQWMsRUFDZCxLQUFxQixFQUNyQixhQUE0QixFQUM1QixXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsVUFBeUI7UUFMekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQTVDcEMsdUJBQWtCLEdBQXlDLEVBQUUsQ0FBQztRQUNyRCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsSUFBSSxDQUFDLENBQUM7UUFDNUUsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFDO1FBQzNFLHNCQUFpQixHQUFzQyxhQUFhLENBQUM7WUFDcEYsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkI7WUFD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LFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRofSBmcm9tICdyeGpzJztcbmltcG9ydCB7QnJlYWRjcnVtYkl0ZW19IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUm91dGVyLCBVcmxTZXJpYWxpemVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtNZW51U2VydmljZX0gZnJvbSAnLi4vbWVudS9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfY2FjaGVkUXVlcnlQYXJhbXM6IHtbcm91dGVNYXRjaFN0cmluZzogc3RyaW5nXTogUGFyYW1zfSA9IHt9O1xuICBwcml2YXRlIHJlYWRvbmx5IF9tYW51YWxTZWNvbmRCcmVhZGNydW1iJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJlYWRjcnVtYkl0ZW0gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFudWFsVGhpcmRCcmVhZGNydW1iJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJlYWRjcnVtYkl0ZW0gfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYnJlYWRjcnVtYkl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxCcmVhZGNydW1iSXRlbT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5tZW51U2VydmljZS5hY3RpdmVQYXJlbnRTZXF1ZW5jZU51bWJlciQsXG4gICAgdGhpcy5tZW51U2VydmljZS5tZW51SXRlbXMkLFxuICAgIHRoaXMuX21hbnVhbFNlY29uZEJyZWFkY3J1bWIkLFxuICAgIHRoaXMuX21hbnVhbFRoaXJkQnJlYWRjcnVtYiQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoc3RhcnRXaXRoKHRoaXMucm91dGVyKSksXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFthY3RpdmVQYXJlbnRTZXF1ZW5jZU51bWJlciwgbWVudUl0ZW1zLCBtYW51YWxTZWNvbmRCcmVhZGNydW1iLCBtYW51YWxUaGlyZEJyZWFkY3J1bWJdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZSA9IG1lbnVJdGVtcy5maW5kKFxuICAgICAgICAgIG1lbnVJdGVtID0+IGAke21lbnVJdGVtLnNlcXVlbmNlfWAgPT09IGFjdGl2ZVBhcmVudFNlcXVlbmNlTnVtYmVyXG4gICAgICAgICk/LnRpdGxlO1xuICAgICAgICBjb25zdCBhY3RpdmVQYXJlbnRCcmVhZGNydW1iVGl0bGVUcmFuc2xhdGlvbiA9XG4gICAgICAgICAgYWN0aXZlUGFyZW50QnJlYWRjcnVtYlRpdGxlICYmIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZSk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJJdGVtID0ge1xuICAgICAgICAgIGNvbnRlbnQ6IGFjdGl2ZVBhcmVudEJyZWFkY3J1bWJUaXRsZVRyYW5zbGF0aW9uLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzZWNvbmRCcmVhZENydW1iID0gdGhpcy5nZXRTZWNvbmRCcmVhZGNydW1iKCk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi4oYWN0aXZlUGFyZW50U2VxdWVuY2VOdW1iZXIgPyBbYWN0aXZlUGFyZW50QnJlYWRjcnVtYkl0ZW1dIDogW10pLFxuICAgICAgICAgIC4uLihtYW51YWxTZWNvbmRCcmVhZGNydW1iID8gW21hbnVhbFNlY29uZEJyZWFkY3J1bWJdIDogW10pLFxuICAgICAgICAgIC4uLihzZWNvbmRCcmVhZENydW1iICYmICFtYW51YWxTZWNvbmRCcmVhZGNydW1iID8gW3NlY29uZEJyZWFkQ3J1bWJdIDogW10pLFxuICAgICAgICAgIC4uLighIW1hbnVhbFRoaXJkQnJlYWRjcnVtYiA/IFttYW51YWxUaGlyZEJyZWFkY3J1bWJdIDogW10pLFxuICAgICAgICBdO1xuICAgICAgfVxuICAgICksXG4gICAgbWFwKGJyZWFkQ3J1bWJJdGVtcyA9PiB0aGlzLm1hdGNoQ2FjaGVkUXVlcnlQYXJhbXMoYnJlYWRDcnVtYkl0ZW1zKSlcbiAgKTtcblxuICBnZXQgYnJlYWRjcnVtYkl0ZW1zJCgpOiBPYnNlcnZhYmxlPEFycmF5PEJyZWFkY3J1bWJJdGVtPj4ge1xuICAgIHJldHVybiB0aGlzLl9icmVhZGNydW1iSXRlbXMkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VyaWFsaXplcjogVXJsU2VyaWFsaXplclxuICApIHt9XG5cbiAgc2V0U2Vjb25kQnJlYWRjcnVtYihicmVhZGNydW1iOiBCcmVhZGNydW1iSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuX21hbnVhbFNlY29uZEJyZWFkY3J1bWIkLm5leHQoYnJlYWRjcnVtYik7XG4gIH1cblxuICBjbGVhclNlY29uZEJyZWFkY3J1bWIoKTogdm9pZCB7XG4gICAgdGhpcy5fbWFudWFsU2Vjb25kQnJlYWRjcnVtYiQubmV4dChudWxsKTtcbiAgfVxuXG4gIHNldFRoaXJkQnJlYWRjcnVtYihicmVhZGNydW1iOiBCcmVhZGNydW1iSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuX21hbnVhbFRoaXJkQnJlYWRjcnVtYiQubmV4dChicmVhZGNydW1iKTtcbiAgfVxuXG4gIGNsZWFyVGhpcmRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgIHRoaXMuX21hbnVhbFRoaXJkQnJlYWRjcnVtYiQubmV4dChudWxsKTtcbiAgfVxuXG4gIGNhY2hlUXVlcnlQYXJhbXMocm91dGVNYXRjaFN0cmluZzogc3RyaW5nLCBwYXJhbXM6IFBhcmFtcyk6IHZvaWQge1xuICAgIGlmIChyb3V0ZU1hdGNoU3RyaW5nICYmIHR5cGVvZiBwYXJhbXMgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fY2FjaGVkUXVlcnlQYXJhbXMgPSB7Li4udGhpcy5fY2FjaGVkUXVlcnlQYXJhbXMsIFtyb3V0ZU1hdGNoU3RyaW5nXTogcGFyYW1zfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNlY29uZEJyZWFkY3J1bWIoKTogQnJlYWRjcnVtYkl0ZW0gfCBmYWxzZSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIGNvbnN0IHVybFdpdGhvdXRQYXJhbXMgPSB1cmwuaW5jbHVkZXMoJz8nKSA/IHVybC5zcGxpdCgnPycpWzBdIDogdXJsO1xuICAgIGNvbnN0IHNwbGl0VXJsID0gdXJsV2l0aG91dFBhcmFtcy5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGZpbHRlcmVkU3BsaXRVcmwgPSBzcGxpdFVybC5maWx0ZXIodXJsUGFydCA9PiAhIXVybFBhcnQpO1xuXG4gICAgaWYgKGZpbHRlcmVkU3BsaXRVcmwubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3Qgcm91dGUgPSBmaWx0ZXJlZFNwbGl0VXJsWzBdO1xuICAgICAgY29uc3Qgcm91dGVTdHJpbmcgPSBgLyR7cm91dGV9YDtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnJvdXRlci5jb25maWcuZmluZChyb3V0ZUNvbmZpZyA9PiByb3V0ZUNvbmZpZy5wYXRoID09PSByb3V0ZSk/LmRhdGFcbiAgICAgICAgPy50aXRsZTtcblxuICAgICAgaWYgKHJvdXRlICYmIGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByb3V0ZTogW3JvdXRlU3RyaW5nXSxcbiAgICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChjb250ZW50KSxcbiAgICAgICAgICBocmVmOiBgJHtyb3V0ZVN0cmluZ31gLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hDYWNoZWRRdWVyeVBhcmFtcyhicmVhZGNydW1iSXRlbXM6IEFycmF5PEJyZWFkY3J1bWJJdGVtPik6IEFycmF5PEJyZWFkY3J1bWJJdGVtPiB7XG4gICAgbGV0IGhhc0NhY2hlZFBhcmFtcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWFwcGVkSXRlbXMgPSBicmVhZGNydW1iSXRlbXMubWFwKGJyZWFkQ3J1bWJJdGVtID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlZFBhcmFtS2V5ID0gT2JqZWN0LmtleXModGhpcy5fY2FjaGVkUXVlcnlQYXJhbXMpLmZpbmQoY2FjaGVkUXVlcnlQYXJhbUtleSA9PlxuICAgICAgICB0aGlzLnJvdXRlU3RyaW5nVG9QbGFpbihicmVhZENydW1iSXRlbS5ocmVmKS5pbmNsdWRlcyhcbiAgICAgICAgICB0aGlzLnJvdXRlU3RyaW5nVG9QbGFpbihjYWNoZWRRdWVyeVBhcmFtS2V5KVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgY29uc3QgY2FjaGVkUGFyYW1zID0gY2FjaGVkUGFyYW1LZXkgJiYgdGhpcy5fY2FjaGVkUXVlcnlQYXJhbXNbY2FjaGVkUGFyYW1LZXldO1xuXG4gICAgICBpZiAoY2FjaGVkUGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHRyZWUgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKGJyZWFkQ3J1bWJJdGVtLnJvdXRlLCB7cXVlcnlQYXJhbXM6IGNhY2hlZFBhcmFtc30pO1xuICAgICAgICBjb25zdCBzZXJpYWxpemVkVXJsID0gdGhpcy5zZXJpYWxpemVyLnNlcmlhbGl6ZSh0cmVlKTtcbiAgICAgICAgaGFzQ2FjaGVkUGFyYW1zID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHsuLi5icmVhZENydW1iSXRlbSwgcm91dGVFeHRyYXM6IHtxdWVyeVBhcmFtczogY2FjaGVkUGFyYW1zfSwgaHJlZjogc2VyaWFsaXplZFVybH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBicmVhZENydW1iSXRlbTtcbiAgICB9KTtcblxuICAgIGlmIChoYXNDYWNoZWRQYXJhbXMpIHtcbiAgICAgIHRoaXMuX2NhY2hlZFF1ZXJ5UGFyYW1zID0ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBlZEl0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSByb3V0ZVN0cmluZ1RvUGxhaW4ocm91dGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJvdXRlU3RyaW5nPy5yZXBsYWNlKCcvJywgJycpLnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gIH1cbn1cbiJdfQ==