@sapui5/sap.fe.core 1.127.2 → 1.129.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 (393) 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 +3 -9
  4. package/src/sap/fe/core/ActionRuntime.ts +3 -7
  5. package/src/sap/fe/core/AppComponent.js +9 -19
  6. package/src/sap/fe/core/AppComponent.ts +2 -12
  7. package/src/sap/fe/core/AppStateHandler.js +3 -11
  8. package/src/sap/fe/core/AppStateHandler.ts +0 -7
  9. package/src/sap/fe/core/BaseController.js +4 -8
  10. package/src/sap/fe/core/BaseController.ts +0 -5
  11. package/src/sap/fe/core/CommonUtils.js +1 -9
  12. package/src/sap/fe/core/CommonUtils.ts +4 -8
  13. package/src/sap/fe/core/ExtensionAPI.js +10 -25
  14. package/src/sap/fe/core/ExtensionAPI.ts +4 -19
  15. package/src/sap/fe/core/InsightsFormattersExtension.js +5 -3
  16. package/src/sap/fe/core/PageController.js +7 -10
  17. package/src/sap/fe/core/PageController.ts +0 -3
  18. package/src/sap/fe/core/ResourceModel.js +3 -5
  19. package/src/sap/fe/core/ResourceModel.ts +0 -2
  20. package/src/sap/fe/core/ReuseComponent.js +8 -14
  21. package/src/sap/fe/core/ReuseComponent.ts +0 -6
  22. package/src/sap/fe/core/TemplateComponent.js +37 -9
  23. package/src/sap/fe/core/TemplateComponent.ts +3 -2
  24. package/src/sap/fe/core/TemplateModel.js +5 -5
  25. package/src/sap/fe/core/TemplateModel.ts +0 -1
  26. package/src/sap/fe/core/UIProvider.js +1 -1
  27. package/src/sap/fe/core/UIProvider.ts +44 -1
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +7 -12
  29. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +0 -5
  30. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +61 -65
  31. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +60 -63
  32. package/src/sap/fe/core/buildingBlocks/templating/AttributeModel.js +3 -3
  33. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockFormatter.js +1 -1
  34. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +21 -5
  35. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +0 -4
  36. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +6 -18
  37. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -20
  38. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +5 -11
  39. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +0 -6
  40. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlock.js +3 -3
  41. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +11 -10
  42. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +0 -1
  43. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +5 -7
  44. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +0 -1
  45. package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
  46. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +3 -10
  47. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +0 -7
  48. package/src/sap/fe/core/controllerextensions/ContextSharing.js +5 -8
  49. package/src/sap/fe/core/controllerextensions/ContextSharing.ts +0 -2
  50. package/src/sap/fe/core/controllerextensions/EditFlow.js +225 -155
  51. package/src/sap/fe/core/controllerextensions/EditFlow.ts +248 -164
  52. package/src/sap/fe/core/controllerextensions/Feedback.js +1 -3
  53. package/src/sap/fe/core/controllerextensions/Feedback.ts +0 -2
  54. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +4 -7
  55. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -3
  56. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +8 -25
  57. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +2 -21
  58. package/src/sap/fe/core/controllerextensions/InternalRouting.js +22 -34
  59. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +25 -31
  60. package/src/sap/fe/core/controllerextensions/KPIManagement.js +8 -21
  61. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +4 -15
  62. package/src/sap/fe/core/controllerextensions/MessageHandler.js +68 -31
  63. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +78 -32
  64. package/src/sap/fe/core/controllerextensions/PageReady.js +4 -4
  65. package/src/sap/fe/core/controllerextensions/Paginator.js +4 -8
  66. package/src/sap/fe/core/controllerextensions/Paginator.ts +0 -4
  67. package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -4
  68. package/src/sap/fe/core/controllerextensions/Recommendations.js +15 -24
  69. package/src/sap/fe/core/controllerextensions/Recommendations.ts +13 -20
  70. package/src/sap/fe/core/controllerextensions/Routing.js +4 -10
  71. package/src/sap/fe/core/controllerextensions/Routing.ts +0 -6
  72. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  73. package/src/sap/fe/core/controllerextensions/Share.js +17 -11
  74. package/src/sap/fe/core/controllerextensions/Share.ts +10 -5
  75. package/src/sap/fe/core/controllerextensions/SideEffects.js +49 -45
  76. package/src/sap/fe/core/controllerextensions/SideEffects.ts +54 -41
  77. package/src/sap/fe/core/controllerextensions/Telemetry.js +4 -4
  78. package/src/sap/fe/core/controllerextensions/ViewState.js +10 -34
  79. package/src/sap/fe/core/controllerextensions/ViewState.ts +3 -49
  80. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +6 -8
  81. package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +0 -1
  82. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -2
  83. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +0 -1
  84. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +4 -3
  85. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +1 -1
  86. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +16 -12
  87. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +4 -1
  88. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
  89. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +126 -74
  90. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +158 -91
  91. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -22
  92. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +0 -20
  93. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -20
  94. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +11 -17
  95. package/src/sap/fe/core/controllerextensions/editFlow/editFlowConstants.js +1 -1
  96. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +191 -767
  97. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +277 -1024
  98. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
  99. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -6
  100. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +0 -5
  101. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +381 -250
  102. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +467 -301
  103. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +2 -6
  104. package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +0 -5
  105. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +2 -6
  106. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +4 -6
  107. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +1 -6
  108. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +0 -4
  109. package/src/sap/fe/core/controllerextensions/routing/NavigationReason.js +1 -1
  110. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +4 -41
  111. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -37
  112. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +1 -1
  113. package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +0 -1
  114. package/src/sap/fe/core/controls/Any.js +1 -2
  115. package/src/sap/fe/core/controls/Any.ts +0 -1
  116. package/src/sap/fe/core/controls/AnyElement.js +1 -2
  117. package/src/sap/fe/core/controls/AnyElement.ts +0 -1
  118. package/src/sap/fe/core/controls/CommandExecution.js +3 -3
  119. package/src/sap/fe/core/controls/ComponentLoader.js +23 -10
  120. package/src/sap/fe/core/controls/ComponentLoader.ts +0 -1
  121. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +10 -13
  122. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +0 -6
  123. package/src/sap/fe/core/controls/EventDelegateHook.js +8 -9
  124. package/src/sap/fe/core/controls/FormElementWrapper.js +7 -7
  125. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -1
  126. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +140 -24
  127. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +141 -10
  128. package/src/sap/fe/core/converters/ConverterContext.js +8 -30
  129. package/src/sap/fe/core/converters/ConverterContext.ts +7 -29
  130. package/src/sap/fe/core/converters/ManifestSettings.js +37 -1
  131. package/src/sap/fe/core/converters/ManifestSettings.ts +12 -3
  132. package/src/sap/fe/core/converters/ManifestWrapper.js +12 -40
  133. package/src/sap/fe/core/converters/ManifestWrapper.ts +13 -46
  134. package/src/sap/fe/core/converters/MetaModelConverter.js +44 -48
  135. package/src/sap/fe/core/converters/MetaModelConverter.ts +50 -48
  136. package/src/sap/fe/core/converters/TemplateConverter.js +3 -2
  137. package/src/sap/fe/core/converters/TemplateConverter.ts +0 -1
  138. package/src/sap/fe/core/converters/annotations/DataField.js +1 -28
  139. package/src/sap/fe/core/converters/annotations/DataField.ts +0 -26
  140. package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -19
  141. package/src/sap/fe/core/converters/controls/Common/Action.js +13 -26
  142. package/src/sap/fe/core/converters/controls/Common/Action.ts +13 -31
  143. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -6
  144. package/src/sap/fe/core/converters/controls/Common/Chart.ts +0 -5
  145. package/src/sap/fe/core/converters/controls/Common/Criticality.js +2 -4
  146. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +1 -2
  147. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -5
  148. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +0 -4
  149. package/src/sap/fe/core/converters/controls/Common/Form.js +3 -2
  150. package/src/sap/fe/core/converters/controls/Common/Form.ts +2 -1
  151. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -7
  152. package/src/sap/fe/core/converters/controls/Common/KPI.ts +11 -6
  153. package/src/sap/fe/core/converters/controls/Common/Table.js +159 -141
  154. package/src/sap/fe/core/converters/controls/Common/Table.ts +166 -122
  155. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +5 -30
  156. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +3 -29
  157. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +43 -55
  158. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +43 -47
  159. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -4
  160. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +0 -3
  161. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  162. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -8
  163. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +2 -7
  164. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -11
  165. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +0 -9
  166. package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -10
  167. package/src/sap/fe/core/converters/helpers/Aggregation.ts +0 -9
  168. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -7
  169. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +0 -6
  170. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -9
  171. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +0 -8
  172. package/src/sap/fe/core/converters/helpers/ID.js +1 -2
  173. package/src/sap/fe/core/converters/helpers/ID.ts +0 -1
  174. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -2
  175. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +0 -1
  176. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  177. package/src/sap/fe/core/converters/helpers/Key.js +1 -5
  178. package/src/sap/fe/core/converters/helpers/Key.ts +0 -4
  179. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -2
  180. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +0 -1
  181. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  182. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -7
  183. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +0 -6
  184. package/src/sap/fe/core/converters/templates/ListReportConverter.js +6 -27
  185. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +9 -26
  186. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -16
  187. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +0 -15
  188. package/src/sap/fe/core/definition/FEDefinition.js +2550 -0
  189. package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -12
  190. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +9 -10
  191. package/src/sap/fe/core/formatters/CollaborationFormatter.js +8 -2
  192. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +0 -2
  193. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  194. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -2
  195. package/src/sap/fe/core/formatters/FPMFormatter.ts +0 -1
  196. package/src/sap/fe/core/formatters/FiscalFormat.js +9 -14
  197. package/src/sap/fe/core/formatters/FiscalFormat.ts +0 -11
  198. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -4
  199. package/src/sap/fe/core/formatters/KPIFormatter.ts +0 -3
  200. package/src/sap/fe/core/formatters/StandardFormatter.js +6 -3
  201. package/src/sap/fe/core/formatters/StandardFormatter.ts +6 -2
  202. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -4
  203. package/src/sap/fe/core/formatters/ValueFormatter.ts +0 -3
  204. package/src/sap/fe/core/fpm/Component.js +14 -17
  205. package/src/sap/fe/core/fpm/Component.ts +7 -10
  206. package/src/sap/fe/core/fpm/manifest.json +1 -1
  207. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +3 -10
  208. package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.ts +0 -9
  209. package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -13
  210. package/src/sap/fe/core/helpers/AppStartupHelper.ts +0 -11
  211. package/src/sap/fe/core/helpers/BindingHelper.js +1 -4
  212. package/src/sap/fe/core/helpers/BindingHelper.ts +0 -3
  213. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +1 -2
  214. package/src/sap/fe/core/helpers/BindingToolkitEvaluator.ts +0 -1
  215. package/src/sap/fe/core/helpers/DeleteHelper.js +61 -32
  216. package/src/sap/fe/core/helpers/DeleteHelper.ts +79 -33
  217. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -2
  218. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +0 -1
  219. package/src/sap/fe/core/helpers/EditState.js +1 -1
  220. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -2
  221. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +0 -1
  222. package/src/sap/fe/core/helpers/FPMHelper.js +1 -2
  223. package/src/sap/fe/core/helpers/FPMHelper.ts +0 -1
  224. package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -8
  225. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +0 -7
  226. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +7 -1
  227. package/src/sap/fe/core/helpers/LoaderUtils.js +1 -1
  228. package/src/sap/fe/core/helpers/ManifestHelper.js +1 -3
  229. package/src/sap/fe/core/helpers/ManifestHelper.ts +0 -2
  230. package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
  231. package/src/sap/fe/core/helpers/MetaModelFunction.js +3 -8
  232. package/src/sap/fe/core/helpers/MetaModelFunction.ts +0 -5
  233. package/src/sap/fe/core/helpers/MetaPath.js +1 -7
  234. package/src/sap/fe/core/helpers/MetaPath.ts +0 -6
  235. package/src/sap/fe/core/helpers/ModelHelper.js +55 -35
  236. package/src/sap/fe/core/helpers/ModelHelper.ts +64 -38
  237. package/src/sap/fe/core/helpers/PasteHelper.js +77 -24
  238. package/src/sap/fe/core/helpers/PasteHelper.ts +105 -23
  239. package/src/sap/fe/core/helpers/PromiseKeeper.js +1 -3
  240. package/src/sap/fe/core/helpers/PromiseKeeper.ts +0 -2
  241. package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -4
  242. package/src/sap/fe/core/helpers/RecommendationHelper.ts +0 -3
  243. package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -3
  244. package/src/sap/fe/core/helpers/ResourceModelHelper.ts +3 -4
  245. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -2
  246. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +0 -1
  247. package/src/sap/fe/core/helpers/SizeHelper.js +1 -2
  248. package/src/sap/fe/core/helpers/SizeHelper.ts +0 -1
  249. package/src/sap/fe/core/helpers/StableIdHelper.js +7 -17
  250. package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -17
  251. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +1 -12
  252. package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +0 -11
  253. package/src/sap/fe/core/helpers/Synchronization.js +1 -1
  254. package/src/sap/fe/core/helpers/TitleHelper.js +1 -10
  255. package/src/sap/fe/core/helpers/TitleHelper.ts +0 -9
  256. package/src/sap/fe/core/helpers/ToES6Promise.js +1 -2
  257. package/src/sap/fe/core/helpers/ToES6Promise.ts +0 -1
  258. package/src/sap/fe/core/helpers/TypeGuards.js +1 -15
  259. package/src/sap/fe/core/helpers/TypeGuards.ts +0 -14
  260. package/src/sap/fe/core/helpers/WebSocket.js +1 -1
  261. package/src/sap/fe/core/library.js +10 -44
  262. package/src/sap/fe/core/library.support.js +1 -1
  263. package/src/sap/fe/core/library.ts +8 -45
  264. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -6
  265. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -5
  266. package/src/sap/fe/core/messagebundle.properties +12 -1
  267. package/src/sap/fe/core/messagebundle_ar.properties +8 -0
  268. package/src/sap/fe/core/messagebundle_bg.properties +8 -0
  269. package/src/sap/fe/core/messagebundle_ca.properties +8 -0
  270. package/src/sap/fe/core/messagebundle_cnr.properties +8 -0
  271. package/src/sap/fe/core/messagebundle_cs.properties +9 -1
  272. package/src/sap/fe/core/messagebundle_cy.properties +8 -0
  273. package/src/sap/fe/core/messagebundle_da.properties +8 -0
  274. package/src/sap/fe/core/messagebundle_de.properties +8 -0
  275. package/src/sap/fe/core/messagebundle_el.properties +8 -0
  276. package/src/sap/fe/core/messagebundle_en.properties +8 -0
  277. package/src/sap/fe/core/messagebundle_en_GB.properties +8 -0
  278. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +144 -65
  279. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +8 -0
  280. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +273 -194
  281. package/src/sap/fe/core/messagebundle_es.properties +9 -1
  282. package/src/sap/fe/core/messagebundle_es_MX.properties +8 -0
  283. package/src/sap/fe/core/messagebundle_et.properties +8 -0
  284. package/src/sap/fe/core/messagebundle_fi.properties +8 -0
  285. package/src/sap/fe/core/messagebundle_fr.properties +8 -0
  286. package/src/sap/fe/core/messagebundle_fr_CA.properties +8 -0
  287. package/src/sap/fe/core/messagebundle_hi.properties +9 -1
  288. package/src/sap/fe/core/messagebundle_hr.properties +8 -0
  289. package/src/sap/fe/core/messagebundle_hu.properties +8 -0
  290. package/src/sap/fe/core/messagebundle_id.properties +12 -4
  291. package/src/sap/fe/core/messagebundle_it.properties +8 -0
  292. package/src/sap/fe/core/messagebundle_iw.properties +8 -0
  293. package/src/sap/fe/core/messagebundle_ja.properties +8 -0
  294. package/src/sap/fe/core/messagebundle_kk.properties +8 -0
  295. package/src/sap/fe/core/messagebundle_ko.properties +8 -0
  296. package/src/sap/fe/core/messagebundle_lt.properties +8 -0
  297. package/src/sap/fe/core/messagebundle_lv.properties +8 -0
  298. package/src/sap/fe/core/messagebundle_mk.properties +8 -0
  299. package/src/sap/fe/core/messagebundle_ms.properties +8 -0
  300. package/src/sap/fe/core/messagebundle_nl.properties +16 -8
  301. package/src/sap/fe/core/messagebundle_no.properties +8 -0
  302. package/src/sap/fe/core/messagebundle_pl.properties +8 -0
  303. package/src/sap/fe/core/messagebundle_pt.properties +8 -0
  304. package/src/sap/fe/core/messagebundle_pt_PT.properties +8 -0
  305. package/src/sap/fe/core/messagebundle_ro.properties +8 -0
  306. package/src/sap/fe/core/messagebundle_ru.properties +8 -0
  307. package/src/sap/fe/core/messagebundle_sh.properties +8 -0
  308. package/src/sap/fe/core/messagebundle_sk.properties +8 -0
  309. package/src/sap/fe/core/messagebundle_sl.properties +8 -0
  310. package/src/sap/fe/core/messagebundle_sr.properties +8 -0
  311. package/src/sap/fe/core/messagebundle_sv.properties +8 -0
  312. package/src/sap/fe/core/messagebundle_th.properties +12 -4
  313. package/src/sap/fe/core/messagebundle_tr.properties +8 -0
  314. package/src/sap/fe/core/messagebundle_uk.properties +10 -2
  315. package/src/sap/fe/core/messagebundle_vi.properties +8 -0
  316. package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -0
  317. package/src/sap/fe/core/messagebundle_zh_TW.properties +8 -0
  318. package/src/sap/fe/core/operationsHelper.js +22 -7
  319. package/src/sap/fe/core/operationsHelper.ts +24 -5
  320. package/src/sap/fe/core/rootView/Fcl.controller.js +7 -27
  321. package/src/sap/fe/core/rootView/Fcl.controller.ts +0 -18
  322. package/src/sap/fe/core/rootView/NavContainer.controller.js +7 -12
  323. package/src/sap/fe/core/rootView/NavContainer.controller.ts +0 -5
  324. package/src/sap/fe/core/rootView/RootViewBaseController.js +10 -24
  325. package/src/sap/fe/core/rootView/RootViewBaseController.ts +3 -16
  326. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -3
  327. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +3 -3
  328. package/src/sap/fe/core/services/CollaborationManagerServiceFactory.js +4 -4
  329. package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +3 -3
  330. package/src/sap/fe/core/services/ContextSharingServiceFactory.js +3 -4
  331. package/src/sap/fe/core/services/ContextSharingServiceFactory.ts +0 -1
  332. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +13 -20
  333. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +11 -17
  334. package/src/sap/fe/core/services/NavigationServiceFactory.js +11 -21
  335. package/src/sap/fe/core/services/NavigationServiceFactory.ts +4 -17
  336. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -3
  337. package/src/sap/fe/core/services/RoutingServiceFactory.js +7 -19
  338. package/src/sap/fe/core/services/RoutingServiceFactory.ts +0 -12
  339. package/src/sap/fe/core/services/ShellServicesFactory.js +8 -44
  340. package/src/sap/fe/core/services/ShellServicesFactory.ts +1 -41
  341. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +19 -60
  342. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +14 -57
  343. package/src/sap/fe/core/services/TelemetryServiceFactory.js +6 -14
  344. package/src/sap/fe/core/services/TelemetryServiceFactory.ts +2 -10
  345. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +17 -7
  346. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +17 -3
  347. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +11 -24
  348. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +0 -19
  349. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +3 -31
  350. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +0 -27
  351. package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.js +1 -4
  352. package/src/sap/fe/core/services/valueHelpService/HistoryOptOutProvider.ts +0 -3
  353. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +7 -7
  354. package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
  355. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
  356. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
  357. package/src/sap/fe/core/support/CommonHelper.js +4 -1
  358. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  359. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
  360. package/src/sap/fe/core/templating/ActionHelper.js +1 -2
  361. package/src/sap/fe/core/templating/ActionHelper.ts +0 -1
  362. package/src/sap/fe/core/templating/CommonFormatters.js +1 -2
  363. package/src/sap/fe/core/templating/CommonFormatters.ts +0 -1
  364. package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -6
  365. package/src/sap/fe/core/templating/CriticalityFormatters.ts +0 -5
  366. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -2
  367. package/src/sap/fe/core/templating/DataFieldFormatters.ts +0 -1
  368. package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -18
  369. package/src/sap/fe/core/templating/DataModelPathHelper.ts +0 -17
  370. package/src/sap/fe/core/templating/DisplayModeFormatter.js +6 -1
  371. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -4
  372. package/src/sap/fe/core/templating/EntitySetHelper.ts +0 -3
  373. package/src/sap/fe/core/templating/EntityTypeHelper.js +4 -5
  374. package/src/sap/fe/core/templating/EntityTypeHelper.ts +3 -4
  375. package/src/sap/fe/core/templating/FieldControlHelper.js +4 -9
  376. package/src/sap/fe/core/templating/FieldControlHelper.ts +3 -9
  377. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  378. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  379. package/src/sap/fe/core/templating/PropertyHelper.js +1 -31
  380. package/src/sap/fe/core/templating/PropertyHelper.ts +0 -30
  381. package/src/sap/fe/core/templating/SemanticObjectHelper.js +1 -7
  382. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +0 -6
  383. package/src/sap/fe/core/templating/UIFormatters.js +18 -14
  384. package/src/sap/fe/core/templating/UIFormatters.ts +30 -18
  385. package/src/sap/fe/core/type/Date.js +3 -6
  386. package/src/sap/fe/core/type/Date.ts +0 -3
  387. package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -3
  388. package/src/sap/fe/core/type/EDM.js +1 -1
  389. package/src/sap/fe/core/type/Email.js +3 -3
  390. package/src/sap/fe/core/type/FiscalDate.js +3 -9
  391. package/src/sap/fe/core/type/FiscalDate.ts +0 -6
  392. package/src/sap/fe/core/type/InputMask.js +3 -7
  393. package/src/sap/fe/core/type/InputMask.ts +0 -4
@@ -205,7 +205,6 @@ function _getRelatedIntents(
205
205
 
206
206
  /**
207
207
  * This function fetches the related intents when semantic object and action are passed from feEnvironment.getIntent() only in case of My Inbox integration.
208
- *
209
208
  * @param semanticObjectAndAction This specifies the semantic object and action for fetching the intents
210
209
  * @param oBindingContext This sepcifies the binding context for updating related apps
211
210
  * @param appComponentSOItems This is a list of semantic items used for updating the related apps button
@@ -802,7 +801,6 @@ function getSpecificAllowedExpression(aExpressions: string[]): string {
802
801
 
803
802
  /**
804
803
  * Method to return allowed operators for type Guid.
805
- *
806
804
  * @returns Allowed operators for type Guid
807
805
  */
808
806
  function getOperatorsForGuidProperty(): string {
@@ -820,7 +818,10 @@ function getParameterInfo(metaModelContext: ODataMetaModel, sContextPath: string
820
818
  const oParameterInfo: ParameterInfo = {};
821
819
  if (bResultContext && sParameterContextPath !== sContextPath) {
822
820
  oParameterInfo.contextPath = sParameterContextPath;
823
- oParameterInfo.parameterProperties = CommonUtils.getContextPathProperties(metaModelContext, sParameterContextPath);
821
+ oParameterInfo.parameterProperties = CommonUtils.getContextPathProperties(metaModelContext, sParameterContextPath) as Record<
822
+ string,
823
+ MetaModelProperty
824
+ >;
824
825
  }
825
826
  return oParameterInfo;
826
827
  }
@@ -845,7 +846,6 @@ export type UserDefaultParameter = EdmActionParameter | Context;
845
846
 
846
847
  /**
847
848
  * Retrieves the user defaults from the startup app state (if available) or the startup parameter and sets them to a model.
848
- *
849
849
  * @param appComponent
850
850
  * @param parameters
851
851
  * @param model
@@ -1354,7 +1354,6 @@ function getParameterPath(sPath: string, sParameter: string): string {
1354
1354
 
1355
1355
  /**
1356
1356
  * Get resolved expression binding used for texts at runtime.
1357
- *
1358
1357
  * @param expBinding
1359
1358
  * @param control
1360
1359
  * @returns A string after resolution.
@@ -1374,7 +1373,6 @@ function _fntranslatedTextFromExpBindingString(expBinding: string, control: Cont
1374
1373
  }
1375
1374
  /**
1376
1375
  * Check if the current device has a small screen.
1377
- *
1378
1376
  * @returns A Boolean.
1379
1377
  */
1380
1378
  function isSmallDevice(): boolean {
@@ -1383,7 +1381,6 @@ function isSmallDevice(): boolean {
1383
1381
 
1384
1382
  /**
1385
1383
  * Parses a SelectionVariant or SelectionPresentationVariant annotation and creates the corresponding filters.
1386
- *
1387
1384
  * @param control MDC Chart, MDC Table or MultiView control on which the filters are applied
1388
1385
  * @param annotationPath SelectionVariant or SelectionPresentationVariant annotation
1389
1386
  * @returns Returns an array of filters.
@@ -1442,7 +1439,6 @@ function getConverterContextForPath(
1442
1439
  * If a view has been created with the draft Root Path, this method returns its bindingContext.
1443
1440
  * Where no view is found a new created context is returned.
1444
1441
  * The new created context request the key of the entity in order to get the Etag of this entity.
1445
- *
1446
1442
  * @param programmingModel
1447
1443
  * @param view
1448
1444
  * @param appComponent
@@ -8,17 +8,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
8
8
  var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3;
9
9
  var property = ClassSupport.property;
10
10
  var defineUI5Class = ClassSupport.defineUI5Class;
11
- function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
12
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
13
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
14
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
15
- function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
16
- function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
11
+ function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
12
+ function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
13
+ function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
14
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
15
+ function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
16
+ function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
17
17
  /**
18
18
  * Common Extension API for all pages of SAP Fiori elements for OData V4.
19
19
  *
20
20
  * To correctly integrate your app extension coding with SAP Fiori elements, use only the extensionAPI of SAP Fiori elements. Don't access or manipulate controls, properties, models, or other internal objects created by the SAP Fiori elements framework.
21
- *
22
21
  * @public
23
22
  * @hideconstructor
24
23
  * @since 1.79.0
@@ -33,19 +32,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
33
32
  _inheritsLoose(ExtensionAPI, _BaseObject);
34
33
  /**
35
34
  * A controller extension offering hooks into the edit flow of the application.
36
- *
37
35
  * @public
38
36
  */
39
37
 
40
38
  /**
41
39
  * A controller extension offering hooks into the routing flow of the application.
42
- *
43
40
  * @public
44
41
  */
45
42
 
46
43
  /**
47
44
  * ExtensionAPI for intent-based navigation
48
- *
49
45
  * @public
50
46
  */
51
47
 
@@ -68,7 +64,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
68
64
 
69
65
  /**
70
66
  * Retrieves the editFlow controller extension for this page.
71
- *
72
67
  * @public
73
68
  * @returns The editFlow controller extension
74
69
  */
@@ -79,7 +74,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
79
74
 
80
75
  /**
81
76
  * Retrieves the routing controller extension for this page.
82
- *
83
77
  * @public
84
78
  * @returns The routing controller extension
85
79
  */;
@@ -89,7 +83,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
89
83
 
90
84
  /**
91
85
  * Retrieves the intentBasedNavigation controller extension for this page.
92
- *
93
86
  * @public
94
87
  * @returns The intentBasedNavigation controller extension
95
88
  */;
@@ -99,7 +92,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
99
92
 
100
93
  /**
101
94
  * Access a control by its ID. If you attempt to access an internal control instead of the stable API, the method will raise an error.
102
- *
103
95
  * @param id ID of the control without view and section prefix.
104
96
  * @returns The requested control, if found in the view / section.
105
97
  * @public
@@ -138,13 +130,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
138
130
  * <li>i18n / further data models defined in the manifest</li>
139
131
  * <li>ui: returns a SAPUI5 JSON model containing UI information.
140
132
  * Only the following properties are public and supported:
141
- * <ul>
142
- * <li>isEditable: set to true if the application is in edit mode</li>
143
- * </ul>
133
+ * <ul>
134
+ * <li>isEditable: set to true if the application is in edit mode</li>
135
+ * </ul>
144
136
  * </li>
145
137
  * </ul>.
146
138
  * editMode is deprecated and should not be used anymore. Use isEditable instead.
147
- *
148
139
  * @param sModelName Name of the model
149
140
  * @returns The required model
150
141
  * @public
@@ -163,7 +154,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
163
154
 
164
155
  /**
165
156
  * Add any control as a dependent control to this SAP Fiori elements page.
166
- *
167
157
  * @param oControl Control to be added as a dependent control
168
158
  * @public
169
159
  */;
@@ -173,7 +163,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
173
163
 
174
164
  /**
175
165
  * Remove a dependent control from this SAP Fiori elements page.
176
- *
177
166
  * @param oControl Control to be added as a dependent control
178
167
  * @public
179
168
  */;
@@ -183,7 +172,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
183
172
 
184
173
  /**
185
174
  * Navigate to another target.
186
- *
187
175
  * @param sTarget Name of the target route
188
176
  * @param [oContext] OData v4 context instance
189
177
  * @public
@@ -194,7 +182,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
194
182
 
195
183
  /**
196
184
  * Load a fragment and go through the template preprocessor with the current page context.
197
- *
198
185
  * @param mSettings The settings object
199
186
  * @param mSettings.id The ID of the fragment itself
200
187
  * @param mSettings.name The name of the fragment to be loaded
@@ -299,7 +286,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
299
286
  /**
300
287
  * Triggers an update of the app state.
301
288
  * Should be called if the state of a control, or any other state-relevant information, was changed.
302
- *
303
289
  * @returns A promise that resolves with the new app state object.
304
290
  * @public
305
291
  */;
@@ -315,7 +301,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
315
301
  /**
316
302
  * Run the given function with the FPM context of the current page.
317
303
  * This allows to initialize all the elements required by building blocks to render correctly.
318
- *
319
304
  * @param fn The Function to be executed
320
305
  * @returns The result of the function
321
306
  * @public
@@ -343,4 +328,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
343
328
  })), _class2)) || _class);
344
329
  return ExtensionAPI;
345
330
  }, false);
346
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJkZWZpbmVVSTVDbGFzcyIsInByb3BlcnR5IiwidHlwZSIsIm9Db250cm9sbGVyIiwic0lkIiwiX2NvbnRyb2xsZXIiLCJfdmlldyIsImdldFZpZXciLCJleHRlbnNpb24iLCJlZGl0RmxvdyIsInJvdXRpbmciLCJfcm91dGluZyIsImludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9wcmVmaXgiLCJnZXRFZGl0RmxvdyIsImdldFJvdXRpbmciLCJnZXRJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJieUlkIiwiaWQiLCJjb250cm9sIiwidW5kZWZpbmVkIiwiaXNBIiwicGFyZW50IiwiZ2V0UGFyZW50IiwiRXJyb3IiLCJnZXRJZCIsImdldE1vZGVsIiwic01vZGVsTmFtZSIsIm9BcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImdldE1hbmlmZXN0RW50cnkiLCJtb2RlbHMiLCJhZGREZXBlbmRlbnQiLCJvQ29udHJvbCIsInJlbW92ZURlcGVuZGVudCIsIm5hdmlnYXRlVG9UYXJnZXQiLCJzVGFyZ2V0Iiwib0NvbnRleHQiLCJsb2FkRnJhZ21lbnQiLCJtU2V0dGluZ3MiLCJvVGVtcGxhdGVDb21wb25lbnQiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsIm9QYWdlTW9kZWwiLCJpMThuTW9kZWwiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibVZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJ0YXJnZXRDb250ZXh0UGF0aCIsImdldEVudGl0eVNldCIsImdldENvbnRleHRQYXRoIiwib1ZpZXdEYXRhTW9kZWwiLCJKU09OTW9kZWwiLCJvUHJlcHJvY2Vzc29yU2V0dGluZ3MiLCJiaW5kaW5nQ29udGV4dHMiLCJjb250ZXh0UGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiY29udmVydGVyQ29udGV4dCIsIm5vUmVzb2x2ZSIsInZpZXdEYXRhIiwibWV0YU1vZGVsIiwiYXBwQ29tcG9uZW50IiwiY29udHJvbGxlckluc3RhbmNlIiwiY29udHJvbGxlciIsInN1YkNsYXNzIiwiZ2V0TWV0YWRhdGEiLCJnZXRDbGFzcyIsImV4dGVuZCIsImNvbnRyb2xsZXJFbGVtZW50S2V5IiwiY29udHJvbGxlckVsZW1lbnQiLCJiaW5kIiwiYm91bmRGdW5jdGlvbiIsInByb3RvdHlwZSIsImFyZ3MiLCJydW5Bc093bmVyIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInNldCIsInYiLCJuZXdJc0EiLCJjbGFzc05hbWUiLCJvVGVtcGxhdGVQcm9taXNlIiwidGVtcGxhdGVDb250cm9sRnJhZ21lbnQiLCJuYW1lIiwiaXNYTUwiLCJjb250YWluaW5nVmlldyIsIm9GcmFnbWVudCIsImluaXRpYWxCaW5kaW5nQ29udGV4dCIsInNldEJpbmRpbmdDb250ZXh0Iiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJ1cGRhdGVBcHBTdGF0ZSIsInZpZXciLCJhcHBTdGF0ZUluZm8iLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJjcmVhdGVBcHBTdGF0ZSIsInZpZXdJZCIsImFwcFN0YXRlRGF0YSIsInJ1bldpdGhGUE1Db250ZXh0IiwiZm4iLCJ0ZW1wbGF0ZUNvbXBvbmVudCIsIkJhc2VPYmplY3QiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IHR5cGUgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCB0eXBlIEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBNYWNyb0FQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9NYWNyb0FQSVwiO1xuaW1wb3J0IHR5cGUgRm9ybUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9mb3JtL0Zvcm1BUElcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IFRTRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5cbi8qKlxuICogQ29tbW9uIEV4dGVuc2lvbiBBUEkgZm9yIGFsbCBwYWdlcyBvZiBTQVAgRmlvcmkgZWxlbWVudHMgZm9yIE9EYXRhIFY0LlxuICpcbiAqIFRvIGNvcnJlY3RseSBpbnRlZ3JhdGUgeW91ciBhcHAgZXh0ZW5zaW9uIGNvZGluZyB3aXRoIFNBUCBGaW9yaSBlbGVtZW50cywgdXNlIG9ubHkgdGhlIGV4dGVuc2lvbkFQSSBvZiBTQVAgRmlvcmkgZWxlbWVudHMuIERvbid0IGFjY2VzcyBvciBtYW5pcHVsYXRlIGNvbnRyb2xzLCBwcm9wZXJ0aWVzLCBtb2RlbHMsIG9yIG90aGVyIGludGVybmFsIG9iamVjdHMgY3JlYXRlZCBieSB0aGUgU0FQIEZpb3JpIGVsZW1lbnRzIGZyYW1ld29yay5cbiAqXG4gKiBAcHVibGljXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKVxuY2xhc3MgRXh0ZW5zaW9uQVBJIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdC8qKlxuXHQgKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIGVkaXQgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuRWRpdEZsb3dcIiB9KVxuXHRlZGl0RmxvdzogRWRpdEZsb3c7XG5cblx0LyoqXG5cdCAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5Sb3V0aW5nXCIgfSlcblx0cm91dGluZzogUm91dGluZztcblxuXHQvKipcblx0ICogRXh0ZW5zaW9uQVBJIGZvciBpbnRlbnQtYmFzZWQgbmF2aWdhdGlvblxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkludGVudEJhc2VkTmF2aWdhdGlvblwiIH0pXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbjogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdHByb3RlY3RlZCBfY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJvdGVjdGVkIF92aWV3OiBGRVZpZXc7XG5cblx0cHJpdmF0ZSBfcm91dGluZzogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdHByaXZhdGUgX3ByZWZpeD86IHN0cmluZztcblxuXHRwcml2YXRlIGV4dGVuc2lvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0Y29uc3RydWN0b3Iob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzSWQ/OiBzdHJpbmcpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIgPSBvQ29udHJvbGxlcjtcblx0XHR0aGlzLl92aWV3ID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdHRoaXMuZXh0ZW5zaW9uID0gdGhpcy5fY29udHJvbGxlci5leHRlbnNpb247XG5cdFx0dGhpcy5lZGl0RmxvdyA9IHRoaXMuX2NvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0dGhpcy5yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5yb3V0aW5nO1xuXHRcdHRoaXMuX3JvdXRpbmcgPSB0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nO1xuXHRcdHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uID0gdGhpcy5fY29udHJvbGxlci5pbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cdFx0dGhpcy5fcHJlZml4ID0gc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEVkaXRGbG93KCk6IEVkaXRGbG93IHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0Rmxvdztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgcm91dGluZyBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0Um91dGluZygpOiBSb3V0aW5nIHtcblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaW50ZW50QmFzZWROYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uKCk6IEludGVudEJhc2VkTmF2aWdhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFjY2VzcyBhIGNvbnRyb2wgYnkgaXRzIElELiBJZiB5b3UgYXR0ZW1wdCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbCBpbnN0ZWFkIG9mIHRoZSBzdGFibGUgQVBJLCB0aGUgbWV0aG9kIHdpbGwgcmFpc2UgYW4gZXJyb3IuXG5cdCAqXG5cdCAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgY29udHJvbCB3aXRob3V0IHZpZXcgYW5kIHNlY3Rpb24gcHJlZml4LlxuXHQgKiBAcmV0dXJucyBUaGUgcmVxdWVzdGVkIGNvbnRyb2wsIGlmIGZvdW5kIGluIHRoZSB2aWV3IC8gc2VjdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YnlJZChpZDogc3RyaW5nKTogVUk1RWxlbWVudCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoaWQpO1xuXG5cdFx0aWYgKCFjb250cm9sICYmIHRoaXMuX3ByZWZpeCkge1xuXHRcdFx0Ly8gZ2l2ZSBpdCBhIHRyeSB3aXRoIHRoZSBwcmVmaXhcblx0XHRcdGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoYCR7dGhpcy5fcHJlZml4fS0tJHtpZH1gKTtcblx0XHR9XG5cblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sLmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHQvLyBjaGVjayBpZiBhcHAgdHJpZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgd3JhcHBlZCBieSBhIG1hY3JvIEFQSVxuXHRcdFx0bGV0IHBhcmVudCA9IGNvbnRyb2wuZ2V0UGFyZW50KCk7XG5cblx0XHRcdHdoaWxlIChwYXJlbnQpIHtcblx0XHRcdFx0aWYgKHBhcmVudC5pc0E8Rm9ybUFQST4oXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUFQSVwiKSkge1xuXHRcdFx0XHRcdC8vIHdlIHJlYWNoZWQgdGhlIGZvcm1BUEkgYnV0IG5vIGZpZWxkQVBJIC0gdGhlIGFwcCB0cmllcyB0byBhY2Nlc3MgYW55IGN1c3RvbSBjb250cm9sIHdoaWNoIGlzIGZpbmVcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPE1hY3JvQVBJPihcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIikpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRgWW91IGF0dGVtcHRlZCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbC4gVGhpcyBpcyByaXNreSBhbmQgbWlnaHQgY2hhbmdlIGxhdGVyLiBJbnN0ZWFkIGFjY2VzcyBpdHMgc3RhYmxlIEFQSSBieSB1c2luZyBJRCAke3BhcmVudC5nZXRJZCgpfWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY2Nlc3MgdG8gbW9kZWxzIG1hbmFnZWQgYnkgU0FQIEZpb3JpIGVsZW1lbnRzLjxicj5cblx0ICogVGhlIGZvbGxvd2luZyBtb2RlbHMgY2FuIGJlIGFjY2Vzc2VkOlxuXHQgKiA8dWw+XG5cdCAqIDxsaT51bmRlZmluZWQ6IHRoZSB1bmRlZmluZWQgbW9kZWwgcmV0dXJucyB0aGUgU0FQVUk1IE9EYXRhIFY0IG1vZGVsIGJvdW5kIHRvIHRoaXMgcGFnZTwvbGk+XG5cdCAqIDxsaT5pMThuIC8gZnVydGhlciBkYXRhIG1vZGVscyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdDwvbGk+XG5cdCAqIDxsaT51aTogcmV0dXJucyBhIFNBUFVJNSBKU09OIG1vZGVsIGNvbnRhaW5pbmcgVUkgaW5mb3JtYXRpb24uXG5cdCAqIE9ubHkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBwdWJsaWMgYW5kIHN1cHBvcnRlZDpcblx0ICogXHQ8dWw+XG5cdCAqICAgICA8bGk+aXNFZGl0YWJsZTogc2V0IHRvIHRydWUgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGluIGVkaXQgbW9kZTwvbGk+XG5cdCAqICA8L3VsPlxuXHQgKiA8L2xpPlxuXHQgKiA8L3VsPi5cblx0ICogZWRpdE1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSBpc0VkaXRhYmxlIGluc3RlYWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBzTW9kZWxOYW1lIE5hbWUgb2YgdGhlIG1vZGVsXG5cdCAqIEByZXR1cm5zIFRoZSByZXF1aXJlZCBtb2RlbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRNb2RlbChzTW9kZWxOYW1lPzogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvQXBwQ29tcG9uZW50O1xuXG5cdFx0aWYgKHNNb2RlbE5hbWUgJiYgc01vZGVsTmFtZSAhPT0gXCJ1aVwiKSB7XG5cdFx0XHRvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpO1xuXHRcdFx0aWYgKCFvQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpLm1vZGVsc1tzTW9kZWxOYW1lXSkge1xuXHRcdFx0XHQvLyBkb24ndCBhbGxvdyBhY2Nlc3MgdG8gb3VyIGludGVybmFsIG1vZGVsc1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl92aWV3LmdldE1vZGVsKHNNb2RlbE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhbnkgY29udHJvbCBhcyBhIGRlcGVuZGVudCBjb250cm9sIHRvIHRoaXMgU0FQIEZpb3JpIGVsZW1lbnRzIHBhZ2UuXG5cdCAqXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBDb250cm9sIHRvIGJlIGFkZGVkIGFzIGEgZGVwZW5kZW50IGNvbnRyb2xcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YWRkRGVwZW5kZW50KG9Db250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5fdmlldy5hZGREZXBlbmRlbnQob0NvbnRyb2wpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhIGRlcGVuZGVudCBjb250cm9sIGZyb20gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICpcblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZW1vdmVEZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LnJlbW92ZURlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogTmF2aWdhdGUgdG8gYW5vdGhlciB0YXJnZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSBzVGFyZ2V0IE5hbWUgb2YgdGhlIHRhcmdldCByb3V0ZVxuXHQgKiBAcGFyYW0gW29Db250ZXh0XSBPRGF0YSB2NCBjb250ZXh0IGluc3RhbmNlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdG5hdmlnYXRlVG9UYXJnZXQoc1RhcmdldDogc3RyaW5nLCBvQ29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHR0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlVG9UYXJnZXQob0NvbnRleHQsIHNUYXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWQgYSBmcmFnbWVudCBhbmQgZ28gdGhyb3VnaCB0aGUgdGVtcGxhdGUgcHJlcHJvY2Vzc29yIHdpdGggdGhlIGN1cnJlbnQgcGFnZSBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzIFRoZSBzZXR0aW5ncyBvYmplY3Rcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pZCBUaGUgSUQgb2YgdGhlIGZyYWdtZW50IGl0c2VsZlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLm5hbWUgVGhlIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIGxvYWRlZFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmNvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIGZyYWdtZW50XG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udGV4dFBhdGggVGhlIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgZm9yIHRoZSB0ZW1wbGF0aW5nIHByb2Nlc3Ncblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgVGhlIGluaXRpYWwgYmluZGluZyBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBmcmFnbWVudCBkZWZpbml0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvYWRGcmFnbWVudChtU2V0dGluZ3M6IHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHRjb250cm9sbGVyPzogb2JqZWN0O1xuXHRcdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRcdGluaXRpYWxCaW5kaW5nQ29udGV4dD86IENvbnRleHQ7XG5cdH0pOiBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+IHtcblx0XHRjb25zdCBvVGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdGNvbnN0IG9QYWdlTW9kZWwgPSB0aGlzLl92aWV3LmdldE1vZGVsKFwiX3BhZ2VNb2RlbFwiKTtcblx0XHRjb25zdCBpMThuTW9kZWwgPSB0aGlzLl92aWV3LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIik7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IHRoaXMuZ2V0TW9kZWwoKT8uZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgbVZpZXdEYXRhID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldFZpZXdEYXRhKCk7XG5cdFx0Y29uc3QgdGFyZ2V0Q29udGV4dFBhdGggPSBvVGVtcGxhdGVDb21wb25lbnQuZ2V0RW50aXR5U2V0KClcblx0XHRcdD8gYC8ke29UZW1wbGF0ZUNvbXBvbmVudC5nZXRFbnRpdHlTZXQoKSF9YFxuXHRcdFx0OiBvVGVtcGxhdGVDb21wb25lbnQuZ2V0Q29udGV4dFBhdGgoKSE7XG5cdFx0Y29uc3Qgb1ZpZXdEYXRhTW9kZWwgPSBuZXcgSlNPTk1vZGVsKG1WaWV3RGF0YSksXG5cdFx0XHRvUHJlcHJvY2Vzc29yU2V0dGluZ3MgPSB7XG5cdFx0XHRcdGJpbmRpbmdDb250ZXh0czoge1xuXHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChtU2V0dGluZ3MuY29udGV4dFBhdGggfHwgdGFyZ2V0Q29udGV4dFBhdGgpLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIsIHVuZGVmaW5lZCwgeyBub1Jlc29sdmU6IHRydWUgfSksXG5cdFx0XHRcdFx0dmlld0RhdGE6IG1WaWV3RGF0YSA/IG9WaWV3RGF0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKSA6IG51bGxcblx0XHRcdFx0fSxcblx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbCxcblx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0dmlld0RhdGE6IG9WaWV3RGF0YU1vZGVsLFxuXHRcdFx0XHRcdFwic2FwLmZlLmkxOG5cIjogaTE4bk1vZGVsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFwcENvbXBvbmVudDogQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpXG5cdFx0XHR9O1xuXG5cdFx0Ly8gV2Ugc2NvcGUgdGhlIGZyYWdtZW50IHdpdGggb3VyIEV4dGVuc2lvbkFQSS4gSWYgYSBjb250cm9sbGVyIG9iamVjdCBpcyBwYXNzZWQgd2UgbWVyZ2UgaXQgd2l0aCB0aGUgZXh0ZW5zaW9uQVBJXG5cdFx0bGV0IGNvbnRyb2xsZXJJbnN0YW5jZTogRXh0ZW5zaW9uQVBJO1xuXHRcdGlmIChtU2V0dGluZ3MuY29udHJvbGxlciAmJiAhKG1TZXR0aW5ncy5jb250cm9sbGVyIGFzIEV4dGVuc2lvbkFQSSk/LmlzQT8uKFwic2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJXCIpKSB7XG5cdFx0XHRjb25zdCBzdWJDbGFzcyA9IChcblx0XHRcdFx0dGhpcy5nZXRNZXRhZGF0YSgpLmdldENsYXNzKCkgYXMgdW5rbm93biBhcyB7XG5cdFx0XHRcdFx0ZXh0ZW5kOiAoaWQ6IHN0cmluZywgY29udGVudDogb2JqZWN0KSA9PiB7IG5ldyAocGFnZUNvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyKTogRXh0ZW5zaW9uQVBJIH07XG5cdFx0XHRcdH1cblx0XHRcdCkuZXh0ZW5kKG1TZXR0aW5ncy5pZCArIFwiLWNvbnRyb2xsZXJcIiwge30pO1xuXHRcdFx0Zm9yIChjb25zdCBjb250cm9sbGVyRWxlbWVudEtleSBpbiBtU2V0dGluZ3MuY29udHJvbGxlcikge1xuXHRcdFx0XHRjb25zdCBjb250cm9sbGVyRWxlbWVudCA9IG1TZXR0aW5ncy5jb250cm9sbGVyW2NvbnRyb2xsZXJFbGVtZW50S2V5IGFzIGtleW9mIHR5cGVvZiBtU2V0dGluZ3MuY29udHJvbGxlcl07XG5cdFx0XHRcdGlmICgoY29udHJvbGxlckVsZW1lbnQgYXMgRnVuY3Rpb24pPy5iaW5kKSB7XG5cdFx0XHRcdFx0Y29uc3QgYm91bmRGdW5jdGlvbiA9IChjb250cm9sbGVyRWxlbWVudCBhcyBGdW5jdGlvbikuYmluZChtU2V0dGluZ3MuY29udHJvbGxlcik7XG5cdFx0XHRcdFx0aWYgKG9UZW1wbGF0ZUNvbXBvbmVudCkge1xuXHRcdFx0XHRcdFx0c3ViQ2xhc3MucHJvdG90eXBlW2NvbnRyb2xsZXJFbGVtZW50S2V5XSA9ICguLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9UZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKCgpID0+IGJvdW5kRnVuY3Rpb24uYXBwbHkodGhpcywgYXJncykpO1xuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c3ViQ2xhc3MucHJvdG90eXBlW2NvbnRyb2xsZXJFbGVtZW50S2V5XSA9IGJvdW5kRnVuY3Rpb247XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcy5wcm90b3R5cGUsIGNvbnRyb2xsZXJFbGVtZW50S2V5LCB7XG5cdFx0XHRcdFx0XHRnZXQoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBtU2V0dGluZ3MuY29udHJvbGxlcj8uW2NvbnRyb2xsZXJFbGVtZW50S2V5IGFzIGtleW9mIHR5cGVvZiBtU2V0dGluZ3MuY29udHJvbGxlcl07XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c2V0KHY6IHVua25vd24pIHtcblx0XHRcdFx0XHRcdFx0aWYgKG1TZXR0aW5ncy5jb250cm9sbGVyKSB7XG5cdFx0XHRcdFx0XHRcdFx0KG1TZXR0aW5ncy5jb250cm9sbGVyW2NvbnRyb2xsZXJFbGVtZW50S2V5IGFzIGtleW9mIHR5cGVvZiBtU2V0dGluZ3MuY29udHJvbGxlcl0gYXMgdW5rbm93bikgPSB2O1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGNvbnRyb2xsZXJJbnN0YW5jZSA9IG5ldyBzdWJDbGFzcyh0aGlzLl9jb250cm9sbGVyKTtcblx0XHRcdGNvbnN0IG5ld0lzQSA9IGNvbnRyb2xsZXJJbnN0YW5jZS5pc0E7XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UuaXNBID0gKGNsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG5cdFx0XHRcdC8vIFdlIGtlZXAgdGhlIFx0c2FwLmZlLmNvcmUuRXh0ZW5zaW9uQVBJIGFzIGEgdmFsaWQgdHlwZSBmb3IgdGhpcyBuZXcgY2xhc3Ncblx0XHRcdFx0Ly8gdGhpcyB0eXBlIGlzIGxvc3QgYXMgc29vbiBhcyB0aGUgbWVyZ2VkIGNvbnRyb2xsZXIgb2JqZWN0IGdldHMgYSBtZXRob2QgaXNBXG5cdFx0XHRcdHJldHVybiBuZXdJc0EuYmluZChjb250cm9sbGVySW5zdGFuY2UpKGNsYXNzTmFtZSkgfHwgdGhpcy5pc0EoY2xhc3NOYW1lKTtcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRyb2xsZXJJbnN0YW5jZSA9IChtU2V0dGluZ3MuY29udHJvbGxlciBhcyBFeHRlbnNpb25BUEkpID8/IHRoaXM7XG5cdFx0fVxuXHRcdHJldHVybiBvVGVtcGxhdGVDb21wb25lbnQucnVuQXNPd25lcihhc3luYyAoKSA9PiB7XG5cdFx0XHRjb25zdCBvVGVtcGxhdGVQcm9taXNlID0gQ29tbW9uVXRpbHMudGVtcGxhdGVDb250cm9sRnJhZ21lbnQobVNldHRpbmdzLm5hbWUsIG9QcmVwcm9jZXNzb3JTZXR0aW5ncywge1xuXHRcdFx0XHRjb250cm9sbGVyOiBjb250cm9sbGVySW5zdGFuY2UsXG5cdFx0XHRcdGlzWE1MOiBmYWxzZSxcblx0XHRcdFx0aWQ6IG1TZXR0aW5ncy5pZCxcblx0XHRcdFx0Y29udGFpbmluZ1ZpZXc6IHRoaXMuX3ZpZXdcblx0XHRcdH0pIGFzIFByb21pc2U8Q29udHJvbD47XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBvRnJhZ21lbnQ6IENvbnRyb2wgPSBhd2FpdCBvVGVtcGxhdGVQcm9taXNlO1xuXHRcdFx0XHRpZiAobVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0b0ZyYWdtZW50LnNldEJpbmRpbmdDb250ZXh0KG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuYWRkRGVwZW5kZW50KG9GcmFnbWVudCk7XG5cdFx0XHRcdHJldHVybiBvRnJhZ21lbnQ7XG5cdFx0XHR9IGNhdGNoIChvRXJyb3IpIHtcblx0XHRcdFx0TG9nLmVycm9yKG9FcnJvciBhcyBzdHJpbmcpO1xuXHRcdFx0fVxuXHRcdH0pIGFzIFByb21pc2U8VUk1RWxlbWVudCB8IFVJNUVsZW1lbnRbXT47XG5cdH1cblxuXHQvKipcblx0ICogVHJpZ2dlcnMgYW4gdXBkYXRlIG9mIHRoZSBhcHAgc3RhdGUuXG5cdCAqIFNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIHN0YXRlIG9mIGEgY29udHJvbCwgb3IgYW55IG90aGVyIHN0YXRlLXJlbGV2YW50IGluZm9ybWF0aW9uLCB3YXMgY2hhbmdlZC5cblx0ICpcblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbmV3IGFwcCBzdGF0ZSBvYmplY3QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHVwZGF0ZUFwcFN0YXRlKCk6IFByb21pc2U8dm9pZCB8IHsgYXBwU3RhdGU6IG9iamVjdCB8IHVuZGVmaW5lZCB9PiB7XG5cdFx0Y29uc3QgdmlldyA9IHRoaXMuX2NvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMuX2NvbnRyb2xsZXIuZ2V0QXBwQ29tcG9uZW50KCk7XG5cdFx0Y29uc3QgYXBwU3RhdGVJbmZvID0gYXdhaXQgYXBwQ29tcG9uZW50LmdldEFwcFN0YXRlSGFuZGxlcigpLmNyZWF0ZUFwcFN0YXRlKHtcblx0XHRcdHZpZXdJZDogdmlldy5nZXRJZCgpXG5cdFx0fSk7XG5cdFx0cmV0dXJuIGFwcFN0YXRlSW5mbz8uYXBwU3RhdGVEYXRhO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1biB0aGUgZ2l2ZW4gZnVuY3Rpb24gd2l0aCB0aGUgRlBNIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgcGFnZS5cblx0ICogVGhpcyBhbGxvd3MgdG8gaW5pdGlhbGl6ZSBhbGwgdGhlIGVsZW1lbnRzIHJlcXVpcmVkIGJ5IGJ1aWxkaW5nIGJsb2NrcyB0byByZW5kZXIgY29ycmVjdGx5LlxuXHQgKlxuXHQgKiBAcGFyYW0gZm4gVGhlIEZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkXG5cdCAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJ1bldpdGhGUE1Db250ZXh0KGZuOiBGdW5jdGlvbik6IHVua25vd24ge1xuXHRcdGNvbnN0IHRlbXBsYXRlQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKHRoaXMuX3ZpZXcpIGFzIEVuaGFuY2VXaXRoVUk1PFRlbXBsYXRlQ29tcG9uZW50Pjtcblx0XHRyZXR1cm4gdGVtcGxhdGVDb21wb25lbnQucnVuQXNPd25lcihmbiBhcyBUU0Z1bmN0aW9uKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBFeHRlbnNpb25BUEk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7RUF1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUkEsSUFVTUEsWUFBWSxXQURqQkMsY0FBYyxDQUFDLDBCQUEwQixDQUFDLFVBT3pDQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQTRDLENBQUMsQ0FBQyxVQVEvREQsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUEyQyxDQUFDLENBQUMsVUFROURELFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBeUQsQ0FBQyxDQUFDO0lBQUE7SUFyQjdFO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0lBSUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7SUFJQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztJQWNDLHNCQUFZQyxXQUEyQixFQUFFQyxHQUFZLEVBQUU7TUFBQTtNQUN0RCw4QkFBTztNQUFDO01BQUE7TUFB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
331
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiX2RlYzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VPYmplY3QiLCJfaW5oZXJpdHNMb29zZSIsIm9Db250cm9sbGVyIiwic0lkIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfY29udHJvbGxlciIsIl92aWV3IiwiZ2V0VmlldyIsImV4dGVuc2lvbiIsImVkaXRGbG93Iiwicm91dGluZyIsIl9yb3V0aW5nIiwiaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX3ByZWZpeCIsIl9wcm90byIsInByb3RvdHlwZSIsImdldEVkaXRGbG93IiwiZ2V0Um91dGluZyIsImdldEludGVudEJhc2VkTmF2aWdhdGlvbiIsImJ5SWQiLCJpZCIsImNvbnRyb2wiLCJ1bmRlZmluZWQiLCJpc0EiLCJwYXJlbnQiLCJnZXRQYXJlbnQiLCJFcnJvciIsImdldElkIiwiZ2V0TW9kZWwiLCJzTW9kZWxOYW1lIiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0TWFuaWZlc3RFbnRyeSIsIm1vZGVscyIsImFkZERlcGVuZGVudCIsIm9Db250cm9sIiwicmVtb3ZlRGVwZW5kZW50IiwibmF2aWdhdGVUb1RhcmdldCIsInNUYXJnZXQiLCJvQ29udGV4dCIsImxvYWRGcmFnbWVudCIsIm1TZXR0aW5ncyIsIl90aGlzJGdldE1vZGVsIiwiX21TZXR0aW5ncyRjb250cm9sbGVyIiwiX21TZXR0aW5ncyRjb250cm9sbGVyMiIsIl90aGlzMiIsIm9UZW1wbGF0ZUNvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwib1BhZ2VNb2RlbCIsImkxOG5Nb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInRhcmdldENvbnRleHRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0Q29udGV4dFBhdGgiLCJvVmlld0RhdGFNb2RlbCIsIkpTT05Nb2RlbCIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsImJpbmRpbmdDb250ZXh0cyIsImNvbnRleHRQYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZXJDb250ZXh0Iiwibm9SZXNvbHZlIiwidmlld0RhdGEiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJjb250cm9sbGVySW5zdGFuY2UiLCJjb250cm9sbGVyIiwic3ViQ2xhc3MiLCJnZXRNZXRhZGF0YSIsImdldENsYXNzIiwiZXh0ZW5kIiwiY29udHJvbGxlckVsZW1lbnRLZXkiLCJjb250cm9sbGVyRWxlbWVudCIsImJpbmQiLCJib3VuZEZ1bmN0aW9uIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJydW5Bc093bmVyIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsIl9tU2V0dGluZ3MkY29udHJvbGxlcjMiLCJzZXQiLCJ2IiwibmV3SXNBIiwiY2xhc3NOYW1lIiwib1RlbXBsYXRlUHJvbWlzZSIsInRlbXBsYXRlQ29udHJvbEZyYWdtZW50IiwibmFtZSIsImlzWE1MIiwiY29udGFpbmluZ1ZpZXciLCJvRnJhZ21lbnQiLCJpbml0aWFsQmluZGluZ0NvbnRleHQiLCJzZXRCaW5kaW5nQ29udGV4dCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwidXBkYXRlQXBwU3RhdGUiLCJ2aWV3IiwiYXBwU3RhdGVJbmZvIiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiY3JlYXRlQXBwU3RhdGUiLCJ2aWV3SWQiLCJhcHBTdGF0ZURhdGEiLCJydW5XaXRoRlBNQ29udGV4dCIsImZuIiwidGVtcGxhdGVDb21wb25lbnQiLCJCYXNlT2JqZWN0IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFeHRlbnNpb25BUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBGRVZpZXcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCB0eXBlIEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IHR5cGUgUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZvcm1BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZm9ybS9Gb3JtQVBJXCI7XG5pbXBvcnQgQmFzZU9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBUU0Z1bmN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIENvbW1vbiBFeHRlbnNpb24gQVBJIGZvciBhbGwgcGFnZXMgb2YgU0FQIEZpb3JpIGVsZW1lbnRzIGZvciBPRGF0YSBWNC5cbiAqXG4gKiBUbyBjb3JyZWN0bHkgaW50ZWdyYXRlIHlvdXIgYXBwIGV4dGVuc2lvbiBjb2Rpbmcgd2l0aCBTQVAgRmlvcmkgZWxlbWVudHMsIHVzZSBvbmx5IHRoZSBleHRlbnNpb25BUEkgb2YgU0FQIEZpb3JpIGVsZW1lbnRzLiBEb24ndCBhY2Nlc3Mgb3IgbWFuaXB1bGF0ZSBjb250cm9scywgcHJvcGVydGllcywgbW9kZWxzLCBvciBvdGhlciBpbnRlcm5hbCBvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIFNBUCBGaW9yaSBlbGVtZW50cyBmcmFtZXdvcmsuXG4gKiBAcHVibGljXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKVxuY2xhc3MgRXh0ZW5zaW9uQVBJIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdC8qKlxuXHQgKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIGVkaXQgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuRWRpdEZsb3dcIiB9KVxuXHRlZGl0RmxvdzogRWRpdEZsb3c7XG5cblx0LyoqXG5cdCAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5Sb3V0aW5nXCIgfSlcblx0cm91dGluZzogUm91dGluZztcblxuXHQvKipcblx0ICogRXh0ZW5zaW9uQVBJIGZvciBpbnRlbnQtYmFzZWQgbmF2aWdhdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkludGVudEJhc2VkTmF2aWdhdGlvblwiIH0pXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbjogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdHB1YmxpYyBfY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJvdGVjdGVkIF92aWV3OiBGRVZpZXc7XG5cblx0cHJpdmF0ZSBfcm91dGluZzogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdHByaXZhdGUgX3ByZWZpeD86IHN0cmluZztcblxuXHRwcml2YXRlIGV4dGVuc2lvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cblx0Y29uc3RydWN0b3Iob0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzSWQ/OiBzdHJpbmcpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIgPSBvQ29udHJvbGxlcjtcblx0XHR0aGlzLl92aWV3ID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpO1xuXHRcdHRoaXMuZXh0ZW5zaW9uID0gdGhpcy5fY29udHJvbGxlci5leHRlbnNpb247XG5cdFx0dGhpcy5lZGl0RmxvdyA9IHRoaXMuX2NvbnRyb2xsZXIuZWRpdEZsb3c7XG5cdFx0dGhpcy5yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5yb3V0aW5nO1xuXHRcdHRoaXMuX3JvdXRpbmcgPSB0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nO1xuXHRcdHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uID0gdGhpcy5fY29udHJvbGxlci5pbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cdFx0dGhpcy5fcHJlZml4ID0gc0lkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgZWRpdEZsb3cgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEVkaXRGbG93KCk6IEVkaXRGbG93IHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0Rmxvdztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb24gZm9yIHRoaXMgcGFnZS5cblx0ICogQHB1YmxpY1xuXHQgKiBAcmV0dXJucyBUaGUgcm91dGluZyBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0Um91dGluZygpOiBSb3V0aW5nIHtcblx0XHRyZXR1cm4gdGhpcy5yb3V0aW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgaW50ZW50QmFzZWROYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHQgKi9cblx0Z2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uKCk6IEludGVudEJhc2VkTmF2aWdhdGlvbiB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFjY2VzcyBhIGNvbnRyb2wgYnkgaXRzIElELiBJZiB5b3UgYXR0ZW1wdCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbCBpbnN0ZWFkIG9mIHRoZSBzdGFibGUgQVBJLCB0aGUgbWV0aG9kIHdpbGwgcmFpc2UgYW4gZXJyb3IuXG5cdCAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgY29udHJvbCB3aXRob3V0IHZpZXcgYW5kIHNlY3Rpb24gcHJlZml4LlxuXHQgKiBAcmV0dXJucyBUaGUgcmVxdWVzdGVkIGNvbnRyb2wsIGlmIGZvdW5kIGluIHRoZSB2aWV3IC8gc2VjdGlvbi5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YnlJZChpZDogc3RyaW5nKTogVUk1RWxlbWVudCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoaWQpO1xuXG5cdFx0aWYgKCFjb250cm9sICYmIHRoaXMuX3ByZWZpeCkge1xuXHRcdFx0Ly8gZ2l2ZSBpdCBhIHRyeSB3aXRoIHRoZSBwcmVmaXhcblx0XHRcdGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoYCR7dGhpcy5fcHJlZml4fS0tJHtpZH1gKTtcblx0XHR9XG5cblx0XHRpZiAoIWNvbnRyb2wpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sLmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHQvLyBjaGVjayBpZiBhcHAgdHJpZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgd3JhcHBlZCBieSBhIG1hY3JvIEFQSVxuXHRcdFx0bGV0IHBhcmVudCA9IGNvbnRyb2wuZ2V0UGFyZW50KCk7XG5cblx0XHRcdHdoaWxlIChwYXJlbnQpIHtcblx0XHRcdFx0aWYgKHBhcmVudC5pc0E8Rm9ybUFQST4oXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUFQSVwiKSkge1xuXHRcdFx0XHRcdC8vIHdlIHJlYWNoZWQgdGhlIGZvcm1BUEkgYnV0IG5vIGZpZWxkQVBJIC0gdGhlIGFwcCB0cmllcyB0byBhY2Nlc3MgYW55IGN1c3RvbSBjb250cm9sIHdoaWNoIGlzIGZpbmVcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPE1hY3JvQVBJPihcInNhcC5mZS5tYWNyb3MuTWFjcm9BUElcIikpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXG5cdFx0XHRcdFx0XHRgWW91IGF0dGVtcHRlZCB0byBhY2Nlc3MgYW4gaW50ZXJuYWwgY29udHJvbC4gVGhpcyBpcyByaXNreSBhbmQgbWlnaHQgY2hhbmdlIGxhdGVyLiBJbnN0ZWFkIGFjY2VzcyBpdHMgc3RhYmxlIEFQSSBieSB1c2luZyBJRCAke3BhcmVudC5nZXRJZCgpfWBcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cGFyZW50ID0gcGFyZW50LmdldFBhcmVudCgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjb250cm9sO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY2Nlc3MgdG8gbW9kZWxzIG1hbmFnZWQgYnkgU0FQIEZpb3JpIGVsZW1lbnRzLjxicj5cblx0ICogVGhlIGZvbGxvd2luZyBtb2RlbHMgY2FuIGJlIGFjY2Vzc2VkOlxuXHQgKiA8dWw+XG5cdCAqIDxsaT51bmRlZmluZWQ6IHRoZSB1bmRlZmluZWQgbW9kZWwgcmV0dXJucyB0aGUgU0FQVUk1IE9EYXRhIFY0IG1vZGVsIGJvdW5kIHRvIHRoaXMgcGFnZTwvbGk+XG5cdCAqIDxsaT5pMThuIC8gZnVydGhlciBkYXRhIG1vZGVscyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdDwvbGk+XG5cdCAqIDxsaT51aTogcmV0dXJucyBhIFNBUFVJNSBKU09OIG1vZGVsIGNvbnRhaW5pbmcgVUkgaW5mb3JtYXRpb24uXG5cdCAqIE9ubHkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBwdWJsaWMgYW5kIHN1cHBvcnRlZDpcblx0ICogPHVsPlxuXHQgKiA8bGk+aXNFZGl0YWJsZTogc2V0IHRvIHRydWUgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGluIGVkaXQgbW9kZTwvbGk+XG5cdCAqIDwvdWw+XG5cdCAqIDwvbGk+XG5cdCAqIDwvdWw+LlxuXHQgKiBlZGl0TW9kZSBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlIGlzRWRpdGFibGUgaW5zdGVhZC5cblx0ICogQHBhcmFtIHNNb2RlbE5hbWUgTmFtZSBvZiB0aGUgbW9kZWxcblx0ICogQHJldHVybnMgVGhlIHJlcXVpcmVkIG1vZGVsXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldE1vZGVsKHNNb2RlbE5hbWU/OiBzdHJpbmcpOiBNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG9BcHBDb21wb25lbnQ7XG5cblx0XHRpZiAoc01vZGVsTmFtZSAmJiBzTW9kZWxOYW1lICE9PSBcInVpXCIpIHtcblx0XHRcdG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldyk7XG5cdFx0XHRpZiAoIW9BcHBDb21wb25lbnQuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC51aTVcIikubW9kZWxzW3NNb2RlbE5hbWVdKSB7XG5cdFx0XHRcdC8vIGRvbid0IGFsbG93IGFjY2VzcyB0byBvdXIgaW50ZXJuYWwgbW9kZWxzXG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuX3ZpZXcuZ2V0TW9kZWwoc01vZGVsTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIGFueSBjb250cm9sIGFzIGEgZGVwZW5kZW50IGNvbnRyb2wgdG8gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhZGREZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LmFkZERlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIGEgZGVwZW5kZW50IGNvbnRyb2wgZnJvbSB0aGlzIFNBUCBGaW9yaSBlbGVtZW50cyBwYWdlLlxuXHQgKiBAcGFyYW0gb0NvbnRyb2wgQ29udHJvbCB0byBiZSBhZGRlZCBhcyBhIGRlcGVuZGVudCBjb250cm9sXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHJlbW92ZURlcGVuZGVudChvQ29udHJvbDogQ29udHJvbCk6IHZvaWQge1xuXHRcdHRoaXMuX3ZpZXcucmVtb3ZlRGVwZW5kZW50KG9Db250cm9sKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZSB0byBhbm90aGVyIHRhcmdldC5cblx0ICogQHBhcmFtIHNUYXJnZXQgTmFtZSBvZiB0aGUgdGFyZ2V0IHJvdXRlXG5cdCAqIEBwYXJhbSBbb0NvbnRleHRdIE9EYXRhIHY0IGNvbnRleHQgaW5zdGFuY2Vcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0bmF2aWdhdGVUb1RhcmdldChzVGFyZ2V0OiBzdHJpbmcsIG9Db250ZXh0OiBPRGF0YVY0Q29udGV4dCk6IHZvaWQge1xuXHRcdHRoaXMuX2NvbnRyb2xsZXIuX3JvdXRpbmcubmF2aWdhdGVUb1RhcmdldChvQ29udGV4dCwgc1RhcmdldCk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZCBhIGZyYWdtZW50IGFuZCBnbyB0aHJvdWdoIHRoZSB0ZW1wbGF0ZSBwcmVwcm9jZXNzb3Igd2l0aCB0aGUgY3VycmVudCBwYWdlIGNvbnRleHQuXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MgVGhlIHNldHRpbmdzIG9iamVjdFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmlkIFRoZSBJRCBvZiB0aGUgZnJhZ21lbnQgaXRzZWxmXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MubmFtZSBUaGUgbmFtZSBvZiB0aGUgZnJhZ21lbnQgdG8gYmUgbG9hZGVkXG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udHJvbGxlciBUaGUgY29udHJvbGxlciB0byBiZSBhdHRhY2hlZCB0byB0aGUgZnJhZ21lbnRcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5jb250ZXh0UGF0aCBUaGUgY29udGV4dFBhdGggdG8gYmUgdXNlZCBmb3IgdGhlIHRlbXBsYXRpbmcgcHJvY2Vzc1xuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCBUaGUgaW5pdGlhbCBiaW5kaW5nIGNvbnRleHRcblx0ICogQHJldHVybnMgVGhlIGZyYWdtZW50IGRlZmluaXRpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9hZEZyYWdtZW50KG1TZXR0aW5nczoge1xuXHRcdGlkOiBzdHJpbmc7XG5cdFx0bmFtZTogc3RyaW5nO1xuXHRcdGNvbnRyb2xsZXI/OiBvYmplY3Q7XG5cdFx0Y29udGV4dFBhdGg/OiBzdHJpbmc7XG5cdFx0aW5pdGlhbEJpbmRpbmdDb250ZXh0PzogQ29udGV4dDtcblx0fSk6IFByb21pc2U8VUk1RWxlbWVudCB8IFVJNUVsZW1lbnRbXT4ge1xuXHRcdGNvbnN0IG9UZW1wbGF0ZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLl92aWV3KSBhcyBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD47XG5cdFx0Y29uc3Qgb1BhZ2VNb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpO1xuXHRcdGNvbnN0IGkxOG5Nb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gdGhpcy5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBtVmlld0RhdGEgPSBvVGVtcGxhdGVDb21wb25lbnQuZ2V0Vmlld0RhdGEoKTtcblx0XHRjb25zdCB0YXJnZXRDb250ZXh0UGF0aCA9IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRFbnRpdHlTZXQoKVxuXHRcdFx0PyBgLyR7b1RlbXBsYXRlQ29tcG9uZW50LmdldEVudGl0eVNldCgpIX1gXG5cdFx0XHQ6IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRDb250ZXh0UGF0aCgpITtcblx0XHRjb25zdCBvVmlld0RhdGFNb2RlbCA9IG5ldyBKU09OTW9kZWwobVZpZXdEYXRhKSxcblx0XHRcdG9QcmVwcm9jZXNzb3JTZXR0aW5ncyA9IHtcblx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0Y29udGV4dFBhdGg6IG9NZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1TZXR0aW5ncy5jb250ZXh0UGF0aCB8fCB0YXJnZXRDb250ZXh0UGF0aCksXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogb1BhZ2VNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIiwgdW5kZWZpbmVkLCB7IG5vUmVzb2x2ZTogdHJ1ZSB9KSxcblx0XHRcdFx0XHR2aWV3RGF0YTogbVZpZXdEYXRhID8gb1ZpZXdEYXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpIDogbnVsbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtb2RlbHM6IHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLFxuXHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHR2aWV3RGF0YTogb1ZpZXdEYXRhTW9kZWwsXG5cdFx0XHRcdFx0XCJzYXAuZmUuaTE4blwiOiBpMThuTW9kZWxcblx0XHRcdFx0fSxcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldylcblx0XHRcdH07XG5cblx0XHQvLyBXZSBzY29wZSB0aGUgZnJhZ21lbnQgd2l0aCBvdXIgRXh0ZW5zaW9uQVBJLiBJZiBhIGNvbnRyb2xsZXIgb2JqZWN0IGlzIHBhc3NlZCB3ZSBtZXJnZSBpdCB3aXRoIHRoZSBleHRlbnNpb25BUElcblx0XHRsZXQgY29udHJvbGxlckluc3RhbmNlOiBFeHRlbnNpb25BUEk7XG5cdFx0aWYgKG1TZXR0aW5ncy5jb250cm9sbGVyICYmICEobVNldHRpbmdzLmNvbnRyb2xsZXIgYXMgRXh0ZW5zaW9uQVBJKT8uaXNBPy4oXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIikpIHtcblx0XHRcdGNvbnN0IHN1YkNsYXNzID0gKFxuXHRcdFx0XHR0aGlzLmdldE1ldGFkYXRhKCkuZ2V0Q2xhc3MoKSBhcyB1bmtub3duIGFzIHtcblx0XHRcdFx0XHRleHRlbmQ6IChpZDogc3RyaW5nLCBjb250ZW50OiBvYmplY3QpID0+IHsgbmV3IChwYWdlQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIpOiBFeHRlbnNpb25BUEkgfTtcblx0XHRcdFx0fVxuXHRcdFx0KS5leHRlbmQobVNldHRpbmdzLmlkICsgXCItY29udHJvbGxlclwiLCB7fSk7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnRyb2xsZXJFbGVtZW50S2V5IGluIG1TZXR0aW5ncy5jb250cm9sbGVyKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnRyb2xsZXJFbGVtZW50ID0gbVNldHRpbmdzLmNvbnRyb2xsZXJbY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXTtcblx0XHRcdFx0aWYgKChjb250cm9sbGVyRWxlbWVudCBhcyBGdW5jdGlvbik/LmJpbmQpIHtcblx0XHRcdFx0XHRjb25zdCBib3VuZEZ1bmN0aW9uID0gKGNvbnRyb2xsZXJFbGVtZW50IGFzIEZ1bmN0aW9uKS5iaW5kKG1TZXR0aW5ncy5jb250cm9sbGVyKTtcblx0XHRcdFx0XHRpZiAob1RlbXBsYXRlQ29tcG9uZW50KSB7XG5cdFx0XHRcdFx0XHRzdWJDbGFzcy5wcm90b3R5cGVbY29udHJvbGxlckVsZW1lbnRLZXldID0gKC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24gPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gb1RlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoKCkgPT4gYm91bmRGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmdzKSk7XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzdWJDbGFzcy5wcm90b3R5cGVbY29udHJvbGxlckVsZW1lbnRLZXldID0gYm91bmRGdW5jdGlvbjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLnByb3RvdHlwZSwgY29udHJvbGxlckVsZW1lbnRLZXksIHtcblx0XHRcdFx0XHRcdGdldCgpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG1TZXR0aW5ncy5jb250cm9sbGVyPy5bY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzZXQodjogdW5rbm93bikge1xuXHRcdFx0XHRcdFx0XHRpZiAobVNldHRpbmdzLmNvbnRyb2xsZXIpIHtcblx0XHRcdFx0XHRcdFx0XHQobVNldHRpbmdzLmNvbnRyb2xsZXJbY29udHJvbGxlckVsZW1lbnRLZXkgYXMga2V5b2YgdHlwZW9mIG1TZXR0aW5ncy5jb250cm9sbGVyXSBhcyB1bmtub3duKSA9IHY7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlID0gbmV3IHN1YkNsYXNzKHRoaXMuX2NvbnRyb2xsZXIpO1xuXHRcdFx0Y29uc3QgbmV3SXNBID0gY29udHJvbGxlckluc3RhbmNlLmlzQTtcblx0XHRcdGNvbnRyb2xsZXJJbnN0YW5jZS5pc0EgPSAoY2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcblx0XHRcdFx0Ly8gV2Uga2VlcCB0aGUgXHRzYXAuZmUuY29yZS5FeHRlbnNpb25BUEkgYXMgYSB2YWxpZCB0eXBlIGZvciB0aGlzIG5ldyBjbGFzc1xuXHRcdFx0XHQvLyB0aGlzIHR5cGUgaXMgbG9zdCBhcyBzb29uIGFzIHRoZSBtZXJnZWQgY29udHJvbGxlciBvYmplY3QgZ2V0cyBhIG1ldGhvZCBpc0Fcblx0XHRcdFx0cmV0dXJuIG5ld0lzQS5iaW5kKGNvbnRyb2xsZXJJbnN0YW5jZSkoY2xhc3NOYW1lKSB8fCB0aGlzLmlzQShjbGFzc05hbWUpO1xuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlID0gKG1TZXR0aW5ncy5jb250cm9sbGVyIGFzIEV4dGVuc2lvbkFQSSkgPz8gdGhpcztcblx0XHR9XG5cdFx0cmV0dXJuIG9UZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKGFzeW5jICgpID0+IHtcblx0XHRcdGNvbnN0IG9UZW1wbGF0ZVByb21pc2UgPSBDb21tb25VdGlscy50ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudChtU2V0dGluZ3MubmFtZSwgb1ByZXByb2Nlc3NvclNldHRpbmdzLCB7XG5cdFx0XHRcdGNvbnRyb2xsZXI6IGNvbnRyb2xsZXJJbnN0YW5jZSxcblx0XHRcdFx0aXNYTUw6IGZhbHNlLFxuXHRcdFx0XHRpZDogbVNldHRpbmdzLmlkLFxuXHRcdFx0XHRjb250YWluaW5nVmlldzogdGhpcy5fdmlld1xuXHRcdFx0fSkgYXMgUHJvbWlzZTxDb250cm9sPjtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IG9GcmFnbWVudDogQ29udHJvbCA9IGF3YWl0IG9UZW1wbGF0ZVByb21pc2U7XG5cdFx0XHRcdGlmIChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRvRnJhZ21lbnQuc2V0QmluZGluZ0NvbnRleHQobVNldHRpbmdzLmluaXRpYWxCaW5kaW5nQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5hZGREZXBlbmRlbnQob0ZyYWdtZW50KTtcblx0XHRcdFx0cmV0dXJuIG9GcmFnbWVudDtcblx0XHRcdH0gY2F0Y2ggKG9FcnJvcikge1xuXHRcdFx0XHRMb2cuZXJyb3Iob0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fSkgYXMgUHJvbWlzZTxVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdPjtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VycyBhbiB1cGRhdGUgb2YgdGhlIGFwcCBzdGF0ZS5cblx0ICogU2hvdWxkIGJlIGNhbGxlZCBpZiB0aGUgc3RhdGUgb2YgYSBjb250cm9sLCBvciBhbnkgb3RoZXIgc3RhdGUtcmVsZXZhbnQgaW5mb3JtYXRpb24sIHdhcyBjaGFuZ2VkLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBuZXcgYXBwIHN0YXRlIG9iamVjdC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgdXBkYXRlQXBwU3RhdGUoKTogUHJvbWlzZTx2b2lkIHwgeyBhcHBTdGF0ZTogb2JqZWN0IHwgdW5kZWZpbmVkIH0+IHtcblx0XHRjb25zdCB2aWV3ID0gdGhpcy5fY29udHJvbGxlci5nZXRWaWV3KCk7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5fY29udHJvbGxlci5nZXRBcHBDb21wb25lbnQoKTtcblx0XHRjb25zdCBhcHBTdGF0ZUluZm8gPSBhd2FpdCBhcHBDb21wb25lbnQuZ2V0QXBwU3RhdGVIYW5kbGVyKCkuY3JlYXRlQXBwU3RhdGUoe1xuXHRcdFx0dmlld0lkOiB2aWV3LmdldElkKClcblx0XHR9KTtcblx0XHRyZXR1cm4gYXBwU3RhdGVJbmZvPy5hcHBTdGF0ZURhdGE7XG5cdH1cblxuXHQvKipcblx0ICogUnVuIHRoZSBnaXZlbiBmdW5jdGlvbiB3aXRoIHRoZSBGUE0gY29udGV4dCBvZiB0aGUgY3VycmVudCBwYWdlLlxuXHQgKiBUaGlzIGFsbG93cyB0byBpbml0aWFsaXplIGFsbCB0aGUgZWxlbWVudHMgcmVxdWlyZWQgYnkgYnVpbGRpbmcgYmxvY2tzIHRvIHJlbmRlciBjb3JyZWN0bHkuXG5cdCAqIEBwYXJhbSBmbiBUaGUgRnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWRcblx0ICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0cnVuV2l0aEZQTUNvbnRleHQoZm46IEZ1bmN0aW9uKTogdW5rbm93biB7XG5cdFx0Y29uc3QgdGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdHJldHVybiB0ZW1wbGF0ZUNvbXBvbmVudC5ydW5Bc093bmVyKGZuIGFzIFRTRnVuY3Rpb24pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVuc2lvbkFQSTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztFQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEEsSUFTTUEsWUFBWSxJQUFBQyxJQUFBLEdB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
@@ -25,7 +25,6 @@ import type { TSFunction } from "../../../../../../types/extension_types";
25
25
  * Common Extension API for all pages of SAP Fiori elements for OData V4.
26
26
  *
27
27
  * To correctly integrate your app extension coding with SAP Fiori elements, use only the extensionAPI of SAP Fiori elements. Don't access or manipulate controls, properties, models, or other internal objects created by the SAP Fiori elements framework.
28
- *
29
28
  * @public
30
29
  * @hideconstructor
31
30
  * @since 1.79.0
@@ -34,7 +33,6 @@ import type { TSFunction } from "../../../../../../types/extension_types";
34
33
  class ExtensionAPI extends BaseObject {
35
34
  /**
36
35
  * A controller extension offering hooks into the edit flow of the application.
37
- *
38
36
  * @public
39
37
  */
40
38
  @property({ type: "sap.fe.core.controllerextensions.EditFlow" })
@@ -42,7 +40,6 @@ class ExtensionAPI extends BaseObject {
42
40
 
43
41
  /**
44
42
  * A controller extension offering hooks into the routing flow of the application.
45
- *
46
43
  * @public
47
44
  */
48
45
  @property({ type: "sap.fe.core.controllerextensions.Routing" })
@@ -50,13 +47,12 @@ class ExtensionAPI extends BaseObject {
50
47
 
51
48
  /**
52
49
  * ExtensionAPI for intent-based navigation
53
- *
54
50
  * @public
55
51
  */
56
52
  @property({ type: "sap.fe.core.controllerextensions.IntentBasedNavigation" })
57
53
  intentBasedNavigation: IntentBasedNavigation;
58
54
 
59
- protected _controller: PageController;
55
+ public _controller: PageController;
60
56
 
61
57
  protected _view: FEView;
62
58
 
@@ -80,7 +76,6 @@ class ExtensionAPI extends BaseObject {
80
76
 
81
77
  /**
82
78
  * Retrieves the editFlow controller extension for this page.
83
- *
84
79
  * @public
85
80
  * @returns The editFlow controller extension
86
81
  */
@@ -90,7 +85,6 @@ class ExtensionAPI extends BaseObject {
90
85
 
91
86
  /**
92
87
  * Retrieves the routing controller extension for this page.
93
- *
94
88
  * @public
95
89
  * @returns The routing controller extension
96
90
  */
@@ -100,7 +94,6 @@ class ExtensionAPI extends BaseObject {
100
94
 
101
95
  /**
102
96
  * Retrieves the intentBasedNavigation controller extension for this page.
103
- *
104
97
  * @public
105
98
  * @returns The intentBasedNavigation controller extension
106
99
  */
@@ -110,7 +103,6 @@ class ExtensionAPI extends BaseObject {
110
103
 
111
104
  /**
112
105
  * Access a control by its ID. If you attempt to access an internal control instead of the stable API, the method will raise an error.
113
- *
114
106
  * @param id ID of the control without view and section prefix.
115
107
  * @returns The requested control, if found in the view / section.
116
108
  * @public
@@ -158,13 +150,12 @@ class ExtensionAPI extends BaseObject {
158
150
  * <li>i18n / further data models defined in the manifest</li>
159
151
  * <li>ui: returns a SAPUI5 JSON model containing UI information.
160
152
  * Only the following properties are public and supported:
161
- * <ul>
162
- * <li>isEditable: set to true if the application is in edit mode</li>
163
- * </ul>
153
+ * <ul>
154
+ * <li>isEditable: set to true if the application is in edit mode</li>
155
+ * </ul>
164
156
  * </li>
165
157
  * </ul>.
166
158
  * editMode is deprecated and should not be used anymore. Use isEditable instead.
167
- *
168
159
  * @param sModelName Name of the model
169
160
  * @returns The required model
170
161
  * @public
@@ -185,7 +176,6 @@ class ExtensionAPI extends BaseObject {
185
176
 
186
177
  /**
187
178
  * Add any control as a dependent control to this SAP Fiori elements page.
188
- *
189
179
  * @param oControl Control to be added as a dependent control
190
180
  * @public
191
181
  */
@@ -195,7 +185,6 @@ class ExtensionAPI extends BaseObject {
195
185
 
196
186
  /**
197
187
  * Remove a dependent control from this SAP Fiori elements page.
198
- *
199
188
  * @param oControl Control to be added as a dependent control
200
189
  * @public
201
190
  */
@@ -205,7 +194,6 @@ class ExtensionAPI extends BaseObject {
205
194
 
206
195
  /**
207
196
  * Navigate to another target.
208
- *
209
197
  * @param sTarget Name of the target route
210
198
  * @param [oContext] OData v4 context instance
211
199
  * @public
@@ -216,7 +204,6 @@ class ExtensionAPI extends BaseObject {
216
204
 
217
205
  /**
218
206
  * Load a fragment and go through the template preprocessor with the current page context.
219
- *
220
207
  * @param mSettings The settings object
221
208
  * @param mSettings.id The ID of the fragment itself
222
209
  * @param mSettings.name The name of the fragment to be loaded
@@ -323,7 +310,6 @@ class ExtensionAPI extends BaseObject {
323
310
  /**
324
311
  * Triggers an update of the app state.
325
312
  * Should be called if the state of a control, or any other state-relevant information, was changed.
326
- *
327
313
  * @returns A promise that resolves with the new app state object.
328
314
  * @public
329
315
  */
@@ -339,7 +325,6 @@ class ExtensionAPI extends BaseObject {
339
325
  /**
340
326
  * Run the given function with the FPM context of the current page.
341
327
  * This allows to initialize all the elements required by building blocks to render correctly.
342
- *
343
328
  * @param fn The Function to be executed
344
329
  * @returns The result of the function
345
330
  * @public
@@ -5,8 +5,10 @@
5
5
  sap.ui.define(["sap/insights/CardExtension", "./formatters/ValueFormatter"], function (CardExtension, valueFormatters) {
6
6
  "use strict";
7
7
 
8
- function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
9
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
8
+ function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
9
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
10
+ // This import is fine as this file will only be loaded in insights context
11
+ // eslint-disable-next-line @typescript-eslint/no-restricted-imports
10
12
  let InsightsFormatters = /*#__PURE__*/function (_CardExtension) {
11
13
  _inheritsLoose(InsightsFormatters, _CardExtension);
12
14
  function InsightsFormatters() {
@@ -24,4 +26,4 @@ sap.ui.define(["sap/insights/CardExtension", "./formatters/ValueFormatter"], fun
24
26
  }(CardExtension);
25
27
  return InsightsFormatters;
26
28
  }, false);
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnNpZ2h0c0Zvcm1hdHRlcnMiLCJpbml0IiwiYXBwbHkiLCJhZGRGb3JtYXR0ZXJzIiwiZm9ybWF0V2l0aEJyYWNrZXRzIiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0VGl0bGUiLCJDYXJkRXh0ZW5zaW9uIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJJbnNpZ2h0c0Zvcm1hdHRlcnNFeHRlbnNpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBpbXBvcnQgaXMgZmluZSBhcyB0aGlzIGZpbGUgd2lsbCBvbmx5IGJlIGxvYWRlZCBpbiBpbnNpZ2h0cyBjb250ZXh0XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuaW1wb3J0IENhcmRFeHRlbnNpb24gZnJvbSBcInNhcC9pbnNpZ2h0cy9DYXJkRXh0ZW5zaW9uXCI7XG5pbXBvcnQgdmFsdWVGb3JtYXR0ZXJzIGZyb20gXCIuL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcblxuY2xhc3MgSW5zaWdodHNGb3JtYXR0ZXJzIGV4dGVuZHMgQ2FyZEV4dGVuc2lvbiB7XG5cdHB1YmxpYyBpbml0KCk6IHZvaWQge1xuXHRcdHN1cGVyLmluaXQuYXBwbHkodGhpcyk7XG5cblx0XHR0aGlzLmFkZEZvcm1hdHRlcnMoXCJzYXBmZVwiLCB7XG5cdFx0XHRmb3JtYXRXaXRoQnJhY2tldHM6IHZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoQnJhY2tldHMsXG5cdFx0XHRmb3JtYXRUaXRsZTogdmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFRpdGxlXG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSW5zaWdodHNGb3JtYXR0ZXJzO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7TUFLTUEsa0JBQWtCO0lBQUE7SUFBQTtNQUFBO0lBQUE7SUFBQTtJQUFBLE9BQ2hCQyxJQUFJLEdBQVgsZ0JBQW9CO01BQ25CLHlCQUFNQSxJQUFJLENBQUNDLEtBQUssQ0FBQyxJQUFJLENBQUM7TUFFdEIsSUFBSSxDQUFDQyxhQUFhLENBQUMsT0FBTyxFQUFFO1FBQzNCQyxrQkFBa0IsRUFBRUMsZUFBZSxDQUFDRCxrQkFBa0I7UUFDdERFLFdBQVcsRUFBRUQsZUFBZSxDQUFDQztNQUM5QixDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUE7RUFBQSxFQVIrQkMsYUFBYTtFQUFBLE9BVy9CUCxrQkFBa0I7QUFBQSJ9
29
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJbnNpZ2h0c0Zvcm1hdHRlcnMiLCJfQ2FyZEV4dGVuc2lvbiIsIl9pbmhlcml0c0xvb3NlIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJpbml0IiwiYWRkRm9ybWF0dGVycyIsImZvcm1hdFdpdGhCcmFja2V0cyIsInZhbHVlRm9ybWF0dGVycyIsImZvcm1hdFRpdGxlIiwiQ2FyZEV4dGVuc2lvbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSW5zaWdodHNGb3JtYXR0ZXJzRXh0ZW5zaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgaW1wb3J0IGlzIGZpbmUgYXMgdGhpcyBmaWxlIHdpbGwgb25seSBiZSBsb2FkZWQgaW4gaW5zaWdodHMgY29udGV4dFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXN0cmljdGVkLWltcG9ydHNcbmltcG9ydCBDYXJkRXh0ZW5zaW9uIGZyb20gXCJzYXAvaW5zaWdodHMvQ2FyZEV4dGVuc2lvblwiO1xuaW1wb3J0IHZhbHVlRm9ybWF0dGVycyBmcm9tIFwiLi9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5cbmNsYXNzIEluc2lnaHRzRm9ybWF0dGVycyBleHRlbmRzIENhcmRFeHRlbnNpb24ge1xuXHRwdWJsaWMgaW5pdCgpOiB2b2lkIHtcblx0XHRzdXBlci5pbml0LmFwcGx5KHRoaXMpO1xuXG5cdFx0dGhpcy5hZGRGb3JtYXR0ZXJzKFwic2FwZmVcIiwge1xuXHRcdFx0Zm9ybWF0V2l0aEJyYWNrZXRzOiB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzLFxuXHRcdFx0Zm9ybWF0VGl0bGU6IHZhbHVlRm9ybWF0dGVycy5mb3JtYXRUaXRsZVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEluc2lnaHRzRm9ybWF0dGVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0VBQUE7RUFDQTtFQUFBLElBSU1BLGtCQUFrQiwwQkFBQUMsY0FBQTtJQUFBQyxjQUFBLENBQUFGLGtCQUFBLEVBQUFDLGNBQUE7SUFBQSxTQUFBRCxtQkFBQTtNQUFBLE9BQUFDLGNBQUEsQ0FBQUUsS0FBQSxPQUFBQyxTQUFBO0lBQUE7SUFBQSxJQUFBQyxNQUFBLEdBQUFMLGtCQUFBLENBQUFNLFNBQUE7SUFBQUQsTUFBQSxDQUNoQkUsSUFBSSxHQUFYLFNBQUFBLEtBQUEsRUFBb0I7TUFDbkJOLGNBQUEsQ0FBQUssU0FBQSxDQUFNQyxJQUFJLENBQUNKLEtBQUssQ0FBQyxJQUFJLENBQUM7TUFFdEIsSUFBSSxDQUFDSyxhQUFhLENBQUMsT0FBTyxFQUFFO1FBQzNCQyxrQkFBa0IsRUFBRUMsZUFBZSxDQUFDRCxrQkFBa0I7UUFDdERFLFdBQVcsRUFBRUQsZUFBZSxDQUFDQztNQUM5QixDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUEsT0FBQVgsa0JBQUE7RUFBQSxFQVIrQlksYUFBYTtFQUFBLE9BVy9CWixrQkFBa0I7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==