@sapui5/sap.fe.core 1.102.3 → 1.105.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 (359) hide show
  1. package/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +120 -0
  4. package/src/sap/fe/core/ActionRuntime.ts +108 -0
  5. package/src/sap/fe/core/AppComponent.js +81 -35
  6. package/src/sap/fe/core/AppComponent.ts +68 -44
  7. package/src/sap/fe/core/AppStateHandler.js +82 -70
  8. package/src/sap/fe/core/AppStateHandler.ts +32 -37
  9. package/src/sap/fe/core/BaseController.js +12 -10
  10. package/src/sap/fe/core/BaseController.ts +15 -13
  11. package/src/sap/fe/core/CommonUtils.js +291 -218
  12. package/src/sap/fe/core/CommonUtils.ts +315 -251
  13. package/src/sap/fe/core/ExtensionAPI.js +25 -28
  14. package/src/sap/fe/core/ExtensionAPI.ts +36 -38
  15. package/src/sap/fe/core/PageController.js +5 -5
  16. package/src/sap/fe/core/PageController.ts +4 -5
  17. package/src/sap/fe/core/TemplateComponent.js +21 -10
  18. package/src/sap/fe/core/TemplateComponent.ts +9 -6
  19. package/src/sap/fe/core/TemplateModel.js +2 -2
  20. package/src/sap/fe/core/TemplateModel.ts +1 -1
  21. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
  22. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +8 -2
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +197 -43
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +164 -24
  25. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
  26. package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
  27. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -230
  28. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +275 -128
  29. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
  30. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
  31. package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
  32. package/src/sap/fe/core/controllerextensions/EditFlow.js +761 -700
  33. package/src/sap/fe/core/controllerextensions/EditFlow.ts +478 -514
  34. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +10 -10
  35. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
  36. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +104 -75
  37. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +71 -79
  38. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +68 -68
  39. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
  40. package/src/sap/fe/core/controllerextensions/InternalRouting.js +162 -102
  41. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +177 -121
  42. package/src/sap/fe/core/controllerextensions/KPIManagement.js +67 -69
  43. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
  44. package/src/sap/fe/core/controllerextensions/MassEdit.js +10 -10
  45. package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
  46. package/src/sap/fe/core/controllerextensions/MessageHandler.js +21 -13
  47. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
  48. package/src/sap/fe/core/controllerextensions/PageReady.js +98 -26
  49. package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
  50. package/src/sap/fe/core/controllerextensions/Paginator.js +31 -32
  51. package/src/sap/fe/core/controllerextensions/Paginator.ts +33 -34
  52. package/src/sap/fe/core/controllerextensions/Placeholder.js +5 -7
  53. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  54. package/src/sap/fe/core/controllerextensions/Routing.js +11 -12
  55. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  56. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  57. package/src/sap/fe/core/controllerextensions/Share.js +171 -140
  58. package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
  59. package/src/sap/fe/core/controllerextensions/SideEffects.js +47 -51
  60. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
  61. package/src/sap/fe/core/controllerextensions/ViewState.js +201 -132
  62. package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
  63. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
  64. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
  65. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +13 -12
  66. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
  67. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +13 -12
  68. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +15 -15
  69. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -18
  70. package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +60 -28
  71. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +29 -21
  72. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1424 -940
  73. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +799 -836
  74. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +410 -377
  75. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +275 -358
  76. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
  77. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
  78. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +752 -579
  79. package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +631 -599
  80. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +92 -74
  81. package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +49 -52
  82. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +78 -41
  83. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +110 -84
  84. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +69 -81
  85. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +64 -73
  86. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +18 -2
  87. package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
  88. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +25 -24
  89. package/src/sap/fe/core/controls/Any.js +9 -5
  90. package/src/sap/fe/core/controls/Any.ts +10 -4
  91. package/src/sap/fe/core/controls/CommandExecution.js +12 -26
  92. package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
  93. package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -3
  94. package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
  95. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +26 -26
  96. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
  97. package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -3
  98. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
  99. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
  100. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
  101. package/src/sap/fe/core/controls/FieldWrapper.js +3 -3
  102. package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
  103. package/src/sap/fe/core/controls/FileWrapper.js +9 -4
  104. package/src/sap/fe/core/controls/FileWrapper.ts +16 -12
  105. package/src/sap/fe/core/controls/FilterBar.js +7 -3
  106. package/src/sap/fe/core/controls/FilterBar.ts +13 -9
  107. package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
  108. package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
  109. package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
  110. package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
  111. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
  112. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +44 -19
  113. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
  114. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +17 -13
  115. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
  116. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +4 -4
  117. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
  118. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
  119. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
  120. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
  121. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
  122. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
  123. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
  124. package/src/sap/fe/core/converters/ConverterContext.js +48 -34
  125. package/src/sap/fe/core/converters/ConverterContext.ts +81 -67
  126. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  127. package/src/sap/fe/core/converters/ManifestSettings.ts +18 -15
  128. package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
  129. package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
  130. package/src/sap/fe/core/converters/MetaModelConverter.js +74 -40
  131. package/src/sap/fe/core/converters/MetaModelConverter.ts +176 -140
  132. package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
  133. package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
  134. package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
  135. package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
  136. package/src/sap/fe/core/converters/common/AnnotationConverter.js +1956 -1494
  137. package/src/sap/fe/core/converters/controls/Common/Action.js +78 -51
  138. package/src/sap/fe/core/converters/controls/Common/Action.ts +87 -52
  139. package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -16
  140. package/src/sap/fe/core/converters/controls/Common/Chart.ts +42 -43
  141. package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
  142. package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
  143. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +65 -29
  144. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +93 -62
  145. package/src/sap/fe/core/converters/controls/Common/Form.js +31 -31
  146. package/src/sap/fe/core/converters/controls/Common/Form.ts +46 -57
  147. package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
  148. package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
  149. package/src/sap/fe/core/converters/controls/Common/Table.js +251 -264
  150. package/src/sap/fe/core/converters/controls/Common/Table.ts +344 -370
  151. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
  152. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +147 -144
  153. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +89 -59
  154. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +118 -71
  155. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
  156. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
  157. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
  158. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
  159. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +131 -95
  160. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +123 -87
  161. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +98 -87
  162. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +121 -117
  163. package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
  164. package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
  165. package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
  166. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
  167. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +8 -6
  168. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +18 -10
  169. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +136 -0
  170. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +139 -0
  171. package/src/sap/fe/core/converters/helpers/ID.js +48 -46
  172. package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
  173. package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
  174. package/src/sap/fe/core/converters/helpers/Key.js +7 -7
  175. package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
  176. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  177. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
  178. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
  179. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
  180. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +53 -75
  181. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +59 -90
  182. package/src/sap/fe/core/converters/templates/ListReportConverter.js +58 -57
  183. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +93 -86
  184. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +58 -44
  185. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +87 -80
  186. package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
  187. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
  188. package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
  189. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
  190. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
  191. package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
  192. package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
  193. package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
  194. package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
  195. package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
  196. package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
  197. package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
  198. package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
  199. package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
  200. package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
  201. package/src/sap/fe/core/fpm/Component.js +33 -7
  202. package/src/sap/fe/core/fpm/Component.ts +14 -0
  203. package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
  204. package/src/sap/fe/core/helpers/AppStartupHelper.js +19 -18
  205. package/src/sap/fe/core/helpers/AppStartupHelper.ts +41 -43
  206. package/src/sap/fe/core/helpers/BindingToolkit.js +1836 -0
  207. package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +397 -270
  208. package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
  209. package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
  210. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
  211. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
  212. package/src/sap/fe/core/helpers/EditState.js +1 -6
  213. package/src/sap/fe/core/helpers/EditState.ts +5 -10
  214. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
  215. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
  216. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  217. package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
  218. package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
  219. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
  220. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
  221. package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
  222. package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
  223. package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
  224. package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
  225. package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
  226. package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
  227. package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
  228. package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
  229. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  230. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
  231. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  232. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
  233. package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
  234. package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
  235. package/src/sap/fe/core/helpers/Synchronization.js +1 -1
  236. package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
  237. package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
  238. package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
  239. package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
  240. package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
  241. package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
  242. package/src/sap/fe/core/jsx-runtime/jsx-control.js +110 -0
  243. package/src/sap/fe/core/jsx-runtime/jsx-control.ts +92 -0
  244. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
  245. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
  246. package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
  247. package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
  248. package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
  249. package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
  250. package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
  251. package/src/sap/fe/core/library.js +42 -3
  252. package/src/sap/fe/core/library.support.js +1 -1
  253. package/src/sap/fe/core/library.ts +38 -0
  254. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
  255. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
  256. package/src/sap/fe/core/messagebundle.properties +39 -67
  257. package/src/sap/fe/core/messagebundle_ar.properties +27 -44
  258. package/src/sap/fe/core/messagebundle_bg.properties +27 -44
  259. package/src/sap/fe/core/messagebundle_ca.properties +27 -44
  260. package/src/sap/fe/core/messagebundle_cs.properties +27 -44
  261. package/src/sap/fe/core/messagebundle_cy.properties +26 -43
  262. package/src/sap/fe/core/messagebundle_da.properties +27 -44
  263. package/src/sap/fe/core/messagebundle_de.properties +25 -42
  264. package/src/sap/fe/core/messagebundle_el.properties +28 -45
  265. package/src/sap/fe/core/messagebundle_en.properties +27 -44
  266. package/src/sap/fe/core/messagebundle_en_GB.properties +27 -44
  267. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -42
  268. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +26 -40
  269. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +25 -42
  270. package/src/sap/fe/core/messagebundle_es.properties +27 -44
  271. package/src/sap/fe/core/messagebundle_es_MX.properties +27 -44
  272. package/src/sap/fe/core/messagebundle_et.properties +27 -44
  273. package/src/sap/fe/core/messagebundle_fi.properties +27 -44
  274. package/src/sap/fe/core/messagebundle_fr.properties +26 -43
  275. package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -42
  276. package/src/sap/fe/core/messagebundle_hi.properties +27 -44
  277. package/src/sap/fe/core/messagebundle_hr.properties +27 -44
  278. package/src/sap/fe/core/messagebundle_hu.properties +27 -44
  279. package/src/sap/fe/core/messagebundle_id.properties +27 -44
  280. package/src/sap/fe/core/messagebundle_it.properties +43 -60
  281. package/src/sap/fe/core/messagebundle_iw.properties +27 -44
  282. package/src/sap/fe/core/messagebundle_ja.properties +27 -44
  283. package/src/sap/fe/core/messagebundle_kk.properties +27 -44
  284. package/src/sap/fe/core/messagebundle_ko.properties +30 -47
  285. package/src/sap/fe/core/messagebundle_lt.properties +27 -44
  286. package/src/sap/fe/core/messagebundle_lv.properties +27 -44
  287. package/src/sap/fe/core/messagebundle_ms.properties +27 -44
  288. package/src/sap/fe/core/messagebundle_nl.properties +29 -46
  289. package/src/sap/fe/core/messagebundle_no.properties +27 -44
  290. package/src/sap/fe/core/messagebundle_pl.properties +28 -45
  291. package/src/sap/fe/core/messagebundle_pt.properties +28 -45
  292. package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -44
  293. package/src/sap/fe/core/messagebundle_ro.properties +27 -44
  294. package/src/sap/fe/core/messagebundle_ru.properties +27 -44
  295. package/src/sap/fe/core/messagebundle_sh.properties +27 -44
  296. package/src/sap/fe/core/messagebundle_sk.properties +27 -44
  297. package/src/sap/fe/core/messagebundle_sl.properties +27 -44
  298. package/src/sap/fe/core/messagebundle_sv.properties +27 -44
  299. package/src/sap/fe/core/messagebundle_th.properties +25 -42
  300. package/src/sap/fe/core/messagebundle_tr.properties +27 -44
  301. package/src/sap/fe/core/messagebundle_uk.properties +27 -44
  302. package/src/sap/fe/core/messagebundle_vi.properties +27 -44
  303. package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -44
  304. package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -44
  305. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +3 -3
  306. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
  307. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +103 -75
  308. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +72 -73
  309. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
  310. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
  311. package/src/sap/fe/core/services/NavigationServiceFactory.js +62 -50
  312. package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
  313. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +3 -3
  314. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
  315. package/src/sap/fe/core/services/RoutingServiceFactory.js +56 -56
  316. package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
  317. package/src/sap/fe/core/services/ShellServicesFactory.js +93 -77
  318. package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
  319. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +64 -64
  320. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
  321. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +232 -200
  322. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +145 -142
  323. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
  324. package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
  325. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
  326. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
  327. package/src/sap/fe/core/support/CommonHelper.js +3 -2
  328. package/src/sap/fe/core/support/CommonHelper.ts +9 -13
  329. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  330. package/src/sap/fe/core/support/Diagnostics.ts +5 -5
  331. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
  332. package/src/sap/fe/core/templating/CommonFormatters.js +85 -0
  333. package/src/sap/fe/core/templating/CommonFormatters.ts +90 -0
  334. package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
  335. package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
  336. package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
  337. package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
  338. package/src/sap/fe/core/templating/DataModelPathHelper.js +23 -15
  339. package/src/sap/fe/core/templating/DataModelPathHelper.ts +47 -34
  340. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  341. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
  342. package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
  343. package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
  344. package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
  345. package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
  346. package/src/sap/fe/core/templating/FilterHelper.js +18 -17
  347. package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
  348. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  349. package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
  350. package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
  351. package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
  352. package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
  353. package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
  354. package/src/sap/fe/core/templating/UIFormatters.js +152 -95
  355. package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
  356. package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
  357. package/src/sap/fe/core/type/Email.js +3 -3
  358. package/src/sap/fe/core/type/Email.ts +2 -2
  359. package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
@@ -1,19 +1,21 @@
1
- import * as PropertyHelper from "./PropertyHelper";
2
- import { getConverterContext, MetaModelContext, ComputedAnnotationInterface } from "./UIFormatters";
3
- import { Property } from "@sap-ux/vocabularies-types/dist/Converter";
1
+ import type { Property } from "@sap-ux/vocabularies-types";
4
2
  import { getInvolvedDataModelObjects } from "sap/fe/core/converters/MetaModelConverter";
5
- import { DataModelObjectPath, enhanceDataModelPath, getTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
3
+ import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
4
+ import { enhanceDataModelPath, getTargetObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
5
+ import * as PropertyHelper from "./PropertyHelper";
6
+ import type { ComputedAnnotationInterface, MetaModelContext } from "./UIFormatters";
7
+ import { getConverterContext } from "./UIFormatters";
6
8
 
7
- export const getProperty = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): Property {
9
+ export const getProperty = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): Property {
8
10
  const sPath = oInterface.context.getPath();
9
11
  if (!oContext) {
10
- throw new Error("Unresolved context path " + sPath);
12
+ throw new Error(`Unresolved context path ${sPath}`);
11
13
  }
12
14
  let isPath = false;
13
15
  if (typeof oContext === "object" && oContext.hasOwnProperty("$Path")) {
14
16
  isPath = true;
15
17
  } else if (typeof oContext === "object" && oContext.hasOwnProperty("$kind") && oContext.$kind !== "Property") {
16
- throw new Error("Context does not resolve to a Property object but to a " + oContext.$kind);
18
+ throw new Error(`Context does not resolve to a Property object but to a ${oContext.$kind}`);
17
19
  }
18
20
  let oConverterContext = getConverterContext(oContext, oInterface) as Property;
19
21
  if (isPath) {
@@ -22,16 +24,16 @@ export const getProperty = function(oContext: MetaModelContext, oInterface: Comp
22
24
  return oConverterContext;
23
25
  };
24
26
 
25
- export const getPropertyObjectPath = function(
27
+ export const getPropertyObjectPath = function (
26
28
  oContext: MetaModelContext | string,
27
29
  oInterface: ComputedAnnotationInterface
28
30
  ): DataModelObjectPath {
29
31
  const sPath = oInterface.context.getPath();
30
32
  if (!oContext) {
31
- throw new Error("Unresolved context path " + sPath);
33
+ throw new Error(`Unresolved context path ${sPath}`);
32
34
  }
33
35
  if (typeof oContext === "object" && oContext.hasOwnProperty("$kind") && oContext.$kind !== "Property") {
34
- throw new Error("Context does not resolve to a Property object but to a " + oContext.$kind);
36
+ throw new Error(`Context does not resolve to a Property object but to a ${oContext.$kind}`);
35
37
  }
36
38
  let involvedDataModelObjects = getInvolvedDataModelObjects(oInterface.context);
37
39
  if (involvedDataModelObjects.targetObject && involvedDataModelObjects.targetObject.type === "Path") {
@@ -40,47 +42,47 @@ export const getPropertyObjectPath = function(
40
42
  return involvedDataModelObjects;
41
43
  };
42
44
 
43
- export const isKey = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
45
+ export const isKey = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
44
46
  const oProperty: Property = getProperty(oContext, oInterface);
45
47
  return PropertyHelper.isKey(oProperty);
46
48
  };
47
49
 
48
- export const hasValueHelp = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
50
+ export const hasValueHelp = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
49
51
  const oProperty: Property = getProperty(oContext, oInterface);
50
52
  return PropertyHelper.hasValueHelp(oProperty);
51
53
  };
52
54
 
53
- export const hasDateType = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
55
+ export const hasDateType = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
54
56
  const oProperty: Property = getProperty(oContext, oInterface);
55
57
  return PropertyHelper.hasDateType(oProperty);
56
58
  };
57
59
 
58
- export const hasValueHelpWithFixedValues = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
60
+ export const hasValueHelpWithFixedValues = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
59
61
  const oProperty: Property = getProperty(oContext, oInterface);
60
62
  return PropertyHelper.hasValueHelpWithFixedValues(oProperty);
61
63
  };
62
64
 
63
- export const hasUnitOrCurrency = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
65
+ export const hasUnitOrCurrency = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): boolean {
64
66
  const oProperty: Property = getProperty(oContext, oInterface);
65
67
  return PropertyHelper.hasCurrency(oProperty) || PropertyHelper.hasUnit(oProperty);
66
68
  };
67
69
 
68
- export const getName = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
70
+ export const getName = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
69
71
  const oProperty: Property = getProperty(oContext, oInterface);
70
72
  return oProperty.name;
71
73
  };
72
74
 
73
- export const getLabel = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
75
+ export const getLabel = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
74
76
  const oProperty: Property = getProperty(oContext, oInterface);
75
77
  return PropertyHelper.getLabel(oProperty);
76
78
  };
77
79
 
78
- export const getPropertyPath = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
80
+ export const getPropertyPath = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
79
81
  const propertyPath = getPropertyObjectPath(oContext, oInterface);
80
82
  return getTargetObjectPath(propertyPath);
81
83
  };
82
84
 
83
- export const getRelativePropertyPath = function(oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
85
+ export const getRelativePropertyPath = function (oContext: MetaModelContext, oInterface: ComputedAnnotationInterface): string {
84
86
  const propertyPath = getPropertyObjectPath(oContext, oInterface);
85
87
  return getTargetObjectPath(propertyPath, true);
86
88
  };
@@ -10,8 +10,8 @@ sap.ui.define([], function () {
10
10
  /**
11
11
  * Identify if the given property passed is a "Property" (has a _type).
12
12
  *
13
- * @param {Property} property A target property to evaluate
14
- * @returns {boolean} Validate that property is a Property
13
+ * @param property A target property to evaluate
14
+ * @returns Validate that property is a Property
15
15
  */
16
16
  function isProperty(property) {
17
17
  return property && property.hasOwnProperty("_type") && property._type === "Property";
@@ -19,8 +19,8 @@ sap.ui.define([], function () {
19
19
  /**
20
20
  * Check whether the property has the Core.Computed annotation or not.
21
21
  *
22
- * @param {Property} oProperty The target property
23
- * @returns {boolean} `true` if the property is computed
22
+ * @param oProperty The target property
23
+ * @returns `true` if the property is computed
24
24
  */
25
25
 
26
26
 
@@ -34,8 +34,8 @@ sap.ui.define([], function () {
34
34
  /**
35
35
  * Check whether the property has the Core.Immutable annotation or not.
36
36
  *
37
- * @param {Property} oProperty The target property
38
- * @returns {boolean} `true` if it's immutable
37
+ * @param oProperty The target property
38
+ * @returns `true` if it's immutable
39
39
  */
40
40
 
41
41
 
@@ -49,8 +49,8 @@ sap.ui.define([], function () {
49
49
  /**
50
50
  * Check whether the property is a key or not.
51
51
  *
52
- * @param {Property} oProperty The target property
53
- * @returns {boolean} `true` if it's a key
52
+ * @param oProperty The target property
53
+ * @returns `true` if it's a key
54
54
  */
55
55
 
56
56
 
@@ -90,8 +90,8 @@ sap.ui.define([], function () {
90
90
  /**
91
91
  * Check whether the property has a semantic object defined or not.
92
92
  *
93
- * @param {Property} oProperty The target property
94
- * @returns {boolean} `true` if it has a semantic object
93
+ * @param oProperty The target property
94
+ * @returns `true` if it has a semantic object
95
95
  */
96
96
 
97
97
 
@@ -123,8 +123,8 @@ sap.ui.define([], function () {
123
123
  /**
124
124
  * Retrieves the timezone property associated to the property, if applicable.
125
125
  *
126
- * @param {Property} oProperty The target property
127
- * @returns {Property | undefined} The timezone property, if it exists
126
+ * @param oProperty The target property
127
+ * @returns The timezone property, if it exists
128
128
  */
129
129
 
130
130
 
@@ -138,8 +138,8 @@ sap.ui.define([], function () {
138
138
  /**
139
139
  * Retrieves the unit property associated to the property, if applicable.
140
140
  *
141
- * @param {Property} oProperty The target property
142
- * @returns {Property | undefined} The unit property, if it exists
141
+ * @param oProperty The target property
142
+ * @returns The unit property, if it exists
143
143
  */
144
144
 
145
145
 
@@ -161,8 +161,8 @@ sap.ui.define([], function () {
161
161
  /**
162
162
  * Retrieves the associated currency property for that property if it exists.
163
163
  *
164
- * @param {Property} oProperty The target property
165
- * @returns {Property | undefined} The unit property, if it exists
164
+ * @param oProperty The target property
165
+ * @returns The unit property, if it exists
166
166
  */
167
167
 
168
168
 
@@ -184,8 +184,8 @@ sap.ui.define([], function () {
184
184
  /**
185
185
  * Retrieves the Common.Text property path if it exists.
186
186
  *
187
- * @param {Property} oProperty The target property
188
- * @returns {string | undefined} The Common.Text property path or undefined if it does not exist
187
+ * @param oProperty The target property
188
+ * @returns The Common.Text property path or undefined if it does not exist
189
189
  */
190
190
 
191
191
 
@@ -215,8 +215,8 @@ sap.ui.define([], function () {
215
215
  /**
216
216
  * Check whether the property has a value help annotation defined or not.
217
217
  *
218
- * @param {Property} oProperty The target property
219
- * @returns {boolean} `true` if it has a value help
218
+ * @param oProperty The target property
219
+ * @returns `true` if it has a value help
220
220
  */
221
221
 
222
222
 
@@ -230,8 +230,8 @@ sap.ui.define([], function () {
230
230
  /**
231
231
  * Check whether the property has a value help with fixed value annotation defined or not.
232
232
  *
233
- * @param {Property} oProperty The target property
234
- * @returns {boolean} `true` if it has a value help
233
+ * @param oProperty The target property
234
+ * @returns `true` if it has a value help
235
235
  */
236
236
 
237
237
 
@@ -245,8 +245,8 @@ sap.ui.define([], function () {
245
245
  /**
246
246
  * Check whether the property has a value help for validation annotation defined or not.
247
247
  *
248
- * @param {Property} oProperty The target property
249
- * @returns {boolean} `true` if it has a value help
248
+ * @param oProperty The target property
249
+ * @returns `true` if it has a value help
250
250
  */
251
251
 
252
252
 
@@ -337,4 +337,4 @@ sap.ui.define([], function () {
337
337
  _exports.hasStaticPercentUnit = hasStaticPercentUnit;
338
338
  return _exports;
339
339
  }, false);
340
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb3BlcnR5SGVscGVyLnRzIl0sIm5hbWVzIjpbImlzUHJvcGVydHkiLCJwcm9wZXJ0eSIsImhhc093blByb3BlcnR5IiwiX3R5cGUiLCJpc0NvbXB1dGVkIiwib1Byb3BlcnR5IiwiYW5ub3RhdGlvbnMiLCJDb3JlIiwiQ29tcHV0ZWQiLCJ2YWx1ZU9mIiwiaXNJbW11dGFibGUiLCJJbW11dGFibGUiLCJpc0tleSIsImhhc0RhdGVUeXBlIiwiaW5kZXhPZiIsInR5cGUiLCJnZXRMYWJlbCIsIkNvbW1vbiIsIkxhYmVsIiwidG9TdHJpbmciLCJoYXNTZW1hbnRpY09iamVjdCIsIlNlbWFudGljT2JqZWN0IiwiaXNQYXRoRXhwcmVzc2lvbiIsImV4cHJlc3Npb24iLCJ1bmRlZmluZWQiLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCJpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiIsImdldEFzc29jaWF0ZWRUaW1lem9uZVByb3BlcnR5IiwiVGltZXpvbmUiLCIkdGFyZ2V0IiwiZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eSIsIk1lYXN1cmVzIiwiVW5pdCIsImdldEFzc29jaWF0ZWRVbml0UHJvcGVydHlQYXRoIiwicGF0aCIsImdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiSVNPQ3VycmVuY3kiLCJnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eVBhdGgiLCJnZXRBc3NvY2lhdGVkVGV4dFByb3BlcnR5UGF0aCIsIlRleHQiLCJnZXRUYXJnZXRWYWx1ZU9uRGF0YVBvaW50Iiwic1RhcmdldFZhbHVlIiwiVUkiLCJEYXRhRmllbGREZWZhdWx0IiwiVGFyZ2V0IiwiVGFyZ2V0VmFsdWUiLCJoYXNWYWx1ZUhlbHAiLCJWYWx1ZUxpc3QiLCJWYWx1ZUxpc3RSZWZlcmVuY2VzIiwiVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzIiwiVmFsdWVMaXN0TWFwcGluZyIsImhhc1ZhbHVlSGVscFdpdGhGaXhlZFZhbHVlcyIsImhhc1ZhbHVlTGlzdEZvclZhbGlkYXRpb24iLCJWYWx1ZUxpc3RGb3JWYWxpZGF0aW9uIiwiaGFzVGltZXpvbmUiLCJpc1VuaXQiLCJJc1VuaXQiLCJoYXNVbml0IiwiaXNDdXJyZW5jeSIsIklzQ3VycmVuY3kiLCJoYXNDdXJyZW5jeSIsImhhc1N0YXRpY1BlcmNlbnRVbml0Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxXQUFTQSxVQUFULENBQW9CQyxRQUFwQixFQUF5RDtBQUMvRCxXQUFPQSxRQUFRLElBQUtBLFFBQUQsQ0FBdUJDLGNBQXZCLENBQXNDLE9BQXRDLENBQVosSUFBK0RELFFBQUQsQ0FBdUJFLEtBQXZCLEtBQWlDLFVBQXRHO0FBQ0E7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBQ08sTUFBTUMsVUFBVSxHQUFHLFVBQVVDLFNBQVYsRUFBd0M7QUFBQTs7QUFDakUsV0FBTyxDQUFDLDJCQUFDQSxTQUFTLENBQUNDLFdBQVgsNEVBQUMsc0JBQXVCQyxJQUF4Qiw2RUFBQyx1QkFBNkJDLFFBQTlCLG1EQUFDLHVCQUF1Q0MsT0FBdkMsRUFBRCxDQUFSO0FBQ0EsR0FGTTtBQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxNQUFNQyxXQUFXLEdBQUcsVUFBVUwsU0FBVixFQUF3QztBQUFBOztBQUNsRSxXQUFPLENBQUMsNEJBQUNBLFNBQVMsQ0FBQ0MsV0FBWCw2RUFBQyx1QkFBdUJDLElBQXhCLDZFQUFDLHVCQUE2QkksU0FBOUIsbURBQUMsdUJBQXdDRixPQUF4QyxFQUFELENBQVI7QUFDQSxHQUZNO0FBSVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUNPLE1BQU1HLEtBQUssR0FBRyxVQUFVUCxTQUFWLEVBQXdDO0FBQzVELFdBQU8sQ0FBQyxDQUFDQSxTQUFTLENBQUNPLEtBQW5CO0FBQ0EsR0FGTTtBQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFDTyxNQUFN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QUFDQTs7Ozs7QUFDTyxNQUFNbUQsV0FBVyxHQUFHLFVBQVV2RCxTQUFWLEVBQXdDO0FBQUE7O0FBQ2xFLFdBQU8sNEJBQUFBLFNBQVMsQ0FBQ0MsV0FBViwrR0FBdUJ5QixRQUF2QixvRkFBaUNLLFdBQWpDLE1BQWlEWixTQUF4RDtBQUNBLEdBRk07Ozs7QUFJQSxNQUFNcUMsb0JBQW9CLEdBQUcsVUFBVXhELFNBQVYsRUFBd0M7QUFBQTs7QUFDM0UsV0FBTyxDQUFBQSxTQUFTLFNBQVQsSUFBQUEsU0FBUyxXQUFULHVDQUFBQSxTQUFTLENBQUVDLFdBQVgsK0dBQXdCeUIsUUFBeEIsK0dBQWtDQyxJQUFsQyxvRkFBd0NiLFFBQXhDLFFBQXVELEdBQTlEO0FBQ0EsR0FGTSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5cbi8qKlxuICogSWRlbnRpZnkgaWYgdGhlIGdpdmVuIHByb3BlcnR5IHBhc3NlZCBpcyBhIFwiUHJvcGVydHlcIiAoaGFzIGEgX3R5cGUpLlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IHByb3BlcnR5IEEgdGFyZ2V0IHByb3BlcnR5IHRvIGV2YWx1YXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVmFsaWRhdGUgdGhhdCBwcm9wZXJ0eSBpcyBhIFByb3BlcnR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5KHByb3BlcnR5OiBhbnkpOiBwcm9wZXJ0eSBpcyBQcm9wZXJ0eSB7XG5cdHJldHVybiBwcm9wZXJ0eSAmJiAocHJvcGVydHkgYXMgUHJvcGVydHkpLmhhc093blByb3BlcnR5KFwiX3R5cGVcIikgJiYgKHByb3BlcnR5IGFzIFByb3BlcnR5KS5fdHlwZSA9PT0gXCJQcm9wZXJ0eVwiO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyB0aGUgQ29yZS5Db21wdXRlZCBhbm5vdGF0aW9uIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0ge1Byb3BlcnR5fSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgY29tcHV0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQ29tcHV0ZWQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvcmU/LkNvbXB1dGVkPy52YWx1ZU9mKCk7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyB0aGUgQ29yZS5JbW11dGFibGUgYW5ub3RhdGlvbiBvciBub3QuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eX0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgaXQncyBpbW11dGFibGVcbiAqL1xuZXhwb3J0IGNvbnN0IGlzSW1tdXRhYmxlID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db3JlPy5JbW11dGFibGU/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgYSBrZXkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIGl0J3MgYSBrZXlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzS2V5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmlzS2V5O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgZGF0ZSB0aW1lIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5XG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaXMgb2YgdHlwZSBkYXRlIC8gZGF0ZXRpbWUgLyBkYXRldGltZW9mZnNldFxuICovXG5leHBvcnQgY29uc3QgaGFzRGF0ZVR5cGUgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gW1wiRWRtLkRhdGVcIiwgXCJFZG0uRGF0ZVRpbWVcIiwgXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIl0uaW5kZXhPZihvUHJvcGVydHkudHlwZSkgIT09IC0xO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgbGFiZWwgYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBsYWJlbCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpIHx8IFwiXCI7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHNlbWFudGljIG9iamVjdCBkZWZpbmVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0ge1Byb3BlcnR5fSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiBpdCBoYXMgYSBzZW1hbnRpYyBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1NlbWFudGljT2JqZWN0ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aEV4cHJlc3Npb24gPSBmdW5jdGlvbiA8VD4oZXhwcmVzc2lvbjogYW55KTogZXhwcmVzc2lvbiBpcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248VD4ge1xuXHRyZXR1cm4gISFleHByZXNzaW9uICYmIGV4cHJlc3Npb24udHlwZSAhPT0gdW5kZWZpbmVkICYmIGV4cHJlc3Npb24udHlwZSA9PT0gXCJQYXRoXCI7XG59O1xuZXhwb3J0IGNvbnN0IGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIDxUPihleHByZXNzaW9uOiBhbnkpOiBleHByZXNzaW9uIGlzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUPiB7XG5cdHJldHVybiAhIWV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi50eXBlICE9PSB1bmRlZmluZWQgJiYgZXhwcmVzc2lvbi50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiO1xufTtcbmV4cG9ydCBjb25zdCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIDxUPihleHByZXNzaW9uOiBhbnkpOiBleHByZXNzaW9uIGlzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUPiB7XG5cdHJldHVybiAhIWV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi50eXBlICE9PSB1bmRlZmluZWQgJiYgZXhwcmVzc2lvbi50eXBlID09PSBcIkFubm90YXRpb25QYXRoXCI7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgdGltZXpvbmUgcHJvcGVydHkgYXNzb2NpYXRlZCB0byB0aGUgcHJvcGVydHksIGlmIGFwcGxpY2FibGUuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eX0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtQcm9wZXJ0eSB8IHVuZGVmaW5lZH0gVGhlIHRpbWV6b25lIHByb3BlcnR5LCBpZiBpdCBleGlzdHNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRUaW1lem9uZVByb3BlcnR5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGltZXpvbmUpXG5cdFx0PyAob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlRpbWV6b25lLiR0YXJnZXQgYXMgdW5rbm93biBhcyBQcm9wZXJ0eSlcblx0XHQ6IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSB1bml0IHByb3BlcnR5IGFzc29jaWF0ZWQgdG8gdGhlIHByb3BlcnR5LCBpZiBhcHBsaWNhYmxlLlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyB7UHJvcGVydHkgfCB1bmRlZmluZWR9IFRoZSB1bml0IHByb3BlcnR5LCBpZiBpdCBleGlzdHNcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IFByb3BlcnR5IHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQpXG5cdFx0PyAob1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdC4kdGFyZ2V0IGFzIHVua25vd24gYXMgUHJvcGVydHkpXG5cdFx0OiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eVBhdGggPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eT8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0KSA/IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQucGF0aCA6IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhc3NvY2lhdGVkIGN1cnJlbmN5IHByb3BlcnR5IGZvciB0aGF0IHByb3BlcnR5IGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge1Byb3BlcnR5fSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMge1Byb3BlcnR5IHwgdW5kZWZpbmVkfSBUaGUgdW5pdCBwcm9wZXJ0eSwgaWYgaXQgZXhpc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogUHJvcGVydHkgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kpXG5cdFx0PyAob1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KVxuXHRcdDogdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5UGF0aCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5KSA/IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5LnBhdGggOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgQ29tbW9uLlRleHQgcHJvcGVydHkgcGF0aCBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eX0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSBDb21tb24uVGV4dCBwcm9wZXJ0eSBwYXRoIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2VzIG5vdCBleGlzdFxuICovXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFRleHRQcm9wZXJ0eVBhdGggPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0KSA/IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0LnBhdGggOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgVGFyZ2V0VmFsdWUgZnJvbSB0aGUgRGF0YVBvaW50LlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSB0aGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFQb2ludFxuICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIFRhcmdldFZhbHVlXG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldFRhcmdldFZhbHVlT25EYXRhUG9pbnQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBzVGFyZ2V0VmFsdWUgPVxuXHRcdG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/LkRhdGFGaWVsZERlZmF1bHQ/LlRhcmdldD8uJHRhcmdldD8uVGFyZ2V0VmFsdWU/LnRvU3RyaW5nKCkgfHwgb1Byb3BlcnR5LlRhcmdldFZhbHVlPy50b1N0cmluZygpO1xuXHRyZXR1cm4gc1RhcmdldFZhbHVlID8gc1RhcmdldFZhbHVlIDogdW5kZWZpbmVkO1xufTtcbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgdmFsdWUgaGVscCBhbm5vdGF0aW9uIGRlZmluZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIGl0IGhhcyBhIHZhbHVlIGhlbHBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1ZhbHVlSGVscCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiAoXG5cdFx0ISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0IHx8XG5cdFx0ISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0UmVmZXJlbmNlcyB8fFxuXHRcdCEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyB8fFxuXHRcdCEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdE1hcHBpbmdcblx0KTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgdmFsdWUgaGVscCB3aXRoIGZpeGVkIHZhbHVlIGFubm90YXRpb24gZGVmaW5lZCBvciBub3QuXG4gKlxuICogQHBhcmFtIHtQcm9wZXJ0eX0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgaXQgaGFzIGEgdmFsdWUgaGVscFxuICovXG5leHBvcnQgY29uc3QgaGFzVmFsdWVIZWxwV2l0aEZpeGVkVmFsdWVzID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgdmFsdWUgaGVscCBmb3IgdmFsaWRhdGlvbiBhbm5vdGF0aW9uIGRlZmluZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSB7UHJvcGVydHl9IG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIGl0IGhhcyBhIHZhbHVlIGhlbHBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1ZhbHVlTGlzdEZvclZhbGlkYXRpb24gPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdEZvclZhbGlkYXRpb24gIT09IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNUaW1lem9uZSA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGltZXpvbmUgIT09IHVuZGVmaW5lZDtcbn07XG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBhIHVuaXQgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBpcyBhIHVuaXRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzVW5pdCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiAhIW9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5Jc1VuaXQ/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHVuaXQgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSB1bml0XG4gKi9cblxuZXhwb3J0IGNvbnN0IGhhc1VuaXQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdCAhPT0gdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgYSBjdXJyZW5jeSBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSBwcm9wZXJ0eSB0byBjaGVja1xuICogQHJldHVybnMgYHRydWVgIGlmIGl0IGlzIGEgY3VycmVuY3lcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQ3VycmVuY3kgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNDdXJyZW5jeT8udmFsdWVPZigpO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgY3VycmVuY3kgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSBjdXJyZW5jeVxuICovXG5leHBvcnQgY29uc3QgaGFzQ3VycmVuY3kgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgIT09IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNTdGF0aWNQZXJjZW50VW5pdCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiBvUHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdD8udG9TdHJpbmcoKSA9PT0gXCIlXCI7XG59O1xuIl19
340
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1Byb3BlcnR5IiwicHJvcGVydHkiLCJoYXNPd25Qcm9wZXJ0eSIsIl90eXBlIiwiaXNDb21wdXRlZCIsIm9Qcm9wZXJ0eSIsImFubm90YXRpb25zIiwiQ29yZSIsIkNvbXB1dGVkIiwidmFsdWVPZiIsImlzSW1tdXRhYmxlIiwiSW1tdXRhYmxlIiwiaXNLZXkiLCJoYXNEYXRlVHlwZSIsImluZGV4T2YiLCJ0eXBlIiwiZ2V0TGFiZWwiLCJDb21tb24iLCJMYWJlbCIsInRvU3RyaW5nIiwiaGFzU2VtYW50aWNPYmplY3QiLCJTZW1hbnRpY09iamVjdCIsImlzUGF0aEV4cHJlc3Npb24iLCJleHByZXNzaW9uIiwidW5kZWZpbmVkIiwiaXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uIiwiaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24iLCJnZXRBc3NvY2lhdGVkVGltZXpvbmVQcm9wZXJ0eSIsIlRpbWV6b25lIiwiJHRhcmdldCIsImdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkiLCJNZWFzdXJlcyIsIlVuaXQiLCJnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5UGF0aCIsInBhdGgiLCJnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSIsIklTT0N1cnJlbmN5IiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHlQYXRoIiwiZ2V0QXNzb2NpYXRlZFRleHRQcm9wZXJ0eVBhdGgiLCJUZXh0IiwiZ2V0VGFyZ2V0VmFsdWVPbkRhdGFQb2ludCIsInNUYXJnZXRWYWx1ZSIsIlVJIiwiRGF0YUZpZWxkRGVmYXVsdCIsIlRhcmdldCIsIlRhcmdldFZhbHVlIiwiaGFzVmFsdWVIZWxwIiwiVmFsdWVMaXN0IiwiVmFsdWVMaXN0UmVmZXJlbmNlcyIsIlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlcyIsIlZhbHVlTGlzdE1hcHBpbmciLCJoYXNWYWx1ZUhlbHBXaXRoRml4ZWRWYWx1ZXMiLCJoYXNWYWx1ZUxpc3RGb3JWYWxpZGF0aW9uIiwiVmFsdWVMaXN0Rm9yVmFsaWRhdGlvbiIsImhhc1RpbWV6b25lIiwiaXNVbml0IiwiSXNVbml0IiwiaGFzVW5pdCIsImlzQ3VycmVuY3kiLCJJc0N1cnJlbmN5IiwiaGFzQ3VycmVuY3kiLCJoYXNTdGF0aWNQZXJjZW50VW5pdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUHJvcGVydHlIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb24sIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5cbi8qKlxuICogSWRlbnRpZnkgaWYgdGhlIGdpdmVuIHByb3BlcnR5IHBhc3NlZCBpcyBhIFwiUHJvcGVydHlcIiAoaGFzIGEgX3R5cGUpLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eSBBIHRhcmdldCBwcm9wZXJ0eSB0byBldmFsdWF0ZVxuICogQHJldHVybnMgVmFsaWRhdGUgdGhhdCBwcm9wZXJ0eSBpcyBhIFByb3BlcnR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5KHByb3BlcnR5OiBhbnkpOiBwcm9wZXJ0eSBpcyBQcm9wZXJ0eSB7XG5cdHJldHVybiBwcm9wZXJ0eSAmJiAocHJvcGVydHkgYXMgUHJvcGVydHkpLmhhc093blByb3BlcnR5KFwiX3R5cGVcIikgJiYgKHByb3BlcnR5IGFzIFByb3BlcnR5KS5fdHlwZSA9PT0gXCJQcm9wZXJ0eVwiO1xufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyB0aGUgQ29yZS5Db21wdXRlZCBhbm5vdGF0aW9uIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgY29tcHV0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQ29tcHV0ZWQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvcmU/LkNvbXB1dGVkPy52YWx1ZU9mKCk7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyB0aGUgQ29yZS5JbW11dGFibGUgYW5ub3RhdGlvbiBvciBub3QuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQncyBpbW11dGFibGVcbiAqL1xuZXhwb3J0IGNvbnN0IGlzSW1tdXRhYmxlID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db3JlPy5JbW11dGFibGU/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgYSBrZXkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMgYHRydWVgIGlmIGl0J3MgYSBrZXlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzS2V5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmlzS2V5O1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaGFzIGEgZGF0ZSB0aW1lIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5XG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaXMgb2YgdHlwZSBkYXRlIC8gZGF0ZXRpbWUgLyBkYXRldGltZW9mZnNldFxuICovXG5leHBvcnQgY29uc3QgaGFzRGF0ZVR5cGUgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gW1wiRWRtLkRhdGVcIiwgXCJFZG0uRGF0ZVRpbWVcIiwgXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIl0uaW5kZXhPZihvUHJvcGVydHkudHlwZSkgIT09IC0xO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgbGFiZWwgYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBsYWJlbCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsPy50b1N0cmluZygpIHx8IFwiXCI7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHNlbWFudGljIG9iamVjdCBkZWZpbmVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSBzZW1hbnRpYyBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1NlbWFudGljT2JqZWN0ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aEV4cHJlc3Npb24gPSBmdW5jdGlvbiA8VD4oZXhwcmVzc2lvbjogYW55KTogZXhwcmVzc2lvbiBpcyBQYXRoQW5ub3RhdGlvbkV4cHJlc3Npb248VD4ge1xuXHRyZXR1cm4gISFleHByZXNzaW9uICYmIGV4cHJlc3Npb24udHlwZSAhPT0gdW5kZWZpbmVkICYmIGV4cHJlc3Npb24udHlwZSA9PT0gXCJQYXRoXCI7XG59O1xuZXhwb3J0IGNvbnN0IGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIDxUPihleHByZXNzaW9uOiBhbnkpOiBleHByZXNzaW9uIGlzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUPiB7XG5cdHJldHVybiAhIWV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi50eXBlICE9PSB1bmRlZmluZWQgJiYgZXhwcmVzc2lvbi50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiO1xufTtcbmV4cG9ydCBjb25zdCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIDxUPihleHByZXNzaW9uOiBhbnkpOiBleHByZXNzaW9uIGlzIFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxUPiB7XG5cdHJldHVybiAhIWV4cHJlc3Npb24gJiYgZXhwcmVzc2lvbi50eXBlICE9PSB1bmRlZmluZWQgJiYgZXhwcmVzc2lvbi50eXBlID09PSBcIkFubm90YXRpb25QYXRoXCI7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgdGltZXpvbmUgcHJvcGVydHkgYXNzb2NpYXRlZCB0byB0aGUgcHJvcGVydHksIGlmIGFwcGxpY2FibGUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgdGltZXpvbmUgcHJvcGVydHksIGlmIGl0IGV4aXN0c1xuICovXG5leHBvcnQgY29uc3QgZ2V0QXNzb2NpYXRlZFRpbWV6b25lUHJvcGVydHkgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IFByb3BlcnR5IHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UaW1lem9uZSlcblx0XHQ/IChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGltZXpvbmUuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KVxuXHRcdDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHVuaXQgcHJvcGVydHkgYXNzb2NpYXRlZCB0byB0aGUgcHJvcGVydHksIGlmIGFwcGxpY2FibGUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgdW5pdCBwcm9wZXJ0eSwgaWYgaXQgZXhpc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eT8uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0KVxuXHRcdD8gKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KVxuXHRcdDogdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHlQYXRoID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdCkgPyBvUHJvcGVydHkuYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5Vbml0LnBhdGggOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYXNzb2NpYXRlZCBjdXJyZW5jeSBwcm9wZXJ0eSBmb3IgdGhhdCBwcm9wZXJ0eSBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgdW5pdCBwcm9wZXJ0eSwgaWYgaXQgZXhpc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogUHJvcGVydHkgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHk/LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kpXG5cdFx0PyAob1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kuJHRhcmdldCBhcyB1bmtub3duIGFzIFByb3BlcnR5KVxuXHRcdDogdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5UGF0aCA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5KSA/IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5LnBhdGggOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgQ29tbW9uLlRleHQgcHJvcGVydHkgcGF0aCBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgdGFyZ2V0IHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgQ29tbW9uLlRleHQgcHJvcGVydHkgcGF0aCBvciB1bmRlZmluZWQgaWYgaXQgZG9lcyBub3QgZXhpc3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFzc29jaWF0ZWRUZXh0UHJvcGVydHlQYXRoID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dCkgPyBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dC5wYXRoIDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIFRhcmdldFZhbHVlIGZyb20gdGhlIERhdGFQb2ludC5cbiAqXG4gKiBAcGFyYW0ge1Byb3BlcnR5fSBvUHJvcGVydHkgdGhlIHRhcmdldCBwcm9wZXJ0eSBvciBEYXRhUG9pbnRcbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSBUYXJnZXRWYWx1ZVxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRWYWx1ZU9uRGF0YVBvaW50ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3Qgc1RhcmdldFZhbHVlID1cblx0XHRvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5EYXRhRmllbGREZWZhdWx0Py5UYXJnZXQ/LiR0YXJnZXQ/LlRhcmdldFZhbHVlPy50b1N0cmluZygpIHx8IG9Qcm9wZXJ0eS5UYXJnZXRWYWx1ZT8udG9TdHJpbmcoKTtcblx0cmV0dXJuIHNUYXJnZXRWYWx1ZSA/IHNUYXJnZXRWYWx1ZSA6IHVuZGVmaW5lZDtcbn07XG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHZhbHVlIGhlbHAgYW5ub3RhdGlvbiBkZWZpbmVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSB2YWx1ZSBoZWxwXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNWYWx1ZUhlbHAgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gKFxuXHRcdCEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdCB8fFxuXHRcdCEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlZhbHVlTGlzdFJlZmVyZW5jZXMgfHxcblx0XHQhIW9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMgfHxcblx0XHQhIW9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RNYXBwaW5nXG5cdCk7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHZhbHVlIGhlbHAgd2l0aCBmaXhlZCB2YWx1ZSBhbm5vdGF0aW9uIGRlZmluZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHRhcmdldCBwcm9wZXJ0eVxuICogQHJldHVybnMgYHRydWVgIGlmIGl0IGhhcyBhIHZhbHVlIGhlbHBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1ZhbHVlSGVscFdpdGhGaXhlZFZhbHVlcyA9IGZ1bmN0aW9uIChvUHJvcGVydHk6IFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdHJldHVybiAhIW9Qcm9wZXJ0eT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzPy52YWx1ZU9mKCk7XG59O1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIHZhbHVlIGhlbHAgZm9yIHZhbGlkYXRpb24gYW5ub3RhdGlvbiBkZWZpbmVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1Byb3BlcnR5IFRoZSB0YXJnZXQgcHJvcGVydHlcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBoYXMgYSB2YWx1ZSBoZWxwXG4gKi9cbmV4cG9ydCBjb25zdCBoYXNWYWx1ZUxpc3RGb3JWYWxpZGF0aW9uID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuIG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uPy5WYWx1ZUxpc3RGb3JWYWxpZGF0aW9uICE9PSB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzVGltZXpvbmUgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LlRpbWV6b25lICE9PSB1bmRlZmluZWQ7XG59O1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgcHJvcGVydHkgaXMgYSB1bml0IHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIGNoZWNrXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaXMgYSB1bml0XG4gKi9cbmV4cG9ydCBjb25zdCBpc1VuaXQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gISFvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNVbml0Py52YWx1ZU9mKCk7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBoYXMgYSB1bml0IHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIGNoZWNrXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaGFzIGEgdW5pdFxuICovXG5cbmV4cG9ydCBjb25zdCBoYXNVbml0ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuIG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQgIT09IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIGEgY3VycmVuY3kgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBpcyBhIGN1cnJlbmN5XG4gKi9cbmV4cG9ydCBjb25zdCBpc0N1cnJlbmN5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuICEhb1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tb24/LklzQ3VycmVuY3k/LnZhbHVlT2YoKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3BlcnR5IGhhcyBhIGN1cnJlbmN5IHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSBvUHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIGNoZWNrXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaGFzIGEgY3VycmVuY3lcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0N1cnJlbmN5ID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkpOiBib29sZWFuIHtcblx0cmV0dXJuIG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5ICE9PSB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzU3RhdGljUGVyY2VudFVuaXQgPSBmdW5jdGlvbiAob1Byb3BlcnR5OiBQcm9wZXJ0eSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ/LnRvU3RyaW5nKCkgPT09IFwiJVwiO1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0EsVUFBVCxDQUFvQkMsUUFBcEIsRUFBeUQ7SUFDL0QsT0FBT0EsUUFBUSxJQUFLQSxRQUFELENBQXVCQyxjQUF2QixDQUFzQyxPQUF0QyxDQUFaLElBQStERCxRQUFELENBQXVCRSxLQUF2QixLQUFpQyxVQUF0RztFQUNBO0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLElBQU1DLFVBQVUsR0FBRyxVQUFVQyxTQUFWLEVBQXdDO0lBQUE7O0lBQ2pFLE9BQU8sQ0FBQywyQkFBQ0EsU0FBUyxDQUFDQyxXQUFYLDRFQUFDLHNCQUF1QkMsSUFBeEIsNkVBQUMsdUJBQTZCQyxRQUE5QixtREFBQyx1QkFBdUNDLE9BQXZDLEVBQUQsQ0FBUjtFQUNBLENBRk07RUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTUMsV0FBVyxHQUFHLFVBQVVMLFNBQVYsRUFBd0M7SUFBQTs7SUFDbEUsT0FBTyxDQUFDLDRCQUFDQSxTQUFTLENBQUNDLFdBQVgsNkVBQUMsdUJBQXVCQyxJQUF4Qiw2RUFBQyx1QkFBNkJJLFNBQTlCLG1EQUFDLHVCQUF3Q0YsT0FBeEMsRUFBRCxDQUFSO0VBQ0EsQ0FGTTtFQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7RUFDTyxJQUFNRyxLQUFLLEdBQUcsVUFBVVAsU0FBVixFQUF3QztJQUM1RCxPQUFPLENBQUMsQ0FBQ0EsU0FBUyxDQUFDTyxLQUFuQjtFQUNBLENBRk07RUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTUMsV0FBVyxHQUFHLFVBQVVSLFNBQVYsRUFBd0M7SUFDbEUsT0FBTyxDQUFDLFVBQUQsRUFBYSxjQUFiLEVBQTZCLG9CQUE3QixFQUFtRFMsT0FBbkQsQ0FBMkRULFNBQVMsQ0FBQ1UsSUFBckUsTUFBK0UsQ0FBQyxDQUF2RjtFQUNBLENBRk07RUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTUMsUUFBUSxHQUFHLFVBQVVYLFNBQVYsRUFBdUM7SUFBQTs7SUFDOUQsT0FBTywyQkFBQUEsU0FBUyxDQUFDQyxXQUFWLDRHQUF1QlcsTUFBdkIsNEdBQStCQyxLQUEvQixrRkFBc0NDLFFBQXRDLE9BQW9ELEVBQTNEO0VBQ0EsQ0FGTTtFQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7RUFDTyxJQUFNQyxpQkFBaUIsR0FBRyxVQUFVZixTQUFWLEVBQXdDO0lBQUE7O0lBQ3hFLE9BQU8sQ0FBQyw2QkFBQ0EsU0FBUyxDQUFDQyxXQUFYLCtFQUFDLHdCQUF1QlcsTUFBeEIsb0RBQUMsd0JBQStCSSxjQUFoQyxDQUFSO0VBQ0EsQ0FGTTs7OztFQUlBLElBQU1DLGdCQUFnQixHQUFHLFVBQWFDLFVBQWIsRUFBeUU7SUFDeEcsT0FBTyxDQUFDLENBQUNBLFVBQUYsSUFBZ0JBLFVBQVUsQ0FBQ1IsSUFBWCxLQUFvQlMsU0FBcEMsSUFBaURELFVBQVUsQ0FBQ1IsSUFBWCxLQUFvQixNQUE1RTtFQUNBLENBRk07Ozs7RUFHQSxJQUFNVSx3QkFBd0IsR0FBRyxVQUFhRixVQUFiLEVBQXlFO0lBQ2hILE9BQU8sQ0FBQyxDQUFDQSxVQUFGLElBQWdCQSxVQUFVLENBQUNSLElBQVgsS0FBb0JTLFNBQXBDLElBQWlERCxVQUFVLENBQUNSLElBQVgsS0FBb0IsY0FBNUU7RUFDQSxDQUZNOzs7O0VBR0EsSUFBTVcsMEJBQTBCLEdBQUcsVUFBYUgsVUFBYixFQUF5RTtJQUNsSCxPQUFPLENBQUMsQ0FBQ0EsVUFBRixJQUFnQkEsVUFBVSxDQUFDUixJQUFYLEtBQW9CUyxTQUFwQyxJQUFpREQsVUFBVSxDQUFDUixJQUFYLEtBQW9CLGdCQUE1RTtFQUNBLENBRk07RUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTVksNkJBQTZCLEdBQUcsVUFBVXRCLFNBQVYsRUFBcUQ7SUFBQTs7SUFDakcsT0FBT2lCLGdCQUFnQixDQUFDakIsU0FBRCxhQUFDQSxTQUFELGtEQUFDQSxTQUFTLENBQUVDLFdBQVosdUZBQUMsd0JBQXdCVyxNQUF6Qiw0REFBQyx3QkFBZ0NXLFFBQWpDLENBQWhCLDhCQUNIdkIsU0FBUyxDQUFDQyxXQURQLHVGQUNILHdCQUF1QlcsTUFEcEIsNERBQ0gsd0JBQStCVyxRQUEvQixDQUF3Q0MsT0FEckMsR0FFSkwsU0FGSDtFQUdBLENBSk07RUFNUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTU0seUJBQXlCLEdBQUcsVUFBVXpCLFNBQVYsRUFBcUQ7SUFBQTs7SUFDN0YsT0FBT2lCLGdCQUFnQixDQUFDakIsU0FBRCxhQUFDQSxTQUFELGtEQUFDQSxTQUFTLENBQUVDLFdBQVosdUZBQUMsd0JBQXdCeUIsUUFBekIsNERBQUMsd0JBQWtDQyxJQUFuQyxDQUFoQiw4QkFDSDNCLFNBQVMsQ0FBQ0MsV0FEUCx1RkFDSCx3QkFBdUJ5QixRQURwQiw0REFDSCx3QkFBaUNDLElBQWpDLENBQXNDSCxPQURuQyxHQUVKTCxTQUZIO0VBR0EsQ0FKTTs7OztFQU1BLElBQU1TLDZCQUE2QixHQUFHLFVBQVU1QixTQUFWLEVBQW1EO0lBQUE7O0lBQy9GLE9BQU9pQixnQkFBZ0IsQ0FBQ2pCLFNBQUQsYUFBQ0EsU0FBRCxrREFBQ0EsU0FBUyxDQUFFQyxXQUFaLHVGQUFDLHdCQUF3QnlCLFFBQXpCLDREQUFDLHdCQUFrQ0MsSUFBbkMsQ0FBaEIsOEJBQTJEM0IsU0FBUyxDQUFDQyxXQUFyRSx1RkFBMkQsd0JBQXVCeUIsUUFBbEYsNERBQTJELHdCQUFpQ0MsSUFBakMsQ0FBc0NFLElBQWpHLEdBQXdHVixTQUEvRztFQUNBLENBRk07RUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTVcsNkJBQTZCLEdBQUcsVUFBVTlCLFNBQVYsRUFBcUQ7SUFBQTs7SUFDakcsT0FBT2lCLGdCQUFnQixDQUFDakIsU0FBRCxhQUFDQSxTQUFELGtEQUFDQSxTQUFTLENBQUVDLFdBQVosdUZBQUMsd0JBQXdCeUIsUUFBekIsNERBQUMsd0JBQWtDSyxXQUFuQyxDQUFoQiw4QkFDSC9CLFNBQVMsQ0FBQ0MsV0FEUCx1RkFDSCx3QkFBdUJ5QixRQURwQiw0REFDSCx3QkFBaUNLLFdBQWpDLENBQTZDUCxPQUQxQyxHQUVKTCxTQUZIO0VBR0EsQ0FKTTs7OztFQU1BLElBQU1hLGlDQUFpQyxHQUFHLFVBQVVoQyxTQUFWLEVBQW1EO0lBQUE7O0lBQ25HLE9BQU9pQixnQkFBZ0IsQ0FBQ2pCLFNBQUQsYUFBQ0EsU0FBRCxrREFBQ0EsU0FBUyxDQUFFQyxXQUFaLHVGQUFDLHdCQUF3QnlCLFFBQXpCLDREQUFDLHdCQUFrQ0ssV0FBbkMsQ0FBaEIsOEJBQWtFL0IsU0FBUyxDQUFDQyxXQUE1RSx1RkFBa0Usd0JBQXVCeUIsUUFBekYsNERBQWtFLHdCQUFpQ0ssV0FBakMsQ0FBNkNGLElBQS9HLEdBQXNIVixTQUE3SDtFQUNBLENBRk07RUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTWMsNkJBQTZCLEdBQUcsVUFBVWpDLFNBQVYsRUFBbUQ7SUFBQTs7SUFDL0YsT0FBT2lCLGdCQUFnQiw0QkFBQ2pCLFNBQVMsQ0FBQ0MsV0FBWCx1RkFBQyx3QkFBdUJXLE1BQXhCLDREQUFDLHdCQUErQnNCLElBQWhDLENBQWhCLDhCQUF3RGxDLFNBQVMsQ0FBQ0MsV0FBbEUsdUZBQXdELHdCQUF1QlcsTUFBL0UsNERBQXdELHdCQUErQnNCLElBQS9CLENBQW9DTCxJQUE1RixHQUFtR1YsU0FBMUc7RUFDQSxDQUZNO0VBSVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUVPLElBQU1nQix5QkFBeUIsR0FBRyxVQUFVbkMsU0FBVixFQUE4QztJQUFBOztJQUN0RixJQUFNb0MsWUFBWSxHQUNqQiw0QkFBQXBDLFNBQVMsQ0FBQ0MsV0FBViwrR0FBdUJvQyxFQUF2QiwrR0FBMkJDLGdCQUEzQiwrR0FBNkNDLE1BQTdDLCtHQUFxRGYsT0FBckQsK0dBQThEZ0IsV0FBOUQsb0ZBQTJFMUIsUUFBM0UsaUNBQXlGZCxTQUFTLENBQUN3QyxXQUFuRywwREFBeUYsc0JBQXVCMUIsUUFBdkIsRUFBekYsQ0FERDtJQUVBLE9BQU9zQixZQUFZLEdBQUdBLFlBQUgsR0FBa0JqQixTQUFyQztFQUNBLENBSk07RUFLUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTXNCLFlBQVksR0FBRyxVQUFVekMsU0FBVixFQUF3QztJQUFBOztJQUNuRSxPQUNDLENBQUMsNkJBQUNBLFNBQVMsQ0FBQ0MsV0FBWCwrRUFBQyx3QkFBdUJXLE1BQXhCLG9EQUFDLHdCQUErQjhCLFNBQWhDLENBQUQsSUFDQSxDQUFDLDZCQUFDMUMsU0FBUyxDQUFDQyxXQUFYLCtFQUFDLHdCQUF1QlcsTUFBeEIsb0RBQUMsd0JBQStCK0IsbUJBQWhDLENBREQsSUFFQSxDQUFDLDZCQUFDM0MsU0FBUyxDQUFDQyxXQUFYLCtFQUFDLHdCQUF1QlcsTUFBeEIsb0RBQUMsd0JBQStCZ0Msd0JBQWhDLENBRkQsSUFHQSxDQUFDLDZCQUFDNUMsU0FBUyxDQUFDQyxXQUFYLCtFQUFDLHdCQUF1QlcsTUFBeEIsb0RBQUMsd0JBQStCaUMsZ0JBQWhDLENBSkY7RUFNQSxDQVBNO0VBU1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLElBQU1DLDJCQUEyQixHQUFHLFVBQVU5QyxTQUFWLEVBQXdDO0lBQUE7O0lBQ2xGLE9BQU8sQ0FBQyxFQUFDQSxTQUFELGFBQUNBLFNBQUQsMENBQUNBLFNBQVMsQ0FBRUMsV0FBWiwrRUFBQyx3QkFBd0JXLE1BQXpCLCtFQUFDLHdCQUFnQ2dDLHdCQUFqQyxvREFBQyx3QkFBMER4QyxPQUExRCxFQUFELENBQVI7RUFDQSxDQUZNO0VBSVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLElBQU0yQyx5QkFBeUIsR0FBRyxVQUFVL0MsU0FBVixFQUF3QztJQUFBOztJQUNoRixPQUFPLDRCQUFBQSxTQUFTLENBQUNDLFdBQVYsK0dBQXVCVyxNQUF2QixvRkFBK0JvQyxzQkFBL0IsTUFBMEQ3QixTQUFqRTtFQUNBLENBRk07Ozs7RUFJQSxJQUFNOEIsV0FBVyxHQUFHLFVBQVVqRCxTQUFWLEVBQXdDO0lBQUE7O0lBQ2xFLE9BQU8sNEJBQUFBLFNBQVMsQ0FBQ0MsV0FBViwrR0FBdUJXLE1BQXZCLG9GQUErQlcsUUFBL0IsTUFBNENKLFNBQW5EO0VBQ0EsQ0FGTTtFQUdQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7RUFDTyxJQUFNK0IsTUFBTSxHQUFHLFVBQVVsRCxTQUFWLEVBQXdDO0lBQUE7O0lBQzdELE9BQU8sQ0FBQyw2QkFBQ0EsU0FBUyxDQUFDQyxXQUFYLCtFQUFDLHdCQUF1QlcsTUFBeEIsK0VBQUMsd0JBQStCdUMsTUFBaEMsb0RBQUMsd0JBQXVDL0MsT0FBdkMsRUFBRCxDQUFSO0VBQ0EsQ0FGTTtFQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7RUFFTyxJQUFNZ0QsT0FBTyxHQUFHLFVBQVVwRCxTQUFWLEVBQXdDO0lBQUE7O0lBQzlELE9BQU8sNEJBQUFBLFNBQVMsQ0FBQ0MsV0FBViwrR0FBdUJ5QixRQUF2QixvRkFBaUNDLElBQWpDLE1BQTBDUixTQUFqRDtFQUNBLENBRk07RUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTWtDLFVBQVUsR0FBRyxVQUFVckQsU0FBVixFQUF3QztJQUFBOztJQUNqRSxPQUFPLENBQUMsNkJBQUNBLFNBQVMsQ0FBQ0MsV0FBWCwrRUFBQyx3QkFBdUJXLE1BQXhCLCtFQUFDLHdCQUErQjBDLFVBQWhDLG9EQUFDLHdCQUEyQ2xELE9BQTNDLEVBQUQsQ0FBUjtFQUNBLENBRk07RUFJUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sSUFBTW1ELFdBQVcsR0FBRyxVQUFVdkQsU0FBVixFQUF3QztJQUFBOztJQUNsRSxPQUFPLDRCQUFBQSxTQUFTLENBQUNDLFdBQVYsK0dBQXVCeUIsUUFBdkIsb0ZBQWlDSyxXQUFqQyxNQUFpRFosU0FBeEQ7RUFDQSxDQUZNOzs7O0VBSUEsSUFBTXFDLG9CQUFvQixHQUFHLFVBQVV4RCxTQUFWLEVBQXdDO0lBQUE7O0lBQzNFLE9BQU8sQ0FBQUEsU0FBUyxTQUFULElBQUFBLFNBQVMsV0FBVCx1Q0FBQUEsU0FBUyxDQUFFQyxXQUFYLCtHQUF3QnlCLFFBQXhCLCtHQUFrQ0MsSUFBbEMsb0ZBQXdDYixRQUF4QyxRQUF1RCxHQUE5RDtFQUNBLENBRk0ifQ==
@@ -1,11 +1,10 @@
1
- import { Property } from "@sap-ux/annotation-converter";
2
- import { PathAnnotationExpression } from "@sap-ux/vocabularies-types";
1
+ import type { PathAnnotationExpression, Property } from "@sap-ux/vocabularies-types";
3
2
 
4
3
  /**
5
4
  * Identify if the given property passed is a "Property" (has a _type).
6
5
  *
7
- * @param {Property} property A target property to evaluate
8
- * @returns {boolean} Validate that property is a Property
6
+ * @param property A target property to evaluate
7
+ * @returns Validate that property is a Property
9
8
  */
10
9
  export function isProperty(property: any): property is Property {
11
10
  return property && (property as Property).hasOwnProperty("_type") && (property as Property)._type === "Property";
@@ -14,8 +13,8 @@ export function isProperty(property: any): property is Property {
14
13
  /**
15
14
  * Check whether the property has the Core.Computed annotation or not.
16
15
  *
17
- * @param {Property} oProperty The target property
18
- * @returns {boolean} `true` if the property is computed
16
+ * @param oProperty The target property
17
+ * @returns `true` if the property is computed
19
18
  */
20
19
  export const isComputed = function (oProperty: Property): boolean {
21
20
  return !!oProperty.annotations?.Core?.Computed?.valueOf();
@@ -24,8 +23,8 @@ export const isComputed = function (oProperty: Property): boolean {
24
23
  /**
25
24
  * Check whether the property has the Core.Immutable annotation or not.
26
25
  *
27
- * @param {Property} oProperty The target property
28
- * @returns {boolean} `true` if it's immutable
26
+ * @param oProperty The target property
27
+ * @returns `true` if it's immutable
29
28
  */
30
29
  export const isImmutable = function (oProperty: Property): boolean {
31
30
  return !!oProperty.annotations?.Core?.Immutable?.valueOf();
@@ -34,8 +33,8 @@ export const isImmutable = function (oProperty: Property): boolean {
34
33
  /**
35
34
  * Check whether the property is a key or not.
36
35
  *
37
- * @param {Property} oProperty The target property
38
- * @returns {boolean} `true` if it's a key
36
+ * @param oProperty The target property
37
+ * @returns `true` if it's a key
39
38
  */
40
39
  export const isKey = function (oProperty: Property): boolean {
41
40
  return !!oProperty.isKey;
@@ -64,8 +63,8 @@ export const getLabel = function (oProperty: Property): string {
64
63
  /**
65
64
  * Check whether the property has a semantic object defined or not.
66
65
  *
67
- * @param {Property} oProperty The target property
68
- * @returns {boolean} `true` if it has a semantic object
66
+ * @param oProperty The target property
67
+ * @returns `true` if it has a semantic object
69
68
  */
70
69
  export const hasSemanticObject = function (oProperty: Property): boolean {
71
70
  return !!oProperty.annotations?.Common?.SemanticObject;
@@ -84,8 +83,8 @@ export const isAnnotationPathExpression = function <T>(expression: any): express
84
83
  /**
85
84
  * Retrieves the timezone property associated to the property, if applicable.
86
85
  *
87
- * @param {Property} oProperty The target property
88
- * @returns {Property | undefined} The timezone property, if it exists
86
+ * @param oProperty The target property
87
+ * @returns The timezone property, if it exists
89
88
  */
90
89
  export const getAssociatedTimezoneProperty = function (oProperty: Property): Property | undefined {
91
90
  return isPathExpression(oProperty?.annotations?.Common?.Timezone)
@@ -96,8 +95,8 @@ export const getAssociatedTimezoneProperty = function (oProperty: Property): Pro
96
95
  /**
97
96
  * Retrieves the unit property associated to the property, if applicable.
98
97
  *
99
- * @param {Property} oProperty The target property
100
- * @returns {Property | undefined} The unit property, if it exists
98
+ * @param oProperty The target property
99
+ * @returns The unit property, if it exists
101
100
  */
102
101
  export const getAssociatedUnitProperty = function (oProperty: Property): Property | undefined {
103
102
  return isPathExpression(oProperty?.annotations?.Measures?.Unit)
@@ -112,8 +111,8 @@ export const getAssociatedUnitPropertyPath = function (oProperty: Property): str
112
111
  /**
113
112
  * Retrieves the associated currency property for that property if it exists.
114
113
  *
115
- * @param {Property} oProperty The target property
116
- * @returns {Property | undefined} The unit property, if it exists
114
+ * @param oProperty The target property
115
+ * @returns The unit property, if it exists
117
116
  */
118
117
  export const getAssociatedCurrencyProperty = function (oProperty: Property): Property | undefined {
119
118
  return isPathExpression(oProperty?.annotations?.Measures?.ISOCurrency)
@@ -128,8 +127,8 @@ export const getAssociatedCurrencyPropertyPath = function (oProperty: Property):
128
127
  /**
129
128
  * Retrieves the Common.Text property path if it exists.
130
129
  *
131
- * @param {Property} oProperty The target property
132
- * @returns {string | undefined} The Common.Text property path or undefined if it does not exist
130
+ * @param oProperty The target property
131
+ * @returns The Common.Text property path or undefined if it does not exist
133
132
  */
134
133
  export const getAssociatedTextPropertyPath = function (oProperty: Property): string | undefined {
135
134
  return isPathExpression(oProperty.annotations?.Common?.Text) ? oProperty.annotations?.Common?.Text.path : undefined;
@@ -150,8 +149,8 @@ export const getTargetValueOnDataPoint = function (oProperty: any): string | und
150
149
  /**
151
150
  * Check whether the property has a value help annotation defined or not.
152
151
  *
153
- * @param {Property} oProperty The target property
154
- * @returns {boolean} `true` if it has a value help
152
+ * @param oProperty The target property
153
+ * @returns `true` if it has a value help
155
154
  */
156
155
  export const hasValueHelp = function (oProperty: Property): boolean {
157
156
  return (
@@ -165,8 +164,8 @@ export const hasValueHelp = function (oProperty: Property): boolean {
165
164
  /**
166
165
  * Check whether the property has a value help with fixed value annotation defined or not.
167
166
  *
168
- * @param {Property} oProperty The target property
169
- * @returns {boolean} `true` if it has a value help
167
+ * @param oProperty The target property
168
+ * @returns `true` if it has a value help
170
169
  */
171
170
  export const hasValueHelpWithFixedValues = function (oProperty: Property): boolean {
172
171
  return !!oProperty?.annotations?.Common?.ValueListWithFixedValues?.valueOf();
@@ -175,8 +174,8 @@ export const hasValueHelpWithFixedValues = function (oProperty: Property): boole
175
174
  /**
176
175
  * Check whether the property has a value help for validation annotation defined or not.
177
176
  *
178
- * @param {Property} oProperty The target property
179
- * @returns {boolean} `true` if it has a value help
177
+ * @param oProperty The target property
178
+ * @returns `true` if it has a value help
180
179
  */
181
180
  export const hasValueListForValidation = function (oProperty: Property): boolean {
182
181
  return oProperty.annotations?.Common?.ValueListForValidation !== undefined;