@sapui5/sap.fe.core 1.121.2 → 1.123.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +2 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +1 -2
  5. package/src/sap/fe/core/CommonUtils.js +14 -171
  6. package/src/sap/fe/core/CommonUtils.ts +15 -221
  7. package/src/sap/fe/core/PageController.js +13 -1
  8. package/src/sap/fe/core/PageController.ts +16 -0
  9. package/src/sap/fe/core/TemplateComponent.js +6 -1
  10. package/src/sap/fe/core/TemplateComponent.ts +8 -0
  11. package/src/sap/fe/core/UIProvider.js +23 -0
  12. package/src/sap/fe/core/UIProvider.ts +38 -0
  13. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +97 -43
  14. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +120 -50
  15. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +6 -3
  16. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +12 -18
  17. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +2 -2
  18. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -3
  21. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +1 -1
  22. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +1 -0
  23. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +42 -1
  24. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +40 -0
  25. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +5 -2
  26. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +5 -3
  27. package/src/sap/fe/core/controllerextensions/EditFlow.js +151 -60
  28. package/src/sap/fe/core/controllerextensions/EditFlow.ts +165 -68
  29. package/src/sap/fe/core/controllerextensions/HookSupport.js +32 -14
  30. package/src/sap/fe/core/controllerextensions/HookSupport.ts +35 -14
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +5 -17
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -12
  33. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +6 -6
  34. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +15 -10
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +108 -287
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +117 -309
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +6 -2
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +1 -1
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +6 -6
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -4
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +17 -110
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +13 -130
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -3
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +1 -2
  47. package/src/sap/fe/core/controllerextensions/Recommendations.js +36 -31
  48. package/src/sap/fe/core/controllerextensions/Recommendations.ts +32 -37
  49. package/src/sap/fe/core/controllerextensions/Share.js +7 -7
  50. package/src/sap/fe/core/controllerextensions/Share.ts +6 -6
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +52 -6
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -4
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +32 -46
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +24 -31
  55. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +42 -31
  56. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +6 -0
  57. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +168 -276
  58. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +182 -310
  59. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -3
  60. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -2
  61. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +4 -3
  62. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +3 -2
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +74 -52
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +95 -55
  65. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -17
  66. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +10 -23
  67. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +3 -3
  68. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +2 -2
  69. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +225 -0
  70. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +241 -0
  71. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +69 -48
  72. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +56 -33
  73. package/src/sap/fe/core/controls/FormElementWrapper.js +8 -11
  74. package/src/sap/fe/core/controls/FormElementWrapper.ts +9 -0
  75. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +6 -14
  76. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +12 -23
  77. package/src/sap/fe/core/converters/ConverterContext.js +17 -9
  78. package/src/sap/fe/core/converters/ConverterContext.ts +55 -41
  79. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  80. package/src/sap/fe/core/converters/ManifestSettings.ts +19 -5
  81. package/src/sap/fe/core/converters/ManifestWrapper.js +14 -4
  82. package/src/sap/fe/core/converters/ManifestWrapper.ts +21 -10
  83. package/src/sap/fe/core/converters/MetaModelConverter.js +402 -383
  84. package/src/sap/fe/core/converters/MetaModelConverter.ts +538 -338
  85. package/src/sap/fe/core/converters/TemplateConverter.js +4 -2
  86. package/src/sap/fe/core/converters/TemplateConverter.ts +18 -13
  87. package/src/sap/fe/core/converters/annotations/DataField.js +30 -28
  88. package/src/sap/fe/core/converters/annotations/DataField.ts +58 -35
  89. package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -23
  90. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -4
  91. package/src/sap/fe/core/converters/controls/Common/Action.ts +34 -28
  92. package/src/sap/fe/core/converters/controls/Common/Chart.js +37 -33
  93. package/src/sap/fe/core/converters/controls/Common/Chart.ts +64 -46
  94. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -4
  95. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +31 -15
  96. package/src/sap/fe/core/converters/controls/Common/Form.js +6 -4
  97. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -11
  98. package/src/sap/fe/core/converters/controls/Common/KPI.js +5 -3
  99. package/src/sap/fe/core/converters/controls/Common/KPI.ts +17 -11
  100. package/src/sap/fe/core/converters/controls/Common/Table.js +197 -101
  101. package/src/sap/fe/core/converters/controls/Common/Table.ts +393 -182
  102. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +4 -5
  103. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +38 -27
  104. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +41 -11
  105. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +112 -45
  106. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +7 -7
  107. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +18 -12
  108. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  109. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +5 -4
  110. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
  111. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +19 -9
  112. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +64 -63
  113. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +109 -100
  114. package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -11
  115. package/src/sap/fe/core/converters/helpers/Aggregation.ts +35 -30
  116. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -1
  117. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +12 -9
  118. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
  119. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +1 -1
  120. package/src/sap/fe/core/converters/helpers/ID.js +1 -1
  121. package/src/sap/fe/core/converters/helpers/ID.ts +6 -6
  122. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +3 -3
  123. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +11 -6
  124. package/src/sap/fe/core/converters/helpers/Key.js +2 -2
  125. package/src/sap/fe/core/converters/helpers/Key.ts +4 -4
  126. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  127. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -2
  128. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +21 -19
  129. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +43 -31
  130. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  131. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +16 -12
  132. package/src/sap/fe/core/converters/templates/ListReportConverter.js +8 -3
  133. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +41 -21
  134. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +5 -3
  135. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +24 -19
  136. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -2
  137. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +2 -1
  138. package/src/sap/fe/core/filter/DraftEditState.fragment.xml +1 -1
  139. package/src/sap/fe/core/formatters/CollaborationFormatter.js +4 -6
  140. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +5 -4
  141. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -13
  142. package/src/sap/fe/core/formatters/FPMFormatter.ts +11 -10
  143. package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
  144. package/src/sap/fe/core/formatters/FiscalFormat.ts +1 -1
  145. package/src/sap/fe/core/formatters/KPIFormatter.js +4 -7
  146. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -3
  147. package/src/sap/fe/core/formatters/StandardFormatter.js +4 -7
  148. package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
  149. package/src/sap/fe/core/formatters/ValueFormatter.js +35 -6
  150. package/src/sap/fe/core/formatters/ValueFormatter.ts +31 -3
  151. package/src/sap/fe/core/fpm/manifest.json +1 -1
  152. package/src/sap/fe/core/helpers/AppStartupHelper.js +54 -33
  153. package/src/sap/fe/core/helpers/AppStartupHelper.ts +62 -41
  154. package/src/sap/fe/core/helpers/BindingToolkit.js +17 -3
  155. package/src/sap/fe/core/helpers/BindingToolkit.ts +28 -6
  156. package/src/sap/fe/core/helpers/ClassSupport.js +32 -13
  157. package/src/sap/fe/core/helpers/ClassSupport.ts +35 -15
  158. package/src/sap/fe/core/helpers/DeleteHelper.js +71 -61
  159. package/src/sap/fe/core/helpers/DeleteHelper.ts +125 -103
  160. package/src/sap/fe/core/helpers/DraftEditState.js +5 -3
  161. package/src/sap/fe/core/helpers/DraftEditState.ts +3 -1
  162. package/src/sap/fe/core/helpers/FPMHelper.js +43 -46
  163. package/src/sap/fe/core/helpers/FPMHelper.ts +50 -56
  164. package/src/sap/fe/core/helpers/MetaModelFunction.js +77 -53
  165. package/src/sap/fe/core/helpers/MetaModelFunction.ts +78 -57
  166. package/src/sap/fe/core/helpers/ModelHelper.js +10 -4
  167. package/src/sap/fe/core/helpers/ModelHelper.ts +12 -6
  168. package/src/sap/fe/core/helpers/PasteHelper.js +194 -7
  169. package/src/sap/fe/core/helpers/PasteHelper.ts +265 -13
  170. package/src/sap/fe/core/helpers/PromiseKeeper.js +66 -0
  171. package/src/sap/fe/core/helpers/PromiseKeeper.ts +56 -0
  172. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +30 -19
  173. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +34 -22
  174. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  175. package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -2
  176. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +26 -52
  177. package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +37 -63
  178. package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
  179. package/src/sap/fe/core/helpers/TitleHelper.ts +17 -14
  180. package/src/sap/fe/core/helpers/TypeGuards.js +27 -3
  181. package/src/sap/fe/core/helpers/TypeGuards.ts +37 -7
  182. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +48 -8
  183. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +40 -9
  184. package/src/sap/fe/core/library.js +1 -1
  185. package/src/sap/fe/core/messagebundle.properties +5 -2
  186. package/src/sap/fe/core/messagebundle_da.properties +1 -1
  187. package/src/sap/fe/core/messagebundle_en.properties +267 -2
  188. package/src/sap/fe/core/messagebundle_sl.properties +1 -1
  189. package/src/sap/fe/core/operationsHelper.js +2 -1
  190. package/src/sap/fe/core/operationsHelper.ts +1 -0
  191. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -3
  192. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +2 -2
  193. package/src/sap/fe/core/services/NavigationServiceFactory.js +2 -2
  194. package/src/sap/fe/core/services/NavigationServiceFactory.ts +3 -2
  195. package/src/sap/fe/core/services/RoutingServiceFactory.js +27 -14
  196. package/src/sap/fe/core/services/RoutingServiceFactory.ts +27 -14
  197. package/src/sap/fe/core/services/ShellServicesFactory.js +49 -12
  198. package/src/sap/fe/core/services/ShellServicesFactory.ts +62 -13
  199. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +156 -82
  200. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +218 -100
  201. package/src/sap/fe/core/services/TelemetryServiceFactory.js +3 -3
  202. package/src/sap/fe/core/services/TelemetryServiceFactory.ts +6 -6
  203. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +3 -2
  204. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
  205. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
  206. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +2 -2
  207. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  208. package/src/sap/fe/core/templating/CommonFormatters.js +6 -3
  209. package/src/sap/fe/core/templating/CommonFormatters.ts +13 -12
  210. package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
  211. package/src/sap/fe/core/templating/CriticalityFormatters.ts +37 -14
  212. package/src/sap/fe/core/templating/DataFieldFormatters.js +12 -11
  213. package/src/sap/fe/core/templating/DataFieldFormatters.ts +35 -24
  214. package/src/sap/fe/core/templating/DataModelPathHelper.js +22 -18
  215. package/src/sap/fe/core/templating/DataModelPathHelper.ts +61 -51
  216. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  217. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +8 -3
  218. package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
  219. package/src/sap/fe/core/templating/EntityTypeHelper.ts +1 -1
  220. package/src/sap/fe/core/templating/FieldControlHelper.js +3 -3
  221. package/src/sap/fe/core/templating/FieldControlHelper.ts +27 -8
  222. package/src/sap/fe/core/templating/FilterHelper.js +13 -10
  223. package/src/sap/fe/core/templating/FilterHelper.ts +80 -46
  224. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  225. package/src/sap/fe/core/templating/FilterTemplating.ts +2 -2
  226. package/src/sap/fe/core/templating/PropertyFormatters.js +6 -8
  227. package/src/sap/fe/core/templating/PropertyFormatters.ts +11 -11
  228. package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
  229. package/src/sap/fe/core/templating/PropertyHelper.ts +4 -4
  230. package/src/sap/fe/core/templating/SemanticObjectHelper.js +157 -13
  231. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +182 -16
  232. package/src/sap/fe/core/templating/UIFormatters.js +23 -22
  233. package/src/sap/fe/core/templating/UIFormatters.ts +94 -66
  234. package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
  235. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -2
  236. package/src/sap/fe/core/type/EDM.js +1 -1
  237. package/src/sap/fe/core/type/EDM.ts +2 -2
  238. package/src/sap/fe/core/type/Email.js +1 -1
  239. package/src/sap/fe/core/type/Email.ts +1 -1
  240. package/src/sap/fe/core/type/FiscalDate.js +2 -2
  241. package/src/sap/fe/core/type/FiscalDate.ts +2 -2
@@ -42,11 +42,11 @@ sap.ui.define(["sap/fe/core/converters/helpers/Aggregation", "sap/fe/core/conver
42
42
  }
43
43
  // consider dynamic measures only if there are no measures with custom aggregates
44
44
  if (!aCustAggMeasure[0] && chartAnnotation !== null && chartAnnotation !== void 0 && (_chartAnnotation$$tar8 = chartAnnotation.$target) !== null && _chartAnnotation$$tar8 !== void 0 && _chartAnnotation$$tar8.DynamicMeasures) {
45
- var _chartAnnotation$$tar9, _chartAnnotation$$tar10;
46
- sMeasure = converterContext.getConverterContextFor(converterContext.getAbsoluteAnnotationPath((_chartAnnotation$$tar9 = chartAnnotation.$target.DynamicMeasures) === null || _chartAnnotation$$tar9 === void 0 ? void 0 : (_chartAnnotation$$tar10 = _chartAnnotation$$tar9[0]) === null || _chartAnnotation$$tar10 === void 0 ? void 0 : _chartAnnotation$$tar10.value)).getDataModelObjectPath().targetObject.Name;
47
- aTransAggregations = aggregationHelper.getAggregatedProperties("AggregatedProperty");
45
+ var _converterContext$get, _chartAnnotation$$tar9, _chartAnnotation$$tar10;
46
+ sMeasure = (_converterContext$get = converterContext.getConverterContextFor(converterContext.getAbsoluteAnnotationPath((_chartAnnotation$$tar9 = chartAnnotation.$target.DynamicMeasures) === null || _chartAnnotation$$tar9 === void 0 ? void 0 : (_chartAnnotation$$tar10 = _chartAnnotation$$tar9[0]) === null || _chartAnnotation$$tar10 === void 0 ? void 0 : _chartAnnotation$$tar10.value)).getDataModelObjectPath().targetObject) === null || _converterContext$get === void 0 ? void 0 : _converterContext$get.Name.toString();
47
+ aTransAggregations = aggregationHelper.getAggregatedProperty();
48
48
  } else {
49
- aTransAggregations = aggregationHelper.getAggregatedProperties("AggregatedProperties")[0];
49
+ aTransAggregations = aggregationHelper.getAggregatedProperties()[0];
50
50
  }
51
51
  const sDimension = chartAnnotation === null || chartAnnotation === void 0 ? void 0 : (_chartAnnotation$$tar11 = chartAnnotation.$target) === null || _chartAnnotation$$tar11 === void 0 ? void 0 : (_chartAnnotation$$tar12 = _chartAnnotation$$tar11.Dimensions[0]) === null || _chartAnnotation$$tar12 === void 0 ? void 0 : _chartAnnotation$$tar12.value;
52
52
  if (customAggregates.some(function (custAgg) {
@@ -101,9 +101,9 @@ sap.ui.define(["sap/fe/core/converters/helpers/Aggregation", "sap/fe/core/conver
101
101
  const valueList = property === null || property === void 0 ? void 0 : (_property$annotations = property.annotations) === null || _property$annotations === void 0 ? void 0 : (_property$annotations2 = _property$annotations.Common) === null || _property$annotations2 === void 0 ? void 0 : _property$annotations2[qualifierVL];
102
102
  const isValueListWithFixedValues = (property === null || property === void 0 ? void 0 : (_property$annotations3 = property.annotations) === null || _property$annotations3 === void 0 ? void 0 : (_property$annotations4 = _property$annotations3.Common) === null || _property$annotations4 === void 0 ? void 0 : (_property$annotations5 = _property$annotations4.ValueListWithFixedValues) === null || _property$annotations5 === void 0 ? void 0 : _property$annotations5.valueOf()) || false;
103
103
  if (valueList) {
104
- var _converterContext$get, _collectionPathConver;
104
+ var _converterContext$get2, _collectionPathConver;
105
105
  const collectionPath = valueList === null || valueList === void 0 ? void 0 : valueList.CollectionPath.toString();
106
- const collectionPathConverterContext = converterContext.getConverterContextFor(`/${collectionPath || ((_converterContext$get = converterContext.getEntitySet()) === null || _converterContext$get === void 0 ? void 0 : _converterContext$get.name)}`);
106
+ const collectionPathConverterContext = converterContext.getConverterContextFor(`/${collectionPath || ((_converterContext$get2 = converterContext.getEntitySet()) === null || _converterContext$get2 === void 0 ? void 0 : _converterContext$get2.name)}`);
107
107
  const valueListParams = valueList === null || valueList === void 0 ? void 0 : valueList.Parameters;
108
108
  let outParameter;
109
109
  const inParameters = [];
@@ -311,4 +311,4 @@ sap.ui.define(["sap/fe/core/converters/helpers/Aggregation", "sap/fe/core/conver
311
311
  _exports._addInParameters = _addInParameters;
312
312
  return _exports;
313
313
  }, false);
314
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hlY2tWRkFnZ3JlZ2F0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImNoYXJ0QW5ub3RhdGlvbiIsImFnZ3JlZ2F0aW9uSGVscGVyIiwic01lYXN1cmVQYXRoIiwiYkdyb3VwYWJsZSIsImJBZ2dyZWdhdGFibGUiLCJzTWVhc3VyZSIsImN1c3RvbUFnZ3JlZ2F0ZXMiLCJnZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucyIsImFUcmFuc0FnZ3JlZ2F0aW9ucyIsImdldFRyYW5zQWdncmVnYXRpb25zIiwiYUN1c3RBZ2dNZWFzdXJlIiwiJHRhcmdldCIsIk1lYXN1cmVzIiwiZmlsdGVyIiwiY3VzdEFnZyIsInF1YWxpZmllciIsInZhbHVlIiwibGVuZ3RoIiwiRHluYW1pY01lYXN1cmVzIiwiZ2V0Q29udmVydGVyQ29udGV4dEZvciIsImdldEFic29sdXRlQW5ub3RhdGlvblBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidGFyZ2V0T2JqZWN0IiwiTmFtZSIsImdldEFnZ3JlZ2F0ZWRQcm9wZXJ0aWVzIiwic0RpbWVuc2lvbiIsIkRpbWVuc2lvbnMiLCJzb21lIiwib0FnZ3JlZ2F0ZSIsIkFnZ3JlZ2F0YWJsZVByb3BlcnR5IiwiYUFnZ3JlZ2F0YWJsZVByb3BzRnJvbUNvbnRhaW5lciIsImdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJhR3JvdXBhYmxlUHJvcHNGcm9tQ29udGFpbmVyIiwiZ2V0R3JvdXBhYmxlUHJvcGVydGllcyIsImFnZ3JlZ2F0YWJsZVByb3AiLCJQcm9wZXJ0eSIsImdyb3VwYWJsZVByb3AiLCJnZXRWaXN1YWxGaWx0ZXJzIiwiZW50aXR5VHlwZSIsInNQcm9wZXJ0eVBhdGgiLCJGaWx0ZXJGaWVsZHMiLCJ2aXN1YWxGaWx0ZXIiLCJvVmlzdWFsRmlsdGVyIiwidmFsdWVMaXN0Iiwib1ZGUGF0aCIsImFubm90YXRpb25RdWFsaWZpZXJTcGxpdCIsInNwbGl0IiwicXVhbGlmaWVyVkwiLCJwcm9wZXJ0eSIsInJlc29sdmVQYXRoIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJpc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyIsIlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyIsInZhbHVlT2YiLCJjb2xsZWN0aW9uUGF0aCIsIkNvbGxlY3Rpb25QYXRoIiwidG9TdHJpbmciLCJjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQiLCJnZXRFbnRpdHlTZXQiLCJuYW1lIiwidmFsdWVMaXN0UGFyYW1zIiwiUGFyYW1ldGVycyIsIm91dFBhcmFtZXRlciIsImluUGFyYW1ldGVycyIsImFQYXJhbWV0ZXJzIiwicGFyYW1ldGVyRW50aXR5VHlwZSIsImdldFBhcmFtZXRlckVudGl0eVR5cGUiLCJrZXlzIiwibWFwIiwia2V5IiwiZ2V0Q29udGV4dFBhdGgiLCJfYWRkSW5QYXJhbWV0ZXJzIiwidmFsdWVMaXN0UGFyYW0iLCJsb2NhbERhdGFQcm9wZXJ0eSIsIkxvY2FsRGF0YVByb3BlcnR5IiwidmFsdWVMaXN0UHJvcGVydHkiLCJWYWx1ZUxpc3RQcm9wZXJ0eSIsIiRUeXBlIiwiYk5vdEZpbHRlcmFibGUiLCJpc1Byb3BlcnR5RmlsdGVyYWJsZSIsInB1c2giLCJmb3JFYWNoIiwib0luUGFyYW1ldGVyIiwibWFpbkVudGl0eVNldEluTWFwcGluZ0FsbG93ZWRFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJ2YWx1ZUxpc3RFbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiIsIkVycm9yIiwicHZRdWFsaWZpZXIiLCJQcmVzZW50YXRpb25WYXJpYW50UXVhbGlmaWVyIiwic3ZRdWFsaWZpZXIiLCJTZWxlY3Rpb25WYXJpYW50UXVhbGlmaWVyIiwicHZBbm5vdGF0aW9uIiwiZ2V0RW50aXR5VHlwZSIsIlVJIiwiQWdncmVnYXRpb25IZWxwZXIiLCJpc0FuYWx5dGljc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIsImFWaXN1YWxpemF0aW9ucyIsIlZpc3VhbGl6YXRpb25zIiwiY29udGV4dFBhdGgiLCJ2aXN1YWxpemF0aW9uIiwidGVybSIsIl9iZ2V0VkZBZ2dyZWdhdGlvbiIsImJEaW1lbnNpb25IaWRkZW4iLCJIaWRkZW4iLCJiRGltZW5zaW9uSGlkZGVuRmlsdGVyIiwiSGlkZGVuRmlsdGVyIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZW50aXR5U2V0TmFtZSIsInByZXNlbnRhdGlvbkFubm90YXRpb24iLCJyZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsInZhbHVlbGlzdFByb3BlcnR5IiwiYklzUmFuZ2UiLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiSGlnaCIsIklzc3VlVHlwZSIsIk1BTEZPUk1FRF9WSVNVQUxGSUxURVJTIiwiVkFMVUVMSVNUIiwiYklzTWFpbkVudGl0eVNldFNpbmdsZVNlbGVjdGlvbiIsIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCIsIm5vdCIsInJlcXVpcmVkIiwiZ2V0SXNSZXF1aXJlZCIsInN2QW5ub3RhdGlvbiIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbiIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwicmVsYXRpdmVTZWxlY3Rpb25WYXJpYW50UGF0aCIsInJlcXVpcmVkUHJvcGVydGllcyIsInNFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblByb3BlcnR5Iiwib0VudGl0eVNldENvbnZlcnRlckNvbnRleHQiLCJhUmVzdHJpY3RlZFByb3BlcnRpZXMiLCJzdGFydGluZ0VudGl0eVNldCIsIkNhcGFiaWxpdGllcyIsIk5hdmlnYXRpb25SZXN0cmljdGlvbnMiLCJSZXN0cmljdGVkUHJvcGVydGllcyIsIm9SZXN0cmljdGVkUHJvcGVydHkiLCJmaW5kIiwicmVzdHJpY3RlZE5hdlByb3AiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJ0eXBlIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwiZW50aXR5U2V0T3JTaW5nbGV0b24iLCJpc0VudGl0eVNldCIsInJlcXVpcmVkUHJvcGVydHlQYXRocyIsIm9SZXF1aXJlUHJvcGVydHkiLCJjb25jYXQiLCJzaG93T3ZlcmxheUluaXRpYWxseSIsInNlbGVjdE9wdGlvbnMiLCJTZWxlY3RPcHRpb25zIiwib1NlbGVjdE9wdGlvbiIsIlByb3BlcnR5TmFtZSIsInBhcmFtZXRlck9wdGlvbnMiLCJvUGFyYW1ldGVyT3B0aW9uIiwic29ydCIsInNQYXRoIiwiaW5jbHVkZXMiLCJzRGltZW5zaW9uVHlwZSIsInJlbmRlckxpbmVDaGFydCIsIkNoYXJ0VHlwZSIsIkNIQVJUIiwiUFJFU0VOVEFUSU9OVkFSSUFOVCIsIk1hbmlmZXN0IiwiaW5QYXJhbXMiLCJwcm9wZXJ0aWVzIiwiaXNQYXJhbSIsImVsZW1lbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlZpc3VhbEZpbHRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uUGF0aCwgRW50aXR5VHlwZSwgUHJvcGVydHksIFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBZ2dyZWdhdGFibGVQcm9wZXJ0eVR5cGUsIEN1c3RvbUFnZ3JlZ2F0ZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ2FwYWJpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdFZhbHVlTGlzdCxcblx0VmFsdWVMaXN0UGFyYW1ldGVySW4sXG5cdFZhbHVlTGlzdFBhcmFtZXRlckluT3V0LFxuXHRWYWx1ZUxpc3RQYXJhbWV0ZXJPdXRcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlBbm5vdGF0aW9uc19Db21tb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vbl9FZG1cIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnQsIFBhcmFtZXRlclR5cGVzLCBTZWxlY3Rpb25WYXJpYW50IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9Db252ZXJ0ZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvbkhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlU2V2ZXJpdHksIElzc3VlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlckZpZWxkTWFuaWZlc3RDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgbm90IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGlzRW50aXR5U2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0SXNSZXF1aXJlZCwgaXNQcm9wZXJ0eUZpbHRlcmFibGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWx0ZXJUZW1wbGF0aW5nXCI7XG5cbmV4cG9ydCB0eXBlIFZpc3VhbEZpbHRlcnMgPSB7XG5cdGRpbWVuc2lvblBhdGg/OiBzdHJpbmc7XG5cdG1lYXN1cmVQYXRoPzogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0Y2hhcnRBbm5vdGF0aW9uPzogc3RyaW5nO1xuXHRwcmVzZW50YXRpb25Bbm5vdGF0aW9uPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogYm9vbGVhbjtcblx0b3V0UGFyYW1ldGVyPzogc3RyaW5nO1xuXHRpblBhcmFtZXRlcnM/OiBvYmplY3RbXTtcblx0dmFsdWVsaXN0UHJvcGVydHk/OiBzdHJpbmc7XG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbj86IHN0cmluZztcblx0bXVsdGlwbGVTZWxlY3Rpb25BbGxvd2VkPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHJlcXVpcmVkPzogYm9vbGVhbjtcblx0c2hvd092ZXJsYXlJbml0aWFsbHk/OiBib29sZWFuO1xuXHRyZW5kZXJMaW5lQ2hhcnQ/OiBib29sZWFuO1xuXHRyZXF1aXJlZFByb3BlcnRpZXM/OiBzdHJpbmdbXTtcblx0aXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBDaGVja3MgdGhhdCBtZWFzdXJlcyBhbmQgZGltZW5zaW9ucyBvZiB0aGUgdmlzdWFsIGZpbHRlciBjaGFydCBjYW4gYmUgYWdncmVnYXRlZCBhbmQgZ3JvdXBlZC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBjaGFydEFubm90YXRpb24gVGhlIGNoYXJ0IGFubm90YXRpb25cbiAqIEBwYXJhbSBhZ2dyZWdhdGlvbkhlbHBlciBUaGUgYWdncmVnYXRpb24gaGVscGVyXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG1lYXN1cmUgY2FuIGJlIGdyb3VwZWQgYW5kIGFnZ3JlZ2F0ZWRcbiAqL1xuY29uc3QgX2NoZWNrVkZBZ2dyZWdhdGlvbiA9IGZ1bmN0aW9uIChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0Y2hhcnRBbm5vdGF0aW9uOiBBbm5vdGF0aW9uUGF0aDxDaGFydD4sXG5cdGFnZ3JlZ2F0aW9uSGVscGVyOiBBZ2dyZWdhdGlvbkhlbHBlclxuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdGxldCBzTWVhc3VyZVBhdGgsIGJHcm91cGFibGUsIGJBZ2dyZWdhdGFibGU7XG5cdGxldCBzTWVhc3VyZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRjb25zdCBjdXN0b21BZ2dyZWdhdGVzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMoKTtcblx0bGV0IGFUcmFuc0FnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldFRyYW5zQWdncmVnYXRpb25zKCk7XG5cdGxldCBhQ3VzdEFnZ01lYXN1cmUgPSBbXSBhcyBBcnJheTxDdXN0b21BZ2dyZWdhdGU+O1xuXHQvLyBpZiB0aGUgY2hhcnQgZGVmaW5pdGlvbiBoYXMgY3VzdG9tIGFnZ3JlZ2F0ZXMsIHRoZW4gY29uc2lkZXIgdGhlbSwgZWxzZSBmYWxsIGJhY2sgdG8gdGhlIG1lYXN1cmVzIHdpdGggdHJhbnNmb3JtYXRpb24gYWdncmVnYXRlc1xuXHRpZiAoY2hhcnRBbm5vdGF0aW9uPy4kdGFyZ2V0Py5NZWFzdXJlcykge1xuXHRcdGFDdXN0QWdnTWVhc3VyZSA9IGN1c3RvbUFnZ3JlZ2F0ZXMuZmlsdGVyKGZ1bmN0aW9uIChjdXN0QWdnOiBDdXN0b21BZ2dyZWdhdGUpIHtcblx0XHRcdHJldHVybiBjdXN0QWdnLnF1YWxpZmllciA9PT0gY2hhcnRBbm5vdGF0aW9uPy4kdGFyZ2V0Py5NZWFzdXJlcz8uWzBdPy52YWx1ZTtcblx0XHR9KTtcblx0XHRzTWVhc3VyZSA9IGFDdXN0QWdnTWVhc3VyZS5sZW5ndGggPiAwID8gYUN1c3RBZ2dNZWFzdXJlWzBdLnF1YWxpZmllciA6IGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uTWVhc3VyZXM/LlswXT8udmFsdWU7XG5cdH1cblx0Ly8gY29uc2lkZXIgZHluYW1pYyBtZWFzdXJlcyBvbmx5IGlmIHRoZXJlIGFyZSBubyBtZWFzdXJlcyB3aXRoIGN1c3RvbSBhZ2dyZWdhdGVzXG5cdGlmICghYUN1c3RBZ2dNZWFzdXJlWzBdICYmIGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uRHluYW1pY01lYXN1cmVzKSB7XG5cdFx0c01lYXN1cmUgPSBjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihjb252ZXJ0ZXJDb250ZXh0LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgoY2hhcnRBbm5vdGF0aW9uLiR0YXJnZXQuRHluYW1pY01lYXN1cmVzPy5bMF0/LnZhbHVlKSlcblx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkudGFyZ2V0T2JqZWN0Lk5hbWU7XG5cdFx0YVRyYW5zQWdncmVnYXRpb25zID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0QWdncmVnYXRlZFByb3BlcnRpZXMoXCJBZ2dyZWdhdGVkUHJvcGVydHlcIik7XG5cdH0gZWxzZSB7XG5cdFx0YVRyYW5zQWdncmVnYXRpb25zID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0QWdncmVnYXRlZFByb3BlcnRpZXMoXCJBZ2dyZWdhdGVkUHJvcGVydGllc1wiKVswXTtcblx0fVxuXG5cdGNvbnN0IHNEaW1lbnNpb24gPSBjaGFydEFubm90YXRpb24/LiR0YXJnZXQ/LkRpbWVuc2lvbnNbMF0/LnZhbHVlO1xuXG5cdGlmIChcblx0XHRjdXN0b21BZ2dyZWdhdGVzLnNvbWUoZnVuY3Rpb24gKGN1c3RBZ2c6IEN1c3RvbUFnZ3JlZ2F0ZSkge1xuXHRcdFx0cmV0dXJuIGN1c3RBZ2cucXVhbGlmaWVyID09PSBzTWVhc3VyZTtcblx0XHR9KVxuXHQpIHtcblx0XHRzTWVhc3VyZVBhdGggPSBzTWVhc3VyZTtcblx0fSBlbHNlIGlmIChhVHJhbnNBZ2dyZWdhdGlvbnMgJiYgYVRyYW5zQWdncmVnYXRpb25zWzBdKSB7XG5cdFx0YVRyYW5zQWdncmVnYXRpb25zLnNvbWUoZnVuY3Rpb24gKG9BZ2dyZWdhdGUpIHtcblx0XHRcdGlmIChvQWdncmVnYXRlLk5hbWUgPT09IHNNZWFzdXJlKSB7XG5cdFx0XHRcdHNNZWFzdXJlUGF0aCA9IG9BZ2dyZWdhdGU/LkFnZ3JlZ2F0YWJsZVByb3BlcnR5LnZhbHVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IGFBZ2dyZWdhdGFibGVQcm9wc0Zyb21Db250YWluZXIgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzKCk7XG5cdGNvbnN0IGFHcm91cGFibGVQcm9wc0Zyb21Db250YWluZXIgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRHcm91cGFibGVQcm9wZXJ0aWVzKCk7XG5cdGlmIChhQWdncmVnYXRhYmxlUHJvcHNGcm9tQ29udGFpbmVyICYmIGFBZ2dyZWdhdGFibGVQcm9wc0Zyb21Db250YWluZXIubGVuZ3RoKSB7XG5cdFx0Zm9yIChjb25zdCBhZ2dyZWdhdGFibGVQcm9wIG9mIGFBZ2dyZWdhdGFibGVQcm9wc0Zyb21Db250YWluZXIpIHtcblx0XHRcdGlmICgoYWdncmVnYXRhYmxlUHJvcCBhcyBBZ2dyZWdhdGFibGVQcm9wZXJ0eVR5cGUpPy5Qcm9wZXJ0eT8udmFsdWUgPT09IHNNZWFzdXJlUGF0aCkge1xuXHRcdFx0XHRiQWdncmVnYXRhYmxlID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0aWYgKGFHcm91cGFibGVQcm9wc0Zyb21Db250YWluZXIgJiYgYUdyb3VwYWJsZVByb3BzRnJvbUNvbnRhaW5lci5sZW5ndGgpIHtcblx0XHRmb3IgKGNvbnN0IGdyb3VwYWJsZVByb3Agb2YgYUdyb3VwYWJsZVByb3BzRnJvbUNvbnRhaW5lcikge1xuXHRcdFx0aWYgKGdyb3VwYWJsZVByb3A/LnZhbHVlID09PSBzRGltZW5zaW9uKSB7XG5cdFx0XHRcdGJHcm91cGFibGUgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYkFnZ3JlZ2F0YWJsZSAmJiBiR3JvdXBhYmxlO1xufTtcblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyVHlwZSA9IHtcblx0bG9jYWxEYXRhUHJvcGVydHk6IHN0cmluZztcblx0dmFsdWVMaXN0UHJvcGVydHk6IHN0cmluZztcbn07XG5cbi8qKlxuICogTWV0aG9kIHRvIGdldCB0aGUgdmlzdWFsIGZpbHRlcnMgb2JqZWN0IGZvciBhIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSBlbnRpdHlUeXBlIFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNoYXJ0IGFubm90YXRpb25cbiAqIEBwYXJhbSBzUHJvcGVydHlQYXRoIFRoZSBhZ2dyZWdhdGlvbiBoZWxwZXJcbiAqIEBwYXJhbSBGaWx0ZXJGaWVsZHMgVGhlIGFnZ3JlZ2F0aW9uIGhlbHBlclxuICogQHJldHVybnMgVGhlIHZpc3VhbCBmaWx0ZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXN1YWxGaWx0ZXJzKFxuXHRlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzUHJvcGVydHlQYXRoOiBzdHJpbmcsXG5cdEZpbHRlckZpZWxkczogUmVjb3JkPHN0cmluZywgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24+XG4pOiBWaXN1YWxGaWx0ZXJzIHwgdW5kZWZpbmVkIHtcblx0bGV0IHZpc3VhbEZpbHRlcjogVmlzdWFsRmlsdGVycyB8IHVuZGVmaW5lZDtcblx0Y29uc3Qgb1Zpc3VhbEZpbHRlcjogRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBGaWx0ZXJGaWVsZHNbc1Byb3BlcnR5UGF0aF07XG5cdGlmIChvVmlzdWFsRmlsdGVyPy52aXN1YWxGaWx0ZXI/LnZhbHVlTGlzdCkge1xuXHRcdGNvbnN0IG9WRlBhdGggPSBvVmlzdWFsRmlsdGVyPy52aXN1YWxGaWx0ZXI/LnZhbHVlTGlzdDtcblx0XHRjb25zdCBhbm5vdGF0aW9uUXVhbGlmaWVyU3BsaXQgPSBvVkZQYXRoLnNwbGl0KFwiI1wiKTtcblx0XHRjb25zdCBxdWFsaWZpZXJWTCA9IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdC5sZW5ndGggPiAxID8gYFZhbHVlTGlzdCMke2Fubm90YXRpb25RdWFsaWZpZXJTcGxpdFsxXX1gIDogYW5ub3RhdGlvblF1YWxpZmllclNwbGl0WzBdO1xuXHRcdGNvbnN0IHByb3BlcnR5ID0gZW50aXR5VHlwZS5yZXNvbHZlUGF0aChzUHJvcGVydHlQYXRoKSBhcyBQcm9wZXJ0eTtcblx0XHRjb25zdCB2YWx1ZUxpc3QgPSBwcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uW3F1YWxpZmllclZMIGFzIGtleW9mIFByb3BlcnR5QW5ub3RhdGlvbnNfQ29tbW9uXSBhcyBWYWx1ZUxpc3QgfCB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgaXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMgPSAocHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcz8udmFsdWVPZigpIGFzIGJvb2xlYW4pIHx8IGZhbHNlO1xuXHRcdGlmICh2YWx1ZUxpc3QpIHtcblx0XHRcdGNvbnN0IGNvbGxlY3Rpb25QYXRoID0gdmFsdWVMaXN0Py5Db2xsZWN0aW9uUGF0aC50b1N0cmluZygpO1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0ID0gY29udmVydGVyQ29udGV4dC5nZXRDb252ZXJ0ZXJDb250ZXh0Rm9yKFxuXHRcdFx0XHRgLyR7Y29sbGVjdGlvblBhdGggfHwgY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKT8ubmFtZX1gXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3QgdmFsdWVMaXN0UGFyYW1zID0gdmFsdWVMaXN0Py5QYXJhbWV0ZXJzO1xuXHRcdFx0bGV0IG91dFBhcmFtZXRlcjogVmFsdWVMaXN0UGFyYW1ldGVyT3V0IHwgVmFsdWVMaXN0UGFyYW1ldGVySW5PdXQgfCB1bmRlZmluZWQ7XG5cdFx0XHRjb25zdCBpblBhcmFtZXRlcnM6IFBhcmFtZXRlclR5cGVbXSA9IFtdO1xuXHRcdFx0bGV0IGFQYXJhbWV0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdFx0Y29uc3QgcGFyYW1ldGVyRW50aXR5VHlwZSA9IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRQYXJhbWV0ZXJFbnRpdHlUeXBlKCk7XG5cdFx0XHRhUGFyYW1ldGVycyA9IHBhcmFtZXRlckVudGl0eVR5cGVcblx0XHRcdFx0PyBwYXJhbWV0ZXJFbnRpdHlUeXBlLmtleXMubWFwKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBrZXkubmFtZTtcblx0XHRcdFx0ICB9KVxuXHRcdFx0XHQ6IFtdO1xuXHRcdFx0aWYgKGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSA9PT0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldENvbnRleHRQYXRoKCkpIHtcblx0XHRcdFx0X2FkZEluUGFyYW1ldGVycyhpblBhcmFtZXRlcnMsIGFQYXJhbWV0ZXJzLCB0cnVlKTtcblx0XHRcdH1cblx0XHRcdGlmICh2YWx1ZUxpc3RQYXJhbXMpIHtcblx0XHRcdFx0Zm9yIChjb25zdCB2YWx1ZUxpc3RQYXJhbSBvZiB2YWx1ZUxpc3RQYXJhbXMpIHtcblx0XHRcdFx0XHRjb25zdCBsb2NhbERhdGFQcm9wZXJ0eSA9ICh2YWx1ZUxpc3RQYXJhbSBhcyBWYWx1ZUxpc3RQYXJhbWV0ZXJJbikuTG9jYWxEYXRhUHJvcGVydHk/LnZhbHVlO1xuXHRcdFx0XHRcdGNvbnN0IHZhbHVlTGlzdFByb3BlcnR5ID0gdmFsdWVMaXN0UGFyYW0uVmFsdWVMaXN0UHJvcGVydHkgYXMgc3RyaW5nO1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCh2YWx1ZUxpc3RQYXJhbT8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluT3V0XCIgfHxcblx0XHRcdFx0XHRcdFx0dmFsdWVMaXN0UGFyYW0/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJPdXRcIikgJiZcblx0XHRcdFx0XHRcdHNQcm9wZXJ0eVBhdGggPT09IGxvY2FsRGF0YVByb3BlcnR5XG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRvdXRQYXJhbWV0ZXIgPSB2YWx1ZUxpc3RQYXJhbTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0KHZhbHVlTGlzdFBhcmFtPy4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UGFyYW1ldGVySW5PdXRcIiB8fFxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbT8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlckluXCIpICYmXG5cdFx0XHRcdFx0XHRzUHJvcGVydHlQYXRoICE9PSBsb2NhbERhdGFQcm9wZXJ0eVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgYk5vdEZpbHRlcmFibGUgPSBpc1Byb3BlcnR5RmlsdGVyYWJsZShjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQsIHZhbHVlTGlzdFByb3BlcnR5KTtcblx0XHRcdFx0XHRcdGlmICghYk5vdEZpbHRlcmFibGUpIHtcblx0XHRcdFx0XHRcdFx0aW5QYXJhbWV0ZXJzLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGxvY2FsRGF0YVByb3BlcnR5OiBsb2NhbERhdGFQcm9wZXJ0eSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3RQcm9wZXJ0eTogdmFsdWVMaXN0UHJvcGVydHlcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoaW5QYXJhbWV0ZXJzICYmIGluUGFyYW1ldGVycy5sZW5ndGgpIHtcblx0XHRcdFx0aW5QYXJhbWV0ZXJzLmZvckVhY2goZnVuY3Rpb24gKG9JblBhcmFtZXRlcikge1xuXHRcdFx0XHRcdGNvbnN0IG1haW5FbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdFx0Y2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zKFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0LmdldENvbnZlcnRlckNvbnRleHRGb3IoY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKG9JblBhcmFtZXRlcj8ubG9jYWxEYXRhUHJvcGVydHkpKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFtcIlNpbmdsZVZhbHVlXCJdXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRjb25zdCB2YWx1ZUxpc3RFbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdFx0Y2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zKFxuXHRcdFx0XHRcdFx0XHRjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihcblx0XHRcdFx0XHRcdFx0XHRcdGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKG9JblBhcmFtZXRlcj8udmFsdWVMaXN0UHJvcGVydHkpXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFtcIlNpbmdsZVZhbHVlXCJdXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAodmFsdWVMaXN0RW50aXR5U2V0SW5NYXBwaW5nQWxsb3dlZEV4cHJlc3Npb24gPT09IFwidHJ1ZVwiICYmIG1haW5FbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiA9PT0gXCJmYWxzZVwiKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZpbHRlclJlc3RyaWN0aW9ucyBvZiAke3NQcm9wZXJ0eVBhdGh9IGluIE1haW5FbnRpdHlTZXQgYW5kIFZhbHVlTGlzdEVudGl0eVNldCBhcmUgZGlmZmVyZW50YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHB2UXVhbGlmaWVyID0gdmFsdWVMaXN0Py5QcmVzZW50YXRpb25WYXJpYW50UXVhbGlmaWVyO1xuXHRcdFx0Y29uc3Qgc3ZRdWFsaWZpZXIgPSB2YWx1ZUxpc3Q/LlNlbGVjdGlvblZhcmlhbnRRdWFsaWZpZXI7XG5cdFx0XHRjb25zdCBwdkFubm90YXRpb24gPSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucy5VST8uW2BQcmVzZW50YXRpb25WYXJpYW50IyR7cHZRdWFsaWZpZXJ9YF07XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0aWYgKCFhZ2dyZWdhdGlvbkhlbHBlci5pc0FuYWx5dGljc1N1cHBvcnRlZCgpKSB7XG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0XHRpZiAocHZBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdGNvbnN0IGFWaXN1YWxpemF0aW9ucyA9IHB2QW5ub3RhdGlvbj8uVmlzdWFsaXphdGlvbnM7XG5cdFx0XHRcdGNvbnN0IGNvbnRleHRQYXRoID0gYC8ke3ZhbHVlTGlzdD8uQ29sbGVjdGlvblBhdGh9YCB8fCBgLyR7Y29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRFbnRpdHlTZXQoKT8ubmFtZX1gO1xuXHRcdFx0XHR2aXN1YWxGaWx0ZXIgPSB7fTtcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmNvbnRleHRQYXRoID0gY29udGV4dFBhdGg7XG5cdFx0XHRcdHZpc3VhbEZpbHRlci5pc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyA9IGlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzO1xuXHRcdFx0XHRsZXQgY2hhcnRBbm5vdGF0aW9uOiBBbm5vdGF0aW9uUGF0aDxDaGFydD4gfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGZvciAoY29uc3QgdmlzdWFsaXphdGlvbiBvZiBhVmlzdWFsaXphdGlvbnMpIHtcblx0XHRcdFx0XHRpZiAodmlzdWFsaXphdGlvbi4kdGFyZ2V0Py50ZXJtID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIpIHtcblx0XHRcdFx0XHRcdGNoYXJ0QW5ub3RhdGlvbiA9IHZpc3VhbGl6YXRpb24gYXMgQW5ub3RhdGlvblBhdGg8Q2hhcnQ+O1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjaGFydEFubm90YXRpb24pIHtcblx0XHRcdFx0XHRjb25zdCBfYmdldFZGQWdncmVnYXRpb246IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBfY2hlY2tWRkFnZ3JlZ2F0aW9uKFxuXHRcdFx0XHRcdFx0Y29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0Y2hhcnRBbm5vdGF0aW9uLFxuXHRcdFx0XHRcdFx0YWdncmVnYXRpb25IZWxwZXJcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmICghX2JnZXRWRkFnZ3JlZ2F0aW9uKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IGJEaW1lbnNpb25IaWRkZW4gPSBjaGFydEFubm90YXRpb24/LiR0YXJnZXQ/LkRpbWVuc2lvbnNbMF0/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCk7XG5cdFx0XHRcdFx0Y29uc3QgYkRpbWVuc2lvbkhpZGRlbkZpbHRlciA9XG5cdFx0XHRcdFx0XHRjaGFydEFubm90YXRpb24/LiR0YXJnZXQ/LkRpbWVuc2lvbnNbMF0/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5VST8uSGlkZGVuRmlsdGVyPy52YWx1ZU9mKCk7XG5cdFx0XHRcdFx0aWYgKGJEaW1lbnNpb25IaWRkZW4gPT09IHRydWUgfHwgYkRpbWVuc2lvbkhpZGRlbkZpbHRlciA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYVZpc3VhbGl6YXRpb25zICYmIGFWaXN1YWxpemF0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5jaGFydEFubm90YXRpb24gPSBjaGFydEFubm90YXRpb24uJHRhcmdldFxuXHRcdFx0XHRcdFx0XHQ/IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dD8uZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aChcblx0XHRcdFx0XHRcdFx0XHRcdGAke2NoYXJ0QW5ub3RhdGlvbi4kdGFyZ2V0LmZ1bGx5UXVhbGlmaWVkTmFtZX0vJEFubm90YXRpb25QYXRoL2Bcblx0XHRcdFx0XHRcdFx0ICApXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0Ly8gVGhpcyBuZWVkcyB0byBiZSBkb25lIHRvIGF2b2lkIHJlcGV0aXRpdmUgZW50aXR5IHR5cGUgaW4gY2FzZSBvZiBub24tcGFyYW1ldGVyaXplZCBlbnRpdHkgc2V0IGUuZyAvU2FsZXNPcmRlck1hbmFnZS9jb20uY19zYWxlc29yZGVybWFuYWdlX3NkX2FnZ3JlZ2F0ZS5TYWxlc09yZGVyTWFuYWdlXG5cdFx0XHRcdFx0XHRjb25zdCBlbnRpdHlTZXROYW1lID0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpPy5uYW1lO1xuXHRcdFx0XHRcdFx0bGV0IHByZXNlbnRhdGlvbkFubm90YXRpb247XG5cdFx0XHRcdFx0XHRjb25zdCByZWxhdGl2ZUFubm90YXRpb25QYXRoID0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdFx0XHRgJHtwdkFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lfS9gLFxuXHRcdFx0XHRcdFx0XHRjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0aWYgKHBhcmFtZXRlckVudGl0eVR5cGUpIHtcblx0XHRcdFx0XHRcdFx0cHJlc2VudGF0aW9uQW5ub3RhdGlvbiA9IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRDb250ZXh0UGF0aCgpICsgXCIvXCIgKyByZWxhdGl2ZUFubm90YXRpb25QYXRoO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cHJlc2VudGF0aW9uQW5ub3RhdGlvbiA9IFwiL1wiICsgZW50aXR5U2V0TmFtZSArIFwiL1wiICsgcmVsYXRpdmVBbm5vdGF0aW9uUGF0aDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5wcmVzZW50YXRpb25Bbm5vdGF0aW9uID0gcHZBbm5vdGF0aW9uID8gcHJlc2VudGF0aW9uQW5ub3RhdGlvbiA6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5vdXRQYXJhbWV0ZXIgPSBvdXRQYXJhbWV0ZXI/LkxvY2FsRGF0YVByb3BlcnR5Py52YWx1ZTtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5pblBhcmFtZXRlcnMgPSBpblBhcmFtZXRlcnM7XG5cdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIudmFsdWVsaXN0UHJvcGVydHkgPSBvdXRQYXJhbWV0ZXI/LlZhbHVlTGlzdFByb3BlcnR5IGFzIHN0cmluZztcblx0XHRcdFx0XHRcdGNvbnN0IGJJc1JhbmdlID0gY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zKFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0LmdldENvbnZlcnRlckNvbnRleHRGb3IoY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHNQcm9wZXJ0eVBhdGgpKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFtcIlNpbmdsZVJhbmdlXCIsIFwiTXVsdGlSYW5nZVwiXVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0aWYgKGNvbXBpbGVFeHByZXNzaW9uKGJJc1JhbmdlKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHRcdFx0LmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5IaWdoLCBJc3N1ZVR5cGUuTUFMRk9STUVEX1ZJU1VBTEZJTFRFUlMuVkFMVUVMSVNUKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3QgYklzTWFpbkVudGl0eVNldFNpbmdsZVNlbGVjdGlvbiA9IGNoZWNrRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyhcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdC5nZXRDb252ZXJ0ZXJDb250ZXh0Rm9yKGNvbnZlcnRlckNvbnRleHQuZ2V0QWJzb2x1dGVBbm5vdGF0aW9uUGF0aChzUHJvcGVydHlQYXRoKSlcblx0XHRcdFx0XHRcdFx0XHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLFxuXHRcdFx0XHRcdFx0XHRbXCJTaW5nbGVWYWx1ZVwiXVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5tdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQgPSBjb21waWxlRXhwcmVzc2lvbihub3QoYklzTWFpbkVudGl0eVNldFNpbmdsZVNlbGVjdGlvbikpO1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnJlcXVpcmVkID0gZ2V0SXNSZXF1aXJlZChjb252ZXJ0ZXJDb250ZXh0LCBzUHJvcGVydHlQYXRoKTtcblx0XHRcdFx0XHRcdGxldCBzdkFubm90YXRpb246IFNlbGVjdGlvblZhcmlhbnQgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRpZiAoc3ZRdWFsaWZpZXIpIHtcblx0XHRcdFx0XHRcdFx0c3ZBbm5vdGF0aW9uID0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihgQFVJLlNlbGVjdGlvblZhcmlhbnQjJHtzdlF1YWxpZmllcn1gKVxuXHRcdFx0XHRcdFx0XHRcdD8uYW5ub3RhdGlvbjtcblx0XHRcdFx0XHRcdFx0bGV0IHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uO1xuXHRcdFx0XHRcdFx0XHRjb25zdCByZWxhdGl2ZVNlbGVjdGlvblZhcmlhbnRQYXRoID0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdFx0XHRcdGAke3N2QW5ub3RhdGlvbj8uZnVsbHlRdWFsaWZpZWROYW1lfS9gLFxuXHRcdFx0XHRcdFx0XHRcdGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtZXRlckVudGl0eVR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSArIFwiL1wiICsgcmVsYXRpdmVTZWxlY3Rpb25WYXJpYW50UGF0aDtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA9IFwiL1wiICsgZW50aXR5U2V0TmFtZSArIFwiL1wiICsgcmVsYXRpdmVTZWxlY3Rpb25WYXJpYW50UGF0aDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24gPSBzdkFubm90YXRpb24gPyBzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGxldCByZXF1aXJlZFByb3BlcnRpZXM6IFByb3BlcnR5UGF0aFtdID0gW107XG5cdFx0XHRcdFx0XHRpZiAocGFyYW1ldGVyRW50aXR5VHlwZSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzRW50aXR5U2V0ID0gY29sbGVjdGlvblBhdGguc3BsaXQoXCIvXCIpWzBdO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzTmF2aWdhdGlvblByb3BlcnR5ID0gY29sbGVjdGlvblBhdGguc3BsaXQoXCIvXCIpWzFdO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBvRW50aXR5U2V0Q29udmVydGVyQ29udGV4dCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihgLyR7c0VudGl0eVNldH1gKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYVJlc3RyaWN0ZWRQcm9wZXJ0aWVzID1cblx0XHRcdFx0XHRcdFx0XHRvRW50aXR5U2V0Q29udmVydGVyQ29udGV4dD8uZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnN0YXJ0aW5nRW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdFx0XHRcdFx0XHQ/Lk5hdmlnYXRpb25SZXN0cmljdGlvbnM/LlJlc3RyaWN0ZWRQcm9wZXJ0aWVzO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBvUmVzdHJpY3RlZFByb3BlcnR5ID0gYVJlc3RyaWN0ZWRQcm9wZXJ0aWVzPy5maW5kKFxuXHRcdFx0XHRcdFx0XHRcdChyZXN0cmljdGVkTmF2UHJvcDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eT8udHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eS52YWx1ZSA9PT0gc05hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydGllcyA9IG9SZXN0cmljdGVkUHJvcGVydHk/LkZpbHRlclJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZW50aXR5U2V0T3JTaW5nbGV0b24gPSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEVudGl0eVNldCgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoaXNFbnRpdHlTZXQoZW50aXR5U2V0T3JTaW5nbGV0b24pKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzID1cblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldE9yU2luZ2xldG9uLmFubm90YXRpb25zLkNhcGFiaWxpdGllcz8uRmlsdGVyUmVzdHJpY3Rpb25zPy5SZXF1aXJlZFByb3BlcnRpZXMgPz8gW107XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGxldCByZXF1aXJlZFByb3BlcnR5UGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRcdFx0XHRpZiAocmVxdWlyZWRQcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKG9SZXF1aXJlUHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFByb3BlcnR5UGF0aHMucHVzaChvUmVxdWlyZVByb3BlcnR5LnZhbHVlKTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXF1aXJlZFByb3BlcnR5UGF0aHMgPSByZXF1aXJlZFByb3BlcnR5UGF0aHMuY29uY2F0KGFQYXJhbWV0ZXJzKTtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5yZXF1aXJlZFByb3BlcnRpZXMgPSByZXF1aXJlZFByb3BlcnR5UGF0aHM7XG5cdFx0XHRcdFx0XHRpZiAoY29udmVydGVyQ29udGV4dC5nZXRDb250ZXh0UGF0aCgpID09PSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSkge1xuXHRcdFx0XHRcdFx0XHQvLyBpZiBjb250ZXh0IFBhdGggZm9yIGJvdGggdmlzdWFsIGZpbHRlciBhbmQgZmlsdGVyIGJhciBhcmUgc2FtZSwgY29uc2lkZXIgcmVxdWlyZWQgUHJvcGVydGllcyBhcyB3ZWxsIGFsb25nIHdpdGggaW4gUGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0XHRfYWRkSW5QYXJhbWV0ZXJzKGluUGFyYW1ldGVycywgcmVxdWlyZWRQcm9wZXJ0aWVzLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAodmlzdWFsRmlsdGVyLnJlcXVpcmVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghdmlzdWFsRmlsdGVyLmluUGFyYW1ldGVycyB8fCAhdmlzdWFsRmlsdGVyLmluUGFyYW1ldGVycy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIXZpc3VhbEZpbHRlci5zZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnNob3dPdmVybGF5SW5pdGlhbGx5ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHNlbGVjdE9wdGlvbnMgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdkFubm90YXRpb24/LlNlbGVjdE9wdGlvbnM/Lm1hcCgob1NlbGVjdE9wdGlvbikgPT4gb1NlbGVjdE9wdGlvbi5Qcm9wZXJ0eU5hbWU/LnZhbHVlKSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHBhcmFtZXRlck9wdGlvbnMgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdkFubm90YXRpb24/LlBhcmFtZXRlcnM/Lm1hcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQob1BhcmFtZXRlck9wdGlvbikgPT4gKG9QYXJhbWV0ZXJPcHRpb24gYXMgUGFyYW1ldGVyVHlwZXMpLlByb3BlcnR5TmFtZT8udmFsdWVcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdE9wdGlvbnMgPSBzZWxlY3RPcHRpb25zLmNvbmNhdChwYXJhbWV0ZXJPcHRpb25zKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydHlQYXRocyA9IHJlcXVpcmVkUHJvcGVydHlQYXRocy5zb3J0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb25zID0gc2VsZWN0T3B0aW9ucy5zb3J0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2hvd092ZXJsYXlJbml0aWFsbHkgPSByZXF1aXJlZFByb3BlcnR5UGF0aHMuc29tZShmdW5jdGlvbiAoc1BhdGgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICFzZWxlY3RPcHRpb25zLmluY2x1ZGVzKHNQYXRoKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2hvd092ZXJsYXlJbml0aWFsbHkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnNob3dPdmVybGF5SW5pdGlhbGx5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjb25zdCBzRGltZW5zaW9uVHlwZSA9IGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uRGltZW5zaW9uc1swXT8uJHRhcmdldD8udHlwZTtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5yZW5kZXJMaW5lQ2hhcnQgPVxuXHRcdFx0XHRcdFx0XHRzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIiB8fFxuXHRcdFx0XHRcdFx0XHRzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVwiIHx8XG5cdFx0XHRcdFx0XHRcdHNEaW1lbnNpb25UeXBlID09PSBcIkVkbS5UaW1lT2ZEYXlcIiB8fFxuXHRcdFx0XHRcdFx0XHRjaGFydEFubm90YXRpb24uJHRhcmdldD8uQ2hhcnRUeXBlICE9PSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkhpZ2gsIElzc3VlVHlwZS5NQUxGT1JNRURfVklTVUFMRklMVEVSUy5DSEFSVCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkhpZ2gsIElzc3VlVHlwZS5NQUxGT1JNRURfVklTVUFMRklMVEVSUy5QUkVTRU5UQVRJT05WQVJJQU5UKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkhpZ2gsIElzc3VlVHlwZS5NQUxGT1JNRURfVklTVUFMRklMVEVSUy5WQUxVRUxJU1QpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldERpYWdub3N0aWNzKCkuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5NYW5pZmVzdCwgSXNzdWVTZXZlcml0eS5IaWdoLCBJc3N1ZVR5cGUuTUFMRk9STUVEX1ZJU1VBTEZJTFRFUlMuVkFMVUVMSVNUKTtcblx0fVxuXHRyZXR1cm4gdmlzdWFsRmlsdGVyO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBhZGQgaW5wYXJhbWV0ZXJzIGZyb20gcmVxdWlyZWQgcHJvcGVydGllcyBhbmQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0gaW5QYXJhbXMgQW4gYXJyYXkgY29udGFpbmluZyBleGlzdGluZyBpbnBhcmFtc1xuICogQHBhcmFtIHByb3BlcnRpZXMgQW4gYXJyYXkgY29udGFpbmluZyBlaXRoZXIgcmVxdWlyZWRwcm9wZXJ0aWVzIG9yIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSBpc1BhcmFtIEEgYm9vbGVhbiBmbGFnIGluZGljYXRpbmcgd2hldGhlciBwYXNzZWQgcHJvcGVydGllcyBhcmUgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gX2FkZEluUGFyYW1ldGVycyhpblBhcmFtczogUGFyYW1ldGVyVHlwZVtdLCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eVBhdGhbXSB8IHN0cmluZ1tdLCBpc1BhcmFtOiBib29sZWFuKSB7XG5cdHByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xuXHRcdGNvbnN0IHByb3BlcnR5ID0gaXNQYXJhbSA/IGVsZW1lbnQgOiAoZWxlbWVudCBhcyBQcm9wZXJ0eVBhdGgpLnZhbHVlO1xuXHRcdGluUGFyYW1zLnB1c2goe1xuXHRcdFx0bG9jYWxEYXRhUHJvcGVydHk6IHByb3BlcnR5IGFzIHN0cmluZyxcblx0XHRcdHZhbHVlTGlzdFByb3BlcnR5OiBwcm9wZXJ0eSBhcyBzdHJpbmdcblx0XHR9KTtcblx0fSk7XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztFQXlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsTUFBTUEsbUJBQW1CLEdBQUcsVUFDM0JDLGdCQUFrQyxFQUNsQ0MsZUFBc0MsRUFDdENDLGlCQUFvQyxFQUNkO0lBQUE7SUFDdEIsSUFBSUMsWUFBWSxFQUFFQyxVQUFVLEVBQUVDLGFBQWE7SUFDM0MsSUFBSUMsUUFBNEI7SUFDaEMsTUFBTUMsZ0JBQWdCLEdBQUdMLGlCQUFpQixDQUFDTSw2QkFBNkIsRUFBRTtJQUMxRSxJQUFJ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
314
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hlY2tWRkFnZ3JlZ2F0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImNoYXJ0QW5ub3RhdGlvbiIsImFnZ3JlZ2F0aW9uSGVscGVyIiwic01lYXN1cmVQYXRoIiwiYkdyb3VwYWJsZSIsImJBZ2dyZWdhdGFibGUiLCJzTWVhc3VyZSIsImN1c3RvbUFnZ3JlZ2F0ZXMiLCJnZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucyIsImFUcmFuc0FnZ3JlZ2F0aW9ucyIsImdldFRyYW5zQWdncmVnYXRpb25zIiwiYUN1c3RBZ2dNZWFzdXJlIiwiJHRhcmdldCIsIk1lYXN1cmVzIiwiZmlsdGVyIiwiY3VzdEFnZyIsInF1YWxpZmllciIsInZhbHVlIiwibGVuZ3RoIiwiRHluYW1pY01lYXN1cmVzIiwiZ2V0Q29udmVydGVyQ29udGV4dEZvciIsImdldEFic29sdXRlQW5ub3RhdGlvblBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwidGFyZ2V0T2JqZWN0IiwiTmFtZSIsInRvU3RyaW5nIiwiZ2V0QWdncmVnYXRlZFByb3BlcnR5IiwiZ2V0QWdncmVnYXRlZFByb3BlcnRpZXMiLCJzRGltZW5zaW9uIiwiRGltZW5zaW9ucyIsInNvbWUiLCJvQWdncmVnYXRlIiwiQWdncmVnYXRhYmxlUHJvcGVydHkiLCJhQWdncmVnYXRhYmxlUHJvcHNGcm9tQ29udGFpbmVyIiwiZ2V0QWdncmVnYXRhYmxlUHJvcGVydGllcyIsImFHcm91cGFibGVQcm9wc0Zyb21Db250YWluZXIiLCJnZXRHcm91cGFibGVQcm9wZXJ0aWVzIiwiYWdncmVnYXRhYmxlUHJvcCIsIlByb3BlcnR5IiwiZ3JvdXBhYmxlUHJvcCIsImdldFZpc3VhbEZpbHRlcnMiLCJlbnRpdHlUeXBlIiwic1Byb3BlcnR5UGF0aCIsIkZpbHRlckZpZWxkcyIsInZpc3VhbEZpbHRlciIsIm9WaXN1YWxGaWx0ZXIiLCJ2YWx1ZUxpc3QiLCJvVkZQYXRoIiwiYW5ub3RhdGlvblF1YWxpZmllclNwbGl0Iiwic3BsaXQiLCJxdWFsaWZpZXJWTCIsInByb3BlcnR5IiwicmVzb2x2ZVBhdGgiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsImlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwidmFsdWVPZiIsImNvbGxlY3Rpb25QYXRoIiwiQ29sbGVjdGlvblBhdGgiLCJjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQiLCJnZXRFbnRpdHlTZXQiLCJuYW1lIiwidmFsdWVMaXN0UGFyYW1zIiwiUGFyYW1ldGVycyIsIm91dFBhcmFtZXRlciIsImluUGFyYW1ldGVycyIsImFQYXJhbWV0ZXJzIiwicGFyYW1ldGVyRW50aXR5VHlwZSIsImdldFBhcmFtZXRlckVudGl0eVR5cGUiLCJrZXlzIiwibWFwIiwia2V5IiwiZ2V0Q29udGV4dFBhdGgiLCJfYWRkSW5QYXJhbWV0ZXJzIiwidmFsdWVMaXN0UGFyYW0iLCJsb2NhbERhdGFQcm9wZXJ0eSIsIkxvY2FsRGF0YVByb3BlcnR5IiwidmFsdWVMaXN0UHJvcGVydHkiLCJWYWx1ZUxpc3RQcm9wZXJ0eSIsIiRUeXBlIiwiYk5vdEZpbHRlcmFibGUiLCJpc1Byb3BlcnR5RmlsdGVyYWJsZSIsInB1c2giLCJmb3JFYWNoIiwib0luUGFyYW1ldGVyIiwibWFpbkVudGl0eVNldEluTWFwcGluZ0FsbG93ZWRFeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJ2YWx1ZUxpc3RFbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiIsIkVycm9yIiwicHZRdWFsaWZpZXIiLCJQcmVzZW50YXRpb25WYXJpYW50UXVhbGlmaWVyIiwic3ZRdWFsaWZpZXIiLCJTZWxlY3Rpb25WYXJpYW50UXVhbGlmaWVyIiwicHZBbm5vdGF0aW9uIiwiZ2V0RW50aXR5VHlwZSIsIlVJIiwiQWdncmVnYXRpb25IZWxwZXIiLCJpc0FuYWx5dGljc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIsImFWaXN1YWxpemF0aW9ucyIsIlZpc3VhbGl6YXRpb25zIiwiY29udGV4dFBhdGgiLCJ2aXN1YWxpemF0aW9uIiwidGVybSIsIl9iZ2V0VkZBZ2dyZWdhdGlvbiIsImJEaW1lbnNpb25IaWRkZW4iLCJIaWRkZW4iLCJiRGltZW5zaW9uSGlkZGVuRmlsdGVyIiwiSGlkZGVuRmlsdGVyIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiZW50aXR5U2V0TmFtZSIsInByZXNlbnRhdGlvbkFubm90YXRpb24iLCJyZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZ2V0UmVsYXRpdmVBbm5vdGF0aW9uUGF0aCIsInZhbHVlbGlzdFByb3BlcnR5IiwiYklzUmFuZ2UiLCJnZXREaWFnbm9zdGljcyIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiSGlnaCIsIklzc3VlVHlwZSIsIk1BTEZPUk1FRF9WSVNVQUxGSUxURVJTIiwiVkFMVUVMSVNUIiwiYklzTWFpbkVudGl0eVNldFNpbmdsZVNlbGVjdGlvbiIsIm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCIsIm5vdCIsInJlcXVpcmVkIiwiZ2V0SXNSZXF1aXJlZCIsInN2QW5ub3RhdGlvbiIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwiYW5ub3RhdGlvbiIsInNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uIiwicmVsYXRpdmVTZWxlY3Rpb25WYXJpYW50UGF0aCIsInJlcXVpcmVkUHJvcGVydGllcyIsInNFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblByb3BlcnR5Iiwib0VudGl0eVNldENvbnZlcnRlckNvbnRleHQiLCJhUmVzdHJpY3RlZFByb3BlcnRpZXMiLCJzdGFydGluZ0VudGl0eVNldCIsIkNhcGFiaWxpdGllcyIsIk5hdmlnYXRpb25SZXN0cmljdGlvbnMiLCJSZXN0cmljdGVkUHJvcGVydGllcyIsIm9SZXN0cmljdGVkUHJvcGVydHkiLCJmaW5kIiwicmVzdHJpY3RlZE5hdlByb3AiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJ0eXBlIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwiZW50aXR5U2V0T3JTaW5nbGV0b24iLCJpc0VudGl0eVNldCIsInJlcXVpcmVkUHJvcGVydHlQYXRocyIsIm9SZXF1aXJlUHJvcGVydHkiLCJjb25jYXQiLCJzaG93T3ZlcmxheUluaXRpYWxseSIsInNlbGVjdE9wdGlvbnMiLCJTZWxlY3RPcHRpb25zIiwib1NlbGVjdE9wdGlvbiIsIlByb3BlcnR5TmFtZSIsInBhcmFtZXRlck9wdGlvbnMiLCJvUGFyYW1ldGVyT3B0aW9uIiwic29ydCIsInNQYXRoIiwiaW5jbHVkZXMiLCJzRGltZW5zaW9uVHlwZSIsInJlbmRlckxpbmVDaGFydCIsIkNoYXJ0VHlwZSIsIkNIQVJUIiwiUFJFU0VOVEFUSU9OVkFSSUFOVCIsIk1hbmlmZXN0IiwiaW5QYXJhbXMiLCJwcm9wZXJ0aWVzIiwiaXNQYXJhbSIsImVsZW1lbnQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlZpc3VhbEZpbHRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBbm5vdGF0aW9uUGF0aCwgRW50aXR5U2V0LCBFbnRpdHlUeXBlLCBQcm9wZXJ0eSwgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSwgQ3VzdG9tQWdncmVnYXRlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBBZ2dyZWdhdGVkUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0FuYWx5dGljc1wiO1xuaW1wb3J0IHR5cGUgeyBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9DYXBhYmlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0VmFsdWVMaXN0LFxuXHRWYWx1ZUxpc3RQYXJhbWV0ZXJJbixcblx0VmFsdWVMaXN0UGFyYW1ldGVySW5PdXQsXG5cdFZhbHVlTGlzdFBhcmFtZXRlck91dFxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUFubm90YXRpb25zX0NvbW1vbiB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uX0VkbVwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydCwgUGFyYW1ldGVyVHlwZXMsIFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvbkhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlU2V2ZXJpdHksIElzc3VlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBub3QgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgaXNFbnRpdHlTZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgeyBjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRJc1JlcXVpcmVkLCBpc1Byb3BlcnR5RmlsdGVyYWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpbHRlclRlbXBsYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgVmlzdWFsRmlsdGVycyA9IHtcblx0ZGltZW5zaW9uUGF0aD86IHN0cmluZztcblx0bWVhc3VyZVBhdGg/OiBzdHJpbmc7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRjaGFydEFubm90YXRpb24/OiBzdHJpbmc7XG5cdHByZXNlbnRhdGlvbkFubm90YXRpb24/OiBzdHJpbmc7XG5cdHZpc2libGU/OiBib29sZWFuO1xuXHRvdXRQYXJhbWV0ZXI/OiBzdHJpbmc7XG5cdGluUGFyYW1ldGVycz86IG9iamVjdFtdO1xuXHR2YWx1ZWxpc3RQcm9wZXJ0eT86IHN0cmluZztcblx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cdHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uPzogc3RyaW5nO1xuXHRtdWx0aXBsZVNlbGVjdGlvbkFsbG93ZWQ/OiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0cmVxdWlyZWQ/OiBib29sZWFuO1xuXHRzaG93T3ZlcmxheUluaXRpYWxseT86IGJvb2xlYW47XG5cdHJlbmRlckxpbmVDaGFydD86IGJvb2xlYW47XG5cdHJlcXVpcmVkUHJvcGVydGllcz86IHN0cmluZ1tdO1xuXHRpc1ZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcz86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIENoZWNrcyB0aGF0IG1lYXN1cmVzIGFuZCBkaW1lbnNpb25zIG9mIHRoZSB2aXN1YWwgZmlsdGVyIGNoYXJ0IGNhbiBiZSBhZ2dyZWdhdGVkIGFuZCBncm91cGVkLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGNoYXJ0QW5ub3RhdGlvbiBUaGUgY2hhcnQgYW5ub3RhdGlvblxuICogQHBhcmFtIGFnZ3JlZ2F0aW9uSGVscGVyIFRoZSBhZ2dyZWdhdGlvbiBoZWxwZXJcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbWVhc3VyZSBjYW4gYmUgZ3JvdXBlZCBhbmQgYWdncmVnYXRlZFxuICovXG5jb25zdCBfY2hlY2tWRkFnZ3JlZ2F0aW9uID0gZnVuY3Rpb24gKFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdGNoYXJ0QW5ub3RhdGlvbjogQW5ub3RhdGlvblBhdGg8Q2hhcnQ+LFxuXHRhZ2dyZWdhdGlvbkhlbHBlcjogQWdncmVnYXRpb25IZWxwZXJcbik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRsZXQgc01lYXN1cmVQYXRoLCBiR3JvdXBhYmxlLCBiQWdncmVnYXRhYmxlO1xuXHRsZXQgc01lYXN1cmU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0Y29uc3QgY3VzdG9tQWdncmVnYXRlcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zKCk7XG5cdGxldCBhVHJhbnNBZ2dyZWdhdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRUcmFuc0FnZ3JlZ2F0aW9ucygpO1xuXHRsZXQgYUN1c3RBZ2dNZWFzdXJlID0gW10gYXMgQXJyYXk8Q3VzdG9tQWdncmVnYXRlPjtcblx0Ly8gaWYgdGhlIGNoYXJ0IGRlZmluaXRpb24gaGFzIGN1c3RvbSBhZ2dyZWdhdGVzLCB0aGVuIGNvbnNpZGVyIHRoZW0sIGVsc2UgZmFsbCBiYWNrIHRvIHRoZSBtZWFzdXJlcyB3aXRoIHRyYW5zZm9ybWF0aW9uIGFnZ3JlZ2F0ZXNcblx0aWYgKGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uTWVhc3VyZXMpIHtcblx0XHRhQ3VzdEFnZ01lYXN1cmUgPSBjdXN0b21BZ2dyZWdhdGVzLmZpbHRlcihmdW5jdGlvbiAoY3VzdEFnZzogQ3VzdG9tQWdncmVnYXRlKSB7XG5cdFx0XHRyZXR1cm4gY3VzdEFnZy5xdWFsaWZpZXIgPT09IGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uTWVhc3VyZXM/LlswXT8udmFsdWU7XG5cdFx0fSk7XG5cdFx0c01lYXN1cmUgPSBhQ3VzdEFnZ01lYXN1cmUubGVuZ3RoID4gMCA/IGFDdXN0QWdnTWVhc3VyZVswXS5xdWFsaWZpZXIgOiBjaGFydEFubm90YXRpb24/LiR0YXJnZXQ/Lk1lYXN1cmVzPy5bMF0/LnZhbHVlO1xuXHR9XG5cdC8vIGNvbnNpZGVyIGR5bmFtaWMgbWVhc3VyZXMgb25seSBpZiB0aGVyZSBhcmUgbm8gbWVhc3VyZXMgd2l0aCBjdXN0b20gYWdncmVnYXRlc1xuXHRpZiAoIWFDdXN0QWdnTWVhc3VyZVswXSAmJiBjaGFydEFubm90YXRpb24/LiR0YXJnZXQ/LkR5bmFtaWNNZWFzdXJlcykge1xuXHRcdHNNZWFzdXJlID0gY29udmVydGVyQ29udGV4dFxuXHRcdFx0LmdldENvbnZlcnRlckNvbnRleHRGb3I8QWdncmVnYXRlZFByb3BlcnR5Pihcblx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKGNoYXJ0QW5ub3RhdGlvbi4kdGFyZ2V0LkR5bmFtaWNNZWFzdXJlcz8uWzBdPy52YWx1ZSlcblx0XHRcdClcblx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKClcblx0XHRcdC50YXJnZXRPYmplY3Q/Lk5hbWUudG9TdHJpbmcoKTtcblx0XHRhVHJhbnNBZ2dyZWdhdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBZ2dyZWdhdGVkUHJvcGVydHkoKTtcblx0fSBlbHNlIHtcblx0XHRhVHJhbnNBZ2dyZWdhdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBZ2dyZWdhdGVkUHJvcGVydGllcygpWzBdIGFzIHVua25vd24gYXMgQWdncmVnYXRlZFByb3BlcnR5W107XG5cdH1cblxuXHRjb25zdCBzRGltZW5zaW9uID0gY2hhcnRBbm5vdGF0aW9uPy4kdGFyZ2V0Py5EaW1lbnNpb25zWzBdPy52YWx1ZTtcblxuXHRpZiAoXG5cdFx0Y3VzdG9tQWdncmVnYXRlcy5zb21lKGZ1bmN0aW9uIChjdXN0QWdnOiBDdXN0b21BZ2dyZWdhdGUpIHtcblx0XHRcdHJldHVybiBjdXN0QWdnLnF1YWxpZmllciA9PT0gc01lYXN1cmU7XG5cdFx0fSlcblx0KSB7XG5cdFx0c01lYXN1cmVQYXRoID0gc01lYXN1cmU7XG5cdH0gZWxzZSBpZiAoYVRyYW5zQWdncmVnYXRpb25zICYmIGFUcmFuc0FnZ3JlZ2F0aW9uc1swXSkge1xuXHRcdGFUcmFuc0FnZ3JlZ2F0aW9ucy5zb21lKGZ1bmN0aW9uIChvQWdncmVnYXRlKSB7XG5cdFx0XHRpZiAob0FnZ3JlZ2F0ZS5OYW1lID09PSBzTWVhc3VyZSkge1xuXHRcdFx0XHRzTWVhc3VyZVBhdGggPSBvQWdncmVnYXRlPy5BZ2dyZWdhdGFibGVQcm9wZXJ0eS52YWx1ZTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRjb25zdCBhQWdncmVnYXRhYmxlUHJvcHNGcm9tQ29udGFpbmVyID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0QWdncmVnYXRhYmxlUHJvcGVydGllcygpO1xuXHRjb25zdCBhR3JvdXBhYmxlUHJvcHNGcm9tQ29udGFpbmVyID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0R3JvdXBhYmxlUHJvcGVydGllcygpO1xuXHRpZiAoYUFnZ3JlZ2F0YWJsZVByb3BzRnJvbUNvbnRhaW5lciAmJiBhQWdncmVnYXRhYmxlUHJvcHNGcm9tQ29udGFpbmVyLmxlbmd0aCkge1xuXHRcdGZvciAoY29uc3QgYWdncmVnYXRhYmxlUHJvcCBvZiBhQWdncmVnYXRhYmxlUHJvcHNGcm9tQ29udGFpbmVyKSB7XG5cdFx0XHRpZiAoKGFnZ3JlZ2F0YWJsZVByb3AgYXMgQWdncmVnYXRhYmxlUHJvcGVydHlUeXBlKT8uUHJvcGVydHk/LnZhbHVlID09PSBzTWVhc3VyZVBhdGgpIHtcblx0XHRcdFx0YkFnZ3JlZ2F0YWJsZSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmIChhR3JvdXBhYmxlUHJvcHNGcm9tQ29udGFpbmVyICYmIGFHcm91cGFibGVQcm9wc0Zyb21Db250YWluZXIubGVuZ3RoKSB7XG5cdFx0Zm9yIChjb25zdCBncm91cGFibGVQcm9wIG9mIGFHcm91cGFibGVQcm9wc0Zyb21Db250YWluZXIpIHtcblx0XHRcdGlmIChncm91cGFibGVQcm9wPy52YWx1ZSA9PT0gc0RpbWVuc2lvbikge1xuXHRcdFx0XHRiR3JvdXBhYmxlID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGJBZ2dyZWdhdGFibGUgJiYgYkdyb3VwYWJsZTtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcmFtZXRlclR5cGUgPSB7XG5cdGxvY2FsRGF0YVByb3BlcnR5OiBzdHJpbmc7XG5cdHZhbHVlTGlzdFByb3BlcnR5OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIE1ldGhvZCB0byBnZXQgdGhlIHZpc3VhbCBmaWx0ZXJzIG9iamVjdCBmb3IgYSBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0gZW50aXR5VHlwZSBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjaGFydCBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gc1Byb3BlcnR5UGF0aCBUaGUgYWdncmVnYXRpb24gaGVscGVyXG4gKiBAcGFyYW0gRmlsdGVyRmllbGRzIFRoZSBhZ2dyZWdhdGlvbiBoZWxwZXJcbiAqIEByZXR1cm5zIFRoZSB2aXN1YWwgZmlsdGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzdWFsRmlsdGVycyhcblx0ZW50aXR5VHlwZTogRW50aXR5VHlwZSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHRzUHJvcGVydHlQYXRoOiBzdHJpbmcsXG5cdEZpbHRlckZpZWxkczogUmVjb3JkPHN0cmluZywgRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24+XG4pOiBWaXN1YWxGaWx0ZXJzIHwgdW5kZWZpbmVkIHtcblx0bGV0IHZpc3VhbEZpbHRlcjogVmlzdWFsRmlsdGVycyB8IHVuZGVmaW5lZDtcblx0Y29uc3Qgb1Zpc3VhbEZpbHRlcjogRmlsdGVyRmllbGRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBGaWx0ZXJGaWVsZHNbc1Byb3BlcnR5UGF0aF07XG5cdGlmIChvVmlzdWFsRmlsdGVyPy52aXN1YWxGaWx0ZXI/LnZhbHVlTGlzdCkge1xuXHRcdGNvbnN0IG9WRlBhdGggPSBvVmlzdWFsRmlsdGVyPy52aXN1YWxGaWx0ZXI/LnZhbHVlTGlzdDtcblx0XHRjb25zdCBhbm5vdGF0aW9uUXVhbGlmaWVyU3BsaXQgPSBvVkZQYXRoLnNwbGl0KFwiI1wiKTtcblx0XHRjb25zdCBxdWFsaWZpZXJWTCA9IGFubm90YXRpb25RdWFsaWZpZXJTcGxpdC5sZW5ndGggPiAxID8gYFZhbHVlTGlzdCMke2Fubm90YXRpb25RdWFsaWZpZXJTcGxpdFsxXX1gIDogYW5ub3RhdGlvblF1YWxpZmllclNwbGl0WzBdO1xuXHRcdGNvbnN0IHByb3BlcnR5ID0gZW50aXR5VHlwZS5yZXNvbHZlUGF0aChzUHJvcGVydHlQYXRoKSBhcyBQcm9wZXJ0eTtcblx0XHRjb25zdCB2YWx1ZUxpc3QgPSBwcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uW3F1YWxpZmllclZMIGFzIGtleW9mIFByb3BlcnR5QW5ub3RhdGlvbnNfQ29tbW9uXSBhcyBWYWx1ZUxpc3QgfCB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgaXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMgPSAocHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcz8udmFsdWVPZigpIGFzIGJvb2xlYW4pIHx8IGZhbHNlO1xuXHRcdGlmICh2YWx1ZUxpc3QpIHtcblx0XHRcdGNvbnN0IGNvbGxlY3Rpb25QYXRoID0gdmFsdWVMaXN0Py5Db2xsZWN0aW9uUGF0aC50b1N0cmluZygpO1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0ID0gY29udmVydGVyQ29udGV4dC5nZXRDb252ZXJ0ZXJDb250ZXh0Rm9yPEVudGl0eVNldD4oXG5cdFx0XHRcdGAvJHtjb2xsZWN0aW9uUGF0aCB8fCBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpPy5uYW1lfWBcblx0XHRcdCk7XG5cdFx0XHRjb25zdCB2YWx1ZUxpc3RQYXJhbXMgPSB2YWx1ZUxpc3Q/LlBhcmFtZXRlcnM7XG5cdFx0XHRsZXQgb3V0UGFyYW1ldGVyOiBWYWx1ZUxpc3RQYXJhbWV0ZXJPdXQgfCBWYWx1ZUxpc3RQYXJhbWV0ZXJJbk91dCB8IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IGluUGFyYW1ldGVyczogUGFyYW1ldGVyVHlwZVtdID0gW107XG5cdFx0XHRsZXQgYVBhcmFtZXRlcnM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRjb25zdCBwYXJhbWV0ZXJFbnRpdHlUeXBlID0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldFBhcmFtZXRlckVudGl0eVR5cGUoKTtcblx0XHRcdGFQYXJhbWV0ZXJzID0gcGFyYW1ldGVyRW50aXR5VHlwZVxuXHRcdFx0XHQ/IHBhcmFtZXRlckVudGl0eVR5cGUua2V5cy5tYXAoZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGtleS5uYW1lO1xuXHRcdFx0XHQgIH0pXG5cdFx0XHRcdDogW107XG5cdFx0XHRpZiAoY29udmVydGVyQ29udGV4dC5nZXRDb250ZXh0UGF0aCgpID09PSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSkge1xuXHRcdFx0XHRfYWRkSW5QYXJhbWV0ZXJzKGluUGFyYW1ldGVycywgYVBhcmFtZXRlcnMsIHRydWUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHZhbHVlTGlzdFBhcmFtcykge1xuXHRcdFx0XHRmb3IgKGNvbnN0IHZhbHVlTGlzdFBhcmFtIG9mIHZhbHVlTGlzdFBhcmFtcykge1xuXHRcdFx0XHRcdGNvbnN0IGxvY2FsRGF0YVByb3BlcnR5ID0gKHZhbHVlTGlzdFBhcmFtIGFzIFZhbHVlTGlzdFBhcmFtZXRlckluKS5Mb2NhbERhdGFQcm9wZXJ0eT8udmFsdWU7XG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVMaXN0UHJvcGVydHkgPSB2YWx1ZUxpc3RQYXJhbS5WYWx1ZUxpc3RQcm9wZXJ0eSBhcyBzdHJpbmc7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0KHZhbHVlTGlzdFBhcmFtPy4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UGFyYW1ldGVySW5PdXRcIiB8fFxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3RQYXJhbT8uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFBhcmFtZXRlck91dFwiKSAmJlxuXHRcdFx0XHRcdFx0c1Byb3BlcnR5UGF0aCA9PT0gbG9jYWxEYXRhUHJvcGVydHlcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG91dFBhcmFtZXRlciA9IHZhbHVlTGlzdFBhcmFtO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHQodmFsdWVMaXN0UGFyYW0/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RQYXJhbWV0ZXJJbk91dFwiIHx8XG5cdFx0XHRcdFx0XHRcdHZhbHVlTGlzdFBhcmFtPy4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UGFyYW1ldGVySW5cIikgJiZcblx0XHRcdFx0XHRcdHNQcm9wZXJ0eVBhdGggIT09IGxvY2FsRGF0YVByb3BlcnR5XG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBiTm90RmlsdGVyYWJsZSA9IGlzUHJvcGVydHlGaWx0ZXJhYmxlKGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dCwgdmFsdWVMaXN0UHJvcGVydHkpO1xuXHRcdFx0XHRcdFx0aWYgKCFiTm90RmlsdGVyYWJsZSkge1xuXHRcdFx0XHRcdFx0XHRpblBhcmFtZXRlcnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0bG9jYWxEYXRhUHJvcGVydHk6IGxvY2FsRGF0YVByb3BlcnR5LFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlTGlzdFByb3BlcnR5OiB2YWx1ZUxpc3RQcm9wZXJ0eVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChpblBhcmFtZXRlcnMgJiYgaW5QYXJhbWV0ZXJzLmxlbmd0aCkge1xuXHRcdFx0XHRpblBhcmFtZXRlcnMuZm9yRWFjaChmdW5jdGlvbiAob0luUGFyYW1ldGVyKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWFpbkVudGl0eVNldEluTWFwcGluZ0FsbG93ZWRFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0XHRjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMoXG5cdFx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihjb252ZXJ0ZXJDb250ZXh0LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgob0luUGFyYW1ldGVyPy5sb2NhbERhdGFQcm9wZXJ0eSkpXG5cdFx0XHRcdFx0XHRcdFx0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSxcblx0XHRcdFx0XHRcdFx0W1wiU2luZ2xlVmFsdWVcIl1cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGNvbnN0IHZhbHVlTGlzdEVudGl0eVNldEluTWFwcGluZ0FsbG93ZWRFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0XHRjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMoXG5cdFx0XHRcdFx0XHRcdGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdC5nZXRDb252ZXJ0ZXJDb250ZXh0Rm9yKFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgob0luUGFyYW1ldGVyPy52YWx1ZUxpc3RQcm9wZXJ0eSlcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSxcblx0XHRcdFx0XHRcdFx0W1wiU2luZ2xlVmFsdWVcIl1cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmICh2YWx1ZUxpc3RFbnRpdHlTZXRJbk1hcHBpbmdBbGxvd2VkRXhwcmVzc2lvbiA9PT0gXCJ0cnVlXCIgJiYgbWFpbkVudGl0eVNldEluTWFwcGluZ0FsbG93ZWRFeHByZXNzaW9uID09PSBcImZhbHNlXCIpIHtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRmlsdGVyUmVzdHJpY3Rpb25zIG9mICR7c1Byb3BlcnR5UGF0aH0gaW4gTWFpbkVudGl0eVNldCBhbmQgVmFsdWVMaXN0RW50aXR5U2V0IGFyZSBkaWZmZXJlbnRgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgcHZRdWFsaWZpZXIgPSB2YWx1ZUxpc3Q/LlByZXNlbnRhdGlvblZhcmlhbnRRdWFsaWZpZXI7XG5cdFx0XHRjb25zdCBzdlF1YWxpZmllciA9IHZhbHVlTGlzdD8uU2VsZWN0aW9uVmFyaWFudFF1YWxpZmllcjtcblx0XHRcdGNvbnN0IHB2QW5ub3RhdGlvbiA9IGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dD8uZ2V0RW50aXR5VHlwZSgpLmFubm90YXRpb25zLlVJPy5bYFByZXNlbnRhdGlvblZhcmlhbnQjJHtwdlF1YWxpZmllcn1gXTtcblx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dCk7XG5cdFx0XHRpZiAoIWFnZ3JlZ2F0aW9uSGVscGVyLmlzQW5hbHl0aWNzU3VwcG9ydGVkKCkpIHtcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGlmIChwdkFubm90YXRpb24pIHtcblx0XHRcdFx0Y29uc3QgYVZpc3VhbGl6YXRpb25zID0gcHZBbm5vdGF0aW9uPy5WaXN1YWxpemF0aW9ucztcblx0XHRcdFx0Y29uc3QgY29udGV4dFBhdGggPSBgLyR7dmFsdWVMaXN0Py5Db2xsZWN0aW9uUGF0aH1gIHx8IGAvJHtjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEVudGl0eVNldCgpPy5uYW1lfWA7XG5cdFx0XHRcdHZpc3VhbEZpbHRlciA9IHt9O1xuXHRcdFx0XHR2aXN1YWxGaWx0ZXIuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aDtcblx0XHRcdFx0dmlzdWFsRmlsdGVyLmlzVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzID0gaXNWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM7XG5cdFx0XHRcdGxldCBjaGFydEFubm90YXRpb246IEFubm90YXRpb25QYXRoPENoYXJ0PiB8IHVuZGVmaW5lZDtcblx0XHRcdFx0Zm9yIChjb25zdCB2aXN1YWxpemF0aW9uIG9mIGFWaXN1YWxpemF0aW9ucykge1xuXHRcdFx0XHRcdGlmICh2aXN1YWxpemF0aW9uLiR0YXJnZXQ/LnRlcm0gPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIikge1xuXHRcdFx0XHRcdFx0Y2hhcnRBbm5vdGF0aW9uID0gdmlzdWFsaXphdGlvbiBhcyBBbm5vdGF0aW9uUGF0aDxDaGFydD47XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNoYXJ0QW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdGNvbnN0IF9iZ2V0VkZBZ2dyZWdhdGlvbjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IF9jaGVja1ZGQWdncmVnYXRpb24oXG5cdFx0XHRcdFx0XHRjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0XHRjaGFydEFubm90YXRpb24sXG5cdFx0XHRcdFx0XHRhZ2dyZWdhdGlvbkhlbHBlclxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKCFfYmdldFZGQWdncmVnYXRpb24pIHtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgYkRpbWVuc2lvbkhpZGRlbiA9IGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uRGltZW5zaW9uc1swXT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4/LnZhbHVlT2YoKTtcblx0XHRcdFx0XHRjb25zdCBiRGltZW5zaW9uSGlkZGVuRmlsdGVyID1cblx0XHRcdFx0XHRcdGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uRGltZW5zaW9uc1swXT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW5GaWx0ZXI/LnZhbHVlT2YoKTtcblx0XHRcdFx0XHRpZiAoYkRpbWVuc2lvbkhpZGRlbiA9PT0gdHJ1ZSB8fCBiRGltZW5zaW9uSGlkZGVuRmlsdGVyID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChhVmlzdWFsaXphdGlvbnMgJiYgYVZpc3VhbGl6YXRpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLmNoYXJ0QW5ub3RhdGlvbiA9IGNoYXJ0QW5ub3RhdGlvbi4kdGFyZ2V0XG5cdFx0XHRcdFx0XHRcdD8gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdFx0XHRcdFx0YCR7Y2hhcnRBbm5vdGF0aW9uLiR0YXJnZXQuZnVsbHlRdWFsaWZpZWROYW1lfS8kQW5ub3RhdGlvblBhdGgvYFxuXHRcdFx0XHRcdFx0XHQgIClcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHQvLyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgdG8gYXZvaWQgcmVwZXRpdGl2ZSBlbnRpdHkgdHlwZSBpbiBjYXNlIG9mIG5vbi1wYXJhbWV0ZXJpemVkIGVudGl0eSBzZXQgZS5nIC9TYWxlc09yZGVyTWFuYWdlL2NvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2RfYWdncmVnYXRlLlNhbGVzT3JkZXJNYW5hZ2Vcblx0XHRcdFx0XHRcdGNvbnN0IGVudGl0eVNldE5hbWUgPSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCk/Lm5hbWU7XG5cdFx0XHRcdFx0XHRsZXQgcHJlc2VudGF0aW9uQW5ub3RhdGlvbjtcblx0XHRcdFx0XHRcdGNvbnN0IHJlbGF0aXZlQW5ub3RhdGlvblBhdGggPSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0XHRcdGAke3B2QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWV9L2AsXG5cdFx0XHRcdFx0XHRcdGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRpZiAocGFyYW1ldGVyRW50aXR5VHlwZSkge1xuXHRcdFx0XHRcdFx0XHRwcmVzZW50YXRpb25Bbm5vdGF0aW9uID0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0LmdldENvbnRleHRQYXRoKCkgKyBcIi9cIiArIHJlbGF0aXZlQW5ub3RhdGlvblBhdGg7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRwcmVzZW50YXRpb25Bbm5vdGF0aW9uID0gXCIvXCIgKyBlbnRpdHlTZXROYW1lICsgXCIvXCIgKyByZWxhdGl2ZUFubm90YXRpb25QYXRoO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnByZXNlbnRhdGlvbkFubm90YXRpb24gPSBwdkFubm90YXRpb24gPyBwcmVzZW50YXRpb25Bbm5vdGF0aW9uIDogdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLm91dFBhcmFtZXRlciA9IG91dFBhcmFtZXRlcj8uTG9jYWxEYXRhUHJvcGVydHk/LnZhbHVlO1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLmluUGFyYW1ldGVycyA9IGluUGFyYW1ldGVycztcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci52YWx1ZWxpc3RQcm9wZXJ0eSA9IG91dFBhcmFtZXRlcj8uVmFsdWVMaXN0UHJvcGVydHkgYXMgc3RyaW5nO1xuXHRcdFx0XHRcdFx0Y29uc3QgYklzUmFuZ2UgPSBjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMoXG5cdFx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihjb252ZXJ0ZXJDb250ZXh0LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgoc1Byb3BlcnR5UGF0aCkpXG5cdFx0XHRcdFx0XHRcdFx0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSxcblx0XHRcdFx0XHRcdFx0W1wiU2luZ2xlUmFuZ2VcIiwgXCJNdWx0aVJhbmdlXCJdXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRpZiAoY29tcGlsZUV4cHJlc3Npb24oYklzUmFuZ2UpID09PSBcInRydWVcIikge1xuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkhpZ2gsIElzc3VlVHlwZS5NQUxGT1JNRURfVklTVUFMRklMVEVSUy5WQUxVRUxJU1QpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRjb25zdCBiSXNNYWluRW50aXR5U2V0U2luZ2xlU2VsZWN0aW9uID0gY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zKFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHRcdFx0LmdldENvbnZlcnRlckNvbnRleHRGb3IoY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHNQcm9wZXJ0eVBhdGgpKVxuXHRcdFx0XHRcdFx0XHRcdC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCksXG5cdFx0XHRcdFx0XHRcdFtcIlNpbmdsZVZhbHVlXCJdXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLm11bHRpcGxlU2VsZWN0aW9uQWxsb3dlZCA9IGNvbXBpbGVFeHByZXNzaW9uKG5vdChiSXNNYWluRW50aXR5U2V0U2luZ2xlU2VsZWN0aW9uKSk7XG5cdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIucmVxdWlyZWQgPSBnZXRJc1JlcXVpcmVkKGNvbnZlcnRlckNvbnRleHQsIHNQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHRcdFx0bGV0IHN2QW5ub3RhdGlvbjogU2VsZWN0aW9uVmFyaWFudCB8IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdGlmIChzdlF1YWxpZmllcikge1xuXHRcdFx0XHRcdFx0XHRzdkFubm90YXRpb24gPSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uPFNlbGVjdGlvblZhcmlhbnQ+KFxuXHRcdFx0XHRcdFx0XHRcdGBAVUkuU2VsZWN0aW9uVmFyaWFudCMke3N2UXVhbGlmaWVyfWBcblx0XHRcdFx0XHRcdFx0KT8uYW5ub3RhdGlvbjtcblx0XHRcdFx0XHRcdFx0bGV0IHNlbGVjdGlvblZhcmlhbnRBbm5vdGF0aW9uO1xuXHRcdFx0XHRcdFx0XHRjb25zdCByZWxhdGl2ZVNlbGVjdGlvblZhcmlhbnRQYXRoID0gY29sbGVjdGlvblBhdGhDb252ZXJ0ZXJDb250ZXh0Py5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdFx0XHRcdGAke3N2QW5ub3RhdGlvbj8uZnVsbHlRdWFsaWZpZWROYW1lfS9gLFxuXHRcdFx0XHRcdFx0XHRcdGNvbGxlY3Rpb25QYXRoQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0aWYgKHBhcmFtZXRlckVudGl0eVR5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSArIFwiL1wiICsgcmVsYXRpdmVTZWxlY3Rpb25WYXJpYW50UGF0aDtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA9IFwiL1wiICsgZW50aXR5U2V0TmFtZSArIFwiL1wiICsgcmVsYXRpdmVTZWxlY3Rpb25WYXJpYW50UGF0aDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2VsZWN0aW9uVmFyaWFudEFubm90YXRpb24gPSBzdkFubm90YXRpb24gPyBzZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbiA6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGxldCByZXF1aXJlZFByb3BlcnRpZXM6IFByb3BlcnR5UGF0aFtdID0gW107XG5cdFx0XHRcdFx0XHRpZiAocGFyYW1ldGVyRW50aXR5VHlwZSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzRW50aXR5U2V0ID0gY29sbGVjdGlvblBhdGguc3BsaXQoXCIvXCIpWzBdO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzTmF2aWdhdGlvblByb3BlcnR5ID0gY29sbGVjdGlvblBhdGguc3BsaXQoXCIvXCIpWzFdO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBvRW50aXR5U2V0Q29udmVydGVyQ29udGV4dCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVyQ29udGV4dEZvcihgLyR7c0VudGl0eVNldH1gKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYVJlc3RyaWN0ZWRQcm9wZXJ0aWVzID1cblx0XHRcdFx0XHRcdFx0XHRvRW50aXR5U2V0Q29udmVydGVyQ29udGV4dD8uZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLnN0YXJ0aW5nRW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdFx0XHRcdFx0XHQ/Lk5hdmlnYXRpb25SZXN0cmljdGlvbnM/LlJlc3RyaWN0ZWRQcm9wZXJ0aWVzO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBvUmVzdHJpY3RlZFByb3BlcnR5ID0gYVJlc3RyaWN0ZWRQcm9wZXJ0aWVzPy5maW5kKFxuXHRcdFx0XHRcdFx0XHRcdChyZXN0cmljdGVkTmF2UHJvcDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eT8udHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eS52YWx1ZSA9PT0gc05hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydGllcyA9IG9SZXN0cmljdGVkUHJvcGVydHk/LkZpbHRlclJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZW50aXR5U2V0T3JTaW5nbGV0b24gPSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQ/LmdldEVudGl0eVNldCgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoaXNFbnRpdHlTZXQoZW50aXR5U2V0T3JTaW5nbGV0b24pKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzID1cblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVNldE9yU2luZ2xldG9uLmFubm90YXRpb25zLkNhcGFiaWxpdGllcz8uRmlsdGVyUmVzdHJpY3Rpb25zPy5SZXF1aXJlZFByb3BlcnRpZXMgPz8gW107XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGxldCByZXF1aXJlZFByb3BlcnR5UGF0aHM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRcdFx0XHRpZiAocmVxdWlyZWRQcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKG9SZXF1aXJlUHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFByb3BlcnR5UGF0aHMucHVzaChvUmVxdWlyZVByb3BlcnR5LnZhbHVlKTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRyZXF1aXJlZFByb3BlcnR5UGF0aHMgPSByZXF1aXJlZFByb3BlcnR5UGF0aHMuY29uY2F0KGFQYXJhbWV0ZXJzKTtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5yZXF1aXJlZFByb3BlcnRpZXMgPSByZXF1aXJlZFByb3BlcnR5UGF0aHM7XG5cdFx0XHRcdFx0XHRpZiAoY29udmVydGVyQ29udGV4dC5nZXRDb250ZXh0UGF0aCgpID09PSBjb2xsZWN0aW9uUGF0aENvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSkge1xuXHRcdFx0XHRcdFx0XHQvLyBpZiBjb250ZXh0IFBhdGggZm9yIGJvdGggdmlzdWFsIGZpbHRlciBhbmQgZmlsdGVyIGJhciBhcmUgc2FtZSwgY29uc2lkZXIgcmVxdWlyZWQgUHJvcGVydGllcyBhcyB3ZWxsIGFsb25nIHdpdGggaW4gUGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0XHRfYWRkSW5QYXJhbWV0ZXJzKGluUGFyYW1ldGVycywgcmVxdWlyZWRQcm9wZXJ0aWVzLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAodmlzdWFsRmlsdGVyLnJlcXVpcmVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghdmlzdWFsRmlsdGVyLmluUGFyYW1ldGVycyB8fCAhdmlzdWFsRmlsdGVyLmluUGFyYW1ldGVycy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIXZpc3VhbEZpbHRlci5zZWxlY3Rpb25WYXJpYW50QW5ub3RhdGlvbikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnNob3dPdmVybGF5SW5pdGlhbGx5ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHNlbGVjdE9wdGlvbnMgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdkFubm90YXRpb24/LlNlbGVjdE9wdGlvbnM/Lm1hcCgob1NlbGVjdE9wdGlvbikgPT4gb1NlbGVjdE9wdGlvbi5Qcm9wZXJ0eU5hbWU/LnZhbHVlKSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHBhcmFtZXRlck9wdGlvbnMgPVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdkFubm90YXRpb24/LlBhcmFtZXRlcnM/Lm1hcChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQob1BhcmFtZXRlck9wdGlvbikgPT4gKG9QYXJhbWV0ZXJPcHRpb24gYXMgUGFyYW1ldGVyVHlwZXMpLlByb3BlcnR5TmFtZT8udmFsdWVcblx0XHRcdFx0XHRcdFx0XHRcdFx0KSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGVjdE9wdGlvbnMgPSBzZWxlY3RPcHRpb25zLmNvbmNhdChwYXJhbWV0ZXJPcHRpb25zKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkUHJvcGVydHlQYXRocyA9IHJlcXVpcmVkUHJvcGVydHlQYXRocy5zb3J0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxlY3RPcHRpb25zID0gc2VsZWN0T3B0aW9ucy5zb3J0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2hvd092ZXJsYXlJbml0aWFsbHkgPSByZXF1aXJlZFByb3BlcnR5UGF0aHMuc29tZShmdW5jdGlvbiAoc1BhdGgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuICFzZWxlY3RPcHRpb25zLmluY2x1ZGVzKHNQYXRoKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR2aXN1YWxGaWx0ZXIuc2hvd092ZXJsYXlJbml0aWFsbHkgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dmlzdWFsRmlsdGVyLnNob3dPdmVybGF5SW5pdGlhbGx5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjb25zdCBzRGltZW5zaW9uVHlwZSA9IGNoYXJ0QW5ub3RhdGlvbj8uJHRhcmdldD8uRGltZW5zaW9uc1swXT8uJHRhcmdldD8udHlwZTtcblx0XHRcdFx0XHRcdHZpc3VhbEZpbHRlci5yZW5kZXJMaW5lQ2hhcnQgPVxuXHRcdFx0XHRcdFx0XHRzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIiB8fFxuXHRcdFx0XHRcdFx0XHRzRGltZW5zaW9uVHlwZSA9PT0gXCJFZG0uRGF0ZVwiIHx8XG5cdFx0XHRcdFx0XHRcdHNEaW1lbnNpb25UeXBlID09PSBcIkVkbS5UaW1lT2ZEYXlcIiB8fFxuXHRcdFx0XHRcdFx0XHRjaGFydEFubm90YXRpb24uJHRhcmdldD8uQ2hhcnRUeXBlICE9PSBcIlVJLkNoYXJ0VHlwZS9MaW5lXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkhpZ2gsIElzc3VlVHlwZS5NQUxGT1JNRURfVklTVUFMRklMVEVSUy5DSEFSVCk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkhpZ2gsIElzc3VlVHlwZS5NQUxGT1JNRURfVklTVUFMRklMVEVSUy5QUkVTRU5UQVRJT05WQVJJQU5UKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkhpZ2gsIElzc3VlVHlwZS5NQUxGT1JNRURfVklTVUFMRklMVEVSUy5WQUxVRUxJU1QpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldERpYWdub3N0aWNzKCkuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5NYW5pZmVzdCwgSXNzdWVTZXZlcml0eS5IaWdoLCBJc3N1ZVR5cGUuTUFMRk9STUVEX1ZJU1VBTEZJTFRFUlMuVkFMVUVMSVNUKTtcblx0fVxuXHRyZXR1cm4gdmlzdWFsRmlsdGVyO1xufVxuXG4vKipcbiAqIE1ldGhvZCB0byBhZGQgaW5wYXJhbWV0ZXJzIGZyb20gcmVxdWlyZWQgcHJvcGVydGllcyBhbmQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0gaW5QYXJhbXMgQW4gYXJyYXkgY29udGFpbmluZyBleGlzdGluZyBpbnBhcmFtc1xuICogQHBhcmFtIHByb3BlcnRpZXMgQW4gYXJyYXkgY29udGFpbmluZyBlaXRoZXIgcmVxdWlyZWRwcm9wZXJ0aWVzIG9yIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSBpc1BhcmFtIEEgYm9vbGVhbiBmbGFnIGluZGljYXRpbmcgd2hldGhlciBwYXNzZWQgcHJvcGVydGllcyBhcmUgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gX2FkZEluUGFyYW1ldGVycyhpblBhcmFtczogUGFyYW1ldGVyVHlwZVtdLCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eVBhdGhbXSB8IHN0cmluZ1tdLCBpc1BhcmFtOiBib29sZWFuKTogdm9pZCB7XG5cdHByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xuXHRcdGNvbnN0IHByb3BlcnR5ID0gaXNQYXJhbSA/IGVsZW1lbnQgOiAoZWxlbWVudCBhcyBQcm9wZXJ0eVBhdGgpLnZhbHVlO1xuXHRcdGluUGFyYW1zLnB1c2goe1xuXHRcdFx0bG9jYWxEYXRhUHJvcGVydHk6IHByb3BlcnR5IGFzIHN0cmluZyxcblx0XHRcdHZhbHVlTGlzdFByb3BlcnR5OiBwcm9wZXJ0eSBhcyBzdHJpbmdcblx0XHR9KTtcblx0fSk7XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztFQTJDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsTUFBTUEsbUJBQW1CLEdBQUcsVUFDM0JDLGdCQUF5RCxFQUN6REMsZUFBc0MsRUFDdENDLGlCQUFvQyxFQUNkO0lBQUE7SUFDdEIsSUFBSUMsWUFBWSxFQUFFQyxVQUFVLEVBQUVDLGFBQWE7SUFDM0MsSUFBSUMsUUFBNEI7SUFDaEMsTUFBTUMsZ0JBQWdCLEdBQUdMLGlCQUFpQixDQUFDTSw2QkFBNkIsRUFBRTtJQUMxRSxJQUFJQyxrQkFBa0IsR0FBR1AsaUJBQWlCLENBQUNRLG9CQUFvQixFQUFFO0lBQ2pFLElBQUlDLGVBQWUsR0FBRyxFQUE0QjtJQUNsRDtJQUNBLElBQUlWLGVBQWUsYUFBZkEsZUFBZSx3Q0FBZkEsZUFBZSxDQUFFVyxPQUFPLGtEQUF4QixzQkFBMEJDLFFBQVEsRUFBRTtNQUFBO01BQ3ZDRixlQUFlLEdBQUdKLGdCQUFnQixDQUFDTyxNQUFNLENBQUMsVUFBVUMsT0FBd0IsRUFBRTtRQUFBO1FBQzdFLE9BQU9BLE9BQU8sQ0FBQ0MsU0FBUyxNQUFLZixlQUFlLGFBQWZBLGVBQWUsaURBQWZBLGVBQWUsQ0FBRVcsT0FBTyxxRkFBeEIsdUJBQTBCQyxRQUFRLHFGQUFsQyx1QkFBcUMsQ0FBQyxDQUFDLDJEQUF2Qyx1QkFBeUNJLEtBQUs7TUFDNUUsQ0FBQyxDQUFDO01BQ0ZYLFFBQVEsR0FBR0ssZUFBZSxDQUFDTyxNQUFNLEdBQUcsQ0FBQyxHQUFHUCxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUNLLFNBQVMsR0FBR2YsZUFBZSxhQUFmQSxlQUFlLGlEQUFmQSxlQUFlLENBQUVXLE9BQU8scUZBQXhCLHVCQUEwQkMsUUFBUSxxRkFBbEMsdUJBQXFDLENBQUMsQ0FB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
@@ -1,5 +1,6 @@
1
- import type { AnnotationPath, EntityType, Property, PropertyPath } from "@sap-ux/vocabularies-types";
1
+ import type { AnnotationPath, EntitySet, EntityType, Property, PropertyPath } from "@sap-ux/vocabularies-types";
2
2
  import type { AggregatablePropertyType, CustomAggregate } from "@sap-ux/vocabularies-types/vocabularies/Aggregation";
3
+ import type { AggregatedProperty } from "@sap-ux/vocabularies-types/vocabularies/Analytics";
3
4
  import type { NavigationPropertyRestrictionTypes } from "@sap-ux/vocabularies-types/vocabularies/Capabilities";
4
5
  import type {
5
6
  ValueList,
@@ -10,9 +11,10 @@ import type {
10
11
  import type { PropertyAnnotations_Common } from "@sap-ux/vocabularies-types/vocabularies/Common_Edm";
11
12
  import type { Chart, ParameterTypes, SelectionVariant } from "@sap-ux/vocabularies-types/vocabularies/UI";
12
13
  import type ConverterContext from "sap/fe/core/converters/ConverterContext";
14
+ import type { FilterFieldManifestConfiguration } from "sap/fe/core/converters/ManifestSettings";
15
+ import type { PageContextPathTarget } from "sap/fe/core/converters/TemplateConverter";
13
16
  import { AggregationHelper } from "sap/fe/core/converters/helpers/Aggregation";
14
17
  import { IssueCategory, IssueSeverity, IssueType } from "sap/fe/core/converters/helpers/IssueManager";
15
- import type { FilterFieldManifestConfiguration } from "sap/fe/core/converters/ManifestSettings";
16
18
  import type { CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
17
19
  import { compileExpression, not } from "sap/fe/core/helpers/BindingToolkit";
18
20
  import { isEntitySet } from "sap/fe/core/helpers/TypeGuards";
@@ -48,7 +50,7 @@ export type VisualFilters = {
48
50
  * @returns `true` if the measure can be grouped and aggregated
49
51
  */
50
52
  const _checkVFAggregation = function (
51
- converterContext: ConverterContext,
53
+ converterContext: ConverterContext<PageContextPathTarget>,
52
54
  chartAnnotation: AnnotationPath<Chart>,
53
55
  aggregationHelper: AggregationHelper
54
56
  ): boolean | undefined {
@@ -67,11 +69,14 @@ const _checkVFAggregation = function (
67
69
  // consider dynamic measures only if there are no measures with custom aggregates
68
70
  if (!aCustAggMeasure[0] && chartAnnotation?.$target?.DynamicMeasures) {
69
71
  sMeasure = converterContext
70
- .getConverterContextFor(converterContext.getAbsoluteAnnotationPath(chartAnnotation.$target.DynamicMeasures?.[0]?.value))
71
- .getDataModelObjectPath().targetObject.Name;
72
- aTransAggregations = aggregationHelper.getAggregatedProperties("AggregatedProperty");
72
+ .getConverterContextFor<AggregatedProperty>(
73
+ converterContext.getAbsoluteAnnotationPath(chartAnnotation.$target.DynamicMeasures?.[0]?.value)
74
+ )
75
+ .getDataModelObjectPath()
76
+ .targetObject?.Name.toString();
77
+ aTransAggregations = aggregationHelper.getAggregatedProperty();
73
78
  } else {
74
- aTransAggregations = aggregationHelper.getAggregatedProperties("AggregatedProperties")[0];
79
+ aTransAggregations = aggregationHelper.getAggregatedProperties()[0] as unknown as AggregatedProperty[];
75
80
  }
76
81
 
77
82
  const sDimension = chartAnnotation?.$target?.Dimensions[0]?.value;
@@ -124,7 +129,7 @@ export type ParameterType = {
124
129
  */
125
130
  export function getVisualFilters(
126
131
  entityType: EntityType,
127
- converterContext: ConverterContext,
132
+ converterContext: ConverterContext<PageContextPathTarget>,
128
133
  sPropertyPath: string,
129
134
  FilterFields: Record<string, FilterFieldManifestConfiguration>
130
135
  ): VisualFilters | undefined {
@@ -139,7 +144,7 @@ export function getVisualFilters(
139
144
  const isValueListWithFixedValues = (property?.annotations?.Common?.ValueListWithFixedValues?.valueOf() as boolean) || false;
140
145
  if (valueList) {
141
146
  const collectionPath = valueList?.CollectionPath.toString();
142
- const collectionPathConverterContext = converterContext.getConverterContextFor(
147
+ const collectionPathConverterContext = converterContext.getConverterContextFor<EntitySet>(
143
148
  `/${collectionPath || converterContext.getEntitySet()?.name}`
144
149
  );
145
150
  const valueListParams = valueList?.Parameters;
@@ -286,8 +291,9 @@ export function getVisualFilters(
286
291
  visualFilter.required = getIsRequired(converterContext, sPropertyPath);
287
292
  let svAnnotation: SelectionVariant | undefined;
288
293
  if (svQualifier) {
289
- svAnnotation = collectionPathConverterContext?.getEntityTypeAnnotation(`@UI.SelectionVariant#${svQualifier}`)
290
- ?.annotation;
294
+ svAnnotation = collectionPathConverterContext?.getEntityTypeAnnotation<SelectionVariant>(
295
+ `@UI.SelectionVariant#${svQualifier}`
296
+ )?.annotation;
291
297
  let selectionVariantAnnotation;
292
298
  const relativeSelectionVariantPath = collectionPathConverterContext?.getRelativeAnnotationPath(
293
299
  `${svAnnotation?.fullyQualifiedName}/`,
@@ -396,7 +402,7 @@ export function getVisualFilters(
396
402
  * @param properties An array containing either requiredproperties or parameters
397
403
  * @param isParam A boolean flag indicating whether passed properties are parameters
398
404
  */
399
- export function _addInParameters(inParams: ParameterType[], properties: PropertyPath[] | string[], isParam: boolean) {
405
+ export function _addInParameters(inParams: ParameterType[], properties: PropertyPath[] | string[], isParam: boolean): void {
400
406
  properties.forEach(function (element) {
401
407
  const property = isParam ? element : (element as PropertyPath).value;
402
408
  inParams.push({
@@ -60,4 +60,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/m/AvatarShape"], funct
60
60
  _exports.getAvatar = getAvatar;
61
61
  return _exports;
62
62
  }, false);
63
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc05hdHVyYWxQZXJzb25FeHByZXNzaW9uIiwiY29udmVydGVyQ29udGV4dCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldEVudGl0eVR5cGUiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIklzTmF0dXJhbFBlcnNvbiIsImNvbXBpbGVBdmF0YXJTaGFwZSIsImV4cHJlc3Npb24iLCJjb21waWxlRXhwcmVzc2lvbiIsImlmRWxzZSIsIkF2YXRhclNoYXBlIiwiQ2lyY2xlIiwiU3F1YXJlIiwiY29tcGlsZUZhbGxCYWNrSWNvbiIsImdldEZhbGxCYWNrSWNvbiIsImhlYWRlckluZm8iLCJVSSIsIkhlYWRlckluZm8iLCJJbWFnZVVybCIsIlR5cGVJbWFnZVVybCIsInVuZGVmaW5lZCIsImdldFNvdXJjZSIsImdldEF2YXRhciIsIm9Tb3VyY2UiLCJJbml0aWFscyIsInNyYyIsImluaXRpYWxzIiwiZmFsbGJhY2tJY29uIiwiZGlzcGxheVNoYXBlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBdmF0YXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgRXhwcmVzc2lvbk9yUHJpbWl0aXZlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIGlmRWxzZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgQXZhdGFyU2hhcGUgZnJvbSBcInNhcC9tL0F2YXRhclNoYXBlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIEF2YXRhciA9IHtcblx0c3JjPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGluaXRpYWxzOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZmFsbGJhY2tJY29uPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGRpc3BsYXlTaGFwZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG59O1xuXG5jb25zdCBpc05hdHVyYWxQZXJzb25FeHByZXNzaW9uID0gKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8Ym9vbGVhbj4gPT4ge1xuXHRyZXR1cm4gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLmFubm90YXRpb25zLkNvbW1vbj8uSXNOYXR1cmFsUGVyc29uKTtcbn07XG5cbmNvbnN0IGNvbXBpbGVBdmF0YXJTaGFwZSA9IChleHByZXNzaW9uOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8Ym9vbGVhbj4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiA9PiB7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoZXhwcmVzc2lvbiwgQXZhdGFyU2hhcGUuQ2lyY2xlLCBBdmF0YXJTaGFwZS5TcXVhcmUpKTtcbn07XG5cbi8vIFRoZSBzaGFwZSBvZiB0aGUgQXZhdGFyIGRlcGVuZHMgdXBvbiB3aGV0aGVyIHRoZSBlbnRpdHkgaW5zdGFuY2UgcmVwcmVzZW50cyBhIG5hdHVyYWwgcGVyc29uLlxuLy8gVGhpcyBjYW4gZGVwZW5kIHVwb24gYSBwcm9wZXJ0eSBpbiB0aGUgZW50aXR5LiBVbmxpa2UgdGhlIHNoYXBlIG9mIGFuIGF2YXRhciBkZWZpbmVkIGluIGEgZmllbGQsIGl0XG4vLyBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gbWFrZSB0aGUgaW1hZ2UgYXQgdGhlIG9iamVjdCBwYWdlIGhlYWRlciBkZXBlbmRlbnQgdXBvbiB0aGUgcHJvcGVydHkgY29udGFpbmdcbi8vIHRoZSBpbWFnZSBvciBpbWFnZVVSTC5cbmNvbnN0IGNvbXBpbGVGYWxsQmFja0ljb24gPSAoZXhwcmVzc2lvbjogRXhwcmVzc2lvbk9yUHJpbWl0aXZlPGJvb2xlYW4+KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gPT4ge1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKGV4cHJlc3Npb24sIFwic2FwLWljb246Ly9wZXJzb24tcGxhY2Vob2xkZXJcIiwgXCJzYXAtaWNvbjovL3Byb2R1Y3RcIikpO1xufTtcblxuY29uc3QgZ2V0RmFsbEJhY2tJY29uID0gKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IGhlYWRlckluZm8gPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucz8uVUk/LkhlYWRlckluZm87XG5cdGlmICghaGVhZGVySW5mbyB8fCAoaGVhZGVySW5mbyAmJiAhaGVhZGVySW5mby5JbWFnZVVybCAmJiAhaGVhZGVySW5mby5UeXBlSW1hZ2VVcmwpKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRpZiAoaGVhZGVySW5mby5JbWFnZVVybCAmJiBoZWFkZXJJbmZvLlR5cGVJbWFnZVVybCkge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oaGVhZGVySW5mby5UeXBlSW1hZ2VVcmwpKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUZhbGxCYWNrSWNvbihpc05hdHVyYWxQZXJzb25FeHByZXNzaW9uKGNvbnZlcnRlckNvbnRleHQpKTtcbn07XG5cbmNvbnN0IGdldFNvdXJjZSA9IChjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBoZWFkZXJJbmZvID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJJbmZvO1xuXHRpZiAoIWhlYWRlckluZm8gfHwgIShoZWFkZXJJbmZvLkltYWdlVXJsIHx8IGhlYWRlckluZm8uVHlwZUltYWdlVXJsKSkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihoZWFkZXJJbmZvLkltYWdlVXJsIHx8IGhlYWRlckluZm8uVHlwZUltYWdlVXJsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXZhdGFyID0gKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBBdmF0YXIgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBoZWFkZXJJbmZvID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJJbmZvO1xuXHRjb25zdCBvU291cmNlID0gaGVhZGVySW5mbyAmJiAoaGVhZGVySW5mby5JbWFnZVVybCB8fCBoZWFkZXJJbmZvLlR5cGVJbWFnZVVybCB8fCBoZWFkZXJJbmZvLkluaXRpYWxzKTtcblx0aWYgKCFvU291cmNlKSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRyZXR1cm4ge1xuXHRcdHNyYzogZ2V0U291cmNlKGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdGluaXRpYWxzOiBjb21waWxlRXhwcmVzc2lvbihnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oaGVhZGVySW5mbz8uSW5pdGlhbHMsIFtdLCBcIlwiKSksXG5cdFx0ZmFsbGJhY2tJY29uOiBnZXRGYWxsQmFja0ljb24oY29udmVydGVyQ29udGV4dCksXG5cdFx0ZGlzcGxheVNoYXBlOiBjb21waWxlQXZhdGFyU2hhcGUoaXNOYXR1cmFsUGVyc29uRXhw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
63
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc05hdHVyYWxQZXJzb25FeHByZXNzaW9uIiwiY29udmVydGVyQ29udGV4dCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldEVudGl0eVR5cGUiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIklzTmF0dXJhbFBlcnNvbiIsImNvbXBpbGVBdmF0YXJTaGFwZSIsImV4cHJlc3Npb24iLCJjb21waWxlRXhwcmVzc2lvbiIsImlmRWxzZSIsIkF2YXRhclNoYXBlIiwiQ2lyY2xlIiwiU3F1YXJlIiwiY29tcGlsZUZhbGxCYWNrSWNvbiIsImdldEZhbGxCYWNrSWNvbiIsImhlYWRlckluZm8iLCJVSSIsIkhlYWRlckluZm8iLCJJbWFnZVVybCIsIlR5cGVJbWFnZVVybCIsInVuZGVmaW5lZCIsImdldFNvdXJjZSIsImdldEF2YXRhciIsIm9Tb3VyY2UiLCJJbml0aWFscyIsInNyYyIsImluaXRpYWxzIiwiZmFsbGJhY2tJY29uIiwiZGlzcGxheVNoYXBlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBdmF0YXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgRXhwcmVzc2lvbk9yUHJpbWl0aXZlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIGlmRWxzZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgQXZhdGFyU2hhcGUgZnJvbSBcInNhcC9tL0F2YXRhclNoYXBlXCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIEF2YXRhciA9IHtcblx0c3JjPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGluaXRpYWxzOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZmFsbGJhY2tJY29uPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGRpc3BsYXlTaGFwZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG59O1xuXG5jb25zdCBpc05hdHVyYWxQZXJzb25FeHByZXNzaW9uID0gKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pik6IEV4cHJlc3Npb25PclByaW1pdGl2ZTxib29sZWFuPiA9PiB7XG5cdHJldHVybiBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnMuQ29tbW9uPy5Jc05hdHVyYWxQZXJzb24pO1xufTtcblxuY29uc3QgY29tcGlsZUF2YXRhclNoYXBlID0gKGV4cHJlc3Npb246IEV4cHJlc3Npb25PclByaW1pdGl2ZTxib29sZWFuPik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uID0+IHtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShleHByZXNzaW9uLCBBdmF0YXJTaGFwZS5DaXJjbGUsIEF2YXRhclNoYXBlLlNxdWFyZSkpO1xufTtcblxuLy8gVGhlIHNoYXBlIG9mIHRoZSBBdmF0YXIgZGVwZW5kcyB1cG9uIHdoZXRoZXIgdGhlIGVudGl0eSBpbnN0YW5jZSByZXByZXNlbnRzIGEgbmF0dXJhbCBwZXJzb24uXG4vLyBUaGlzIGNhbiBkZXBlbmQgdXBvbiBhIHByb3BlcnR5IGluIHRoZSBlbnRpdHkuIFVubGlrZSB0aGUgc2hhcGUgb2YgYW4gYXZhdGFyIGRlZmluZWQgaW4gYSBmaWVsZCwgaXRcbi8vIGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBtYWtlIHRoZSBpbWFnZSBhdCB0aGUgb2JqZWN0IHBhZ2UgaGVhZGVyIGRlcGVuZGVudCB1cG9uIHRoZSBwcm9wZXJ0eSBjb250YWluZ1xuLy8gdGhlIGltYWdlIG9yIGltYWdlVVJMLlxuY29uc3QgY29tcGlsZUZhbGxCYWNrSWNvbiA9IChleHByZXNzaW9uOiBFeHByZXNzaW9uT3JQcmltaXRpdmU8Ym9vbGVhbj4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiA9PiB7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoZXhwcmVzc2lvbiwgXCJzYXAtaWNvbjovL3BlcnNvbi1wbGFjZWhvbGRlclwiLCBcInNhcC1pY29uOi8vcHJvZHVjdFwiKSk7XG59O1xuXG5jb25zdCBnZXRGYWxsQmFja0ljb24gPSAoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBoZWFkZXJJbmZvID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJJbmZvO1xuXHRpZiAoIWhlYWRlckluZm8gfHwgKGhlYWRlckluZm8gJiYgIWhlYWRlckluZm8uSW1hZ2VVcmwgJiYgIWhlYWRlckluZm8uVHlwZUltYWdlVXJsKSkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0aWYgKGhlYWRlckluZm8uSW1hZ2VVcmwgJiYgaGVhZGVySW5mby5UeXBlSW1hZ2VVcmwpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGhlYWRlckluZm8uVHlwZUltYWdlVXJsKSk7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVGYWxsQmFja0ljb24oaXNOYXR1cmFsUGVyc29uRXhwcmVzc2lvbihjb252ZXJ0ZXJDb250ZXh0KSk7XG59O1xuXG5jb25zdCBnZXRTb3VyY2UgPSAoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBoZWFkZXJJbmZvID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCkuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJJbmZvO1xuXHRpZiAoIWhlYWRlckluZm8gfHwgIShoZWFkZXJJbmZvLkltYWdlVXJsIHx8IGhlYWRlckluZm8uVHlwZUltYWdlVXJsKSkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihoZWFkZXJJbmZvLkltYWdlVXJsIHx8IGhlYWRlckluZm8uVHlwZUltYWdlVXJsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXZhdGFyID0gKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pik6IEF2YXRhciB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IGhlYWRlckluZm8gPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKS5hbm5vdGF0aW9ucz8uVUk/LkhlYWRlckluZm87XG5cdGNvbnN0IG9Tb3VyY2UgPSBoZWFkZXJJbmZvICYmIChoZWFkZXJJbmZvLkltYWdlVXJsIHx8IGhlYWRlckluZm8uVHlwZUltYWdlVXJsIHx8IGhlYWRlckluZm8uSW5pdGlhbHMpO1xuXHRpZiAoIW9Tb3VyY2UpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0c3JjOiBnZXRTb3VyY2UoY29udmVydGVyQ29udGV4dCksXG5cdFx0aW5pdGlhbHM6IGNvbXBpbGVFeHByZXNzaW9uKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihoZWFkZXJJbmZvPy5Jbml0aWFscywgW10sIFwiXCIpKSxcblx0XHRmYWxsYmFja0ljb246IGdldEZhbGxCYWNrSWNvbihjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRkaXNwbGF5U2hhcGU6IGNvbXBpbGVBdmF0YXJTaGFwZShpc05hdHVyYWxQZXJzb25FeHByZXNzaW9uKGNvbnZlcnRlckNvbnRleHQpKVxuXHR9O1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7RUFhQSxNQUFNQSx5QkFBeUIsR0FBSUMsZ0JBQXlELElBQXFDO0lBQUE7SUFDaEksT0FBT0MsMkJBQTJCLDBCQUFDRCxnQkFBZ0IsQ0FBQ0UsYUFBYSxFQUFFLENBQUNDLFdBQVcsQ0FBQ0MsTUFBTSwwREFBbkQsc0JBQXFEQyxlQUFlLENBQUM7RUFDekcsQ0FBQztFQUVELE1BQU1DLGtCQUFrQixHQUFJQyxVQUEwQyxJQUF1QztJQUM1RyxPQUFPQyxpQkFBaUIsQ0FBQ0MsTUFBTSxDQUFDRixVQUFVLEVBQUVHLFdBQVcsQ0FBQ0MsTUFBTSxFQUFFRCxXQUFXLENBQUNFLE1BQU0sQ0FBQyxDQUFDO0VBQ3JGLENBQUM7O0VBRUQ7RUFDQTtFQUNBO0VBQ0E7RUFDQSxNQUFNQyxtQkFBbUIsR0FBSU4sVUFBMEMsSUFBdUM7SUFDN0csT0FBT0MsaUJBQWlCLENBQUNDLE1BQU0sQ0FBQ0YsVUFBVSxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixDQUFDLENBQUM7RUFDcEcsQ0FBQztFQUVELE1BQU1PLGVBQWUsR0FBSWQsZ0JBQXlELElBQW1EO0lBQUE7SUFDcEksTUFBTWUsVUFBVSw2QkFBR2YsZ0JBQWdCLENBQUNFLGFBQWEsRUFBRSxDQUFDQyxXQUFXLHFGQUE1Qyx1QkFBOENhLEVBQUUsMkRBQWhELHVCQUFrREMsVUFBVTtJQUMvRSxJQUFJLENBQUNGLFVBQVUsSUFBS0EsVUFBVSxJQUFJLENBQUNBLFVBQVUsQ0FBQ0csUUFBUSxJQUFJLENBQUNILFVBQVUsQ0FBQ0ksWUFBYSxFQUFFO01BQ3BGLE9BQU9DLFNBQVM7SUFDakI7SUFDQSxJQUFJTCxVQUFVLENBQUNHLFFBQVEsSUFBSUgsVUFBVSxDQUFDSSxZQUFZLEVBQUU7TUFDbkQsT0FBT1gsaUJBQWlCLENBQUNQLDJCQUEyQixDQUFDYyxVQUFVLENBQUNJLFlBQVksQ0FBQyxDQUFDO0lBQy9FO0lBQ0EsT0FBT04sbUJBQW1CLENBQUNkLHlCQUF5QixDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDO0VBQ3hFLENBQUM7RUFFRCxNQUFNcUIsU0FBUyxHQUFJckIsZ0JBQXlELElBQW1EO0lBQUE7SUFDOUgsTUFBTWUsVUFBVSw2QkFBR2YsZ0JBQWdCLENBQUNFLGFBQWEsRUFBRSxDQUFDQyxXQUFXLHFGQUE1Qyx1QkFBOENhLEVBQUUsMkRBQWhELHVCQUFrREMsVUFBVTtJQUMvRSxJQUFJLENBQUNGLFVBQVUsSUFBSSxFQUFFQSxVQUFVLENBQUNHLFFBQVEsSUFBSUgsVUFBVSxDQUFDSSxZQUFZLENBQUMsRUFBRTtNQUNyRSxPQUFPQyxTQUFTO0lBQ2pCO0lBQ0EsT0FBT1osaUJBQWlCLENBQUNQLDJCQUEyQixDQUFDYyxVQUFVLENBQUNHLFFBQVEsSUFBSUgsVUFBVSxDQUFDSSxZQUFZLENBQUMsQ0FBQztFQUN0RyxDQUFDO0VBRU0sTUFBTUcsU0FBUyxHQUFJdEIsZ0JBQXlELElBQXlCO0lBQUE7SUFDM0csTUFBTWUsVUFBVSw2QkFBR2YsZ0JBQWdCLENBQUNFLGFBQWEsRUFBRSxDQUFDQyxXQUFXLHFGQUE1Qyx1QkFBOENhLEVBQUUsMkRBQWhELHVCQUFrREMsVUFBVTtJQUMvRSxNQUFNTSxPQUFPLEdBQUdSLFVBQVUsS0FBS0EsVUFBVSxDQUFDRyxRQUFRLElBQUlILFVBQVUsQ0FBQ0ksWUFBWSxJQUFJSixVQUFVLENBQUNTLFFBQVEsQ0FBQztJQUNyRyxJQUFJLENBQUNELE9BQU8sRUFBRTtNQUNiLE9BQU9ILFNBQVM7SUFDakI7SUFDQSxPQUFPO01BQ05LLEdBQUcsRUFBRUosU0FBUyxDQUFDckIsZ0JBQWdCLENBQUM7TUFDaEMwQixRQUFRLEVBQUVsQixpQkFBaUIsQ0FBQ1AsMkJBQTJCLENBQUNjLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFUyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO01BQ3RGRyxZQUFZLEVBQUViLGVBQWUsQ0FBQ2QsZ0JBQWdCLENBQUM7TUFDL0M0QixZQUFZLEVBQUV0QixrQkFBa0IsQ0FBQ1AseUJBQXlCLENBQUNDLGdCQUFnQixDQUFDO0lBQzdFLENBQUM7RUFDRixDQUFDO0VBQUM7RUFBQTtBQUFBIn0=
@@ -1,3 +1,4 @@
1
+ import type { PageContextPathTarget } from "sap/fe/core/converters/TemplateConverter";
1
2
  import type { CompiledBindingToolkitExpression, ExpressionOrPrimitive } from "sap/fe/core/helpers/BindingToolkit";
2
3
  import { compileExpression, getExpressionFromAnnotation, ifElse } from "sap/fe/core/helpers/BindingToolkit";
3
4
  import AvatarShape from "sap/m/AvatarShape";
@@ -10,7 +11,7 @@ export type Avatar = {
10
11
  displayShape: CompiledBindingToolkitExpression;
11
12
  };
12
13
 
13
- const isNaturalPersonExpression = (converterContext: ConverterContext): ExpressionOrPrimitive<boolean> => {
14
+ const isNaturalPersonExpression = (converterContext: ConverterContext<PageContextPathTarget>): ExpressionOrPrimitive<boolean> => {
14
15
  return getExpressionFromAnnotation(converterContext.getEntityType().annotations.Common?.IsNaturalPerson);
15
16
  };
16
17
 
@@ -26,7 +27,7 @@ const compileFallBackIcon = (expression: ExpressionOrPrimitive<boolean>): Compil
26
27
  return compileExpression(ifElse(expression, "sap-icon://person-placeholder", "sap-icon://product"));
27
28
  };
28
29
 
29
- const getFallBackIcon = (converterContext: ConverterContext): CompiledBindingToolkitExpression | undefined => {
30
+ const getFallBackIcon = (converterContext: ConverterContext<PageContextPathTarget>): CompiledBindingToolkitExpression | undefined => {
30
31
  const headerInfo = converterContext.getEntityType().annotations?.UI?.HeaderInfo;
31
32
  if (!headerInfo || (headerInfo && !headerInfo.ImageUrl && !headerInfo.TypeImageUrl)) {
32
33
  return undefined;
@@ -37,7 +38,7 @@ const getFallBackIcon = (converterContext: ConverterContext): CompiledBindingToo
37
38
  return compileFallBackIcon(isNaturalPersonExpression(converterContext));
38
39
  };
39
40
 
40
- const getSource = (converterContext: ConverterContext): CompiledBindingToolkitExpression | undefined => {
41
+ const getSource = (converterContext: ConverterContext<PageContextPathTarget>): CompiledBindingToolkitExpression | undefined => {
41
42
  const headerInfo = converterContext.getEntityType().annotations?.UI?.HeaderInfo;
42
43
  if (!headerInfo || !(headerInfo.ImageUrl || headerInfo.TypeImageUrl)) {
43
44
  return undefined;
@@ -45,7 +46,7 @@ const getSource = (converterContext: ConverterContext): CompiledBindingToolkitEx
45
46
  return compileExpression(getExpressionFromAnnotation(headerInfo.ImageUrl || headerInfo.TypeImageUrl));
46
47
  };
47
48
 
48
- export const getAvatar = (converterContext: ConverterContext): Avatar | undefined => {
49
+ export const getAvatar = (converterContext: ConverterContext<PageContextPathTarget>): Avatar | undefined => {
49
50
  const headerInfo = converterContext.getEntityType().annotations?.UI?.HeaderInfo;
50
51
  const oSource = headerInfo && (headerInfo.ImageUrl || headerInfo.TypeImageUrl || headerInfo.Initials);
51
52
  if (!oSource) {