aril 2.0.1-dev.3 → 2.0.1-dev.5

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 (199) hide show
  1. package/boot/bridge/src/mfe-bridge.d.ts +33 -0
  2. package/boot/config/apps/src/interfaces.d.ts +7 -1
  3. package/boot/config/apps/src/route-close.service.d.ts +8 -3
  4. package/boot/config/apps/src/route-permissions.d.ts +2 -2
  5. package/esm2022/boot/bridge/src/mfe-bridge.mjs +18 -1
  6. package/esm2022/boot/config/api/src/interfaces.mjs +3 -2
  7. package/esm2022/boot/config/apps/src/apps.service.mjs +2 -2
  8. package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +4 -4
  9. package/esm2022/boot/config/apps/src/interfaces.mjs +2 -1
  10. package/esm2022/boot/config/apps/src/route-close.service.mjs +11 -4
  11. package/esm2022/boot/config/apps/src/route-permissions.mjs +24 -6
  12. package/esm2022/boot/config/plugins/src/plugins.service.mjs +7 -5
  13. package/esm2022/boot/host/src/bootstrap.mjs +5 -3
  14. package/esm2022/boot/mfe/src/bootstrap.mjs +15 -3
  15. package/esm2022/http/index.mjs +1 -2
  16. package/esm2022/http/src/serviceBase.mjs +4 -4
  17. package/esm2022/http/src/serviceStateMethods.mjs +9 -1
  18. package/esm2022/keycloak/src/auth.interceptor.mjs +5 -2
  19. package/esm2022/selection/aril-selection.mjs +5 -0
  20. package/esm2022/selection/index.mjs +2 -0
  21. package/esm2022/selection/src/interfaces.mjs +2 -0
  22. package/esm2022/selection/src/selection-group.service.mjs +195 -0
  23. package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +2 -2
  24. package/esm2022/theme/layout/index.mjs +4 -2
  25. package/esm2022/theme/layout/service/breadcrumb-publisher.service.mjs +12 -4
  26. package/esm2022/theme/layout/service/interfaces/interfaces.mjs +1 -1
  27. package/esm2022/ui/button/index.mjs +1 -2
  28. package/esm2022/ui/button/src/button.component.mjs +5 -2
  29. package/esm2022/ui/charts/index.mjs +1 -11
  30. package/esm2022/ui/lib/index.mjs +1 -4
  31. package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +9 -5
  32. package/esm2022/ui/multiSelect/src/multi-select.component.mjs +25 -25
  33. package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +2 -2
  34. package/esm2022/ui/selectBox/src/select-box.component.mjs +11 -34
  35. package/esm2022/ui/table/src/table.component.mjs +10 -5
  36. package/esm2022/ui/value/src/value.component.mjs +3 -2
  37. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +14 -6
  38. package/esm2022/util/activity/aril-util-activity.mjs +5 -0
  39. package/esm2022/util/activity/index.mjs +4 -0
  40. package/esm2022/util/activity/src/activity.constants.mjs +4 -0
  41. package/esm2022/util/activity/src/activity.service.mjs +218 -0
  42. package/esm2022/util/activity/src/activity.types.mjs +2 -0
  43. package/esm2022/util/block/src/block.mjs +9 -25
  44. package/esm2022/util/pub-sub/src/pub-sub.service.mjs +10 -5
  45. package/fesm2022/{aril-app.component-s14ruALV.mjs → aril-app.component-MjG_tPEe.mjs} +2 -1
  46. package/fesm2022/{aril-app.component-s14ruALV.mjs.map → aril-app.component-MjG_tPEe.mjs.map} +1 -1
  47. package/fesm2022/aril-boot-bridge.mjs +17 -0
  48. package/fesm2022/aril-boot-bridge.mjs.map +1 -1
  49. package/fesm2022/aril-boot-config-api.mjs +2 -1
  50. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  51. package/fesm2022/aril-boot-config-apps.mjs +36 -12
  52. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  53. package/fesm2022/aril-boot-config-plugins.mjs +6 -4
  54. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  55. package/fesm2022/aril-boot-host.mjs +4 -2
  56. package/fesm2022/aril-boot-host.mjs.map +1 -1
  57. package/fesm2022/{aril-boot-mfe-app.component-AS4MzEo2.mjs → aril-boot-mfe-app.component-DtspQ3J8.mjs} +3 -2
  58. package/fesm2022/{aril-boot-mfe-app.component-AS4MzEo2.mjs.map → aril-boot-mfe-app.component-DtspQ3J8.mjs.map} +1 -1
  59. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-Ui9Cv3UC.mjs → aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs} +16 -4
  60. package/fesm2022/aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs.map +1 -0
  61. package/fesm2022/aril-boot-mfe.mjs +2 -1
  62. package/fesm2022/aril-boot-mfe.mjs.map +1 -1
  63. package/fesm2022/aril-http.mjs +11 -7
  64. package/fesm2022/aril-http.mjs.map +1 -1
  65. package/fesm2022/aril-keycloak.mjs +4 -1
  66. package/fesm2022/aril-keycloak.mjs.map +1 -1
  67. package/fesm2022/aril-selection.mjs +202 -0
  68. package/fesm2022/aril-selection.mjs.map +1 -0
  69. package/fesm2022/aril-theme-layout.mjs +14 -66
  70. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  71. package/fesm2022/aril-ui-business-enumPicker.mjs +14 -6
  72. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
  73. package/fesm2022/aril-ui-button.mjs +5 -17
  74. package/fesm2022/aril-ui-button.mjs.map +1 -1
  75. package/fesm2022/aril-ui-charts.mjs +4 -1302
  76. package/fesm2022/aril-ui-charts.mjs.map +1 -1
  77. package/fesm2022/aril-ui-lib.mjs +10 -98
  78. package/fesm2022/aril-ui-lib.mjs.map +1 -1
  79. package/fesm2022/aril-ui-multiSelect.mjs +24 -24
  80. package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
  81. package/fesm2022/aril-ui-relativeDateSelector.mjs +1 -1
  82. package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
  83. package/fesm2022/aril-ui-selectBox.mjs +10 -33
  84. package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
  85. package/fesm2022/aril-ui-table.mjs +9 -4
  86. package/fesm2022/aril-ui-table.mjs.map +1 -1
  87. package/fesm2022/aril-ui-value.mjs +2 -1
  88. package/fesm2022/aril-ui-value.mjs.map +1 -1
  89. package/fesm2022/aril-util-activity.mjs +228 -0
  90. package/fesm2022/aril-util-activity.mjs.map +1 -0
  91. package/fesm2022/aril-util-block.mjs +9 -25
  92. package/fesm2022/aril-util-block.mjs.map +1 -1
  93. package/fesm2022/aril-util-pub-sub.mjs +9 -4
  94. package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
  95. package/fesm2022/aril.mjs +18 -5
  96. package/fesm2022/aril.mjs.map +1 -1
  97. package/http/index.d.ts +0 -1
  98. package/http/src/serviceStateMethods.d.ts +1 -0
  99. package/package.json +210 -234
  100. package/scripts/mf-shared.js +47 -0
  101. package/selection/index.d.ts +1 -0
  102. package/selection/src/interfaces.d.ts +8 -0
  103. package/{theme/layout/service → selection/src}/selection-group.service.d.ts +9 -5
  104. package/theme/layout/index.d.ts +1 -1
  105. package/theme/layout/index.ts +3 -1
  106. package/theme/layout/service/breadcrumb-publisher.service.ts +18 -8
  107. package/theme/layout/service/interfaces/interfaces.d.ts +3 -17
  108. package/theme/layout/service/interfaces/interfaces.ts +6 -18
  109. package/ui/button/index.d.ts +0 -1
  110. package/ui/button/src/button.component.d.ts +2 -0
  111. package/ui/charts/index.d.ts +0 -10
  112. package/ui/lib/index.d.ts +0 -3
  113. package/ui/lib/src/form/form-error-message.directive.d.ts +4 -3
  114. package/ui/multiSelect/src/multi-select.component.d.ts +4 -5
  115. package/ui/selectBox/src/select-box.component.d.ts +2 -7
  116. package/ui/table/src/table.component.d.ts +3 -2
  117. package/util/activity/index.d.ts +3 -0
  118. package/util/activity/src/activity.constants.d.ts +3 -0
  119. package/util/activity/src/activity.service.d.ts +35 -0
  120. package/util/activity/src/activity.types.d.ts +13 -0
  121. package/util/block/src/block.d.ts +4 -10
  122. package/util/pub-sub/src/pub-sub.service.d.ts +2 -2
  123. package/esm2022/http/src/serviceMockBase.mjs +0 -4
  124. package/esm2022/theme/layout/service/selection-group.service.mjs +0 -65
  125. package/esm2022/ui/button/src/split-button.component.mjs +0 -18
  126. package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +0 -124
  127. package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +0 -164
  128. package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +0 -116
  129. package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +0 -114
  130. package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +0 -100
  131. package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +0 -117
  132. package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +0 -252
  133. package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +0 -89
  134. package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +0 -82
  135. package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +0 -137
  136. package/esm2022/ui/charts/src/theme/theme.mjs +0 -54
  137. package/esm2022/ui/dxEditor/aril-ui-dxEditor.mjs +0 -5
  138. package/esm2022/ui/dxEditor/index.mjs +0 -2
  139. package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +0 -26
  140. package/esm2022/ui/lib/src/form/form-field-builder.mjs +0 -23
  141. package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +0 -49
  142. package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +0 -25
  143. package/esm2022/ui/overlayPanel/aril-ui-overlayPanel.mjs +0 -5
  144. package/esm2022/ui/overlayPanel/index.mjs +0 -2
  145. package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +0 -20
  146. package/esm2022/ui/tooltip/aril-ui-tooltip.mjs +0 -5
  147. package/esm2022/ui/tooltip/index.mjs +0 -2
  148. package/esm2022/ui/tooltip/src/tooltip-component.mjs +0 -23
  149. package/esm2022/ui/treeTable/aril-ui-treeTable.mjs +0 -5
  150. package/esm2022/ui/treeTable/index.mjs +0 -2
  151. package/esm2022/ui/treeTable/src/tree-table.component.mjs +0 -55
  152. package/esm2022/ui-business/operation-types-dialog/aril-ui-business-operation-types-dialog.mjs +0 -5
  153. package/esm2022/ui-business/operation-types-dialog/index.mjs +0 -2
  154. package/esm2022/ui-business/operation-types-dialog/src/operation-types-dialog.component.mjs +0 -76
  155. package/esm2022/util/unwrap/aril-util-unwrap.mjs +0 -5
  156. package/esm2022/util/unwrap/index.mjs +0 -2
  157. package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +0 -24
  158. package/fesm2022/aril-boot-mfe-aril-boot-mfe-Ui9Cv3UC.mjs.map +0 -1
  159. package/fesm2022/aril-ui-business-operation-types-dialog.mjs +0 -83
  160. package/fesm2022/aril-ui-business-operation-types-dialog.mjs.map +0 -1
  161. package/fesm2022/aril-ui-dxEditor.mjs +0 -33
  162. package/fesm2022/aril-ui-dxEditor.mjs.map +0 -1
  163. package/fesm2022/aril-ui-overlayPanel.mjs +0 -27
  164. package/fesm2022/aril-ui-overlayPanel.mjs.map +0 -1
  165. package/fesm2022/aril-ui-tooltip.mjs +0 -30
  166. package/fesm2022/aril-ui-tooltip.mjs.map +0 -1
  167. package/fesm2022/aril-ui-treeTable.mjs +0 -62
  168. package/fesm2022/aril-ui-treeTable.mjs.map +0 -1
  169. package/fesm2022/aril-util-unwrap.mjs +0 -31
  170. package/fesm2022/aril-util-unwrap.mjs.map +0 -1
  171. package/http/src/serviceMockBase.d.ts +0 -6
  172. package/theme/layout/service/selection-group.service.ts +0 -73
  173. package/ui/button/src/split-button.component.d.ts +0 -8
  174. package/ui/charts/src/amCharts/column/column-chart.component.d.ts +0 -25
  175. package/ui/charts/src/amCharts/line/line-chart.component.d.ts +0 -26
  176. package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +0 -24
  177. package/ui/charts/src/highCharts/area/area-chart.component.d.ts +0 -20
  178. package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +0 -26
  179. package/ui/charts/src/highCharts/column/column-chart.component.d.ts +0 -28
  180. package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +0 -32
  181. package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +0 -21
  182. package/ui/charts/src/highCharts/line/line-chart.component.d.ts +0 -21
  183. package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +0 -27
  184. package/ui/charts/src/theme/theme.d.ts +0 -5
  185. package/ui/dxEditor/index.d.ts +0 -1
  186. package/ui/dxEditor/src/dx-editor.component.d.ts +0 -11
  187. package/ui/lib/src/form/form-field-builder.d.ts +0 -8
  188. package/ui/lib/src/input/common-input-validators.service.d.ts +0 -20
  189. package/ui/lib/src/input/input-disabled.directive.d.ts +0 -9
  190. package/ui/overlayPanel/index.d.ts +0 -1
  191. package/ui/overlayPanel/src/overlay-panel.component.d.ts +0 -8
  192. package/ui/tooltip/index.d.ts +0 -1
  193. package/ui/tooltip/src/tooltip-component.d.ts +0 -14
  194. package/ui/treeTable/index.d.ts +0 -1
  195. package/ui/treeTable/src/tree-table.component.d.ts +0 -21
  196. package/ui-business/operation-types-dialog/index.d.ts +0 -1
  197. package/ui-business/operation-types-dialog/src/operation-types-dialog.component.d.ts +0 -28
  198. package/util/unwrap/index.d.ts +0 -1
  199. package/util/unwrap/src/unwrap-tag.directive.d.ts +0 -9
@@ -1,12 +1,12 @@
1
1
  import { runInInjectionContext } from '@angular/core';
2
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
3
  import { Observable, of } from 'rxjs';
4
- import { catchError, map, tap } from 'rxjs/operators';
4
+ import { catchError, finalize, map, tap } from 'rxjs/operators';
5
5
  import { API_CONFIGS } from 'aril/boot/config/api';
6
6
  import { HTTPMethods, HTTPStatusCodes } from '../lib/enums';
7
7
  import { ErrorResponse, ServiceResponse } from '../lib/interfaces';
8
8
  import { getRequest } from './serviceRequest';
9
- import { callState, errorState, successState, warningState } from './serviceStateMethods';
9
+ import { callState, clearWaitingState, errorState, successState, warningState } from './serviceStateMethods';
10
10
  export function ServiceCall(httpMethod, proxy, serviceURL, message, remoteAPI, isMockAPI = false) {
11
11
  return function (serviceClass, serviceName, descriptor) {
12
12
  // const originalFunction = descriptor.value;
@@ -131,10 +131,10 @@ export function ServiceCall(httpMethod, proxy, serviceURL, message, remoteAPI, i
131
131
  }), catchError((error) => {
132
132
  errorState(states, serviceName, error, this.translocoService, this.messageService, this.keycloak, message);
133
133
  return of(new ErrorResponse(error));
134
- }), takeUntilDestroyed());
134
+ }), takeUntilDestroyed(), finalize(() => clearWaitingState(states, serviceName)));
135
135
  return observable;
136
136
  });
137
137
  };
138
138
  };
139
139
  }
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2h0dHAvc3JjL3NlcnZpY2VCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQWMsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRixNQUFNLFVBQVUsV0FBVyxDQUMxQixVQUF1QixFQUN2QixLQUFpQixFQUNqQixVQUFrQixFQUNsQixPQUFxRixFQUNyRixTQUFnQixFQUNoQixTQUFTLEdBQUcsS0FBSztJQUVqQixPQUFPLFVBQVUsWUFBb0IsRUFBRSxXQUE0QixFQUFFLFVBQThCO1FBQ2xHLDZDQUE2QztRQUU3QyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFXO1lBQzFDLE9BQU8scUJBQXFCLENBQU8sSUFBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZELE1BQU0sVUFBVSxHQUFxQixJQUFLLENBQUMsVUFBVSxDQUFD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LENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDOzRCQUNoRixNQUFNLEVBQVEsSUFBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQzt5QkFDekUsQ0FBQyxDQUFDO29CQUNKLENBQUM7eUJBQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyw0QkFBNEIsRUFBRSxDQUFDO3dCQUN0RSxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFRLElBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDcEYsQ0FBQzt5QkFBTSxDQUFDO3dCQUNQLFlBQVksQ0FDWCxNQUFNLEVBQ04sV0FBVyxFQUNMLElBQUssQ0FBQyxnQkFBZ0IsRUFDdEIsSUFBSyxDQUFDLGNBQWMsRUFDMUIsT0FBTyxFQUNQLFVBQVUsQ0FDVixDQUFDO29CQUNILENBQUM7Z0JBQ0YsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO29CQUN2QyxVQUFVLENBQ1QsTUFBTSxFQUNOLFdBQVcsRUFDWCxLQUFLLEVBQ0MsSUFBSyxDQUFDLGdCQUFnQixFQUN0QixJQUFLLENBQUMsY0FBYyxFQUNwQixJQUFLLENBQUMsUUFBUSxFQUNwQixPQUFPLENBQ1AsQ0FBQztvQkFDRixPQUFPLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLENBQUMsRUFDRixrQkFBa0IsRUFBRSxDQUNwQixDQUFDO2dCQUVGLE9BQU8sVUFBVSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBBUElfQ09ORklHUyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBpJztcclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcblxyXG5pbXBvcnQgeyBIVFRQTWV0aG9kcywgSFRUUFN0YXR1c0NvZGVzLCBQcm94eVR5cGVzIH0gZnJvbSAnLi4vbGliL2VudW1zJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSwgU2VydmljZUNhbGxTdGF0ZU1hcCwgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vbGliL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBnZXRSZXF1ZXN0IH0gZnJvbSAnLi9zZXJ2aWNlUmVxdWVzdCc7XHJcbmltcG9ydCB7IGNhbGxTdGF0ZSwgZXJyb3JTdGF0ZSwgc3VjY2Vzc1N0YXRlLCB3YXJuaW5nU3RhdGUgfSBmcm9tICcuL3NlcnZpY2VTdGF0ZU1ldGhvZHMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFNlcnZpY2VDYWxsKFxyXG5cdGh0dHBNZXRob2Q6IEhUVFBNZXRob2RzLFxyXG5cdHByb3h5OiBQcm94eVR5cGVzLFxyXG5cdHNlcnZpY2VVUkw6IHN0cmluZyxcclxuXHRtZXNzYWdlPzogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZzsgaWdub3JlZFN0YXR1c0NvZGVzPzogSHR0cFN0YXR1c0NvZGVbXSB9LFxyXG5cdHJlbW90ZUFQST86IEFwcHMsXHJcblx0aXNNb2NrQVBJID0gZmFsc2VcclxuKTogTWV0aG9kRGVjb3JhdG9yIHtcclxuXHRyZXR1cm4gZnVuY3Rpb24gKHNlcnZpY2VDbGFzczogb2JqZWN0LCBzZXJ2aWNlTmFtZTogc3RyaW5nIHwgc3ltYm9sLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcclxuXHRcdC8vIGNvbnN0IG9yaWdpbmFsRnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlO1xyXG5cclxuXHRcdGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcclxuXHRcdFx0cmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCgoPGFueT50aGlzKS5pbmplY3RvciwgKCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQgPSAoPGFueT50aGlzKS5odHRwQ2xpZW50O1xyXG5cclxuXHRcdFx0XHRsZXQgYXBpID0gJyc7XHJcblx0XHRcdFx0aWYgKGlzTW9ja0FQSSkgYXBpID0gPHN0cmluZz5yZW1vdGVBUEk7XHJcblx0XHRcdFx0ZWxzZSBpZiAocmVtb3RlQVBJKSB7XHJcblx0XHRcdFx0XHRjb25zdCB1cmwgPSBuZXcgVVJMKEFQSV9DT05GSUdTLmFwaSk7XHJcblx0XHRcdFx0XHRhcGkgPSB1cmwub3JpZ2luICsgJy8nICsgQVBJX0NPTkZJR1MucHJlZml4TWFwW3JlbW90ZUFQSV07XHJcblx0XHRcdFx0fSBlbHNlIGFwaSA9IEFQSV9DT05GSUdTLmFwaTtcclxuXHJcblx0XHRcdFx0Y29uc3QgZW5kUG9pbnQgPSBhcGkgKyAnLycgKyBzZXJ2aWNlVVJMO1xyXG5cdFx0XHRcdGNvbnN0IHJlcXVlc3QgPSBnZXRSZXF1ZXN0KGh0dHBNZXRob2QsIGFyZ3MpO1xyXG5cdFx0XHRcdGNvbnN0IHN0YXRlczogU2VydmljZUNhbGxTdGF0ZU1hcDxhbnk+ID0gKDxhbnk+dGhpcykuc3RhdGVzO1xyXG5cclxuXHRcdFx0XHRjYWxsU3RhdGUoc3RhdGVzLCBzZXJ2aWNlTmFtZSk7XHJcblxyXG5cdFx0XHRcdGxldCBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4gPSBuZXcgT2JzZXJ2YWJsZTxhbnk+KCk7XHJcblx0XHRcdFx0bGV0IGdldER5bmFtaWNTZXJ2aWNlVXJsOiBzdHJpbmc7XHJcblxyXG5cdFx0XHRcdHN3aXRjaCAoaHR0cE1ldGhvZCkge1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5HRVQ6XHJcblx0XHRcdFx0XHRcdGxldCBnZXRSZXEgPSBhcmdzLmxlbmd0aCA/ICcvJyArIGFyZ3NbMF0gOiAnJztcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZ2V0PGFueT4oZW5kUG9pbnQgKyBnZXRSZXEsIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkdFVEJZUEFSQU1TOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5nZXQ8YW55PihlbmRQb2ludCwgeyBwYXJhbXM6IHJlcXVlc3QgYXMgSHR0cFBhcmFtcywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5HRVRCWURZTkFNSUNQQVRIOlxyXG5cdFx0XHRcdFx0XHRnZXREeW5hbWljU2VydmljZVVybCA9IHNlcnZpY2VVUkw7XHJcblx0XHRcdFx0XHRcdGFyZ3MuZm9yRWFjaCgoYXJnKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0Z2V0RHluYW1pY1NlcnZpY2VVcmwgPSBnZXREeW5hbWljU2VydmljZVVybC5yZXBsYWNlKCckJywgYXJnKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmdldDxhbnk+KGFwaSArICcvJyArIGdldER5bmFtaWNTZXJ2aWNlVXJsLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5HRVRCWVBBUkFNU0FORERZTkFNSUNQQVRIOlxyXG5cdFx0XHRcdFx0XHRsZXQgZ2V0UGFyYW1zID0ge307XHJcblx0XHRcdFx0XHRcdGxldCBnZXREeW5hbWljU2VydmljZVVybFdpdGhQYXJhbXMgPSBzZXJ2aWNlVVJMO1xyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIGdldFBhcmFtcyA9IGFyZztcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGdldER5bmFtaWNTZXJ2aWNlVXJsV2l0aFBhcmFtcyA9IGdldER5bmFtaWNTZXJ2aWNlVXJsV2l0aFBhcmFtcy5yZXBsYWNlKCckJywgYXJnKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5nZXQ8YW55PihhcGkgKyAnLycgKyBnZXREeW5hbWljU2VydmljZVVybFdpdGhQYXJhbXMsIHtcclxuXHRcdFx0XHRcdFx0XHRwYXJhbXM6IGdldFBhcmFtcyBhcyBIdHRwUGFyYW1zLFxyXG5cdFx0XHRcdFx0XHRcdG9ic2VydmU6ICdyZXNwb25zZScsXHJcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VUeXBlOiAnanNvbidcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5QT1NUOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wb3N0PGFueT4oZW5kUG9pbnQsIGFyZ3NbMF0sIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLlBPU1RCWVBBUkFNUzpcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQucG9zdDxhbnk+KGVuZFBvaW50LCBhcmdzWzBdLmJvZHksIHsgcGFyYW1zOiByZXF1ZXN0LCBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLlBPU1RCWURZTkFNSUNQQVRIOlxyXG5cdFx0XHRcdFx0XHRsZXQgYm9keSA9IHt9O1xyXG5cdFx0XHRcdFx0XHRsZXQgZHluYW1pY1NlcnZpY2VVcmwgPSBzZXJ2aWNlVVJMO1xyXG5cclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIGJvZHkgPSBhcmc7XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBkeW5hbWljU2VydmljZVVybCA9IGR5bmFtaWNTZXJ2aWNlVXJsLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQucG9zdDxhbnk+KGFwaSArICcvJyArIGR5bmFtaWNTZXJ2aWNlVXJsLCBib2R5LCB7IG9ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuUFVUOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wdXQ8YW55PihlbmRQb2ludCArICcvJyArIGFyZ3NbMF0sIHJlcXVlc3QsIHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5QVVRCWVBBUkFNUzpcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQucHV0PGFueT4oZW5kUG9pbnQsIGFyZ3NbMF0sIHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuUFVUQllEWU5BTUlDUEFUSDpcclxuXHRcdFx0XHRcdFx0bGV0IHB1dEJvZHkgPSB7fTtcclxuXHRcdFx0XHRcdFx0bGV0IHB1dER5bmFtaWNTZXJ2aWNlVXJsID0gc2VydmljZVVSTDtcclxuXHJcblx0XHRcdFx0XHRcdGFyZ3MuZm9yRWFjaCgoYXJnKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBhcmcgPT09ICdvYmplY3QnKSBwdXRCb2R5ID0gYXJnO1xyXG5cdFx0XHRcdFx0XHRcdGVsc2UgcHV0RHluYW1pY1NlcnZpY2VVcmwgPSBwdXREeW5hbWljU2VydmljZVVybC5yZXBsYWNlKCckJywgYXJnKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LnB1dDxhbnk+KGFwaSArICcvJyArIHB1dER5bmFtaWNTZXJ2aWNlVXJsLCBwdXRCb2R5LCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5ERUxFVEU6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmRlbGV0ZTxhbnk+KGVuZFBvaW50ICsgJy8nICsgYXJnc1swXSwge29ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuREVMRVRFQllQQVJBTVM6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmRlbGV0ZTxhbnk+KGVuZFBvaW50LCB7IHBhcmFtczogcmVxdWVzdCBhcyBIdHRwUGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkRFTEVURUJZRFlOQU1JQ1BBVEg6XHJcblx0XHRcdFx0XHRcdGxldCBkZWxldGVQYXJhbXMgPSB7fTtcclxuXHRcdFx0XHRcdFx0bGV0IGRlbGV0ZUR5bmFtaWNTZXJ2aWNlVXJsID0gc2VydmljZVVSTDtcclxuXHJcblx0XHRcdFx0XHRcdGFyZ3MuZm9yRWFjaCgoYXJnKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBhcmcgPT09ICdvYmplY3QnKSBkZWxldGVQYXJhbXMgPSBhcmc7XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBkZWxldGVEeW5hbWljU2VydmljZVVybCA9IGRlbGV0ZUR5bmFtaWNTZXJ2aWNlVXJsLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmRlbGV0ZTxhbnk+KGFwaSArICcvJyArIGRlbGV0ZUR5bmFtaWNTZXJ2aWNlVXJsLCB7XHJcblx0XHRcdFx0XHRcdFx0cGFyYW1zOiBkZWxldGVQYXJhbXMsXHJcblx0XHRcdFx0XHRcdFx0b2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuXHRcdFx0XHRcdFx0XHRyZXNwb25zZVR5cGU6ICdqc29uJ1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdG9ic2VydmFibGUgPSBvYnNlcnZhYmxlLnBpcGUoXHJcblx0XHRcdFx0XHRtYXAoKHJlc3BvbnNlKSA9PiBuZXcgU2VydmljZVJlc3BvbnNlKHJlcXVlc3QsIHJlc3BvbnNlPy5ib2R5LCBwcm94eSwgcmVzcG9uc2U/LnN0YXR1cykpLFxyXG5cdFx0XHRcdFx0dGFwKChzZXJ2aWNlUmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChzZXJ2aWNlUmVzPy5zdGF0dXNDb2RlID09PSBIVFRQU3RhdHVzQ29kZXMuTk9fQ09OVEVOVCkge1xyXG5cdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0XHRcdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0XHRcdFx0XHRcdHNldmVyaXR5OiAnc3VjY2VzcycsXHJcblx0XHRcdFx0XHRcdFx0XHRzdW1tYXJ5OiAoPGFueT50aGlzKS50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMuc3VjY2Vzc01lc3NhZ2VIZWFkZXInKSxcclxuXHRcdFx0XHRcdFx0XHRcdGRldGFpbDogKDxhbnk+dGhpcykudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ21lc3NhZ2VzLnN1Y2Nlc3NNZXNzYWdlJylcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzZXJ2aWNlUmVzLnJlc3BvbnNlLnR5cGUgPT09ICdWYWxpZGF0aW9uV2FybmluZ0V4Y2VwdGlvbicpIHtcclxuXHRcdFx0XHRcdFx0XHR3YXJuaW5nU3RhdGUoc3RhdGVzLCBzZXJ2aWNlTmFtZSwgc2VydmljZVJlcy5yZXNwb25zZSwgKDxhbnk+dGhpcykubWVzc2FnZVNlcnZpY2UpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3NTdGF0ZShcclxuXHRcdFx0XHRcdFx0XHRcdHN0YXRlcyxcclxuXHRcdFx0XHRcdFx0XHRcdHNlcnZpY2VOYW1lLFxyXG5cdFx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykudHJhbnNsb2NvU2VydmljZSxcclxuXHRcdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLm1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0bWVzc2FnZSxcclxuXHRcdFx0XHRcdFx0XHRcdHNlcnZpY2VSZXNcclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRlcnJvclN0YXRlKFxyXG5cdFx0XHRcdFx0XHRcdHN0YXRlcyxcclxuXHRcdFx0XHRcdFx0XHRzZXJ2aWNlTmFtZSxcclxuXHRcdFx0XHRcdFx0XHRlcnJvcixcclxuXHRcdFx0XHRcdFx0XHQoPGFueT50aGlzKS50cmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLm1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLmtleWNsb2FrLFxyXG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIG9mKG5ldyBFcnJvclJlc3BvbnNlKGVycm9yKSk7XHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHRha2VVbnRpbERlc3Ryb3llZCgpXHJcblx0XHRcdFx0KTtcclxuXHJcblx0XHRcdFx0cmV0dXJuIG9ic2VydmFibGU7XHJcblx0XHRcdH0pO1xyXG5cdFx0fTtcclxuXHR9O1xyXG59XHJcbiJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2h0dHAvc3JjL3NlcnZpY2VCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFjLE1BQU0sY0FBYyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQXVCLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0csTUFBTSxVQUFVLFdBQVcsQ0FDMUIsVUFBdUIsRUFDdkIsS0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsT0FBcUYsRUFDckYsU0FBZ0IsRUFDaEIsU0FBUyxHQUFHLEtBQUs7SUFFakIsT0FBTyxVQUFVLFlBQW9CLEVBQUUsV0FBNEIsRUFBRSxVQUE4QjtRQUNsRyw2Q0FBNkM7UUFFN0MsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsSUFBVztZQUMxQyxPQUFPLHFCQUFxQixDQUFPLElBQUssQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUN2RCxNQUFNLFVBQVUsR0FB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bGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxuaW1wb3J0IHsgSFRUUE1ldGhvZHMsIEhUVFBTdGF0dXNDb2RlcywgUHJveHlUeXBlcyB9IGZyb20gJy4uL2xpYi9lbnVtcyc7XHJcbmltcG9ydCB7IEVycm9yUmVzcG9uc2UsIFNlcnZpY2VDYWxsU3RhdGVNYXAsIFNlcnZpY2VSZXNwb25zZSB9IGZyb20gJy4uL2xpYi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgZ2V0UmVxdWVzdCB9IGZyb20gJy4vc2VydmljZVJlcXVlc3QnO1xyXG5pbXBvcnQgeyBjYWxsU3RhdGUsIGNsZWFyV2FpdGluZ1N0YXRlLCBlcnJvclN0YXRlLCBzdWNjZXNzU3RhdGUsIHdhcm5pbmdTdGF0ZSB9IGZyb20gJy4vc2VydmljZVN0YXRlTWV0aG9kcyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gU2VydmljZUNhbGwoXHJcblx0aHR0cE1ldGhvZDogSFRUUE1ldGhvZHMsXHJcblx0cHJveHk6IFByb3h5VHlwZXMsXHJcblx0c2VydmljZVVSTDogc3RyaW5nLFxyXG5cdG1lc3NhZ2U/OiB7IHN1Y2Nlc3M/OiBzdHJpbmc7IGVycm9yPzogc3RyaW5nOyBpZ25vcmVkU3RhdHVzQ29kZXM/OiBIdHRwU3RhdHVzQ29kZVtdIH0sXHJcblx0cmVtb3RlQVBJPzogQXBwcyxcclxuXHRpc01vY2tBUEkgPSBmYWxzZVxyXG4pOiBNZXRob2REZWNvcmF0b3Ige1xyXG5cdHJldHVybiBmdW5jdGlvbiAoc2VydmljZUNsYXNzOiBvYmplY3QsIHNlcnZpY2VOYW1lOiBzdHJpbmcgfCBzeW1ib2wsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikge1xyXG5cdFx0Ly8gY29uc3Qgb3JpZ2luYWxGdW5jdGlvbiA9IGRlc2NyaXB0b3IudmFsdWU7XHJcblxyXG5cdFx0ZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xyXG5cdFx0XHRyZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KCg8YW55PnRoaXMpLmluamVjdG9yLCAoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgaHR0cENsaWVudDogSHR0cENsaWVudCA9ICg8YW55PnRoaXMpLmh0dHBDbGllbnQ7XHJcblxyXG5cdFx0XHRcdGxldCBhcGkgPSAnJztcclxuXHRcdFx0XHRpZiAoaXNNb2NrQVBJKSBhcGkgPSA8c3RyaW5nPnJlbW90ZUFQSTtcclxuXHRcdFx0XHRlbHNlIGlmIChyZW1vdGVBUEkpIHtcclxuXHRcdFx0XHRcdGNvbnN0IHVybCA9IG5ldyBVUkwoQVBJX0NPTkZJR1MuYXBpKTtcclxuXHRcdFx0XHRcdGFwaSA9IHVybC5vcmlnaW4gKyAnLycgKyBBUElfQ09ORklHUy5wcmVmaXhNYXBbcmVtb3RlQVBJXTtcclxuXHRcdFx0XHR9IGVsc2UgYXBpID0gQVBJX0NPTkZJR1MuYXBpO1xyXG5cclxuXHRcdFx0XHRjb25zdCBlbmRQb2ludCA9IGFwaSArICcvJyArIHNlcnZpY2VVUkw7XHJcblx0XHRcdFx0Y29uc3QgcmVxdWVzdCA9IGdldFJlcXVlc3QoaHR0cE1ldGhvZCwgYXJncyk7XHJcblx0XHRcdFx0Y29uc3Qgc3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4gPSAoPGFueT50aGlzKS5zdGF0ZXM7XHJcblxyXG5cdFx0XHRcdGNhbGxTdGF0ZShzdGF0ZXMsIHNlcnZpY2VOYW1lKTtcclxuXHJcblx0XHRcdFx0bGV0IG9ic2VydmFibGU6IE9ic2VydmFibGU8YW55PiA9IG5ldyBPYnNlcnZhYmxlPGFueT4oKTtcclxuXHRcdFx0XHRsZXQgZ2V0RHluYW1pY1NlcnZpY2VVcmw6IHN0cmluZztcclxuXHJcblx0XHRcdFx0c3dpdGNoIChodHRwTWV0aG9kKSB7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkdFVDpcclxuXHRcdFx0XHRcdFx0bGV0IGdldFJlcSA9IGFyZ3MubGVuZ3RoID8gJy8nICsgYXJnc1swXSA6ICcnO1xyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5nZXQ8YW55PihlbmRQb2ludCArIGdldFJlcSwge29ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuR0VUQllQQVJBTVM6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmdldDxhbnk+KGVuZFBvaW50LCB7IHBhcmFtczogcmVxdWVzdCBhcyBIdHRwUGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkdFVEJZRFlOQU1JQ1BBVEg6XHJcblx0XHRcdFx0XHRcdGdldER5bmFtaWNTZXJ2aWNlVXJsID0gc2VydmljZVVSTDtcclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRnZXREeW5hbWljU2VydmljZVVybCA9IGdldER5bmFtaWNTZXJ2aWNlVXJsLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZ2V0PGFueT4oYXBpICsgJy8nICsgZ2V0RHluYW1pY1NlcnZpY2VVcmwsIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkdFVEJZUEFSQU1TQU5ERFlOQU1JQ1BBVEg6XHJcblx0XHRcdFx0XHRcdGxldCBnZXRQYXJhbXMgPSB7fTtcclxuXHRcdFx0XHRcdFx0bGV0IGdldER5bmFtaWNTZXJ2aWNlVXJsV2l0aFBhcmFtcyA9IHNlcnZpY2VVUkw7XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRhcmdzLmZvckVhY2goKGFyZykgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgYXJnID09PSAnb2JqZWN0JykgZ2V0UGFyYW1zID0gYXJnO1xyXG5cdFx0XHRcdFx0XHRcdGVsc2UgZ2V0RHluYW1pY1NlcnZpY2VVcmxXaXRoUGFyYW1zID0gZ2V0RHluYW1pY1NlcnZpY2VVcmxXaXRoUGFyYW1zLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LmdldDxhbnk+KGFwaSArICcvJyArIGdldER5bmFtaWNTZXJ2aWNlVXJsV2l0aFBhcmFtcywge1xyXG5cdFx0XHRcdFx0XHRcdHBhcmFtczogZ2V0UGFyYW1zIGFzIEh0dHBQYXJhbXMsXHJcblx0XHRcdFx0XHRcdFx0b2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuXHRcdFx0XHRcdFx0XHRyZXNwb25zZVR5cGU6ICdqc29uJ1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLlBPU1Q6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LnBvc3Q8YW55PihlbmRQb2ludCwgYXJnc1swXSwge29ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuUE9TVEJZUEFSQU1TOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wb3N0PGFueT4oZW5kUG9pbnQsIGFyZ3NbMF0uYm9keSwgeyBwYXJhbXM6IHJlcXVlc3QsIG9ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuUE9TVEJZRFlOQU1JQ1BBVEg6XHJcblx0XHRcdFx0XHRcdGxldCBib2R5ID0ge307XHJcblx0XHRcdFx0XHRcdGxldCBkeW5hbWljU2VydmljZVVybCA9IHNlcnZpY2VVUkw7XHJcblxyXG5cdFx0XHRcdFx0XHRhcmdzLmZvckVhY2goKGFyZykgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgYXJnID09PSAnb2JqZWN0JykgYm9keSA9IGFyZztcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGR5bmFtaWNTZXJ2aWNlVXJsID0gZHluYW1pY1NlcnZpY2VVcmwucmVwbGFjZSgnJCcsIGFyZyk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wb3N0PGFueT4oYXBpICsgJy8nICsgZHluYW1pY1NlcnZpY2VVcmwsIGJvZHksIHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5QVVQ6XHJcblx0XHRcdFx0XHRcdG9ic2VydmFibGUgPSBodHRwQ2xpZW50LnB1dDxhbnk+KGVuZFBvaW50ICsgJy8nICsgYXJnc1swXSwgcmVxdWVzdCwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLlBVVEJZUEFSQU1TOlxyXG5cdFx0XHRcdFx0XHRvYnNlcnZhYmxlID0gaHR0cENsaWVudC5wdXQ8YW55PihlbmRQb2ludCwgYXJnc1swXSwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5QVVRCWURZTkFNSUNQQVRIOlxyXG5cdFx0XHRcdFx0XHRsZXQgcHV0Qm9keSA9IHt9O1xyXG5cdFx0XHRcdFx0XHRsZXQgcHV0RHluYW1pY1NlcnZpY2VVcmwgPSBzZXJ2aWNlVVJMO1xyXG5cclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIHB1dEJvZHkgPSBhcmc7XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBwdXREeW5hbWljU2VydmljZVVybCA9IHB1dER5bmFtaWNTZXJ2aWNlVXJsLnJlcGxhY2UoJyQnLCBhcmcpO1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQucHV0PGFueT4oYXBpICsgJy8nICsgcHV0RHluYW1pY1NlcnZpY2VVcmwsIHB1dEJvZHksIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdqc29uJyB9KTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRjYXNlIEhUVFBNZXRob2RzLkRFTEVURTpcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZGVsZXRlPGFueT4oZW5kUG9pbnQgKyAnLycgKyBhcmdzWzBdLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnanNvbicgfSk7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0Y2FzZSBIVFRQTWV0aG9kcy5ERUxFVEVCWVBBUkFNUzpcclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZGVsZXRlPGFueT4oZW5kUG9pbnQsIHsgcGFyYW1zOiByZXF1ZXN0IGFzIEh0dHBQYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2pzb24nIH0pO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdGNhc2UgSFRUUE1ldGhvZHMuREVMRVRFQllEWU5BTUlDUEFUSDpcclxuXHRcdFx0XHRcdFx0bGV0IGRlbGV0ZVBhcmFtcyA9IHt9O1xyXG5cdFx0XHRcdFx0XHRsZXQgZGVsZXRlRHluYW1pY1NlcnZpY2VVcmwgPSBzZXJ2aWNlVVJMO1xyXG5cclxuXHRcdFx0XHRcdFx0YXJncy5mb3JFYWNoKChhcmcpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIGFyZyA9PT0gJ29iamVjdCcpIGRlbGV0ZVBhcmFtcyA9IGFyZztcclxuXHRcdFx0XHRcdFx0XHRlbHNlIGRlbGV0ZUR5bmFtaWNTZXJ2aWNlVXJsID0gZGVsZXRlRHluYW1pY1NlcnZpY2VVcmwucmVwbGFjZSgnJCcsIGFyZyk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRcdFx0b2JzZXJ2YWJsZSA9IGh0dHBDbGllbnQuZGVsZXRlPGFueT4oYXBpICsgJy8nICsgZGVsZXRlRHluYW1pY1NlcnZpY2VVcmwsIHtcclxuXHRcdFx0XHRcdFx0XHRwYXJhbXM6IGRlbGV0ZVBhcmFtcyxcclxuXHRcdFx0XHRcdFx0XHRvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG5cdFx0XHRcdFx0XHRcdHJlc3BvbnNlVHlwZTogJ2pzb24nXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0b2JzZXJ2YWJsZSA9IG9ic2VydmFibGUucGlwZShcclxuXHRcdFx0XHRcdG1hcCgocmVzcG9uc2UpID0+IG5ldyBTZXJ2aWNlUmVzcG9uc2UocmVxdWVzdCwgcmVzcG9uc2U/LmJvZHksIHByb3h5LCByZXNwb25zZT8uc3RhdHVzKSksXHJcblx0XHRcdFx0XHR0YXAoKHNlcnZpY2VSZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHNlcnZpY2VSZXM/LnN0YXR1c0NvZGUgPT09IEhUVFBTdGF0dXNDb2Rlcy5OT19DT05URU5UKSB7XHJcblx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0XHRcdFx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuXHRcdFx0XHRcdFx0XHRcdHN1bW1hcnk6ICg8YW55PnRoaXMpLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5zdWNjZXNzTWVzc2FnZUhlYWRlcicpLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZGV0YWlsOiAoPGFueT50aGlzKS50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMuc3VjY2Vzc01lc3NhZ2UnKVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHNlcnZpY2VSZXMucmVzcG9uc2UudHlwZSA9PT0gJ1ZhbGlkYXRpb25XYXJuaW5nRXhjZXB0aW9uJykge1xyXG5cdFx0XHRcdFx0XHRcdHdhcm5pbmdTdGF0ZShzdGF0ZXMsIHNlcnZpY2VOYW1lLCBzZXJ2aWNlUmVzLnJlc3BvbnNlLCAoPGFueT50aGlzKS5tZXNzYWdlU2VydmljZSk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0c3VjY2Vzc1N0YXRlKFxyXG5cdFx0XHRcdFx0XHRcdFx0c3RhdGVzLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2VydmljZU5hbWUsXHJcblx0XHRcdFx0XHRcdFx0XHQoPGFueT50aGlzKS50cmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykubWVzc2FnZVNlcnZpY2UsXHJcblx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2VydmljZVJlc1xyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHRcdGVycm9yU3RhdGUoXHJcblx0XHRcdFx0XHRcdFx0c3RhdGVzLFxyXG5cdFx0XHRcdFx0XHRcdHNlcnZpY2VOYW1lLFxyXG5cdFx0XHRcdFx0XHRcdGVycm9yLFxyXG5cdFx0XHRcdFx0XHRcdCg8YW55PnRoaXMpLnRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykubWVzc2FnZVNlcnZpY2UsXHJcblx0XHRcdFx0XHRcdFx0KDxhbnk+dGhpcykua2V5Y2xvYWssXHJcblx0XHRcdFx0XHRcdFx0bWVzc2FnZVxyXG5cdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gb2YobmV3IEVycm9yUmVzcG9uc2UoZXJyb3IpKTtcclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0dGFrZVVudGlsRGVzdHJveWVkKCksXHJcblx0XHRcdFx0XHRmaW5hbGl6ZSgoKSA9PiBjbGVhcldhaXRpbmdTdGF0ZShzdGF0ZXMsIHNlcnZpY2VOYW1lKSlcclxuXHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcclxuXHRcdFx0fSk7XHJcblx0XHR9O1xyXG5cdH07XHJcbn1cclxuIl19
@@ -6,6 +6,14 @@ export const callState = (states, serviceName) => {
6
6
  serviceCallFailed: false
7
7
  };
8
8
  };
9
+ // İstek iptal/teardown olduğunda (finalize) waitingForResponse'u temizler. Normal akış
10
+ // (success/warning/error) state'i zaten güncellediyse no-op — yalnızca takılı kalan true'yu düşürür.
11
+ export const clearWaitingState = (states, serviceName) => {
12
+ const current = states[serviceName];
13
+ if (current?.waitingForResponse) {
14
+ states[serviceName] = { ...current, waitingForResponse: false };
15
+ }
16
+ };
9
17
  export const successState = (states, serviceName, translocoService, messageService, message, response) => {
10
18
  states[serviceName] = {
11
19
  serviceCalled: true,
@@ -166,4 +174,4 @@ const getTranslatedMessage = (messageCode, translocoService, response) => {
166
174
  }
167
175
  return translatedMessage;
168
176
  };
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZVN0YXRlTWV0aG9kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvaHR0cC9zcmMvc2VydmljZVN0YXRlTWV0aG9kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQWdCLEVBQVEsRUFBRTtJQUNyRixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsSUFBSTtRQUN4QixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUMzQixNQUFnQyxFQUNoQyxXQUFnQixFQUNoQixnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsT0FBcUYsRUFDckYsUUFBYyxFQUNQLEVBQUU7SUFDVCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixrQkFBa0IsRUFBRSxJQUFJO1FBQ3hCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztJQUVGLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLGNBQWMsQ0FBQyxHQUFHLENBQUM7WUFDbEIsR0FBRyxFQUFFLFlBQVk7WUFDakIsUUFBUSxFQUFFLFNBQVM7WUFDbkIsT0FBTyxFQUFFLG9CQUFvQixDQUFTLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO1NBQ2xGLENBQUMsQ0FBQztJQUNKLENBQUM7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUM5QixNQUFnQyxFQUNoQyxXQUFnQixFQUNoQixLQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsZUFBZ0MsRUFDaEMsT0FBcUYsRUFDcEYsRUFBRTtJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRztRQUNyQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGtCQUFrQixFQUFFLElBQUk7UUFDeEIsaUJBQWlCLEVBQUUsSUFBSTtLQUN2QixDQUFDO0lBRUYsSUFBSSxTQUFpQixDQUFDO0lBRXRCLFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLEtBQUssR0FBRztZQUNQLFNBQVMsR0FBRyxjQUFjLENBQUM7WUFDM0IsTUFBTTtRQUNQLEtBQUssR0FBRztZQUNQLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztZQUM5QixNQUFNLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLE1BQU07UUFDUCxLQUFLLEdBQUc7WUFDUCxTQUFTLEdBQUcsbUJBQW1CLENBQUM7WUFDaEMsSUFBSSxlQUFlLENBQUMsY0FBYyxFQUFFO2dCQUFFLE1BQU0sZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekcsTUFBTTtRQUNQLEtBQUssR0FBRztZQUNQLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQztZQUNoQyxNQUFNO1FBQ1AsS0FBSyxHQUFHO1lBQ1AsU0FBUyxHQUFHLHVCQUF1QixDQUFDO1lBQ3BDLE1BQU07UUFDUCxLQUFLLEdBQUc7WUFDUCxTQUFTLEdBQUcsdUJBQXVCLENBQUM7WUFDcEMsTUFBTTtRQUNQLEtBQUssR0FBRztZQUNQLFNBQVMsR0FBRyxhQUFhLENBQUM7WUFDMUIsTUFBTTtRQUNQLEtBQUssR0FBRztZQUNQLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDdEIsTUFBTTtRQUNQLEtBQUssR0FBRztZQUNQLFNBQVMsR0FBRyxlQUFlLENBQUM7WUFDNUIsTUFBTTtRQUNQLEtBQUssR0FBRztZQUNQLFNBQVMsR0FBRyw0QkFBNEIsQ0FBQztZQUN6QyxNQUFNO1FBQ1AsS0FBSyxHQUFHO1lBQ1AsU0FBUyxHQUFHLG9CQUFvQixDQUFDO1lBQ2pDLE1BQU07UUFDUCxLQUFLLEdBQUc7WUFDUCxTQUFTLEdBQUcsd0JBQXdCLENBQUM7WUFDckMsTUFBTTtRQUNQLEtBQUssR0FBRztZQUNQLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztZQUNwQyxNQUFNO1FBQ1AsS0FBSyxHQUFHO1lBQ1AsU0FBUyxHQUFHLDhCQUE4QixDQUFDO1lBQzNDLE1BQU07UUFDUCxLQUFLLEdBQUc7WUFDUCxTQUFTLEdBQUcsK0JBQStCLENBQUM7WUFDNUMsTUFBTTtRQUNQLEtBQUssR0FBRztZQUNQLFNBQVMsR0FBRywyQkFBMkIsQ0FBQztZQUN4QyxNQUFNO1FBQ1A7WUFDQyxTQUFTLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7WUFDbEMsTUFBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU87SUFFdkIsSUFBSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPO0lBRWhFLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3hFLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQW1CLEVBQUUsRUFBRTtZQUNuRCxNQUFNLEdBQUcsR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUN6QyxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEQsTUFBTSxJQUFJLEdBQUcsZUFBZSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO1lBRTFFLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUUxRSxjQUFjLENBQUMsR0FBRyxDQUFDO2dCQUNsQixHQUFHLEVBQUUsWUFBWTtnQkFDakIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87Z0JBQzlCLE1BQU0sRUFBRSxVQUFVO2FBQ2xCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztTQUFNLENBQUM7UUFDUCxjQUFjLENBQUMsR0FBRyxDQUFDO1lBQ2xCLEdBQUcsRUFBRSxZQUFZO1lBQ2pCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU87U0FDN0IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BCLGNBQWMsQ0FBQyxHQUFHLENBQUM7WUFDbEIsR0FBRyxFQUFFLFlBQVk7WUFDakIsUUFBUSxFQUFFLE9BQU87WUFDakIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7U0FDdkYsQ0FBQyxDQUFDO0lBQ0osQ0FBQztBQUNGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUMzQixNQUFnQyxFQUNoQyxXQUFnQixFQUNoQixRQUFhLEVBQ2IsY0FBOEIsRUFDdkIsRUFBRTtJQUNULE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRztRQUNyQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGtCQUFrQixFQUFFLElBQUk7UUFDeEIsaUJBQWlCLEVBQUUsSUFBSTtLQUN2QixDQUFDO0lBRUYsSUFBSSxRQUFRLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pGLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBbUIsRUFBRSxFQUFFO1lBQ2hELGNBQWMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2xCLEdBQUcsRUFBRSxZQUFZO2dCQUNqQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPO2dCQUMxQixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNO2FBQ25GLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztTQUFNLENBQUM7UUFDUCxjQUFjLENBQUMsR0FBRyxDQUFDO1lBQ2xCLEdBQUcsRUFBRSxZQUFZO1lBQ2pCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTztTQUN6QixDQUFDLENBQUM7SUFDSixDQUFDO0FBQ0YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFdBQW1CLEVBQUUsZ0JBQWtDLEVBQUUsUUFBYyxFQUFVLEVBQUU7SUFDaEgsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDaEcsSUFBSSxpQkFBaUIsR0FBRyxlQUFlLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLENBQUM7SUFFdEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBRTVCLElBQUksUUFBUSxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQzVHLEdBQUcsQ0FBQztZQUNILElBQUksZUFBZSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2xFLElBQUksYUFBYSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM5RCxJQUFJLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztZQUVqRyxnREFBZ0Q7WUFDaEQsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLFVBQVUsQ0FBQztZQUVmLEtBQUssSUFBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQzlCLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCxJQUFJLGNBQWMsR0FBRyxHQUFHLGdCQUFnQixHQUFHLFFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQztZQUN2RSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNFLENBQUMsUUFBUSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtJQUN4RCxDQUFDO0lBRUQsT0FBTyxpQkFBaUIsQ0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuaW1wb3J0IHsgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcblxyXG5pbXBvcnQgeyBFcnJvckRldGFpbCwgU2VydmljZUNhbGxTdGF0ZU1hcCB9IGZyb20gJy4uL2xpYi9pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBjb25zdCBjYWxsU3RhdGUgPSAoc3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4sIHNlcnZpY2VOYW1lOiBhbnkpOiB2b2lkID0+IHtcclxuXHRzdGF0ZXNbc2VydmljZU5hbWVdID0ge1xyXG5cdFx0c2VydmljZUNhbGxlZDogdHJ1ZSxcclxuXHRcdHdhaXRpbmdGb3JSZXNwb25zZTogdHJ1ZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogZmFsc2UsXHJcblx0XHRzZXJ2aWNlQ2FsbEZhaWxlZDogZmFsc2VcclxuXHR9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN1Y2Nlc3NTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdG1lc3NhZ2U/OiB7IHN1Y2Nlc3M/OiBzdHJpbmc7IGVycm9yPzogc3RyaW5nOyBpZ25vcmVkU3RhdHVzQ29kZXM/OiBIdHRwU3RhdHVzQ29kZVtdIH0sXHJcblx0cmVzcG9uc2U/OiBhbnlcclxuKTogdm9pZCA9PiB7XHJcblx0c3RhdGVzW3NlcnZpY2VOYW1lXSA9IHtcclxuXHRcdHNlcnZpY2VDYWxsZWQ6IHRydWUsXHJcblx0XHR3YWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlLFxyXG5cdFx0cmVzcG9uc2VJc1JlY2lldmVkOiB0cnVlLFxyXG5cdFx0c2VydmljZUNhbGxGYWlsZWQ6IGZhbHNlXHJcblx0fTtcclxuXHJcblx0aWYgKG1lc3NhZ2U/LnN1Y2Nlc3MpIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRzdW1tYXJ5OiBnZXRUcmFuc2xhdGVkTWVzc2FnZSg8c3RyaW5nPm1lc3NhZ2Uuc3VjY2VzcywgdHJhbnNsb2NvU2VydmljZSwgcmVzcG9uc2UpXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZXJyb3JTdGF0ZSA9IGFzeW5jIChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuXHR0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuXHRrZXljbG9ha1NlcnZpY2U6IEtleWNsb2FrU2VydmljZSxcclxuXHRtZXNzYWdlPzogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZzsgaWdub3JlZFN0YXR1c0NvZGVzPzogSHR0cFN0YXR1c0NvZGVbXSB9XHJcbikgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0bGV0IGh0dHBFcnJvcjogc3RyaW5nO1xyXG5cclxuXHRzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xyXG5cdFx0Y2FzZSA0MDA6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdIYXRhbMSxIMSwc3Rlayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDE6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdZZXRraXNpeiBFcmnFn2ltJztcclxuXHRcdFx0YXdhaXQga2V5Y2xvYWtTZXJ2aWNlLmxvZ2luKHsgcmVkaXJlY3RVcmk6IHdpbmRvdy5sb2NhdGlvbi5ocmVmIH0pO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDAzOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnRXJpxZ9pbSBFbmdlbGxlbmRpJztcclxuXHRcdFx0aWYgKGtleWNsb2FrU2VydmljZS5pc1Rva2VuRXhwaXJlZCgpKSBhd2FpdCBrZXljbG9ha1NlcnZpY2UubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDQ6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYXluYWsgQnVsdW5hbWFkxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDA1OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnxLB6aW4gVmVyaWxtZXllbiBNZXRvZCc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDY6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYWJ1bCBFZGlsZW1leiBCYcWfbMSxayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDg6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdaYW1hbiBBxZ/EsW3EsSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDk6XHJcblx0XHRcdGh0dHBFcnJvciA9ICfDh2FrxLHFn21hJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBZYXDEsWxhbmTEsXJtYSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMjpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0dlw6dlcnNpeiBBxJ8gR2XDp2lkaSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDM6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdTdW51Y3UgSGl6bWV0IFZlcm1peW9yJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0HEnyBHZcOnaWRpIFphbWFuIEHFn8SxbcSxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0hUVFAgUHJvdG9rb2wgRGVzdGVrbGVubWl5b3InO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTExOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEtpbWxpayBEb8SfcnVsYW1hc8SxIEdlcmVrbGknO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTk5OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEJhxJ9sYW50xLFzxLEgWmFtYW4gQcWfxLFtxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdGh0dHBFcnJvciA9IGVycm9yPy5lcnJvcj8ubWVzc2FnZTtcclxuXHRcdFx0YnJlYWs7XHJcblx0fVxyXG5cclxuXHRpZiAoIWh0dHBFcnJvcikgcmV0dXJuO1xyXG5cclxuXHRpZiAobWVzc2FnZT8uaWdub3JlZFN0YXR1c0NvZGVzPy5pbmNsdWRlcyhlcnJvci5zdGF0dXMpKSByZXR1cm47XHJcblxyXG5cdGlmIChlcnJvci5lcnJvcj8uZGV0YWlscz8ubGVuZ3RoICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZXJyb3IuZGV0YWlscykpIHtcclxuXHRcdGVycm9yLmVycm9yLmRldGFpbHMuZm9yRWFjaCgoZGV0YWlsOiBFcnJvckRldGFpbCkgPT4ge1xyXG5cdFx0XHRjb25zdCBrZXkgPSAnZmllbGRzLicgKyBkZXRhaWwuZmllbGROYW1lO1xyXG5cdFx0XHRjb25zdCB0cmFuc2xhdGVkRmllbGQgPSB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShrZXkpO1xyXG5cdFx0XHRjb25zdCB0ZXh0ID0gdHJhbnNsYXRlZEZpZWxkID09PSBrZXkgPyBkZXRhaWwuZmllbGROYW1lIDogdHJhbnNsYXRlZEZpZWxkO1xyXG5cclxuXHRcdFx0Y29uc3QgZGV0YWlsVGV4dCA9IChkZXRhaWwuZmllbGROYW1lID8gdGV4dCArICcgLSAnIDogJycpICsgZGV0YWlsLnJlYXNvbjtcclxuXHJcblx0XHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0a2V5OiAndG9hc3Qtcm9vdCcsXHJcblx0XHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdFx0c3VtbWFyeTogZXJyb3I/LmVycm9yPy5tZXNzYWdlLFxyXG5cdFx0XHRcdGRldGFpbDogZGV0YWlsVGV4dFxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6IGh0dHBFcnJvcixcclxuXHRcdFx0ZGV0YWlsOiBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2VcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aWYgKG1lc3NhZ2U/LmVycm9yKSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6IGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBnZXRUcmFuc2xhdGVkTWVzc2FnZShtZXNzYWdlLmVycm9yLCB0cmFuc2xvY29TZXJ2aWNlKVxyXG5cdFx0fSk7XHJcblx0fVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHdhcm5pbmdTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHJlc3BvbnNlOiBhbnksXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbik6IHZvaWQgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0aWYgKHJlc3BvbnNlPy5kZXRhaWxzICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZGV0YWlscykgJiYgcmVzcG9uc2UuZGV0YWlscy5sZW5ndGggPiAwKSB7XHJcblx0XHRyZXNwb25zZS5kZXRhaWxzLmZvckVhY2goKGRldGFpbDogRXJyb3JEZXRhaWwpID0+IHtcclxuXHRcdFx0bWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRcdHN1bW1hcnk6IHJlc3BvbnNlPy5tZXNzYWdlLFxyXG5cdFx0XHRcdGRldGFpbDogKGRldGFpbC5maWVsZE5hbWUgIT09IG51bGwgPyBkZXRhaWwuZmllbGROYW1lICsgJyAtICcgOiAnJykgKyBkZXRhaWwucmVhc29uXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fSBlbHNlIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRkZXRhaWw6IHJlc3BvbnNlPy5tZXNzYWdlXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5jb25zdCBnZXRUcmFuc2xhdGVkTWVzc2FnZSA9IChtZXNzYWdlQ29kZTogc3RyaW5nLCB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLCByZXNwb25zZT86IGFueSk6IHN0cmluZyA9PiB7XHJcblx0Y29uc3QgdHJhbnNsYXRlT2JqZWN0ID0gdHJhbnNsb2NvU2VydmljZS5nZXRUcmFuc2xhdGlvbigpLmdldCh0cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKSk7XHJcblx0bGV0IHRyYW5zbGF0ZWRNZXNzYWdlID0gdHJhbnNsYXRlT2JqZWN0Py5bbWVzc2FnZUNvZGVdID8/IG1lc3NhZ2VDb2RlO1xyXG5cclxuXHRjb25zdCBwYXJhbVN0YXJ0U3ltYm9sID0gJ3t7JztcclxuXHRjb25zdCBwYXJhbUVuZFN5bWJvbCA9ICd9fSc7XHJcblxyXG5cdGlmIChyZXNwb25zZSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbVN0YXJ0U3ltYm9sKSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbUVuZFN5bWJvbCkpIHtcclxuXHRcdGRvIHtcclxuXHRcdFx0bGV0IHBhcmFtU3RhcnRJbmRleCA9IHRyYW5zbGF0ZWRNZXNzYWdlLmluZGV4T2YocGFyYW1TdGFydFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUVuZEluZGV4ID0gdHJhbnNsYXRlZE1lc3NhZ2UuaW5kZXhPZihwYXJhbUVuZFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUtleSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnNsaWNlKHBhcmFtU3RhcnRJbmRleCArIHBhcmFtU3RhcnRTeW1ib2wubGVuZ3RoLCBwYXJhbUVuZEluZGV4KTtcclxuXHJcblx0XHRcdC8vIFNwbGl0dGluZyB0aGUga2V5IHRvIGdldCBuZXN0ZWQgb2JqZWN0IHZhbHVlc1xyXG5cdFx0XHRsZXQgcGFyYW1LZXlMaXN0ID0gcGFyYW1LZXkuc3BsaXQoJy4nKTtcclxuXHRcdFx0bGV0IHBhcmFtVmFsdWU7XHJcblxyXG5cdFx0XHRmb3IgKGxldCBrZXkgb2YgcGFyYW1LZXlMaXN0KSB7XHJcblx0XHRcdFx0cGFyYW1WYWx1ZSA9IHBhcmFtVmFsdWUgPyBwYXJhbVZhbHVlW2tleV0gOiByZXNwb25zZVtrZXldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgcmVwbGFjZVBhdHRlcm4gPSBgJHtwYXJhbVN0YXJ0U3ltYm9sfSR7cGFyYW1LZXl9JHtwYXJhbUVuZFN5bWJvbH1gO1xyXG5cdFx0XHR0cmFuc2xhdGVkTWVzc2FnZSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnJlcGxhY2UocmVwbGFjZVBhdHRlcm4sIHBhcmFtVmFsdWUpO1xyXG5cdFx0fSB3aGlsZSAodHJhbnNsYXRlZE1lc3NhZ2UuaW5jbHVkZXMocGFyYW1TdGFydFN5bWJvbCkpO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHRyYW5zbGF0ZWRNZXNzYWdlO1xyXG59O1xyXG4iXX0=
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZVN0YXRlTWV0aG9kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvaHR0cC9zcmMvc2VydmljZVN0YXRlTWV0aG9kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQWdCLEVBQVEsRUFBRTtJQUNyRixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUc7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsSUFBSTtRQUN4QixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGlCQUFpQixFQUFFLEtBQUs7S0FDeEIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLHVGQUF1RjtBQUN2RixxR0FBcUc7QUFDckcsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFnQyxFQUFFLFdBQWdCLEVBQVEsRUFBRTtJQUM3RixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsSUFBSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUNqQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0FBQ0YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQzNCLE1BQWdDLEVBQ2hDLFdBQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxjQUE4QixFQUM5QixPQUFxRixFQUNyRixRQUFjLEVBQ1AsRUFBRTtJQUNULE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRztRQUNyQixhQUFhLEVBQUUsSUFBSTtRQUNuQixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLGtCQUFrQixFQUFFLElBQUk7UUFDeEIsaUJBQWlCLEVBQUUsS0FBSztLQUN4QixDQUFDO0lBRUYsSUFBSSxPQUFP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QUFHLEdBQUcsZ0JBQWdCLEdBQUcsUUFBUSxHQUFHLGNBQWMsRUFBRSxDQUFDO1lBQ3ZFLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0UsQ0FBQyxRQUFRLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO0lBQ3hELENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuXHJcbmltcG9ydCB7IEVycm9yRGV0YWlsLCBTZXJ2aWNlQ2FsbFN0YXRlTWFwIH0gZnJvbSAnLi4vbGliL2ludGVyZmFjZXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNhbGxTdGF0ZSA9IChzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55Piwgc2VydmljZU5hbWU6IGFueSk6IHZvaWQgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiB0cnVlLFxyXG5cdFx0cmVzcG9uc2VJc1JlY2lldmVkOiBmYWxzZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiBmYWxzZVxyXG5cdH07XHJcbn07XHJcblxyXG4vLyDEsHN0ZWsgaXB0YWwvdGVhcmRvd24gb2xkdcSfdW5kYSAoZmluYWxpemUpIHdhaXRpbmdGb3JSZXNwb25zZSd1IHRlbWl6bGVyLiBOb3JtYWwgYWvEscWfXHJcbi8vIChzdWNjZXNzL3dhcm5pbmcvZXJyb3IpIHN0YXRlJ2kgemF0ZW4gZ8O8bmNlbGxlZGl5c2Ugbm8tb3Ag4oCUIHlhbG7EsXpjYSB0YWvEsWzEsSBrYWxhbiB0cnVlJ3l1IGTDvMWfw7xyw7xyLlxyXG5leHBvcnQgY29uc3QgY2xlYXJXYWl0aW5nU3RhdGUgPSAoc3RhdGVzOiBTZXJ2aWNlQ2FsbFN0YXRlTWFwPGFueT4sIHNlcnZpY2VOYW1lOiBhbnkpOiB2b2lkID0+IHtcclxuXHRjb25zdCBjdXJyZW50ID0gc3RhdGVzW3NlcnZpY2VOYW1lXTtcclxuXHRpZiAoY3VycmVudD8ud2FpdGluZ0ZvclJlc3BvbnNlKSB7XHJcblx0XHRzdGF0ZXNbc2VydmljZU5hbWVdID0geyAuLi5jdXJyZW50LCB3YWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlIH07XHJcblx0fVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN1Y2Nlc3NTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdG1lc3NhZ2U/OiB7IHN1Y2Nlc3M/OiBzdHJpbmc7IGVycm9yPzogc3RyaW5nOyBpZ25vcmVkU3RhdHVzQ29kZXM/OiBIdHRwU3RhdHVzQ29kZVtdIH0sXHJcblx0cmVzcG9uc2U/OiBhbnlcclxuKTogdm9pZCA9PiB7XHJcblx0c3RhdGVzW3NlcnZpY2VOYW1lXSA9IHtcclxuXHRcdHNlcnZpY2VDYWxsZWQ6IHRydWUsXHJcblx0XHR3YWl0aW5nRm9yUmVzcG9uc2U6IGZhbHNlLFxyXG5cdFx0cmVzcG9uc2VJc1JlY2lldmVkOiB0cnVlLFxyXG5cdFx0c2VydmljZUNhbGxGYWlsZWQ6IGZhbHNlXHJcblx0fTtcclxuXHJcblx0aWYgKG1lc3NhZ2U/LnN1Y2Nlc3MpIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRzdW1tYXJ5OiBnZXRUcmFuc2xhdGVkTWVzc2FnZSg8c3RyaW5nPm1lc3NhZ2Uuc3VjY2VzcywgdHJhbnNsb2NvU2VydmljZSwgcmVzcG9uc2UpXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZXJyb3JTdGF0ZSA9IGFzeW5jIChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuXHR0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuXHRrZXljbG9ha1NlcnZpY2U6IEtleWNsb2FrU2VydmljZSxcclxuXHRtZXNzYWdlPzogeyBzdWNjZXNzPzogc3RyaW5nOyBlcnJvcj86IHN0cmluZzsgaWdub3JlZFN0YXR1c0NvZGVzPzogSHR0cFN0YXR1c0NvZGVbXSB9XHJcbikgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0bGV0IGh0dHBFcnJvcjogc3RyaW5nO1xyXG5cclxuXHRzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xyXG5cdFx0Y2FzZSA0MDA6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdIYXRhbMSxIMSwc3Rlayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDE6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdZZXRraXNpeiBFcmnFn2ltJztcclxuXHRcdFx0YXdhaXQga2V5Y2xvYWtTZXJ2aWNlLmxvZ2luKHsgcmVkaXJlY3RVcmk6IHdpbmRvdy5sb2NhdGlvbi5ocmVmIH0pO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDAzOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnRXJpxZ9pbSBFbmdlbGxlbmRpJztcclxuXHRcdFx0aWYgKGtleWNsb2FrU2VydmljZS5pc1Rva2VuRXhwaXJlZCgpKSBhd2FpdCBrZXljbG9ha1NlcnZpY2UubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDQ6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYXluYWsgQnVsdW5hbWFkxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNDA1OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnxLB6aW4gVmVyaWxtZXllbiBNZXRvZCc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDY6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdLYWJ1bCBFZGlsZW1leiBCYcWfbMSxayc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDg6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdaYW1hbiBBxZ/EsW3EsSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA0MDk6XHJcblx0XHRcdGh0dHBFcnJvciA9ICfDh2FrxLHFn21hJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ1N1bnVjdSBZYXDEsWxhbmTEsXJtYSBIYXRhc8SxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwMjpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0dlw6dlcnNpeiBBxJ8gR2XDp2lkaSc7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSA1MDM6XHJcblx0XHRcdGh0dHBFcnJvciA9ICdTdW51Y3UgSGl6bWV0IFZlcm1peW9yJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNDpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0HEnyBHZcOnaWRpIFphbWFuIEHFn8SxbcSxJztcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIDUwNTpcclxuXHRcdFx0aHR0cEVycm9yID0gJ0hUVFAgUHJvdG9rb2wgRGVzdGVrbGVubWl5b3InO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTExOlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEtpbWxpayBEb8SfcnVsYW1hc8SxIEdlcmVrbGknO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgNTk5OlxyXG5cdFx0XHRodHRwRXJyb3IgPSAnQcSfIEJhxJ9sYW50xLFzxLEgWmFtYW4gQcWfxLFtxLEnO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdGh0dHBFcnJvciA9IGVycm9yPy5lcnJvcj8ubWVzc2FnZTtcclxuXHRcdFx0YnJlYWs7XHJcblx0fVxyXG5cclxuXHRpZiAoIWh0dHBFcnJvcikgcmV0dXJuO1xyXG5cclxuXHRpZiAobWVzc2FnZT8uaWdub3JlZFN0YXR1c0NvZGVzPy5pbmNsdWRlcyhlcnJvci5zdGF0dXMpKSByZXR1cm47XHJcblxyXG5cdGlmIChlcnJvci5lcnJvcj8uZGV0YWlscz8ubGVuZ3RoICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZXJyb3IuZGV0YWlscykpIHtcclxuXHRcdGVycm9yLmVycm9yLmRldGFpbHMuZm9yRWFjaCgoZGV0YWlsOiBFcnJvckRldGFpbCkgPT4ge1xyXG5cdFx0XHRjb25zdCBrZXkgPSAnZmllbGRzLicgKyBkZXRhaWwuZmllbGROYW1lO1xyXG5cdFx0XHRjb25zdCB0cmFuc2xhdGVkRmllbGQgPSB0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZShrZXkpO1xyXG5cdFx0XHRjb25zdCB0ZXh0ID0gdHJhbnNsYXRlZEZpZWxkID09PSBrZXkgPyBkZXRhaWwuZmllbGROYW1lIDogdHJhbnNsYXRlZEZpZWxkO1xyXG5cclxuXHRcdFx0Y29uc3QgZGV0YWlsVGV4dCA9IChkZXRhaWwuZmllbGROYW1lID8gdGV4dCArICcgLSAnIDogJycpICsgZGV0YWlsLnJlYXNvbjtcclxuXHJcblx0XHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0a2V5OiAndG9hc3Qtcm9vdCcsXHJcblx0XHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdFx0c3VtbWFyeTogZXJyb3I/LmVycm9yPy5tZXNzYWdlLFxyXG5cdFx0XHRcdGRldGFpbDogZGV0YWlsVGV4dFxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6IGh0dHBFcnJvcixcclxuXHRcdFx0ZGV0YWlsOiBlcnJvcj8uZXJyb3I/Lm1lc3NhZ2VcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aWYgKG1lc3NhZ2U/LmVycm9yKSB7XHJcblx0XHRtZXNzYWdlU2VydmljZS5hZGQoe1xyXG5cdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0c2V2ZXJpdHk6ICdlcnJvcicsXHJcblx0XHRcdHN1bW1hcnk6IGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBnZXRUcmFuc2xhdGVkTWVzc2FnZShtZXNzYWdlLmVycm9yLCB0cmFuc2xvY29TZXJ2aWNlKVxyXG5cdFx0fSk7XHJcblx0fVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHdhcm5pbmdTdGF0ZSA9IChcclxuXHRzdGF0ZXM6IFNlcnZpY2VDYWxsU3RhdGVNYXA8YW55PixcclxuXHRzZXJ2aWNlTmFtZTogYW55LFxyXG5cdHJlc3BvbnNlOiBhbnksXHJcblx0bWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXHJcbik6IHZvaWQgPT4ge1xyXG5cdHN0YXRlc1tzZXJ2aWNlTmFtZV0gPSB7XHJcblx0XHRzZXJ2aWNlQ2FsbGVkOiB0cnVlLFxyXG5cdFx0d2FpdGluZ0ZvclJlc3BvbnNlOiBmYWxzZSxcclxuXHRcdHJlc3BvbnNlSXNSZWNpZXZlZDogdHJ1ZSxcclxuXHRcdHNlcnZpY2VDYWxsRmFpbGVkOiB0cnVlXHJcblx0fTtcclxuXHJcblx0aWYgKHJlc3BvbnNlPy5kZXRhaWxzICYmIEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZGV0YWlscykgJiYgcmVzcG9uc2UuZGV0YWlscy5sZW5ndGggPiAwKSB7XHJcblx0XHRyZXNwb25zZS5kZXRhaWxzLmZvckVhY2goKGRldGFpbDogRXJyb3JEZXRhaWwpID0+IHtcclxuXHRcdFx0bWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuXHRcdFx0XHRrZXk6ICd0b2FzdC1yb290JyxcclxuXHRcdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRcdHN1bW1hcnk6IHJlc3BvbnNlPy5tZXNzYWdlLFxyXG5cdFx0XHRcdGRldGFpbDogKGRldGFpbC5maWVsZE5hbWUgIT09IG51bGwgPyBkZXRhaWwuZmllbGROYW1lICsgJyAtICcgOiAnJykgKyBkZXRhaWwucmVhc29uXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fSBlbHNlIHtcclxuXHRcdG1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdGtleTogJ3RvYXN0LXJvb3QnLFxyXG5cdFx0XHRzZXZlcml0eTogJ3dhcm4nLFxyXG5cdFx0XHRkZXRhaWw6IHJlc3BvbnNlPy5tZXNzYWdlXHJcblx0XHR9KTtcclxuXHR9XHJcbn07XHJcblxyXG5jb25zdCBnZXRUcmFuc2xhdGVkTWVzc2FnZSA9IChtZXNzYWdlQ29kZTogc3RyaW5nLCB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLCByZXNwb25zZT86IGFueSk6IHN0cmluZyA9PiB7XHJcblx0Y29uc3QgdHJhbnNsYXRlT2JqZWN0ID0gdHJhbnNsb2NvU2VydmljZS5nZXRUcmFuc2xhdGlvbigpLmdldCh0cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKSk7XHJcblx0bGV0IHRyYW5zbGF0ZWRNZXNzYWdlID0gdHJhbnNsYXRlT2JqZWN0Py5bbWVzc2FnZUNvZGVdID8/IG1lc3NhZ2VDb2RlO1xyXG5cclxuXHRjb25zdCBwYXJhbVN0YXJ0U3ltYm9sID0gJ3t7JztcclxuXHRjb25zdCBwYXJhbUVuZFN5bWJvbCA9ICd9fSc7XHJcblxyXG5cdGlmIChyZXNwb25zZSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbVN0YXJ0U3ltYm9sKSAmJiB0cmFuc2xhdGVkTWVzc2FnZS5pbmNsdWRlcyhwYXJhbUVuZFN5bWJvbCkpIHtcclxuXHRcdGRvIHtcclxuXHRcdFx0bGV0IHBhcmFtU3RhcnRJbmRleCA9IHRyYW5zbGF0ZWRNZXNzYWdlLmluZGV4T2YocGFyYW1TdGFydFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUVuZEluZGV4ID0gdHJhbnNsYXRlZE1lc3NhZ2UuaW5kZXhPZihwYXJhbUVuZFN5bWJvbCk7XHJcblx0XHRcdGxldCBwYXJhbUtleSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnNsaWNlKHBhcmFtU3RhcnRJbmRleCArIHBhcmFtU3RhcnRTeW1ib2wubGVuZ3RoLCBwYXJhbUVuZEluZGV4KTtcclxuXHJcblx0XHRcdC8vIFNwbGl0dGluZyB0aGUga2V5IHRvIGdldCBuZXN0ZWQgb2JqZWN0IHZhbHVlc1xyXG5cdFx0XHRsZXQgcGFyYW1LZXlMaXN0ID0gcGFyYW1LZXkuc3BsaXQoJy4nKTtcclxuXHRcdFx0bGV0IHBhcmFtVmFsdWU7XHJcblxyXG5cdFx0XHRmb3IgKGxldCBrZXkgb2YgcGFyYW1LZXlMaXN0KSB7XHJcblx0XHRcdFx0cGFyYW1WYWx1ZSA9IHBhcmFtVmFsdWUgPyBwYXJhbVZhbHVlW2tleV0gOiByZXNwb25zZVtrZXldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgcmVwbGFjZVBhdHRlcm4gPSBgJHtwYXJhbVN0YXJ0U3ltYm9sfSR7cGFyYW1LZXl9JHtwYXJhbUVuZFN5bWJvbH1gO1xyXG5cdFx0XHR0cmFuc2xhdGVkTWVzc2FnZSA9IHRyYW5zbGF0ZWRNZXNzYWdlLnJlcGxhY2UocmVwbGFjZVBhdHRlcm4sIHBhcmFtVmFsdWUpO1xyXG5cdFx0fSB3aGlsZSAodHJhbnNsYXRlZE1lc3NhZ2UuaW5jbHVkZXMocGFyYW1TdGFydFN5bWJvbCkpO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHRyYW5zbGF0ZWRNZXNzYWdlO1xyXG59O1xyXG4iXX0=
@@ -4,6 +4,7 @@ import { fromEvent } from 'rxjs';
4
4
  import { filter, switchMap, take } from 'rxjs/operators';
5
5
  import { bridge } from 'aril/boot/bridge';
6
6
  import { Apps } from 'aril/boot/config/apps';
7
+ import { ActivityService, LOGGER_SESSION_HEADER } from 'aril/util/activity';
7
8
  const HOST_APP_HEADERS = {
8
9
  [Apps.THOR]: { 'x-yeap-application': 'thor', 'x-application': 'thor', 'x-module': 'thor-fe' },
9
10
  [Apps.LENA]: { 'x-yeap-application': 'lena', 'x-application': 'lena', 'x-module': 'lena-fe' },
@@ -18,10 +19,12 @@ export const authInterceptor = (req, next) => {
18
19
  const activeHost = bridge.activeHost();
19
20
  const headers = isHostApp(activeHost) ? HOST_APP_HEADERS[activeHost] : {};
20
21
  const csrfToken = getCsrfToken();
22
+ const loggerSessionId = inject(ActivityService).getSessionId();
21
23
  const authReq = req.clone({
22
24
  setHeaders: {
23
25
  csrf_token: csrfToken ?? '',
24
- ...headers
26
+ ...headers,
27
+ ...(loggerSessionId ? { [LOGGER_SESSION_HEADER]: loggerSessionId } : {})
25
28
  }
26
29
  });
27
30
  return next(authReq);
@@ -40,4 +43,4 @@ export const keycloakAuthInterceptor = (req, next) => {
40
43
  }
41
44
  return fromEvent(document, 'visibilitychange').pipe(filter(() => document.visibilityState === 'visible'), take(1), switchMap(() => interceptor.intercept(req, { handle: next })));
42
45
  };
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJN0MsTUFBTSxnQkFBZ0IsR0FBc0Q7SUFDM0UsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO0lBQzdGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtJQUM3RixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUU7Q0FDN0YsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBZ0MsRUFBb0IsRUFBRSxDQUN4RSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztBQUVuRSxNQUFNLFlBQVksR0FBRyxHQUF1QixFQUFFLENBQzdDLFFBQVEsQ0FBQyxNQUFNO0tBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQztLQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3QyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVsQixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQXNCLENBQUMsR0FBeUIsRUFBRSxJQUFtQixFQUFFLEVBQUU7SUFDcEcsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3ZDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRSxNQUFNLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQztJQUVqQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3pCLFVBQVUsRUFBRTtZQUNYLFVBQVUsRUFBRSxTQUFTLElBQUksRUFBRTtZQUMzQixHQUFHLE9BQU87U0FDVjtLQUNELENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQzVHLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRXRELElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDL0UsT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQ2xELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxFQUNwRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDN0QsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIYW5kbGVyRm4sIEh0dHBJbnRlcmNlcHRvckZuLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0JlYXJlckludGVyY2VwdG9yIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IGJyaWRnZSB9IGZyb20gJ2FyaWwvYm9vdC9icmlkZ2UnO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuXHJcbnR5cGUgSG9zdEFwcCA9IEFwcHMuVEhPUiB8IEFwcHMuWUVBUCB8IEFwcHMuTEVOQTtcclxuXHJcbmNvbnN0IEhPU1RfQVBQX0hFQURFUlM6IFJlY29yZDxIb3N0QXBwLCBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj4gPSB7XHJcblx0W0FwcHMuVEhPUl06IHsgJ3gteWVhcC1hcHBsaWNhdGlvbic6ICd0aG9yJywgJ3gtYXBwbGljYXRpb24nOiAndGhvcicsICd4LW1vZHVsZSc6ICd0aG9yLWZlJyB9LFxyXG5cdFtBcHBzLkxFTkFdOiB7ICd4LXllYXAtYXBwbGljYXRpb24nOiAnbGVuYScsICd4LWFwcGxpY2F0aW9uJzogJ2xlbmEnLCAneC1tb2R1bGUnOiAnbGVuYS1mZScgfSxcclxuXHRbQXBwcy5ZRUFQXTogeyAneC15ZWFwLWFwcGxpY2F0aW9uJzogJ3llYXAnLCAneC1hcHBsaWNhdGlvbic6ICd5ZWFwJywgJ3gtbW9kdWxlJzogJ3llYXAtZmUnIH1cclxufTtcclxuXHJcbmNvbnN0IGlzSG9zdEFwcCA9ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZhbHVlIGlzIEhvc3RBcHAgPT5cclxuXHR2YWx1ZSA9PT0gQXBwcy5USE9SIHx8IHZhbHVlID09PSBBcHBzLkxFTkEgfHwgdmFsdWUgPT09IEFwcHMuWUVBUDtcclxuXHJcbmNvbnN0IGdldENzcmZUb2tlbiA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cclxuXHRkb2N1bWVudC5jb29raWVcclxuXHRcdC5zcGxpdCgnOyAnKVxyXG5cdFx0LmZpbmQoKHJvdykgPT4gcm93LnN0YXJ0c1dpdGgoJ2NzcmZfdG9rZW49JykpXHJcblx0XHQ/LnNwbGl0KCc9JylbMV07XHJcblxyXG5leHBvcnQgY29uc3QgYXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PiB7XHJcblx0Y29uc3QgYWN0aXZlSG9zdCA9IGJyaWRnZS5hY3RpdmVIb3N0KCk7XHJcblx0Y29uc3QgaGVhZGVycyA9IGlzSG9zdEFwcChhY3RpdmVIb3N0KSA/IEhPU1RfQVBQX0hFQURFUlNbYWN0aXZlSG9zdF0gOiB7fTtcclxuXHRjb25zdCBjc3JmVG9rZW4gPSBnZXRDc3JmVG9rZW4oKTtcclxuXHJcblx0Y29uc3QgYXV0aFJlcSA9IHJlcS5jbG9uZSh7XHJcblx0XHRzZXRIZWFkZXJzOiB7XHJcblx0XHRcdGNzcmZfdG9rZW46IGNzcmZUb2tlbiA/PyAnJyxcclxuXHRcdFx0Li4uaGVhZGVyc1xyXG5cdFx0fVxyXG5cdH0pO1xyXG5cclxuXHRyZXR1cm4gbmV4dChhdXRoUmVxKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBLZXljbG9hayB0b2tlbiByZWZyZXNoIFhIUidsYXLEsW7EsW4gdGFiIGluYWN0aXZlIGlrZW4gYWJvcnQgb2x1cCBgSW52YWxpZFN0YXRlRXJyb3JgXHJcbiAqIGbEsXJsYXRtYXPEsW7EsSDDtm5sZXIuIGBLZXljbG9ha0JlYXJlckludGVyY2VwdG9yLmludGVyY2VwdGAgbGF6eSBPYnNlcnZhYmxlIGTDtm5lciDigJRcclxuICogc3Vic2NyaWJlIGVkaWxtZWRpxJ9pIHPDvHJlY2Ugc2lkZS1lZmZlY3QgKHRva2VuIHJlZnJlc2gpIHlvay4gVGFiIGB2aXNpYmlsaXR5U3RhdGVgXHJcbiAqIGAnaGlkZGVuJ2AgaWtlbiBzdWJzY3JpYmUnxLEgYHZpc2liaWxpdHljaGFuZ2Ug4oaSICd2aXNpYmxlJ2AgZXZlbnQnaW5lIGthZGFyIGVydGVsZXJpejtcclxuICogdGFiIHRla3JhciBnw7Zyw7xuw7xyIG9sdW5jYSByZXF1ZXN0IGZyZXNoIHRva2VuIGlsZSBhdMSxbMSxci5cclxuICovXHJcbmV4cG9ydCBjb25zdCBrZXljbG9ha0F1dGhJbnRlcmNlcHRvcjogSHR0cEludGVyY2VwdG9yRm4gPSAocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXJGbikgPT4ge1xyXG5cdGNvbnN0IGludGVyY2VwdG9yID0gaW5qZWN0KEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IpO1xyXG5cclxuXHRpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyB8fCBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xyXG5cdFx0cmV0dXJuIGludGVyY2VwdG9yLmludGVyY2VwdChyZXEsIHsgaGFuZGxlOiBuZXh0IH0pO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIGZyb21FdmVudChkb2N1bWVudCwgJ3Zpc2liaWxpdHljaGFuZ2UnKS5waXBlKFxyXG5cdFx0ZmlsdGVyKCgpID0+IGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ3Zpc2libGUnKSxcclxuXHRcdHRha2UoMSksXHJcblx0XHRzd2l0Y2hNYXAoKCkgPT4gaW50ZXJjZXB0b3IuaW50ZXJjZXB0KHJlcSwgeyBoYW5kbGU6IG5leHQgfSkpXHJcblx0KTtcclxufTtcclxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTVFLE1BQU0sZ0JBQWdCLEdBQXNEO0lBQzNFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtJQUM3RixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUU7SUFDN0YsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFO0NBQzdGLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWdDLEVBQW9CLEVBQUUsQ0FDeEUsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7QUFFbkUsTUFBTSxZQUFZLEdBQUcsR0FBdUIsRUFBRSxDQUM3QyxRQUFRLENBQUMsTUFBTTtLQUNiLEtBQUssQ0FBQyxJQUFJLENBQUM7S0FDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFbEIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQ3BHLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUUsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFDakMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRS9ELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDekIsVUFBVSxFQUFFO1lBQ1gsVUFBVSxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQzNCLEdBQUcsT0FBTztZQUNWLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDeEU7S0FDRCxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBc0IsQ0FBQyxHQUF5QixFQUFFLElBQW1CLEVBQUUsRUFBRTtJQUM1RyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUV0RCxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxRQUFRLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQy9FLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUNsRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsRUFDcEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQzdELENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGFuZGxlckZuLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvciB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcbmltcG9ydCB7IEFjdGl2aXR5U2VydmljZSwgTE9HR0VSX1NFU1NJT05fSEVBREVSIH0gZnJvbSAnYXJpbC91dGlsL2FjdGl2aXR5JztcclxuXHJcbnR5cGUgSG9zdEFwcCA9IEFwcHMuVEhPUiB8IEFwcHMuWUVBUCB8IEFwcHMuTEVOQTtcclxuXHJcbmNvbnN0IEhPU1RfQVBQX0hFQURFUlM6IFJlY29yZDxIb3N0QXBwLCBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj4gPSB7XHJcblx0W0FwcHMuVEhPUl06IHsgJ3gteWVhcC1hcHBsaWNhdGlvbic6ICd0aG9yJywgJ3gtYXBwbGljYXRpb24nOiAndGhvcicsICd4LW1vZHVsZSc6ICd0aG9yLWZlJyB9LFxyXG5cdFtBcHBzLkxFTkFdOiB7ICd4LXllYXAtYXBwbGljYXRpb24nOiAnbGVuYScsICd4LWFwcGxpY2F0aW9uJzogJ2xlbmEnLCAneC1tb2R1bGUnOiAnbGVuYS1mZScgfSxcclxuXHRbQXBwcy5ZRUFQXTogeyAneC15ZWFwLWFwcGxpY2F0aW9uJzogJ3llYXAnLCAneC1hcHBsaWNhdGlvbic6ICd5ZWFwJywgJ3gtbW9kdWxlJzogJ3llYXAtZmUnIH1cclxufTtcclxuXHJcbmNvbnN0IGlzSG9zdEFwcCA9ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZhbHVlIGlzIEhvc3RBcHAgPT5cclxuXHR2YWx1ZSA9PT0gQXBwcy5USE9SIHx8IHZhbHVlID09PSBBcHBzLkxFTkEgfHwgdmFsdWUgPT09IEFwcHMuWUVBUDtcclxuXHJcbmNvbnN0IGdldENzcmZUb2tlbiA9ICgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cclxuXHRkb2N1bWVudC5jb29raWVcclxuXHRcdC5zcGxpdCgnOyAnKVxyXG5cdFx0LmZpbmQoKHJvdykgPT4gcm93LnN0YXJ0c1dpdGgoJ2NzcmZfdG9rZW49JykpXHJcblx0XHQ/LnNwbGl0KCc9JylbMV07XHJcblxyXG5leHBvcnQgY29uc3QgYXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PiB7XHJcblx0Y29uc3QgYWN0aXZlSG9zdCA9IGJyaWRnZS5hY3RpdmVIb3N0KCk7XHJcblx0Y29uc3QgaGVhZGVycyA9IGlzSG9zdEFwcChhY3RpdmVIb3N0KSA/IEhPU1RfQVBQX0hFQURFUlNbYWN0aXZlSG9zdF0gOiB7fTtcclxuXHRjb25zdCBjc3JmVG9rZW4gPSBnZXRDc3JmVG9rZW4oKTtcclxuXHRjb25zdCBsb2dnZXJTZXNzaW9uSWQgPSBpbmplY3QoQWN0aXZpdHlTZXJ2aWNlKS5nZXRTZXNzaW9uSWQoKTtcclxuXHJcblx0Y29uc3QgYXV0aFJlcSA9IHJlcS5jbG9uZSh7XHJcblx0XHRzZXRIZWFkZXJzOiB7XHJcblx0XHRcdGNzcmZfdG9rZW46IGNzcmZUb2tlbiA/PyAnJyxcclxuXHRcdFx0Li4uaGVhZGVycyxcclxuXHRcdFx0Li4uKGxvZ2dlclNlc3Npb25JZCA/IHsgW0xPR0dFUl9TRVNTSU9OX0hFQURFUl06IGxvZ2dlclNlc3Npb25JZCB9IDoge30pXHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdHJldHVybiBuZXh0KGF1dGhSZXEpO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEtleWNsb2FrIHRva2VuIHJlZnJlc2ggWEhSJ2xhcsSxbsSxbiB0YWIgaW5hY3RpdmUgaWtlbiBhYm9ydCBvbHVwIGBJbnZhbGlkU3RhdGVFcnJvcmBcclxuICogZsSxcmxhdG1hc8SxbsSxIMO2bmxlci4gYEtleWNsb2FrQmVhcmVySW50ZXJjZXB0b3IuaW50ZXJjZXB0YCBsYXp5IE9ic2VydmFibGUgZMO2bmVyIOKAlFxyXG4gKiBzdWJzY3JpYmUgZWRpbG1lZGnEn2kgc8O8cmVjZSBzaWRlLWVmZmVjdCAodG9rZW4gcmVmcmVzaCkgeW9rLiBUYWIgYHZpc2liaWxpdHlTdGF0ZWBcclxuICogYCdoaWRkZW4nYCBpa2VuIHN1YnNjcmliZSfEsSBgdmlzaWJpbGl0eWNoYW5nZSDihpIgJ3Zpc2libGUnYCBldmVudCdpbmUga2FkYXIgZXJ0ZWxlcml6O1xyXG4gKiB0YWIgdGVrcmFyIGfDtnLDvG7DvHIgb2x1bmNhIHJlcXVlc3QgZnJlc2ggdG9rZW4gaWxlIGF0xLFsxLFyLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGtleWNsb2FrQXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXE6IEh0dHBSZXF1ZXN0PHVua25vd24+LCBuZXh0OiBIdHRwSGFuZGxlckZuKSA9PiB7XHJcblx0Y29uc3QgaW50ZXJjZXB0b3IgPSBpbmplY3QoS2V5Y2xvYWtCZWFyZXJJbnRlcmNlcHRvcik7XHJcblxyXG5cdGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnIHx8IGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ3Zpc2libGUnKSB7XHJcblx0XHRyZXR1cm4gaW50ZXJjZXB0b3IuaW50ZXJjZXB0KHJlcSwgeyBoYW5kbGU6IG5leHQgfSk7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gZnJvbUV2ZW50KGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScpLnBpcGUoXHJcblx0XHRmaWx0ZXIoKCkgPT4gZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAndmlzaWJsZScpLFxyXG5cdFx0dGFrZSgxKSxcclxuXHRcdHN3aXRjaE1hcCgoKSA9PiBpbnRlcmNlcHRvci5pbnRlcmNlcHQocmVxLCB7IGhhbmRsZTogbmV4dCB9KSlcclxuXHQpO1xyXG59O1xyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3NlbGVjdGlvbi9hcmlsLXNlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './src/selection-group.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3NlbGVjdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvc2VsZWN0aW9uLWdyb3VwLnNlcnZpY2UnO1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvc2VsZWN0aW9uL3NyYy9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvblJlcXVlc3REVE8ge1xyXG5cdGdyb3VwTmFtZTogc3RyaW5nO1xyXG5cdHBhcmVudFNlbGVjdGlvbktleT86IHN0cmluZyB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uR3JvdXBWZXJzaW9uRFRPIHtcclxuXHRncm91cE5hbWU6IHN0cmluZztcclxuXHR2ZXJzaW9uOiBudW1iZXI7XHJcbn1cclxuIl19
@@ -0,0 +1,195 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { take } from 'rxjs';
3
+ import { bridge } from 'aril/boot/bridge';
4
+ import { API_CONFIGS } from 'aril/boot/config/api';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ // Key başına maksimum ardışık fetch hatası: limit aşılınca o key oturum boyu yeniden denenmez.
8
+ // Sınırsız retry'da kalıcı hata veren bir grup (örn. silinmiş grup → 404), diğer grupların her
9
+ // başarılı yüklemesinde (map güncellemesi tüm enum computed'larını yeniden çalıştırır) yeniden
10
+ // POST edilirdi → istek/console fırtınası.
11
+ const MAX_FETCH_FAILURES = 3;
12
+ export class SelectionGroupService {
13
+ constructor(http) {
14
+ this.http = http;
15
+ // State cross-MFE paylaşımlı: bridge globalThis-singleton'ında yaşar (bkz. mfe-bridge.ts).
16
+ // Servis instance'ı MFE/tab başına çoğalsa da tüm okuma/yazma tek bridge state'ine gider.
17
+ this.selectionGroups = bridge.selectionGroups;
18
+ this.loading = bridge.selectionLoading;
19
+ this.loaded = bridge.selectionLoaded;
20
+ this.failures = bridge.selectionFailures;
21
+ // loadStates + invalidate yalnızca ilk instance'ta (cross-MFE bir kez): tek localStorage
22
+ // yüklemesi, tek `/versions` çağrısı. effect her instance'ta kurulur ama hepsi aynı paylaşılan
23
+ // state'i yazdığından ezme olmaz.
24
+ if (!bridge.selectionInitialized) {
25
+ bridge.selectionInitialized = true;
26
+ this.loadStatesFromLocalStorage();
27
+ this.invalidateStaleGroups();
28
+ }
29
+ }
30
+ // localStorage'a slim cache yazar. `effect` YERİNE bilinçli olarak doğrudan çağrılır: signal'i
31
+ // değiştiren her yer (fetchEnum, invalidateStaleGroups) persist'i açıkça tetikler. NOT: webpack MF
32
+ // config'iyle `@angular/core` artık singleton shared olduğundan effect-tabanlı persist de çalışırdı;
33
+ // yine de açık/öngörülebilir olması (effect içinde gizli signal-write + NG0600 riski olmaması) için
34
+ // doğrudan çağrı tercih edildi.
35
+ persistToLocalStorage() {
36
+ try {
37
+ const slim = this.slimForStorage(this.selectionGroups());
38
+ localStorage.setItem('selection-groups', btoa(encodeURI(JSON.stringify(slim))));
39
+ }
40
+ catch {
41
+ // QuotaExceededError vb. → eski cache'i koru, yeni yazımı sessizce atla.
42
+ }
43
+ }
44
+ loadStatesFromLocalStorage() {
45
+ const selectionGroups = localStorage.getItem('selection-groups');
46
+ if (selectionGroups) {
47
+ try {
48
+ const decodedData = decodeURI(atob(selectionGroups));
49
+ // Dynamic gruplar zaten persist edilmiyor (slimForStorage onları atlar) → ekstra
50
+ // filtre gerekmez; localStorage içeriği yalnızca Fixed gruplardır.
51
+ const restored = JSON.parse(decodedData);
52
+ this.selectionGroups.set(restored);
53
+ // Restore edilen gruplar loaded sayılır: aksi halde koşulsuz fetchEnum çağıran
54
+ // consumer'lar guard'ı geçip her oturum yeniden çeker (cache faydası kaybolur).
55
+ // Stale'lik kontrolü invalidateStaleGroups'un işi. null entry'ler (legacy) loaded
56
+ // işaretlenmez — işaretlenirse o grup bir daha hiç yüklenemezdi.
57
+ Object.entries(restored).forEach(([key, group]) => {
58
+ if (group)
59
+ this.loaded.set(key, true);
60
+ });
61
+ }
62
+ catch (e) {
63
+ console.error(e);
64
+ }
65
+ }
66
+ }
67
+ // Dynamic grupları atlar + Fixed grupları yalnızca render (value/table/picker/export) ve invalidate
68
+ // için gerekli alanlara indirger. localStorage'da audit/id/açıklama gibi kullanılmayan alanları tutmaz.
69
+ slimForStorage(groups) {
70
+ const out = {};
71
+ for (const [key, group] of Object.entries(groups)) {
72
+ if (!group || group.loadStrategy === 'Dynamic')
73
+ continue;
74
+ out[key] = {
75
+ version: group.version,
76
+ selectionItems: (group.selectionItems ?? []).map((it) => ({
77
+ selectionKey: it.selectionKey,
78
+ selectionDisplay: it.selectionDisplay,
79
+ selectionMultiLanguageDisplays: it.selectionMultiLanguageDisplays,
80
+ showOrder: it.showOrder,
81
+ parentSelectionKey: it.parentSelectionKey
82
+ }))
83
+ };
84
+ }
85
+ return out;
86
+ }
87
+ // App init'te enum version'larını çekip localStorage'daki stale grupları temizler.
88
+ // Silinen grup, tüketici component'lerin `if (!selectionGroup) fetchEnum()` guard'ıyla yeniden yüklenir.
89
+ invalidateStaleGroups() {
90
+ // App-init snapshot: yalnızca localStorage'dan yüklenen gruplar kontrol edilir. Yanıt gelene
91
+ // kadar consumer'ların fetchEnum ile yüklediği taze gruplar taranmaz/silinmez (aksi halde
92
+ // taze grup silinir ve kalıcı per-component fetch guard'ları onu bir daha çekmeyebilir).
93
+ const keysToCheck = Object.keys(this.selectionGroups());
94
+ if (keysToCheck.length === 0)
95
+ return;
96
+ const hostApi = API_CONFIGS.api.replace(/\/[^\/]+\/v1$/, `/host/v1`);
97
+ this.http
98
+ .get(hostApi + '/selection-group/versions')
99
+ .pipe(take(1))
100
+ .subscribe({
101
+ next: (versions) => {
102
+ // Boş/bozuk yanıt güvenlik şeridi: aşağıdaki "listede olmayanı sil" kuralı
103
+ // boş listeyle tüm cache'i yanlışlıkla boşaltmasın.
104
+ if (!versions?.length)
105
+ return;
106
+ const latest = new Map(versions.map((v) => [v.groupName, v.version]));
107
+ let changed = false;
108
+ const next = { ...this.selectionGroups() };
109
+ keysToCheck.forEach((key) => {
110
+ const group = next[key];
111
+ if (!group)
112
+ return;
113
+ const separatorIndex = key.indexOf('~');
114
+ if (separatorIndex === -1)
115
+ return;
116
+ const serverVersion = latest.get(key.substring(0, separatorIndex));
117
+ // serverVersion == null: grup /versions listesinde yok → sunucudan silinmiş /
118
+ // yeniden adlandırılmış demektir (endpoint Fixed grupların tam listesini döner)
119
+ // → o da evict edilir; kalırsa kaldırılmış enum değerleri süresiz render edilir.
120
+ if (serverVersion == null || serverVersion !== group.version) {
121
+ delete next[key];
122
+ this.loaded.delete(key);
123
+ this.failures.delete(key);
124
+ // Uçuştaki fetch'in flag'i korunur: silinirse ikinci bir consumer guard'ı
125
+ // geçip duplicate /load atar ve export-overlay'in isLoading poll'ü grubu
126
+ // beklemeden erken geçer. Yanıt geldiğinde flag'i fetchEnum kendisi yönetir.
127
+ if (!this.loading.get(key)) {
128
+ this.loading.delete(key);
129
+ }
130
+ changed = true;
131
+ }
132
+ });
133
+ if (changed) {
134
+ this.selectionGroups.set(next);
135
+ this.persistToLocalStorage();
136
+ }
137
+ },
138
+ error: () => {
139
+ // versions endpoint yok/erişilemez: sessizce mevcut cache ile devam.
140
+ }
141
+ });
142
+ }
143
+ fetchEnum(groupName, parentSelectionKey = 'ALL') {
144
+ const key = groupName + '~' + parentSelectionKey;
145
+ if (this.loaded.get(key) || this.loading.get(key))
146
+ return;
147
+ if ((this.failures.get(key) ?? 0) >= MAX_FETCH_FAILURES)
148
+ return;
149
+ const payload = {
150
+ groupName,
151
+ parentSelectionKey
152
+ };
153
+ this.loading.set(key, true);
154
+ this.loaded.set(key, false);
155
+ const hostApi = API_CONFIGS.api.replace(/\/[^\/]+\/v1$/, `/host/v1`);
156
+ this.http
157
+ .post(hostApi + '/selection-group/load', payload)
158
+ .pipe(take(1))
159
+ .subscribe({
160
+ next: (selectionGroup) => {
161
+ this.loading.set(key, false);
162
+ this.loaded.set(key, true);
163
+ this.failures.delete(key);
164
+ this.selectionGroups.update((groups) => ({
165
+ ...groups,
166
+ [key]: selectionGroup
167
+ }));
168
+ this.persistToLocalStorage();
169
+ },
170
+ // HTTP hatasında loading'i sıfırla: aksi halde guard (loaded/loading) bu enum'u
171
+ // kilitler. loading/loaded bridge'de cross-MFE SHARED olduğundan, tek bir anlık hata
172
+ // bu enum'u TÜM remote'larda hard-reload'a kadar bir daha çekilemez yapardı. loading=false
173
+ // → sonraki fetchEnum (component init/retry) yeniden deneyebilir. loaded zaten false kalır.
174
+ // Deneme sayısı MAX_FETCH_FAILURES ile sınırlı: kalıcı hatada sonsuz retry önlenir.
175
+ error: () => {
176
+ this.loading.set(key, false);
177
+ this.failures.set(key, (this.failures.get(key) ?? 0) + 1);
178
+ }
179
+ });
180
+ }
181
+ // key formatı: `groupName~parentSelectionKey` (fetchEnum'daki composite key ile aynı).
182
+ // Direkt olarak groupName geçilirse Map'te eşleşme olmaz ve her zaman false döner.
183
+ isLoading(key) {
184
+ return this.loading.get(key) ?? false;
185
+ }
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
187
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, providedIn: 'root' }); }
188
+ }
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SelectionGroupService, decorators: [{
190
+ type: Injectable,
191
+ args: [{
192
+ providedIn: 'root'
193
+ }]
194
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWdyb3VwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3NlbGVjdGlvbi9zcmMvc2VsZWN0aW9uLWdyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVCLE9BQU8sRUFBcUIsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFJbkQsK0ZBQStGO0FBQy9GLCtGQUErRjtBQUMvRiwrRkFBK0Y7QUFDL0YsMkNBQTJDO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBSzdCLE1BQU0sT0FBTyxxQkFBcUI7SUFTakMsWUFBNkIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQVI3QywyRkFBMkY7UUFDM0YsMEZBQTBGO1FBQzFGLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUV4QixZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ2xDLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ2hDLGFBQVEsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFHcEQseUZBQXlGO1FBQ3pGLCtGQUErRjtRQUMvRixrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNGLENBQUM7SUFFRCwrRkFBK0Y7SUFDL0YsbUdBQW1HO0lB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LENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQztTQUNELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx1RkFBdUY7SUFDdkYsbUZBQW1GO0lBQ25GLFNBQVMsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3ZDLENBQUM7OEdBNUxXLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRnJCLE1BQU07OzJGQUVOLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBTZWxlY3Rpb25Hcm91cERUTywgYnJpZGdlIH0gZnJvbSAnYXJpbC9ib290L2JyaWRnZSc7XHJcbmltcG9ydCB7IEFQSV9DT05GSUdTIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgU2VsZWN0aW9uR3JvdXBWZXJzaW9uRFRPLCBTZWxlY3Rpb25SZXF1ZXN0RFRPIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuXHJcbi8vIEtleSBiYcWfxLFuYSBtYWtzaW11bSBhcmTEscWfxLFrIGZldGNoIGhhdGFzxLE6IGxpbWl0IGHFn8SxbMSxbmNhIG8ga2V5IG90dXJ1bSBib3l1IHllbmlkZW4gZGVuZW5tZXouXHJcbi8vIFPEsW7EsXJzxLF6IHJldHJ5J2RhIGthbMSxY8SxIGhhdGEgdmVyZW4gYmlyIGdydXAgKMO2cm4uIHNpbGlubWnFnyBncnVwIOKGkiA0MDQpLCBkacSfZXIgZ3J1cGxhcsSxbiBoZXJcclxuLy8gYmHFn2FyxLFsxLEgecO8a2xlbWVzaW5kZSAobWFwIGfDvG5jZWxsZW1lc2kgdMO8bSBlbnVtIGNvbXB1dGVkJ2xhcsSxbsSxIHllbmlkZW4gw6dhbMSxxZ90xLFyxLFyKSB5ZW5pZGVuXHJcbi8vIFBPU1QgZWRpbGlyZGkg4oaSIGlzdGVrL2NvbnNvbGUgZsSxcnTEsW5hc8SxLlxyXG5jb25zdCBNQVhfRkVUQ0hfRkFJTFVSRVMgPSAzO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uR3JvdXBTZXJ2aWNlIHtcclxuXHQvLyBTdGF0ZSBjcm9zcy1NRkUgcGF5bGHFn8SxbWzEsTogYnJpZGdlIGdsb2JhbFRoaXMtc2luZ2xldG9uJ8SxbmRhIHlhxZ9hciAoYmt6LiBtZmUtYnJpZGdlLnRzKS5cclxuXHQvLyBTZXJ2aXMgaW5zdGFuY2UnxLEgTUZFL3RhYiBiYcWfxLFuYSDDp2/En2Fsc2EgZGEgdMO8bSBva3VtYS95YXptYSB0ZWsgYnJpZGdlIHN0YXRlJ2luZSBnaWRlci5cclxuXHRzZWxlY3Rpb25Hcm91cHMgPSBicmlkZ2Uuc2VsZWN0aW9uR3JvdXBzO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmcgPSBicmlkZ2Uuc2VsZWN0aW9uTG9hZGluZztcclxuXHRwcml2YXRlIHJlYWRvbmx5IGxvYWRlZCA9IGJyaWRnZS5zZWxlY3Rpb25Mb2FkZWQ7XHJcblx0cHJpdmF0ZSByZWFkb25seSBmYWlsdXJlcyA9IGJyaWRnZS5zZWxlY3Rpb25GYWlsdXJlcztcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcblx0XHQvLyBsb2FkU3RhdGVzICsgaW52YWxpZGF0ZSB5YWxuxLF6Y2EgaWxrIGluc3RhbmNlJ3RhIChjcm9zcy1NRkUgYmlyIGtleik6IHRlayBsb2NhbFN0b3JhZ2VcclxuXHRcdC8vIHnDvGtsZW1lc2ksIHRlayBgL3ZlcnNpb25zYCDDp2HEn3LEsXPEsS4gZWZmZWN0IGhlciBpbnN0YW5jZSd0YSBrdXJ1bHVyIGFtYSBoZXBzaSBheW7EsSBwYXlsYcWfxLFsYW5cclxuXHRcdC8vIHN0YXRlJ2kgeWF6ZMSxxJ/EsW5kYW4gZXptZSBvbG1hei5cclxuXHRcdGlmICghYnJpZGdlLnNlbGVjdGlvbkluaXRpYWxpemVkKSB7XHJcblx0XHRcdGJyaWRnZS5zZWxlY3Rpb25Jbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHRcdHRoaXMubG9hZFN0YXRlc0Zyb21Mb2NhbFN0b3JhZ2UoKTtcclxuXHRcdFx0dGhpcy5pbnZhbGlkYXRlU3RhbGVHcm91cHMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIGxvY2FsU3RvcmFnZSdhIHNsaW0gY2FjaGUgeWF6YXIuIGBlZmZlY3RgIFlFUsSwTkUgYmlsaW7Dp2xpIG9sYXJhayBkb8SfcnVkYW4gw6dhxJ9yxLFsxLFyOiBzaWduYWwnaVxyXG5cdC8vIGRlxJ9pxZ90aXJlbiBoZXIgeWVyIChmZXRjaEVudW0sIGludmFsaWRhdGVTdGFsZUdyb3VwcykgcGVyc2lzdCdpIGHDp8Sxa8OnYSB0ZXRpa2xlci4gTk9UOiB3ZWJwYWNrIE1GXHJcblx0Ly8gY29uZmlnJ2l5bGUgYEBhbmd1bGFyL2NvcmVgIGFydMSxayBzaW5nbGV0b24gc2hhcmVkIG9sZHXEn3VuZGFuIGVmZmVjdC10YWJhbmzEsSBwZXJzaXN0IGRlIMOnYWzEscWfxLFyZMSxO1xyXG5cdC8vIHlpbmUgZGUgYcOnxLFrL8O2bmfDtnLDvGxlYmlsaXIgb2xtYXPEsSAoZWZmZWN0IGnDp2luZGUgZ2l6bGkgc2lnbmFsLXdyaXRlICsgTkcwNjAwIHJpc2tpIG9sbWFtYXPEsSkgacOnaW5cclxuXHQvLyBkb8SfcnVkYW4gw6dhxJ9yxLEgdGVyY2loIGVkaWxkaS5cclxuXHRwcml2YXRlIHBlcnNpc3RUb0xvY2FsU3RvcmFnZSgpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGNvbnN0IHNsaW0gPSB0aGlzLnNsaW1Gb3JTdG9yYWdlKHRoaXMuc2VsZWN0aW9uR3JvdXBzKCkpO1xyXG5cdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2VsZWN0aW9uLWdyb3VwcycsIGJ0b2EoZW5jb2RlVVJJKEpTT04uc3RyaW5naWZ5KHNsaW0pKSkpO1xyXG5cdFx0fSBjYXRjaCB7XHJcblx0XHRcdC8vIFF1b3RhRXhjZWVkZWRFcnJvciB2Yi4g4oaSIGVza2kgY2FjaGUnaSBrb3J1LCB5ZW5pIHlhesSxbcSxIHNlc3NpemNlIGF0bGEuXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGxvYWRTdGF0ZXNGcm9tTG9jYWxTdG9yYWdlKCkge1xyXG5cdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXBzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGlvbi1ncm91cHMnKTtcclxuXHJcblx0XHRpZiAoc2VsZWN0aW9uR3JvdXBzKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0Y29uc3QgZGVjb2RlZERhdGEgPSBkZWNvZGVVUkkoYXRvYihzZWxlY3Rpb25Hcm91cHMpKTtcclxuXHRcdFx0XHQvLyBEeW5hbWljIGdydXBsYXIgemF0ZW4gcGVyc2lzdCBlZGlsbWl5b3IgKHNsaW1Gb3JTdG9yYWdlIG9ubGFyxLEgYXRsYXIpIOKGkiBla3N0cmFcclxuXHRcdFx0XHQvLyBmaWx0cmUgZ2VyZWttZXo7IGxvY2FsU3RvcmFnZSBpw6dlcmnEn2kgeWFsbsSxemNhIEZpeGVkIGdydXBsYXJkxLFyLlxyXG5cdFx0XHRcdGNvbnN0IHJlc3RvcmVkOiB7IFtrZXk6IHN0cmluZ106IFNlbGVjdGlvbkdyb3VwRFRPIHwgbnVsbCB9ID0gSlNPTi5wYXJzZShkZWNvZGVkRGF0YSk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cHMuc2V0KHJlc3RvcmVkKTtcclxuXHJcblx0XHRcdFx0Ly8gUmVzdG9yZSBlZGlsZW4gZ3J1cGxhciBsb2FkZWQgc2F5xLFsxLFyOiBha3NpIGhhbGRlIGtvxZ91bHN1eiBmZXRjaEVudW0gw6dhxJ/EsXJhblxyXG5cdFx0XHRcdC8vIGNvbnN1bWVyJ2xhciBndWFyZCfEsSBnZcOnaXAgaGVyIG90dXJ1bSB5ZW5pZGVuIMOnZWtlciAoY2FjaGUgZmF5ZGFzxLEga2F5Ym9sdXIpLlxyXG5cdFx0XHRcdC8vIFN0YWxlJ2xpayBrb250cm9sw7wgaW52YWxpZGF0ZVN0YWxlR3JvdXBzJ3VuIGnFn2kuIG51bGwgZW50cnknbGVyIChsZWdhY3kpIGxvYWRlZFxyXG5cdFx0XHRcdC8vIGnFn2FyZXRsZW5tZXog4oCUIGnFn2FyZXRsZW5pcnNlIG8gZ3J1cCBiaXIgZGFoYSBoacOnIHnDvGtsZW5lbWV6ZGkuXHJcblx0XHRcdFx0T2JqZWN0LmVudHJpZXMocmVzdG9yZWQpLmZvckVhY2goKFtrZXksIGdyb3VwXSkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGdyb3VwKSB0aGlzLmxvYWRlZC5zZXQoa2V5LCB0cnVlKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoZSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vIER5bmFtaWMgZ3J1cGxhcsSxIGF0bGFyICsgRml4ZWQgZ3J1cGxhcsSxIHlhbG7EsXpjYSByZW5kZXIgKHZhbHVlL3RhYmxlL3BpY2tlci9leHBvcnQpIHZlIGludmFsaWRhdGVcclxuXHQvLyBpw6dpbiBnZXJla2xpIGFsYW5sYXJhIGluZGlyZ2VyLiBsb2NhbFN0b3JhZ2UnZGEgYXVkaXQvaWQvYcOnxLFrbGFtYSBnaWJpIGt1bGxhbsSxbG1heWFuIGFsYW5sYXLEsSB0dXRtYXouXHJcblx0cHJpdmF0ZSBzbGltRm9yU3RvcmFnZShncm91cHM6IHsgW2tleTogc3RyaW5nXTogU2VsZWN0aW9uR3JvdXBEVE8gfCBudWxsIH0pOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSB7XHJcblx0XHRjb25zdCBvdXQ6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9ID0ge307XHJcblx0XHRmb3IgKGNvbnN0IFtrZXksIGdyb3VwXSBvZiBPYmplY3QuZW50cmllcyhncm91cHMpKSB7XHJcblx0XHRcdGlmICghZ3JvdXAgfHwgZ3JvdXAubG9hZFN0cmF0ZWd5ID09PSAnRHluYW1pYycpIGNvbnRpbnVlO1xyXG5cdFx0XHRvdXRba2V5XSA9IHtcclxuXHRcdFx0XHR2ZXJzaW9uOiBncm91cC52ZXJzaW9uLFxyXG5cdFx0XHRcdHNlbGVjdGlvbkl0ZW1zOiAoZ3JvdXAuc2VsZWN0aW9uSXRlbXMgPz8gW10pLm1hcCgoaXQpID0+ICh7XHJcblx0XHRcdFx0XHRzZWxlY3Rpb25LZXk6IGl0LnNlbGVjdGlvbktleSxcclxuXHRcdFx0XHRcdHNlbGVjdGlvbkRpc3BsYXk6IGl0LnNlbGVjdGlvbkRpc3BsYXksXHJcblx0XHRcdFx0XHRzZWxlY3Rpb25NdWx0aUxhbmd1YWdlRGlzcGxheXM6IGl0LnNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cyxcclxuXHRcdFx0XHRcdHNob3dPcmRlcjogaXQuc2hvd09yZGVyLFxyXG5cdFx0XHRcdFx0cGFyZW50U2VsZWN0aW9uS2V5OiBpdC5wYXJlbnRTZWxlY3Rpb25LZXlcclxuXHRcdFx0XHR9KSlcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBvdXQ7XHJcblx0fVxyXG5cclxuXHQvLyBBcHAgaW5pdCd0ZSBlbnVtIHZlcnNpb24nbGFyxLFuxLEgw6dla2lwIGxvY2FsU3RvcmFnZSdkYWtpIHN0YWxlIGdydXBsYXLEsSB0ZW1pemxlci5cclxuXHQvLyBTaWxpbmVuIGdydXAsIHTDvGtldGljaSBjb21wb25lbnQnbGVyaW4gYGlmICghc2VsZWN0aW9uR3JvdXApIGZldGNoRW51bSgpYCBndWFyZCfEsXlsYSB5ZW5pZGVuIHnDvGtsZW5pci5cclxuXHRwcml2YXRlIGludmFsaWRhdGVTdGFsZUdyb3VwcygpIHtcclxuXHRcdC8vIEFwcC1pbml0IHNuYXBzaG90OiB5YWxuxLF6Y2EgbG9jYWxTdG9yYWdlJ2RhbiB5w7xrbGVuZW4gZ3J1cGxhciBrb250cm9sIGVkaWxpci4gWWFuxLF0IGdlbGVuZVxyXG5cdFx0Ly8ga2FkYXIgY29uc3VtZXInbGFyxLFuIGZldGNoRW51bSBpbGUgecO8a2xlZGnEn2kgdGF6ZSBncnVwbGFyIHRhcmFubWF6L3NpbGlubWV6IChha3NpIGhhbGRlXHJcblx0XHQvLyB0YXplIGdydXAgc2lsaW5pciB2ZSBrYWzEsWPEsSBwZXItY29tcG9uZW50IGZldGNoIGd1YXJkJ2xhcsSxIG9udSBiaXIgZGFoYSDDp2VrbWV5ZWJpbGlyKS5cclxuXHRcdGNvbnN0IGtleXNUb0NoZWNrID0gT2JqZWN0LmtleXModGhpcy5zZWxlY3Rpb25Hcm91cHMoKSk7XHJcblx0XHRpZiAoa2V5c1RvQ2hlY2subGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgaG9zdEFwaSA9IEFQSV9DT05GSUdTLmFwaS5yZXBsYWNlKC9cXC9bXlxcL10rXFwvdjEkLywgYC9ob3N0L3YxYCk7XHJcblxyXG5cdFx0dGhpcy5odHRwXHJcblx0XHRcdC5nZXQ8U2VsZWN0aW9uR3JvdXBWZXJzaW9uRFRPW10+KGhvc3RBcGkgKyAnL3NlbGVjdGlvbi1ncm91cC92ZXJzaW9ucycpXHJcblx0XHRcdC5waXBlKHRha2UoMSkpXHJcblx0XHRcdC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdG5leHQ6ICh2ZXJzaW9ucykgPT4ge1xyXG5cdFx0XHRcdFx0Ly8gQm/Fny9ib3p1ayB5YW7EsXQgZ8O8dmVubGlrIMWfZXJpZGk6IGHFn2HEn8SxZGFraSBcImxpc3RlZGUgb2xtYXlhbsSxIHNpbFwiIGt1cmFsxLFcclxuXHRcdFx0XHRcdC8vIGJvxZ8gbGlzdGV5bGUgdMO8bSBjYWNoZSdpIHlhbmzEscWfbMSxa2xhIGJvxZ9hbHRtYXPEsW4uXHJcblx0XHRcdFx0XHRpZiAoIXZlcnNpb25zPy5sZW5ndGgpIHJldHVybjtcclxuXHJcblx0XHRcdFx0XHRjb25zdCBsYXRlc3QgPSBuZXcgTWFwKHZlcnNpb25zLm1hcCgodikgPT4gW3YuZ3JvdXBOYW1lLCB2LnZlcnNpb25dIGFzIFtzdHJpbmcsIG51bWJlcl0pKTtcclxuXHJcblx0XHRcdFx0XHRsZXQgY2hhbmdlZCA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0Y29uc3QgbmV4dCA9IHsgLi4udGhpcy5zZWxlY3Rpb25Hcm91cHMoKSB9O1xyXG5cclxuXHRcdFx0XHRcdGtleXNUb0NoZWNrLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBncm91cCA9IG5leHRba2V5XTtcclxuXHRcdFx0XHRcdFx0aWYgKCFncm91cCkgcmV0dXJuO1xyXG5cclxuXHRcdFx0XHRcdFx0Y29uc3Qgc2VwYXJhdG9ySW5kZXggPSBrZXkuaW5kZXhPZignficpO1xyXG5cdFx0XHRcdFx0XHRpZiAoc2VwYXJhdG9ySW5kZXggPT09IC0xKSByZXR1cm47XHJcblxyXG5cdFx0XHRcdFx0XHRjb25zdCBzZXJ2ZXJWZXJzaW9uID0gbGF0ZXN0LmdldChrZXkuc3Vic3RyaW5nKDAsIHNlcGFyYXRvckluZGV4KSk7XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBzZXJ2ZXJWZXJzaW9uID09IG51bGw6IGdydXAgL3ZlcnNpb25zIGxpc3Rlc2luZGUgeW9rIOKGkiBzdW51Y3VkYW4gc2lsaW5tacWfIC9cclxuXHRcdFx0XHRcdFx0Ly8geWVuaWRlbiBhZGxhbmTEsXLEsWxtxLHFnyBkZW1la3RpciAoZW5kcG9pbnQgRml4ZWQgZ3J1cGxhcsSxbiB0YW0gbGlzdGVzaW5pIGTDtm5lcilcclxuXHRcdFx0XHRcdFx0Ly8g4oaSIG8gZGEgZXZpY3QgZWRpbGlyOyBrYWzEsXJzYSBrYWxkxLFyxLFsbcSxxZ8gZW51bSBkZcSfZXJsZXJpIHPDvHJlc2l6IHJlbmRlciBlZGlsaXIuXHJcblx0XHRcdFx0XHRcdGlmIChzZXJ2ZXJWZXJzaW9uID09IG51bGwgfHwgc2VydmVyVmVyc2lvbiAhPT0gZ3JvdXAudmVyc2lvbikge1xyXG5cdFx0XHRcdFx0XHRcdGRlbGV0ZSBuZXh0W2tleV07XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkZWQuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5mYWlsdXJlcy5kZWxldGUoa2V5KTtcclxuXHRcdFx0XHRcdFx0XHQvLyBVw6d1xZ90YWtpIGZldGNoJ2luIGZsYWcnaSBrb3J1bnVyOiBzaWxpbmlyc2UgaWtpbmNpIGJpciBjb25zdW1lciBndWFyZCfEsVxyXG5cdFx0XHRcdFx0XHRcdC8vIGdlw6dpcCBkdXBsaWNhdGUgL2xvYWQgYXRhciB2ZSBleHBvcnQtb3ZlcmxheSdpbiBpc0xvYWRpbmcgcG9sbCfDvCBncnVidVxyXG5cdFx0XHRcdFx0XHRcdC8vIGJla2xlbWVkZW4gZXJrZW4gZ2XDp2VyLiBZYW7EsXQgZ2VsZGnEn2luZGUgZmxhZydpIGZldGNoRW51bSBrZW5kaXNpIHnDtm5ldGlyLlxyXG5cdFx0XHRcdFx0XHRcdGlmICghdGhpcy5sb2FkaW5nLmdldChrZXkpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuZGVsZXRlKGtleSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGNoYW5nZWQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHJcblx0XHRcdFx0XHRpZiAoY2hhbmdlZCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGlvbkdyb3Vwcy5zZXQobmV4dCk7XHJcblx0XHRcdFx0XHRcdHRoaXMucGVyc2lzdFRvTG9jYWxTdG9yYWdlKCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdFx0Ly8gdmVyc2lvbnMgZW5kcG9pbnQgeW9rL2VyacWfaWxlbWV6OiBzZXNzaXpjZSBtZXZjdXQgY2FjaGUgaWxlIGRldmFtLlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHRmZXRjaEVudW0oZ3JvdXBOYW1lOiBzdHJpbmcsIHBhcmVudFNlbGVjdGlvbktleTogc3RyaW5nID0gJ0FMTCcpIHtcclxuXHRcdGNvbnN0IGtleSA9IGdyb3VwTmFtZSArICd+JyArIHBhcmVudFNlbGVjdGlvbktleTtcclxuXHJcblx0XHRpZiAodGhpcy5sb2FkZWQuZ2V0KGtleSkgfHwgdGhpcy5sb2FkaW5nLmdldChrZXkpKSByZXR1cm47XHJcblx0XHRpZiAoKHRoaXMuZmFpbHVyZXMuZ2V0KGtleSkgPz8gMCkgPj0gTUFYX0ZFVENIX0ZBSUxVUkVTKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcGF5bG9hZDogU2VsZWN0aW9uUmVxdWVzdERUTyA9IHtcclxuXHRcdFx0Z3JvdXBOYW1lLFxyXG5cdFx0XHRwYXJlbnRTZWxlY3Rpb25LZXlcclxuXHRcdH07XHJcblxyXG5cdFx0dGhpcy5sb2FkaW5nLnNldChrZXksIHRydWUpO1xyXG5cdFx0dGhpcy5sb2FkZWQuc2V0KGtleSwgZmFsc2UpO1xyXG5cclxuXHRcdGNvbnN0IGhvc3RBcGkgPSBBUElfQ09ORklHUy5hcGkucmVwbGFjZSgvXFwvW15cXC9dK1xcL3YxJC8sIGAvaG9zdC92MWApO1xyXG5cclxuXHRcdHRoaXMuaHR0cFxyXG5cdFx0XHQucG9zdDxTZWxlY3Rpb25Hcm91cERUTz4oaG9zdEFwaSArICcvc2VsZWN0aW9uLWdyb3VwL2xvYWQnLCBwYXlsb2FkKVxyXG5cdFx0XHQucGlwZSh0YWtlKDEpKVxyXG5cdFx0XHQuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoc2VsZWN0aW9uR3JvdXApID0+IHtcclxuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5zZXQoa2V5LCBmYWxzZSk7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRlZC5zZXQoa2V5LCB0cnVlKTtcclxuXHRcdFx0XHRcdHRoaXMuZmFpbHVyZXMuZGVsZXRlKGtleSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cHMudXBkYXRlKChncm91cHMpID0+ICh7XHJcblx0XHRcdFx0XHRcdC4uLmdyb3VwcyxcclxuXHRcdFx0XHRcdFx0W2tleV06IHNlbGVjdGlvbkdyb3VwXHJcblx0XHRcdFx0XHR9KSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5wZXJzaXN0VG9Mb2NhbFN0b3JhZ2UoKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdC8vIEhUVFAgaGF0YXPEsW5kYSBsb2FkaW5nJ2kgc8SxZsSxcmxhOiBha3NpIGhhbGRlIGd1YXJkIChsb2FkZWQvbG9hZGluZykgYnUgZW51bSd1XHJcblx0XHRcdFx0Ly8ga2lsaXRsZXIuIGxvYWRpbmcvbG9hZGVkIGJyaWRnZSdkZSBjcm9zcy1NRkUgU0hBUkVEIG9sZHXEn3VuZGFuLCB0ZWsgYmlyIGFubMSxayBoYXRhXHJcblx0XHRcdFx0Ly8gYnUgZW51bSd1IFTDnE0gcmVtb3RlJ2xhcmRhIGhhcmQtcmVsb2FkJ2Ega2FkYXIgYmlyIGRhaGEgw6dla2lsZW1leiB5YXBhcmTEsS4gbG9hZGluZz1mYWxzZVxyXG5cdFx0XHRcdC8vIOKGkiBzb25yYWtpIGZldGNoRW51bSAoY29tcG9uZW50IGluaXQvcmV0cnkpIHllbmlkZW4gZGVuZXllYmlsaXIuIGxvYWRlZCB6YXRlbiBmYWxzZSBrYWzEsXIuXHJcblx0XHRcdFx0Ly8gRGVuZW1lIHNhecSxc8SxIE1BWF9GRVRDSF9GQUlMVVJFUyBpbGUgc8SxbsSxcmzEsToga2FsxLFjxLEgaGF0YWRhIHNvbnN1eiByZXRyeSDDtm5sZW5pci5cclxuXHRcdFx0XHRlcnJvcjogKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nLnNldChrZXksIGZhbHNlKTtcclxuXHRcdFx0XHRcdHRoaXMuZmFpbHVyZXMuc2V0KGtleSwgKHRoaXMuZmFpbHVyZXMuZ2V0KGtleSkgPz8gMCkgKyAxKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly8ga2V5IGZvcm1hdMSxOiBgZ3JvdXBOYW1lfnBhcmVudFNlbGVjdGlvbktleWAgKGZldGNoRW51bSdkYWtpIGNvbXBvc2l0ZSBrZXkgaWxlIGF5bsSxKS5cclxuXHQvLyBEaXJla3Qgb2xhcmFrIGdyb3VwTmFtZSBnZcOnaWxpcnNlIE1hcCd0ZSBlxZ9sZcWfbWUgb2xtYXogdmUgaGVyIHphbWFuIGZhbHNlIGTDtm5lci5cclxuXHRpc0xvYWRpbmcoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdHJldHVybiB0aGlzLmxvYWRpbmcuZ2V0KGtleSkgPz8gZmFsc2U7XHJcblx0fVxyXG59XHJcbiJdfQ==